@acorex/components 20.3.50 → 20.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/command/index.d.ts +2 -1
- package/data-table/index.d.ts +13 -1
- package/fesm2022/acorex-components-command.mjs +4 -3
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +37 -17
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../tmp-esm2022/data-table/lib/base-data-table.class.js","../tmp-esm2022/data-table/lib/columns/data-table-column.js","../tmp-esm2022/data-table/lib/columns/data-table-column-resizable.directive.js","../tmp-esm2022/data-table/lib/columns/data-text-column.component.js","../tmp-esm2022/data-table/lib/columns/row-command-column.component.js","../tmp-esm2022/data-table/lib/columns/row-expand-column.component.js","../tmp-esm2022/data-table/lib/columns/row-index-column.component.js","../tmp-esm2022/data-table/lib/columns/row-select-column.component.js","../tmp-esm2022/data-table/lib/data-table/data-table.component.js","../tmp-esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.js","../tmp-esm2022/data-table/lib/data-table.module.js","../tmp-esm2022/data-table/acorex-components-data-table.js"],"sourcesContent":["import { AXDataSource, MXBaseComponent, convertArrayToDataSource, } from '@acorex/cdk/common';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXBaseDataTable extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.dataSource = convertArrayToDataSource([]);\n /**\n * For handle nested rows.\n *\n * @defaultValue `parentId`\n */\n this.parentField = undefined;\n this.selectedRowsChange = new EventEmitter();\n this._selectedRows = signal([], ...(ngDevMode ? [{ debugName: \"_selectedRows\" }] : []));\n }\n /**\n * Gets the data source key field name.\n *\n * @returns string - The key field name for the data source.\n */\n getDataSourceKey() {\n return this.dataSource.config.key || 'id';\n }\n get selectedRows() {\n return this._selectedRows();\n }\n set selectedRows(v) {\n if (!isEqual(this._selectedRows(), v)) {\n this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n }\n /**\n * Expands a row to show its children.\n *\n * @param row - The row data to expand.\n * @returns Promise<void> - Promise that resolves when expansion is complete.\n */\n async expandRow(row) {\n // Scenario 1: Row details template without nested children\n if (this.rowDetailsTemplate && !this.parentField) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: null,\n });\n }\n // Scenario 2: Children already exist in the row data\n else if (row.data['__meta__.expanded'] || row.data.children != undefined) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: row.data.children,\n });\n }\n // Scenario 3: Fetch children from datasource using parentField\n else {\n const key = this.getDataSourceKey();\n const filter = {\n field: this.parentField,\n operator: {\n type: 'equal',\n },\n value: row['data'][key],\n };\n const expandedItems = await this.dataSource.getItemsByFilter(filter);\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: expandedItems.items,\n });\n }\n }\n /**\n * Refreshes the children of a specific item.\n *\n * @param id - The ID of the item whose children should be refreshed.\n * @returns Promise<void> - Promise that resolves when refresh is complete.\n */\n async refreshItemChildren(id) {\n this.dataSource.onItemRefreshChildren.next({\n id,\n });\n }\n /**\n * Selects one or more rows.\n *\n * @param rows - The rows to select.\n * @returns void - No return value.\n */\n selectRows(...rows) {\n const key = this.getDataSourceKey();\n const selectRowIds = this.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n const newRows = rows.filter((nr) => !selectRowIds.includes(typeof nr === 'object' ? nr[key] : nr));\n this.selectedRows = this.selectedRows.concat(newRows);\n //this.selectedRows = _.uniq(this.selectedRows.concat(rows));\n }\n /**\n * Unselects one or more rows.\n *\n * @param rows - The rows to unselect.\n * @returns void - No return value.\n */\n unSelectRows(...rows) {\n const key = this.getDataSourceKey();\n const removedRowIds = rows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n this.selectedRows = this.selectedRows.filter((c) => !removedRowIds.includes(typeof c === 'object' ? c[key] : c));\n //this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, decorators: [{\n type: Injectable\n }], propDecorators: { dataSource: [{\n type: Input\n }], parentField: [{\n type: Input\n }], rowDetailsTemplate: [{\n type: Input\n }], selectedRowsChange: [{\n type: Output\n }], selectedRows: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYXRhLXRhYmxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvYmFzZS1kYXRhLXRhYmxlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBR1osZUFBZSxFQUNmLHdCQUF3QixHQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFxQnBDLE1BQU0sT0FBZ0IsZUFBZ0IsU0FBUSxlQUFlO0lBRDdEOztRQUVXLGVBQVUsR0FBMEIsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUU7Ozs7V0FJRztRQUVILGdCQUFXLEdBQXVCLFNBQVMsQ0FBQztRQVM1Qyx1QkFBa0IsR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQVdwRSxrQkFBYSxHQUE4QixNQUFNLENBQUMsRUFBRSx5REFBQyxDQUFDO0tBMEYvRDtJQW5HQzs7OztPQUlHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBR0QsSUFDVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFXLFlBQVksQ0FBQyxDQUFZO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENB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QUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCx5RUFBeUU7SUFDM0UsQ0FBQzs4R0F0SG1CLGVBQWU7a0hBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEcEMsVUFBVTs4QkFFQSxVQUFVO3NCQUFsQixLQUFLO2dCQVFOLFdBQVc7c0JBRFYsS0FBSztnQkFPTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixNQUFNO2dCQWNJLFlBQVk7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWERhdGFTb3VyY2UsXG4gIEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbixcbiAgQVhFdmVudCxcbiAgTVhCYXNlQ29tcG9uZW50LFxuICBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCBleHRlbmRzIEFYRXZlbnQge1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93Q2xpY2sgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICBkYXRhPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgdHlwZTogJ3N0YXJ0JyB8ICdlbmQnO1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93RGJDbGljayBleHRlbmRzIEFYRGF0YVRhYmxlUm93Q2xpY2sge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZURhdGFUYWJsZSBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZTx1bmtub3duPiA9IGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZShbXSk7XG5cbiAgLyoqXG4gICAqIEZvciBoYW5kbGUgbmVzdGVkIHJvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHBhcmVudElkYFxuICAgKi9cbiAgQElucHV0KClcbiAgcGFyZW50RmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGVtcGxhdGUgZm9yIGV4cGFuZGVkIGN1c3RvbSByb3cgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd0RldGFpbHNUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBPdXRwdXQoKVxuICBzZWxlY3RlZFJvd3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjx1bmtub3duW10+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duW10+KCk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRhdGEgc291cmNlIGtleSBmaWVsZCBuYW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBUaGUga2V5IGZpZWxkIG5hbWUgZm9yIHRoZSBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBnZXREYXRhU291cmNlS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5jb25maWcua2V5IHx8ICdpZCc7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZFJvd3M6IFdyaXRhYmxlU2lnbmFsPHVua25vd25bXT4gPSBzaWduYWwoW10pO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkUm93cygpOiB1bmtub3duW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFJvd3MoKTtcbiAgfVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkUm93cyh2OiB1bmtub3duW10pIHtcbiAgICBpZiAoIWlzRXF1YWwodGhpcy5fc2VsZWN0ZWRSb3dzKCksIHYpKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3Muc2V0KHYpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UuZW1pdCh2KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kcyBhIHJvdyB0byBzaG93IGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHJvdyAtIFRoZSByb3cgZGF0YSB0byBleHBhbmQuXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD4gLSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBleHBhbnNpb24gaXMgY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZXhwYW5kUm93KHJvdzogYW55KSB7XG4gICAgLy8gU2NlbmFyaW8gMTogUm93IGRldGFpbHMgdGVtcGxhdGUgd2l0aG91dCBuZXN0ZWQgY2hpbGRyZW5cbiAgICBpZiAodGhpcy5yb3dEZXRhaWxzVGVtcGxhdGUgJiYgIXRoaXMucGFyZW50RmllbGQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5uZXh0KHtcbiAgICAgICAgZXhwYW5kZWRJdGVtOiByb3cuZGF0YSxcbiAgICAgICAgY2hpbGRyZW46IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gU2NlbmFyaW8gMjogQ2hpbGRyZW4gYWxyZWFkeSBleGlzdCBpbiB0aGUgcm93IGRhdGFcbiAgICBlbHNlIGlmIChyb3cuZGF0YVsnX19tZXRhX18uZXhwYW5kZWQnXSB8fCByb3cuZGF0YS5jaGlsZHJlbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5uZXh0KHtcbiAgICAgICAgZXhwYW5kZWRJdGVtOiByb3cuZGF0YSxcbiAgICAgICAgY2hpbGRyZW46IHJvdy5kYXRhLmNoaWxkcmVuLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFNjZW5hcmlvIDM6IEZldGNoIGNoaWxkcmVuIGZyb20gZGF0YXNvdXJjZSB1c2luZyBwYXJlbnRGaWVsZFxuICAgIGVsc2Uge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgICBjb25zdCBmaWx0ZXI6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICAgICAgZmllbGQ6IHRoaXMucGFyZW50RmllbGQsXG4gICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgdHlwZTogJ2VxdWFsJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHJvd1snZGF0YSddW2tleV0sXG4gICAgICB9O1xuICAgICAgY29uc3QgZXhwYW5kZWRJdGVtcyA9IGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5nZXRJdGVtc0J5RmlsdGVyKGZpbHRlcik7XG5cbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5uZXh0KHtcbiAgICAgICAgZXhwYW5kZWRJdGVtOiByb3cuZGF0YSxcbiAgICAgICAgY2hpbGRyZW46IGV4cGFuZGVkSXRlbXMuaXRlbXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBjaGlsZHJlbiBvZiBhIHNwZWNpZmljIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBJRCBvZiB0aGUgaXRlbSB3aG9zZSBjaGlsZHJlbiBzaG91bGQgYmUgcmVmcmVzaGVkLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+IC0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gcmVmcmVzaCBpcyBjb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoSXRlbUNoaWxkcmVuKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2Uub25JdGVtUmVmcmVzaENoaWxkcmVuLm5leHQoe1xuICAgICAgaWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBvbmUgb3IgbW9yZSByb3dzLlxuICAgKlxuICAgKiBAcGFyYW0gcm93cyAtIFRoZSByb3dzIHRvIHNlbGVjdC5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RSb3dzKC4uLnJvd3M6IHVua25vd25bXSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RGF0YVNvdXJjZUtleSgpO1xuICAgIGNvbnN0IHNlbGVjdFJvd0lkcyA9IHRoaXMuc2VsZWN0ZWRSb3dzLm1hcCgoc3IpID0+ICh0eXBlb2Ygc3IgPT09ICdvYmplY3QnID8gc3Jba2V5XSA6IHNyKSk7XG4gICAgY29uc3QgbmV3Um93cyA9IHJvd3MuZmlsdGVyKChucikgPT4gIXNlbGVjdFJvd0lkcy5pbmNsdWRlcyh0eXBlb2YgbnIgPT09ICdvYmplY3QnID8gbnJba2V5XSA6IG5yKSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5jb25jYXQobmV3Um93cyk7XG4gICAgLy90aGlzLnNlbGVjdGVkUm93cyA9IF8udW5pcSh0aGlzLnNlbGVjdGVkUm93cy5jb25jYXQocm93cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2VsZWN0cyBvbmUgb3IgbW9yZSByb3dzLlxuICAgKlxuICAgKiBAcGFyYW0gcm93cyAtIFRoZSByb3dzIHRvIHVuc2VsZWN0LlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHVuU2VsZWN0Um93cyguLi5yb3dzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldERhdGFTb3VyY2VLZXkoKTtcbiAgICBjb25zdCByZW1vdmVkUm93SWRzID0gcm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5zZWxlY3RlZFJvd3MuZmlsdGVyKChjKSA9PiAhcmVtb3ZlZFJvd0lkcy5pbmNsdWRlcyh0eXBlb2YgYyA9PT0gJ29iamVjdCcgPyBjW2tleV0gOiBjKSk7XG4gICAgLy90aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzLmZpbHRlcigoYykgPT4gIXJvd3MuaW5jbHVkZXMoYykpO1xuICB9XG59XG4iXX0=","import { Injectable, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnComponent {\n constructor() {\n /**\n * Width of the column.\n * - string: e.g., '180px', '20%'\n * - number: e.g., 180 (treated as pixels)\n * - 'auto': automatically fits to content after data load\n *\n * @defaultValue 'auto'\n */\n this.width = 'auto';\n this.allowSorting = false;\n this.allowResizing = false;\n this.sortIndex = undefined;\n this.sortOrder = undefined;\n }\n get cssClass() {\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, decorators: [{\n type: Injectable\n }], propDecorators: { caption: [{\n type: Input\n }], width: [{\n type: Input\n }], fixed: [{\n type: Input\n }], allowSorting: [{\n type: Input\n }], allowResizing: [{\n type: Input\n }], sortIndex: [{\n type: Input\n }], sortOrder: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDOztBQUcvRCxNQUFNLE9BQWdCLDBCQUEwQjtJQURoRDtRQUtFOzs7Ozs7O1dBT0c7UUFFSCxVQUFLLEdBQTZCLE1BQU0sQ0FBQztRQU16QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUd0QixjQUFTLEdBQXVCLFNBQVMsQ0FBQztRQUcxQyxjQUFTLEdBQTRCLFNBQVMsQ0FBQztLQWFoRDtJQUhDLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0F4Q21CLDBCQUEwQjtrSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUQvQyxVQUFVOzhCQUdULE9BQU87c0JBRE4sS0FBSztnQkFZTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU29ydE9yZGVyIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqIC0gc3RyaW5nOiBlLmcuLCAnMTgwcHgnLCAnMjAlJ1xuICAgKiAtIG51bWJlcjogZS5nLiwgMTgwICh0cmVhdGVkIGFzIHBpeGVscylcbiAgICogLSAnYXV0byc6IGF1dG9tYXRpY2FsbHkgZml0cyB0byBjb250ZW50IGFmdGVyIGRhdGEgbG9hZFxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlICdhdXRvJ1xuICAgKi9cbiAgQElucHV0KClcbiAgd2lkdGg6IHN0cmluZyB8IG51bWJlciB8ICdhdXRvJyA9ICdhdXRvJztcblxuICBASW5wdXQoKVxuICBmaXhlZDogJ3N0YXJ0JyB8ICdlbmQnIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93U29ydGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93UmVzaXppbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzb3J0SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBzb3J0T3JkZXI6IEFYU29ydE9yZGVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGFic3RyYWN0IGdldCByZW5kZXJDZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIGFic3RyYWN0IGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgYWJzdHJhY3QgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIGFic3RyYWN0IGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGdldCBuYW1lKCk6IHN0cmluZztcblxuICBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19","import { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, DOCUMENT, ElementRef, HostListener, inject, Input, NgZone, PLATFORM_ID, Renderer2, } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnResizableDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.renderer = inject(Renderer2);\n this.ngZone = inject(NgZone);\n this.cdr = inject(ChangeDetectorRef);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.resize$ = new Subject();\n this.onMouseMoveRawBound = this.onMouseMoveRaw.bind(this);\n this.onMouseUpBound = this.onMouseUp.bind(this);\n this.resize$.pipe(debounceTime(10)).subscribe((event) => this.onMouseMove(event));\n }\n /**\n * Handles mouse down events to initiate column resizing.\n *\n * @param event - The mouse down event.\n * @returns void - No return value.\n */\n onMouseDown(event) {\n if (isPlatformBrowser(this.platformID)) {\n event.stopPropagation();\n this.ngZone.runOutsideAngular(() => {\n this.startX = event.pageX;\n this.startWidth = this.el?.nativeElement?.parentElement.offsetWidth;\n this.document.addEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.addEventListener('mouseup', this.onMouseUpBound);\n });\n this.cdr.detach(); // Detach the change detector\n }\n }\n /**\n * Handles raw mouse move events and forwards them to the debounced resize stream.\n * This method acts as a bridge between the raw DOM event and the debounced onMouseMove method.\n *\n * @param event - The raw mouse move event.\n * @returns void - No return value.\n */\n onMouseMoveRaw(event) {\n this.resize$.next(event);\n }\n /**\n * Handles mouse move events during column resizing.\n *\n * @param event - The mouse move event.\n * @returns void - No return value.\n */\n onMouseMove(event) {\n const newWidth = this.startWidth + (event.pageX - this.startX);\n this.renderer.setStyle(this.el?.nativeElement?.parentElement, 'width', `${newWidth}px`);\n this.column.width = `${newWidth}px`;\n }\n /**\n * Handles mouse up events to complete column resizing.\n *\n * @returns void - No return value.\n */\n onMouseUp() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.removeEventListener('mouseup', this.onMouseUpBound);\n this.cdr.reattach(); // Reattach the change detector\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXDataTableColumnResizableDirective, isStandalone: true, selector: \"[ax-table-column-resizble]\", inputs: { column: [\"ax-table-column-resizble\", \"column\"] }, host: { listeners: { \"mousedown\": \"onMouseDown($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ax-table-column-resizble]' }]\n }], ctorParameters: () => [], propDecorators: { column: [{\n type: Input,\n args: ['ax-table-column-resizble']\n }], onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdqRSxNQUFNLE9BQU8sbUNBQW1DO0lBZ0I5QztRQWZRLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVoQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFHakMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFPMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQywrQkFBK0I7UUFDdEQsQ0FBQztJQUNILENBQUM7OEdBNUVVLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFO3dEQVU1QyxNQUFNO3NCQURaLEtBQUs7dUJBQUMsMEJBQTBCO2dCQXFCakMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theC10YWJsZS1jb2x1bW4tcmVzaXpibGVdJyB9KVxuZXhwb3J0IGNsYXNzIEFYRGF0YVRhYmxlQ29sdW1uUmVzaXphYmxlRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIEBJbnB1dCgnYXgtdGFibGUtY29sdW1uLXJlc2l6YmxlJylcbiAgcHVibGljIGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ7XG4gIHByaXZhdGUgcmVzaXplJCA9IG5ldyBTdWJqZWN0PE1vdXNlRXZlbnQ+KCk7XG4gIHByaXZhdGUgc3RhcnRYOiBudW1iZXI7XG4gIHByaXZhdGUgc3RhcnRXaWR0aDogbnVtYmVyO1xuICBwcml2YXRlIG9uTW91c2VNb3ZlUmF3Qm91bmQ6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbk1vdXNlVXBCb3VuZDogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9uTW91c2VNb3ZlUmF3Qm91bmQgPSB0aGlzLm9uTW91c2VNb3ZlUmF3LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbk1vdXNlVXBCb3VuZCA9IHRoaXMub25Nb3VzZVVwLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZXNpemUkLnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbk1vdXNlTW92ZShldmVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2UgZG93biBldmVudHMgdG8gaW5pdGlhdGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgbW91c2UgZG93biBldmVudC5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xuICAgICAgICB0aGlzLnN0YXJ0V2lkdGggPSB0aGlzLmVsPy5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25Nb3VzZVVwQm91bmQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNkci5kZXRhY2goKTsgLy8gRGV0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyByYXcgbW91c2UgbW92ZSBldmVudHMgYW5kIGZvcndhcmRzIHRoZW0gdG8gdGhlIGRlYm91bmNlZCByZXNpemUgc3RyZWFtLlxuICAgKiBUaGlzIG1ldGhvZCBhY3RzIGFzIGEgYnJpZGdlIGJldHdlZW4gdGhlIHJhdyBET00gZXZlbnQgYW5kIHRoZSBkZWJvdW5jZWQgb25Nb3VzZU1vdmUgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgcmF3IG1vdXNlIG1vdmUgZXZlbnQuXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbk1vdXNlTW92ZVJhdyhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVzaXplJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIG1vdXNlIG1vdmUgZXZlbnRzIGR1cmluZyBjb2x1bW4gcmVzaXppbmcuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBtb3ZlIGV2ZW50LlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIChldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRYKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWw/Lm5hdGl2ZUVsZW1lbnQ/LnBhcmVudEVsZW1lbnQsICd3aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgdGhpcy5jb2x1bW4ud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZSB1cCBldmVudHMgdG8gY29tcGxldGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZVVwKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uTW91c2VVcEJvdW5kKTtcbiAgICAgIHRoaXMuY2RyLnJlYXR0YWNoKCk7IC8vIFJlYXR0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { __decorate, __metadata } from \"tslib\";\nimport { AXComponent } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport { Memoize } from '@acorex/core/memoize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a text column in a data table, supporting header, cell, and footer templates.\n *\n * @category Components\n */\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.initialWidth = '';\n /**\n * Controls the display of an expandable arrow icon beside the cell text.\n * If set to `true`, an arrow icon is shown next to the text, indicating expandability.\n *\n * @defaultValue false\n *\n */\n this.expandHandler = false;\n /**\n * Toggles text wrapping in the cell.\n *\n * @defaultValue false\n */\n this.wrapText = false;\n /**\n * @ignore\n */\n this.formatService = inject(AXFormatService);\n }\n /**\n * Returns the template used for rendering cells.\n * Falls back to a default template if no custom template is provided.\n */\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n /**\n * Returns the template used for rendering the column footer,\n * falling back to a default if not provided.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Retrieves the template used for rendering the column header.\n * Falls back to a default template if none is provided.\n */\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n /**\n * Indicates whether loading functionality is enabled.\n */\n get loadingEnabled() {\n return true;\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Generates a unique name based on the `dataField` value.\n */\n get name() {\n return `cl-${this.dataField}`;\n }\n getDisplayText(rowData, dataField) {\n const value = rowData[dataField];\n return !this.format ? value : this.formatService.format(value, this.format, this.formatOptions);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableTextColumnComponent, isStandalone: true, selector: \"ax-text-column\", inputs: { width: \"width\", caption: \"caption\", allowSorting: \"allowSorting\", allowResizing: \"allowResizing\", fixed: \"fixed\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", dataField: \"dataField\", expandHandler: \"expandHandler\", wrapText: \"wrapText\", cellTemplate: \"cellTemplate\", footerTemplate: \"footerTemplate\", headerTemplate: \"headerTemplate\", format: \"format\", formatOptions: \"formatOptions\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ], viewQueries: [{ propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\n__decorate([\n Memoize(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, String]),\n __metadata(\"design:returntype\", String)\n], AXDataTableTextColumnComponent.prototype, \"getDisplayText\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed'],\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], dataField: [{\n type: Input\n }], expandHandler: [{\n type: Input\n }], wrapText: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], getDisplayText: [], format: [{\n type: Input\n }], formatOptions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBeUNILE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwwQkFBMEI7SUF4QzlFOztRQXlDVSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO1FBRTFCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBVzVCOzs7Ozs7V0FNRztRQUVILGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCOzs7O1dBSUc7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBcUZqQjs7V0FFRztRQUNLLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBbUJqRDtJQTdGQzs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxZ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ZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBNZW1vaXplIH0gZnJvbSAnQGFjb3JleC9jb3JlL21lbW9pemUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUgfSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGEgdGV4dCBjb2x1bW4gaW4gYSBkYXRhIHRhYmxlLCBzdXBwb3J0aW5nIGhlYWRlciwgY2VsbCwgYW5kIGZvb3RlciB0ZW1wbGF0ZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdGV4dC1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPnt7IGNhcHRpb24gfX08L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yXCI+XG4gICAgICAgIEBpZiAoZXhwYW5kSGFuZGxlcikge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVFeHBhbmRSb3cocm93KVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWV4cGFuZC1oYW5kbGVyXCJcbiAgICAgICAgICAgIGlkPVwiYXgtZXhwYW5kLWhhbmRsZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWlubGluZS1zdGFydC5yZW1dPVwicm93LmRhdGE/Ll9fbWV0YV9fPy5sZXZlbCAqIDJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZ1JvdygpID09PSByb3cpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lci10aGlyZCBheC1hbmltYXRlLXR3U3BpbiBheC1hbmltYXRlLWluZmluaXRlXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBpZiAocm93LmRhdGE/Ll9fbWV0YV9fPy5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjdXN0b21Db2xsYXBzZUljb24gfHwgJ2ZhcyBmYS1jaGV2cm9uLWRvd24nXCI+PC9pPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY3VzdG9tRXhwYW5kSWNvbiB8fCAnZmFzIGZhLWNoZXZyb24tcmlnaHQnXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAge3sgZ2V0RGlzcGxheVRleHQocm93LmRhdGEsIHRoaXMuZGF0YUZpZWxkKSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdhbGxvd1NvcnRpbmcnLCAnYWxsb3dSZXNpemluZycsICdmaXhlZCddLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByaXZhdGUgZ3JpZCA9IGluamVjdChBWEJhc2VEYXRhVGFibGUpO1xuICBwcm90ZWN0ZWQgbG9hZGluZ1JvdyA9IHNpZ25hbChudWxsKTtcblxuICBwcm90ZWN0ZWQgaW5pdGlhbFdpZHRoID0gJyc7XG5cbiAgQElucHV0KCkgY3VzdG9tRXhwYW5kSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21Db2xsYXBzZUljb246IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZGF0YSBmaWVsZCB0byBkaXNwbGF5IGluIHRoZSBjb2x1bW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBkYXRhRmllbGQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGRpc3BsYXkgb2YgYW4gZXhwYW5kYWJsZSBhcnJvdyBpY29uIGJlc2lkZSB0aGUgY2VsbCB0ZXh0LlxuICAgKiBJZiBzZXQgdG8gYHRydWVgLCBhbiBhcnJvdyBpY29uIGlzIHNob3duIG5leHQgdG8gdGhlIHRleHQsIGluZGljYXRpbmcgZXhwYW5kYWJpbGl0eS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKlxuICAgKi9cbiAgQElucHV0KClcbiAgZXhwYW5kSGFuZGxlciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRleHQgd3JhcHBpbmcgaW4gdGhlIGNlbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHdyYXBUZXh0ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgY3VzdG9tIHRlbXBsYXRlIGZvciByZW5kZXJpbmcgY2VsbHMgd2l0aGluIHRoZSBjb2x1bW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jb250ZW50Q2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIGNlbGxzLlxuICAgKiBGYWxscyBiYWNrIHRvIGEgZGVmYXVsdCB0ZW1wbGF0ZSBpZiBubyBjdXN0b20gdGVtcGxhdGUgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5jZWxsVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudENlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGZvb3RlciBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgY29sdW1uIGZvb3RlcixcbiAgICogZmFsbGluZyBiYWNrIHRvIGEgZGVmYXVsdCBpZiBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIHRoZSBjb2x1bW4gaGVhZGVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgdGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBjb2x1bW4gaGVhZGVyLlxuICAgKiBGYWxscyBiYWNrIHRvIGEgZGVmYXVsdCB0ZW1wbGF0ZSBpZiBub25lIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgZ2V0IHJlbmRlckhlYWRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgbG9hZGluZyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQuXG4gICAqL1xuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFeHBhbmRSb3cocm93OiBhbnkpIHtcbiAgICB0aGlzLmxvYWRpbmdSb3cuc2V0KHJvdyk7XG4gICAgYXdhaXQgdGhpcy5ncmlkLmV4cGFuZFJvdyhyb3cpO1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgdW5pcXVlIG5hbWUgYmFzZWQgb24gdGhlIGBkYXRhRmllbGRgIHZhbHVlLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGNsLSR7dGhpcy5kYXRhRmllbGR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG5cbiAgQE1lbW9pemUoKVxuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVRleHQocm93RGF0YTogdW5rbm93biwgZGF0YUZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gcm93RGF0YVtkYXRhRmllbGRdO1xuICAgIHJldHVybiAhdGhpcy5mb3JtYXQgPyB2YWx1ZSA6IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodmFsdWUsIHRoaXMuZm9ybWF0IGFzIGFueSwgdGhpcy5mb3JtYXRPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBmb3JtYXQgc3RyaW5nIGZvciBkaXNwbGF5aW5nIHZhbHVlcyBpbiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9ybWF0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgZm9ybWF0dGluZyB2YWx1ZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBmb3JtYXRPcHRpb25zOiBBWEZvcm1hdE9wdGlvbnM7XG59XG4iXX0=","import { AXComponent, AXRippleDirective, } from '@acorex/cdk/common';\nimport { AXButtonComponent, AXButtonItemListComponent, } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, TemplateRef, ViewChild, ViewEncapsulation, effect, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.cdr = inject(ChangeDetectorRef);\n this.commandLoading = signal(null, ...(ngDevMode ? [{ debugName: \"commandLoading\" }] : []));\n this.rowIdentityMap = new WeakMap();\n this.rowIdentitySeq = 0;\n this.allowSorting = false;\n this.onItemClick = new EventEmitter();\n }\n get loadingEnabled() {\n return false;\n }\n get cssClass() {\n return 'ax-command-column';\n }\n resolveCommandId(rowData, commandName) {\n if (rowData && typeof rowData === 'object') {\n const record = rowData;\n const keyValue = record[this.grid.getDataSourceKey()];\n if (typeof keyValue === 'string' || typeof keyValue === 'number') {\n return `${keyValue}:${commandName}`;\n }\n let fallbackKey = this.rowIdentityMap.get(record);\n if (!fallbackKey) {\n fallbackKey = `row-${++this.rowIdentitySeq}`;\n this.rowIdentityMap.set(record, fallbackKey);\n }\n return `${fallbackKey}:${commandName}`;\n }\n return `unknown:${commandName}`;\n }\n setCommandLoadingState(commandId, loading) {\n this.commandLoading.set(loading ? commandId : null);\n }\n}\n/**\n * A column for displaying dropdown command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n this.emptyStateText = 't(\"dataTable.rowCommandColumn.emptyStateText\")';\n this.itemsLoading = signal(false, ...(ngDevMode ? [{ debugName: \"itemsLoading\" }] : []));\n this.itemsFetched = signal(false, ...(ngDevMode ? [{ debugName: \"itemsFetched\" }] : []));\n /**\n * @ignore\n */\n this._items = [];\n this.items = [];\n this.dropdownLoadingEffect = effect(() => {\n this.applyLoadingState(this.commandLoading());\n }, ...(ngDevMode ? [{ debugName: \"dropdownLoadingEffect\" }] : []));\n }\n /**\n * Returns the template used for rendering cell content.\n * This method provides the cell template used in the data table column, falling back to a default template if none is provided.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * This method provides the header template used in the data table column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer content.\n * This method provides the footer template used in the data table column.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Returns the name identifier for the column component.\n */\n get name() {\n return 'cl-dd-cmd';\n }\n /**\n * @ignore\n */\n async handleOnOpened(rowData) {\n this.itemsLoading.set(true);\n this.itemsFetched.set(false);\n try {\n let resolvedItems = [];\n if (Array.isArray(this.items)) {\n resolvedItems = this.items;\n }\n else\n typeof this.items == 'function';\n {\n const result = this['items'](rowData);\n if (Array.isArray(result)) {\n resolvedItems = result;\n }\n else if (result instanceof Promise) {\n resolvedItems = await result;\n }\n }\n this._items = this.decorateItems(rowData, resolvedItems);\n this.applyLoadingState(this.commandLoading());\n this.itemsFetched.set(true);\n }\n finally {\n this.itemsLoading.set(false);\n this.cdr.detectChanges();\n }\n }\n /**\n * @ignore\n */\n handleOnClosed() {\n this._items = [];\n this.itemsFetched.set(false);\n this.itemsLoading.set(false);\n }\n decorateItems(rowData, items) {\n return items.map((item) => ({\n ...item,\n commandId: this.resolveCommandId(rowData, item.name ?? 'command'),\n loading: false,\n }));\n }\n applyLoadingState(activeCommandId) {\n if (!this._items.length) {\n return;\n }\n let hasChanges = false;\n const updatedItems = this._items.map((item) => {\n const nextLoading = !!activeCommandId && item.commandId === activeCommandId;\n if (item.loading !== nextLoading) {\n hasChanges = true;\n return { ...item, loading: nextLoading };\n }\n return item;\n });\n if (hasChanges) {\n this._items = updatedItems;\n this.cdr.markForCheck();\n }\n }\n /**\n * @ignore\n */\n handleOnItemClick(e, data) {\n const commandName = e.name ?? 'command';\n const commandId = this.resolveCommandId(data, commandName);\n const itemList = e.component;\n let pendingAutoClose = setTimeout(() => {\n itemList?.closeParent();\n pendingAutoClose = undefined;\n });\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: commandName,\n setLoading: (loading) => {\n if (pendingAutoClose) {\n clearTimeout(pendingAutoClose);\n pendingAutoClose = undefined;\n }\n this.setCommandLoadingState(commandId, loading);\n if (!loading) {\n itemList?.closeParent();\n }\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowDropdownCommandColumnComponent, isStandalone: true, selector: \"ax-dropdown-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", emptyStateTemplate: \"emptyStateTemplate\", emptyStateText: \"emptyStateText\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-dropdown-command-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n CommonModule,\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXButtonItemListComponent,\n AXLoadingComponent,\n NgTemplateOutlet,\n AXTranslationModule,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], emptyStateTemplate: [{\n type: Input\n }], emptyStateText: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n/**\n * A column for displaying command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n /**\n * Defines the command items to display in the column.\n * @defaultValue []\n */\n this.items = [];\n }\n /**\n * Returns the template used for rendering the cell content.\n * Uses the specified cell template if provided; otherwise, falls back to a default template.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * Overrides the base implementation to provide a specific template for the command column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used for rendering the footer content of the column.\n * Returns `footerTemplate` if provided; otherwise, returns `_contentFooterTemplate`.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique name identifier for the command column.\n */\n get name() {\n return 'cl-in-cmd';\n }\n /**\n * @ignore\n */\n getItems(rowData) {\n if (Array.isArray(this.items)) {\n return this.items;\n }\n else\n typeof this.items == 'function';\n {\n return this.items(rowData);\n }\n return [];\n }\n getItemsWithIds(rowData) {\n return this.getItems(rowData).map((item) => ({\n item,\n commandId: this.getCommandId(rowData, item),\n }));\n }\n /**\n * @ignore\n */\n getCommandId(rowData, item) {\n const commandName = item.name ?? 'command';\n return this.resolveCommandId(rowData, commandName);\n }\n handleOnItemClick(e, item, data) {\n const commandId = this.getCommandId(data, item);\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e.nativeEvent,\n data,\n name: item.name ?? 'command',\n setLoading: (loading) => {\n this.setCommandLoadingState(commandId, loading);\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowCommandColumnComponent, isStandalone: true, selector: \"ax-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-command-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXButtonComponent,\n AXLoadingComponent,\n AXTranslatorPipe,\n AsyncPipe,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvcm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsV0FBVyxFQUVYLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIseUJBQXlCLEdBRTFCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFXakUsTUFBTSxPQUFnQiwrQkFBZ0MsU0FBUSwwQkFBMEI7SUFBeEY7O1FBQ1ksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FB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QkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lDQXVCNkI7b0JBQ3ZDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsNkJBQTZCO3lCQUN6QztxQkFDRjtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLFNBQVM7cUJBQ1Y7aUJBQ0Y7OEJBT1MsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxNQUFNO2dCQWVULHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWVaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0Usc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBdUJuQixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWEJ1dHRvbkNsaWNrRXZlbnQsXG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYSXRlbUNsaWNrRXZlbnQsXG4gIEFYUmlwcGxlRGlyZWN0aXZlLFxuICBBWFN0eWxlTG9va1R5cGUsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQge1xuICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgQVhCdXR0b25JdGVtQ29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duUGFuZWxDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbmV4cG9ydCB0eXBlIEFYUm93Q29tbWFuZEl0ZW0gPSBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSAmIHtcbiAgY29tbWFuZElkPzogc3RyaW5nO1xuICBsb29rPzogQVhTdHlsZUxvb2tUeXBlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCBleHRlbmRzIEFYQnV0dG9uQ2xpY2tFdmVudCB7XG4gIHNldExvYWRpbmc/OiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZVJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG4gIHByb3RlY3RlZCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgY29tbWFuZExvYWRpbmcgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcm93SWRlbnRpdHlNYXAgPSBuZXcgV2Vha01hcDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgc3RyaW5nPigpO1xuICBwcml2YXRlIHJvd0lkZW50aXR5U2VxID0gMDtcblxuICBvdmVycmlkZSBhbGxvd1NvcnRpbmcgPSBmYWxzZTtcblxuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGNzc0NsYXNzKCkge1xuICAgIHJldHVybiAnYXgtY29tbWFuZC1jb2x1bW4nO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVDb21tYW5kSWQocm93RGF0YTogdW5rbm93biwgY29tbWFuZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgJiYgdHlwZW9mIHJvd0RhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCByZWNvcmQgPSByb3dEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3Qga2V5VmFsdWUgPSByZWNvcmRbdGhpcy5ncmlkLmdldERhdGFTb3VyY2VLZXkoKV07XG4gICAgICBpZiAodHlwZW9mIGtleVZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5VmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBgJHtrZXlWYWx1ZX06JHtjb21tYW5kTmFtZX1gO1xuICAgICAgfVxuICAgICAgbGV0IGZhbGxiYWNrS2V5ID0gdGhpcy5yb3dJZGVudGl0eU1hcC5nZXQocmVjb3JkKTtcbiAgICAgIGlmICghZmFsbGJhY2tLZXkpIHtcbiAgICAgICAgZmFsbGJhY2tLZXkgPSBgcm93LSR7Kyt0aGlzLnJvd0lkZW50aXR5U2VxfWA7XG4gICAgICAgIHRoaXMucm93SWRlbnRpdHlNYXAuc2V0KHJlY29yZCwgZmFsbGJhY2tLZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAke2ZhbGxiYWNrS2V5fToke2NvbW1hbmROYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBgdW5rbm93bjoke2NvbW1hbmROYW1lfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q29tbWFuZExvYWRpbmdTdGF0ZShjb21tYW5kSWQ6IHN0cmluZywgbG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29tbWFuZExvYWRpbmcuc2V0KGxvYWRpbmcgPyBjb21tYW5kSWQgOiBudWxsKTtcbiAgfVxuXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudD4oKTtcbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBkcm9wZG93biBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b24gW2F4UmlwcGxlXT5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWxcbiAgICAgICAgICAgICAgW2FkYXB0aXZpdHlFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25PcGVuZWQpPVwiaGFuZGxlT25PcGVuZWQocm93LmRhdGEpXCJcbiAgICAgICAgICAgICAgKG9uQ2xvc2VkKT1cImhhbmRsZU9uQ2xvc2VkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW1zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBwYW5lbCBzdHlsZT1cInBhZGRpbmc6IDAuODc1cmVtO1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmICghX2l0ZW1zLmxlbmd0aCAmJiBpdGVtc0ZldGNoZWQoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlTdGF0ZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1kcm9wZG93bi1jb21tYW5kLWVtcHR5LXN0YXRlLXRleHRcIj57eyBlbXB0eVN0YXRlVGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChfaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3RcbiAgICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsIHJvdy5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiX2l0ZW1zXCJcbiAgICAgICAgICAgICAgICAgIFtjbG9zZVBhcmVudE9uQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2xvY2tPbkxvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBvdXRwdXRzOiBbJ29uSXRlbUNsaWNrJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICAgIEFYTG9hZGluZ0NvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93RHJvcGRvd25Db21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyBjZWxsIGNvbnRlbnQuXG4gICAqIFRoaXMgbWV0aG9kIHByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLCBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vbmUgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGhlYWRlciBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLlxuICAgKi9cblxuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbXB0eVN0YXRlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW1wdHlTdGF0ZVRleHQgPSAndChcImRhdGFUYWJsZS5yb3dDb21tYW5kQ29sdW1uLmVtcHR5U3RhdGVUZXh0XCIpJztcblxuICBwcm90ZWN0ZWQgaXRlbXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIGl0ZW1zRmV0Y2hlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdmb290ZXInKVxuICBwcml2YXRlIF9jb250ZW50Rm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGZvb3RlciBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgZm9vdGVyIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uIGNvbXBvbmVudC5cbiAgICovXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjbC1kZC1jbWQnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2l0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBpdGVtczogQVhSb3dDb21tYW5kSXRlbVtdIHwgKChyb3dEYXRhOiB1bmtub3duKSA9PiBBWFJvd0NvbW1hbmRJdGVtW10gfCBQcm9taXNlPEFYUm93Q29tbWFuZEl0ZW1bXT4pID0gW107XG5cbiAgcHJpdmF0ZSBkcm9wZG93bkxvYWRpbmdFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuYXBwbHlMb2FkaW5nU3RhdGUodGhpcy5jb21tYW5kTG9hZGluZygpKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlT25PcGVuZWQocm93RGF0YSkge1xuICAgIHRoaXMuaXRlbXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLml0ZW1zRmV0Y2hlZC5zZXQoZmFsc2UpO1xuICAgIHRyeSB7XG4gICAgICBsZXQgcmVzb2x2ZWRJdGVtczogQVhSb3dDb21tYW5kSXRlbVtdID0gW107XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSkge1xuICAgICAgICByZXNvbHZlZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgIH0gZWxzZSB0eXBlb2YgdGhpcy5pdGVtcyA9PSAnZnVuY3Rpb24nO1xuICAgICAge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAodGhpc1snaXRlbXMnXSBhcyBhbnkpKHJvd0RhdGEpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzb2x2ZWRJdGVtcyA9IHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcmVzb2x2ZWRJdGVtcyA9IGF3YWl0IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5faXRlbXMgPSB0aGlzLmRlY29yYXRlSXRlbXMocm93RGF0YSwgcmVzb2x2ZWRJdGVtcyk7XG4gICAgICB0aGlzLmFwcGx5TG9hZGluZ1N0YXRlKHRoaXMuY29tbWFuZExvYWRpbmcoKSk7XG4gICAgICB0aGlzLml0ZW1zRmV0Y2hlZC5zZXQodHJ1ZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXRlbXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25DbG9zZWQoKSB7XG4gICAgdGhpcy5faXRlbXMgPSBbXTtcbiAgICB0aGlzLml0ZW1zRmV0Y2hlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaXRlbXNMb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGRlY29yYXRlSXRlbXMocm93RGF0YTogdW5rbm93biwgaXRlbXM6IEFYUm93Q29tbWFuZEl0ZW1bXSk6IEFYUm93Q29tbWFuZEl0ZW1bXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBjb21tYW5kSWQ6IHRoaXMucmVzb2x2ZUNvbW1hbmRJZChyb3dEYXRhLCBpdGVtLm5hbWUgPz8gJ2NvbW1hbmQnKSxcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlMb2FkaW5nU3RhdGUoYWN0aXZlQ29tbWFuZElkOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9pdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcbiAgICBjb25zdCB1cGRhdGVkSXRlbXMgPSB0aGlzLl9pdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG5leHRMb2FkaW5nID0gISFhY3RpdmVDb21tYW5kSWQgJiYgaXRlbS5jb21tYW5kSWQgPT09IGFjdGl2ZUNvbW1hbmRJZDtcbiAgICAgIGlmIChpdGVtLmxvYWRpbmcgIT09IG5leHRMb2FkaW5nKSB7XG4gICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICByZXR1cm4geyAuLi5pdGVtLCBsb2FkaW5nOiBuZXh0TG9hZGluZyB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gdXBkYXRlZEl0ZW1zO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25JdGVtQ2xpY2soZTogQVhJdGVtQ2xpY2tFdmVudDxBWEJ1dHRvbkl0ZW1Db21wb25lbnQ+LCBkYXRhOiB1bmtub3duKSB7XG4gICAgY29uc3QgY29tbWFuZE5hbWUgPSBlLm5hbWUgPz8gJ2NvbW1hbmQnO1xuICAgIGNvbnN0IGNvbW1hbmRJZCA9IHRoaXMucmVzb2x2ZUNvbW1hbmRJZChkYXRhLCBjb21tYW5kTmFtZSk7XG4gICAgY29uc3QgaXRlbUxpc3QgPSBlLmNvbXBvbmVudCBhcyBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBwZW5kaW5nQXV0b0Nsb3NlOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaXRlbUxpc3Q/LmNsb3NlUGFyZW50KCk7XG4gICAgICBwZW5kaW5nQXV0b0Nsb3NlID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGNvbnN0IGFyZ3M6IEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50ID0ge1xuICAgICAgY29tcG9uZW50OiB0aGlzLmdyaWQsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgZGF0YSxcbiAgICAgIG5hbWU6IGNvbW1hbmROYW1lLFxuICAgICAgc2V0TG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHBlbmRpbmdBdXRvQ2xvc2UpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQocGVuZGluZ0F1dG9DbG9zZSk7XG4gICAgICAgICAgcGVuZGluZ0F1dG9DbG9zZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldENvbW1hbmRMb2FkaW5nU3RhdGUoY29tbWFuZElkLCBsb2FkaW5nKTtcbiAgICAgICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICAgICAgaXRlbUxpc3Q/LmNsb3NlUGFyZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoYXJncyk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICBAZm9yIChjb21tYW5kIG9mIGdldEl0ZW1zV2l0aElkcyhyb3cuZGF0YSk7IHRyYWNrIGNvbW1hbmQuY29tbWFuZElkKSB7XG4gICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgW2ljb25Pbmx5XT1cImNvbW1hbmQuaXRlbS5pY29uT25seSA/PyB0cnVlXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cImNvbW1hbmQuaXRlbS50ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImNvbW1hbmQuaXRlbS50ZXh0IHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIidyZ2JhKHZhcigtLWF4LXN5cy1jb2xvci0nICsgKGNvbW1hbmQuaXRlbS5jb2xvciA/PyAncHJpbWFyeSknKSArICctNTAwKSknXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tYW5kLml0ZW0uZGlzYWJsZWQgfHwgY29tbWFuZExvYWRpbmcoKVwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiY29tbWFuZC5pdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtheFJpcHBsZV09XCIhY29tbWFuZC5pdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtsb29rXT1cImNvbW1hbmQuaXRlbS5sb29rID8/ICdzb2xpZCdcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25JdGVtQ2xpY2soJGV2ZW50LCBjb21tYW5kLml0ZW0sIHJvdy5kYXRhKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiY29tbWFuZC5pdGVtLmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgICBAaWYgKGNvbW1hbmRMb2FkaW5nKCkgPT09IGNvbW1hbmQuY29tbWFuZElkKSB7XG4gICAgICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBvdXRwdXRzOiBbJ29uSXRlbUNsaWNrJ10sXG4gIGltcG9ydHM6IFtcbiAgICBBWFJpcHBsZURpcmVjdGl2ZSxcbiAgICBBWERlY29yYXRvckljb25Db21wb25lbnQsXG4gICAgQVhCdXR0b25Db21wb25lbnQsXG4gICAgQVhMb2FkaW5nQ29tcG9uZW50LFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGNlbGwgY29udGVudC5cbiAgICogVXNlcyB0aGUgc3BlY2lmaWVkIGNlbGwgdGVtcGxhdGUgaWYgcHJvdmlkZWQ7IG90aGVyd2lzZSwgZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdGVtcGxhdGUuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGhlYWRlciBjb250ZW50LlxuICAgKiBPdmVycmlkZXMgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gdG8gcHJvdmlkZSBhIHNwZWNpZmljIHRlbXBsYXRlIGZvciB0aGUgY29tbWFuZCBjb2x1bW4uXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIGNvbnRlbnQgb2YgdGhlIGNvbHVtbi5cbiAgICogUmV0dXJucyBgZm9vdGVyVGVtcGxhdGVgIGlmIHByb3ZpZGVkOyBvdGhlcndpc2UsIHJldHVybnMgYF9jb250ZW50Rm9vdGVyVGVtcGxhdGVgLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdW5pcXVlIG5hbWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbW1hbmQgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWluLWNtZCc7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgY29tbWFuZCBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBjb2x1bW4uXG4gICAqIEBkZWZhdWx0VmFsdWUgW11cbiAgICovXG4gIEBJbnB1dCgpXG4gIGl0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10gfCAoKHJvd0RhdGE6IHVua25vd24pID0+IEFYUm93Q29tbWFuZEl0ZW1bXSkgPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRJdGVtcyhyb3dEYXRhOiB1bmtub3duKTogQVhSb3dDb21tYW5kSXRlbVtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXM7XG4gICAgfSBlbHNlIHR5cGVvZiB0aGlzLml0ZW1zID09ICdmdW5jdGlvbic7XG4gICAge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXMocm93RGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtc1dpdGhJZHMocm93RGF0YTogdW5rbm93bik6IEFycmF5PHsgaXRlbTogQVhSb3dDb21tYW5kSXRlbTsgY29tbWFuZElkOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKHJvd0RhdGEpLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIGl0ZW0sXG4gICAgICBjb21tYW5kSWQ6IHRoaXMuZ2V0Q29tbWFuZElkKHJvd0RhdGEsIGl0ZW0pLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbW1hbmRJZChyb3dEYXRhOiB1bmtub3duLCBpdGVtOiBBWFJvd0NvbW1hbmRJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb21tYW5kTmFtZSA9IGl0ZW0ubmFtZSA/PyAnY29tbWFuZCc7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUNvbW1hbmRJZChyb3dEYXRhLCBjb21tYW5kTmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT25JdGVtQ2xpY2soZTogQVhDbGlja0V2ZW50LCBpdGVtOiBBWFJvd0NvbW1hbmRJdGVtLCBkYXRhOiB1bmtub3duKSB7XG4gICAgY29uc3QgY29tbWFuZElkID0gdGhpcy5nZXRDb21tYW5kSWQoZGF0YSwgaXRlbSk7XG4gICAgY29uc3QgYXJnczogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSB7XG4gICAgICBjb21wb25lbnQ6IHRoaXMuZ3JpZCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUubmF0aXZlRXZlbnQsXG4gICAgICBkYXRhLFxuICAgICAgbmFtZTogaXRlbS5uYW1lID8/ICdjb21tYW5kJyxcbiAgICAgIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Q29tbWFuZExvYWRpbmdTdGF0ZShjb21tYW5kSWQsIGxvYWRpbmcpO1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdChhcmdzKTtcbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowExpandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-expand';\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowExpandColumnComponent, isStandalone: true, selector: \"ax-expand-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-expand-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWV4cGFuZC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctZXhwYW5kLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBbUNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSwwQkFBMEI7SUFsQzFFOztRQW1DVSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTdCLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO0tBK0RyQztJQXZEQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQVE7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWpFVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiwrSEFUMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxXQUFXLEVBQUUsMEJBQTBCO2FBQ3hDO1lBQ0QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRTtTQUNsRSw4VkE3QlM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUOzsyRkFZVSwwQkFBMEI7a0JBbEN0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsV0FBVyw0QkFBNEI7eUJBQ3hDO3dCQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLDRCQUE0QixFQUFFO3FCQUNsRTtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztpQkFDdEM7OEJBVVMsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxNQUFNO2dCQWNULHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWNYLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4nO1xuXG4vKipcbiAqIENvbHVtbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjaGVja2JveGVzIGZvciByb3cgc2VsZWN0aW9uIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1leHBhbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgPGRpdlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlRXhwYW5kUm93KHJvdylcIlxuICAgICAgICBjbGFzcz1cImF4LWV4cGFuZC1oYW5kbGVyXCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmctaW5saW5lLXN0YXJ0LnJlbV09XCJyb3cuZGF0YT8uX19tZXRhX18/LmxldmVsICogMS41XCJcbiAgICAgID5cbiAgICAgICAgQGlmIChsb2FkaW5nUm93KCkgPT09IHJvdykge1xuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXItdGhpcmQgYXgtYW5pbWF0ZS10d1NwaW4gYXgtYW5pbWF0ZS1pbmZpbml0ZVwiPjwvaT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChyb3cuZGF0YT8uX19tZXRhX18/LmV4cGFuZGVkKSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByaXZhdGUgZ3JpZCA9IGluamVjdChBWEJhc2VEYXRhVGFibGUpO1xuXG4gIHByb3RlY3RlZCBsb2FkaW5nUm93ID0gc2lnbmFsKG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIGNlbGxzIGluIHRoZSBjb2x1bW4uXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciB0aGUgY29sdW1uIGhlYWRlci5cbiAgICovXG4gIG92ZXJyaWRlIGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBmb290ZXIuXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2wtZXhwYW5kJztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV4cGFuZFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQocm93KTtcbiAgICBhd2FpdCB0aGlzLmdyaWQuZXhwYW5kUm93KHJvdyk7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBsb2FkaW5nIGlzIGVuYWJsZWQgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=","import { AXComponent } from '@acorex/cdk/common';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying row indices in a data table column.\n *\n * @category Components\n */\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.unsubscriber = inject(AXUnsubscriber);\n /**\n * Determines whether the index should be zero-padded.\n * @defaultValue false\n */\n this.padZero = false;\n /**\n * @ignore\n */\n this.formatCount = 1;\n /**\n * Disables sorting for this column.\n *\n * @defaultValue false\n */\n this.allowSorting = false;\n }\n /**\n * Provides the cell template for custom rendering if defined.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Provides the header template for custom rendering if defined.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer of the column.\n * This method returns the `footerTemplate` if it is provided; otherwise, it defaults to the `_contentFooterTemplate`. This allows for custom footer content while falling back to a default template if no custom template is specified.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier name for the column.\n */\n get name() {\n return 'cl-inx';\n }\n /**\n * @ignore\n */\n ngOnInit() {\n if (this.padZero) {\n this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.formatCount = c.totalCount.toString().length;\n });\n }\n }\n /**\n * Indicates whether loading is enabled for this component.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-index-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXRowIndexColumnComponent, isStandalone: true, selector: \"ax-index-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", padZero: \"padZero\" }, providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-index-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n imports: [AsyncPipe, AXFormatPipe],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], padZero: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWluZGV4LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL3Jvdy1pbmRleC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFakU7Ozs7R0FJRztBQXFCSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsMEJBQTBCO0lBcEJ6RTs7UUFxQlUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQXVEOUM7OztXQUdHO1FBRUgsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBYTFCOzs7O1dBSUc7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztLQWUvQjtJQTFGQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBY0Q7OztPQUdHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBY0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQVNEOztPQUVHO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxRQUFRO1FBQ25CLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs4R0FuR1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0xBWHpCO1lBQ1QsY0FBYztZQUNkO2dCQUNFLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFdBQVcsRUFBRSx5QkFBeUI7YUFDdkM7WUFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFO1NBQ2pFLDhWQWRTOzs7O3lDQUk2Qix1REFZN0IsU0FBUyx5Q0FBRSxZQUFZOzsyRkFFdEIseUJBQXlCO2tCQXBCckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7eUNBSTZCO29CQUN2QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDVCxjQUFjO3dCQUNkOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsMkJBQTJCO3lCQUN2Qzt3QkFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVywyQkFBMkIsRUFBRTtxQkFDakU7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7aUJBQ25DOzhCQVNTLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsTUFBTTtnQkFjVCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFjWixjQUFjO3NCQURwQixLQUFLO2dCQU9FLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQXVCbkIsT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhGb3JtYXRQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUgfSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgcm93IGluZGljZXMgaW4gYSBkYXRhIHRhYmxlIGNvbHVtbi5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1pbmRleC1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYDxuZy10ZW1wbGF0ZSAjaGVhZGVyPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICB7eyByb3cucm93SW5kZXggKyAxIHwgZm9ybWF0OiAnbnVtYmVyJyA6IHsgemVyb1BhZExlbmd0aDogdGhpcy5mb3JtYXRDb3VudCwgdGhvdXNhbmRTZXBhcmF0b3I6IGZhbHNlIH0gfCBhc3luYyB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIEFYVW5zdWJzY3JpYmVyLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSb3dJbmRleENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBBWEZvcm1hdFBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0luZGV4Q29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGBmb290ZXJUZW1wbGF0ZWAgaWYgaXQgaXMgcHJvdmlkZWQ7IG90aGVyd2lzZSwgaXQgZGVmYXVsdHMgdG8gdGhlIGBfY29udGVudEZvb3RlclRlbXBsYXRlYC4gVGhpcyBhbGxvd3MgZm9yIGN1c3RvbSBmb290ZXIgY29udGVudCB3aGlsZSBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vIGN1c3RvbSB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBuYW1lIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWlueCc7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBzaG91bGQgYmUgemVyby1wYWRkZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhZFplcm8gPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXRDb3VudCA9IDE7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wYWRaZXJvKSB7XG4gICAgICB0aGlzLmdyaWQuZGF0YVNvdXJjZS5vbkNoYW5nZWQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtYXRDb3VudCA9IGMudG90YWxDb3VudC50b1N0cmluZygpLmxlbmd0aDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgb3ZlcnJpZGUgYWxsb3dTb3J0aW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gJ2F4LWluZGV4LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/check-box\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowSelectColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-select';\n }\n /**\n * @ignore\n */\n getDataSourceKey() {\n return this.grid.dataSource.config.key || 'id';\n }\n /**\n * @ignore\n */\n isSelected(item) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);\n }\n /**\n * @ignore\n */\n checkAllSelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n if (!rows || !rows.length || !selectedRowKeys.length) {\n return false;\n }\n const allSelected = rows.every((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n const anySelected = rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n if (allSelected) {\n return true;\n }\n if (anySelected) {\n return null;\n }\n return false;\n }\n /**\n * @ignore\n */\n handleChange(e, item) {\n if (e.isUserInteraction) {\n if (this.isSelected(item)) {\n this.grid.unSelectRows(item);\n }\n else {\n this.grid.selectRows(item);\n }\n }\n }\n /**\n * @ignore\n */\n handleSelectAll(e, rows) {\n if (e.isUserInteraction) {\n if (this.checkAllSelected(rows)) {\n this.grid.unSelectRows(...rows);\n }\n else {\n this.grid.selectRows(...rows);\n }\n }\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-select-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXRowSelectColumnComponent, isStandalone: true, selector: \"ax-select-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i2.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-select-column',\n template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ],\n imports: [FormsModule, AXCheckBoxModule],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctc2VsZWN0LWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFakU7Ozs7R0FJRztBQXNDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsMEJBQTBCO0lBckMxRTs7UUFzQ1UsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQW1JeEM7SUEzSEM7O09BRUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBYSxvQkFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ08sVUFBVSxDQUFDLElBQWE7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQkFBZ0IsQ0FBQyxJQUFJO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDekMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQy9FLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDeEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQy9FLENBQUM7UUFFRixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDTyxZQUFZLENBQUMsQ0FBc0IsRUFBRSxJQUFhO1FBQzFELElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLGVBQWUsQ0FBQyxDQUFzQixFQUFFLElBQVM7UUFDekQsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxRQUFRO1FBQ25CLE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQzs4R0FuSVUsMEJBQTBCO2tHQUExQiwwQkFBMEIsK0hBVjFCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDBCQUEwQjtnQkFDbkMsV0FBVyxFQUFFLDBCQUEwQjthQUN4QztZQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUU7U0FDbEUsOFZBL0JTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lDQXNCNkIsMkRBVTdCLFdBQVcsOFZBQUUsZ0JBQWdCOzsyRkFHNUIsMEJBQTBCO2tCQXJDdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUNBc0I2QjtvQkFDdkMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsV0FBVyw0QkFBNEI7eUJBQ3hDO3dCQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLDRCQUE0QixFQUFFO3FCQUNsRTtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3hDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDO2lCQUN0Qzs4QkFRUyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLE1BQU07Z0JBY1Qsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBY1gsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NoZWNrLWJveCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4nO1xuXG4vKipcbiAqIENvbHVtbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjaGVja2JveGVzIGZvciByb3cgc2VsZWN0aW9uIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zZWxlY3QtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlciBsZXQtY29sPlxuICAgICAgPGF4LWNoZWNrLWJveFxuICAgICAgICBbbmdNb2RlbF09XCJjaGVja0FsbFNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cInRydWVcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlU2VsZWN0QWxsKCRldmVudCwgY29sLnJvd3MpXCJcbiAgICAgID48L2F4LWNoZWNrLWJveD5cbiAgICAgIDwhLS0gPGlucHV0XG4gICAgICAgIGNsYXNzPVwiYXgtY2hlY2tib3hcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbChjb2wucm93cylcIlxuICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJjaGVja0FueVNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtjaGVja2VkXT1cImNoZWNrQWxsU2VsZWN0ZWQoY29sLnJvd3MpXCJcbiAgICAgIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICA8YXgtY2hlY2stYm94XG4gICAgICAgIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlKCRldmVudCwgcm93LmRhdGEpXCJcbiAgICAgICAgW25nTW9kZWxdPVwiaXNTZWxlY3RlZChyb3cuZGF0YSlcIlxuICAgICAgPjwvYXgtY2hlY2stYm94PlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJheC1jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIiAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZShyb3cuZGF0YSlcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHJvdy5kYXRhKVwiIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgQVhDaGVja0JveE1vZHVsZV0sXG4gIGlucHV0czogWyd3aWR0aCcsICdjYXB0aW9uJywgJ2ZpeGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBjZWxscyBpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRoZSBjb2x1bW4gZm9vdGVyLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLXNlbGVjdCc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkLmRhdGFTb3VyY2UuY29uZmlnLmtleSB8fCAnaWQnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNTZWxlY3RlZChpdGVtOiB1bmtub3duKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuICAgIHJldHVybiBpdGVtICE9IG51bGwgJiYgc2VsZWN0ZWRSb3dLZXlzLmluY2x1ZGVzKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW1ba2V5XSA6IGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2tBbGxTZWxlY3RlZChyb3dzKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuXG4gICAgaWYgKCFyb3dzIHx8ICFyb3dzLmxlbmd0aCB8fCAhc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcm93cy5ldmVyeSgoZWxlbWVudCkgPT5cbiAgICAgIHNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyh0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcgPyBlbGVtZW50W2tleV0gOiBlbGVtZW50KSxcbiAgICApO1xuXG4gICAgY29uc3QgYW55U2VsZWN0ZWQgPSByb3dzLnNvbWUoKGVsZW1lbnQpID0+XG4gICAgICBzZWxlY3RlZFJvd0tleXMuaW5jbHVkZXModHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnID8gZWxlbWVudFtrZXldIDogZWxlbWVudCksXG4gICAgKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChhbnlTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNoYW5nZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5ncmlkLnVuU2VsZWN0Um93cyhpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNlbGVjdEFsbChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCByb3dzOiBhbnkpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgaWYgKHRoaXMuY2hlY2tBbGxTZWxlY3RlZChyb3dzKSkge1xuICAgICAgICB0aGlzLmdyaWQudW5TZWxlY3RSb3dzKC4uLnJvd3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvd3MoLi4ucm93cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQ1NTIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIG92ZXJyaWRlIGdldCBjc3NDbGFzcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAnYXgtc2VsZWN0LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDataPagerComponent, AXDataPagerInfoComponent, AXDataPagerInputSelectorComponent, AXDataPagerNextButtonsComponent, AXDataPagerNumericSelectorComponent, AXDataPagerPageSizesComponent, AXDataPagerPrevButtonsComponent, } from '@acorex/components/data-pager';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkDrag, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, DOCUMENT, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, computed, effect, inject, signal, untracked, } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying and managing a data table with advanced features.\n *\n * @category Components\n */\nexport class AXDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n this._unsubscriber = inject(AXUnsubscriber);\n this._zone = inject(NgZone);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n /**\n * @ignore\n */\n this.displayedRows = signal([], ...(ngDevMode ? [{ debugName: \"displayedRows\" }] : []));\n /**\n * @ignore\n */\n this.page = signal(0, ...(ngDevMode ? [{ debugName: \"page\" }] : []));\n /**\n * @ignore\n */\n this.pageSize = signal(0, ...(ngDevMode ? [{ debugName: \"pageSize\" }] : []));\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.columnsList = signal([], ...(ngDevMode ? [{ debugName: \"columnsList\" }] : []));\n /**\n * @ignore\n */\n this.endFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'end'), ...(ngDevMode ? [{ debugName: \"endFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.startFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'start'), ...(ngDevMode ? [{ debugName: \"startFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.normalColumnsList = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'), ...(ngDevMode ? [{ debugName: \"normalColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * Defines if alternative row styling should be applied.\n *\n * @defaultValue `true`\n */\n this.alternative = true;\n /**\n * Indicates if the table header should be displayed.\n *\n * @defaultValue `true`\n */\n this.showHeader = true;\n /**\n * Indicates if the table header should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedHeader = true;\n /**\n * Indicates if the table footer should be displayed.\n *\n * @defaultValue `false`\n */\n this.showFooter = false;\n /**\n * Indicates if the table footer should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedFooter = true;\n /**\n * Specifies the height of each item in the table.\n *\n * @defaultValue `40`\n */\n this.itemHeight = 40;\n /**\n * Enables or disables row reordering.\n *\n * @defaultValue `false`\n */\n this.allowReordering = false;\n /**\n * Enables or disables paging.\n *\n * @defaultValue `true`\n */\n this.paging = true;\n /**\n * Specifies how data should be fetched.\n *\n * @defaultValue `'auto'`\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for loading state.\n *\n * @defaultValue `{ enabled: true, animation: true }`\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * Emits when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Emits when a row is clicked.\n *\n * @event onRowClick\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits when a row is double-clicked.\n *\n * @event onRowDbClick\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Emits when the order of columns changes.\n *\n * @event onColumnsOrderChanged\n */\n this.onColumnsOrderChanged = new EventEmitter();\n /**\n * Emits when the size of columns changes.\n *\n * @event onColumnSizeChanged\n */\n this.onColumnSizeChanged = new EventEmitter();\n /**\n * Emits when page changes.\n *\n * @event onColumnSizeChanged\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * @ignore\n */\n this.isRefreshCalled = signal(false, ...(ngDevMode ? [{ debugName: \"isRefreshCalled\" }] : []));\n /**\n * @ignore\n */\n this.#effect = effect(() => {\n if (this.customDataPager) {\n this.customDataPager.total = this.dataSource.totalCount;\n this.customDataPager.size = this.dataSource.pageSize;\n this.customDataPager.isLoading = this.isLoading();\n }\n }, ...(ngDevMode ? [{ debugName: \"#effect\" }] : []));\n /**\n * @ignore\n */\n this.onResizeColumnMove = (event) => {\n const diffX = event.pageX - this.resizeColumnProp.startX;\n const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;\n this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;\n this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);\n };\n /**\n * @ignore\n */\n this.onResizeColumnEnd = () => {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onResizeColumnMove);\n this.document.removeEventListener('mouseup', this.onResizeColumnEnd);\n }\n const newWidth = parseInt(this.resizeColumnProp.thElement.attributes.getNamedItem('new-width')?.value);\n this.columns.get(this.resizeColumnProp.columnIndex).width = `${Math.max(100, newWidth)}px`;\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: this.resizeColumnProp.columnIndex,\n width: this.columns.get(this.resizeColumnProp.columnIndex).width,\n dataField: this.columns.get(this.resizeColumnProp.columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n this.resetResizingProcess();\n };\n }\n /**\n * Gets the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits the change event.\n *\n * @param v - The row to be focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n /**\n * Returns true if in manual mode and no data has been loaded yet.\n */\n get showNoDataLoadedYet() {\n return this.fetchDataMode === 'manual' && !this.isRefreshCalled();\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (this.customDataPager) {\n this.applyDataPagerMethods();\n }\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n this.dataSource.useCache = false;\n if (this.fetchDataMode == 'auto') {\n this.dataSource.setPage(0);\n }\n this.displayedRows.set(new Array(this.dataSource.pageSize));\n this.totalRows = this.dataSource.items.length;\n this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.displayedRows.set(data.items.filter((item) => !item[this.parentField]));\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n // When current page is beyond max valid page (e.g. after deleting last item on last page), navigate to previous page\n if (this.paging && data.totalCount > 0) {\n const pageSize = this.dataSource.pageSize;\n const maxPageIndex = Math.ceil(data.totalCount / pageSize) - 1;\n const currentPageIndex = this.page();\n if (currentPageIndex > maxPageIndex) {\n const newPageIndex = Math.max(0, maxPageIndex);\n this.page.set(newPageIndex);\n this.dataSource.setPage(newPageIndex);\n const pager = this.dataPager ?? this.customDataPager;\n pager?.goToPage(newPageIndex + 1);\n }\n }\n });\n this.dataSource.onItemExpanded.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { expandedItem, children } = data;\n // If children is null, it means we only want to toggle row details without managing children\n if (children === null) {\n this.displayedRows.update((prev) => this.toggleExpandedState(prev, expandedItem));\n }\n else {\n this.displayedRows.update((prev) => this.toggleExpanded(prev, expandedItem, children));\n }\n });\n this.dataSource.onItemRefreshChildren.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { id } = data;\n this.refreshExpandedItem(id);\n });\n this.pageSize.set(this.dataSource.pageSize);\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this.calculateStickyColumnsPositions();\n this.columnsList.set(this.columns.toArray());\n this.columns.changes.pipe(this._unsubscriber.takeUntilDestroy).subscribe((cols) => {\n this.columnsList.set(cols.toArray());\n });\n // Auto-fit columns with width='auto' after data load\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n if (data.items.length > 0) {\n // Delay to ensure DOM is ready\n setTimeout(() => {\n this.autoFitColumnsWithAutoWidth();\n }, 100);\n }\n });\n }\n /**\n * @ignore\n */\n #effect;\n /**\n * Toggles the expanded state of a row without managing children.\n * Used for row details template without nested hierarchy.\n *\n * @param rows - The array of rows to search in\n * @param expandedItem - The item to toggle\n * @returns Updated rows array with toggled state\n */\n toggleExpandedState(rows, expandedItem) {\n return rows.map((item) => {\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n };\n }\n return item;\n });\n }\n toggleExpanded(rows, expandedItem, children) {\n return rows.map((item) => {\n children.forEach((c) => {\n if (!c.__meta__) {\n c.__meta__ = { level: (expandedItem?.__meta__?.level ?? 0) + 1 };\n }\n });\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n children: children ? this.toggleExpanded(children, expandedItem, item.children || []) : null,\n };\n }\n else if (item.children) {\n return { ...item, children: this.toggleExpanded(item.children, expandedItem, children) };\n }\n return item;\n });\n }\n async refreshExpandedItem(id) {\n const newChildren = await this.dataSource.getItemsByFilter({\n field: this.parentField,\n operator: { type: 'equal' },\n value: id,\n });\n this.displayedRows.update((prev) => this.updateChildren(prev, id, newChildren.items));\n }\n updateChildren(items, id, newChildren) {\n return items.map((item) => {\n if (item[this.getDataSourceKey()] === id) {\n newChildren.forEach((child) => {\n child.__meta__ = { ...child.__meta__, level: (item.__meta__?.level || 0) + 1 };\n });\n return { ...item, children: cloneDeep(newChildren) };\n }\n else if (item.children) {\n return { ...item, children: this.updateChildren(item.children, id, newChildren) };\n }\n return item;\n });\n }\n /**\n * @ignore\n */\n drop(event) {\n const clonedColumns = [...this.columnsList()];\n moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);\n this.columnsList.set(clonedColumns);\n this.onColumnsOrderChanged.emit({ component: this, data: { event }, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleChangePage(event) {\n this.onPageChanged.emit(event);\n if (event.isUserInteraction) {\n const pageChanged = event.page - 1 != this.page();\n const pageSizeChanged = event.take != this.pageSize();\n if (pageChanged || pageSizeChanged) {\n if (pageChanged) {\n this.page.set(event.page - 1);\n this.dataSource.setPage(this.page());\n }\n if (pageSizeChanged) {\n this.pageSize.set(event.take);\n this.dataSource.setPageSize(this.pageSize());\n }\n // Update displayed rows and data source\n this.displayedRows.set(new Array(this.pageSize()));\n }\n }\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n applyDataPagerMethods() {\n this.customDataPager.onChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe((event) => this.handleChangePage(event));\n this.customDataPager.displayMode = 'custom';\n }\n /**\n * Handles the click event on a column header.\n * Toggles the sorting direction or removes the sort if already sorted.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({ field: column.dataField, dir: 'asc' });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * Refreshes the data table with optional reset options.\n *\n * @param options - Configuration options for refresh operation.\n * @param options.reset - Whether to reset pagination state.\n * @returns void - No return value.\n */\n refresh(options = { reset: true }) {\n this.dataSource.refresh(options);\n const isRefreshCalled = untracked(() => this.isRefreshCalled());\n if (this.fetchDataMode === 'manual' && !isRefreshCalled) {\n this.isRefreshCalled.set(true);\n }\n if (this.dataPager && options.reset) {\n this.dataPager.goFirstPage();\n }\n }\n /**\n * @ignore\n */\n calculateRowIndex(index) {\n return this.dataSource.pageSize * this.page() + index;\n }\n /**\n * Handles double-click on resize handle to auto-fit column width.\n *\n * @param event - The mouse event from the double-click\n * @param columnIndex - The index of the column to auto-fit\n * @ignore\n */\n onResizeHandlerDoubleClick(event, columnIndex) {\n event.preventDefault();\n event.stopPropagation();\n this.autoFitColumn(columnIndex);\n }\n /**\n * @ignore\n */\n onResizeColumnStart(event, columnIndex) {\n this.onColumnSizeChanged.emit({\n type: 'start',\n data: {\n columnIndex: columnIndex,\n width: this.columns.get(columnIndex).width,\n dataField: this.columns.get(columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n event.preventDefault();\n event.stopPropagation();\n this.resizeColumnProp.startX = event.pageX;\n this.resizeColumnProp.thElement = event.target.parentElement;\n this.resizeColumnProp.startWidth = parseInt(this.resizeColumnProp.thElement.style.width);\n this.resizeColumnProp.columnIndex = columnIndex;\n if (isPlatformBrowser(this.platformID)) {\n this._zone.runOutsideAngular(() => {\n this.document.addEventListener('mousemove', this.onResizeColumnMove);\n this.document.addEventListener('mouseup', this.onResizeColumnEnd);\n });\n }\n }\n /**\n * @ignore\n */\n resetResizingProcess() {\n this.resizeColumnProp.thElement.removeAttribute('new-width');\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n }\n /**\n * @ignore\n */\n calculateStickyColumnsPositions() {\n let accumulatedWidthFromStart = 0;\n let lastStartColumn;\n this.columns.forEach((column) => {\n const width = parseInt(column.width);\n if (column.fixed === 'start' && !isNaN(width)) {\n column['stickyStart'] = accumulatedWidthFromStart + 'px';\n lastStartColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromStart += width;\n }\n });\n if (lastStartColumn)\n lastStartColumn['isLastFixedColumn'] = true;\n let accumulatedWidthFromEnd = 0;\n let firstEndColumn;\n for (let i = this.columns.length - 1; i >= 0; i--) {\n const column = this.columns.get(i);\n const width = parseInt(column.width);\n if (column.fixed === 'end' && !isNaN(width)) {\n column['stickyEnd'] = accumulatedWidthFromEnd + 'px';\n firstEndColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromEnd += width;\n }\n }\n if (firstEndColumn)\n firstEndColumn['isFirstFixedColumn'] = true;\n }\n /**\n * Auto-fits columns that have width='auto'.\n * Called automatically after data load.\n *\n * @ignore\n */\n autoFitColumnsWithAutoWidth() {\n const autoWidthColumns = [];\n this.columns.forEach((column, index) => {\n // Only auto-fit if width is explicitly set to 'auto'\n if (column.width === 'auto') {\n autoWidthColumns.push(index);\n try {\n this.autoFitColumn(index, { maxWidth: 500 });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n }\n });\n if (autoWidthColumns.length > 0) {\n console.warn(`Auto-fitted ${autoWidthColumns.length} column(s) with width='auto': indices ${autoWidthColumns.join(', ')}`);\n }\n }\n /**\n * Auto-fits all columns width based on their content.\n *\n * @param options - Configuration options\n * @param options.skipFixed - If true, skips fixed columns (default: true)\n * @param options.skipLoading - If true, skips if data is loading (default: true)\n * @param options.maxWidth - Maximum width for any column in pixels (default: 500)\n * @returns void\n */\n autoFitAllColumns(options = {}) {\n const { skipFixed = true, skipLoading = true, maxWidth = 500 } = options;\n // Skip if loading\n if (skipLoading && this.isLoading()) {\n console.warn('Cannot auto-fit columns while data is loading');\n return;\n }\n // Auto-fit each column\n this.columns.forEach((column, index) => {\n // Skip fixed columns if requested\n if (skipFixed && column.fixed) {\n return;\n }\n // Skip if column doesn't allow resizing\n if (!column.allowResizing) {\n return;\n }\n try {\n this.autoFitColumn(index, { maxWidth });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n });\n }\n /**\n * Auto-fits a column width based on its content.\n * Similar to Excel's \"AutoFit Column Width\" feature.\n * Uses an invisible helper table to measure actual content width without affecting the main table.\n *\n * @param columnIndex - The index of the column to auto-fit (0-based, based on columns QueryList)\n * @param options - Configuration options\n * @param options.maxWidth - Maximum width for the column in pixels (default: none)\n * @returns void\n */\n autoFitColumn(columnIndex, options = {}) {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const column = this.columns.get(columnIndex);\n if (!column) {\n console.warn(`Column at index ${columnIndex} not found`);\n return;\n }\n const hostElement = this.getHostElement();\n if (!hostElement) {\n return;\n }\n const mainTable = hostElement.querySelector('table');\n if (!mainTable) {\n return;\n }\n // Find actual column index in rendered table (accounting for fixed columns)\n const allColumns = [...this.startFixedColumnsList(), ...this.normalColumnsList(), ...this.endFixedColumnsList()];\n const actualColumnIndex = allColumns.findIndex((c) => c === column);\n if (actualColumnIndex === -1) {\n console.warn('Column not found in rendered table');\n return;\n }\n // Create invisible helper table\n const helperTable = this.document.createElement('table');\n helperTable.style.position = 'absolute';\n helperTable.style.visibility = 'hidden';\n helperTable.style.tableLayout = 'auto';\n helperTable.style.width = 'auto';\n helperTable.style.top = '-9999px';\n helperTable.style.left = '-9999px';\n // Copy styles from main table\n const mainTableStyle = this.document.defaultView?.getComputedStyle(mainTable);\n if (mainTableStyle) {\n helperTable.style.fontSize = mainTableStyle.fontSize;\n helperTable.style.fontFamily = mainTableStyle.fontFamily;\n helperTable.style.fontWeight = mainTableStyle.fontWeight;\n }\n this.document.body.appendChild(helperTable);\n let maxWidth = 0;\n try {\n // Measure header cell\n const headerRow = mainTable.querySelector('thead tr');\n if (headerRow) {\n const headerCells = headerRow.querySelectorAll('th');\n if (headerCells.length > actualColumnIndex) {\n const headerCell = headerCells[actualColumnIndex];\n // Clone header cell to helper table\n const helperThead = this.document.createElement('thead');\n const helperTr = this.document.createElement('tr');\n const helperTh = headerCell.cloneNode(true);\n helperTh.style.width = 'auto';\n helperTh.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTh);\n helperThead.appendChild(helperTr);\n helperTable.appendChild(helperThead);\n // Force layout calculation\n const headerWidth = helperTh.offsetWidth;\n maxWidth = Math.max(maxWidth, headerWidth);\n helperTable.removeChild(helperThead);\n }\n }\n // Measure body cells\n const bodyRows = mainTable.querySelectorAll('tbody tr:not(.empty-row)');\n const helperTbody = this.document.createElement('tbody');\n helperTable.appendChild(helperTbody);\n // Sample first 20 rows for performance (you can adjust this)\n const sampleSize = Math.min(20, bodyRows.length);\n for (let i = 0; i < sampleSize; i++) {\n const row = bodyRows[i];\n const cells = row.querySelectorAll('td');\n if (cells.length > actualColumnIndex) {\n const cell = cells[actualColumnIndex];\n // Clone cell to helper table\n const helperTr = this.document.createElement('tr');\n const helperTd = cell.cloneNode(true);\n helperTd.style.width = 'auto';\n helperTd.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTd);\n helperTbody.appendChild(helperTr);\n // Force layout calculation\n const cellWidth = helperTd.offsetWidth;\n maxWidth = Math.max(maxWidth, cellWidth);\n helperTbody.removeChild(helperTr);\n }\n }\n // Add some padding for better UX\n let finalWidth = Math.max(maxWidth + 40, 100); // Minimum 100px, add 40px padding\n // Apply max width if specified\n if (options.maxWidth) {\n finalWidth = Math.min(finalWidth, options.maxWidth);\n }\n // Set column width\n column.width = `${finalWidth}px`;\n // Trigger change detection to update the view\n this.columnsList.set([...this.columnsList()]);\n // Recalculate sticky positions if column is fixed\n if (column.fixed) {\n setTimeout(() => {\n this.calculateStickyColumnsPositions();\n }, 0);\n }\n // Emit column size changed event\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: columnIndex,\n width: column.width,\n dataField: column.name,\n },\n isUserInteraction: true,\n component: this,\n });\n }\n finally {\n // Clean up helper table\n if (helperTable.parentNode) {\n this.document.body.removeChild(helperTable);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableComponent, isStandalone: true, selector: \"ax-data-table\", inputs: { dataSource: \"dataSource\", selectedRows: \"selectedRows\", parentField: \"parentField\", rowDetailsTemplate: \"rowDetailsTemplate\", rowTemplate: \"rowTemplate\", emptyTemplate: \"emptyTemplate\", noDataTemplate: \"noDataTemplate\", alternative: \"alternative\", showHeader: \"showHeader\", fixedHeader: \"fixedHeader\", showFooter: \"showFooter\", fixedFooter: \"fixedFooter\", itemHeight: \"itemHeight\", allowReordering: \"allowReordering\", paging: \"paging\", fetchDataMode: \"fetchDataMode\", loading: \"loading\", focusedRow: \"focusedRow\" }, outputs: { selectedRowsChange: \"selectedRowsChange\", focusedRowChange: \"focusedRowChange\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", onColumnsOrderChanged: \"onColumnsOrderChanged\", onColumnSizeChanged: \"onColumnSizeChanged\", onPageChanged: \"onPageChanged\" }, host: { attributes: { \"ngSkipHydration\": \"true\" } }, providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], queries: [{ propertyName: \"customDataPager\", first: true, predicate: AXDataPagerComponent, descendants: true, static: true }, { propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"dataPager\", first: true, predicate: [\"dataPager\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\" }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXDataPagerComponent, selector: \"ax-data-pager\", inputs: [\"value\", \"name\", \"disabled\", \"readonly\", \"isLoading\", \"size\", \"total\", \"displayMode\"], outputs: [\"valueChange\", \"onValueChanged\", \"disabledChange\", \"readonlyChange\", \"displayModeChange\", \"onChanged\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDataPagerNumericSelectorComponent, selector: \"ax-data-pager-numeric-selector\" }, { kind: \"component\", type: AXDataPagerPageSizesComponent, selector: \"ax-data-pager-page-sizes\", inputs: [\"sizes\"] }, { kind: \"component\", type: AXDataPagerPrevButtonsComponent, selector: \"ax-data-pager-prev-buttons\" }, { kind: \"component\", type: AXDataPagerInputSelectorComponent, selector: \"ax-data-pager-input-selector\" }, { kind: \"component\", type: AXDataPagerNextButtonsComponent, selector: \"ax-data-pager-next-buttons\" }, { kind: \"component\", type: AXDataPagerInfoComponent, selector: \"ax-data-pager-info\", inputs: [\"text\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-data-table', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, inputs: ['dataSource', 'selectedRows', 'parentField', 'rowDetailsTemplate'], outputs: ['selectedRowsChange'], providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], imports: [\n NgTemplateOutlet,\n NgClass,\n CdkDropList,\n CdkScrollable,\n CdkDrag,\n AXDecoratorIconComponent,\n AXSkeletonComponent,\n AXDataPagerComponent,\n AXDecoratorGenericComponent,\n AXDataPagerNumericSelectorComponent,\n AXDataPagerPageSizesComponent,\n AXDataPagerPrevButtonsComponent,\n AXDataPagerInputSelectorComponent,\n AXDataPagerNextButtonsComponent,\n AXDataPagerInfoComponent,\n AXButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}\\n\"] }]\n }], propDecorators: { dataPager: [{\n type: ViewChild,\n args: ['dataPager']\n }], customDataPager: [{\n type: ContentChild,\n args: [AXDataPagerComponent, {\n static: true,\n }]\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], noDataTemplate: [{\n type: Input\n }], alternative: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fixedHeader: [{\n type: Input\n }], showFooter: [{\n type: Input\n }], fixedFooter: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], allowReordering: [{\n type: Input\n }], paging: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRow: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], onColumnsOrderChanged: [{\n type: Output\n }], onColumnSizeChanged: [{\n type: Output\n }], onPageChanged: [{\n type: Output\n }], columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixpQ0FBaUMsRUFDakMsK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0IsK0JBQStCLEdBQ2hDLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRixPQUFPLEVB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bmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICBBWERhdGFQYWdlckNoYW5nZWRFdmVudCxcbiAgQVhEYXRhUGFnZXJDb21wb25lbnQsXG4gIEFYRGF0YVBhZ2VySW5mb0NvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJJbnB1dFNlbGVjdG9yQ29tcG9uZW50LFxuICBBWERhdGFQYWdlck5leHRCdXR0b25zQ29tcG9uZW50LFxuICBBWERhdGFQYWdlck51bWVyaWNTZWxlY3RvckNvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJQYWdlU2l6ZXNDb21wb25lbnQsXG4gIEFYRGF0YVBhZ2VyUHJldkJ1dHRvbnNDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXBhZ2VyJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCwgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYSHRtbFV0aWwsIEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBET0NVTUVOVCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QsIGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFYQmFzZURhdGFUYWJsZSxcbiAgQVhDb2x1bW5zT3JkZXJDaGFuZ2VkRXZlbnQsXG4gIEFYRGF0YVRhYmxlUm93Q2xpY2ssXG4gIEFYRGF0YVRhYmxlUm93RGJDbGljayxcbiAgb25Db2x1bW5TaXplQ2hhbmdlZEV2ZW50LFxufSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgYSBkYXRhIHRhYmxlIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxuICBpbnB1dHM6IFsnZGF0YVNvdXJjZScsICdzZWxlY3RlZFJvd3MnLCAncGFyZW50RmllbGQnLCAncm93RGV0YWlsc1RlbXBsYXRlJ10sXG4gIG91dHB1dHM6IFsnc2VsZWN0ZWRSb3dzQ2hhbmdlJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhCYXNlRGF0YVRhYmxlLCB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgICBBWFVuc3Vic2NyaWJlcixcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTmdDbGFzcyxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtTY3JvbGxhYmxlLFxuICAgIENka0RyYWcsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYU2tlbGV0b25Db21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyTnVtZXJpY1NlbGVjdG9yQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyUGFnZVNpemVzQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyUHJldkJ1dHRvbnNDb21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJJbnB1dFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyTmV4dEJ1dHRvbnNDb21wb25lbnQsXG4gICAgQVhEYXRhUGFnZXJJbmZvQ29tcG9uZW50LFxuICAgIEFYQnV0dG9uQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBBWFRyYW5zbGF0b3JQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGFUYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZURhdGFUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG4gIHByaXZhdGUgX3pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdkYXRhUGFnZXInKSBkYXRhUGFnZXI7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChBWERhdGFQYWdlckNvbXBvbmVudCwge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgY3VzdG9tRGF0YVBhZ2VyOiBBWERhdGFQYWdlckNvbXBvbmVudDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBydGwhOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRpc3BsYXllZFJvd3M6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFnZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBwYWdlU2l6ZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0xvYWRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKHRydWUpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbHVtbnNMaXN0OiBXcml0YWJsZVNpZ25hbDxhbnlbXT4gPSBzaWduYWwoW10pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbHVtbnNMaXN0KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09PSAnZW5kJykpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdDogU2lnbmFsPGFueVtdPiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zTGlzdCgpLmZpbHRlcigoYykgPT4gYy5maXhlZCA9PT0gJ3N0YXJ0JyksXG4gICk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm9ybWFsQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuY29sdW1uc0xpc3QoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgIT09ICdlbmQnICYmIGMuZml4ZWQgIT09ICdzdGFydCcpLFxuICApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc2l6ZUNvbHVtblByb3AgPSB7IHN0YXJ0WDogMCwgc3RhcnRXaWR0aDogMCwgY29sdW1uSW5kZXg6IDAsIG5ld0NvbHVtbldpZHRoOiAwLCB0aEVsZW1lbnQ6IG51bGwgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYXNJdGVtcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvdGFsUm93cyA9IDA7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY3VycmVudFBhZ2UgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvdGFsUGFnZXMgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0Um93SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBmb3IgY3VzdG9tIHJvdyBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcm93VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogVGVtcGxhdGUgdG8gZGlzcGxheSB3aGVuIHRoZSB0YWJsZSBpcyBlbXB0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGVtcHR5VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogVGVtcGxhdGUgdG8gZGlzcGxheSB3aGVuIG5vIGRhdGEgaXMgbG9hZGVkIHlldC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG5vRGF0YVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIERlZmluZXMgaWYgYWx0ZXJuYXRpdmUgcm93IHN0eWxpbmcgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG4gICAqL1xuICBASW5wdXQoKVxuICBhbHRlcm5hdGl2ZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93SGVhZGVyID0gdHJ1ZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSB0YWJsZSBoZWFkZXIgc2hvdWxkIGJlIGZpeGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgZml4ZWRIZWFkZXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHRhYmxlIGZvb3RlciBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNob3dGb290ZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSB0YWJsZSBmb290ZXIgc2hvdWxkIGJlIGZpeGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgZml4ZWRGb290ZXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhlaWdodCBvZiBlYWNoIGl0ZW0gaW4gdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGA0MGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGl0ZW1IZWlnaHQ6IG51bWJlciB8ICdhdXRvJyA9IDQwO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHJvdyByZW9yZGVyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGFsbG93UmVvcmRlcmluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHBhZ2luZy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhZ2luZyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgZGF0YSBzaG91bGQgYmUgZmV0Y2hlZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgJ2F1dG8nYFxuICAgKi9cbiAgQElucHV0KClcbiAgZmV0Y2hEYXRhTW9kZTogJ2F1dG8nIHwgJ21hbnVhbCcgPSAnYXV0byc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGxvYWRpbmcgc3RhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHsgZW5hYmxlZDogdHJ1ZSwgYW5pbWF0aW9uOiB0cnVlIH1gXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkaW5nOiB7IGVuYWJsZWQ6IGJvb2xlYW47IGFuaW1hdGlvbjogYm9vbGVhbjsgbG9hZGluZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj4gfSA9IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGFuaW1hdGlvbjogdHJ1ZSxcbiAgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzZWRSb3c6IHVua25vd247XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHJvdy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZm9jdXNlZFJvdygpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZFJvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCByb3cgYW5kIGVtaXRzIHRoZSBjaGFuZ2UgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2IC0gVGhlIHJvdyB0byBiZSBmb2N1c2VkLlxuICAgKi9cbiAgcHVibGljIHNldCBmb2N1c2VkUm93KHY6IHVua25vd24pIHtcbiAgICB0aGlzLl9mb2N1c2VkUm93ID0gdjtcbiAgICB0aGlzLmZvY3VzZWRSb3dDaGFuZ2UuZW1pdCh2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBmb2N1c2VkIHJvdyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBmb2N1c2VkUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSByb3cgaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQGV2ZW50IG9uUm93Q2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dDbGljaz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93Q2xpY2s+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSByb3cgaXMgZG91YmxlLWNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudCBvblJvd0RiQ2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblJvd0RiQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0RiQ2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0RiQ2xpY2s+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG9yZGVyIG9mIGNvbHVtbnMgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50IG9uQ29sdW1uc09yZGVyQ2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ29sdW1uc09yZGVyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDb2x1bW5zT3JkZXJDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHNpemUgb2YgY29sdW1ucyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnQgb25Db2x1bW5TaXplQ2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ29sdW1uU2l6ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gcGFnZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnQgb25Db2x1bW5TaXplQ2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWERhdGFQYWdlckNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVBhZ2VyQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjbGlja1N1YmplY3QgPSBuZXcgU3ViamVjdDx7IGV2ZW50OiBNb3VzZUV2ZW50OyBpdGVtOiBhbnkgfT4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgaXNSZWZyZXNoQ2FsbGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGluIG1hbnVhbCBtb2RlIGFuZCBubyBkYXRhIGhhcyBiZWVuIGxvYWRlZCB5ZXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNob3dOb0RhdGFMb2FkZWRZZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hEYXRhTW9kZSA9PT0gJ21hbnVhbCcgJiYgIXRoaXMuaXNSZWZyZXNoQ2FsbGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpXG4gIHByb3RlY3RlZCBjb2x1bW5zOiBRdWVyeUxpc3Q8QVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAodGhpcy5jdXN0b21EYXRhUGFnZXIpIHtcbiAgICAgIHRoaXMuYXBwbHlEYXRhUGFnZXJNZXRob2RzKCk7XG4gICAgfVxuICAgIHRoaXMucnRsID0gQVhIdG1sVXRpbC5pc1J0bCh0aGlzLmdldEhvc3RFbGVtZW50KCkpO1xuICAgIHRoaXMuZGF0YVNvdXJjZS51c2VDYWNoZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmZldGNoRGF0YU1vZGUgPT0gJ2F1dG8nKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0UGFnZSgwKTtcbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5ZWRSb3dzLnNldChuZXcgQXJyYXkodGhpcy5kYXRhU291cmNlLnBhZ2VTaXplKSk7XG4gICAgdGhpcy50b3RhbFJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuaXRlbXMubGVuZ3RoO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkxvYWRpbmdDaGFuZ2VkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGRhdGEpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLm9uQ2hhbmdlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZGlzcGxheWVkUm93cy5zZXQoZGF0YS5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtW3RoaXMucGFyZW50RmllbGRdKSk7XG4gICAgICB0aGlzLnRvdGFsUm93cyA9IGRhdGEudG90YWxDb3VudDtcbiAgICAgIHRoaXMuaGFzSXRlbXMgPSBkYXRhLnRvdGFsQ291bnQgPiAwO1xuXG4gICAgICAvLyBXaGVuIGN1cnJlbnQgcGFnZSBpcyBiZXlvbmQgbWF4IHZhbGlkIHBhZ2UgKGUuZy4gYWZ0ZXIgZGVsZXRpbmcgbGFzdCBpdGVtIG9uIGxhc3QgcGFnZSksIG5hdmlnYXRlIHRvIHByZXZpb3VzIHBhZ2VcbiAgICAgIGlmICh0aGlzLnBhZ2luZyAmJiBkYXRhLnRvdGFsQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5kYXRhU291cmNlLnBhZ2VTaXplO1xuICAgICAgICBjb25zdCBtYXhQYWdlSW5kZXggPSBNYXRoLmNlaWwoZGF0YS50b3RhbENvdW50IC8gcGFnZVNpemUpIC0gMTtcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHRoaXMucGFnZSgpO1xuICAgICAgICBpZiAoY3VycmVudFBhZ2VJbmRleCA+IG1heFBhZ2VJbmRleCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhZ2VJbmRleCA9IE1hdGgubWF4KDAsIG1heFBhZ2VJbmRleCk7XG4gICAgICAgICAgdGhpcy5wYWdlLnNldChuZXdQYWdlSW5kZXgpO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlKG5ld1BhZ2VJbmRleCk7XG4gICAgICAgICAgY29uc3QgcGFnZXIgPSB0aGlzLmRhdGFQYWdlciA/PyB0aGlzLmN1c3RvbURhdGFQYWdlcjtcbiAgICAgICAgICBwYWdlcj8uZ29Ub1BhZ2UobmV3UGFnZUluZGV4ICsgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHsgZXhwYW5kZWRJdGVtLCBjaGlsZHJlbiB9ID0gZGF0YTtcbiAgICAgIC8vIElmIGNoaWxkcmVuIGlzIG51bGwsIGl0IG1lYW5zIHdlIG9ubHkgd2FudCB0byB0b2dnbGUgcm93IGRldGFpbHMgd2l0aG91dCBtYW5hZ2luZyBjaGlsZHJlblxuICAgICAgaWYgKGNoaWxkcmVuID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkUm93cy51cGRhdGUoKHByZXYpID0+IHRoaXMudG9nZ2xlRXhwYW5kZWRTdGF0ZShwcmV2LCBleHBhbmRlZEl0ZW0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkUm93cy51cGRhdGUoKHByZXYpID0+IHRoaXMudG9nZ2xlRXhwYW5kZWQocHJldiwgZXhwYW5kZWRJdGVtLCBjaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLm9uSXRlbVJlZnJlc2hDaGlsZHJlbi5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGRhdGE7XG4gICAgICB0aGlzLnJlZnJlc2hFeHBhbmRlZEl0ZW0oaWQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYWdlU2l6ZS5zZXQodGhpcy5kYXRhU291cmNlLnBhZ2VTaXplKTtcblxuICAgIC8vXG4gICAgdGhpcy5jbGlja1N1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICBidWZmZXIodGhpcy5jbGlja1N1YmplY3QucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkpLFxuICAgICAgICBmaWx0ZXIoKGNsaWNrQXJyYXkpID0+IGNsaWNrQXJyYXkubGVuZ3RoID09PSAyKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNsaWNrQXJyYXkpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVSb3dEb3VibGVDbGljayhjbGlja0FycmF5WzBdLmV2ZW50LCBjbGlja0FycmF5WzBdLml0ZW0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGN1bGF0ZVN0aWNreUNvbHVtbnNQb3NpdGlvbnMoKTtcbiAgICB0aGlzLmNvbHVtbnNMaXN0LnNldCh0aGlzLmNvbHVtbnMudG9BcnJheSgpKTtcbiAgICB0aGlzLmNvbHVtbnMuY2hhbmdlcy5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGNvbHMpID0+IHtcbiAgICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KGNvbHMudG9BcnJheSgpKTtcbiAgICB9KTtcblxuICAgIC8vIEF1dG8tZml0IGNvbHVtbnMgd2l0aCB3aWR0aD0nYXV0bycgYWZ0ZXIgZGF0YSBsb2FkXG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25DaGFuZ2VkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGEuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBEZWxheSB0byBlbnN1cmUgRE9NIGlzIHJlYWR5XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b0ZpdENvbHVtbnNXaXRoQXV0b1dpZHRoKCk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gICNlZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLmN1c3RvbURhdGFQYWdlcikge1xuICAgICAgdGhpcy5jdXN0b21EYXRhUGFnZXIudG90YWwgPSB0aGlzLmRhdGFTb3VyY2UudG90YWxDb3VudDtcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLnNpemUgPSB0aGlzLmRhdGFTb3VyY2UucGFnZVNpemU7XG4gICAgICB0aGlzLmN1c3RvbURhdGFQYWdlci5pc0xvYWRpbmcgPSB0aGlzLmlzTG9hZGluZygpO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGV4cGFuZGVkIHN0YXRlIG9mIGEgcm93IHdpdGhvdXQgbWFuYWdpbmcgY2hpbGRyZW4uXG4gICAqIFVzZWQgZm9yIHJvdyBkZXRhaWxzIHRlbXBsYXRlIHdpdGhvdXQgbmVzdGVkIGhpZXJhcmNoeS5cbiAgICpcbiAgICogQHBhcmFtIHJvd3MgLSBUaGUgYXJyYXkgb2Ygcm93cyB0byBzZWFyY2ggaW5cbiAgICogQHBhcmFtIGV4cGFuZGVkSXRlbSAtIFRoZSBpdGVtIHRvIHRvZ2dsZVxuICAgKiBAcmV0dXJucyBVcGRhdGVkIHJvd3MgYXJyYXkgd2l0aCB0b2dnbGVkIHN0YXRlXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9nZ2xlRXhwYW5kZWRTdGF0ZShyb3dzOiBhbnlbXSwgZXhwYW5kZWRJdGVtOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHJvd3MubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoZXhwYW5kZWRJdGVtW3RoaXMuZ2V0RGF0YVNvdXJjZUtleSgpXSA9PT0gaXRlbVt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV0pIHtcbiAgICAgICAgY29uc3QgaXNFeHBhbmRlZCA9ICFpdGVtPy5fX21ldGFfXz8uZXhwYW5kZWQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBfX21ldGFfXzogeyBleHBhbmRlZDogaXNFeHBhbmRlZCwgbGV2ZWw6IGV4cGFuZGVkSXRlbT8uX19tZXRhX18/LmxldmVsID8/IDAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUV4cGFuZGVkKHJvd3M6IGFueVtdLCBleHBhbmRlZEl0ZW06IGFueSwgY2hpbGRyZW46IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiByb3dzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBpZiAoIWMuX19tZXRhX18pIHtcbiAgICAgICAgICBjLl9fbWV0YV9fID0geyBsZXZlbDogKGV4cGFuZGVkSXRlbT8uX19tZXRhX18/LmxldmVsID8/IDApICsgMSB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGV4cGFuZGVkSXRlbVt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV0gPT09IGl0ZW1bdGhpcy5nZXREYXRhU291cmNlS2V5KCldKSB7XG4gICAgICAgIGNvbnN0IGlzRXhwYW5kZWQgPSAhaXRlbT8uX19tZXRhX18/LmV4cGFuZGVkO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgX19tZXRhX186IHsgZXhwYW5kZWQ6IGlzRXhwYW5kZWQsIGxldmVsOiBleHBhbmRlZEl0ZW0/Ll9fbWV0YV9fPy5sZXZlbCA/PyAwIH0sXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuID8gdGhpcy50b2dnbGVFeHBhbmRlZChjaGlsZHJlbiwgZXhwYW5kZWRJdGVtLCBpdGVtLmNoaWxkcmVuIHx8IFtdKSA6IG51bGwsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgY2hpbGRyZW46IHRoaXMudG9nZ2xlRXhwYW5kZWQoaXRlbS5jaGlsZHJlbiwgZXhwYW5kZWRJdGVtLCBjaGlsZHJlbikgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoRXhwYW5kZWRJdGVtKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zdCBuZXdDaGlsZHJlbiA9IGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5nZXRJdGVtc0J5RmlsdGVyKHtcbiAgICAgIGZpZWxkOiB0aGlzLnBhcmVudEZpZWxkLFxuICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2VxdWFsJyB9LFxuICAgICAgdmFsdWU6IGlkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRSb3dzLnVwZGF0ZSgocHJldikgPT4gdGhpcy51cGRhdGVDaGlsZHJlbihwcmV2LCBpZCwgbmV3Q2hpbGRyZW4uaXRlbXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hpbGRyZW4oaXRlbXM6IGFueVtdLCBpZDogc3RyaW5nIHwgbnVtYmVyLCBuZXdDaGlsZHJlbjogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW1bdGhpcy5nZXREYXRhU291cmNlS2V5KCldID09PSBpZCkge1xuICAgICAgICBuZXdDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgIGNoaWxkLl9fbWV0YV9fID0geyAuLi5jaGlsZC5fX21ldGFfXywgbGV2ZWw6IChpdGVtLl9fbWV0YV9fPy5sZXZlbCB8fCAwKSArIDEgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGNoaWxkcmVuOiBjbG9uZURlZXAobmV3Q2hpbGRyZW4pIH07XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgY2hpbGRyZW46IHRoaXMudXBkYXRlQ2hpbGRyZW4oaXRlbS5jaGlsZHJlbiwgaWQsIG5ld0NoaWxkcmVuKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnksIGFueSwgYW55Pikge1xuICAgIGNvbnN0IGNsb25lZENvbHVtbnMgPSBbLi4udGhpcy5jb2x1bW5zTGlzdCgpXTtcbiAgICBtb3ZlSXRlbUluQXJyYXkoY2xvbmVkQ29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmNvbHVtbnNMaXN0LnNldChjbG9uZWRDb2x1bW5zKTtcblxuICAgIHRoaXMub25Db2x1bW5zT3JkZXJDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHsgZXZlbnQgfSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQsIGl0ZW0pO1xuICAgIHRoaXMuY2xpY2tTdWJqZWN0Lm5leHQoeyBldmVudCwgaXRlbSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVSb3dTaW5nbGVDbGljayhldmVudDogRXZlbnQsIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvY3VzZWRSb3cgPT0gaXRlbSkge1xuICAgICAgdGhpcy5mb2N1c2VkUm93ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c2VkUm93ID0gaXRlbTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLm9uUm93Q2xpY2suZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogaXRlbSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVDaGFuZ2VQYWdlKGV2ZW50OiBBWERhdGFQYWdlckNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMub25QYWdlQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICBpZiAoZXZlbnQuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIGNvbnN0IHBhZ2VDaGFuZ2VkID0gZXZlbnQucGFnZSAtIDEgIT0gdGhpcy5wYWdlKCk7XG4gICAgICBjb25zdCBwYWdlU2l6ZUNoYW5nZWQgPSBldmVudC50YWtlICE9IHRoaXMucGFnZVNpemUoKTtcblxuICAgICAgaWYgKHBhZ2VDaGFuZ2VkIHx8IHBhZ2VTaXplQ2hhbmdlZCkge1xuICAgICAgICBpZiAocGFnZUNoYW5nZWQpIHtcbiAgICAgICAgICB0aGlzLnBhZ2Uuc2V0KGV2ZW50LnBhZ2UgLSAxKTtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0UGFnZSh0aGlzLnBhZ2UoKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFnZVNpemVDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYWdlU2l6ZS5zZXQoZXZlbnQudGFrZSk7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldFBhZ2VTaXplKHRoaXMucGFnZVNpemUoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgZGlzcGxheWVkIHJvd3MgYW5kIGRhdGEgc291cmNlXG4gICAgICAgIHRoaXMuZGlzcGxheWVkUm93cy5zZXQobmV3IEFycmF5KHRoaXMucGFnZVNpemUoKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RvdWJsZUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIC8vXG4gICAgdGhpcy5vblJvd0RiQ2xpY2suZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogaXRlbSwgaXNVc2VySW50ZXJhY3Rpb246IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgYXBwbHlEYXRhUGFnZXJNZXRob2RzKCkge1xuICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLm9uQ2hhbmdlZFxuICAgICAgLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQpID0+IHRoaXMuaGFuZGxlQ2hhbmdlUGFnZShldmVudCkpO1xuICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLmRpc3BsYXlNb2RlID0gJ2N1c3RvbSc7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgb24gYSBjb2x1bW4gaGVhZGVyLlxuICAgKiBUb2dnbGVzIHRoZSBzb3J0aW5nIGRpcmVjdGlvbiBvciByZW1vdmVzIHRoZSBzb3J0IGlmIGFscmVhZHkgc29ydGVkLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRoZSBtb3VzZSBldmVudCB0cmlnZ2VyZWQgYnkgdGhlIGNsaWNrLlxuICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIGNvbHVtbiB0aGF0IHdhcyBjbGlja2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ29sdW1uQ2xpY2soZTogTW91c2VFdmVudCwgY29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCkge1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5maW5kKChjKSA9PiBjLmZpZWxkID09IGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgaWYgKCFzb3J0KSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LnB1c2goeyBmaWVsZDogY29sdW1uLmRhdGFGaWVsZCwgZGlyOiAnYXNjJyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzb3J0LmRpciA9PSAnYXNjJykge1xuICAgICAgICAgIHNvcnQuZGlyID0gJ2Rlc2MnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmlsdGVyKChjKSA9PiBjICE9IHNvcnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRTb3J0KGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIGNvbnN0IHNvcnQgPSB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5maW5kKChjKSA9PiBjLmZpZWxkID09IGNvbHVtbi5kYXRhRmllbGQpO1xuICAgICAgcmV0dXJuIHNvcnQgPyAoc29ydC5kaXIgPT0gJ2FzYycgPyAnYXgtaWNvbi1hcnJvdy1sb25nLWRvd24nIDogJ2F4LWljb24tYXJyb3ctbG9uZy11cCcpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgZGF0YSB0YWJsZSB3aXRoIG9wdGlvbmFsIHJlc2V0IG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciByZWZyZXNoIG9wZXJhdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMucmVzZXQgLSBXaGV0aGVyIHRvIHJlc2V0IHBhZ2luYXRpb24gc3RhdGUuXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICByZWZyZXNoKG9wdGlvbnM6IHsgcmVzZXQ/OiBib29sZWFuIH0gPSB7IHJlc2V0OiB0cnVlIH0pIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaChvcHRpb25zKTtcbiAgICBjb25zdCBpc1JlZnJlc2hDYWxsZWQgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5pc1JlZnJlc2hDYWxsZWQoKSk7XG4gICAgaWYgKHRoaXMuZmV0Y2hEYXRhTW9kZSA9PT0gJ21hbnVhbCcgJiYgIWlzUmVmcmVzaENhbGxlZCkge1xuICAgICAgdGhpcy5pc1JlZnJlc2hDYWxsZWQuc2V0KHRydWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhUGFnZXIgJiYgb3B0aW9ucy5yZXNldCkge1xuICAgICAgdGhpcy5kYXRhUGFnZXIuZ29GaXJzdFBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVSb3dJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSAqIHRoaXMucGFnZSgpICsgaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBkb3VibGUtY2xpY2sgb24gcmVzaXplIGhhbmRsZSB0byBhdXRvLWZpdCBjb2x1bW4gd2lkdGguXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBldmVudCBmcm9tIHRoZSBkb3VibGUtY2xpY2tcbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYXV0by1maXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uUmVzaXplSGFuZGxlckRvdWJsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmF1dG9GaXRDb2x1bW4oY29sdW1uSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25SZXNpemVDb2x1bW5TdGFydChldmVudDogTW91c2VFdmVudCwgY29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMub25Db2x1bW5TaXplQ2hhbmdlZC5lbWl0KHtcbiAgICAgIHR5cGU6ICdzdGFydCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgd2lkdGg6IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSW5kZXgpLndpZHRoLFxuICAgICAgICBkYXRhRmllbGQ6IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSW5kZXgpLm5hbWUsXG4gICAgICB9LFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgfSk7XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50O1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFdpZHRoID0gcGFyc2VJbnQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5zdHlsZS53aWR0aCk7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4ID0gY29sdW1uSW5kZXg7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVDb2x1bW5Nb3ZlKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUNvbHVtbkVuZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgb25SZXNpemVDb2x1bW5Nb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgZGlmZlggPSBldmVudC5wYWdlWCAtIHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFg7XG4gICAgY29uc3QgbmV3V2lkdGggPSB0aGlzLnJ0bCA/IHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFdpZHRoIC0gZGlmZlggOiB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRXaWR0aCArIGRpZmZYO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtNYXRoLm1heCgxMDAsIG5ld1dpZHRoKX1weGA7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ25ldy13aWR0aCcsIGAke25ld1dpZHRofWApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBvblJlc2l6ZUNvbHVtbkVuZCA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplQ29sdW1uTW92ZSk7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uUmVzaXplQ29sdW1uRW5kKTtcbiAgICB9XG4gICAgY29uc3QgbmV3V2lkdGggPSBwYXJzZUludCh0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCduZXctd2lkdGgnKT8udmFsdWUpO1xuICAgIHRoaXMuY29sdW1ucy5nZXQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4KS53aWR0aCA9IGAke01hdGgubWF4KDEwMCwgbmV3V2lkdGgpfXB4YDtcblxuICAgIHRoaXMub25Db2x1bW5TaXplQ2hhbmdlZC5lbWl0KHtcbiAgICAgIHR5cGU6ICdlbmQnLFxuICAgICAgZGF0YToge1xuICAgICAgICBjb2x1bW5JbmRleDogdGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4LFxuICAgICAgICB3aWR0aDogdGhpcy5jb2x1bW5zLmdldCh0aGlzLnJlc2l6ZUNvbHVtblByb3AuY29sdW1uSW5kZXgpLndpZHRoLFxuICAgICAgICBkYXRhRmllbGQ6IHRoaXMuY29sdW1ucy5nZXQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4KS5uYW1lLFxuICAgICAgfSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNldFJlc2l6aW5nUHJvY2VzcygpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSByZXNldFJlc2l6aW5nUHJvY2VzcygpIHtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmV3LXdpZHRoJyk7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wID0geyBzdGFydFg6IDAsIHN0YXJ0V2lkdGg6IDAsIGNvbHVtbkluZGV4OiAwLCBuZXdDb2x1bW5XaWR0aDogMCwgdGhFbGVtZW50OiBudWxsIH07XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlU3RpY2t5Q29sdW1uc1Bvc2l0aW9ucygpIHtcbiAgICBsZXQgYWNjdW11bGF0ZWRXaWR0aEZyb21TdGFydCA9IDA7XG4gICAgbGV0IGxhc3RTdGFydENvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ7XG5cbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCB3aWR0aCA9IHBhcnNlSW50KGNvbHVtbi53aWR0aCBhcyBzdHJpbmcpO1xuXG4gICAgICBpZiAoY29sdW1uLmZpeGVkID09PSAnc3RhcnQnICYmICFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgY29sdW1uWydzdGlja3lTdGFydCddID0gYWNjdW11bGF0ZWRXaWR0aEZyb21TdGFydCArICdweCc7XG4gICAgICAgIGxhc3RTdGFydENvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgYWNjdW11bGF0ZWRXaWR0aEZyb21TdGFydCArPSB3aWR0aDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAobGFzdFN0YXJ0Q29sdW1uKSBsYXN0U3RhcnRDb2x1bW5bJ2lzTGFzdEZpeGVkQ29sdW1uJ10gPSB0cnVlO1xuXG4gICAgbGV0IGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kID0gMDtcbiAgICBsZXQgZmlyc3RFbmRDb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50O1xuXG4gICAgZm9yIChsZXQgaSA9IHRoaXMuY29sdW1ucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmdldChpKTtcblxuICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4ud2lkdGggYXMgc3RyaW5nKTtcblxuICAgICAgaWYgKGNvbHVtbi5maXhlZCA9PT0gJ2VuZCcgJiYgIWlzTmFOKHdpZHRoKSkge1xuICAgICAgICBjb2x1bW5bJ3N0aWNreUVuZCddID0gYWNjdW11bGF0ZWRXaWR0aEZyb21FbmQgKyAncHgnO1xuICAgICAgICBmaXJzdEVuZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgYWNjdW11bGF0ZWRXaWR0aEZyb21FbmQgKz0gd2lkdGg7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmaXJzdEVuZENvbHVtbikgZmlyc3RFbmRDb2x1bW5bJ2lzRmlyc3RGaXhlZENvbHVtbiddID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRvLWZpdHMgY29sdW1ucyB0aGF0IGhhdmUgd2lkdGg9J2F1dG8nLlxuICAgKiBDYWxsZWQgYXV0b21hdGljYWxseSBhZnRlciBkYXRhIGxvYWQuXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgYXV0b0ZpdENvbHVtbnNXaXRoQXV0b1dpZHRoKCk6IHZvaWQge1xuICAgIGNvbnN0IGF1dG9XaWR0aENvbHVtbnM6IG51bWJlcltdID0gW107XG5cbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgLy8gT25seSBhdXRvLWZpdCBpZiB3aWR0aCBpcyBleHBsaWNpdGx5IHNldCB0byAnYXV0bydcbiAgICAgIGlmIChjb2x1bW4ud2lkdGggPT09ICdhdXRvJykge1xuICAgICAgICBhdXRvV2lkdGhDb2x1bW5zLnB1c2goaW5kZXgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuYXV0b0ZpdENvbHVtbihpbmRleCwgeyBtYXhXaWR0aDogNTAwIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBhdXRvLWZpdCBjb2x1bW4gJHtpbmRleH06YCwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoYXV0b1dpZHRoQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBBdXRvLWZpdHRlZCAke2F1dG9XaWR0aENvbHVtbnMubGVuZ3RofSBjb2x1bW4ocykgd2l0aCB3aWR0aD0nYXV0byc6IGluZGljZXMgJHthdXRvV2lkdGhDb2x1bW5zLmpvaW4oJywgJyl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZml0cyBhbGwgY29sdW1ucyB3aWR0aCBiYXNlZCBvbiB0aGVpciBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9ucy5za2lwRml4ZWQgLSBJZiB0cnVlLCBza2lwcyBmaXhlZCBjb2x1bW5zIChkZWZhdWx0OiB0cnVlKVxuICAgKiBAcGFyYW0gb3B0aW9ucy5za2lwTG9hZGluZyAtIElmIHRydWUsIHNraXBzIGlmIGRhdGEgaXMgbG9hZGluZyAoZGVmYXVsdDogdHJ1ZSlcbiAgICogQHBhcmFtIG9wdGlvbnMubWF4V2lkdGggLSBNYXhpbXVtIHdpZHRoIGZvciBhbnkgY29sdW1uIGluIHBpeGVscyAoZGVmYXVsdDogNTAwKVxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBwdWJsaWMgYXV0b0ZpdEFsbENvbHVtbnMoXG4gICAgb3B0aW9uczoge1xuICAgICAgc2tpcEZpeGVkPzogYm9vbGVhbjtcbiAgICAgIHNraXBMb2FkaW5nPzogYm9vbGVhbjtcbiAgICAgIG1heFdpZHRoPzogbnVtYmVyO1xuICAgIH0gPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBza2lwRml4ZWQgPSB0cnVlLCBza2lwTG9hZGluZyA9IHRydWUsIG1heFdpZHRoID0gNTAwIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gU2tpcCBpZiBsb2FkaW5nXG4gICAgaWYgKHNraXBMb2FkaW5nICYmIHRoaXMuaXNMb2FkaW5nKCkpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ2Fubm90IGF1dG8tZml0IGNvbHVtbnMgd2hpbGUgZGF0YSBpcyBsb2FkaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXV0by1maXQgZWFjaCBjb2x1bW5cbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgLy8gU2tpcCBmaXhlZCBjb2x1bW5zIGlmIHJlcXVlc3RlZFxuICAgICAgaWYgKHNraXBGaXhlZCAmJiBjb2x1bW4uZml4ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBTa2lwIGlmIGNvbHVtbiBkb2Vzbid0IGFsbG93IHJlc2l6aW5nXG4gICAgICBpZiAoIWNvbHVtbi5hbGxvd1Jlc2l6aW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5hdXRvRml0Q29sdW1uKGluZGV4LCB7IG1heFdpZHRoIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGF1dG8tZml0IGNvbHVtbiAke2luZGV4fTpgLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXV0by1maXRzIGEgY29sdW1uIHdpZHRoIGJhc2VkIG9uIGl0cyBjb250ZW50LlxuICAgKiBTaW1pbGFyIHRvIEV4Y2VsJ3MgXCJBdXRvRml0IENvbHVtbiBXaWR0aFwiIGZlYXR1cmUuXG4gICAqIFVzZXMgYW4gaW52aXNpYmxlIGhlbHBlciB0YWJsZSB0byBtZWFzdXJlIGFjdHVhbCBjb250ZW50IHdpZHRoIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBtYWluIHRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0byBhdXRvLWZpdCAoMC1iYXNlZCwgYmFzZWQgb24gY29sdW1ucyBRdWVyeUxpc3QpXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLm1heFdpZHRoIC0gTWF4aW11bSB3aWR0aCBmb3IgdGhlIGNvbHVtbiBpbiBwaXhlbHMgKGRlZmF1bHQ6IG5vbmUpXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIHB1YmxpYyBhdXRvRml0Q29sdW1uKGNvbHVtbkluZGV4OiBudW1iZXIsIG9wdGlvbnM6IHsgbWF4V2lkdGg/OiBudW1iZXIgfSA9IHt9KTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmdldChjb2x1bW5JbmRleCk7XG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIGNvbnNvbGUud2FybihgQ29sdW1uIGF0IGluZGV4ICR7Y29sdW1uSW5kZXh9IG5vdCBmb3VuZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpO1xuICAgIGlmICghaG9zdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYWluVGFibGUgPSBob3N0RWxlbWVudC5xdWVyeVNlbGVjdG9yKCd0YWJsZScpO1xuICAgIGlmICghbWFpblRhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmluZCBhY3R1YWwgY29sdW1uIGluZGV4IGluIHJlbmRlcmVkIHRhYmxlIChhY2NvdW50aW5nIGZvciBmaXhlZCBjb2x1bW5zKVxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBbLi4udGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKSwgLi4udGhpcy5ub3JtYWxDb2x1bW5zTGlzdCgpLCAuLi50aGlzLmVuZEZpeGVkQ29sdW1uc0xpc3QoKV07XG4gICAgY29uc3QgYWN0dWFsQ29sdW1uSW5kZXggPSBhbGxDb2x1bW5zLmZpbmRJbmRleCgoYykgPT4gYyA9PT0gY29sdW1uKTtcblxuICAgIGlmIChhY3R1YWxDb2x1bW5JbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ29sdW1uIG5vdCBmb3VuZCBpbiByZW5kZXJlZCB0YWJsZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBpbnZpc2libGUgaGVscGVyIHRhYmxlXG4gICAgY29uc3QgaGVscGVyVGFibGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgaGVscGVyVGFibGUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGhlbHBlclRhYmxlLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS50YWJsZUxheW91dCA9ICdhdXRvJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS53aWR0aCA9ICdhdXRvJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS50b3AgPSAnLTk5OTlweCc7XG4gICAgaGVscGVyVGFibGUuc3R5bGUubGVmdCA9ICctOTk5OXB4JztcblxuICAgIC8vIENvcHkgc3R5bGVzIGZyb20gbWFpbiB0YWJsZVxuICAgIGNvbnN0IG1haW5UYWJsZVN0eWxlID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uZ2V0Q29tcHV0ZWRTdHlsZShtYWluVGFibGUpO1xuICAgIGlmIChtYWluVGFibGVTdHlsZSkge1xuICAgICAgaGVscGVyVGFibGUuc3R5bGUuZm9udFNpemUgPSBtYWluVGFibGVTdHlsZS5mb250U2l6ZTtcbiAgICAgIGhlbHBlclRhYmxlLnN0eWxlLmZvbnRGYW1pbHkgPSBtYWluVGFibGVTdHlsZS5mb250RmFtaWx5O1xuICAgICAgaGVscGVyVGFibGUuc3R5bGUuZm9udFdlaWdodCA9IG1haW5UYWJsZVN0eWxlLmZvbnRXZWlnaHQ7XG4gICAgfVxuXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhlbHBlclRhYmxlKTtcblxuICAgIGxldCBtYXhXaWR0aCA9IDA7XG5cbiAgICB0cnkge1xuICAgICAgLy8gTWVhc3VyZSBoZWFkZXIgY2VsbFxuICAgICAgY29uc3QgaGVhZGVyUm93ID0gbWFpblRhYmxlLnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkIHRyJyk7XG4gICAgICBpZiAoaGVhZGVyUm93KSB7XG4gICAgICAgIGNvbnN0IGhlYWRlckNlbGxzID0gaGVhZGVyUm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJyk7XG4gICAgICAgIGlmIChoZWFkZXJDZWxscy5sZW5ndGggPiBhY3R1YWxDb2x1bW5JbmRleCkge1xuICAgICAgICAgIGNvbnN0IGhlYWRlckNlbGwgPSBoZWFkZXJDZWxsc1thY3R1YWxDb2x1bW5JbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAvLyBDbG9uZSBoZWFkZXIgY2VsbCB0byBoZWxwZXIgdGFibGVcbiAgICAgICAgICBjb25zdCBoZWxwZXJUaGVhZCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhlYWQnKTtcbiAgICAgICAgICBjb25zdCBoZWxwZXJUciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTtcbiAgICAgICAgICBjb25zdCBoZWxwZXJUaCA9IGhlYWRlckNlbGwuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGhlbHBlclRoLnN0eWxlLndpZHRoID0gJ2F1dG8nO1xuICAgICAgICAgIGhlbHBlclRoLnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJztcbiAgICAgICAgICBoZWxwZXJUci5hcHBlbmRDaGlsZChoZWxwZXJUaCk7XG4gICAgICAgICAgaGVscGVyVGhlYWQuYXBwZW5kQ2hpbGQoaGVscGVyVHIpO1xuICAgICAgICAgIGhlbHBlclRhYmxlLmFwcGVuZENoaWxkKGhlbHBlclRoZWFkKTtcblxuICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBjYWxjdWxhdGlvblxuICAgICAgICAgIGNvbnN0IGhlYWRlcldpZHRoID0gaGVscGVyVGgub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgaGVhZGVyV2lkdGgpO1xuXG4gICAgICAgICAgaGVscGVyVGFibGUucmVtb3ZlQ2hpbGQoaGVscGVyVGhlYWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE1lYXN1cmUgYm9keSBjZWxsc1xuICAgICAgY29uc3QgYm9keVJvd3MgPSBtYWluVGFibGUucXVlcnlTZWxlY3RvckFsbCgndGJvZHkgdHI6bm90KC5lbXB0eS1yb3cpJyk7XG4gICAgICBjb25zdCBoZWxwZXJUYm9keSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTtcbiAgICAgIGhlbHBlclRhYmxlLmFwcGVuZENoaWxkKGhlbHBlclRib2R5KTtcblxuICAgICAgLy8gU2FtcGxlIGZpcnN0IDIwIHJvd3MgZm9yIHBlcmZvcm1hbmNlICh5b3UgY2FuIGFkanVzdCB0aGlzKVxuICAgICAgY29uc3Qgc2FtcGxlU2l6ZSA9IE1hdGgubWluKDIwLCBib2R5Um93cy5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzYW1wbGVTaXplOyBpKyspIHtcbiAgICAgICAgY29uc3Qgcm93ID0gYm9keVJvd3NbaV07XG4gICAgICAgIGNvbnN0IGNlbGxzID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyk7XG5cbiAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCA+IGFjdHVhbENvbHVtbkluZGV4KSB7XG4gICAgICAgICAgY29uc3QgY2VsbCA9IGNlbGxzW2FjdHVhbENvbHVtbkluZGV4XSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAgIC8vIENsb25lIGNlbGwgdG8gaGVscGVyIHRhYmxlXG4gICAgICAgICAgY29uc3QgaGVscGVyVHIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICAgICAgY29uc3QgaGVscGVyVGQgPSBjZWxsLmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBoZWxwZXJUZC5zdHlsZS53aWR0aCA9ICdhdXRvJztcbiAgICAgICAgICBoZWxwZXJUZC5zdHlsZS53aGl0ZVNwYWNlID0gJ25vd3JhcCc7XG4gICAgICAgICAgaGVscGVyVHIuYXBwZW5kQ2hpbGQoaGVscGVyVGQpO1xuICAgICAgICAgIGhlbHBlclRib2R5LmFwcGVuZENoaWxkKGhlbHBlclRyKTtcblxuICAgICAgICAgIC8vIEZvcmNlIGxheW91dCBjYWxjdWxhdGlvblxuICAgICAgICAgIGNvbnN0IGNlbGxXaWR0aCA9IGhlbHBlclRkLm9mZnNldFdpZHRoO1xuICAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIGNlbGxXaWR0aCk7XG5cbiAgICAgICAgICBoZWxwZXJUYm9keS5yZW1vdmVDaGlsZChoZWxwZXJUcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHNvbWUgcGFkZGluZyBmb3IgYmV0dGVyIFVYXG4gICAgICBsZXQgZmluYWxXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoICsgNDAsIDEwMCk7IC8vIE1pbmltdW0gMTAwcHgsIGFkZCA0MHB4IHBhZGRpbmdcblxuICAgICAgLy8gQXBwbHkgbWF4IHdpZHRoIGlmIHNwZWNpZmllZFxuICAgICAgaWYgKG9wdGlvbnMubWF4V2lkdGgpIHtcbiAgICAgICAgZmluYWxXaWR0aCA9IE1hdGgubWluKGZpbmFsV2lkdGgsIG9wdGlvbnMubWF4V2lkdGgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgY29sdW1uIHdpZHRoXG4gICAgICBjb2x1bW4ud2lkdGggPSBgJHtmaW5hbFdpZHRofXB4YDtcblxuICAgICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlld1xuICAgICAgdGhpcy5jb2x1bW5zTGlzdC5zZXQoWy4uLnRoaXMuY29sdW1uc0xpc3QoKV0pO1xuXG4gICAgICAvLyBSZWNhbGN1bGF0ZSBzdGlja3kgcG9zaXRpb25zIGlmIGNvbHVtbiBpcyBmaXhlZFxuICAgICAgaWYgKGNvbHVtbi5maXhlZCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVN0aWNreUNvbHVtbnNQb3NpdGlvbnMoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEVtaXQgY29sdW1uIHNpemUgY2hhbmdlZCBldmVudFxuICAgICAgdGhpcy5vbkNvbHVtblNpemVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICB0eXBlOiAnZW5kJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoLFxuICAgICAgICAgIGRhdGFGaWVsZDogY29sdW1uLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gQ2xlYW4gdXAgaGVscGVyIHRhYmxlXG4gICAgICBpZiAoaGVscGVyVGFibGUucGFyZW50Tm9kZSkge1xuICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaGVscGVyVGFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+IDwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXdyYXBwZXJcIj5cbiAgPHRhYmxlPlxuICAgIEBpZiAoc2hvd0hlYWRlcikge1xuICAgICAgPHRoZWFkIFtuZ0NsYXNzXT1cInsgJ2F4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlcic6IGZpeGVkSGVhZGVyIH1cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWFsbG93UmVvcmRlcmluZ1wiXG4gICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1oZWFkLWNlbGwgc3RpY2t5LXN0YXJ0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtbGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LXN0YXJ0XT1cImNbJ3N0aWNreVN0YXJ0J11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVySGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKGMgb2Ygbm9ybWFsQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWhlYWQtY2VsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoYy5hbGxvd1Jlc2l6aW5nICYmICFjLmZpeGVkKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25SZXNpemVDb2x1bW5TdGFydCgkZXZlbnQsIHRoaXMuc3RhcnRGaXhlZENvbHVtbnNMaXN0KCkubGVuZ3RoICsgJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25SZXNpemVIYW5kbGVyRG91YmxlQ2xpY2soJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEb3VibGUtY2xpY2sgdG8gYXV0by1maXQgY29sdW1uIHdpZHRoXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtaGVhZC1jZWxsIHN0aWNreS1lbmRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1maXJzdF09XCJjWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1lbmRdPVwiY1snc3RpY2t5RW5kJ11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVySGVhZGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICB9XG4gICAgPHRib2R5IFtuZ0NsYXNzXT1cInsgJ2F4LWRhdGEtdGFibGUtcm93LWFsdGVybmF0aXZlJzogYWx0ZXJuYXRpdmUgfVwiPlxuICAgICAgQGlmIChzaG93Tm9EYXRhTG9hZGVkWWV0KSB7XG4gICAgICAgIDx0ciBzdHlsZT1cImRpc3BsYXk6IGluaGVyaXRcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWVtcHR5LWRhdGFcIiBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnNMaXN0KCkubGVuZ3RoICsgMVwiPlxuICAgICAgICAgICAgQGlmIChub0RhdGFUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vRGF0YVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0BhY29yZXg6Y29tbW9uLmdlbmVyYWwubm8tZGF0YS15ZXQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIH0gQGVsc2UgaWYgKCFkaXNwbGF5ZWRSb3dzKCkubGVuZ3RoKSB7XG4gICAgICAgIDx0ciBzdHlsZT1cImRpc3BsYXk6IGluaGVyaXRcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWVtcHR5LWRhdGFcIiBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnNMaXN0KCkubGVuZ3RoICsgMVwiPlxuICAgICAgICAgICAgQGlmIChlbXB0eVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAYWNvcmV4OmNvbW1vbi5nZW5lcmFsLm5vLXJlY29yZCcgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5ZWRSb3dzKCk7IGxldCByb3dJbmRleCA9ICRpbmRleDsgdHJhY2sgcm93SW5kZXgpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dUZW1wXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGRhdGE6IHsgcm93LCByb3dJbmRleCB9IH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjcm93VGVtcCBsZXQtZGF0YT1cImRhdGFcIj5cbiAgICAgICAgICBAaWYgKHJvd1RlbXBsYXRlKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGRhdGEucm93LCByb3dJbmRleDogZGF0YS5yb3dJbmRleCB9IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWZvY3VzZWRdPVwiZm9jdXNlZFJvdyAmJiBkYXRhLnJvdyA9PT0gZm9jdXNlZFJvd1wiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtaW5kZXhdPVwiZGF0YS5yb3dJbmRleFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1zZWxlY3RlZF09XCJzZWxlY3RlZFJvd3MuaW5jbHVkZXMoZGF0YS5yb3cpXCJcbiAgICAgICAgICAgICAgc3R5bGUuaGVpZ2h0PVwie3sgaXRlbUhlaWdodCB9fXB4XCJcbiAgICAgICAgICAgICAgc3R5bGUubWF4LWhlaWdodD1cInt7IGl0ZW1IZWlnaHQgfX1weFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSb3dDbGljaygkZXZlbnQsIGRhdGEucm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1zdGFydF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1sYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LXN0YXJ0XT1cImNbJ3N0aWNreVN0YXJ0J11cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjLmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5yb3cgJiYgIWlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjLmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5yb3cgJiYgIWlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8dGQ+PGRpdiBjbGFzcz1cImF4LWJnXCI+PC9kaXY+PC90ZD5cbiAgICAgICAgICAgICAgQGZvciAoYyBvZiBlbmRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1lbmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtZmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LWVuZF09XCJjWydzdGlja3lFbmQnXVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxhYmVsXT1cImMuY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImMuY3NzQ2xhc3NcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmIChkYXRhLnJvdyAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7IGRhdGE6IGRhdGEucm93LCByb3dJbmRleDogY2FsY3VsYXRlUm93SW5kZXgoZGF0YS5yb3dJbmRleCkgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxvYWRpbmcubG9hZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvYWRpbmcubG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cImxvYWRpbmcuYW5pbWF0aW9uXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgQGlmIChkYXRhLnJvdz8uX19tZXRhX18/LmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgIEBpZiAocm93RGV0YWlsc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBzdGFydEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktYm9keS1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1zdGFydF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtbGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImF4LWRhdGEtdGFibGUtcm93LWRldGFpbHNcIiBbYXR0ci5jb2xzcGFuXT1cIm5vcm1hbENvbHVtbnNMaXN0KCkubGVuZ3RoICsgMVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93RGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogZGF0YS5yb3csIHJvd0luZGV4OiBkYXRhLnJvd0luZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjIG9mIGVuZEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktYm9keS1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0aWNreS1lbmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGZvciAoY2hpbGRSb3cgb2YgZGF0YS5yb3cuY2hpbGRyZW47IGxldCBjaGlsZFJvd0luZGV4ID0gJGluZGV4OyB0cmFjayBjaGlsZFJvd0luZGV4KSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiB7IHJvdzogY2hpbGRSb3csIHJvd0luZGV4OiBjaGlsZFJvd0luZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDx0ciBjbGFzcz1cImVtcHR5LXJvd1wiPjwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgICBAaWYgKHNob3dGb290ZXIpIHtcbiAgICAgIDx0Zm9vdCBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXInOiBmaXhlZEZvb3RlciB9XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICBAZm9yIChjIG9mIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtc3RpY2t5LWZvb3Rlci1jZWxsIHN0aWNreS1zdGFydFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1sYXN0XT1cImNbJ2lzTGFzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktc3RhcnRdPVwiY1snc3RpY2t5U3RhcnQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJGb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAoYyBvZiBub3JtYWxDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJGb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGMuYWxsb3dSZXNpemluZyAmJiAhYy5maXhlZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtcmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplQ29sdW1uU3RhcnQoJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uUmVzaXplSGFuZGxlckRvdWJsZUNsaWNrKCRldmVudCwgdGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRG91YmxlLWNsaWNrIHRvIGF1dG8tZml0IGNvbHVtbiB3aWR0aFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICBAZm9yIChjIG9mIGVuZEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXItY2VsbCBzdGlja3ktZW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtZmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGZvb3Q+XG4gICAgfVxuICA8L3RhYmxlPlxuPC9kaXY+XG5cbkBpZiAocGFnaW5nKSB7XG4gIDxkaXYgY2xhc3M9XCJheC10YWJsZS1mb290ZXJcIiAjZm9vdGVyQ29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tUGFnZXI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1kYXRhLXBhZ2VyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICBAaWYgKGN1c3RvbURhdGFQYWdlcikge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21QYWdlclwiPjwvbmctY29udGFpbmVyPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGF4LWRhdGEtcGFnZXJcbiAgICAgICAgI2RhdGFQYWdlclxuICAgICAgICBbZGlzcGxheU1vZGVdPVwiJ2N1c3RvbSdcIlxuICAgICAgICAob25DaGFuZ2VkKT1cImhhbmRsZUNoYW5nZVBhZ2UoJGV2ZW50KVwiXG4gICAgICAgIFt0b3RhbF09XCJkYXRhU291cmNlLnRvdGFsQ291bnRcIlxuICAgICAgICBbc2l6ZV09XCJkYXRhU291cmNlLnBhZ2VTaXplXCJcbiAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgICA+XG4gICAgICAgIDxheC1wcmVmaXggY2xhc3M9XCJheC1kYXRhLXRhYmxlLW51bWVyaWMtcGFnaW5nXCI+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItbnVtZXJpYy1zZWxlY3Rvcj4gPC9heC1kYXRhLXBhZ2VyLW51bWVyaWMtc2VsZWN0b3I+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItcGFnZS1zaXplcz4gPC9heC1kYXRhLXBhZ2VyLXBhZ2Utc2l6ZXM+XG4gICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8YXgtcHJlZml4IGNsYXNzPVwiYXgtZGF0YS10YWJsZS1pbnB1dC1wYWdpbmdcIj5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1wcmV2LWJ1dHRvbnM+IDwvYXgtZGF0YS1wYWdlci1wcmV2LWJ1dHRvbnM+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItaW5wdXQtc2VsZWN0b3I+IDwvYXgtZGF0YS1wYWdlci1pbnB1dC1zZWxlY3Rvcj5cbiAgICAgICAgICA8YXgtZGF0YS1wYWdlci1uZXh0LWJ1dHRvbnM+IDwvYXgtZGF0YS1wYWdlci1uZXh0LWJ1dHRvbnM+XG4gICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8YXgtc3VmZml4IGNsYXNzPVwiYXgtZGF0YS10YWJsZS1pbmZvXCI+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItaW5mbz4gPC9heC1kYXRhLXBhZ2VyLWluZm8+XG4gICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwicmVmcmVzaCh7IHJlc2V0OiBmYWxzZSB9KVwiPlxuICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1yZWZyZXNoXCI+PC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgIDwvYXgtZGF0YS1wYWdlcj5cbiAgICB9XG4gIDwvZGl2PlxufVxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbiJdfQ==","import { AXComponent, AXListDataSource, AXPagedComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ContentChildren, DOCUMENT, ElementRef, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableElement, } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a data table with infinite scrolling capabilities.\n *\n * @category Components\n */\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.ngZone = inject(NgZone);\n /**\n * Emits an event when the page changes.\n *\n * @event\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * Emits an event when a row is clicked.\n *\n * @event\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits an event when a row is double-clicked.\n *\n * @event\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Controls the visibility of the table header.\n *\n * @defaultValue true\n */\n this.showHeader = true;\n /**\n * Defines the mode for fetching data.\n *\n * @defaultValue 'auto'\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for the loading state of the data table.\n *\n * @defaultValue { enabled: true, animation: true }\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * @ignore\n */\n this.lastIndex = 0;\n /**\n * Event emitted when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Defines the height of each item in the table.\n *\n * @default 40\n */\n this.itemHeight = 40;\n /**\n * @ignore\n */\n this.width = '100%';\n /**\n * @ignore\n */\n this.height = '100%';\n /**\n * Emitted when the scroll index changes in the table.\n *\n * @event\n */\n this.onScrolledIndexChanged = new EventEmitter();\n }\n /**\n * @ignore\n */\n startFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n /**\n * @ignore\n */\n endFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumn() {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumnCount() {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n /**\n * @ignore\n */\n fixedColumnCount() {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n /**\n * Retrieves the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits a change event.\n *\n * @param v - The row data to be set as focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n trackByIdx(i) {\n return i;\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n }, 100);\n });\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n _handleOnscrolledIndexChange(e) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n /**\n * @ignore\n */\n updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1)\n this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows)\n this.startRowIndex = this.totalRows;\n }\n /**\n * @ignore\n */\n updateHeight() {\n this.height = `calc(100% - ${(this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)}px)`;\n }\n /**\n * @ignore\n */\n updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n /**\n * @ignore\n */\n updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n /**\n * @ignore\n */\n // Function to copy fixed columns\n copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n if (isPlatformBrowser(this.platformID)) {\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = this.document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n /**\n * Updates the viewport by checking its size and scrolling to the last index.\n * Marks the component for change detection.\n * @ignore\n */\n render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n /**\n * Resets the index to zero and refreshes the data source.\n * @ignore\n */\n refresh() {\n this.lastIndex = 0;\n this.listDataSource.refresh();\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * Handles column header clicks to toggle sorting on the column.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * @ignore\n */\n _handleOnScroll() {\n this.updateHScroll();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXInfiniteScrollDataTableComponent, isStandalone: true, selector: \"ax-infinite-scroll-data-table\", inputs: { dataSource: \"dataSource\", rowTemplate: \"rowTemplate\", emptyTemplate: \"emptyTemplate\", showHeader: \"showHeader\", fetchDataMode: \"fetchDataMode\", loading: \"loading\", focusedRow: \"focusedRow\", itemHeight: \"itemHeight\" }, outputs: { selectedRowsChange: \"selectedRowsChange\", onPageChanged: \"onPageChanged\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", focusedRowChange: \"focusedRowChange\", onScrolledIndexChanged: \"onScrolledIndexChanged\" }, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], queries: [{ propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"viewport\", first: true, predicate: CdkVirtualScrollViewport, descendants: true, static: true }, { propertyName: \"headerContainer\", first: true, predicate: [\"headerContainer\"], descendants: true }, { propertyName: \"footerContainer\", first: true, predicate: [\"footerContainer\"], descendants: true }, { propertyName: \"scrollableContainer\", first: true, predicate: [\"scrolling\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"c.cssClass\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: CdkVirtualScrollableElement, selector: \"[cdkVirtualScrollingElement]\" }, { kind: \"component\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }, { kind: \"directive\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { kind: \"directive\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-infinite-scroll-data-table', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], outputs: ['selectedRowsChange'], inputs: ['dataSource'], imports: [\n NgTemplateOutlet,\n AXDecoratorIconComponent,\n CdkVirtualScrollableElement,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n AXSkeletonComponent,\n AXButtonComponent,\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"c.cssClass\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}\\n\"] }]\n }], propDecorators: { columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }], onPageChanged: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], focusedRow: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], viewport: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport, { static: true }]\n }], onScrolledIndexChanged: [{\n type: Output\n }], headerContainer: [{\n type: ViewChild,\n args: ['headerContainer']\n }], footerContainer: [{\n type: ViewChild,\n args: ['footerContainer']\n }], scrollableContainer: [{\n type: ViewChild,\n args: ['scrolling', { static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUVSLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHdCQUF3QixFQUN4QiwyQkFBMkIsR0FDNUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxp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VUFBVTtzQkFEVCxLQUFLO2dCQVNOLGFBQWE7c0JBRFosS0FBSztnQkFTTixPQUFPO3NCQUROLEtBQUs7Z0JBd0ROLGdCQUFnQjtzQkFEZixNQUFNO2dCQVlJLFVBQVU7c0JBRHBCLEtBQUs7Z0JBcUJOLFVBQVU7c0JBRFQsS0FBSztnQkFpQkUsUUFBUTtzQkFEZixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFTckQsc0JBQXNCO3NCQURyQixNQUFNO2dCQXlDdUIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBS0UsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBTTVCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYTGlzdERhdGFTb3VyY2UsIEFYUGFnZWRDb21wb25lbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBET0NVTUVOVCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7XG4gIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsXG4gIENka1ZpcnR1YWxGb3JPZixcbiAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICBDZGtWaXJ0dWFsU2Nyb2xsYWJsZUVsZW1lbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHN1bSBmcm9tICdsb2Rhc2gtZXMvc3VtJztcbmltcG9ydCB7IFN1YmplY3QsIGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFYQmFzZURhdGFUYWJsZSxcbiAgQVhEYXRhVGFibGVSb3dDbGljayxcbiAgQVhEYXRhVGFibGVSb3dEYkNsaWNrLFxuICBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCxcbn0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9kYXRhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGEgZGF0YSB0YWJsZSB3aXRoIGluZmluaXRlIHNjcm9sbGluZyBjYXBhYmlsaXRpZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFBhZ2VkQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYQmFzZURhdGFUYWJsZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWEluZmluaXRlU2Nyb2xsRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgXSxcbiAgb3V0cHV0czogWydzZWxlY3RlZFJvd3NDaGFuZ2UnXSxcbiAgaW5wdXRzOiBbJ2RhdGFTb3VyY2UnXSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIENka1ZpcnR1YWxTY3JvbGxhYmxlRWxlbWVudCxcbiAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICBDZGtWaXJ0dWFsRm9yT2YsXG4gICAgQVhTa2VsZXRvbkNvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZURhdGFUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IFF1ZXJ5TGlzdDxBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhcnRGaXhlZENvbHVtbigpOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zPy50b0FycmF5KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09ICdzdGFydCcpID8/IFtdO1xuICB9XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uKCk6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgPT0gJ2VuZCcpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90Rml4ZWRDb2x1bW4oKTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucz8udG9BcnJheSgpLmZpbHRlcigoYykgPT4gIWMuZml4ZWQpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90Rml4ZWRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+ICFjLmZpeGVkKS5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpeGVkQ29sdW1uQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zPy50b0FycmF5KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkKS5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBwYWdlIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNsaWNrU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZXZlbnQ6IE1vdXNlRXZlbnQ7IGl0ZW06IGFueSB9PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0NsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dDbGljaz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiBhIHJvdyBpcyBkb3VibGUtY2xpY2tlZC5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIHJvd3MgaW4gdGhlIGRhdGEgdGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICByb3dUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSB0byBkaXNwbGF5IHdoZW4gdGhlIGRhdGEgdGFibGUgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB0YWJsZSBoZWFkZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG1vZGUgZm9yIGZldGNoaW5nIGRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgJ2F1dG8nXG4gICAqL1xuICBASW5wdXQoKVxuICBmZXRjaERhdGFNb2RlOiAnYXV0bycgfCAnbWFudWFsJyA9ICdhdXRvJztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIGRhdGEgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgeyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVxuICAgKi9cbiAgQElucHV0KClcbiAgbG9hZGluZzoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYW5pbWF0aW9uOiBib29sZWFuO1xuICAgIGxvYWRpbmdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICB9ID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgYW5pbWF0aW9uOiB0cnVlLFxuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGxpc3REYXRhU291cmNlOiBBWExpc3REYXRhU291cmNlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzTG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwodHJ1ZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFzSXRlbXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFJvd3MgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRQYWdlID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFBhZ2VzID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzdGFydFJvd0luZGV4ID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbGFzdEluZGV4ID0gMDtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb2N1c2VkIHJvdyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBmb2N1c2VkUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb2N1c2VkUm93OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHJvdy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZm9jdXNlZFJvdygpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZFJvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCByb3cgYW5kIGVtaXRzIGEgY2hhbmdlIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdiAtIFRoZSByb3cgZGF0YSB0byBiZSBzZXQgYXMgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBzZXQgZm9jdXNlZFJvdyh2OiB1bmtub3duKSB7XG4gICAgdGhpcy5fZm9jdXNlZFJvdyA9IHY7XG4gICAgdGhpcy5mb2N1c2VkUm93Q2hhbmdlLmVtaXQodik7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgaGVpZ2h0IG9mIGVhY2ggaXRlbSBpbiB0aGUgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDQwXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtSGVpZ2h0OiBudW1iZXIgfCAnYXV0bycgPSA0MDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB3aWR0aCA9ICcxMDAlJztcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoZWlnaHQgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNjcm9sbCBpbmRleCBjaGFuZ2VzIGluIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TY3JvbGxlZEluZGV4Q2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlU2Nyb2xsSW5kZXhDaGFuZ2VkPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZD4oKTtcblxuICB0cmFja0J5SWR4KGkpIHtcbiAgICByZXR1cm4gaTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlID0gbmV3IEFYTGlzdERhdGFTb3VyY2U8dW5rbm93bj4oe1xuICAgICAgc291cmNlOiB0aGlzLmRhdGFTb3VyY2UsXG4gICAgfSk7XG4gICAgdGhpcy5saXN0RGF0YVNvdXJjZS5zb3VyY2Uub25Mb2FkaW5nQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChkYXRhKTtcbiAgICB9KTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnNvdXJjZS5vbkNoYW5nZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnRvdGFsUm93cyA9IGRhdGEudG90YWxDb3VudDtcbiAgICAgIHRoaXMuaGFzSXRlbXMgPSBkYXRhLnRvdGFsQ291bnQgPiAwO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuXG4gICAgLy9cbiAgICB0aGlzLmNsaWNrU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGJ1ZmZlcih0aGlzLmNsaWNrU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgyNTApKSksXG4gICAgICAgIGZpbHRlcigoY2xpY2tBcnJheSkgPT4gY2xpY2tBcnJheS5sZW5ndGggPT09IDIpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY2xpY2tBcnJheSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZVJvd0RvdWJsZUNsaWNrKGNsaWNrQXJyYXlbMF0uZXZlbnQsIGNsaWNrQXJyYXlbMF0uaXRlbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyQ29udGFpbmVyJykgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlckNvbnRhaW5lcicpIGZvb3RlckNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGluZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNjcm9sbGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sYXN0SW5kZXggPSBlO1xuICAgIHRoaXMub25TY3JvbGxlZEluZGV4Q2hhbmdlZC5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGluZGV4OiB0aGlzLmxhc3RJbmRleCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ0RvQ2hlY2soKSB7XG4gICAgLy90aGlzLmNvcHlGaXhlZENvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUhTY3JvbGwoKTtcbiAgICAvL1xuICAgIHRoaXMudXBkYXRlV2lkdGgoKTtcbiAgICB0aGlzLnVwZGF0ZUhlaWdodCgpO1xuICAgIC8vXG4gICAgdGhpcy51cGRhdGVUb3RhbENvdW50KCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG90YWxDb3VudCgpIHtcbiAgICB0aGlzLnN0YXJ0Um93SW5kZXggPSB0aGlzLmxhc3RJbmRleDtcbiAgICBpZiAodGhpcy5zdGFydFJvd0luZGV4IDwgMSkgdGhpcy5zdGFydFJvd0luZGV4ID0gMTtcbiAgICBpZiAodGhpcy5zdGFydFJvd0luZGV4ID4gdGhpcy50b3RhbFJvd3MpIHRoaXMuc3RhcnRSb3dJbmRleCA9IHRoaXMudG90YWxSb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUhlaWdodCgpIHtcbiAgICB0aGlzLmhlaWdodCA9IGBjYWxjKDEwMCUgLSAkeyh0aGlzLmhlYWRlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMCkgKyAodGhpcy5mb290ZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID8/IDApfXB4KWA7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMuY29sdW1ucyAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdW1QeCA9IHN1bShcbiAgICAgICAgdGhpcy5jb2x1bW5zLnRvQXJyYXkoKS5tYXAoKGMpID0+ICh0eXBlb2YgYy53aWR0aCA9PSAnbnVtYmVyJyA/IGMud2lkdGggOiBOdW1iZXIoYy53aWR0aC5yZXBsYWNlKCdweCcsICcnKSkpKSxcbiAgICAgICk7XG4gICAgICB0aGlzLndpZHRoID0gYCR7TWF0aC5tYXgoc3VtUHgsIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbGllbnRXaWR0aCAtIDUpfXB4YDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlSFNjcm9sbCgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oZWFkZXJDb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyQ29udGFpbmVyID0gdGhpcy5oZWFkZXJDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGhlYWRlckNvbnRhaW5lci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgkey1sZWZ0fXB4KWA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIC8vIEZ1bmN0aW9uIHRvIGNvcHkgZml4ZWQgY29sdW1uc1xuICBwcml2YXRlIGNvcHlGaXhlZENvbHVtbnMoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxSb3dzID0gQXJyYXkuZnJvbSh0aGlzLnZpZXdwb3J0Ll9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICAgIGNvbnN0IGZpeGVkQ29sdW1uVGFibGUgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MVGFibGVFbGVtZW50PihcbiAgICAgICcuYXgtYm9keS1maXhlZC1jb2x1bW5zID4gdGFibGUgPiB0Ym9keScsXG4gICAgKTtcbiAgICBmaXhlZENvbHVtblRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaCgobikgPT4gbi5yZW1vdmUoKSk7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGZvciAoY29uc3Qgcm93IG9mIG9yaWdpbmFsUm93cykge1xuICAgICAgICBjb25zdCBmaXhlZENlbGxzID0gQXJyYXkuZnJvbShyb3cucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZml4ZWQ9XCJzdGFydFwiXScpKTtcbiAgICAgICAgY29uc3QgZml4ZWRSb3cgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBmaXhlZENlbGxzKSB7XG4gICAgICAgICAgY29uc3QgY2xvbmVkQ2VsbCA9IGNlbGwuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgIGZpeGVkUm93LmFwcGVuZENoaWxkKGNsb25lZENlbGwpO1xuICAgICAgICB9XG4gICAgICAgIGZpeGVkQ29sdW1uVGFibGUuYXBwZW5kQ2hpbGQoZml4ZWRSb3cpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmNkay12aXJ0dWFsLXNjcm9sbGFibGUnKS5zY3JvbGxUb3A7XG4gICAgZml4ZWRDb2x1bW5UYWJsZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgkey1zY3JvbGxUb3B9cHgpYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB2aWV3cG9ydCBieSBjaGVja2luZyBpdHMgc2l6ZSBhbmQgc2Nyb2xsaW5nIHRvIHRoZSBsYXN0IGluZGV4LlxuICAgKiBNYXJrcyB0aGUgY29tcG9uZW50IGZvciBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIHRoaXMudmlld3BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy5sYXN0SW5kZXgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGluZGV4IHRvIHplcm8gYW5kIHJlZnJlc2hlcyB0aGUgZGF0YSBzb3VyY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKCkge1xuICAgIHRoaXMubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5oYW5kbGVSb3dTaW5nbGVDbGljayhldmVudCwgaXRlbSk7XG4gICAgdGhpcy5jbGlja1N1YmplY3QubmV4dCh7IGV2ZW50LCBpdGVtIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVJvd1NpbmdsZUNsaWNrKGV2ZW50OiBFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9jdXNlZFJvdyA9PSBpdGVtKSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMub25Sb3dDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RvdWJsZUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIC8vXG4gICAgdGhpcy5vblJvd0RiQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiBpdGVtLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjb2x1bW4gaGVhZGVyIGNsaWNrcyB0byB0b2dnbGUgc29ydGluZyBvbiB0aGUgY29sdW1uLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRoZSBtb3VzZSBldmVudCB0cmlnZ2VyZWQgYnkgdGhlIGNsaWNrLlxuICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIGNvbHVtbiB0aGF0IHdhcyBjbGlja2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBoYW5kbGVDb2x1bW5DbGljayhlOiBNb3VzZUV2ZW50LCBjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCkge1xuICAgICAgY29uc3Qgc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbmQoKGMpID0+IGMuZmllbGQgPT0gY29sdW1uLmRhdGFGaWVsZCk7XG4gICAgICBpZiAoIXNvcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsXG4gICAgICAgICAgZGlyOiAnYXNjJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc29ydC5kaXIgPT0gJ2FzYycpIHtcbiAgICAgICAgICBzb3J0LmRpciA9ICdkZXNjJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbHRlcigoYykgPT4gYyAhPSBzb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U29ydChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIHJldHVybiBzb3J0ID8gKHNvcnQuZGlyID09ICdhc2MnID8gJ2F4LWljb24tYXJyb3ctbG9uZy1kb3duJyA6ICdheC1pY29uLWFycm93LWxvbmctdXAnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVPblNjcm9sbCgpIHtcbiAgICB0aGlzLnVwZGF0ZUhTY3JvbGwoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+IDwvbmctY29udGVudD5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBIZWFkZXIgY29udGVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLT5cbkBpZiAoc2hvd0hlYWRlcikge1xuICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbHVtbnNcIj5cbiAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAjaGVhZGVyQ29udGFpbmVyPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgQGZvciAoYyBvZiBub3RGaXhlZENvbHVtbigpOyB0cmFjayBjLm5hbWUpIHtcbiAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBAaWYoYy5hbGxvd1Jlc2l6aW5nKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yZXNpemUtaGFuZGxlXCIgW2F4LXRhYmxlLWNvbHVtbi1yZXNpemJsZV09XCJjXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBCb2R5IGNvbnRlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG48ZGl2IFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCIgY2xhc3M9XCJheC1ib2R5LWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWJvZHktY29sdW1uc1wiPlxuICAgIDxkaXYgY2RrVmlydHVhbFNjcm9sbGluZ0VsZW1lbnQgI3Njcm9sbGluZyBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiIChzY3JvbGwpPVwiX2hhbmRsZU9uU2Nyb2xsKClcIj5cbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgW2l0ZW1TaXplXT1cIml0ZW1IZWlnaHRcIlxuICAgICAgICBbc3R5bGUuLS1pdGVtLWhlaWdodF09XCJpdGVtSGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIl9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImF4LXRhYmxlLWJvZHkgYXgtcmVsYXRpdmVcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIj5cbiAgICAgICAgICA8Y29sZ3JvdXA+XG4gICAgICAgICAgICBAZm9yIChjIG9mIG5vdEZpeGVkQ29sdW1uKCk7IHRyYWNrIGMubmFtZSkge1xuICAgICAgICAgICAgICA8Y29sIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxjb2wgLz5cbiAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBsaXN0RGF0YVNvdXJjZTtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTAwO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkeDtcbiAgICAgICAgICAgICAgICBsZXQgckluZGV4ID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tIGN1c3RvbSByb3cgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd1RlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGl0ZW0sIHJvd0luZGV4OiBySW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSBub3JtYWwgcm93IHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1mb2N1c2VkXT1cImZvY3VzZWRSb3cgJiYgaXRlbSA9PT0gZm9jdXNlZFJvd1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cInJJbmRleFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSb3dDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RhcnQgZml4ZWQgY29sdW1uIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSBOb3QgZml4ZWQgY29sdW1uIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjIG9mIG5vdEZpeGVkQ29sdW1uKCk7IHRyYWNrIGMubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIiB0YWJpbmRleD1cIjBcIiBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbSAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSByZW5kZXIgY2VsbCAtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBpdGVtLCByb3dJbmRleDogckluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVuZGVyIGxvYWRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC10YWJsZS1mb290ZXJcIiAjZm9vdGVyQ29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwiYXgtdGFibGUtaW5mb1wiPlxuICAgIDxkaXY+U2hvd2luZyB7eyBzdGFydFJvd0luZGV4IH19IG9mIHt7IHRvdGFsUm93cyB9fSBpdGVtczwvZGl2PlxuICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cInJlZnJlc2goKVwiPlxuICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1yZWZyZXNoXCI+PC9heC1pY29uPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbjwvZGl2PlxuIl19","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDataPagerModule } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXResultModule } from '@acorex/components/result';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDataTableColumnResizableDirective } from './columns/data-table-column-resizable.directive';\nimport { AXDataTableTextColumnComponent } from './columns/data-text-column.component';\nimport { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent, } from './columns/row-command-column.component';\nimport { AXRowExpandColumnComponent } from './columns/row-expand-column.component';\nimport { AXRowIndexColumnComponent } from './columns/row-index-column.component';\nimport { AXRowSelectColumnComponent } from './columns/row-select-column.component';\nimport { AXDataTableComponent } from './data-table/data-table.component';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective,\n];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle,\n];\nexport class AXDataTableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective], exports: [AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXDataPagerModule, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXRowSelectColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG1DQUFtQyxHQUNwQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1FQUFtRSxDQUFDOztBQUV2SCxNQUFNLFNBQVMsR0FBRztJQUNoQixrQ0FBa0M7SUFDbEMsb0JBQW9CO0lBQ3BCLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLG1DQUFtQztDQUNwQyxDQUFDO0FBQ0YsTUFBTSxPQUFPLEdBQUc7SUFDZCxZQUFZO0lBQ1osY0FBYztJQUNkLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsV0FBVztJQUNYLE9BQU87SUFDUCxrQkFBa0I7SUFDbEIsYUFBYTtDQUNkLENBQUM7QUFPRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixZQXhCNUIsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLFdBQVc7WUFDWCxPQUFPO1lBQ1Asa0JBQWtCO1lBQ2xCLGFBQWEsRUEzQmIsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUMsYUFSbkMsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUM7K0dBMkJ4QixpQkFBaUIsWUF4QjVCLFlBQVk7WUFDWixjQUFjO1lBQ2QsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixjQUFjO1lBRWQsaUJBQWlCLEVBdkJqQixrQ0FBa0M7WUFDbEMsb0JBQW9CO1lBR3BCLDBCQUEwQjtZQUUxQiwyQkFBMkI7WUFDM0IsbUNBQW1DOzsyRkE0QnhCLGlCQUFpQjtrQkFMN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21tb25Nb2R1bGUsIEFYUmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERhdGFQYWdlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXBhZ2VyJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFJlc3VsdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9yZXN1bHQnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnSGFuZGxlLCBDZGtEcmFnUGxhY2Vob2xkZXIsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5SZXNpemFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2NvbHVtbnMvZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbn0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1jb21tYW5kLWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvcm93LWV4cGFuZC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvcm93LWluZGV4LWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhSb3dTZWxlY3RDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvcm93LXNlbGVjdC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2luZmluaXRlLXNjcm9sbC1kYXRhLXRhYmxlL2luZmluaXRlLXNjcm9sbC1kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtcbiAgQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCxcbiAgQVhEYXRhVGFibGVDb21wb25lbnQsXG4gIEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dJbmRleENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dTZWxlY3RDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93RXhwYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93RHJvcGRvd25Db21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWERhdGFUYWJsZUNvbHVtblJlc2l6YWJsZURpcmVjdGl2ZSxcbl07XG5jb25zdCBNT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIEFYQ29tbW9uTW9kdWxlLFxuICBTY3JvbGxpbmdNb2R1bGUsXG4gIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gIEFYUmVzdWx0TW9kdWxlLFxuICBBWExvYWRpbmdNb2R1bGUsXG4gIEFYU2tlbGV0b25Nb2R1bGUsXG4gIEFYQnV0dG9uTW9kdWxlLFxuICBBWERlY29yYXRvck1vZHVsZSxcbiAgQVhEcm9wZG93bk1vZHVsZSxcbiAgQVhGb3JtYXRNb2R1bGUsXG4gIEFYUmlwcGxlRGlyZWN0aXZlLFxuICBBWERhdGFQYWdlck1vZHVsZSxcbiAgQ2RrRHJvcExpc3QsXG4gIENka0RyYWcsXG4gIENka0RyYWdQbGFjZWhvbGRlcixcbiAgQ2RrRHJhZ0hhbmRsZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTLCAuLi5DT01QT05FTlRdLFxuICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UXSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhVGFibGVNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-data-table.mjs","sources":["../tmp-esm2022/data-table/lib/base-data-table.class.js","../tmp-esm2022/data-table/lib/columns/data-table-column.js","../tmp-esm2022/data-table/lib/columns/data-table-column-resizable.directive.js","../tmp-esm2022/data-table/lib/columns/data-text-column.component.js","../tmp-esm2022/data-table/lib/columns/row-command-column.component.js","../tmp-esm2022/data-table/lib/columns/row-expand-column.component.js","../tmp-esm2022/data-table/lib/columns/row-index-column.component.js","../tmp-esm2022/data-table/lib/columns/row-select-column.component.js","../tmp-esm2022/data-table/lib/data-table/data-table.component.js","../tmp-esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.js","../tmp-esm2022/data-table/lib/data-table.module.js","../tmp-esm2022/data-table/acorex-components-data-table.js"],"sourcesContent":["import { AXDataSource, MXBaseComponent, convertArrayToDataSource, } from '@acorex/cdk/common';\nimport { EventEmitter, Injectable, Input, Output, TemplateRef, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXBaseDataTable extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.dataSource = convertArrayToDataSource([]);\n /**\n * For handle nested rows.\n *\n * @defaultValue `parentId`\n */\n this.parentField = undefined;\n this.selectedRowsChange = new EventEmitter();\n this._selectedRows = signal([], ...(ngDevMode ? [{ debugName: \"_selectedRows\" }] : []));\n }\n /**\n * Gets the data source key field name.\n *\n * @returns string - The key field name for the data source.\n */\n getDataSourceKey() {\n return this.dataSource.config.key || 'id';\n }\n get selectedRows() {\n return this._selectedRows();\n }\n set selectedRows(v) {\n if (!isEqual(this._selectedRows(), v)) {\n this._selectedRows.set(v);\n this.selectedRowsChange.emit(v);\n }\n }\n /**\n * Expands a row to show its children.\n *\n * @param row - The row data to expand.\n * @returns Promise<void> - Promise that resolves when expansion is complete.\n */\n async expandRow(row) {\n // Scenario 1: Row details template without nested children\n if (this.rowDetailsTemplate && !this.parentField) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: null,\n });\n }\n // Scenario 2: Children already exist in the row data\n else if (row.data['__meta__.expanded'] || row.data.children != undefined) {\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: row.data.children,\n });\n }\n // Scenario 3: Fetch children from datasource using parentField\n else {\n const key = this.getDataSourceKey();\n const filter = {\n field: this.parentField,\n operator: {\n type: 'equal',\n },\n value: row['data'][key],\n };\n const expandedItems = await this.dataSource.getItemsByFilter(filter);\n this.dataSource.onItemExpanded.next({\n expandedItem: row.data,\n children: expandedItems.items,\n });\n }\n }\n /**\n * Refreshes the children of a specific item.\n *\n * @param id - The ID of the item whose children should be refreshed.\n * @returns Promise<void> - Promise that resolves when refresh is complete.\n */\n async refreshItemChildren(id) {\n this.dataSource.onItemRefreshChildren.next({\n id,\n });\n }\n /**\n * Selects one or more rows.\n *\n * @param rows - The rows to select.\n * @returns void - No return value.\n */\n selectRows(...rows) {\n const key = this.getDataSourceKey();\n const selectRowIds = this.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n const newRows = rows.filter((nr) => !selectRowIds.includes(typeof nr === 'object' ? nr[key] : nr));\n this.selectedRows = this.selectedRows.concat(newRows);\n //this.selectedRows = _.uniq(this.selectedRows.concat(rows));\n }\n /**\n * Unselects one or more rows.\n *\n * @param rows - The rows to unselect.\n * @returns void - No return value.\n */\n unSelectRows(...rows) {\n const key = this.getDataSourceKey();\n const removedRowIds = rows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n this.selectedRows = this.selectedRows.filter((c) => !removedRowIds.includes(typeof c === 'object' ? c[key] : c));\n //this.selectedRows = this.selectedRows.filter((c) => !rows.includes(c));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXBaseDataTable, decorators: [{\n type: Injectable\n }], propDecorators: { dataSource: [{\n type: Input\n }], parentField: [{\n type: Input\n }], rowDetailsTemplate: [{\n type: Input\n }], selectedRowsChange: [{\n type: Output\n }], selectedRows: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kYXRhLXRhYmxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvYmFzZS1kYXRhLXRhYmxlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBR1osZUFBZSxFQUNmLHdCQUF3QixHQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFxQnBDLE1BQU0sT0FBZ0IsZUFBZ0IsU0FBUSxlQUFlO0lBRDdEOztRQUVXLGVBQVUsR0FBMEIsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUU7Ozs7V0FJRztRQUVILGdCQUFXLEdBQXVCLFNBQVMsQ0FBQztRQVM1Qyx1QkFBa0IsR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQVdwRSxrQkFBYSxHQUE4QixNQUFNLENBQUMsRUFBRSx5REFBQyxDQUFDO0tBMEYvRDtJQW5HQzs7OztPQUlHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBR0QsSUFDVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFXLFlBQVksQ0FBQyxDQUFZO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENB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QUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCx5RUFBeUU7SUFDM0UsQ0FBQzs4R0F0SG1CLGVBQWU7a0hBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEcEMsVUFBVTs4QkFFQSxVQUFVO3NCQUFsQixLQUFLO2dCQVFOLFdBQVc7c0JBRFYsS0FBSztnQkFPTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixNQUFNO2dCQWNJLFlBQVk7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWERhdGFTb3VyY2UsXG4gIEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbixcbiAgQVhFdmVudCxcbiAgTVhCYXNlQ29tcG9uZW50LFxuICBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCBleHRlbmRzIEFYRXZlbnQge1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93Q2xpY2sgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbHVtbnNPcmRlckNoYW5nZWRFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICBkYXRhPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgdHlwZTogJ3N0YXJ0JyB8ICdlbmQnO1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVRhYmxlUm93RGJDbGljayBleHRlbmRzIEFYRGF0YVRhYmxlUm93Q2xpY2sge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZURhdGFUYWJsZSBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZTx1bmtub3duPiA9IGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZShbXSk7XG5cbiAgLyoqXG4gICAqIEZvciBoYW5kbGUgbmVzdGVkIHJvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHBhcmVudElkYFxuICAgKi9cbiAgQElucHV0KClcbiAgcGFyZW50RmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGVtcGxhdGUgZm9yIGV4cGFuZGVkIGN1c3RvbSByb3cgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd0RldGFpbHNUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBPdXRwdXQoKVxuICBzZWxlY3RlZFJvd3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjx1bmtub3duW10+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duW10+KCk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRhdGEgc291cmNlIGtleSBmaWVsZCBuYW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBUaGUga2V5IGZpZWxkIG5hbWUgZm9yIHRoZSBkYXRhIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyBnZXREYXRhU291cmNlS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5jb25maWcua2V5IHx8ICdpZCc7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZFJvd3M6IFdyaXRhYmxlU2lnbmFsPHVua25vd25bXT4gPSBzaWduYWwoW10pO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkUm93cygpOiB1bmtub3duW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFJvd3MoKTtcbiAgfVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkUm93cyh2OiB1bmtub3duW10pIHtcbiAgICBpZiAoIWlzRXF1YWwodGhpcy5fc2VsZWN0ZWRSb3dzKCksIHYpKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3Muc2V0KHYpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UuZW1pdCh2KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kcyBhIHJvdyB0byBzaG93IGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHJvdyAtIFRoZSByb3cgZGF0YSB0byBleHBhbmQuXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD4gLSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBleHBhbnNpb24gaXMgY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZXhwYW5kUm93KHJvdzogYW55KSB7XG4gICAgLy8gU2NlbmFyaW8gMTogUm93IGRldGFpbHMgdGVtcGxhdGUgd2l0aG91dCBuZXN0ZWQgY2hpbGRyZW5cbiAgICBpZiAodGhpcy5yb3dEZXRhaWxzVGVtcGxhdGUgJiYgIXRoaXMucGFyZW50RmllbGQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5uZXh0KHtcbiAgICAgICAgZXhwYW5kZWRJdGVtOiByb3cuZGF0YSxcbiAgICAgICAgY2hpbGRyZW46IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gU2NlbmFyaW8gMjogQ2hpbGRyZW4gYWxyZWFkeSBleGlzdCBpbiB0aGUgcm93IGRhdGFcbiAgICBlbHNlIGlmIChyb3cuZGF0YVsnX19tZXRhX18uZXhwYW5kZWQnXSB8fCByb3cuZGF0YS5jaGlsZHJlbiAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5uZXh0KHtcbiAgICAgICAgZXhwYW5kZWRJdGVtOiByb3cuZGF0YSxcbiAgICAgICAgY2hpbGRyZW46IHJvdy5kYXRhLmNoaWxkcmVuLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFNjZW5hcmlvIDM6IEZldGNoIGNoaWxkcmVuIGZyb20gZGF0YXNvdXJjZSB1c2luZyBwYXJlbnRGaWVsZFxuICAgIGVsc2Uge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgICBjb25zdCBmaWx0ZXI6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICAgICAgZmllbGQ6IHRoaXMucGFyZW50RmllbGQsXG4gICAgICAgIG9wZXJhdG9yOiB7XG4gICAgICAgICAgdHlwZTogJ2VxdWFsJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHJvd1snZGF0YSddW2tleV0sXG4gICAgICB9O1xuICAgICAgY29uc3QgZXhwYW5kZWRJdGVtcyA9IGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5nZXRJdGVtc0J5RmlsdGVyKGZpbHRlcik7XG5cbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkl0ZW1FeHBhbmRlZC5uZXh0KHtcbiAgICAgICAgZXhwYW5kZWRJdGVtOiByb3cuZGF0YSxcbiAgICAgICAgY2hpbGRyZW46IGV4cGFuZGVkSXRlbXMuaXRlbXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBjaGlsZHJlbiBvZiBhIHNwZWNpZmljIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBJRCBvZiB0aGUgaXRlbSB3aG9zZSBjaGlsZHJlbiBzaG91bGQgYmUgcmVmcmVzaGVkLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPHZvaWQ+IC0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gcmVmcmVzaCBpcyBjb21wbGV0ZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoSXRlbUNoaWxkcmVuKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2Uub25JdGVtUmVmcmVzaENoaWxkcmVuLm5leHQoe1xuICAgICAgaWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBvbmUgb3IgbW9yZSByb3dzLlxuICAgKlxuICAgKiBAcGFyYW0gcm93cyAtIFRoZSByb3dzIHRvIHNlbGVjdC5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RSb3dzKC4uLnJvd3M6IHVua25vd25bXSkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RGF0YVNvdXJjZUtleSgpO1xuICAgIGNvbnN0IHNlbGVjdFJvd0lkcyA9IHRoaXMuc2VsZWN0ZWRSb3dzLm1hcCgoc3IpID0+ICh0eXBlb2Ygc3IgPT09ICdvYmplY3QnID8gc3Jba2V5XSA6IHNyKSk7XG4gICAgY29uc3QgbmV3Um93cyA9IHJvd3MuZmlsdGVyKChucikgPT4gIXNlbGVjdFJvd0lkcy5pbmNsdWRlcyh0eXBlb2YgbnIgPT09ICdvYmplY3QnID8gbnJba2V5XSA6IG5yKSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5jb25jYXQobmV3Um93cyk7XG4gICAgLy90aGlzLnNlbGVjdGVkUm93cyA9IF8udW5pcSh0aGlzLnNlbGVjdGVkUm93cy5jb25jYXQocm93cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2VsZWN0cyBvbmUgb3IgbW9yZSByb3dzLlxuICAgKlxuICAgKiBAcGFyYW0gcm93cyAtIFRoZSByb3dzIHRvIHVuc2VsZWN0LlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHVuU2VsZWN0Um93cyguLi5yb3dzOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldERhdGFTb3VyY2VLZXkoKTtcbiAgICBjb25zdCByZW1vdmVkUm93SWRzID0gcm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5zZWxlY3RlZFJvd3MuZmlsdGVyKChjKSA9PiAhcmVtb3ZlZFJvd0lkcy5pbmNsdWRlcyh0eXBlb2YgYyA9PT0gJ29iamVjdCcgPyBjW2tleV0gOiBjKSk7XG4gICAgLy90aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzLmZpbHRlcigoYykgPT4gIXJvd3MuaW5jbHVkZXMoYykpO1xuICB9XG59XG4iXX0=","import { Injectable, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnComponent {\n constructor() {\n /**\n * Width of the column.\n * - string: e.g., '180px', '20%'\n * - number: e.g., 180 (treated as pixels)\n * - 'auto': automatically fits to content after data load\n *\n * @defaultValue 'auto'\n */\n this.width = 'auto';\n this.allowSorting = false;\n this.allowResizing = false;\n this.sortIndex = undefined;\n this.sortOrder = undefined;\n }\n get cssClass() {\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnComponent, decorators: [{\n type: Injectable\n }], propDecorators: { caption: [{\n type: Input\n }], width: [{\n type: Input\n }], fixed: [{\n type: Input\n }], allowSorting: [{\n type: Input\n }], allowResizing: [{\n type: Input\n }], sortIndex: [{\n type: Input\n }], sortOrder: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGFibGUtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDOztBQUcvRCxNQUFNLE9BQWdCLDBCQUEwQjtJQURoRDtRQUtFOzs7Ozs7O1dBT0c7UUFFSCxVQUFLLEdBQTZCLE1BQU0sQ0FBQztRQU16QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUdyQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUd0QixjQUFTLEdBQXVCLFNBQVMsQ0FBQztRQUcxQyxjQUFTLEdBQTRCLFNBQVMsQ0FBQztLQWFoRDtJQUhDLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0F4Q21CLDBCQUEwQjtrSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUQvQyxVQUFVOzhCQUdULE9BQU87c0JBRE4sS0FBSztnQkFZTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU29ydE9yZGVyIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdpZHRoIG9mIHRoZSBjb2x1bW4uXG4gICAqIC0gc3RyaW5nOiBlLmcuLCAnMTgwcHgnLCAnMjAlJ1xuICAgKiAtIG51bWJlcjogZS5nLiwgMTgwICh0cmVhdGVkIGFzIHBpeGVscylcbiAgICogLSAnYXV0byc6IGF1dG9tYXRpY2FsbHkgZml0cyB0byBjb250ZW50IGFmdGVyIGRhdGEgbG9hZFxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlICdhdXRvJ1xuICAgKi9cbiAgQElucHV0KClcbiAgd2lkdGg6IHN0cmluZyB8IG51bWJlciB8ICdhdXRvJyA9ICdhdXRvJztcblxuICBASW5wdXQoKVxuICBmaXhlZDogJ3N0YXJ0JyB8ICdlbmQnIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93U29ydGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93UmVzaXppbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBzb3J0SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBzb3J0T3JkZXI6IEFYU29ydE9yZGVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGFic3RyYWN0IGdldCByZW5kZXJDZWxsVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIGFic3RyYWN0IGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgYWJzdHJhY3QgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIGFic3RyYWN0IGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuO1xuXG4gIGFic3RyYWN0IGdldCBuYW1lKCk6IHN0cmluZztcblxuICBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19","import { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, DOCUMENT, ElementRef, HostListener, inject, Input, NgZone, PLATFORM_ID, Renderer2, } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nexport class AXDataTableColumnResizableDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.renderer = inject(Renderer2);\n this.ngZone = inject(NgZone);\n this.cdr = inject(ChangeDetectorRef);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.resize$ = new Subject();\n this.onMouseMoveRawBound = this.onMouseMoveRaw.bind(this);\n this.onMouseUpBound = this.onMouseUp.bind(this);\n this.resize$.pipe(debounceTime(10)).subscribe((event) => this.onMouseMove(event));\n }\n /**\n * Handles mouse down events to initiate column resizing.\n *\n * @param event - The mouse down event.\n * @returns void - No return value.\n */\n onMouseDown(event) {\n if (isPlatformBrowser(this.platformID)) {\n event.stopPropagation();\n this.ngZone.runOutsideAngular(() => {\n this.startX = event.pageX;\n this.startWidth = this.el?.nativeElement?.parentElement.offsetWidth;\n this.document.addEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.addEventListener('mouseup', this.onMouseUpBound);\n });\n this.cdr.detach(); // Detach the change detector\n }\n }\n /**\n * Handles raw mouse move events and forwards them to the debounced resize stream.\n * This method acts as a bridge between the raw DOM event and the debounced onMouseMove method.\n *\n * @param event - The raw mouse move event.\n * @returns void - No return value.\n */\n onMouseMoveRaw(event) {\n this.resize$.next(event);\n }\n /**\n * Handles mouse move events during column resizing.\n *\n * @param event - The mouse move event.\n * @returns void - No return value.\n */\n onMouseMove(event) {\n const newWidth = this.startWidth + (event.pageX - this.startX);\n this.renderer.setStyle(this.el?.nativeElement?.parentElement, 'width', `${newWidth}px`);\n this.column.width = `${newWidth}px`;\n }\n /**\n * Handles mouse up events to complete column resizing.\n *\n * @returns void - No return value.\n */\n onMouseUp() {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onMouseMoveRawBound);\n this.document.removeEventListener('mouseup', this.onMouseUpBound);\n this.cdr.reattach(); // Reattach the change detector\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXDataTableColumnResizableDirective, isStandalone: true, selector: \"[ax-table-column-resizble]\", inputs: { column: [\"ax-table-column-resizble\", \"column\"] }, host: { listeners: { \"mousedown\": \"onMouseDown($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableColumnResizableDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ax-table-column-resizble]' }]\n }], ctorParameters: () => [], propDecorators: { column: [{\n type: Input,\n args: ['ax-table-column-resizble']\n }], onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdqRSxNQUFNLE9BQU8sbUNBQW1DO0lBZ0I5QztRQWZRLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVoQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFHakMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7UUFPMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLFFBQVEsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQywrQkFBK0I7UUFDdEQsQ0FBQztJQUNILENBQUM7OEdBNUVVLG1DQUFtQztrR0FBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFO3dEQVU1QyxNQUFNO3NCQURaLEtBQUs7dUJBQUMsMEJBQTBCO2dCQXFCakMsV0FBVztzQkFEVixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theC10YWJsZS1jb2x1bW4tcmVzaXpibGVdJyB9KVxuZXhwb3J0IGNsYXNzIEFYRGF0YVRhYmxlQ29sdW1uUmVzaXphYmxlRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIEBJbnB1dCgnYXgtdGFibGUtY29sdW1uLXJlc2l6YmxlJylcbiAgcHVibGljIGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ7XG4gIHByaXZhdGUgcmVzaXplJCA9IG5ldyBTdWJqZWN0PE1vdXNlRXZlbnQ+KCk7XG4gIHByaXZhdGUgc3RhcnRYOiBudW1iZXI7XG4gIHByaXZhdGUgc3RhcnRXaWR0aDogbnVtYmVyO1xuICBwcml2YXRlIG9uTW91c2VNb3ZlUmF3Qm91bmQ6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvbk1vdXNlVXBCb3VuZDogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm9uTW91c2VNb3ZlUmF3Qm91bmQgPSB0aGlzLm9uTW91c2VNb3ZlUmF3LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbk1vdXNlVXBCb3VuZCA9IHRoaXMub25Nb3VzZVVwLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZXNpemUkLnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5vbk1vdXNlTW92ZShldmVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgbW91c2UgZG93biBldmVudHMgdG8gaW5pdGlhdGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgbW91c2UgZG93biBldmVudC5cbiAgICogQHJldHVybnMgdm9pZCAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnBhZ2VYO1xuICAgICAgICB0aGlzLnN0YXJ0V2lkdGggPSB0aGlzLmVsPy5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25Nb3VzZVVwQm91bmQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNkci5kZXRhY2goKTsgLy8gRGV0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyByYXcgbW91c2UgbW92ZSBldmVudHMgYW5kIGZvcndhcmRzIHRoZW0gdG8gdGhlIGRlYm91bmNlZCByZXNpemUgc3RyZWFtLlxuICAgKiBUaGlzIG1ldGhvZCBhY3RzIGFzIGEgYnJpZGdlIGJldHdlZW4gdGhlIHJhdyBET00gZXZlbnQgYW5kIHRoZSBkZWJvdW5jZWQgb25Nb3VzZU1vdmUgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgcmF3IG1vdXNlIG1vdmUgZXZlbnQuXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbk1vdXNlTW92ZVJhdyhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMucmVzaXplJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIG1vdXNlIG1vdmUgZXZlbnRzIGR1cmluZyBjb2x1bW4gcmVzaXppbmcuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBtb3VzZSBtb3ZlIGV2ZW50LlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIChldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRYKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWw/Lm5hdGl2ZUVsZW1lbnQ/LnBhcmVudEVsZW1lbnQsICd3aWR0aCcsIGAke25ld1dpZHRofXB4YCk7XG4gICAgdGhpcy5jb2x1bW4ud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBtb3VzZSB1cCBldmVudHMgdG8gY29tcGxldGUgY29sdW1uIHJlc2l6aW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgb25Nb3VzZVVwKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSYXdCb3VuZCk7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uTW91c2VVcEJvdW5kKTtcbiAgICAgIHRoaXMuY2RyLnJlYXR0YWNoKCk7IC8vIFJlYXR0YWNoIHRoZSBjaGFuZ2UgZGV0ZWN0b3JcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { __decorate, __metadata } from \"tslib\";\nimport { AXComponent } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport { Memoize } from '@acorex/core/memoize';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a text column in a data table, supporting header, cell, and footer templates.\n *\n * @category Components\n */\nexport class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.initialWidth = '';\n /**\n * Controls the display of an expandable arrow icon beside the cell text.\n * If set to `true`, an arrow icon is shown next to the text, indicating expandability.\n *\n * @defaultValue false\n *\n */\n this.expandHandler = false;\n /**\n * Toggles text wrapping in the cell.\n *\n * @defaultValue false\n */\n this.wrapText = false;\n /**\n * @ignore\n */\n this.formatService = inject(AXFormatService);\n }\n /**\n * Returns the template used for rendering cells.\n * Falls back to a default template if no custom template is provided.\n */\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n /**\n * Returns the template used for rendering the column footer,\n * falling back to a default if not provided.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Retrieves the template used for rendering the column header.\n * Falls back to a default template if none is provided.\n */\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n /**\n * Indicates whether loading functionality is enabled.\n */\n get loadingEnabled() {\n return true;\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Generates a unique name based on the `dataField` value.\n */\n get name() {\n return `cl-${this.dataField}`;\n }\n /**\n * Returns the display text for a row cell. Used for cell tooltip when title is enabled on the table.\n */\n getCellDisplayText(rowData) {\n if (rowData == null)\n return '';\n const text = this.getDisplayText(rowData, this.dataField);\n return text != null ? String(text) : '';\n }\n getDisplayText(rowData, dataField) {\n const value = rowData[dataField];\n return !this.format ? value : this.formatService.format(value, this.format, this.formatOptions);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableTextColumnComponent, isStandalone: true, selector: \"ax-text-column\", inputs: { width: \"width\", caption: \"caption\", allowSorting: \"allowSorting\", allowResizing: \"allowResizing\", fixed: \"fixed\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", dataField: \"dataField\", expandHandler: \"expandHandler\", wrapText: \"wrapText\", cellTemplate: \"cellTemplate\", footerTemplate: \"footerTemplate\", headerTemplate: \"headerTemplate\", format: \"format\", formatOptions: \"formatOptions\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ], viewQueries: [{ propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\n__decorate([\n Memoize(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, String]),\n __metadata(\"design:returntype\", String)\n], AXDataTableTextColumnComponent.prototype, \"getDisplayText\", null);\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableTextColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-text-column',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'fas fa-chevron-down'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'fas fa-chevron-right'\"></i>\n }\n }\n </div>\n }\n {{ getDisplayText(row.data, this.dataField) }}\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXDataTableTextColumnComponent,\n },\n { provide: AXComponent, useExisting: AXDataTableTextColumnComponent },\n ],\n inputs: ['width', 'caption', 'allowSorting', 'allowResizing', 'fixed'],\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], dataField: [{\n type: Input\n }], expandHandler: [{\n type: Input\n }], wrapText: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], getDisplayText: [], format: [{\n type: Input\n }], formatOptions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBeUNILE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwwQkFBMEI7SUF4QzlFOztRQXlDVSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO1FBRTFCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBVzVCOzs7Ozs7V0FNRztRQUVILGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXRCOzs7O1dBSUc7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBOEZqQjs7V0FFRztRQUNLLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBbUJqRDtJQXRHQzs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxZ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Z0JBT0Usb0JBQW9CO3NCQUQzQixTQUFTO3VCQUFDLE1BQU07Z0JBZVYsY0FBYztzQkFEcEIsS0FBSztnQkFPRSxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFlWixjQUFjO3NCQURwQixLQUFLO2dCQU9FLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWlEVCxjQUFjLE1BU3hCLE1BQU07c0JBREwsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEZvcm1hdE9wdGlvbnMsIEFYRm9ybWF0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0BhY29yZXgvY29yZS9tZW1vaXplJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBhIHRleHQgY29sdW1uIGluIGEgZGF0YSB0YWJsZSwgc3VwcG9ydGluZyBoZWFkZXIsIGNlbGwsIGFuZCBmb290ZXIgdGVtcGxhdGVzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXRleHQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj57eyBjYXB0aW9uIH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICBAaWYgKGV4cGFuZEhhbmRsZXIpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlRXhwYW5kUm93KHJvdylcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1leHBhbmQtaGFuZGxlclwiXG4gICAgICAgICAgICBpZD1cImF4LWV4cGFuZC1oYW5kbGVyLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZy1pbmxpbmUtc3RhcnQucmVtXT1cInJvdy5kYXRhPy5fX21ldGFfXz8ubGV2ZWwgKiAyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGxvYWRpbmdSb3coKSA9PT0gcm93KSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXItdGhpcmQgYXgtYW5pbWF0ZS10d1NwaW4gYXgtYW5pbWF0ZS1pbmZpbml0ZVwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICBAaWYgKHJvdy5kYXRhPy5fX21ldGFfXz8uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY3VzdG9tQ29sbGFwc2VJY29uIHx8ICdmYXMgZmEtY2hldnJvbi1kb3duJ1wiPjwvaT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImN1c3RvbUV4cGFuZEljb24gfHwgJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0J1wiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIHt7IGdldERpc3BsYXlUZXh0KHJvdy5kYXRhLCB0aGlzLmRhdGFGaWVsZCkgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnYWxsb3dTb3J0aW5nJywgJ2FsbG93UmVzaXppbmcnLCAnZml4ZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcbiAgcHJvdGVjdGVkIGxvYWRpbmdSb3cgPSBzaWduYWwobnVsbCk7XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxXaWR0aCA9ICcnO1xuXG4gIEBJbnB1dCgpIGN1c3RvbUV4cGFuZEljb246IHN0cmluZztcbiAgQElucHV0KCkgY3VzdG9tQ29sbGFwc2VJY29uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGRhdGEgZmllbGQgdG8gZGlzcGxheSBpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgZGF0YUZpZWxkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBkaXNwbGF5IG9mIGFuIGV4cGFuZGFibGUgYXJyb3cgaWNvbiBiZXNpZGUgdGhlIGNlbGwgdGV4dC5cbiAgICogSWYgc2V0IHRvIGB0cnVlYCwgYW4gYXJyb3cgaWNvbiBpcyBzaG93biBuZXh0IHRvIHRoZSB0ZXh0LCBpbmRpY2F0aW5nIGV4cGFuZGFiaWxpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIGV4cGFuZEhhbmRsZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogVG9nZ2xlcyB0ZXh0IHdyYXBwaW5nIGluIHRoZSBjZWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICB3cmFwVGV4dCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIGNlbGxzIHdpdGhpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdjZWxsJylcbiAgcHJpdmF0ZSBfY29udGVudENlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyBjZWxscy5cbiAgICogRmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdGVtcGxhdGUgaWYgbm8gY3VzdG9tIHRlbXBsYXRlIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbFRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRDZWxsVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgb2YgdGhlIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdmb290ZXInKVxuICBwcml2YXRlIF9jb250ZW50Rm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGNvbHVtbiBmb290ZXIsXG4gICAqIGZhbGxpbmcgYmFjayB0byBhIGRlZmF1bHQgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdGVtcGxhdGUgZm9yIHJlbmRlcmluZyB0aGUgY29sdW1uIGhlYWRlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgY29sdW1uIGhlYWRlci5cbiAgICogRmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdGVtcGxhdGUgaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEhlYWRlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkLlxuICAgKi9cbiAgZ2V0IGxvYWRpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlRXhwYW5kUm93KHJvdzogYW55KSB7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChyb3cpO1xuICAgIGF3YWl0IHRoaXMuZ3JpZC5leHBhbmRSb3cocm93KTtcbiAgICB0aGlzLmxvYWRpbmdSb3cuc2V0KG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBuYW1lIGJhc2VkIG9uIHRoZSBgZGF0YUZpZWxkYCB2YWx1ZS5cbiAgICovXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjbC0ke3RoaXMuZGF0YUZpZWxkfWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhIHJvdyBjZWxsLiBVc2VkIGZvciBjZWxsIHRvb2x0aXAgd2hlbiB0aXRsZSBpcyBlbmFibGVkIG9uIHRoZSB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyBnZXRDZWxsRGlzcGxheVRleHQocm93RGF0YTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgPT0gbnVsbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLmdldERpc3BsYXlUZXh0KHJvd0RhdGEsIHRoaXMuZGF0YUZpZWxkKTtcbiAgICByZXR1cm4gdGV4dCAhPSBudWxsID8gU3RyaW5nKHRleHQpIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuXG4gIEBNZW1vaXplKClcbiAgcHJvdGVjdGVkIGdldERpc3BsYXlUZXh0KHJvd0RhdGE6IHVua25vd24sIGRhdGFGaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJvd0RhdGFbZGF0YUZpZWxkXTtcbiAgICByZXR1cm4gIXRoaXMuZm9ybWF0ID8gdmFsdWUgOiB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHZhbHVlLCB0aGlzLmZvcm1hdCBhcyBhbnksIHRoaXMuZm9ybWF0T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZm9ybWF0IHN0cmluZyBmb3IgZGlzcGxheWluZyB2YWx1ZXMgaW4gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGZvcm1hdHRpbmcgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9ybWF0T3B0aW9uczogQVhGb3JtYXRPcHRpb25zO1xufVxuIl19","import { AXComponent, AXRippleDirective, } from '@acorex/cdk/common';\nimport { AXButtonComponent, AXButtonItemListComponent, } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, TemplateRef, ViewChild, ViewEncapsulation, effect, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.cdr = inject(ChangeDetectorRef);\n this.commandLoading = signal(null, ...(ngDevMode ? [{ debugName: \"commandLoading\" }] : []));\n this.rowIdentityMap = new WeakMap();\n this.rowIdentitySeq = 0;\n this.allowSorting = false;\n this.onItemClick = new EventEmitter();\n }\n get loadingEnabled() {\n return false;\n }\n get cssClass() {\n return 'ax-command-column';\n }\n resolveCommandId(rowData, commandName) {\n if (rowData && typeof rowData === 'object') {\n const record = rowData;\n const keyValue = record[this.grid.getDataSourceKey()];\n if (typeof keyValue === 'string' || typeof keyValue === 'number') {\n return `${keyValue}:${commandName}`;\n }\n let fallbackKey = this.rowIdentityMap.get(record);\n if (!fallbackKey) {\n fallbackKey = `row-${++this.rowIdentitySeq}`;\n this.rowIdentityMap.set(record, fallbackKey);\n }\n return `${fallbackKey}:${commandName}`;\n }\n return `unknown:${commandName}`;\n }\n setCommandLoadingState(commandId, loading) {\n this.commandLoading.set(loading ? commandId : null);\n }\n}\n/**\n * A column for displaying dropdown command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n this.emptyStateText = 't(\"dataTable.rowCommandColumn.emptyStateText\")';\n this.itemsLoading = signal(false, ...(ngDevMode ? [{ debugName: \"itemsLoading\" }] : []));\n this.itemsFetched = signal(false, ...(ngDevMode ? [{ debugName: \"itemsFetched\" }] : []));\n /**\n * @ignore\n */\n this._items = [];\n this.items = [];\n this.dropdownLoadingEffect = effect(() => {\n this.applyLoadingState(this.commandLoading());\n }, ...(ngDevMode ? [{ debugName: \"dropdownLoadingEffect\" }] : []));\n }\n /**\n * Returns the template used for rendering cell content.\n * This method provides the cell template used in the data table column, falling back to a default template if none is provided.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * This method provides the header template used in the data table column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer content.\n * This method provides the footer template used in the data table column.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Returns the name identifier for the column component.\n */\n get name() {\n return 'cl-dd-cmd';\n }\n /**\n * @ignore\n */\n async handleOnOpened(rowData) {\n this.itemsLoading.set(true);\n this.itemsFetched.set(false);\n try {\n let resolvedItems = [];\n if (Array.isArray(this.items)) {\n resolvedItems = this.items;\n }\n else\n typeof this.items == 'function';\n {\n const result = this['items'](rowData);\n if (Array.isArray(result)) {\n resolvedItems = result;\n }\n else if (result instanceof Promise) {\n resolvedItems = await result;\n }\n }\n this._items = this.decorateItems(rowData, resolvedItems);\n this.applyLoadingState(this.commandLoading());\n this.itemsFetched.set(true);\n }\n finally {\n this.itemsLoading.set(false);\n this.cdr.detectChanges();\n }\n }\n /**\n * @ignore\n */\n handleOnClosed() {\n this._items = [];\n this.itemsFetched.set(false);\n this.itemsLoading.set(false);\n }\n decorateItems(rowData, items) {\n return items.map((item) => ({\n ...item,\n commandId: this.resolveCommandId(rowData, item.name ?? 'command'),\n loading: false,\n }));\n }\n applyLoadingState(activeCommandId) {\n if (!this._items.length) {\n return;\n }\n let hasChanges = false;\n const updatedItems = this._items.map((item) => {\n const nextLoading = !!activeCommandId && item.commandId === activeCommandId;\n if (item.loading !== nextLoading) {\n hasChanges = true;\n return { ...item, loading: nextLoading };\n }\n return item;\n });\n if (hasChanges) {\n this._items = updatedItems;\n this.cdr.markForCheck();\n }\n }\n /**\n * @ignore\n */\n handleOnItemClick(e, data) {\n const commandName = e.name ?? 'command';\n const commandId = this.resolveCommandId(data, commandName);\n const itemList = e.component;\n let pendingAutoClose = setTimeout(() => {\n itemList?.closeParent();\n pendingAutoClose = undefined;\n });\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e,\n data,\n name: commandName,\n setLoading: (loading) => {\n if (pendingAutoClose) {\n clearTimeout(pendingAutoClose);\n pendingAutoClose = undefined;\n }\n this.setCommandLoadingState(commandId, loading);\n if (!loading) {\n itemList?.closeParent();\n }\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowDropdownCommandColumnComponent, isStandalone: true, selector: \"ax-dropdown-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", emptyStateTemplate: \"emptyStateTemplate\", emptyStateText: \"emptyStateText\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\", \"closeParentOnClick\", \"lockOnLoading\"], outputs: [\"onItemClick\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowDropdownCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-dropdown-command-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n <div>\n <button [axRipple]>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n <ax-dropdown-panel\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"handleOnOpened(row.data)\"\n (onClosed)=\"handleOnClosed()\"\n >\n @if (itemsLoading()) {\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n } @else if (!_items.length && itemsFetched()) {\n <div panel style=\"padding: 0.875rem;\">\n @if (emptyStateTemplate) {\n <ng-container [ngTemplateOutlet]=\"emptyStateTemplate\"></ng-container>\n } @else {\n <span class=\"ax-dropdown-command-empty-state-text\">{{ emptyStateText | translate | async }}</span>\n }\n </div>\n } @else if (_items.length) {\n <ax-button-item-list\n (onItemClick)=\"handleOnItemClick($event, row.data)\"\n [items]=\"_items\"\n [closeParentOnClick]=\"false\"\n [lockOnLoading]=\"true\"\n ></ax-button-item-list>\n }\n </ax-dropdown-panel>\n </button>\n </div>\n }\n <ng-template #loading>\n <div panel style=\"padding: 0.875rem;\">\n <ax-loading></ax-loading>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowDropdownCommandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowDropdownCommandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n CommonModule,\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXButtonItemListComponent,\n AXLoadingComponent,\n NgTemplateOutlet,\n AXTranslationModule,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], emptyStateTemplate: [{\n type: Input\n }], emptyStateText: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n/**\n * A column for displaying command buttons in a data table.\n *\n * @category Components\n */\nexport class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {\n constructor() {\n super(...arguments);\n /**\n * Defines the command items to display in the column.\n * @defaultValue []\n */\n this.items = [];\n }\n /**\n * Returns the template used for rendering the cell content.\n * Uses the specified cell template if provided; otherwise, falls back to a default template.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Returns the template used for rendering the header content.\n * Overrides the base implementation to provide a specific template for the command column.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used for rendering the footer content of the column.\n * Returns `footerTemplate` if provided; otherwise, returns `_contentFooterTemplate`.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique name identifier for the command column.\n */\n get name() {\n return 'cl-in-cmd';\n }\n /**\n * @ignore\n */\n getItems(rowData) {\n if (Array.isArray(this.items)) {\n return this.items;\n }\n else\n typeof this.items == 'function';\n {\n return this.items(rowData);\n }\n return [];\n }\n getItemsWithIds(rowData) {\n return this.getItems(rowData).map((item) => ({\n item,\n commandId: this.getCommandId(rowData, item),\n }));\n }\n /**\n * @ignore\n */\n getCommandId(rowData, item) {\n const commandName = item.name ?? 'command';\n return this.resolveCommandId(rowData, commandName);\n }\n handleOnItemClick(e, item, data) {\n const commandId = this.getCommandId(data, item);\n const args = {\n component: this.grid,\n isUserInteraction: true,\n nativeEvent: e.nativeEvent,\n data,\n name: item.name ?? 'command',\n setLoading: (loading) => {\n this.setCommandLoadingState(commandId, loading);\n },\n };\n this.onItemClick.emit(args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowCommandColumnComponent, isStandalone: true, selector: \"ax-command-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", items: \"items\" }, outputs: { onItemClick: \"onItemClick\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"directive\", type: AXRippleDirective, selector: \"[axRipple]\", inputs: [\"axRipple\", \"axRippleColor\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowCommandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-command-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n @if (row.data) {\n @for (command of getItemsWithIds(row.data); track command.commandId) {\n <ax-button\n [iconOnly]=\"command.item.iconOnly ?? true\"\n [text]=\"command.item.text\"\n [attr.title]=\"command.item.text | translate | async\"\n [style.color]=\"'rgba(var(--ax-sys-color-' + (command.item.color ?? 'primary)') + '-500))'\"\n [disabled]=\"command.item.disabled || commandLoading()\"\n [class.ax-state-disabled]=\"command.item.disabled\"\n [axRipple]=\"!command.item.disabled\"\n [look]=\"command.item.look ?? 'solid'\"\n (onClick)=\"handleOnItemClick($event, command.item, row.data)\"\n >\n <ax-icon [icon]=\"command.item.icon\"></ax-icon>\n @if (commandLoading() === command.commandId) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n }\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowCommandColumnComponent,\n },\n ],\n inputs: ['width', 'caption', 'fixed'],\n outputs: ['onItemClick'],\n imports: [\n AXRippleDirective,\n AXDecoratorIconComponent,\n AXButtonComponent,\n AXLoadingComponent,\n AXTranslatorPipe,\n AsyncPipe,\n ],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], items: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvbGliL2NvbHVtbnMvcm93LWNvbW1hbmQtY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsV0FBVyxFQUVYLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIseUJBQXlCLEdBRTFCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFXakUsTUFBTSxPQUFnQiwrQkFBZ0MsU0FBUSwwQkFBMEI7SUFBeEY7O1FBQ1ksU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FB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QkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lDQXVCNkI7b0JBQ3ZDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsNkJBQTZCO3lCQUN6QztxQkFDRjtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLFNBQVM7cUJBQ1Y7aUJBQ0Y7OEJBT1MsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxNQUFNO2dCQWVULHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWVaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0Usc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBdUJuQixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWEJ1dHRvbkNsaWNrRXZlbnQsXG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYSXRlbUNsaWNrRXZlbnQsXG4gIEFYUmlwcGxlRGlyZWN0aXZlLFxuICBBWFN0eWxlTG9va1R5cGUsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQge1xuICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgQVhCdXR0b25JdGVtQ29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duUGFuZWxDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhMb2FkaW5nQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhCYXNlRGF0YVRhYmxlIH0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbmV4cG9ydCB0eXBlIEFYUm93Q29tbWFuZEl0ZW0gPSBBWEJ1dHRvbkl0ZW1MaXN0SXRlbSAmIHtcbiAgY29tbWFuZElkPzogc3RyaW5nO1xuICBsb29rPzogQVhTdHlsZUxvb2tUeXBlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCBleHRlbmRzIEFYQnV0dG9uQ2xpY2tFdmVudCB7XG4gIHNldExvYWRpbmc/OiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZVJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG4gIHByb3RlY3RlZCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgY29tbWFuZExvYWRpbmcgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcm93SWRlbnRpdHlNYXAgPSBuZXcgV2Vha01hcDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgc3RyaW5nPigpO1xuICBwcml2YXRlIHJvd0lkZW50aXR5U2VxID0gMDtcblxuICBvdmVycmlkZSBhbGxvd1NvcnRpbmcgPSBmYWxzZTtcblxuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGNzc0NsYXNzKCkge1xuICAgIHJldHVybiAnYXgtY29tbWFuZC1jb2x1bW4nO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVDb21tYW5kSWQocm93RGF0YTogdW5rbm93biwgY29tbWFuZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHJvd0RhdGEgJiYgdHlwZW9mIHJvd0RhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCByZWNvcmQgPSByb3dEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3Qga2V5VmFsdWUgPSByZWNvcmRbdGhpcy5ncmlkLmdldERhdGFTb3VyY2VLZXkoKV07XG4gICAgICBpZiAodHlwZW9mIGtleVZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5VmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiBgJHtrZXlWYWx1ZX06JHtjb21tYW5kTmFtZX1gO1xuICAgICAgfVxuICAgICAgbGV0IGZhbGxiYWNrS2V5ID0gdGhpcy5yb3dJZGVudGl0eU1hcC5nZXQocmVjb3JkKTtcbiAgICAgIGlmICghZmFsbGJhY2tLZXkpIHtcbiAgICAgICAgZmFsbGJhY2tLZXkgPSBgcm93LSR7Kyt0aGlzLnJvd0lkZW50aXR5U2VxfWA7XG4gICAgICAgIHRoaXMucm93SWRlbnRpdHlNYXAuc2V0KHJlY29yZCwgZmFsbGJhY2tLZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAke2ZhbGxiYWNrS2V5fToke2NvbW1hbmROYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBgdW5rbm93bjoke2NvbW1hbmROYW1lfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q29tbWFuZExvYWRpbmdTdGF0ZShjb21tYW5kSWQ6IHN0cmluZywgbG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29tbWFuZExvYWRpbmcuc2V0KGxvYWRpbmcgPyBjb21tYW5kSWQgOiBudWxsKTtcbiAgfVxuXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudD4oKTtcbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBkcm9wZG93biBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRyb3Bkb3duLWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxidXR0b24gW2F4UmlwcGxlXT5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tc29saWQgYXgtaWNvbi1tb3JlLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWxcbiAgICAgICAgICAgICAgW2FkYXB0aXZpdHlFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25PcGVuZWQpPVwiaGFuZGxlT25PcGVuZWQocm93LmRhdGEpXCJcbiAgICAgICAgICAgICAgKG9uQ2xvc2VkKT1cImhhbmRsZU9uQ2xvc2VkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW1zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBwYW5lbCBzdHlsZT1cInBhZGRpbmc6IDAuODc1cmVtO1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmICghX2l0ZW1zLmxlbmd0aCAmJiBpdGVtc0ZldGNoZWQoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlTdGF0ZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1kcm9wZG93bi1jb21tYW5kLWVtcHR5LXN0YXRlLXRleHRcIj57eyBlbXB0eVN0YXRlVGV4dCB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChfaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3RcbiAgICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsIHJvdy5kYXRhKVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiX2l0ZW1zXCJcbiAgICAgICAgICAgICAgICAgIFtjbG9zZVBhcmVudE9uQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2xvY2tPbkxvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDxkaXYgcGFuZWwgc3R5bGU9XCJwYWRkaW5nOiAwLjg3NXJlbTtcIj5cbiAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyPjwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBvdXRwdXRzOiBbJ29uSXRlbUNsaWNrJ10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhSaXBwbGVEaXJlY3RpdmUsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYRHJvcGRvd25QYW5lbENvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50LFxuICAgIEFYTG9hZGluZ0NvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93RHJvcGRvd25Db21tYW5kQ29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyBjZWxsIGNvbnRlbnQuXG4gICAqIFRoaXMgbWV0aG9kIHByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLCBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vbmUgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGhlYWRlciBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLlxuICAgKi9cblxuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbXB0eVN0YXRlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW1wdHlTdGF0ZVRleHQgPSAndChcImRhdGFUYWJsZS5yb3dDb21tYW5kQ29sdW1uLmVtcHR5U3RhdGVUZXh0XCIpJztcblxuICBwcm90ZWN0ZWQgaXRlbXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIGl0ZW1zRmV0Y2hlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdmb290ZXInKVxuICBwcml2YXRlIF9jb250ZW50Rm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGZvb3RlciBjb250ZW50LlxuICAgKiBUaGlzIG1ldGhvZCBwcm92aWRlcyB0aGUgZm9vdGVyIHRlbXBsYXRlIHVzZWQgaW4gdGhlIGRhdGEgdGFibGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uIGNvbXBvbmVudC5cbiAgICovXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjbC1kZC1jbWQnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX2l0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBpdGVtczogQVhSb3dDb21tYW5kSXRlbVtdIHwgKChyb3dEYXRhOiB1bmtub3duKSA9PiBBWFJvd0NvbW1hbmRJdGVtW10gfCBQcm9taXNlPEFYUm93Q29tbWFuZEl0ZW1bXT4pID0gW107XG5cbiAgcHJpdmF0ZSBkcm9wZG93bkxvYWRpbmdFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuYXBwbHlMb2FkaW5nU3RhdGUodGhpcy5jb21tYW5kTG9hZGluZygpKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlT25PcGVuZWQocm93RGF0YSkge1xuICAgIHRoaXMuaXRlbXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLml0ZW1zRmV0Y2hlZC5zZXQoZmFsc2UpO1xuICAgIHRyeSB7XG4gICAgICBsZXQgcmVzb2x2ZWRJdGVtczogQVhSb3dDb21tYW5kSXRlbVtdID0gW107XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSkge1xuICAgICAgICByZXNvbHZlZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgIH0gZWxzZSB0eXBlb2YgdGhpcy5pdGVtcyA9PSAnZnVuY3Rpb24nO1xuICAgICAge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAodGhpc1snaXRlbXMnXSBhcyBhbnkpKHJvd0RhdGEpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzb2x2ZWRJdGVtcyA9IHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcmVzb2x2ZWRJdGVtcyA9IGF3YWl0IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5faXRlbXMgPSB0aGlzLmRlY29yYXRlSXRlbXMocm93RGF0YSwgcmVzb2x2ZWRJdGVtcyk7XG4gICAgICB0aGlzLmFwcGx5TG9hZGluZ1N0YXRlKHRoaXMuY29tbWFuZExvYWRpbmcoKSk7XG4gICAgICB0aGlzLml0ZW1zRmV0Y2hlZC5zZXQodHJ1ZSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXRlbXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25DbG9zZWQoKSB7XG4gICAgdGhpcy5faXRlbXMgPSBbXTtcbiAgICB0aGlzLml0ZW1zRmV0Y2hlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaXRlbXNMb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGRlY29yYXRlSXRlbXMocm93RGF0YTogdW5rbm93biwgaXRlbXM6IEFYUm93Q29tbWFuZEl0ZW1bXSk6IEFYUm93Q29tbWFuZEl0ZW1bXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBjb21tYW5kSWQ6IHRoaXMucmVzb2x2ZUNvbW1hbmRJZChyb3dEYXRhLCBpdGVtLm5hbWUgPz8gJ2NvbW1hbmQnKSxcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlMb2FkaW5nU3RhdGUoYWN0aXZlQ29tbWFuZElkOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9pdGVtcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcbiAgICBjb25zdCB1cGRhdGVkSXRlbXMgPSB0aGlzLl9pdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IG5leHRMb2FkaW5nID0gISFhY3RpdmVDb21tYW5kSWQgJiYgaXRlbS5jb21tYW5kSWQgPT09IGFjdGl2ZUNvbW1hbmRJZDtcbiAgICAgIGlmIChpdGVtLmxvYWRpbmcgIT09IG5leHRMb2FkaW5nKSB7XG4gICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICByZXR1cm4geyAuLi5pdGVtLCBsb2FkaW5nOiBuZXh0TG9hZGluZyB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSk7XG4gICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gdXBkYXRlZEl0ZW1zO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25JdGVtQ2xpY2soZTogQVhJdGVtQ2xpY2tFdmVudDxBWEJ1dHRvbkl0ZW1Db21wb25lbnQ+LCBkYXRhOiB1bmtub3duKSB7XG4gICAgY29uc3QgY29tbWFuZE5hbWUgPSBlLm5hbWUgPz8gJ2NvbW1hbmQnO1xuICAgIGNvbnN0IGNvbW1hbmRJZCA9IHRoaXMucmVzb2x2ZUNvbW1hbmRJZChkYXRhLCBjb21tYW5kTmFtZSk7XG4gICAgY29uc3QgaXRlbUxpc3QgPSBlLmNvbXBvbmVudCBhcyBBWEJ1dHRvbkl0ZW1MaXN0Q29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBwZW5kaW5nQXV0b0Nsb3NlOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaXRlbUxpc3Q/LmNsb3NlUGFyZW50KCk7XG4gICAgICBwZW5kaW5nQXV0b0Nsb3NlID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGNvbnN0IGFyZ3M6IEFYUm93Q29tbWFuZEl0ZW1DbGlja0V2ZW50ID0ge1xuICAgICAgY29tcG9uZW50OiB0aGlzLmdyaWQsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgZGF0YSxcbiAgICAgIG5hbWU6IGNvbW1hbmROYW1lLFxuICAgICAgc2V0TG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHBlbmRpbmdBdXRvQ2xvc2UpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQocGVuZGluZ0F1dG9DbG9zZSk7XG4gICAgICAgICAgcGVuZGluZ0F1dG9DbG9zZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldENvbW1hbmRMb2FkaW5nU3RhdGUoY29tbWFuZElkLCBsb2FkaW5nKTtcbiAgICAgICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICAgICAgaXRlbUxpc3Q/LmNsb3NlUGFyZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoYXJncyk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvbHVtbiBmb3IgZGlzcGxheWluZyBjb21tYW5kIGJ1dHRvbnMgaW4gYSBkYXRhIHRhYmxlLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNvbW1hbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgQGlmIChyb3cuZGF0YSkge1xuICAgICAgICBAZm9yIChjb21tYW5kIG9mIGdldEl0ZW1zV2l0aElkcyhyb3cuZGF0YSk7IHRyYWNrIGNvbW1hbmQuY29tbWFuZElkKSB7XG4gICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgW2ljb25Pbmx5XT1cImNvbW1hbmQuaXRlbS5pY29uT25seSA/PyB0cnVlXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cImNvbW1hbmQuaXRlbS50ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImNvbW1hbmQuaXRlbS50ZXh0IHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIidyZ2JhKHZhcigtLWF4LXN5cy1jb2xvci0nICsgKGNvbW1hbmQuaXRlbS5jb2xvciA/PyAncHJpbWFyeSknKSArICctNTAwKSknXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21tYW5kLml0ZW0uZGlzYWJsZWQgfHwgY29tbWFuZExvYWRpbmcoKVwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiY29tbWFuZC5pdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtheFJpcHBsZV09XCIhY29tbWFuZC5pdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtsb29rXT1cImNvbW1hbmQuaXRlbS5sb29rID8/ICdzb2xpZCdcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25JdGVtQ2xpY2soJGV2ZW50LCBjb21tYW5kLml0ZW0sIHJvdy5kYXRhKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiY29tbWFuZC5pdGVtLmljb25cIj48L2F4LWljb24+XG4gICAgICAgICAgICBAaWYgKGNvbW1hbmRMb2FkaW5nKCkgPT09IGNvbW1hbmQuY29tbWFuZElkKSB7XG4gICAgICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93Q29tbWFuZENvbHVtbkNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBvdXRwdXRzOiBbJ29uSXRlbUNsaWNrJ10sXG4gIGltcG9ydHM6IFtcbiAgICBBWFJpcHBsZURpcmVjdGl2ZSxcbiAgICBBWERlY29yYXRvckljb25Db21wb25lbnQsXG4gICAgQVhCdXR0b25Db21wb25lbnQsXG4gICAgQVhMb2FkaW5nQ29tcG9uZW50LFxuICAgIEFYVHJhbnNsYXRvclBpcGUsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWEJhc2VSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGNlbGwgY29udGVudC5cbiAgICogVXNlcyB0aGUgc3BlY2lmaWVkIGNlbGwgdGVtcGxhdGUgaWYgcHJvdmlkZWQ7IG90aGVyd2lzZSwgZmFsbHMgYmFjayB0byBhIGRlZmF1bHQgdGVtcGxhdGUuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGhlYWRlciBjb250ZW50LlxuICAgKiBPdmVycmlkZXMgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gdG8gcHJvdmlkZSBhIHNwZWNpZmljIHRlbXBsYXRlIGZvciB0aGUgY29tbWFuZCBjb2x1bW4uXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIGNvbnRlbnQgb2YgdGhlIGNvbHVtbi5cbiAgICogUmV0dXJucyBgZm9vdGVyVGVtcGxhdGVgIGlmIHByb3ZpZGVkOyBvdGhlcndpc2UsIHJldHVybnMgYF9jb250ZW50Rm9vdGVyVGVtcGxhdGVgLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdW5pcXVlIG5hbWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbW1hbmQgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWluLWNtZCc7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgY29tbWFuZCBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBjb2x1bW4uXG4gICAqIEBkZWZhdWx0VmFsdWUgW11cbiAgICovXG4gIEBJbnB1dCgpXG4gIGl0ZW1zOiBBWFJvd0NvbW1hbmRJdGVtW10gfCAoKHJvd0RhdGE6IHVua25vd24pID0+IEFYUm93Q29tbWFuZEl0ZW1bXSkgPSBbXTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRJdGVtcyhyb3dEYXRhOiB1bmtub3duKTogQVhSb3dDb21tYW5kSXRlbVtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXM7XG4gICAgfSBlbHNlIHR5cGVvZiB0aGlzLml0ZW1zID09ICdmdW5jdGlvbic7XG4gICAge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbXMocm93RGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtc1dpdGhJZHMocm93RGF0YTogdW5rbm93bik6IEFycmF5PHsgaXRlbTogQVhSb3dDb21tYW5kSXRlbTsgY29tbWFuZElkOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW1zKHJvd0RhdGEpLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgIGl0ZW0sXG4gICAgICBjb21tYW5kSWQ6IHRoaXMuZ2V0Q29tbWFuZElkKHJvd0RhdGEsIGl0ZW0pLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbW1hbmRJZChyb3dEYXRhOiB1bmtub3duLCBpdGVtOiBBWFJvd0NvbW1hbmRJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb21tYW5kTmFtZSA9IGl0ZW0ubmFtZSA/PyAnY29tbWFuZCc7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUNvbW1hbmRJZChyb3dEYXRhLCBjb21tYW5kTmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT25JdGVtQ2xpY2soZTogQVhDbGlja0V2ZW50LCBpdGVtOiBBWFJvd0NvbW1hbmRJdGVtLCBkYXRhOiB1bmtub3duKSB7XG4gICAgY29uc3QgY29tbWFuZElkID0gdGhpcy5nZXRDb21tYW5kSWQoZGF0YSwgaXRlbSk7XG4gICAgY29uc3QgYXJnczogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSB7XG4gICAgICBjb21wb25lbnQ6IHRoaXMuZ3JpZCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUubmF0aXZlRXZlbnQsXG4gICAgICBkYXRhLFxuICAgICAgbmFtZTogaXRlbS5uYW1lID8/ICdjb21tYW5kJyxcbiAgICAgIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0Q29tbWFuZExvYWRpbmdTdGF0ZShjb21tYW5kSWQsIGxvYWRpbmcpO1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdChhcmdzKTtcbiAgfVxufVxuIl19","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowExpandColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-expand';\n }\n /**\n * @ignore\n */\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXRowExpandColumnComponent, isStandalone: true, selector: \"ax-expand-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowExpandColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-expand-column',\n template: `\n <ng-template #header></ng-template>\n <ng-template #cell let-row>\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 1.5\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i class=\"fas fa-chevron-down\"></i>\n } @else {\n <i class=\"fas fa-chevron-right\"></i>\n }\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowExpandColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowExpandColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWV4cGFuZC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctZXhwYW5kLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRTs7OztHQUlHO0FBbUNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSwwQkFBMEI7SUFsQzFFOztRQW1DVSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTdCLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO0tBK0RyQztJQXZEQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQVE7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQWpFVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiwrSEFUMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxXQUFXLEVBQUUsMEJBQTBCO2FBQ3hDO1lBQ0QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRTtTQUNsRSw4VkE3QlM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JUOzsyRkFZVSwwQkFBMEI7a0JBbEN0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsV0FBVyw0QkFBNEI7eUJBQ3hDO3dCQUNELEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLDRCQUE0QixFQUFFO3FCQUNsRTtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztpQkFDdEM7OEJBVVMsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxNQUFNO2dCQWNULHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQWNYLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4nO1xuXG4vKipcbiAqIENvbHVtbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjaGVja2JveGVzIGZvciByb3cgc2VsZWN0aW9uIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1leHBhbmQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtcm93PlxuICAgICAgPGRpdlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlRXhwYW5kUm93KHJvdylcIlxuICAgICAgICBjbGFzcz1cImF4LWV4cGFuZC1oYW5kbGVyXCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmctaW5saW5lLXN0YXJ0LnJlbV09XCJyb3cuZGF0YT8uX19tZXRhX18/LmxldmVsICogMS41XCJcbiAgICAgID5cbiAgICAgICAgQGlmIChsb2FkaW5nUm93KCkgPT09IHJvdykge1xuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXItdGhpcmQgYXgtYW5pbWF0ZS10d1NwaW4gYXgtYW5pbWF0ZS1pbmZpbml0ZVwiPjwvaT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChyb3cuZGF0YT8uX19tZXRhX18/LmV4cGFuZGVkKSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQgfSxcbiAgXSxcbiAgaW5wdXRzOiBbJ3dpZHRoJywgJ2NhcHRpb24nLCAnZml4ZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByaXZhdGUgZ3JpZCA9IGluamVjdChBWEJhc2VEYXRhVGFibGUpO1xuXG4gIHByb3RlY3RlZCBsb2FkaW5nUm93ID0gc2lnbmFsKG51bGwpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIGNlbGxzIGluIHRoZSBjb2x1bW4uXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciB0aGUgY29sdW1uIGhlYWRlci5cbiAgICovXG4gIG92ZXJyaWRlIGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBmb290ZXIuXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2wtZXhwYW5kJztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV4cGFuZFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQocm93KTtcbiAgICBhd2FpdCB0aGlzLmdyaWQuZXhwYW5kUm93KHJvdyk7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBsb2FkaW5nIGlzIGVuYWJsZWQgZm9yIHRoZSBjb2x1bW4uXG4gICAqL1xuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=","import { AXComponent } from '@acorex/cdk/common';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying row indices in a data table column.\n *\n * @category Components\n */\nexport class AXRowIndexColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n this.unsubscriber = inject(AXUnsubscriber);\n /**\n * Determines whether the index should be zero-padded.\n * @defaultValue false\n */\n this.padZero = false;\n /**\n * @ignore\n */\n this.formatCount = 1;\n /**\n * Disables sorting for this column.\n *\n * @defaultValue false\n */\n this.allowSorting = false;\n }\n /**\n * Provides the cell template for custom rendering if defined.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Provides the header template for custom rendering if defined.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Returns the template used for rendering the footer of the column.\n * This method returns the `footerTemplate` if it is provided; otherwise, it defaults to the `_contentFooterTemplate`. This allows for custom footer content while falling back to a default template if no custom template is specified.\n */\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier name for the column.\n */\n get name() {\n return 'cl-inx';\n }\n /**\n * @ignore\n */\n ngOnInit() {\n if (this.padZero) {\n this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.formatCount = c.totalCount.toString().length;\n });\n }\n }\n /**\n * Indicates whether loading is enabled for this component.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-index-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXRowIndexColumnComponent, isStandalone: true, selector: \"ax-index-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\", footerTemplate: \"footerTemplate\", padZero: \"padZero\" }, providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowIndexColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-index-column',\n template: `<ng-template #header></ng-template>\n <ng-template #cell let-row>\n {{ row.rowIndex + 1 | format: 'number' : { zeroPadLength: this.formatCount, thousandSeparator: false } | async }}\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n AXUnsubscriber,\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowIndexColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowIndexColumnComponent },\n ],\n inputs: ['width', 'caption', 'fixed'],\n imports: [AsyncPipe, AXFormatPipe],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], padZero: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWluZGV4LWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9jb2x1bW5zL3Jvdy1pbmRleC1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFakU7Ozs7R0FJRztBQXFCSCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsMEJBQTBCO0lBcEJ6RTs7UUFxQlUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQXVEOUM7OztXQUdHO1FBRUgsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVoQjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBYTFCOzs7O1dBSUc7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztLQWUvQjtJQTFGQzs7T0FFRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUFhLG9CQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBY0Q7OztPQUdHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBY0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQVNEOztPQUVHO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxRQUFRO1FBQ25CLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs4R0FuR1UseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0xBWHpCO1lBQ1QsY0FBYztZQUNkO2dCQUNFLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFdBQVcsRUFBRSx5QkFBeUI7YUFDdkM7WUFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFO1NBQ2pFLDhWQWRTOzs7O3lDQUk2Qix1REFZN0IsU0FBUyx5Q0FBRSxZQUFZOzsyRkFFdEIseUJBQXlCO2tCQXBCckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7eUNBSTZCO29CQUN2QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDVCxjQUFjO3dCQUNkOzRCQUNFLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFdBQVcsMkJBQTJCO3lCQUN2Qzt3QkFDRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVywyQkFBMkIsRUFBRTtxQkFDakU7b0JBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7aUJBQ25DOzhCQVNTLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsTUFBTTtnQkFjVCxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFjWixjQUFjO3NCQURwQixLQUFLO2dCQU9FLHNCQUFzQjtzQkFEN0IsU0FBUzt1QkFBQyxRQUFRO2dCQXVCbkIsT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhGb3JtYXRQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUgfSBmcm9tICcuLi9iYXNlLWRhdGEtdGFibGUuY2xhc3MnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUtY29sdW1uJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgcm93IGluZGljZXMgaW4gYSBkYXRhIHRhYmxlIGNvbHVtbi5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1pbmRleC1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYDxuZy10ZW1wbGF0ZSAjaGVhZGVyPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICB7eyByb3cucm93SW5kZXggKyAxIHwgZm9ybWF0OiAnbnVtYmVyJyA6IHsgemVyb1BhZExlbmd0aDogdGhpcy5mb3JtYXRDb3VudCwgdGhvdXNhbmRTZXBhcmF0b3I6IGZhbHNlIH0gfCBhc3luYyB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIEFYVW5zdWJzY3JpYmVyLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQsXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSb3dJbmRleENvbHVtbkNvbXBvbmVudCB9LFxuICBdLFxuICBpbnB1dHM6IFsnd2lkdGgnLCAnY2FwdGlvbicsICdmaXhlZCddLFxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBBWEZvcm1hdFBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJvd0luZGV4Q29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY2VsbCcpXG4gIHByaXZhdGUgX2NlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBjZWxsIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdoZWFkZXInKVxuICBwcml2YXRlIF9jb250ZW50SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB0aGUgaGVhZGVyIHRlbXBsYXRlIGZvciBjdXN0b20gcmVuZGVyaW5nIGlmIGRlZmluZWQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGVtcGxhdGUgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmb290ZXIgY29udGVudCBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgZm9vdGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGBmb290ZXJUZW1wbGF0ZWAgaWYgaXQgaXMgcHJvdmlkZWQ7IG90aGVyd2lzZSwgaXQgZGVmYXVsdHMgdG8gdGhlIGBfY29udGVudEZvb3RlclRlbXBsYXRlYC4gVGhpcyBhbGxvd3MgZm9yIGN1c3RvbSBmb290ZXIgY29udGVudCB3aGlsZSBmYWxsaW5nIGJhY2sgdG8gYSBkZWZhdWx0IHRlbXBsYXRlIGlmIG5vIGN1c3RvbSB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBuYW1lIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLWlueCc7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBpbmRleCBzaG91bGQgYmUgemVyby1wYWRkZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhZFplcm8gPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXRDb3VudCA9IDE7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wYWRaZXJvKSB7XG4gICAgICB0aGlzLmdyaWQuZGF0YVNvdXJjZS5vbkNoYW5nZWQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtYXRDb3VudCA9IGMudG90YWxDb3VudC50b1N0cmluZygpLmxlbmd0aDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgb3ZlcnJpZGUgYWxsb3dTb3J0aW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gJ2F4LWluZGV4LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXBaseDataTable } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from './data-table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/check-box\";\n/**\n * Column component that provides checkboxes for row selection in a data table.\n *\n * @category Components\n */\nexport class AXRowSelectColumnComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.grid = inject(AXBaseDataTable);\n }\n /**\n * Gets the template used to render cells in the column.\n */\n get renderCellTemplate() {\n return this._cellTemplate;\n }\n /**\n * Gets the template used to render the column header.\n */\n get renderHeaderTemplate() {\n return this._contentHeaderTemplate;\n }\n /**\n * Gets the template used to render the column footer.\n */\n get renderFooterTemplate() {\n return this._contentFooterTemplate;\n }\n /**\n * Gets the unique identifier for the column.\n */\n get name() {\n return 'cl-select';\n }\n /**\n * @ignore\n */\n getDataSourceKey() {\n return this.grid.dataSource.config.key || 'id';\n }\n /**\n * @ignore\n */\n isSelected(item) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);\n }\n /**\n * @ignore\n */\n checkAllSelected(rows) {\n const key = this.getDataSourceKey();\n const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));\n if (!rows || !rows.length || !selectedRowKeys.length) {\n return false;\n }\n const allSelected = rows.every((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n const anySelected = rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));\n if (allSelected) {\n return true;\n }\n if (anySelected) {\n return null;\n }\n return false;\n }\n /**\n * @ignore\n */\n handleChange(e, item) {\n if (e.isUserInteraction) {\n if (this.isSelected(item)) {\n this.grid.unSelectRows(item);\n }\n else {\n this.grid.selectRows(item);\n }\n }\n }\n /**\n * @ignore\n */\n handleSelectAll(e, rows) {\n if (e.isUserInteraction) {\n if (this.checkAllSelected(rows)) {\n this.grid.unSelectRows(...rows);\n }\n else {\n this.grid.selectRows(...rows);\n }\n }\n }\n /**\n * Indicates whether loading is enabled for the column.\n */\n get loadingEnabled() {\n return false;\n }\n /**\n * Gets the CSS class applied to the component.\n */\n get cssClass() {\n return 'ax-select-column';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXRowSelectColumnComponent, isStandalone: true, selector: \"ax-select-column\", inputs: { width: \"width\", caption: \"caption\", fixed: \"fixed\" }, providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ], viewQueries: [{ propertyName: \"_cellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i2.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXRowSelectColumnComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ax-select-column',\n template: `<ng-template #header let-col>\n <ax-check-box\n [ngModel]=\"checkAllSelected(col.rows)\"\n [indeterminate]=\"true\"\n (onValueChanged)=\"handleSelectAll($event, col.rows)\"\n ></ax-check-box>\n <!-- <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n (change)=\"handleSelectAll(col.rows)\"\n [indeterminate]=\"checkAnySelected(col.rows)\"\n [checked]=\"checkAllSelected(col.rows)\"\n /> -->\n </ng-template>\n <ng-template #cell let-row>\n <ax-check-box\n [disabled]=\"!row.data\"\n (onValueChanged)=\"handleChange($event, row.data)\"\n [ngModel]=\"isSelected(row.data)\"\n ></ax-check-box>\n <!-- <input class=\"ax-checkbox\" type=\"checkbox\" [disabled]=\"!row.data\" (change)=\"handleChange(row.data)\" [checked]=\"isSelected(row.data)\" /> -->\n </ng-template>\n <ng-template #footer></ng-template> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXDataTableColumnComponent,\n useExisting: AXRowSelectColumnComponent,\n },\n { provide: AXComponent, useExisting: AXRowSelectColumnComponent },\n ],\n imports: [FormsModule, AXCheckBoxModule],\n inputs: ['width', 'caption', 'fixed'],\n }]\n }], propDecorators: { _cellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXNlbGVjdC1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvY29sdW1ucy9yb3ctc2VsZWN0LWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFFakU7Ozs7R0FJRztBQXNDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsMEJBQTBCO0lBckMxRTs7UUFzQ1UsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQW1JeEM7SUEzSEM7O09BRUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBYSxvQkFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJ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UyxhQUFhO3NCQURwQixTQUFTO3VCQUFDLE1BQU07Z0JBY1Qsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVE7Z0JBY1gsc0JBQXNCO3NCQUQ3QixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENvbXBvbmVudCwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NoZWNrLWJveCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS10YWJsZS5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS1jb2x1bW4nO1xuXG4vKipcbiAqIENvbHVtbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBjaGVja2JveGVzIGZvciByb3cgc2VsZWN0aW9uIGluIGEgZGF0YSB0YWJsZS5cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zZWxlY3QtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGA8bmctdGVtcGxhdGUgI2hlYWRlciBsZXQtY29sPlxuICAgICAgPGF4LWNoZWNrLWJveFxuICAgICAgICBbbmdNb2RlbF09XCJjaGVja0FsbFNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cInRydWVcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlU2VsZWN0QWxsKCRldmVudCwgY29sLnJvd3MpXCJcbiAgICAgID48L2F4LWNoZWNrLWJveD5cbiAgICAgIDwhLS0gPGlucHV0XG4gICAgICAgIGNsYXNzPVwiYXgtY2hlY2tib3hcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbChjb2wucm93cylcIlxuICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJjaGVja0FueVNlbGVjdGVkKGNvbC5yb3dzKVwiXG4gICAgICAgIFtjaGVja2VkXT1cImNoZWNrQWxsU2VsZWN0ZWQoY29sLnJvd3MpXCJcbiAgICAgIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICA8YXgtY2hlY2stYm94XG4gICAgICAgIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlKCRldmVudCwgcm93LmRhdGEpXCJcbiAgICAgICAgW25nTW9kZWxdPVwiaXNTZWxlY3RlZChyb3cuZGF0YSlcIlxuICAgICAgPjwvYXgtY2hlY2stYm94PlxuICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJheC1jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIFtkaXNhYmxlZF09XCIhcm93LmRhdGFcIiAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZShyb3cuZGF0YSlcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHJvdy5kYXRhKVwiIC8+IC0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT4gYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgQVhDaGVja0JveE1vZHVsZV0sXG4gIGlucHV0czogWyd3aWR0aCcsICdjYXB0aW9uJywgJ2ZpeGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUm93U2VsZWN0Q29sdW1uQ29tcG9uZW50IGV4dGVuZHMgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQge1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBjZWxscyBpbiB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcGxhdGUgdXNlZCB0byByZW5kZXIgdGhlIGNvbHVtbiBoZWFkZXIuXG4gICAqL1xuICBvdmVycmlkZSBnZXQgcmVuZGVySGVhZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBsYXRlIHVzZWQgdG8gcmVuZGVyIHRoZSBjb2x1bW4gZm9vdGVyLlxuICAgKi9cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGVudEZvb3RlclRlbXBsYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NsLXNlbGVjdCc7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkLmRhdGFTb3VyY2UuY29uZmlnLmtleSB8fCAnaWQnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNTZWxlY3RlZChpdGVtOiB1bmtub3duKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuICAgIHJldHVybiBpdGVtICE9IG51bGwgJiYgc2VsZWN0ZWRSb3dLZXlzLmluY2x1ZGVzKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW1ba2V5XSA6IGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2tBbGxTZWxlY3RlZChyb3dzKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXREYXRhU291cmNlS2V5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93cy5tYXAoKHNyKSA9PiAodHlwZW9mIHNyID09PSAnb2JqZWN0JyA/IHNyW2tleV0gOiBzcikpO1xuXG4gICAgaWYgKCFyb3dzIHx8ICFyb3dzLmxlbmd0aCB8fCAhc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFNlbGVjdGVkID0gcm93cy5ldmVyeSgoZWxlbWVudCkgPT5cbiAgICAgIHNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyh0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcgPyBlbGVtZW50W2tleV0gOiBlbGVtZW50KSxcbiAgICApO1xuXG4gICAgY29uc3QgYW55U2VsZWN0ZWQgPSByb3dzLnNvbWUoKGVsZW1lbnQpID0+XG4gICAgICBzZWxlY3RlZFJvd0tleXMuaW5jbHVkZXModHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnID8gZWxlbWVudFtrZXldIDogZWxlbWVudCksXG4gICAgKTtcblxuICAgIGlmIChhbGxTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChhbnlTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNoYW5nZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5ncmlkLnVuU2VsZWN0Um93cyhpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNlbGVjdEFsbChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50LCByb3dzOiBhbnkpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgaWYgKHRoaXMuY2hlY2tBbGxTZWxlY3RlZChyb3dzKSkge1xuICAgICAgICB0aGlzLmdyaWQudW5TZWxlY3RSb3dzKC4uLnJvd3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvd3MoLi4ucm93cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGxvYWRpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIGdldCBsb2FkaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQ1NTIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIG92ZXJyaWRlIGdldCBjc3NDbGFzcygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAnYXgtc2VsZWN0LWNvbHVtbic7XG4gIH1cbn1cbiJdfQ==","import { AXComponent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDataPagerComponent, AXDataPagerInfoComponent, AXDataPagerInputSelectorComponent, AXDataPagerNextButtonsComponent, AXDataPagerNumericSelectorComponent, AXDataPagerPageSizesComponent, AXDataPagerPrevButtonsComponent, } from '@acorex/components/data-pager';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkDrag, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { AsyncPipe, NgClass, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, DOCUMENT, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, computed, effect, inject, signal, untracked, } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for displaying and managing a data table with advanced features.\n *\n * @category Components\n */\nexport class AXDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n this._unsubscriber = inject(AXUnsubscriber);\n this._zone = inject(NgZone);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n /**\n * When true, shows the cell content as tooltip (title attribute) on hover.\n */\n this.title = false;\n /**\n * @ignore\n */\n this.displayedRows = signal([], ...(ngDevMode ? [{ debugName: \"displayedRows\" }] : []));\n /**\n * @ignore\n */\n this.page = signal(0, ...(ngDevMode ? [{ debugName: \"page\" }] : []));\n /**\n * @ignore\n */\n this.pageSize = signal(0, ...(ngDevMode ? [{ debugName: \"pageSize\" }] : []));\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.columnsList = signal([], ...(ngDevMode ? [{ debugName: \"columnsList\" }] : []));\n /**\n * @ignore\n */\n this.endFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'end'), ...(ngDevMode ? [{ debugName: \"endFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.startFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'start'), ...(ngDevMode ? [{ debugName: \"startFixedColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.normalColumnsList = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'), ...(ngDevMode ? [{ debugName: \"normalColumnsList\" }] : []));\n /**\n * @ignore\n */\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * Defines if alternative row styling should be applied.\n *\n * @defaultValue `true`\n */\n this.alternative = true;\n /**\n * Indicates if the table header should be displayed.\n *\n * @defaultValue `true`\n */\n this.showHeader = true;\n /**\n * Indicates if the table header should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedHeader = true;\n /**\n * Indicates if the table footer should be displayed.\n *\n * @defaultValue `false`\n */\n this.showFooter = false;\n /**\n * Indicates if the table footer should be fixed.\n *\n * @defaultValue `true`\n */\n this.fixedFooter = true;\n /**\n * Specifies the height of each item in the table.\n *\n * @defaultValue `40`\n */\n this.itemHeight = 40;\n /**\n * Enables or disables row reordering.\n *\n * @defaultValue `false`\n */\n this.allowReordering = false;\n /**\n * Enables or disables paging.\n *\n * @defaultValue `true`\n */\n this.paging = true;\n /**\n * Specifies how data should be fetched.\n *\n * @defaultValue `'auto'`\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for loading state.\n *\n * @defaultValue `{ enabled: true, animation: true }`\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * Emits when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Emits when a row is clicked.\n *\n * @event onRowClick\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits when a row is double-clicked.\n *\n * @event onRowDbClick\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Emits when the order of columns changes.\n *\n * @event onColumnsOrderChanged\n */\n this.onColumnsOrderChanged = new EventEmitter();\n /**\n * Emits when the size of columns changes.\n *\n * @event onColumnSizeChanged\n */\n this.onColumnSizeChanged = new EventEmitter();\n /**\n * Emits when page changes.\n *\n * @event onColumnSizeChanged\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * @ignore\n */\n this.isRefreshCalled = signal(false, ...(ngDevMode ? [{ debugName: \"isRefreshCalled\" }] : []));\n /**\n * @ignore\n */\n this.#effect = effect(() => {\n if (this.customDataPager) {\n this.customDataPager.total = this.dataSource.totalCount;\n this.customDataPager.size = this.dataSource.pageSize;\n this.customDataPager.isLoading = this.isLoading();\n }\n }, ...(ngDevMode ? [{ debugName: \"#effect\" }] : []));\n /**\n * @ignore\n */\n this.onResizeColumnMove = (event) => {\n const diffX = event.pageX - this.resizeColumnProp.startX;\n const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;\n this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;\n this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);\n };\n /**\n * @ignore\n */\n this.onResizeColumnEnd = () => {\n if (isPlatformBrowser(this.platformID)) {\n this.document.removeEventListener('mousemove', this.onResizeColumnMove);\n this.document.removeEventListener('mouseup', this.onResizeColumnEnd);\n }\n const newWidth = parseInt(this.resizeColumnProp.thElement.attributes.getNamedItem('new-width')?.value);\n this.columns.get(this.resizeColumnProp.columnIndex).width = `${Math.max(100, newWidth)}px`;\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: this.resizeColumnProp.columnIndex,\n width: this.columns.get(this.resizeColumnProp.columnIndex).width,\n dataField: this.columns.get(this.resizeColumnProp.columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n this.resetResizingProcess();\n };\n }\n /**\n * Gets the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits the change event.\n *\n * @param v - The row to be focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n /**\n * Returns true if in manual mode and no data has been loaded yet.\n */\n get showNoDataLoadedYet() {\n return this.fetchDataMode === 'manual' && !this.isRefreshCalled();\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n if (this.customDataPager) {\n this.applyDataPagerMethods();\n }\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n this.dataSource.useCache = false;\n if (this.fetchDataMode == 'auto') {\n this.dataSource.setPage(0);\n }\n this.displayedRows.set(new Array(this.dataSource.pageSize));\n this.totalRows = this.dataSource.items.length;\n this.dataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.isLoading.set(data);\n });\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n this.displayedRows.set(data.items.filter((item) => !item[this.parentField]));\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n });\n this.dataSource.onItemExpanded.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { expandedItem, children } = data;\n // If children is null, it means we only want to toggle row details without managing children\n if (children === null) {\n this.displayedRows.update((prev) => this.toggleExpandedState(prev, expandedItem));\n }\n else {\n this.displayedRows.update((prev) => this.toggleExpanded(prev, expandedItem, children));\n }\n });\n this.dataSource.onItemRefreshChildren.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n const { id } = data;\n this.refreshExpandedItem(id);\n });\n this.pageSize.set(this.dataSource.pageSize);\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this.calculateStickyColumnsPositions();\n this.columnsList.set(this.columns.toArray());\n this.columns.changes.pipe(this._unsubscriber.takeUntilDestroy).subscribe((cols) => {\n this.columnsList.set(cols.toArray());\n });\n // Auto-fit columns with width='auto' after data load\n this.dataSource.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((data) => {\n if (data.items.length > 0) {\n // Delay to ensure DOM is ready\n setTimeout(() => {\n this.autoFitColumnsWithAutoWidth();\n }, 100);\n }\n });\n }\n /**\n * Returns the display text for a cell. Used for the native title (tooltip) on each cell.\n */\n getCellTooltipText(column, rowData) {\n if (rowData == null || typeof rowData !== 'object')\n return '';\n if (column instanceof AXDataTableTextColumnComponent) {\n return column.getCellDisplayText(rowData);\n }\n const col = column;\n if (col.dataField != null && col.dataField in rowData) {\n const v = rowData[col.dataField];\n return v != null ? String(v) : '';\n }\n return '';\n }\n /**\n * @ignore\n */\n #effect;\n /**\n * Toggles the expanded state of a row without managing children.\n * Used for row details template without nested hierarchy.\n *\n * @param rows - The array of rows to search in\n * @param expandedItem - The item to toggle\n * @returns Updated rows array with toggled state\n */\n toggleExpandedState(rows, expandedItem) {\n return rows.map((item) => {\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n };\n }\n return item;\n });\n }\n toggleExpanded(rows, expandedItem, children) {\n return rows.map((item) => {\n children.forEach((c) => {\n if (!c.__meta__) {\n c.__meta__ = { level: (expandedItem?.__meta__?.level ?? 0) + 1 };\n }\n });\n if (expandedItem[this.getDataSourceKey()] === item[this.getDataSourceKey()]) {\n const isExpanded = !item?.__meta__?.expanded;\n return {\n ...item,\n __meta__: { expanded: isExpanded, level: expandedItem?.__meta__?.level ?? 0 },\n children: children ? this.toggleExpanded(children, expandedItem, item.children || []) : null,\n };\n }\n else if (item.children) {\n return { ...item, children: this.toggleExpanded(item.children, expandedItem, children) };\n }\n return item;\n });\n }\n async refreshExpandedItem(id) {\n const newChildren = await this.dataSource.getItemsByFilter({\n field: this.parentField,\n operator: { type: 'equal' },\n value: id,\n });\n this.displayedRows.update((prev) => this.updateChildren(prev, id, newChildren.items));\n }\n updateChildren(items, id, newChildren) {\n return items.map((item) => {\n if (item[this.getDataSourceKey()] === id) {\n newChildren.forEach((child) => {\n child.__meta__ = { ...child.__meta__, level: (item.__meta__?.level || 0) + 1 };\n });\n return { ...item, children: cloneDeep(newChildren) };\n }\n else if (item.children) {\n return { ...item, children: this.updateChildren(item.children, id, newChildren) };\n }\n return item;\n });\n }\n /**\n * @ignore\n */\n drop(event) {\n const clonedColumns = [...this.columnsList()];\n moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);\n this.columnsList.set(clonedColumns);\n this.onColumnsOrderChanged.emit({ component: this, data: { event }, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n handleChangePage(event) {\n this.onPageChanged.emit(event);\n if (event.isUserInteraction) {\n const pageChanged = event.page - 1 != this.page();\n const pageSizeChanged = event.take != this.pageSize();\n if (pageChanged || pageSizeChanged) {\n if (pageChanged) {\n this.page.set(event.page - 1);\n this.dataSource.setPage(this.page());\n }\n if (pageSizeChanged) {\n this.pageSize.set(event.take);\n this.dataSource.setPageSize(this.pageSize());\n }\n // Update displayed rows and data source\n this.displayedRows.set(new Array(this.pageSize()));\n }\n }\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({ component: this, data: item, isUserInteraction: true });\n }\n /**\n * @ignore\n */\n applyDataPagerMethods() {\n this.customDataPager.onChanged\n .pipe(this._unsubscriber.takeUntilDestroy)\n .subscribe((event) => this.handleChangePage(event));\n this.customDataPager.displayMode = 'custom';\n }\n /**\n * Handles the click event on a column header.\n * Toggles the sorting direction or removes the sort if already sorted.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({ field: column.dataField, dir: 'asc' });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * Refreshes the data table with optional reset options.\n *\n * @param options - Configuration options for refresh operation.\n * @param options.reset - Whether to reset pagination state.\n * @returns void - No return value.\n */\n refresh(options = { reset: true }) {\n this.dataSource.refresh(options);\n const isRefreshCalled = untracked(() => this.isRefreshCalled());\n if (this.fetchDataMode === 'manual' && !isRefreshCalled) {\n this.isRefreshCalled.set(true);\n }\n if (this.dataPager && options.reset) {\n this.dataPager.goFirstPage();\n }\n }\n /**\n * @ignore\n */\n calculateRowIndex(index) {\n return this.dataSource.pageSize * this.page() + index;\n }\n /**\n * Handles double-click on resize handle to auto-fit column width.\n *\n * @param event - The mouse event from the double-click\n * @param columnIndex - The index of the column to auto-fit\n * @ignore\n */\n onResizeHandlerDoubleClick(event, columnIndex) {\n event.preventDefault();\n event.stopPropagation();\n this.autoFitColumn(columnIndex);\n }\n /**\n * @ignore\n */\n onResizeColumnStart(event, columnIndex) {\n this.onColumnSizeChanged.emit({\n type: 'start',\n data: {\n columnIndex: columnIndex,\n width: this.columns.get(columnIndex).width,\n dataField: this.columns.get(columnIndex).name,\n },\n isUserInteraction: true,\n component: this,\n });\n event.preventDefault();\n event.stopPropagation();\n this.resizeColumnProp.startX = event.pageX;\n this.resizeColumnProp.thElement = event.target.parentElement;\n this.resizeColumnProp.startWidth = parseInt(this.resizeColumnProp.thElement.style.width);\n this.resizeColumnProp.columnIndex = columnIndex;\n if (isPlatformBrowser(this.platformID)) {\n this._zone.runOutsideAngular(() => {\n this.document.addEventListener('mousemove', this.onResizeColumnMove);\n this.document.addEventListener('mouseup', this.onResizeColumnEnd);\n });\n }\n }\n /**\n * @ignore\n */\n resetResizingProcess() {\n this.resizeColumnProp.thElement.removeAttribute('new-width');\n this.resizeColumnProp = { startX: 0, startWidth: 0, columnIndex: 0, newColumnWidth: 0, thElement: null };\n }\n /**\n * @ignore\n */\n calculateStickyColumnsPositions() {\n let accumulatedWidthFromStart = 0;\n let lastStartColumn;\n this.columns.forEach((column) => {\n const width = parseInt(column.width);\n if (column.fixed === 'start' && !isNaN(width)) {\n column['stickyStart'] = accumulatedWidthFromStart + 'px';\n lastStartColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromStart += width;\n }\n });\n if (lastStartColumn)\n lastStartColumn['isLastFixedColumn'] = true;\n let accumulatedWidthFromEnd = 0;\n let firstEndColumn;\n for (let i = this.columns.length - 1; i >= 0; i--) {\n const column = this.columns.get(i);\n const width = parseInt(column.width);\n if (column.fixed === 'end' && !isNaN(width)) {\n column['stickyEnd'] = accumulatedWidthFromEnd + 'px';\n firstEndColumn = column;\n }\n if (!isNaN(width)) {\n accumulatedWidthFromEnd += width;\n }\n }\n if (firstEndColumn)\n firstEndColumn['isFirstFixedColumn'] = true;\n }\n /**\n * Auto-fits columns that have width='auto'.\n * Called automatically after data load.\n *\n * @ignore\n */\n autoFitColumnsWithAutoWidth() {\n const autoWidthColumns = [];\n this.columns.forEach((column, index) => {\n // Only auto-fit if width is explicitly set to 'auto'\n if (column.width === 'auto') {\n autoWidthColumns.push(index);\n try {\n this.autoFitColumn(index, { maxWidth: 500 });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n }\n });\n if (autoWidthColumns.length > 0) {\n console.warn(`Auto-fitted ${autoWidthColumns.length} column(s) with width='auto': indices ${autoWidthColumns.join(', ')}`);\n }\n }\n /**\n * Auto-fits all columns width based on their content.\n *\n * @param options - Configuration options\n * @param options.skipFixed - If true, skips fixed columns (default: true)\n * @param options.skipLoading - If true, skips if data is loading (default: true)\n * @param options.maxWidth - Maximum width for any column in pixels (default: 500)\n * @returns void\n */\n autoFitAllColumns(options = {}) {\n const { skipFixed = true, skipLoading = true, maxWidth = 500 } = options;\n // Skip if loading\n if (skipLoading && this.isLoading()) {\n console.warn('Cannot auto-fit columns while data is loading');\n return;\n }\n // Auto-fit each column\n this.columns.forEach((column, index) => {\n // Skip fixed columns if requested\n if (skipFixed && column.fixed) {\n return;\n }\n // Skip if column doesn't allow resizing\n if (!column.allowResizing) {\n return;\n }\n try {\n this.autoFitColumn(index, { maxWidth });\n }\n catch (error) {\n console.error(`Failed to auto-fit column ${index}:`, error);\n }\n });\n }\n /**\n * Auto-fits a column width based on its content.\n * Similar to Excel's \"AutoFit Column Width\" feature.\n * Uses an invisible helper table to measure actual content width without affecting the main table.\n *\n * @param columnIndex - The index of the column to auto-fit (0-based, based on columns QueryList)\n * @param options - Configuration options\n * @param options.maxWidth - Maximum width for the column in pixels (default: none)\n * @returns void\n */\n autoFitColumn(columnIndex, options = {}) {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const column = this.columns.get(columnIndex);\n if (!column) {\n console.warn(`Column at index ${columnIndex} not found`);\n return;\n }\n const hostElement = this.getHostElement();\n if (!hostElement) {\n return;\n }\n const mainTable = hostElement.querySelector('table');\n if (!mainTable) {\n return;\n }\n // Find actual column index in rendered table (accounting for fixed columns)\n const allColumns = [...this.startFixedColumnsList(), ...this.normalColumnsList(), ...this.endFixedColumnsList()];\n const actualColumnIndex = allColumns.findIndex((c) => c === column);\n if (actualColumnIndex === -1) {\n console.warn('Column not found in rendered table');\n return;\n }\n // Create invisible helper table\n const helperTable = this.document.createElement('table');\n helperTable.style.position = 'absolute';\n helperTable.style.visibility = 'hidden';\n helperTable.style.tableLayout = 'auto';\n helperTable.style.width = 'auto';\n helperTable.style.top = '-9999px';\n helperTable.style.left = '-9999px';\n // Copy styles from main table\n const mainTableStyle = this.document.defaultView?.getComputedStyle(mainTable);\n if (mainTableStyle) {\n helperTable.style.fontSize = mainTableStyle.fontSize;\n helperTable.style.fontFamily = mainTableStyle.fontFamily;\n helperTable.style.fontWeight = mainTableStyle.fontWeight;\n }\n this.document.body.appendChild(helperTable);\n let maxWidth = 0;\n try {\n // Measure header cell\n const headerRow = mainTable.querySelector('thead tr');\n if (headerRow) {\n const headerCells = headerRow.querySelectorAll('th');\n if (headerCells.length > actualColumnIndex) {\n const headerCell = headerCells[actualColumnIndex];\n // Clone header cell to helper table\n const helperThead = this.document.createElement('thead');\n const helperTr = this.document.createElement('tr');\n const helperTh = headerCell.cloneNode(true);\n helperTh.style.width = 'auto';\n helperTh.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTh);\n helperThead.appendChild(helperTr);\n helperTable.appendChild(helperThead);\n // Force layout calculation\n const headerWidth = helperTh.offsetWidth;\n maxWidth = Math.max(maxWidth, headerWidth);\n helperTable.removeChild(helperThead);\n }\n }\n // Measure body cells\n const bodyRows = mainTable.querySelectorAll('tbody tr:not(.empty-row)');\n const helperTbody = this.document.createElement('tbody');\n helperTable.appendChild(helperTbody);\n // Sample first 20 rows for performance (you can adjust this)\n const sampleSize = Math.min(20, bodyRows.length);\n for (let i = 0; i < sampleSize; i++) {\n const row = bodyRows[i];\n const cells = row.querySelectorAll('td');\n if (cells.length > actualColumnIndex) {\n const cell = cells[actualColumnIndex];\n // Clone cell to helper table\n const helperTr = this.document.createElement('tr');\n const helperTd = cell.cloneNode(true);\n helperTd.style.width = 'auto';\n helperTd.style.whiteSpace = 'nowrap';\n helperTr.appendChild(helperTd);\n helperTbody.appendChild(helperTr);\n // Force layout calculation\n const cellWidth = helperTd.offsetWidth;\n maxWidth = Math.max(maxWidth, cellWidth);\n helperTbody.removeChild(helperTr);\n }\n }\n // Add some padding for better UX\n let finalWidth = Math.max(maxWidth + 40, 100); // Minimum 100px, add 40px padding\n // Apply max width if specified\n if (options.maxWidth) {\n finalWidth = Math.min(finalWidth, options.maxWidth);\n }\n // Set column width\n column.width = `${finalWidth}px`;\n // Trigger change detection to update the view\n this.columnsList.set([...this.columnsList()]);\n // Recalculate sticky positions if column is fixed\n if (column.fixed) {\n setTimeout(() => {\n this.calculateStickyColumnsPositions();\n }, 0);\n }\n // Emit column size changed event\n this.onColumnSizeChanged.emit({\n type: 'end',\n data: {\n columnIndex: columnIndex,\n width: column.width,\n dataField: column.name,\n },\n isUserInteraction: true,\n component: this,\n });\n }\n finally {\n // Clean up helper table\n if (helperTable.parentNode) {\n this.document.body.removeChild(helperTable);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXDataTableComponent, isStandalone: true, selector: \"ax-data-table\", inputs: { dataSource: \"dataSource\", selectedRows: \"selectedRows\", parentField: \"parentField\", rowDetailsTemplate: \"rowDetailsTemplate\", title: \"title\", rowTemplate: \"rowTemplate\", emptyTemplate: \"emptyTemplate\", noDataTemplate: \"noDataTemplate\", alternative: \"alternative\", showHeader: \"showHeader\", fixedHeader: \"fixedHeader\", showFooter: \"showFooter\", fixedFooter: \"fixedFooter\", itemHeight: \"itemHeight\", allowReordering: \"allowReordering\", paging: \"paging\", fetchDataMode: \"fetchDataMode\", loading: \"loading\", focusedRow: \"focusedRow\" }, outputs: { selectedRowsChange: \"selectedRowsChange\", focusedRowChange: \"focusedRowChange\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", onColumnsOrderChanged: \"onColumnsOrderChanged\", onColumnSizeChanged: \"onColumnSizeChanged\", onPageChanged: \"onPageChanged\" }, host: { attributes: { \"ngSkipHydration\": \"true\" } }, providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], queries: [{ propertyName: \"customDataPager\", first: true, predicate: AXDataPagerComponent, descendants: true, static: true }, { propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"dataPager\", first: true, predicate: [\"dataPager\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0;position:relative}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-data-table-cell-tooltip-wrapper{display:block;position:relative;width:100%;height:100%;min-height:inherit}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\" }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXDataPagerComponent, selector: \"ax-data-pager\", inputs: [\"value\", \"name\", \"disabled\", \"readonly\", \"isLoading\", \"size\", \"total\", \"displayMode\"], outputs: [\"valueChange\", \"onValueChanged\", \"disabledChange\", \"readonlyChange\", \"displayModeChange\", \"onChanged\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDataPagerNumericSelectorComponent, selector: \"ax-data-pager-numeric-selector\" }, { kind: \"component\", type: AXDataPagerPageSizesComponent, selector: \"ax-data-pager-page-sizes\", inputs: [\"sizes\"] }, { kind: \"component\", type: AXDataPagerPrevButtonsComponent, selector: \"ax-data-pager-prev-buttons\" }, { kind: \"component\", type: AXDataPagerInputSelectorComponent, selector: \"ax-data-pager-input-selector\" }, { kind: \"component\", type: AXDataPagerNextButtonsComponent, selector: \"ax-data-pager-next-buttons\" }, { kind: \"component\", type: AXDataPagerInfoComponent, selector: \"ax-data-pager-info\", inputs: [\"text\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-data-table', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { ngSkipHydration: 'true' }, inputs: ['dataSource', 'selectedRows', 'parentField', 'rowDetailsTemplate', 'title'], outputs: ['selectedRowsChange'], providers: [\n { provide: AXBaseDataTable, useExisting: AXDataTableComponent },\n AXUnsubscriber,\n { provide: AXComponent, useExisting: AXDataTableComponent },\n ], imports: [\n NgTemplateOutlet,\n NgClass,\n CdkDropList,\n CdkScrollable,\n CdkDrag,\n AXDecoratorIconComponent,\n AXSkeletonComponent,\n AXDataPagerComponent,\n AXDecoratorGenericComponent,\n AXDataPagerNumericSelectorComponent,\n AXDataPagerPageSizesComponent,\n AXDataPagerPrevButtonsComponent,\n AXDataPagerInputSelectorComponent,\n AXDataPagerNextButtonsComponent,\n AXDataPagerInfoComponent,\n AXButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXTooltipDirective\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<div class=\\\"ax-data-table-wrapper\\\">\\n <table>\\n @if (showHeader) {\\n <thead [ngClass]=\\\"{ 'ax-data-table-sticky-header': fixedHeader }\\\">\\n <tr\\n [cdkDropListDisabled]=\\\"!allowReordering\\\"\\n cdkDropList\\n cdkScrollable\\n cdkDropListOrientation=\\\"horizontal\\\"\\n (cdkDropListDropped)=\\\"drop($event)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-start\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <th\\n cdkDrag\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </th>\\n }\\n <th></th>\\n @for (c of endFixedColumnsList(); track $index) {\\n <th\\n cdkDrag\\n [cdkDragDisabled]=\\\"true\\\"\\n cdkDragLockAxis=\\\"x\\\"\\n class=\\\"ax-data-table-head-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </th>\\n }\\n </tr>\\n </thead>\\n }\\n <tbody [ngClass]=\\\"{ 'ax-data-table-row-alternative': alternative }\\\">\\n @if (showNoDataLoadedYet) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (noDataTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"noDataTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-data-yet' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else if (!displayedRows().length) {\\n <tr style=\\\"display: inherit\\\">\\n <td class=\\\"ax-data-table-empty-data\\\" [attr.colspan]=\\\"columnsList().length + 1\\\">\\n @if (emptyTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"emptyTemplate\\\"></ng-container>\\n } @else {\\n <span>{{ '@acorex:common.general.no-record' | translate | async }}</span>\\n }\\n </td>\\n </tr>\\n } @else {\\n @for (row of displayedRows(); let rowIndex = $index; track rowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row, rowIndex } }\\\"\\n ></ng-container>\\n }\\n\\n <ng-template #rowTemp let-data=\\\"data\\\">\\n @if (rowTemplate) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && data.row === focusedRow\\\"\\n [attr.data-index]=\\\"data.rowIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(data.row)\\\"\\n style.height=\\\"{{ itemHeight }}px\\\"\\n style.max-height=\\\"{{ itemHeight }}px\\\"\\n (click)=\\\"handleRowClick($event, data.row)\\\"\\n >\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n <span\\n class=\\\"ax-data-table-cell-tooltip-wrapper\\\"\\n [axTooltip]=\\\"data.row && !isLoading() ? getCellTooltipText(c, data.row) || null : null\\\"\\n >\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </span>\\n </td>\\n }\\n <td><div class=\\\"ax-bg\\\"></div></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n [attr.data-label]=\\\"c.caption\\\"\\n tabindex=\\\"0\\\"\\n [class]=\\\"c.cssClass\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n @if (data.row && !isLoading()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n $implicit: { data: data.row, rowIndex: calculateRowIndex(data.rowIndex) },\\n }\\\"\\n ></ng-container>\\n } @else {\\n @if (c.loadingEnabled && loading.enabled) {\\n @if (loading.loadingTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"loading.loadingTemplate\\\"></ng-container>\\n } @else {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n }\\n </td>\\n }\\n </tr>\\n @if (data.row?.__meta__?.expanded) {\\n @if (rowDetailsTemplate) {\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-start]=\\\"true\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n <td class=\\\"ax-data-table-row-details\\\" [attr.colspan]=\\\"normalColumnsList().length + 1\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowDetailsTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: data.row, rowIndex: data.rowIndex } }\\\"\\n ></ng-container>\\n </td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n [style.width]=\\\"c.width\\\"\\n [class.ax-data-table-sticky-body-cell]=\\\"c.fixed && c.width\\\"\\n [class.sticky-end]=\\\"true\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-bg\\\"></div>\\n </td>\\n }\\n </tr>\\n }\\n @for (childRow of data.row.children; let childRowIndex = $index; track childRowIndex) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemp\\\"\\n [ngTemplateOutletContext]=\\\"{ data: { row: childRow, rowIndex: childRowIndex } }\\\"\\n ></ng-container>\\n }\\n }\\n }\\n </ng-template>\\n\\n <tr class=\\\"empty-row\\\"></tr>\\n }\\n </tbody>\\n @if (showFooter) {\\n <tfoot [ngClass]=\\\"{ 'ax-data-table-sticky-footer': fixedFooter }\\\">\\n <tr>\\n @for (c of startFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-start\\\"\\n [class.ax-data-table-sticky-footer-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-last]=\\\"c['isLastFixedColumn']\\\"\\n [style.--sticky-start]=\\\"c['stickyStart']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n @for (c of normalColumnsList(); track $index) {\\n <td\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n @if (c.allowResizing && !c.fixed) {\\n <div\\n class=\\\"ax-resize-handle\\\"\\n (mousedown)=\\\"onResizeColumnStart($event, this.startFixedColumnsList().length + $index)\\\"\\n (dblclick)=\\\"onResizeHandlerDoubleClick($event, this.startFixedColumnsList().length + $index)\\\"\\n title=\\\"Double-click to auto-fit column width\\\"\\n ></div>\\n }\\n </td>\\n }\\n <td></td>\\n @for (c of endFixedColumnsList(); track $index) {\\n <td\\n class=\\\"ax-data-table-sticky-footer-cell sticky-end\\\"\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [class.ax-data-table-sticky-header-cell]=\\\"c.fixed && c.width\\\"\\n [style.width]=\\\"c.width\\\"\\n [class.ax-state-is-first]=\\\"c['isFirstFixedColumn']\\\"\\n [style.--sticky-end]=\\\"c['stickyEnd']\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderFooterTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: c, rows: displayedRows(), rowIndex: $index } }\\\"\\n ></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n </td>\\n }\\n </tr>\\n </tfoot>\\n }\\n </table>\\n</div>\\n\\n@if (paging) {\\n <div class=\\\"ax-table-footer\\\" #footerContainer>\\n <ng-template #customPager>\\n <ng-content select=\\\"ax-data-pager\\\"></ng-content>\\n </ng-template>\\n\\n @if (customDataPager) {\\n <ng-container [ngTemplateOutlet]=\\\"customPager\\\"></ng-container>\\n } @else {\\n <ax-data-pager\\n #dataPager\\n [displayMode]=\\\"'custom'\\\"\\n (onChanged)=\\\"handleChangePage($event)\\\"\\n [total]=\\\"dataSource.totalCount\\\"\\n [size]=\\\"dataSource.pageSize\\\"\\n [isLoading]=\\\"isLoading()\\\"\\n >\\n <ax-prefix class=\\\"ax-data-table-numeric-paging\\\">\\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\\n </ax-prefix>\\n <ax-prefix class=\\\"ax-data-table-input-paging\\\">\\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\\n </ax-prefix>\\n <ax-suffix class=\\\"ax-data-table-info\\\">\\n <ax-data-pager-info> </ax-data-pager-info>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh({ reset: false })\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </ax-suffix>\\n </ax-data-pager>\\n }\\n </div>\\n}\\n<ng-content select=\\\"ax-footer\\\"> </ng-content>\\n\", styles: [\"ax-data-table{--ax-comp-data-table-font-size: .875rem;--ax-comp-data-table-line-height: 1rem;--ax-comp-data-table-border-color: var(--ax-sys-color-border-surface);--ax-comp-data-table-border-radius: var(--ax-sys-border-radius);--ax-comp-data-table-column-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-lightest-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-primary-lightest-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-lighter-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-light-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-interactive-bg-color: var(--ax-sys-color-light-surface)}.ax-dark ax-data-table{--ax-comp-data-table-column-bg-color: var(--ax-sys-color-darkest-surface);--ax-comp-data-table-header-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-header-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-footer-bg-color: var(--ax-sys-color-darker-surface);--ax-comp-data-table-footer-text-color: var(--ax-sys-color-on-darker-surface);--ax-comp-data-table-hover-bg-color: var(--ax-sys-color-primary-light-surface);--ax-comp-data-table-hover-text-color: var(--ax-sys-color-on-light-surface);--ax-comp-data-table-focus-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-selected-bg-color: var(--ax-sys-color-primary-dark-surface);--ax-comp-data-table-selected-hover-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-data-table-index-bg-color: var(--ax-sys-color-dark-surface);--ax-comp-data-table-index-text-color: var(--ax-sys-color-on-dark-surface);--ax-comp-data-table-skeleton-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-data-table-alternative-bg-color: var(--ax-sys-color-surface);--ax-comp-data-table-alternative-text-color: var(--ax-sys-color-on-surface);--ax-comp-data-table-handler-bg-color: var(--ax-sys-color-primary-dark-surface)}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table thead th.ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}html[dir=rtl] ax-data-table .ax-data-table-wrapper table tbody td.ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table{display:flex;flex-direction:column;height:100%;width:100%;font-size:var(--ax-comp-data-table-font-size);line-height:var(--ax-comp-data-table-line-height);border-radius:var(--ax-comp-data-table-border-radius);border-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));position:relative;min-height:inherit;overflow:hidden}ax-data-table td.ax-data-table-empty-data{background:transparent!important;position:absolute!important;padding:2rem 1rem;text-align:center;vertical-align:middle;height:8rem;border-bottom:none;top:50%;transform:translateY(-50%);width:100%}ax-data-table td.ax-data-table-empty-data span{color:rgb(var(--ax-sys-color-ghost-500));font-size:var(--ax-comp-data-table-font-size);display:flex;height:100%;align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper{overflow:auto;width:100%;flex:1;border-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table{display:table;height:100%;width:100%;table-layout:fixed;overflow-x:auto}ax-data-table .ax-data-table-wrapper table thead{overflow:hidden;border-start-end-radius:var(--ax-comp-data-table-border-radius);border-start-start-radius:var(--ax-comp-data-table-border-radius)}ax-data-table .ax-data-table-wrapper table thead th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-header-bg-color));color:rgba(var(--ax-comp-data-table-header-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table thead th.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle{position:absolute;inset-inline-end:0px;top:0;bottom:0;width:.25rem;height:100%;cursor:col-resize;background:transparent}ax-data-table .ax-data-table-wrapper table thead th .ax-resize-handle:hover{background-color:rgba(var(--ax-comp-data-table-handler-bg-color))}ax-data-table .ax-data-table-wrapper table thead th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-data-table .ax-data-table-wrapper table thead th:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table thead.ax-data-table-sticky-header{position:sticky;top:0;border-top:none;border-bottom:none;z-index:3;box-shadow:inset 1px 1px 0 2px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table thead .ax-data-table-sticky-header-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell{position:sticky;z-index:2;background-color:rgba(var(--ax-comp-data-table-column-bg-color));border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tbody tr .ax-data-table-sticky-body-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tbody tr td{z-index:0;position:relative}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-data-table-cell-tooltip-wrapper{display:block;position:relative;width:100%;height:100%;min-height:inherit}ax-data-table .ax-data-table-wrapper table tbody tr td .ax-bg{top:0;left:0;z-index:-1;width:100%;height:100%;position:absolute;border-inline-end:1px solid rgba(var(--ax-comp-data-table-border-color));background-color:transparent;opacity:.3}ax-data-table .ax-data-table-wrapper table tbody .empty-row{height:auto!important}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) td{background-color:rgba(var(--ax-comp-data-table-alternative-bg-color));color:rgba(var(--ax-comp-data-table-alternative-text-color))}ax-data-table .ax-data-table-wrapper table tbody.ax-data-table-row-alternative tr:nth-child(2n) ax-skeleton{width:25%}ax-data-table .ax-data-table-wrapper table tbody tr{height:2.5rem;max-height:2.5rem}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-focus-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-focused td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-focus-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-bg-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column){color:rgba(var(--ax-comp-data-table-selected-hover-text-color))}ax-data-table .ax-data-table-wrapper table tbody tr.ax-state-selected:hover td:not(.ax-index-column) .ax-bg{background-color:rgba(var(--ax-comp-data-table-selected-hover-bg-color))}ax-data-table .ax-data-table-wrapper table tbody td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-column-bg-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.5rem;padding-bottom:.5rem;vertical-align:middle}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler{padding-inline-start:.25rem;padding-inline-end:.25rem;cursor:pointer}ax-data-table .ax-data-table-wrapper table tbody td .ax-expand-handler.has-parent{padding-inline-start:1.5rem!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-comp-data-table-index-bg-color));color:rgba(var(--ax-comp-data-table-index-text-color));text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column{text-align:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button{--ax-comp-button-font-size: .75rem;--ax-comp-button-padding-x: .25rem;--ax-comp-button-decorator-padding-x: .25rem;--ax-comp-button-icon-only-font-size: .875rem;--ax-sys-size-base: 1.5rem;margin-left:.25rem;margin-right:.25rem}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button ax-loading .ax-loader{width:.75rem!important;height:.75rem!important;border-width:2px!important}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-comp-data-table-border-radius);border-style:none;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover:not(ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-selected,ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:hover.ax-state-disabled){opacity:.75}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button:active{opacity:1}ax-data-table .ax-data-table-wrapper table tbody td.ax-command-column ax-button button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-data-table .ax-data-table-wrapper table tbody td:last-child{border-inline-end-width:0px}ax-data-table .ax-data-table-wrapper table tbody td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem;background-color:rgba(var(--ax-comp-data-table-skeleton-bg-color))}ax-data-table .ax-data-table-wrapper table tfoot tr td{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-comp-data-table-footer-bg-color));color:rgba(var(--ax-comp-data-table-footer-text-color));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;height:2.5rem}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive{cursor:pointer}ax-data-table .ax-data-table-wrapper table tfoot tr td.ax-interactive:hover{background-color:rgba(var(--ax-comp-data-table-interactive-bg-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell{position:sticky;z-index:2;border-inline-start:none;border-inline-end:none}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start{box-shadow:inset -1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-start.ax-state-is-last{box-shadow:inset -2px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end{box-shadow:inset 1px 0 rgba(var(--ax-comp-data-table-border-color))}ax-data-table .ax-data-table-wrapper table tfoot tr .ax-data-table-sticky-footer-cell.sticky-end.ax-state-is-first{box-shadow:inset 2px 0 rgba(var(--ax-comp-data-table-border-color))}}ax-data-table .ax-data-table-wrapper table tfoot.ax-data-table-sticky-footer{position:sticky;bottom:-1px;border-top:none;border-bottom:none;z-index:3;box-shadow:1px 0 rgba(var(--ax-comp-data-table-border-color)),0 -1px rgba(var(--ax-comp-data-table-border-color))}@media screen and (min-width: 768px){ax-data-table .ax-data-table-wrapper table .sticky-end{inset-inline-end:var(--sticky-end)}ax-data-table .ax-data-table-wrapper table .sticky-start{inset-inline-start:var(--sticky-start)}}ax-data-table ax-data-pager{justify-content:center}ax-data-table .ax-table-footer{border-top-width:1px;border-collapse:collapse;overflow:hidden;border-color:rgba(var(--ax-comp-data-table-border-color));padding-inline-start:.875rem;padding-inline-end:.875rem}ax-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}ax-data-table .ax-data-table-numeric-paging{display:none}ax-data-table .ax-data-table-input-paging{display:flex}ax-data-table .ax-data-table-info{display:none}@media (min-width: 1024px){ax-data-table .ax-data-table-numeric-paging{display:flex}ax-data-table .ax-data-table-input-paging{display:none}}@media (min-width: 768px){ax-data-table .ax-data-table-info{display:flex;align-items:center}ax-data-table ax-data-pager{justify-content:space-between}}.cdk-drag-preview{border-bottom-width:1px;border-inline-end-width:1px;box-shadow:0 5px 5px -3px rgba(var(--ax-sys-color-primary-900),.2),0 8px 10px 1px rgba(var(--ax-sys-color-primary-900),.14),0 3px 14px 2px rgba(var(--ax-sys-color-primary-900),.12);border-style:solid;border-color:rgba(var(--ax-comp-data-table-border-color));background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-surface-fore));padding-inline-start:1rem;padding-inline-end:1rem;padding-top:.75rem;padding-bottom:.75rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}.ax-dropdown-command-empty-state-text{color:rgba(var(--ax-sys-color-on-surface-variant-500));font-size:.75rem}\\n\"] }]\n }], propDecorators: { dataPager: [{\n type: ViewChild,\n args: ['dataPager']\n }], customDataPager: [{\n type: ContentChild,\n args: [AXDataPagerComponent, {\n static: true,\n }]\n }], title: [{\n type: Input\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], noDataTemplate: [{\n type: Input\n }], alternative: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fixedHeader: [{\n type: Input\n }], showFooter: [{\n type: Input\n }], fixedFooter: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], allowReordering: [{\n type: Input\n }], paging: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRow: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], onColumnsOrderChanged: [{\n type: Output\n }], onColumnSizeChanged: [{\n type: Output\n }], onPageChanged: [{\n type: Output\n }], columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixpQ0FBaUMsRUFDakMsK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0IsK0JBQStCLEdBQ2hDLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRixPQUFPLEVB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bmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtcbiAgQVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQsXG4gIEFYRGF0YVBhZ2VyQ29tcG9uZW50LFxuICBBWERhdGFQYWdlckluZm9Db21wb25lbnQsXG4gIEFYRGF0YVBhZ2VySW5wdXRTZWxlY3RvckNvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJOZXh0QnV0dG9uc0NvbXBvbmVudCxcbiAgQVhEYXRhUGFnZXJOdW1lcmljU2VsZWN0b3JDb21wb25lbnQsXG4gIEFYRGF0YVBhZ2VyUGFnZVNpemVzQ29tcG9uZW50LFxuICBBWERhdGFQYWdlclByZXZCdXR0b25zQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS1wYWdlcic7XG5pbXBvcnQgeyBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQsIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWEh0bWxVdGlsLCBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJvcExpc3QsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0LCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRE9DVU1FTlQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBRdWVyeUxpc3QsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBWEJhc2VEYXRhVGFibGUsXG4gIEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50LFxuICBBWERhdGFUYWJsZVJvd0NsaWNrLFxuICBBWERhdGFUYWJsZVJvd0RiQ2xpY2ssXG4gIG9uQ29sdW1uU2l6ZUNoYW5nZWRFdmVudCxcbn0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9kYXRhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b29sdGlwJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW5kIG1hbmFnaW5nIGEgZGF0YSB0YWJsZSB3aXRoIGFkdmFuY2VkIGZlYXR1cmVzLlxuICpcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgbmdTa2lwSHlkcmF0aW9uOiAndHJ1ZScgfSxcbiAgaW5wdXRzOiBbJ2RhdGFTb3VyY2UnLCAnc2VsZWN0ZWRSb3dzJywgJ3BhcmVudEZpZWxkJywgJ3Jvd0RldGFpbHNUZW1wbGF0ZScsICd0aXRsZSddLFxuICBvdXRwdXRzOiBbJ3NlbGVjdGVkUm93c0NoYW5nZSddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYQmFzZURhdGFUYWJsZSwgdXNlRXhpc3Rpbmc6IEFYRGF0YVRhYmxlQ29tcG9uZW50IH0sXG4gICAgQVhVbnN1YnNjcmliZXIsXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYRGF0YVRhYmxlQ29tcG9uZW50IH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE5nQ2xhc3MsXG4gICAgQ2RrRHJvcExpc3QsXG4gICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICBDZGtEcmFnLFxuICAgIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbiAgICBBWFNrZWxldG9uQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VyQ29tcG9uZW50LFxuICAgIEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCxcbiAgICBBWERhdGFQYWdlck51bWVyaWNTZWxlY3RvckNvbXBvbmVudCxcbiAgICBBWERhdGFQYWdlclBhZ2VTaXplc0NvbXBvbmVudCxcbiAgICBBWERhdGFQYWdlclByZXZCdXR0b25zQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VySW5wdXRTZWxlY3RvckNvbXBvbmVudCxcbiAgICBBWERhdGFQYWdlck5leHRCdXR0b25zQ29tcG9uZW50LFxuICAgIEFYRGF0YVBhZ2VySW5mb0NvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBc3luY1BpcGUsXG4gICAgQVhUcmFuc2xhdG9yUGlwZSxcbiAgICBBWFRvb2x0aXBEaXJlY3RpdmVcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEYXRhVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIF91bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcml2YXRlIF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZGF0YVBhZ2VyJykgZGF0YVBhZ2VyO1xuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoQVhEYXRhUGFnZXJDb21wb25lbnQsIHtcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIGN1c3RvbURhdGFQYWdlcjogQVhEYXRhUGFnZXJDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgc2hvd3MgdGhlIGNlbGwgY29udGVudCBhcyB0b29sdGlwICh0aXRsZSBhdHRyaWJ1dGUpIG9uIGhvdmVyLlxuICAgKi9cbiAgQElucHV0KCkgdGl0bGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBydGwhOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRpc3BsYXllZFJvd3M6IFdyaXRhYmxlU2lnbmFsPGFueVtdPiA9IHNpZ25hbChbXSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFnZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBwYWdlU2l6ZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBpc0xvYWRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKHRydWUpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbHVtbnNMaXN0OiBXcml0YWJsZVNpZ25hbDxhbnlbXT4gPSBzaWduYWwoW10pO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbHVtbnNMaXN0KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09PSAnZW5kJykpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdDogU2lnbmFsPGFueVtdPiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5jb2x1bW5zTGlzdCgpLmZpbHRlcigoYykgPT4gYy5maXhlZCA9PT0gJ3N0YXJ0JyksXG4gICk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm9ybWFsQ29sdW1uc0xpc3Q6IFNpZ25hbDxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuY29sdW1uc0xpc3QoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgIT09ICdlbmQnICYmIGMuZml4ZWQgIT09ICdzdGFydCcpLFxuICApO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc2l6ZUNvbHVtblByb3AgPSB7IHN0YXJ0WDogMCwgc3RhcnRXaWR0aDogMCwgY29sdW1uSW5kZXg6IDAsIG5ld0NvbHVtbldpZHRoOiAwLCB0aEVsZW1lbnQ6IG51bGwgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYXNJdGVtcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvdGFsUm93cyA9IDA7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY3VycmVudFBhZ2UgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvdGFsUGFnZXMgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXJ0Um93SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBmb3IgY3VzdG9tIHJvdyBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcm93VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogVGVtcGxhdGUgdG8gZGlzcGxheSB3aGVuIHRoZSB0YWJsZSBpcyBlbXB0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGVtcHR5VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogVGVtcGxhdGUgdG8gZGlzcGxheSB3aGVuIG5vIGRhdGEgaXMgbG9hZGVkIHlldC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG5vRGF0YVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIERlZmluZXMgaWYgYWx0ZXJuYXRpdmUgcm93IHN0eWxpbmcgc2hvdWxkIGJlIGFwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG4gICAqL1xuICBASW5wdXQoKVxuICBhbHRlcm5hdGl2ZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG4gICAqL1xuICBASW5wdXQoKVxuICBzaG93SGVhZGVyID0gdHJ1ZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSB0YWJsZSBoZWFkZXIgc2hvdWxkIGJlIGZpeGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgZml4ZWRIZWFkZXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHRhYmxlIGZvb3RlciBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNob3dGb290ZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSB0YWJsZSBmb290ZXIgc2hvdWxkIGJlIGZpeGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGB0cnVlYFxuICAgKi9cbiAgQElucHV0KClcbiAgZml4ZWRGb290ZXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGhlaWdodCBvZiBlYWNoIGl0ZW0gaW4gdGhlIHRhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGA0MGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGl0ZW1IZWlnaHQ6IG51bWJlciB8ICdhdXRvJyA9IDQwO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHJvdyByZW9yZGVyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIGFsbG93UmVvcmRlcmluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHBhZ2luZy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhZ2luZyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgZGF0YSBzaG91bGQgYmUgZmV0Y2hlZC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSBgJ2F1dG8nYFxuICAgKi9cbiAgQElucHV0KClcbiAgZmV0Y2hEYXRhTW9kZTogJ2F1dG8nIHwgJ21hbnVhbCcgPSAnYXV0byc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGxvYWRpbmcgc3RhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgYHsgZW5hYmxlZDogdHJ1ZSwgYW5pbWF0aW9uOiB0cnVlIH1gXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2FkaW5nOiB7IGVuYWJsZWQ6IGJvb2xlYW47IGFuaW1hdGlvbjogYm9vbGVhbjsgbG9hZGluZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj4gfSA9IHtcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGFuaW1hdGlvbjogdHJ1ZSxcbiAgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzZWRSb3c6IHVua25vd247XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHJvdy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZm9jdXNlZFJvdygpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZFJvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCByb3cgYW5kIGVtaXRzIHRoZSBjaGFuZ2UgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2IC0gVGhlIHJvdyB0byBiZSBmb2N1c2VkLlxuICAgKi9cbiAgcHVibGljIHNldCBmb2N1c2VkUm93KHY6IHVua25vd24pIHtcbiAgICB0aGlzLl9mb2N1c2VkUm93ID0gdjtcbiAgICB0aGlzLmZvY3VzZWRSb3dDaGFuZ2UuZW1pdCh2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBmb2N1c2VkIHJvdyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBmb2N1c2VkUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSByb3cgaXMgY2xpY2tlZC5cbiAgICpcbiAgICogQGV2ZW50IG9uUm93Q2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dDbGljaz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlUm93Q2xpY2s+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSByb3cgaXMgZG91YmxlLWNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudCBvblJvd0RiQ2xpY2tcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblJvd0RiQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0RiQ2xpY2s+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0RiQ2xpY2s+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG9yZGVyIG9mIGNvbHVtbnMgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50IG9uQ29sdW1uc09yZGVyQ2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ29sdW1uc09yZGVyQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYQ29sdW1uc09yZGVyQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDb2x1bW5zT3JkZXJDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHNpemUgb2YgY29sdW1ucyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnQgb25Db2x1bW5TaXplQ2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ29sdW1uU2l6ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxvbkNvbHVtblNpemVDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gcGFnZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnQgb25Db2x1bW5TaXplQ2hhbmdlZFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWERhdGFQYWdlckNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YVBhZ2VyQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjbGlja1N1YmplY3QgPSBuZXcgU3ViamVjdDx7IGV2ZW50OiBNb3VzZUV2ZW50OyBpdGVtOiBhbnkgfT4oKTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgaXNSZWZyZXNoQ2FsbGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGluIG1hbnVhbCBtb2RlIGFuZCBubyBkYXRhIGhhcyBiZWVuIGxvYWRlZCB5ZXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNob3dOb0RhdGFMb2FkZWRZZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hEYXRhTW9kZSA9PT0gJ21hbnVhbCcgJiYgIXRoaXMuaXNSZWZyZXNoQ2FsbGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpXG4gIHByb3RlY3RlZCBjb2x1bW5zOiBRdWVyeUxpc3Q8QVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAodGhpcy5jdXN0b21EYXRhUGFnZXIpIHtcbiAgICAgIHRoaXMuYXBwbHlEYXRhUGFnZXJNZXRob2RzKCk7XG4gICAgfVxuICAgIHRoaXMucnRsID0gQVhIdG1sVXRpbC5pc1J0bCh0aGlzLmdldEhvc3RFbGVtZW50KCkpO1xuICAgIHRoaXMuZGF0YVNvdXJjZS51c2VDYWNoZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmZldGNoRGF0YU1vZGUgPT0gJ2F1dG8nKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0UGFnZSgwKTtcbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5ZWRSb3dzLnNldChuZXcgQXJyYXkodGhpcy5kYXRhU291cmNlLnBhZ2VTaXplKSk7XG4gICAgdGhpcy50b3RhbFJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuaXRlbXMubGVuZ3RoO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkxvYWRpbmdDaGFuZ2VkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGRhdGEpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLm9uQ2hhbmdlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZGlzcGxheWVkUm93cy5zZXQoZGF0YS5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtW3RoaXMucGFyZW50RmllbGRdKSk7XG4gICAgICB0aGlzLnRvdGFsUm93cyA9IGRhdGEudG90YWxDb3VudDtcbiAgICAgIHRoaXMuaGFzSXRlbXMgPSBkYXRhLnRvdGFsQ291bnQgPiAwO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLm9uSXRlbUV4cGFuZGVkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgeyBleHBhbmRlZEl0ZW0sIGNoaWxkcmVuIH0gPSBkYXRhO1xuICAgICAgLy8gSWYgY2hpbGRyZW4gaXMgbnVsbCwgaXQgbWVhbnMgd2Ugb25seSB3YW50IHRvIHRvZ2dsZSByb3cgZGV0YWlscyB3aXRob3V0IG1hbmFnaW5nIGNoaWxkcmVuXG4gICAgICBpZiAoY2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRSb3dzLnVwZGF0ZSgocHJldikgPT4gdGhpcy50b2dnbGVFeHBhbmRlZFN0YXRlKHByZXYsIGV4cGFuZGVkSXRlbSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRSb3dzLnVwZGF0ZSgocHJldikgPT4gdGhpcy50b2dnbGVFeHBhbmRlZChwcmV2LCBleHBhbmRlZEl0ZW0sIGNoaWxkcmVuKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25JdGVtUmVmcmVzaENoaWxkcmVuLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgeyBpZCB9ID0gZGF0YTtcbiAgICAgIHRoaXMucmVmcmVzaEV4cGFuZGVkSXRlbShpZCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnBhZ2VTaXplLnNldCh0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUpO1xuXG4gICAgLy9cbiAgICB0aGlzLmNsaWNrU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGJ1ZmZlcih0aGlzLmNsaWNrU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgyNTApKSksXG4gICAgICAgIGZpbHRlcigoY2xpY2tBcnJheSkgPT4gY2xpY2tBcnJheS5sZW5ndGggPT09IDIpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY2xpY2tBcnJheSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZVJvd0RvdWJsZUNsaWNrKGNsaWNrQXJyYXlbMF0uZXZlbnQsIGNsaWNrQXJyYXlbMF0uaXRlbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FsY3VsYXRlU3RpY2t5Q29sdW1uc1Bvc2l0aW9ucygpO1xuICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KHRoaXMuY29sdW1ucy50b0FycmF5KCkpO1xuICAgIHRoaXMuY29sdW1ucy5jaGFuZ2VzLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoY29scykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zTGlzdC5zZXQoY29scy50b0FycmF5KCkpO1xuICAgIH0pO1xuXG4gICAgLy8gQXV0by1maXQgY29sdW1ucyB3aXRoIHdpZHRoPSdhdXRvJyBhZnRlciBkYXRhIGxvYWRcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkNoYW5nZWQucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIERlbGF5IHRvIGVuc3VyZSBET00gaXMgcmVhZHlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdXRvRml0Q29sdW1uc1dpdGhBdXRvV2lkdGgoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkaXNwbGF5IHRleHQgZm9yIGEgY2VsbC4gVXNlZCBmb3IgdGhlIG5hdGl2ZSB0aXRsZSAodG9vbHRpcCkgb24gZWFjaCBjZWxsLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENlbGxUb29sdGlwVGV4dChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LCByb3dEYXRhOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAocm93RGF0YSA9PSBudWxsIHx8IHR5cGVvZiByb3dEYXRhICE9PSAnb2JqZWN0JykgcmV0dXJuICcnO1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uZ2V0Q2VsbERpc3BsYXlUZXh0KHJvd0RhdGEpO1xuICAgIH1cbiAgICBjb25zdCBjb2wgPSBjb2x1bW4gYXMgeyBkYXRhRmllbGQ/OiBzdHJpbmcgfTtcbiAgICBpZiAoY29sLmRhdGFGaWVsZCAhPSBudWxsICYmIGNvbC5kYXRhRmllbGQgaW4gKHJvd0RhdGEgYXMgb2JqZWN0KSkge1xuICAgICAgY29uc3QgdiA9IChyb3dEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtjb2wuZGF0YUZpZWxkXTtcbiAgICAgIHJldHVybiB2ICE9IG51bGwgPyBTdHJpbmcodikgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICAjZWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5jdXN0b21EYXRhUGFnZXIpIHtcbiAgICAgIHRoaXMuY3VzdG9tRGF0YVBhZ2VyLnRvdGFsID0gdGhpcy5kYXRhU291cmNlLnRvdGFsQ291bnQ7XG4gICAgICB0aGlzLmN1c3RvbURhdGFQYWdlci5zaXplID0gdGhpcy5kYXRhU291cmNlLnBhZ2VTaXplO1xuICAgICAgdGhpcy5jdXN0b21EYXRhUGFnZXIuaXNMb2FkaW5nID0gdGhpcy5pc0xvYWRpbmcoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiBhIHJvdyB3aXRob3V0IG1hbmFnaW5nIGNoaWxkcmVuLlxuICAgKiBVc2VkIGZvciByb3cgZGV0YWlscyB0ZW1wbGF0ZSB3aXRob3V0IG5lc3RlZCBoaWVyYXJjaHkuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzIC0gVGhlIGFycmF5IG9mIHJvd3MgdG8gc2VhcmNoIGluXG4gICAqIEBwYXJhbSBleHBhbmRlZEl0ZW0gLSBUaGUgaXRlbSB0byB0b2dnbGVcbiAgICogQHJldHVybnMgVXBkYXRlZCByb3dzIGFycmF5IHdpdGggdG9nZ2xlZCBzdGF0ZVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvZ2dsZUV4cGFuZGVkU3RhdGUocm93czogYW55W10sIGV4cGFuZGVkSXRlbTogYW55KTogYW55W10ge1xuICAgIHJldHVybiByb3dzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGV4cGFuZGVkSXRlbVt0aGlzLmdldERhdGFTb3VyY2VLZXkoKV0gPT09IGl0ZW1bdGhpcy5nZXREYXRhU291cmNlS2V5KCldKSB7XG4gICAgICAgIGNvbnN0IGlzRXhwYW5kZWQgPSAhaXRlbT8uX19tZXRhX18/LmV4cGFuZGVkO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgX19tZXRhX186IHsgZXhwYW5kZWQ6IGlzRXhwYW5kZWQsIGxldmVsOiBleHBhbmRlZEl0ZW0/Ll9fbWV0YV9fPy5sZXZlbCA/PyAwIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVFeHBhbmRlZChyb3dzOiBhbnlbXSwgZXhwYW5kZWRJdGVtOiBhbnksIGNoaWxkcmVuOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgaWYgKCFjLl9fbWV0YV9fKSB7XG4gICAgICAgICAgYy5fX21ldGFfXyA9IHsgbGV2ZWw6IChleHBhbmRlZEl0ZW0/Ll9fbWV0YV9fPy5sZXZlbCA/PyAwKSArIDEgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChleHBhbmRlZEl0ZW1bdGhpcy5nZXREYXRhU291cmNlS2V5KCldID09PSBpdGVtW3RoaXMuZ2V0RGF0YVNvdXJjZUtleSgpXSkge1xuICAgICAgICBjb25zdCBpc0V4cGFuZGVkID0gIWl0ZW0/Ll9fbWV0YV9fPy5leHBhbmRlZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIF9fbWV0YV9fOiB7IGV4cGFuZGVkOiBpc0V4cGFuZGVkLCBsZXZlbDogZXhwYW5kZWRJdGVtPy5fX21ldGFfXz8ubGV2ZWwgPz8gMCB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiA/IHRoaXMudG9nZ2xlRXhwYW5kZWQoY2hpbGRyZW4sIGV4cGFuZGVkSXRlbSwgaXRlbS5jaGlsZHJlbiB8fCBbXSkgOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGNoaWxkcmVuOiB0aGlzLnRvZ2dsZUV4cGFuZGVkKGl0ZW0uY2hpbGRyZW4sIGV4cGFuZGVkSXRlbSwgY2hpbGRyZW4pIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgcmVmcmVzaEV4cGFuZGVkSXRlbShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBhd2FpdCB0aGlzLmRhdGFTb3VyY2UuZ2V0SXRlbXNCeUZpbHRlcih7XG4gICAgICBmaWVsZDogdGhpcy5wYXJlbnRGaWVsZCxcbiAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgIHZhbHVlOiBpZCxcbiAgICB9KTtcblxuICAgIHRoaXMuZGlzcGxheWVkUm93cy51cGRhdGUoKHByZXYpID0+IHRoaXMudXBkYXRlQ2hpbGRyZW4ocHJldiwgaWQsIG5ld0NoaWxkcmVuLml0ZW1zKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoaWxkcmVuKGl0ZW1zOiBhbnlbXSwgaWQ6IHN0cmluZyB8IG51bWJlciwgbmV3Q2hpbGRyZW46IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtW3RoaXMuZ2V0RGF0YVNvdXJjZUtleSgpXSA9PT0gaWQpIHtcbiAgICAgICAgbmV3Q2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgICBjaGlsZC5fX21ldGFfXyA9IHsgLi4uY2hpbGQuX19tZXRhX18sIGxldmVsOiAoaXRlbS5fX21ldGFfXz8ubGV2ZWwgfHwgMCkgKyAxIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyAuLi5pdGVtLCBjaGlsZHJlbjogY2xvbmVEZWVwKG5ld0NoaWxkcmVuKSB9O1xuICAgICAgfSBlbHNlIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGNoaWxkcmVuOiB0aGlzLnVwZGF0ZUNoaWxkcmVuKGl0ZW0uY2hpbGRyZW4sIGlkLCBuZXdDaGlsZHJlbikgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8YW55LCBhbnksIGFueT4pIHtcbiAgICBjb25zdCBjbG9uZWRDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1uc0xpc3QoKV07XG4gICAgbW92ZUl0ZW1JbkFycmF5KGNsb25lZENvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5jb2x1bW5zTGlzdC5zZXQoY2xvbmVkQ29sdW1ucyk7XG5cbiAgICB0aGlzLm9uQ29sdW1uc09yZGVyQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB7IGV2ZW50IH0sIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUm93Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmhhbmRsZVJvd1NpbmdsZUNsaWNrKGV2ZW50LCBpdGVtKTtcbiAgICB0aGlzLmNsaWNrU3ViamVjdC5uZXh0KHsgZXZlbnQsIGl0ZW0gfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUm93U2luZ2xlQ2xpY2soZXZlbnQ6IEV2ZW50LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb2N1c2VkUm93ID09IGl0ZW0pIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNlZFJvdyA9IGl0ZW07XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IGl0ZW0sIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ2hhbmdlUGFnZShldmVudDogQVhEYXRhUGFnZXJDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLm9uUGFnZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgaWYgKGV2ZW50LmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICBjb25zdCBwYWdlQ2hhbmdlZCA9IGV2ZW50LnBhZ2UgLSAxICE9IHRoaXMucGFnZSgpO1xuICAgICAgY29uc3QgcGFnZVNpemVDaGFuZ2VkID0gZXZlbnQudGFrZSAhPSB0aGlzLnBhZ2VTaXplKCk7XG5cbiAgICAgIGlmIChwYWdlQ2hhbmdlZCB8fCBwYWdlU2l6ZUNoYW5nZWQpIHtcbiAgICAgICAgaWYgKHBhZ2VDaGFuZ2VkKSB7XG4gICAgICAgICAgdGhpcy5wYWdlLnNldChldmVudC5wYWdlIC0gMSk7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldFBhZ2UodGhpcy5wYWdlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhZ2VTaXplQ2hhbmdlZCkge1xuICAgICAgICAgIHRoaXMucGFnZVNpemUuc2V0KGV2ZW50LnRha2UpO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRQYWdlU2l6ZSh0aGlzLnBhZ2VTaXplKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXllZCByb3dzIGFuZCBkYXRhIHNvdXJjZVxuICAgICAgICB0aGlzLmRpc3BsYXllZFJvd3Muc2V0KG5ldyBBcnJheSh0aGlzLnBhZ2VTaXplKCkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVSb3dEb3VibGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5mb2N1c2VkUm93ID0gaXRlbTtcbiAgICAvL1xuICAgIHRoaXMub25Sb3dEYkNsaWNrLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IGl0ZW0sIGlzVXNlckludGVyYWN0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGFwcGx5RGF0YVBhZ2VyTWV0aG9kcygpIHtcbiAgICB0aGlzLmN1c3RvbURhdGFQYWdlci5vbkNoYW5nZWRcbiAgICAgIC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEFYRGF0YVBhZ2VyQ2hhbmdlZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUNoYW5nZVBhZ2UoZXZlbnQpKTtcbiAgICB0aGlzLmN1c3RvbURhdGFQYWdlci5kaXNwbGF5TW9kZSA9ICdjdXN0b20nO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrIGV2ZW50IG9uIGEgY29sdW1uIGhlYWRlci5cbiAgICogVG9nZ2xlcyB0aGUgc29ydGluZyBkaXJlY3Rpb24gb3IgcmVtb3ZlcyB0aGUgc29ydCBpZiBhbHJlYWR5IHNvcnRlZC5cbiAgICpcbiAgICogQHBhcmFtIGUgLSBUaGUgbW91c2UgZXZlbnQgdHJpZ2dlcmVkIGJ5IHRoZSBjbGljay5cbiAgICogQHBhcmFtIGNvbHVtbiAtIFRoZSBjb2x1bW4gdGhhdCB3YXMgY2xpY2tlZC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbHVtbkNsaWNrKGU6IE1vdXNlRXZlbnQsIGNvbHVtbjogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQpIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIGlmICghc29ydCkge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydC5wdXNoKHsgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsIGRpcjogJ2FzYycgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc29ydC5kaXIgPT0gJ2FzYycpIHtcbiAgICAgICAgICBzb3J0LmRpciA9ICdkZXNjJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbHRlcigoYykgPT4gYyAhPSBzb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U29ydChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIHJldHVybiBzb3J0ID8gKHNvcnQuZGlyID09ICdhc2MnID8gJ2F4LWljb24tYXJyb3ctbG9uZy1kb3duJyA6ICdheC1pY29uLWFycm93LWxvbmctdXAnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgdGhlIGRhdGEgdGFibGUgd2l0aCBvcHRpb25hbCByZXNldCBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgcmVmcmVzaCBvcGVyYXRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zLnJlc2V0IC0gV2hldGhlciB0byByZXNldCBwYWdpbmF0aW9uIHN0YXRlLlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgcmVmcmVzaChvcHRpb25zOiB7IHJlc2V0PzogYm9vbGVhbiB9ID0geyByZXNldDogdHJ1ZSB9KSB7XG4gICAgdGhpcy5kYXRhU291cmNlLnJlZnJlc2gob3B0aW9ucyk7XG4gICAgY29uc3QgaXNSZWZyZXNoQ2FsbGVkID0gdW50cmFja2VkKCgpID0+IHRoaXMuaXNSZWZyZXNoQ2FsbGVkKCkpO1xuICAgIGlmICh0aGlzLmZldGNoRGF0YU1vZGUgPT09ICdtYW51YWwnICYmICFpc1JlZnJlc2hDYWxsZWQpIHtcbiAgICAgIHRoaXMuaXNSZWZyZXNoQ2FsbGVkLnNldCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YVBhZ2VyICYmIG9wdGlvbnMucmVzZXQpIHtcbiAgICAgIHRoaXMuZGF0YVBhZ2VyLmdvRmlyc3RQYWdlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlUm93SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUgKiB0aGlzLnBhZ2UoKSArIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZG91YmxlLWNsaWNrIG9uIHJlc2l6ZSBoYW5kbGUgdG8gYXV0by1maXQgY29sdW1uIHdpZHRoLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgbW91c2UgZXZlbnQgZnJvbSB0aGUgZG91YmxlLWNsaWNrXG4gICAqIEBwYXJhbSBjb2x1bW5JbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgY29sdW1uIHRvIGF1dG8tZml0XG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvblJlc2l6ZUhhbmRsZXJEb3VibGVDbGljayhldmVudDogTW91c2VFdmVudCwgY29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hdXRvRml0Q29sdW1uKGNvbHVtbkluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uUmVzaXplQ29sdW1uU3RhcnQoZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbHVtbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ29sdW1uU2l6ZUNoYW5nZWQuZW1pdCh7XG4gICAgICB0eXBlOiAnc3RhcnQnLFxuICAgICAgZGF0YToge1xuICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgIHdpZHRoOiB0aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbkluZGV4KS53aWR0aCxcbiAgICAgICAgZGF0YUZpZWxkOiB0aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbkluZGV4KS5uYW1lLFxuICAgICAgfSxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgIH0pO1xuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC5zdGFydFggPSBldmVudC5wYWdlWDtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRXaWR0aCA9IHBhcnNlSW50KHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQuc3R5bGUud2lkdGgpO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4O1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplQ29sdW1uTW92ZSk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVDb2x1bW5FbmQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIG9uUmVzaXplQ29sdW1uTW92ZSA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGRpZmZYID0gZXZlbnQucGFnZVggLSB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRYO1xuICAgIGNvbnN0IG5ld1dpZHRoID0gdGhpcy5ydGwgPyB0aGlzLnJlc2l6ZUNvbHVtblByb3Auc3RhcnRXaWR0aCAtIGRpZmZYIDogdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnN0YXJ0V2lkdGggKyBkaWZmWDtcbiAgICB0aGlzLnJlc2l6ZUNvbHVtblByb3AudGhFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7TWF0aC5tYXgoMTAwLCBuZXdXaWR0aCl9cHhgO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcC50aEVsZW1lbnQuc2V0QXR0cmlidXRlKCduZXctd2lkdGgnLCBgJHtuZXdXaWR0aH1gKTtcbiAgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgb25SZXNpemVDb2x1bW5FbmQgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblJlc2l6ZUNvbHVtbk1vdmUpO1xuICAgICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUNvbHVtbkVuZCk7XG4gICAgfVxuICAgIGNvbnN0IG5ld1dpZHRoID0gcGFyc2VJbnQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnbmV3LXdpZHRoJyk/LnZhbHVlKTtcbiAgICB0aGlzLmNvbHVtbnMuZ2V0KHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCkud2lkdGggPSBgJHtNYXRoLm1heCgxMDAsIG5ld1dpZHRoKX1weGA7XG5cbiAgICB0aGlzLm9uQ29sdW1uU2l6ZUNoYW5nZWQuZW1pdCh7XG4gICAgICB0eXBlOiAnZW5kJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY29sdW1uSW5kZXg6IHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCxcbiAgICAgICAgd2lkdGg6IHRoaXMuY29sdW1ucy5nZXQodGhpcy5yZXNpemVDb2x1bW5Qcm9wLmNvbHVtbkluZGV4KS53aWR0aCxcbiAgICAgICAgZGF0YUZpZWxkOiB0aGlzLmNvbHVtbnMuZ2V0KHRoaXMucmVzaXplQ29sdW1uUHJvcC5jb2x1bW5JbmRleCkubmFtZSxcbiAgICAgIH0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzZXRSZXNpemluZ1Byb2Nlc3MoKTtcbiAgfTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcmVzZXRSZXNpemluZ1Byb2Nlc3MoKSB7XG4gICAgdGhpcy5yZXNpemVDb2x1bW5Qcm9wLnRoRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ25ldy13aWR0aCcpO1xuICAgIHRoaXMucmVzaXplQ29sdW1uUHJvcCA9IHsgc3RhcnRYOiAwLCBzdGFydFdpZHRoOiAwLCBjb2x1bW5JbmRleDogMCwgbmV3Q29sdW1uV2lkdGg6IDAsIHRoRWxlbWVudDogbnVsbCB9O1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZVN0aWNreUNvbHVtbnNQb3NpdGlvbnMoKSB7XG4gICAgbGV0IGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgPSAwO1xuICAgIGxldCBsYXN0U3RhcnRDb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50O1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjb2x1bW4ud2lkdGggYXMgc3RyaW5nKTtcblxuICAgICAgaWYgKGNvbHVtbi5maXhlZCA9PT0gJ3N0YXJ0JyAmJiAhaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGNvbHVtblsnc3RpY2t5U3RhcnQnXSA9IGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgKyAncHgnO1xuICAgICAgICBsYXN0U3RhcnRDb2x1bW4gPSBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkV2lkdGhGcm9tU3RhcnQgKz0gd2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGxhc3RTdGFydENvbHVtbikgbGFzdFN0YXJ0Q29sdW1uWydpc0xhc3RGaXhlZENvbHVtbiddID0gdHJ1ZTtcblxuICAgIGxldCBhY2N1bXVsYXRlZFdpZHRoRnJvbUVuZCA9IDA7XG4gICAgbGV0IGZpcnN0RW5kQ29sdW1uOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudDtcblxuICAgIGZvciAobGV0IGkgPSB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5nZXQoaSk7XG5cbiAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoY29sdW1uLndpZHRoIGFzIHN0cmluZyk7XG5cbiAgICAgIGlmIChjb2x1bW4uZml4ZWQgPT09ICdlbmQnICYmICFpc05hTih3aWR0aCkpIHtcbiAgICAgICAgY29sdW1uWydzdGlja3lFbmQnXSA9IGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kICsgJ3B4JztcbiAgICAgICAgZmlyc3RFbmRDb2x1bW4gPSBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4od2lkdGgpKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkV2lkdGhGcm9tRW5kICs9IHdpZHRoO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmlyc3RFbmRDb2x1bW4pIGZpcnN0RW5kQ29sdW1uWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQXV0by1maXRzIGNvbHVtbnMgdGhhdCBoYXZlIHdpZHRoPSdhdXRvJy5cbiAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgZGF0YSBsb2FkLlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGF1dG9GaXRDb2x1bW5zV2l0aEF1dG9XaWR0aCgpOiB2b2lkIHtcbiAgICBjb25zdCBhdXRvV2lkdGhDb2x1bW5zOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgIC8vIE9ubHkgYXV0by1maXQgaWYgd2lkdGggaXMgZXhwbGljaXRseSBzZXQgdG8gJ2F1dG8nXG4gICAgICBpZiAoY29sdW1uLndpZHRoID09PSAnYXV0bycpIHtcbiAgICAgICAgYXV0b1dpZHRoQ29sdW1ucy5wdXNoKGluZGV4KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmF1dG9GaXRDb2x1bW4oaW5kZXgsIHsgbWF4V2lkdGg6IDUwMCB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gYXV0by1maXQgY29sdW1uICR7aW5kZXh9OmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGF1dG9XaWR0aENvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgQXV0by1maXR0ZWQgJHthdXRvV2lkdGhDb2x1bW5zLmxlbmd0aH0gY29sdW1uKHMpIHdpdGggd2lkdGg9J2F1dG8nOiBpbmRpY2VzICR7YXV0b1dpZHRoQ29sdW1ucy5qb2luKCcsICcpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRvLWZpdHMgYWxsIGNvbHVtbnMgd2lkdGggYmFzZWQgb24gdGhlaXIgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnMuc2tpcEZpeGVkIC0gSWYgdHJ1ZSwgc2tpcHMgZml4ZWQgY29sdW1ucyAoZGVmYXVsdDogdHJ1ZSlcbiAgICogQHBhcmFtIG9wdGlvbnMuc2tpcExvYWRpbmcgLSBJZiB0cnVlLCBza2lwcyBpZiBkYXRhIGlzIGxvYWRpbmcgKGRlZmF1bHQ6IHRydWUpXG4gICAqIEBwYXJhbSBvcHRpb25zLm1heFdpZHRoIC0gTWF4aW11bSB3aWR0aCBmb3IgYW55IGNvbHVtbiBpbiBwaXhlbHMgKGRlZmF1bHQ6IDUwMClcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgcHVibGljIGF1dG9GaXRBbGxDb2x1bW5zKFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHNraXBGaXhlZD86IGJvb2xlYW47XG4gICAgICBza2lwTG9hZGluZz86IGJvb2xlYW47XG4gICAgICBtYXhXaWR0aD86IG51bWJlcjtcbiAgICB9ID0ge30sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2tpcEZpeGVkID0gdHJ1ZSwgc2tpcExvYWRpbmcgPSB0cnVlLCBtYXhXaWR0aCA9IDUwMCB9ID0gb3B0aW9ucztcblxuICAgIC8vIFNraXAgaWYgbG9hZGluZ1xuICAgIGlmIChza2lwTG9hZGluZyAmJiB0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0Nhbm5vdCBhdXRvLWZpdCBjb2x1bW5zIHdoaWxlIGRhdGEgaXMgbG9hZGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEF1dG8tZml0IGVhY2ggY29sdW1uXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgIC8vIFNraXAgZml4ZWQgY29sdW1ucyBpZiByZXF1ZXN0ZWRcbiAgICAgIGlmIChza2lwRml4ZWQgJiYgY29sdW1uLmZpeGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gU2tpcCBpZiBjb2x1bW4gZG9lc24ndCBhbGxvdyByZXNpemluZ1xuICAgICAgaWYgKCFjb2x1bW4uYWxsb3dSZXNpemluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuYXV0b0ZpdENvbHVtbihpbmRleCwgeyBtYXhXaWR0aCB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBhdXRvLWZpdCBjb2x1bW4gJHtpbmRleH06YCwgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZml0cyBhIGNvbHVtbiB3aWR0aCBiYXNlZCBvbiBpdHMgY29udGVudC5cbiAgICogU2ltaWxhciB0byBFeGNlbCdzIFwiQXV0b0ZpdCBDb2x1bW4gV2lkdGhcIiBmZWF0dXJlLlxuICAgKiBVc2VzIGFuIGludmlzaWJsZSBoZWxwZXIgdGFibGUgdG8gbWVhc3VyZSBhY3R1YWwgY29udGVudCB3aWR0aCB3aXRob3V0IGFmZmVjdGluZyB0aGUgbWFpbiB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdG8gYXV0by1maXQgKDAtYmFzZWQsIGJhc2VkIG9uIGNvbHVtbnMgUXVlcnlMaXN0KVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0aW9ucy5tYXhXaWR0aCAtIE1heGltdW0gd2lkdGggZm9yIHRoZSBjb2x1bW4gaW4gcGl4ZWxzIChkZWZhdWx0OiBub25lKVxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBwdWJsaWMgYXV0b0ZpdENvbHVtbihjb2x1bW5JbmRleDogbnVtYmVyLCBvcHRpb25zOiB7IG1heFdpZHRoPzogbnVtYmVyIH0gPSB7fSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSW5kZXgpO1xuICAgIGlmICghY29sdW1uKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENvbHVtbiBhdCBpbmRleCAke2NvbHVtbkluZGV4fSBub3QgZm91bmRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICBpZiAoIWhvc3RFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWFpblRhYmxlID0gaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcigndGFibGUnKTtcbiAgICBpZiAoIW1haW5UYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZpbmQgYWN0dWFsIGNvbHVtbiBpbmRleCBpbiByZW5kZXJlZCB0YWJsZSAoYWNjb3VudGluZyBmb3IgZml4ZWQgY29sdW1ucylcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gWy4uLnRoaXMuc3RhcnRGaXhlZENvbHVtbnNMaXN0KCksIC4uLnRoaXMubm9ybWFsQ29sdW1uc0xpc3QoKSwgLi4udGhpcy5lbmRGaXhlZENvbHVtbnNMaXN0KCldO1xuICAgIGNvbnN0IGFjdHVhbENvbHVtbkluZGV4ID0gYWxsQ29sdW1ucy5maW5kSW5kZXgoKGMpID0+IGMgPT09IGNvbHVtbik7XG5cbiAgICBpZiAoYWN0dWFsQ29sdW1uSW5kZXggPT09IC0xKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0NvbHVtbiBub3QgZm91bmQgaW4gcmVuZGVyZWQgdGFibGUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW52aXNpYmxlIGhlbHBlciB0YWJsZVxuICAgIGNvbnN0IGhlbHBlclRhYmxlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpO1xuICAgIGhlbHBlclRhYmxlLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBoZWxwZXJUYWJsZS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgaGVscGVyVGFibGUuc3R5bGUudGFibGVMYXlvdXQgPSAnYXV0byc7XG4gICAgaGVscGVyVGFibGUuc3R5bGUud2lkdGggPSAnYXV0byc7XG4gICAgaGVscGVyVGFibGUuc3R5bGUudG9wID0gJy05OTk5cHgnO1xuICAgIGhlbHBlclRhYmxlLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7XG5cbiAgICAvLyBDb3B5IHN0eWxlcyBmcm9tIG1haW4gdGFibGVcbiAgICBjb25zdCBtYWluVGFibGVTdHlsZSA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LmdldENvbXB1dGVkU3R5bGUobWFpblRhYmxlKTtcbiAgICBpZiAobWFpblRhYmxlU3R5bGUpIHtcbiAgICAgIGhlbHBlclRhYmxlLnN0eWxlLmZvbnRTaXplID0gbWFpblRhYmxlU3R5bGUuZm9udFNpemU7XG4gICAgICBoZWxwZXJUYWJsZS5zdHlsZS5mb250RmFtaWx5ID0gbWFpblRhYmxlU3R5bGUuZm9udEZhbWlseTtcbiAgICAgIGhlbHBlclRhYmxlLnN0eWxlLmZvbnRXZWlnaHQgPSBtYWluVGFibGVTdHlsZS5mb250V2VpZ2h0O1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChoZWxwZXJUYWJsZSk7XG5cbiAgICBsZXQgbWF4V2lkdGggPSAwO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIE1lYXN1cmUgaGVhZGVyIGNlbGxcbiAgICAgIGNvbnN0IGhlYWRlclJvdyA9IG1haW5UYWJsZS5xdWVyeVNlbGVjdG9yKCd0aGVhZCB0cicpO1xuICAgICAgaWYgKGhlYWRlclJvdykge1xuICAgICAgICBjb25zdCBoZWFkZXJDZWxscyA9IGhlYWRlclJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpO1xuICAgICAgICBpZiAoaGVhZGVyQ2VsbHMubGVuZ3RoID4gYWN0dWFsQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICBjb25zdCBoZWFkZXJDZWxsID0gaGVhZGVyQ2VsbHNbYWN0dWFsQ29sdW1uSW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgICAgLy8gQ2xvbmUgaGVhZGVyIGNlbGwgdG8gaGVscGVyIHRhYmxlXG4gICAgICAgICAgY29uc3QgaGVscGVyVGhlYWQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoZWFkJyk7XG4gICAgICAgICAgY29uc3QgaGVscGVyVHIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICAgICAgY29uc3QgaGVscGVyVGggPSBoZWFkZXJDZWxsLmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICBoZWxwZXJUaC5zdHlsZS53aWR0aCA9ICdhdXRvJztcbiAgICAgICAgICBoZWxwZXJUaC5zdHlsZS53aGl0ZVNwYWNlID0gJ25vd3JhcCc7XG4gICAgICAgICAgaGVscGVyVHIuYXBwZW5kQ2hpbGQoaGVscGVyVGgpO1xuICAgICAgICAgIGhlbHBlclRoZWFkLmFwcGVuZENoaWxkKGhlbHBlclRyKTtcbiAgICAgICAgICBoZWxwZXJUYWJsZS5hcHBlbmRDaGlsZChoZWxwZXJUaGVhZCk7XG5cbiAgICAgICAgICAvLyBGb3JjZSBsYXlvdXQgY2FsY3VsYXRpb25cbiAgICAgICAgICBjb25zdCBoZWFkZXJXaWR0aCA9IGhlbHBlclRoLm9mZnNldFdpZHRoO1xuICAgICAgICAgIG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIGhlYWRlcldpZHRoKTtcblxuICAgICAgICAgIGhlbHBlclRhYmxlLnJlbW92ZUNoaWxkKGhlbHBlclRoZWFkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBNZWFzdXJlIGJvZHkgY2VsbHNcbiAgICAgIGNvbnN0IGJvZHlSb3dzID0gbWFpblRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5IHRyOm5vdCguZW1wdHktcm93KScpO1xuICAgICAgY29uc3QgaGVscGVyVGJvZHkgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5Jyk7XG4gICAgICBoZWxwZXJUYWJsZS5hcHBlbmRDaGlsZChoZWxwZXJUYm9keSk7XG5cbiAgICAgIC8vIFNhbXBsZSBmaXJzdCAyMCByb3dzIGZvciBwZXJmb3JtYW5jZSAoeW91IGNhbiBhZGp1c3QgdGhpcylcbiAgICAgIGNvbnN0IHNhbXBsZVNpemUgPSBNYXRoLm1pbigyMCwgYm9keVJvd3MubGVuZ3RoKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2FtcGxlU2l6ZTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IGJvZHlSb3dzW2ldO1xuICAgICAgICBjb25zdCBjZWxscyA9IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpO1xuXG4gICAgICAgIGlmIChjZWxscy5sZW5ndGggPiBhY3R1YWxDb2x1bW5JbmRleCkge1xuICAgICAgICAgIGNvbnN0IGNlbGwgPSBjZWxsc1thY3R1YWxDb2x1bW5JbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAvLyBDbG9uZSBjZWxsIHRvIGhlbHBlciB0YWJsZVxuICAgICAgICAgIGNvbnN0IGhlbHBlclRyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuICAgICAgICAgIGNvbnN0IGhlbHBlclRkID0gY2VsbC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgaGVscGVyVGQuc3R5bGUud2lkdGggPSAnYXV0byc7XG4gICAgICAgICAgaGVscGVyVGQuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgICAgICAgIGhlbHBlclRyLmFwcGVuZENoaWxkKGhlbHBlclRkKTtcbiAgICAgICAgICBoZWxwZXJUYm9keS5hcHBlbmRDaGlsZChoZWxwZXJUcik7XG5cbiAgICAgICAgICAvLyBGb3JjZSBsYXlvdXQgY2FsY3VsYXRpb25cbiAgICAgICAgICBjb25zdCBjZWxsV2lkdGggPSBoZWxwZXJUZC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICBtYXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoLCBjZWxsV2lkdGgpO1xuXG4gICAgICAgICAgaGVscGVyVGJvZHkucmVtb3ZlQ2hpbGQoaGVscGVyVHIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBzb21lIHBhZGRpbmcgZm9yIGJldHRlciBVWFxuICAgICAgbGV0IGZpbmFsV2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCArIDQwLCAxMDApOyAvLyBNaW5pbXVtIDEwMHB4LCBhZGQgNDBweCBwYWRkaW5nXG5cbiAgICAgIC8vIEFwcGx5IG1heCB3aWR0aCBpZiBzcGVjaWZpZWRcbiAgICAgIGlmIChvcHRpb25zLm1heFdpZHRoKSB7XG4gICAgICAgIGZpbmFsV2lkdGggPSBNYXRoLm1pbihmaW5hbFdpZHRoLCBvcHRpb25zLm1heFdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IGNvbHVtbiB3aWR0aFxuICAgICAgY29sdW1uLndpZHRoID0gYCR7ZmluYWxXaWR0aH1weGA7XG5cbiAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB0byB1cGRhdGUgdGhlIHZpZXdcbiAgICAgIHRoaXMuY29sdW1uc0xpc3Quc2V0KFsuLi50aGlzLmNvbHVtbnNMaXN0KCldKTtcblxuICAgICAgLy8gUmVjYWxjdWxhdGUgc3RpY2t5IHBvc2l0aW9ucyBpZiBjb2x1bW4gaXMgZml4ZWRcbiAgICAgIGlmIChjb2x1bW4uZml4ZWQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVTdGlja3lDb2x1bW5zUG9zaXRpb25zKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuXG4gICAgICAvLyBFbWl0IGNvbHVtbiBzaXplIGNoYW5nZWQgZXZlbnRcbiAgICAgIHRoaXMub25Db2x1bW5TaXplQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgdHlwZTogJ2VuZCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBjb2x1bW5JbmRleDogY29sdW1uSW5kZXgsXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgICAgICBkYXRhRmllbGQ6IGNvbHVtbi5uYW1lLFxuICAgICAgICB9LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFuIHVwIGhlbHBlciB0YWJsZVxuICAgICAgaWYgKGhlbHBlclRhYmxlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGhlbHBlclRhYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWhlYWRlclwiPiA8L25nLWNvbnRlbnQ+XG48ZGl2IGNsYXNzPVwiYXgtZGF0YS10YWJsZS13cmFwcGVyXCI+XG4gIDx0YWJsZT5cbiAgICBAaWYgKHNob3dIZWFkZXIpIHtcbiAgICAgIDx0aGVhZCBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXInOiBmaXhlZEhlYWRlciB9XCI+XG4gICAgICAgIDx0clxuICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFhbGxvd1Jlb3JkZXJpbmdcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrU2Nyb2xsYWJsZVxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICBAZm9yIChjIG9mIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtaGVhZC1jZWxsIHN0aWNreS1zdGFydFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWxhc3RdPVwiY1snaXNMYXN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1zdGFydF09XCJjWydzdGlja3lTdGFydCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChjIG9mIG5vcm1hbENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1oZWFkLWNlbGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW50ZXJhY3RpdmVdPVwiYy5hbGxvd1NvcnRpbmdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1oZWFkZXItY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGMuYWxsb3dSZXNpemluZyAmJiAhYy5maXhlZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtcmVzaXplLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUmVzaXplQ29sdW1uU3RhcnQoJGV2ZW50LCB0aGlzLnN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpLmxlbmd0aCArICRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uUmVzaXplSGFuZGxlckRvdWJsZUNsaWNrKCRldmVudCwgdGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiRG91YmxlLWNsaWNrIHRvIGF1dG8tZml0IGNvbHVtbiB3aWR0aFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICBAZm9yIChjIG9mIGVuZEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLWhlYWQtY2VsbCBzdGlja3ktZW5kXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtZmlyc3RdPVwiY1snaXNGaXJzdEZpeGVkQ29sdW1uJ11cIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1zdGlja3ktZW5kXT1cImNbJ3N0aWNreUVuZCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBjLCByb3dzOiBkaXNwbGF5ZWRSb3dzKCksIHJvd0luZGV4OiAkaW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiYXgtaWNvbiB7eyBnZXRTb3J0KGMpIH19XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgfVxuICAgIDx0Ym9keSBbbmdDbGFzc109XCJ7ICdheC1kYXRhLXRhYmxlLXJvdy1hbHRlcm5hdGl2ZSc6IGFsdGVybmF0aXZlIH1cIj5cbiAgICAgIEBpZiAoc2hvd05vRGF0YUxvYWRlZFlldCkge1xuICAgICAgICA8dHIgc3R5bGU9XCJkaXNwbGF5OiBpbmhlcml0XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1lbXB0eS1kYXRhXCIgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zTGlzdCgpLmxlbmd0aCArIDFcIj5cbiAgICAgICAgICAgIEBpZiAobm9EYXRhVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJub0RhdGFUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdAYWNvcmV4OmNvbW1vbi5nZW5lcmFsLm5vLWRhdGEteWV0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICB9IEBlbHNlIGlmICghZGlzcGxheWVkUm93cygpLmxlbmd0aCkge1xuICAgICAgICA8dHIgc3R5bGU9XCJkaXNwbGF5OiBpbmhlcml0XCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1lbXB0eS1kYXRhXCIgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zTGlzdCgpLmxlbmd0aCArIDFcIj5cbiAgICAgICAgICAgIEBpZiAoZW1wdHlUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3Bhbj57eyAnQGFjb3JleDpjb21tb24uZ2VuZXJhbC5uby1yZWNvcmQnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheWVkUm93cygpOyBsZXQgcm93SW5kZXggPSAkaW5kZXg7IHRyYWNrIHJvd0luZGV4KSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXRhOiB7IHJvdywgcm93SW5kZXggfSB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3Jvd1RlbXAgbGV0LWRhdGE9XCJkYXRhXCI+XG4gICAgICAgICAgQGlmIChyb3dUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGRhdGEucm93SW5kZXggfSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1mb2N1c2VkXT1cImZvY3VzZWRSb3cgJiYgZGF0YS5yb3cgPT09IGZvY3VzZWRSb3dcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cImRhdGEucm93SW5kZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGRhdGEucm93KVwiXG4gICAgICAgICAgICAgIHN0eWxlLmhlaWdodD1cInt7IGl0ZW1IZWlnaHQgfX1weFwiXG4gICAgICAgICAgICAgIHN0eWxlLm1heC1oZWlnaHQ9XCJ7eyBpdGVtSGVpZ2h0IH19cHhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlUm93Q2xpY2soJGV2ZW50LCBkYXRhLnJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAZm9yIChjIG9mIHN0YXJ0Rml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktc3RhcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtbGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1zdGFydF09XCJjWydzdGlja3lTdGFydCddXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbGFiZWxdPVwiYy5jYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKGRhdGEucm93ICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJDZWxsVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgZGF0YTogZGF0YS5yb3csIHJvd0luZGV4OiBjYWxjdWxhdGVSb3dJbmRleChkYXRhLnJvd0luZGV4KSB9LFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChjLmxvYWRpbmdFbmFibGVkICYmIGxvYWRpbmcuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9hZGluZy5sb2FkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGZvciAoYyBvZiBub3JtYWxDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbGFiZWxdPVwiYy5jYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWRhdGEtdGFibGUtY2VsbC10b29sdGlwLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICBbYXhUb29sdGlwXT1cImRhdGEucm93ICYmICFpc0xvYWRpbmcoKSA/IGdldENlbGxUb29sdGlwVGV4dChjLCBkYXRhLnJvdykgfHwgbnVsbCA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGEucm93ICYmICFpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyQ2VsbFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobG9hZGluZy5sb2FkaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHRkPjxkaXYgY2xhc3M9XCJheC1iZ1wiPjwvZGl2PjwvdGQ+XG4gICAgICAgICAgICAgIEBmb3IgKGMgb2YgZW5kRml4ZWRDb2x1bW5zTGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLXRhYmxlLXN0aWNreS1ib2R5LWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktZW5kXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXN0aWNreS1lbmRdPVwiY1snc3RpY2t5RW5kJ11cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjLmNzc0NsYXNzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZGF0YS5yb3cgJiYgIWlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBkYXRhOiBkYXRhLnJvdywgcm93SW5kZXg6IGNhbGN1bGF0ZVJvd0luZGV4KGRhdGEucm93SW5kZXgpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKGMubG9hZGluZ0VuYWJsZWQgJiYgbG9hZGluZy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nLmxvYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJsb2FkaW5nLmFuaW1hdGlvblwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIEBpZiAoZGF0YS5yb3c/Ll9fbWV0YV9fPy5leHBhbmRlZCkge1xuICAgICAgICAgICAgICBAaWYgKHJvd0RldGFpbHNUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGMgb2Ygc3RhcnRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktc3RhcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWxhc3RdPVwiY1snaXNMYXN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LXN0YXJ0XT1cImNbJ3N0aWNreVN0YXJ0J11cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWJnXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXJvdy1kZXRhaWxzXCIgW2F0dHIuY29sc3Bhbl09XCJub3JtYWxDb2x1bW5zTGlzdCgpLmxlbmd0aCArIDFcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd0RldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGRhdGEucm93LCByb3dJbmRleDogZGF0YS5yb3dJbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgQGZvciAoYyBvZiBlbmRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiYy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWJvZHktY2VsbF09XCJjLmZpeGVkICYmIGMud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGlja3ktZW5kXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1pcy1maXJzdF09XCJjWydpc0ZpcnN0Rml4ZWRDb2x1bW4nXVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LWVuZF09XCJjWydzdGlja3lFbmQnXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYmdcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBmb3IgKGNoaWxkUm93IG9mIGRhdGEucm93LmNoaWxkcmVuOyBsZXQgY2hpbGRSb3dJbmRleCA9ICRpbmRleDsgdHJhY2sgY2hpbGRSb3dJbmRleCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJvd1RlbXBcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZGF0YTogeyByb3c6IGNoaWxkUm93LCByb3dJbmRleDogY2hpbGRSb3dJbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj48L3RyPlxuICAgICAgfVxuICAgIDwvdGJvZHk+XG4gICAgQGlmIChzaG93Rm9vdGVyKSB7XG4gICAgICA8dGZvb3QgW25nQ2xhc3NdPVwieyAnYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyJzogZml4ZWRGb290ZXIgfVwiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgQGZvciAoYyBvZiBzdGFydEZpeGVkQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLXRhYmxlLXN0aWNreS1mb290ZXItY2VsbCBzdGlja3ktc3RhcnRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtaXMtbGFzdF09XCJjWydpc0xhc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LXN0YXJ0XT1cImNbJ3N0aWNreVN0YXJ0J11cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyRm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKGMgb2Ygbm9ybWFsQ29sdW1uc0xpc3QoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImMuYWxsb3dTb3J0aW5nID8gaGFuZGxlQ29sdW1uQ2xpY2soJGV2ZW50LCBjKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS10YWJsZS1zdGlja3ktaGVhZGVyLWNlbGxdPVwiYy5maXhlZCAmJiBjLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImMucmVuZGVyRm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGMsIHJvd3M6IGRpc3BsYXllZFJvd3MoKSwgcm93SW5kZXg6ICRpbmRleCB9IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYgKGdldFNvcnQoYykpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChjLmFsbG93UmVzaXppbmcgJiYgIWMuZml4ZWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXJlc2l6ZS1oYW5kbGVcIlxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJlc2l6ZUNvbHVtblN0YXJ0KCRldmVudCwgdGhpcy5zdGFydEZpeGVkQ29sdW1uc0xpc3QoKS5sZW5ndGggKyAkaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvblJlc2l6ZUhhbmRsZXJEb3VibGVDbGljaygkZXZlbnQsIHRoaXMuc3RhcnRGaXhlZENvbHVtbnNMaXN0KCkubGVuZ3RoICsgJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cIkRvdWJsZS1jbGljayB0byBhdXRvLWZpdCBjb2x1bW4gd2lkdGhcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgQGZvciAoYyBvZiBlbmRGaXhlZENvbHVtbnNMaXN0KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS10YWJsZS1zdGlja3ktZm9vdGVyLWNlbGwgc3RpY2t5LWVuZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnRlcmFjdGl2ZV09XCJjLmFsbG93U29ydGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjLmFsbG93U29ydGluZyA/IGhhbmRsZUNvbHVtbkNsaWNrKCRldmVudCwgYykgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtdGFibGUtc3RpY2t5LWhlYWRlci1jZWxsXT1cImMuZml4ZWQgJiYgYy53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWlzLWZpcnN0XT1cImNbJ2lzRmlyc3RGaXhlZENvbHVtbiddXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tc3RpY2t5LWVuZF09XCJjWydzdGlja3lFbmQnXVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJGb290ZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgZGF0YTogYywgcm93czogZGlzcGxheWVkUm93cygpLCByb3dJbmRleDogJGluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0U29ydChjKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24ge3sgZ2V0U29ydChjKSB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rmb290PlxuICAgIH1cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG5AaWYgKHBhZ2luZykge1xuICA8ZGl2IGNsYXNzPVwiYXgtdGFibGUtZm9vdGVyXCIgI2Zvb3RlckNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2N1c3RvbVBhZ2VyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZGF0YS1wYWdlclwiPjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgQGlmIChjdXN0b21EYXRhUGFnZXIpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tUGFnZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxheC1kYXRhLXBhZ2VyXG4gICAgICAgICNkYXRhUGFnZXJcbiAgICAgICAgW2Rpc3BsYXlNb2RlXT1cIidjdXN0b20nXCJcbiAgICAgICAgKG9uQ2hhbmdlZCk9XCJoYW5kbGVDaGFuZ2VQYWdlKCRldmVudClcIlxuICAgICAgICBbdG90YWxdPVwiZGF0YVNvdXJjZS50b3RhbENvdW50XCJcbiAgICAgICAgW3NpemVdPVwiZGF0YVNvdXJjZS5wYWdlU2l6ZVwiXG4gICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxuICAgICAgPlxuICAgICAgICA8YXgtcHJlZml4IGNsYXNzPVwiYXgtZGF0YS10YWJsZS1udW1lcmljLXBhZ2luZ1wiPlxuICAgICAgICAgIDxheC1kYXRhLXBhZ2VyLW51bWVyaWMtc2VsZWN0b3I+IDwvYXgtZGF0YS1wYWdlci1udW1lcmljLXNlbGVjdG9yPlxuICAgICAgICAgIDxheC1kYXRhLXBhZ2VyLXBhZ2Utc2l6ZXM+IDwvYXgtZGF0YS1wYWdlci1wYWdlLXNpemVzPlxuICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgPGF4LXByZWZpeCBjbGFzcz1cImF4LWRhdGEtdGFibGUtaW5wdXQtcGFnaW5nXCI+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItcHJldi1idXR0b25zPiA8L2F4LWRhdGEtcGFnZXItcHJldi1idXR0b25zPlxuICAgICAgICAgIDxheC1kYXRhLXBhZ2VyLWlucHV0LXNlbGVjdG9yPiA8L2F4LWRhdGEtcGFnZXItaW5wdXQtc2VsZWN0b3I+XG4gICAgICAgICAgPGF4LWRhdGEtcGFnZXItbmV4dC1idXR0b25zPiA8L2F4LWRhdGEtcGFnZXItbmV4dC1idXR0b25zPlxuICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgPGF4LXN1ZmZpeCBjbGFzcz1cImF4LWRhdGEtdGFibGUtaW5mb1wiPlxuICAgICAgICAgIDxheC1kYXRhLXBhZ2VyLWluZm8+IDwvYXgtZGF0YS1wYWdlci1pbmZvPlxuICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cInJlZnJlc2goeyByZXNldDogZmFsc2UgfSlcIj5cbiAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIGF4LWljb24tcmVmcmVzaFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICA8L2F4LWRhdGEtcGFnZXI+XG4gICAgfVxuICA8L2Rpdj5cbn1cbjxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPiA8L25nLWNvbnRlbnQ+XG4iXX0=","import { AXComponent, AXListDataSource, AXPagedComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ContentChildren, DOCUMENT, ElementRef, EventEmitter, Input, NgZone, Output, PLATFORM_ID, QueryList, TemplateRef, ViewChild, ViewEncapsulation, inject, signal, } from '@angular/core';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollableElement, } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet, isPlatformBrowser } from '@angular/common';\nimport sum from 'lodash-es/sum';\nimport { Subject, buffer, debounceTime, filter } from 'rxjs';\nimport { AXBaseDataTable, } from '../base-data-table.class';\nimport { AXDataTableColumnComponent } from '../columns/data-table-column';\nimport { AXDataTableTextColumnComponent } from '../columns/data-text-column.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Component for a data table with infinite scrolling capabilities.\n *\n * @category Components\n */\nexport class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {\n constructor() {\n super(...arguments);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.ngZone = inject(NgZone);\n /**\n * Emits an event when the page changes.\n *\n * @event\n */\n this.onPageChanged = new EventEmitter();\n /**\n * @ignore\n */\n this.clickSubject = new Subject();\n /**\n * Emits an event when a row is clicked.\n *\n * @event\n */\n this.onRowClick = new EventEmitter();\n /**\n * Emits an event when a row is double-clicked.\n *\n * @event\n */\n this.onRowDbClick = new EventEmitter();\n /**\n * Controls the visibility of the table header.\n *\n * @defaultValue true\n */\n this.showHeader = true;\n /**\n * Defines the mode for fetching data.\n *\n * @defaultValue 'auto'\n */\n this.fetchDataMode = 'auto';\n /**\n * Configuration for the loading state of the data table.\n *\n * @defaultValue { enabled: true, animation: true }\n */\n this.loading = {\n enabled: true,\n animation: true,\n };\n /**\n * @ignore\n */\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n /**\n * @ignore\n */\n this.hasItems = false;\n /**\n * @ignore\n */\n this.totalRows = 0;\n /**\n * @ignore\n */\n this.currentPage = 0;\n /**\n * @ignore\n */\n this.totalPages = 0;\n /**\n * @ignore\n */\n this.startRowIndex = 0;\n /**\n * @ignore\n */\n this.lastIndex = 0;\n /**\n * Event emitted when the focused row changes.\n *\n * @event\n */\n this.focusedRowChange = new EventEmitter();\n /**\n * Defines the height of each item in the table.\n *\n * @default 40\n */\n this.itemHeight = 40;\n /**\n * @ignore\n */\n this.width = '100%';\n /**\n * @ignore\n */\n this.height = '100%';\n /**\n * Emitted when the scroll index changes in the table.\n *\n * @event\n */\n this.onScrolledIndexChanged = new EventEmitter();\n }\n /**\n * @ignore\n */\n startFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];\n }\n /**\n * @ignore\n */\n endFixedColumn() {\n return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumn() {\n return this.columns?.toArray().filter((c) => !c.fixed) ?? [];\n }\n /**\n * @ignore\n */\n notFixedColumnCount() {\n return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;\n }\n /**\n * @ignore\n */\n fixedColumnCount() {\n return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;\n }\n /**\n * Retrieves the currently focused row.\n */\n get focusedRow() {\n return this._focusedRow;\n }\n /**\n * Sets the currently focused row and emits a change event.\n *\n * @param v - The row data to be set as focused.\n */\n set focusedRow(v) {\n this._focusedRow = v;\n this.focusedRowChange.emit(v);\n }\n trackByIdx(i) {\n return i;\n }\n /**\n * @ignore\n */\n ngOnInit() {\n super.ngOnInit();\n this.listDataSource = new AXListDataSource({\n source: this.dataSource,\n });\n this.listDataSource.source.onLoadingChanged.subscribe((data) => {\n this.isLoading.set(data);\n });\n this.listDataSource.source.onChanged.subscribe((data) => {\n this.totalRows = data.totalCount;\n this.hasItems = data.totalCount > 0;\n setTimeout(() => {\n this.render();\n }, 100);\n });\n //\n this.clickSubject\n .pipe(buffer(this.clickSubject.pipe(debounceTime(250))), filter((clickArray) => clickArray.length === 2))\n .subscribe((clickArray) => {\n this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);\n });\n }\n /**\n * @ignore\n */\n _handleOnscrolledIndexChange(e) {\n this.lastIndex = e;\n this.onScrolledIndexChanged.emit({\n component: this,\n index: this.lastIndex,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n ngDoCheck() {\n //this.copyFixedColumns();\n this.updateHScroll();\n //\n this.updateWidth();\n this.updateHeight();\n //\n this.updateTotalCount();\n }\n /**\n * @ignore\n */\n updateTotalCount() {\n this.startRowIndex = this.lastIndex;\n if (this.startRowIndex < 1)\n this.startRowIndex = 1;\n if (this.startRowIndex > this.totalRows)\n this.startRowIndex = this.totalRows;\n }\n /**\n * @ignore\n */\n updateHeight() {\n this.height = `calc(100% - ${(this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)}px)`;\n }\n /**\n * @ignore\n */\n updateWidth() {\n if (this.columns && this.columns.length) {\n const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));\n this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;\n }\n }\n /**\n * @ignore\n */\n updateHScroll() {\n this.ngZone.runOutsideAngular(() => {\n if (this.headerContainer) {\n const headerContainer = this.headerContainer.nativeElement;\n const left = this.scrollableContainer.nativeElement.scrollLeft;\n headerContainer.style.transform = `translateX(${-left}px)`;\n }\n });\n }\n /**\n * @ignore\n */\n // Function to copy fixed columns\n copyFixedColumns() {\n const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));\n const fixedColumnTable = this.getHostElement().querySelector('.ax-body-fixed-columns > table > tbody');\n fixedColumnTable.querySelectorAll('tr').forEach((n) => n.remove());\n if (isPlatformBrowser(this.platformID)) {\n for (const row of originalRows) {\n const fixedCells = Array.from(row.querySelectorAll('[data-fixed=\"start\"]'));\n const fixedRow = this.document.createElement('tr');\n for (const cell of fixedCells) {\n const clonedCell = cell.cloneNode(true);\n fixedRow.appendChild(clonedCell);\n }\n fixedColumnTable.appendChild(fixedRow);\n }\n }\n const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;\n fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;\n }\n /**\n * Updates the viewport by checking its size and scrolling to the last index.\n * Marks the component for change detection.\n * @ignore\n */\n render() {\n this.viewport.checkViewportSize();\n this.viewport.scrollToIndex(this.lastIndex);\n this.cdr.markForCheck();\n }\n /**\n * Resets the index to zero and refreshes the data source.\n * @ignore\n */\n refresh() {\n this.lastIndex = 0;\n this.listDataSource.refresh();\n }\n /**\n * @ignore\n */\n handleRowClick(event, item) {\n this.handleRowSingleClick(event, item);\n this.clickSubject.next({ event, item });\n }\n /**\n * @ignore\n */\n handleRowSingleClick(event, item) {\n if (this.focusedRow == item) {\n this.focusedRow = null;\n }\n else {\n this.focusedRow = item;\n }\n //\n this.onRowClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * @ignore\n */\n handleRowDoubleClick(e, item) {\n this.focusedRow = item;\n //\n this.onRowDbClick.emit({\n component: this,\n data: item,\n isUserInteraction: true,\n });\n }\n /**\n * Handles column header clicks to toggle sorting on the column.\n *\n * @param e - The mouse event triggered by the click.\n * @param column - The column that was clicked.\n * @ignore\n */\n handleColumnClick(e, column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n if (!sort) {\n this.dataSource.query.sort.push({\n field: column.dataField,\n dir: 'asc',\n });\n }\n else {\n if (sort.dir == 'asc') {\n sort.dir = 'desc';\n }\n else {\n this.dataSource.query.sort = this.dataSource.query.sort.filter((c) => c != sort);\n }\n }\n this.refresh();\n }\n }\n /**\n * @ignore\n */\n getSort(column) {\n if (column instanceof AXDataTableTextColumnComponent) {\n const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);\n return sort ? (sort.dir == 'asc' ? 'ax-icon-arrow-long-down' : 'ax-icon-arrow-long-up') : undefined;\n }\n return undefined;\n }\n /**\n * @ignore\n */\n _handleOnScroll() {\n this.updateHScroll();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXInfiniteScrollDataTableComponent, isStandalone: true, selector: \"ax-infinite-scroll-data-table\", inputs: { dataSource: \"dataSource\", rowTemplate: \"rowTemplate\", emptyTemplate: \"emptyTemplate\", showHeader: \"showHeader\", fetchDataMode: \"fetchDataMode\", loading: \"loading\", focusedRow: \"focusedRow\", itemHeight: \"itemHeight\" }, outputs: { selectedRowsChange: \"selectedRowsChange\", onPageChanged: \"onPageChanged\", onRowClick: \"onRowClick\", onRowDbClick: \"onRowDbClick\", focusedRowChange: \"focusedRowChange\", onScrolledIndexChanged: \"onScrolledIndexChanged\" }, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], queries: [{ propertyName: \"columns\", predicate: AXDataTableColumnComponent }], viewQueries: [{ propertyName: \"viewport\", first: true, predicate: CdkVirtualScrollViewport, descendants: true, static: true }, { propertyName: \"headerContainer\", first: true, predicate: [\"headerContainer\"], descendants: true }, { propertyName: \"footerContainer\", first: true, predicate: [\"footerContainer\"], descendants: true }, { propertyName: \"scrollableContainer\", first: true, predicate: [\"scrolling\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"c.cssClass\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: CdkVirtualScrollableElement, selector: \"[cdkVirtualScrollingElement]\" }, { kind: \"component\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }, { kind: \"directive\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { kind: \"directive\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }, { kind: \"component\", type: AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"component\", type: AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXInfiniteScrollDataTableComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-infinite-scroll-data-table', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXPagedComponent, useExisting: AXInfiniteScrollDataTableComponent },\n {\n provide: AXBaseDataTable,\n useExisting: AXInfiniteScrollDataTableComponent,\n },\n { provide: AXComponent, useExisting: AXInfiniteScrollDataTableComponent },\n ], outputs: ['selectedRowsChange'], inputs: ['dataSource'], imports: [\n NgTemplateOutlet,\n AXDecoratorIconComponent,\n CdkVirtualScrollableElement,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n AXSkeletonComponent,\n AXButtonComponent,\n ], template: \"<ng-content select=\\\"ax-header\\\"> </ng-content>\\n<!------------------- Header contents ------------------->\\n@if (showHeader) {\\n <div class=\\\"ax-header-content\\\">\\n <div class=\\\"ax-header-columns\\\">\\n <table tabindex=\\\"0\\\" [style.width]=\\\"width\\\" #headerContainer>\\n <thead>\\n <tr>\\n @for (c of notFixedColumn(); track c.name) {\\n <th\\n [class.ax-interactive]=\\\"c.allowSorting\\\"\\n (click)=\\\"c.allowSorting ? handleColumnClick($event, c) : null\\\"\\n [style.width]=\\\"c.width\\\"\\n >\\n <div class=\\\"ax-caption\\\">\\n <ng-container [ngTemplateOutlet]=\\\"c.renderHeaderTemplate\\\"></ng-container>\\n @if (getSort(c)) {\\n <ax-icon icon=\\\"ax-icon {{ getSort(c) }}\\\"></ax-icon>\\n }\\n </div>\\n <!-- @if(c.allowResizing)\\n {\\n <div class=\\\"ax-resize-handle\\\" [ax-table-column-resizble]=\\\"c\\\"></div>\\n } -->\\n </th>\\n }\\n <th></th>\\n </tr>\\n </thead>\\n </table>\\n </div>\\n </div>\\n}\\n\\n<!------------------- Body contents ------------------->\\n<div [style.height]=\\\"height\\\" class=\\\"ax-body-content\\\">\\n <div class=\\\"ax-body-columns\\\">\\n <div cdkVirtualScrollingElement #scrolling [style.height]=\\\"'100%'\\\" (scroll)=\\\"_handleOnScroll()\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight\\\"\\n [style.--item-height]=\\\"itemHeight + 'px'\\\"\\n (scrolledIndexChange)=\\\"_handleOnscrolledIndexChange($event)\\\"\\n >\\n <table tabindex=\\\"0\\\" class=\\\"ax-table-body ax-relative\\\" [style.width]=\\\"width\\\">\\n <colgroup>\\n @for (c of notFixedColumn(); track c.name) {\\n <col [style.width]=\\\"c.width\\\" />\\n }\\n <col />\\n </colgroup>\\n <tbody>\\n <ng-container\\n *cdkVirtualFor=\\\"\\n let item of listDataSource;\\n templateCacheSize: 100;\\n let i = index;\\n trackBy: trackByIdx;\\n let rIndex = index\\n \\\"\\n >\\n <!------------------- custom row template------------------->\\n @if (rowTemplate !== null) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"rowTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n >\\n </ng-container>\\n } @else {\\n <!------------------- normal row template------------------->\\n <tr\\n [class.ax-state-focused]=\\\"focusedRow && item === focusedRow\\\"\\n [attr.data-index]=\\\"rIndex\\\"\\n [class.ax-state-selected]=\\\"selectedRows.includes(item)\\\"\\n (click)=\\\"handleRowClick($event, item)\\\"\\n >\\n <!------------------- start fixed column ------------------->\\n\\n <!------------------- Not fixed column ------------------->\\n @for (c of notFixedColumn(); track c.name) {\\n <td [attr.data-label]=\\\"c.caption\\\" tabindex=\\\"0\\\" [class]=\\\"c.cssClass\\\">\\n @if (item && !isLoading()) {\\n <!------------------- render cell ------------------->\\n <ng-container\\n [ngTemplateOutlet]=\\\"c.renderCellTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: { data: item, rowIndex: rIndex } }\\\"\\n ></ng-container>\\n } @else {\\n <!------------------- render loading ------------------->\\n @if (c.loadingEnabled && loading) {\\n <ax-skeleton [animated]=\\\"loading.animation\\\"></ax-skeleton>\\n }\\n }\\n </td>\\n }\\n <td></td>\\n </tr>\\n }\\n </ng-container>\\n </tbody>\\n </table>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"ax-table-footer\\\" #footerContainer>\\n <div class=\\\"ax-table-info\\\">\\n <div>Showing {{ startRowIndex }} of {{ totalRows }} items</div>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"refresh()\\\">\\n <ax-icon icon=\\\"ax-icon ax-icon-refresh\\\"></ax-icon>\\n </ax-button>\\n </div>\\n <ng-content select=\\\"ax-footer\\\"> </ng-content>\\n</div>\\n\", styles: [\"ax-infinite-scroll-data-table{display:block;height:100%;overflow:hidden;border-radius:var(--ax-sys-border-radius);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));font-size:.875rem;line-height:1.25rem}ax-infinite-scroll-data-table table{table-layout:fixed}ax-infinite-scroll-data-table .ax-header-content{position:relative;height:3rem;overflow:hidden}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th.ax-column-fixed{pointer-events:auto}ax-infinite-scroll-data-table .ax-header-content .ax-header-fixed-columns th:not(.ax-column-fixed){visibility:hidden;background-color:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns{height:100%}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table{height:100%;overflow:hidden;border-start-end-radius:var(--ax-sys-border-radius);border-start-start-radius:var(--ax-sys-border-radius)}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th{border-bottom-width:1px;border-inline-end-width:1px;border-style:solid;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.75rem 1rem;text-align:start;font-weight:500;text-transform:uppercase;position:relative}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive{cursor:pointer}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th.ax-interactive:hover{background-color:rgba(var(--ax-sys-color-secondary-200))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-resize-handle:hover{background-color:rgba(var(--ax-sys-color-secondary-300))}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th .ax-caption{display:flex;align-items:center;gap:.5rem}ax-infinite-scroll-data-table .ax-header-content .ax-header-columns>table th:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content{position:relative}ax-infinite-scroll-data-table .ax-body-content .ax-body-fixed-columns{pointer-events:none;position:absolute;z-index:10}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns{height:100%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table{border-collapse:collapse}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) td{background-color:rgba(var(--ax-sys-color-surface))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:nth-child(2n) ax-skeleton{width:25%}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr{height:2.5rem}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-focused:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-300));color:rgba(var(--ax-sys-color-on-primary-tint))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table tr.ax-state-selected:hover td:not(.ax-index-column){background-color:rgba(var(--ax-sys-color-primary-400));color:rgba(var(--ax-sys-color-on-primary))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td{position:relative;min-width:2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom-width:1px;border-inline-end-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-surface));padding:.5rem 1rem;vertical-align:middle}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-index-column{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(var(--ax-sys-color-surface));text-align:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button.ax-state-disabled{position:relative!important;cursor:not-allowed!important;opacity:.5!important}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column>div{position:absolute;inset-inline-start:0px;top:50%;display:flex;width:100%;transform:translateY(-50%);align-items:center;justify-content:center}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button{position:relative;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:var(--ax-sys-border-radius);border-style:none;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:transparent;padding:.25rem;color:rgba(var(--ax-color-ghost-fore))}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover:not(ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-selected,ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:hover.ax-state-disabled){opacity:.75}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button:active{opacity:1}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td.ax-command-column button .ax-ripple{background-color:rgba(var(--ax-color-ghost-fore),.05)}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td:last-child{border-inline-end-width:0px}ax-infinite-scroll-data-table .ax-body-content .ax-body-columns table td ax-skeleton{height:.875rem;width:33.333333%;border-radius:.375rem}ax-infinite-scroll-data-table .ax-table-footer{border-collapse:collapse;overflow:hidden;border-top-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));padding:.5rem .875rem}ax-infinite-scroll-data-table .ax-table-footer .ax-table-info{display:flex;flex:1 1 0%;align-items:center;justify-content:space-between}\\n\"] }]\n }], propDecorators: { columns: [{\n type: ContentChildren,\n args: [AXDataTableColumnComponent]\n }], onPageChanged: [{\n type: Output\n }], onRowClick: [{\n type: Output\n }], onRowDbClick: [{\n type: Output\n }], rowTemplate: [{\n type: Input\n }], emptyTemplate: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], fetchDataMode: [{\n type: Input\n }], loading: [{\n type: Input\n }], focusedRowChange: [{\n type: Output\n }], focusedRow: [{\n type: Input\n }], itemHeight: [{\n type: Input\n }], viewport: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport, { static: true }]\n }], onScrolledIndexChanged: [{\n type: Output\n }], headerContainer: [{\n type: ViewChild,\n args: ['headerContainer']\n }], footerContainer: [{\n type: ViewChild,\n args: ['footerContainer']\n }], scrollableContainer: [{\n type: ViewChild,\n args: ['scrolling', { static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLXRhYmxlL3NyYy9saWIvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUvaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUVSLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHdCQUF3QixFQUN4QiwyQkFBMkIsR0FDNUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxp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VUFBVTtzQkFEVCxLQUFLO2dCQVNOLGFBQWE7c0JBRFosS0FBSztnQkFTTixPQUFPO3NCQUROLEtBQUs7Z0JBd0ROLGdCQUFnQjtzQkFEZixNQUFNO2dCQVlJLFVBQVU7c0JBRHBCLEtBQUs7Z0JBcUJOLFVBQVU7c0JBRFQsS0FBSztnQkFpQkUsUUFBUTtzQkFEZixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFTckQsc0JBQXNCO3NCQURyQixNQUFNO2dCQXlDdUIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBS0UsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBTTVCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21wb25lbnQsIEFYTGlzdERhdGFTb3VyY2UsIEFYUGFnZWRDb21wb25lbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBET0NVTUVOVCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvckljb25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7XG4gIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsXG4gIENka1ZpcnR1YWxGb3JPZixcbiAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxuICBDZGtWaXJ0dWFsU2Nyb2xsYWJsZUVsZW1lbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHN1bSBmcm9tICdsb2Rhc2gtZXMvc3VtJztcbmltcG9ydCB7IFN1YmplY3QsIGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFYQmFzZURhdGFUYWJsZSxcbiAgQVhEYXRhVGFibGVSb3dDbGljayxcbiAgQVhEYXRhVGFibGVSb3dEYkNsaWNrLFxuICBBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZCxcbn0gZnJvbSAnLi4vYmFzZS1kYXRhLXRhYmxlLmNsYXNzJztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29sdW1ucy9kYXRhLXRhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2RhdGEtdGV4dC1jb2x1bW4uY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGEgZGF0YSB0YWJsZSB3aXRoIGluZmluaXRlIHNjcm9sbGluZyBjYXBhYmlsaXRpZXMuXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5maW5pdGUtc2Nyb2xsLWRhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmZpbml0ZS1zY3JvbGwtZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFBhZ2VkQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYQmFzZURhdGFUYWJsZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWEluZmluaXRlU2Nyb2xsRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQgfSxcbiAgXSxcbiAgb3V0cHV0czogWydzZWxlY3RlZFJvd3NDaGFuZ2UnXSxcbiAgaW5wdXRzOiBbJ2RhdGFTb3VyY2UnXSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIENka1ZpcnR1YWxTY3JvbGxhYmxlRWxlbWVudCxcbiAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICBDZGtWaXJ0dWFsRm9yT2YsXG4gICAgQVhTa2VsZXRvbkNvbXBvbmVudCxcbiAgICBBWEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZURhdGFUYWJsZSBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjayB7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudClcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IFF1ZXJ5TGlzdDxBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhcnRGaXhlZENvbHVtbigpOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zPy50b0FycmF5KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkID09ICdzdGFydCcpID8/IFtdO1xuICB9XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZEZpeGVkQ29sdW1uKCk6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+IGMuZml4ZWQgPT0gJ2VuZCcpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90Rml4ZWRDb2x1bW4oKTogQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucz8udG9BcnJheSgpLmZpbHRlcigoYykgPT4gIWMuZml4ZWQpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90Rml4ZWRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnM/LnRvQXJyYXkoKS5maWx0ZXIoKGMpID0+ICFjLmZpeGVkKS5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpeGVkQ29sdW1uQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zPy50b0FycmF5KCkuZmlsdGVyKChjKSA9PiBjLmZpeGVkKS5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBwYWdlIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNsaWNrU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZXZlbnQ6IE1vdXNlRXZlbnQ7IGl0ZW06IGFueSB9PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVJvd0NsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dDbGljaz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiBhIHJvdyBpcyBkb3VibGUtY2xpY2tlZC5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25Sb3dEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhVGFibGVSb3dEYkNsaWNrPigpO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBmb3IgcmVuZGVyaW5nIHJvd3MgaW4gdGhlIGRhdGEgdGFibGUuXG4gICAqL1xuICBASW5wdXQoKVxuICByb3dUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSB0byBkaXNwbGF5IHdoZW4gdGhlIGRhdGEgdGFibGUgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBlbXB0eVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB0YWJsZSBoZWFkZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd0hlYWRlciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG1vZGUgZm9yIGZldGNoaW5nIGRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgJ2F1dG8nXG4gICAqL1xuICBASW5wdXQoKVxuICBmZXRjaERhdGFNb2RlOiAnYXV0bycgfCAnbWFudWFsJyA9ICdhdXRvJztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIGRhdGEgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgeyBlbmFibGVkOiB0cnVlLCBhbmltYXRpb246IHRydWUgfVxuICAgKi9cbiAgQElucHV0KClcbiAgbG9hZGluZzoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYW5pbWF0aW9uOiBib29sZWFuO1xuICAgIGxvYWRpbmdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICB9ID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgYW5pbWF0aW9uOiB0cnVlLFxuICB9O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGxpc3REYXRhU291cmNlOiBBWExpc3REYXRhU291cmNlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzTG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwodHJ1ZSk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFzSXRlbXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFJvd3MgPSAwO1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRQYWdlID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB0b3RhbFBhZ2VzID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzdGFydFJvd0luZGV4ID0gMDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgbGFzdEluZGV4ID0gMDtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb2N1c2VkIHJvdyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIEBPdXRwdXQoKVxuICBmb2N1c2VkUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9mb2N1c2VkUm93OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIHJvdy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZm9jdXNlZFJvdygpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZFJvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50bHkgZm9jdXNlZCByb3cgYW5kIGVtaXRzIGEgY2hhbmdlIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdiAtIFRoZSByb3cgZGF0YSB0byBiZSBzZXQgYXMgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBzZXQgZm9jdXNlZFJvdyh2OiB1bmtub3duKSB7XG4gICAgdGhpcy5fZm9jdXNlZFJvdyA9IHY7XG4gICAgdGhpcy5mb2N1c2VkUm93Q2hhbmdlLmVtaXQodik7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgaGVpZ2h0IG9mIGVhY2ggaXRlbSBpbiB0aGUgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDQwXG4gICAqL1xuICBASW5wdXQoKVxuICBpdGVtSGVpZ2h0OiBudW1iZXIgfCAnYXV0bycgPSA0MDtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCB3aWR0aCA9ICcxMDAlJztcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBoZWlnaHQgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNjcm9sbCBpbmRleCBjaGFuZ2VzIGluIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25TY3JvbGxlZEluZGV4Q2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYRGF0YVRhYmxlU2Nyb2xsSW5kZXhDaGFuZ2VkPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFUYWJsZVNjcm9sbEluZGV4Q2hhbmdlZD4oKTtcblxuICB0cmFja0J5SWR4KGkpIHtcbiAgICByZXR1cm4gaTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlID0gbmV3IEFYTGlzdERhdGFTb3VyY2U8dW5rbm93bj4oe1xuICAgICAgc291cmNlOiB0aGlzLmRhdGFTb3VyY2UsXG4gICAgfSk7XG4gICAgdGhpcy5saXN0RGF0YVNvdXJjZS5zb3VyY2Uub25Mb2FkaW5nQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChkYXRhKTtcbiAgICB9KTtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnNvdXJjZS5vbkNoYW5nZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0aGlzLnRvdGFsUm93cyA9IGRhdGEudG90YWxDb3VudDtcbiAgICAgIHRoaXMuaGFzSXRlbXMgPSBkYXRhLnRvdGFsQ291bnQgPiAwO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuXG4gICAgLy9cbiAgICB0aGlzLmNsaWNrU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGJ1ZmZlcih0aGlzLmNsaWNrU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgyNTApKSksXG4gICAgICAgIGZpbHRlcigoY2xpY2tBcnJheSkgPT4gY2xpY2tBcnJheS5sZW5ndGggPT09IDIpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY2xpY2tBcnJheSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZVJvd0RvdWJsZUNsaWNrKGNsaWNrQXJyYXlbMF0uZXZlbnQsIGNsaWNrQXJyYXlbMF0uaXRlbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnaGVhZGVyQ29udGFpbmVyJykgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlckNvbnRhaW5lcicpIGZvb3RlckNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbGluZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNjcm9sbGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoZTogbnVtYmVyKSB7XG4gICAgdGhpcy5sYXN0SW5kZXggPSBlO1xuICAgIHRoaXMub25TY3JvbGxlZEluZGV4Q2hhbmdlZC5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGluZGV4OiB0aGlzLmxhc3RJbmRleCxcbiAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBuZ0RvQ2hlY2soKSB7XG4gICAgLy90aGlzLmNvcHlGaXhlZENvbHVtbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUhTY3JvbGwoKTtcbiAgICAvL1xuICAgIHRoaXMudXBkYXRlV2lkdGgoKTtcbiAgICB0aGlzLnVwZGF0ZUhlaWdodCgpO1xuICAgIC8vXG4gICAgdGhpcy51cGRhdGVUb3RhbENvdW50KCk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG90YWxDb3VudCgpIHtcbiAgICB0aGlzLnN0YXJ0Um93SW5kZXggPSB0aGlzLmxhc3RJbmRleDtcbiAgICBpZiAodGhpcy5zdGFydFJvd0luZGV4IDwgMSkgdGhpcy5zdGFydFJvd0luZGV4ID0gMTtcbiAgICBpZiAodGhpcy5zdGFydFJvd0luZGV4ID4gdGhpcy50b3RhbFJvd3MpIHRoaXMuc3RhcnRSb3dJbmRleCA9IHRoaXMudG90YWxSb3dzO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUhlaWdodCgpIHtcbiAgICB0aGlzLmhlaWdodCA9IGBjYWxjKDEwMCUgLSAkeyh0aGlzLmhlYWRlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgPz8gMCkgKyAodGhpcy5mb290ZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ID8/IDApfXB4KWA7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMuY29sdW1ucyAmJiB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdW1QeCA9IHN1bShcbiAgICAgICAgdGhpcy5jb2x1bW5zLnRvQXJyYXkoKS5tYXAoKGMpID0+ICh0eXBlb2YgYy53aWR0aCA9PSAnbnVtYmVyJyA/IGMud2lkdGggOiBOdW1iZXIoYy53aWR0aC5yZXBsYWNlKCdweCcsICcnKSkpKSxcbiAgICAgICk7XG4gICAgICB0aGlzLndpZHRoID0gYCR7TWF0aC5tYXgoc3VtUHgsIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbGllbnRXaWR0aCAtIDUpfXB4YDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlSFNjcm9sbCgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oZWFkZXJDb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgaGVhZGVyQ29udGFpbmVyID0gdGhpcy5oZWFkZXJDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuc2Nyb2xsYWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIGhlYWRlckNvbnRhaW5lci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgkey1sZWZ0fXB4KWA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIC8vIEZ1bmN0aW9uIHRvIGNvcHkgZml4ZWQgY29sdW1uc1xuICBwcml2YXRlIGNvcHlGaXhlZENvbHVtbnMoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxSb3dzID0gQXJyYXkuZnJvbSh0aGlzLnZpZXdwb3J0Ll9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpO1xuICAgIGNvbnN0IGZpeGVkQ29sdW1uVGFibGUgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcjxIVE1MVGFibGVFbGVtZW50PihcbiAgICAgICcuYXgtYm9keS1maXhlZC1jb2x1bW5zID4gdGFibGUgPiB0Ym9keScsXG4gICAgKTtcbiAgICBmaXhlZENvbHVtblRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaCgobikgPT4gbi5yZW1vdmUoKSk7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGZvciAoY29uc3Qgcm93IG9mIG9yaWdpbmFsUm93cykge1xuICAgICAgICBjb25zdCBmaXhlZENlbGxzID0gQXJyYXkuZnJvbShyb3cucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZml4ZWQ9XCJzdGFydFwiXScpKTtcbiAgICAgICAgY29uc3QgZml4ZWRSb3cgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBmaXhlZENlbGxzKSB7XG4gICAgICAgICAgY29uc3QgY2xvbmVkQ2VsbCA9IGNlbGwuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgIGZpeGVkUm93LmFwcGVuZENoaWxkKGNsb25lZENlbGwpO1xuICAgICAgICB9XG4gICAgICAgIGZpeGVkQ29sdW1uVGFibGUuYXBwZW5kQ2hpbGQoZml4ZWRSb3cpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmNkay12aXJ0dWFsLXNjcm9sbGFibGUnKS5zY3JvbGxUb3A7XG4gICAgZml4ZWRDb2x1bW5UYWJsZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgkey1zY3JvbGxUb3B9cHgpYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB2aWV3cG9ydCBieSBjaGVja2luZyBpdHMgc2l6ZSBhbmQgc2Nyb2xsaW5nIHRvIHRoZSBsYXN0IGluZGV4LlxuICAgKiBNYXJrcyB0aGUgY29tcG9uZW50IGZvciBjaGFuZ2UgZGV0ZWN0aW9uLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCkge1xuICAgIHRoaXMudmlld3BvcnQuY2hlY2tWaWV3cG9ydFNpemUoKTtcbiAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy5sYXN0SW5kZXgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGluZGV4IHRvIHplcm8gYW5kIHJlZnJlc2hlcyB0aGUgZGF0YSBzb3VyY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKCkge1xuICAgIHRoaXMubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmxpc3REYXRhU291cmNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5oYW5kbGVSb3dTaW5nbGVDbGljayhldmVudCwgaXRlbSk7XG4gICAgdGhpcy5jbGlja1N1YmplY3QubmV4dCh7IGV2ZW50LCBpdGVtIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVJvd1NpbmdsZUNsaWNrKGV2ZW50OiBFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9jdXNlZFJvdyA9PSBpdGVtKSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMub25Sb3dDbGljay5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RvdWJsZUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IHVua25vd24pIHtcbiAgICB0aGlzLmZvY3VzZWRSb3cgPSBpdGVtO1xuICAgIC8vXG4gICAgdGhpcy5vblJvd0RiQ2xpY2suZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiBpdGVtLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjb2x1bW4gaGVhZGVyIGNsaWNrcyB0byB0b2dnbGUgc29ydGluZyBvbiB0aGUgY29sdW1uLlxuICAgKlxuICAgKiBAcGFyYW0gZSAtIFRoZSBtb3VzZSBldmVudCB0cmlnZ2VyZWQgYnkgdGhlIGNsaWNrLlxuICAgKiBAcGFyYW0gY29sdW1uIC0gVGhlIGNvbHVtbiB0aGF0IHdhcyBjbGlja2VkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBoYW5kbGVDb2x1bW5DbGljayhlOiBNb3VzZUV2ZW50LCBjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KSB7XG4gICAgaWYgKGNvbHVtbiBpbnN0YW5jZW9mIEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCkge1xuICAgICAgY29uc3Qgc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbmQoKGMpID0+IGMuZmllbGQgPT0gY29sdW1uLmRhdGFGaWVsZCk7XG4gICAgICBpZiAoIXNvcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsXG4gICAgICAgICAgZGlyOiAnYXNjJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc29ydC5kaXIgPT0gJ2FzYycpIHtcbiAgICAgICAgICBzb3J0LmRpciA9ICdkZXNjJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucXVlcnkuc29ydCA9IHRoaXMuZGF0YVNvdXJjZS5xdWVyeS5zb3J0LmZpbHRlcigoYykgPT4gYyAhPSBzb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U29ydChjb2x1bW46IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgQVhEYXRhVGFibGVUZXh0Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICBjb25zdCBzb3J0ID0gdGhpcy5kYXRhU291cmNlLnF1ZXJ5LnNvcnQuZmluZCgoYykgPT4gYy5maWVsZCA9PSBjb2x1bW4uZGF0YUZpZWxkKTtcbiAgICAgIHJldHVybiBzb3J0ID8gKHNvcnQuZGlyID09ICdhc2MnID8gJ2F4LWljb24tYXJyb3ctbG9uZy1kb3duJyA6ICdheC1pY29uLWFycm93LWxvbmctdXAnKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVPblNjcm9sbCgpIHtcbiAgICB0aGlzLnVwZGF0ZUhTY3JvbGwoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtaGVhZGVyXCI+IDwvbmctY29udGVudD5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBIZWFkZXIgY29udGVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLT5cbkBpZiAoc2hvd0hlYWRlcikge1xuICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyLWNvbHVtbnNcIj5cbiAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAjaGVhZGVyQ29udGFpbmVyPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgQGZvciAoYyBvZiBub3RGaXhlZENvbHVtbigpOyB0cmFjayBjLm5hbWUpIHtcbiAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF4LWludGVyYWN0aXZlXT1cImMuYWxsb3dTb3J0aW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYy5hbGxvd1NvcnRpbmcgPyBoYW5kbGVDb2x1bW5DbGljaygkZXZlbnQsIGMpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImMud2lkdGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYy5yZW5kZXJIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgQGlmIChnZXRTb3J0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJheC1pY29uIHt7IGdldFNvcnQoYykgfX1cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBAaWYoYy5hbGxvd1Jlc2l6aW5nKVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yZXNpemUtaGFuZGxlXCIgW2F4LXRhYmxlLWNvbHVtbi1yZXNpemJsZV09XCJjXCI+PC9kaXY+XG4gICAgICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG5cbjwhLS0tLS0tLS0tLS0tLS0tLS0tLSBCb2R5IGNvbnRlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG48ZGl2IFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCIgY2xhc3M9XCJheC1ib2R5LWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWJvZHktY29sdW1uc1wiPlxuICAgIDxkaXYgY2RrVmlydHVhbFNjcm9sbGluZ0VsZW1lbnQgI3Njcm9sbGluZyBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiIChzY3JvbGwpPVwiX2hhbmRsZU9uU2Nyb2xsKClcIj5cbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgW2l0ZW1TaXplXT1cIml0ZW1IZWlnaHRcIlxuICAgICAgICBbc3R5bGUuLS1pdGVtLWhlaWdodF09XCJpdGVtSGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIl9oYW5kbGVPbnNjcm9sbGVkSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0YWJsZSB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImF4LXRhYmxlLWJvZHkgYXgtcmVsYXRpdmVcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIj5cbiAgICAgICAgICA8Y29sZ3JvdXA+XG4gICAgICAgICAgICBAZm9yIChjIG9mIG5vdEZpeGVkQ29sdW1uKCk7IHRyYWNrIGMubmFtZSkge1xuICAgICAgICAgICAgICA8Y29sIFtzdHlsZS53aWR0aF09XCJjLndpZHRoXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxjb2wgLz5cbiAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBsaXN0RGF0YVNvdXJjZTtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTAwO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkeDtcbiAgICAgICAgICAgICAgICBsZXQgckluZGV4ID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tIGN1c3RvbSByb3cgdGVtcGxhdGUtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd1RlbXBsYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGRhdGE6IGl0ZW0sIHJvd0luZGV4OiBySW5kZXggfSB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSBub3JtYWwgcm93IHRlbXBsYXRlLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1mb2N1c2VkXT1cImZvY3VzZWRSb3cgJiYgaXRlbSA9PT0gZm9jdXNlZFJvd1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWluZGV4XT1cInJJbmRleFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVSb3dDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RhcnQgZml4ZWQgY29sdW1uIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSBOb3QgZml4ZWQgY29sdW1uIC0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjIG9mIG5vdEZpeGVkQ29sdW1uKCk7IHRyYWNrIGMubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuZGF0YS1sYWJlbF09XCJjLmNhcHRpb25cIiB0YWJpbmRleD1cIjBcIiBbY2xhc3NdPVwiYy5jc3NDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbSAmJiAhaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLSByZW5kZXIgY2VsbCAtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjLnJlbmRlckNlbGxUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBkYXRhOiBpdGVtLCByb3dJbmRleDogckluZGV4IH0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVuZGVyIGxvYWRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYy5sb2FkaW5nRW5hYmxlZCAmJiBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwibG9hZGluZy5hbmltYXRpb25cIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC10YWJsZS1mb290ZXJcIiAjZm9vdGVyQ29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwiYXgtdGFibGUtaW5mb1wiPlxuICAgIDxkaXY+U2hvd2luZyB7eyBzdGFydFJvd0luZGV4IH19IG9mIHt7IHRvdGFsUm93cyB9fSBpdGVtczwvZGl2PlxuICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiIChvbkNsaWNrKT1cInJlZnJlc2goKVwiPlxuICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljb24gYXgtaWNvbi1yZWZyZXNoXCI+PC9heC1pY29uPlxuICAgIDwvYXgtYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtZm9vdGVyXCI+IDwvbmctY29udGVudD5cbjwvZGl2PlxuIl19","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDataPagerModule } from '@acorex/components/data-pager';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXResultModule } from '@acorex/components/result';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDataTableColumnResizableDirective } from './columns/data-table-column-resizable.directive';\nimport { AXDataTableTextColumnComponent } from './columns/data-text-column.component';\nimport { AXRowCommandColumnComponent, AXRowDropdownCommandColumnComponent, } from './columns/row-command-column.component';\nimport { AXRowExpandColumnComponent } from './columns/row-expand-column.component';\nimport { AXRowIndexColumnComponent } from './columns/row-index-column.component';\nimport { AXRowSelectColumnComponent } from './columns/row-select-column.component';\nimport { AXDataTableComponent } from './data-table/data-table.component';\nimport { AXInfiniteScrollDataTableComponent } from './infinite-scroll-data-table/infinite-scroll-data-table.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [\n AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective,\n];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle,\n];\nexport class AXDataTableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXRippleDirective,\n AXDataPagerModule,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragHandle, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective], exports: [AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXDataTableTextColumnComponent,\n AXRowIndexColumnComponent,\n AXRowSelectColumnComponent,\n AXRowExpandColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent,\n AXDataTableColumnResizableDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, imports: [CommonModule,\n AXCommonModule,\n ScrollingModule,\n AXTranslationModule,\n AXResultModule,\n AXLoadingModule,\n AXSkeletonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormatModule,\n AXDataPagerModule, AXInfiniteScrollDataTableComponent,\n AXDataTableComponent,\n AXRowSelectColumnComponent,\n AXRowCommandColumnComponent,\n AXRowDropdownCommandColumnComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXDataTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtdGFibGUvc3JjL2xpYi9kYXRhLXRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG1DQUFtQyxHQUNwQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG1FQUFtRSxDQUFDOztBQUV2SCxNQUFNLFNBQVMsR0FBRztJQUNoQixrQ0FBa0M7SUFDbEMsb0JBQW9CO0lBQ3BCLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLG1DQUFtQztDQUNwQyxDQUFDO0FBQ0YsTUFBTSxPQUFPLEdBQUc7SUFDZCxZQUFZO0lBQ1osY0FBYztJQUNkLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsV0FBVztJQUNYLE9BQU87SUFDUCxrQkFBa0I7SUFDbEIsYUFBYTtDQUNkLENBQUM7QUFPRixNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixZQXhCNUIsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLFdBQVc7WUFDWCxPQUFPO1lBQ1Asa0JBQWtCO1lBQ2xCLGFBQWEsRUEzQmIsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUMsYUFSbkMsa0NBQWtDO1lBQ2xDLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLG1DQUFtQztZQUNuQyxtQ0FBbUM7K0dBMkJ4QixpQkFBaUIsWUF4QjVCLFlBQVk7WUFDWixjQUFjO1lBQ2QsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixjQUFjO1lBRWQsaUJBQWlCLEVBdkJqQixrQ0FBa0M7WUFDbEMsb0JBQW9CO1lBR3BCLDBCQUEwQjtZQUUxQiwyQkFBMkI7WUFDM0IsbUNBQW1DOzsyRkE0QnhCLGlCQUFpQjtrQkFMN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb21tb25Nb2R1bGUsIEFYUmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERhdGFQYWdlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXBhZ2VyJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFJlc3VsdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9yZXN1bHQnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDZGtEcmFnLCBDZGtEcmFnSGFuZGxlLCBDZGtEcmFnUGxhY2Vob2xkZXIsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRhVGFibGVDb2x1bW5SZXNpemFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2NvbHVtbnMvZGF0YS10YWJsZS1jb2x1bW4tcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWERhdGFUYWJsZVRleHRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvZGF0YS10ZXh0LWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQVhSb3dDb21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0Ryb3Bkb3duQ29tbWFuZENvbHVtbkNvbXBvbmVudCxcbn0gZnJvbSAnLi9jb2x1bW5zL3Jvdy1jb21tYW5kLWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhSb3dFeHBhbmRDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvcm93LWV4cGFuZC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYUm93SW5kZXhDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvcm93LWluZGV4LWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhSb3dTZWxlY3RDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvcm93LXNlbGVjdC1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IEFYRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFYSW5maW5pdGVTY3JvbGxEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2luZmluaXRlLXNjcm9sbC1kYXRhLXRhYmxlL2luZmluaXRlLXNjcm9sbC1kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtcbiAgQVhJbmZpbml0ZVNjcm9sbERhdGFUYWJsZUNvbXBvbmVudCxcbiAgQVhEYXRhVGFibGVDb21wb25lbnQsXG4gIEFYRGF0YVRhYmxlVGV4dENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dJbmRleENvbHVtbkNvbXBvbmVudCxcbiAgQVhSb3dTZWxlY3RDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93RXhwYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWFJvd0NvbW1hbmRDb2x1bW5Db21wb25lbnQsXG4gIEFYUm93RHJvcGRvd25Db21tYW5kQ29sdW1uQ29tcG9uZW50LFxuICBBWERhdGFUYWJsZUNvbHVtblJlc2l6YWJsZURpcmVjdGl2ZSxcbl07XG5jb25zdCBNT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIEFYQ29tbW9uTW9kdWxlLFxuICBTY3JvbGxpbmdNb2R1bGUsXG4gIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gIEFYUmVzdWx0TW9kdWxlLFxuICBBWExvYWRpbmdNb2R1bGUsXG4gIEFYU2tlbGV0b25Nb2R1bGUsXG4gIEFYQnV0dG9uTW9kdWxlLFxuICBBWERlY29yYXRvck1vZHVsZSxcbiAgQVhEcm9wZG93bk1vZHVsZSxcbiAgQVhGb3JtYXRNb2R1bGUsXG4gIEFYUmlwcGxlRGlyZWN0aXZlLFxuICBBWERhdGFQYWdlck1vZHVsZSxcbiAgQ2RrRHJvcExpc3QsXG4gIENka0RyYWcsXG4gIENka0RyYWdQbGFjZWhvbGRlcixcbiAgQ2RrRHJhZ0hhbmRsZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTLCAuLi5DT01QT05FTlRdLFxuICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UXSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhVGFibGVNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS10YWJsZS9zcmMvYWNvcmV4LWNvbXBvbmVudHMtZGF0YS10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":"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"}
|