PageSourceSearch

https://plataforma.bydenergia.com/chunk-LFHG3M4C.js

js bydenergia.com collected 2026-10-05 02:55:32 UTC 304,892 bytes, 8,343 lines download raw bytes

1import {
2  InputHelper
3} from "./chunk-BFRN4NOY.js";
4import {
5  LayoutMetaState
6} from "./chunk-HVZEQCYB.js";
7import {
8  MatIcon,
9  MatIconModule
10} from "./chunk-GZUTVBUJ.js";
11import {
12  MatCheckbox,
13  MatCheckboxModule
14} from "./chunk-VPAA64CA.js";
15import {
16  MatTooltip,
17  MatTooltipModule
18} from "./chunk-5LVJELEX.js";
19import {
20  MatButton,
21  MatButtonModule,
22  MatIconButton,
23  Store,
24  TranslateModule,
25  TranslatePipe,
26  Utils,
27  takeUntilDestroyed
28} from "./chunk-D4PEJ7VH.js";
29import {
30  AsyncPipe,
31  BehaviorSubject,
32  ChangeDetectionStrategy,
33  ChangeDetectorRef,
34  CommonModule,
35  Component,
36  ContentChild,
37  ContentChildren,
38  DOCUMENT,
39  DestroyRef,
40  Directive,
41  ElementRef,
42  EventEmitter,
43  HostBinding,
44  HostListener,
45  Inject,
46  Injectable,
47  Input,
48  KeyValueDiffers,
49  NgClass,
50  NgForOf,
51  NgIf,
52  NgModule,
53  NgStyle,
54  NgTemplateOutlet,
55  NgZone,
56  Optional,
57  Output,
58  Renderer2,
59  SkipSelf,
60  Subject,
61  TemplateRef,
62  ViewChild,
63  ViewContainerRef,
64  ViewEncapsulation$1,
65  __decorate,
66  fromEvent,
67  inject,
68  setClassMetadata,
69  takeUntil,
70  ɵsetClassDebugInfo,
71  ɵɵNgOnChangesFeature,
72  ɵɵStandaloneFeature,
73  ɵɵadvance,
74  ɵɵattribute,
75  ɵɵclassMap,
76  ɵɵclassMapInterpolate1,
77  ɵɵclassProp,
78  ɵɵcontentQuery,
79  ɵɵdefineComponent,
80  ɵɵdefineDirective,
81  ɵɵdefineInjectable,
82  ɵɵdefineInjector,
83  ɵɵdefineNgModule,
84  ɵɵdirectiveInject,
85  ɵɵelement,
86  ɵɵelementContainerEnd,
87  ɵɵelementContainerStart,
88  ɵɵelementEnd,
89  ɵɵelementStart,
90  ɵɵgetCurrentView,
91  ɵɵinject,
92  ɵɵlistener,
93  ɵɵloadQuery,
94  ɵɵnamespaceHTML,
95  ɵɵnamespaceSVG,
96  ɵɵnextContext,
97  ɵɵpipe,
98  ɵɵpipeBind1,
99  ɵɵprojection,
100  ɵɵprojectionDef,
101  ɵɵproperty,
102  ɵɵpropertyInterpolate,
103  ɵɵpureFunction0,
104  ɵɵpureFunction1,
105  ɵɵpureFunction4,
106  ɵɵpureFunction5,
107  ɵɵqueryRefresh,
108  ɵɵreference,
109  ɵɵresetView,
110  ɵɵresolveWindow,
111  ɵɵrestoreView,
112  ɵɵsanitizeHtml,
113  ɵɵsanitizeUrl,
114  ɵɵstyleProp,
115  ɵɵtemplate,
116  ɵɵtemplateRefExtractor,
117  ɵɵtext,
118  ɵɵtextInterpolate,
119  ɵɵtextInterpolate1,
120  ɵɵtextInterpolate2,
121  ɵɵviewQuery
122} from "./chunk-CG6MKYWD.js";
123import {
124  __spreadProps,
125  __spreadValues
126} from "./chunk-GBXUKA3S.js";
127
vendor: 234,110 bytes, lines 128-7231
128// node_modules/@swimlane/ngx-datatable/fesm2020/swimlane-ngx-datatable.mjs
129var _c0 = ["*"];
130var _c1 = ["cellTemplate"];
131var _c2 = (a0) => ({
132  cellContext: a0
133});
134function DataTableBodyCellComponent_label_1_Template(rf, ctx) {
135  if (rf & 1) {
136    const _r1 = \u0275\u0275getCurrentView();
137    \u0275\u0275elementStart(0, "label", 5)(1, "input", 6);
138    \u0275\u0275listener("click", function DataTableBodyCellComponent_label_1_Template_input_click_1_listener($event) {
139      \u0275\u0275restoreView(_r1);
140      const ctx_r1 = \u0275\u0275nextContext();
141      return \u0275\u0275resetView(ctx_r1.onCheckboxChange($event));
142    });
143    \u0275\u0275elementEnd()();
144  }
145  if (rf & 2) {
146    const ctx_r1 = \u0275\u0275nextContext();
147    \u0275\u0275advance();
148    \u0275\u0275property("checked", ctx_r1.isSelected);
149  }
150}
151function DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template(rf, ctx) {
152  if (rf & 1) {
153    \u0275\u0275element(0, "i", 12);
154  }
155}
156function DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template(rf, ctx) {
157  if (rf & 1) {
158    \u0275\u0275element(0, "i", 13);
159  }
160}
161function DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template(rf, ctx) {
162  if (rf & 1) {
163    \u0275\u0275element(0, "i", 14);
164  }
165}
166function DataTableBodyCellComponent_ng_container_2_button_1_Template(rf, ctx) {
167  if (rf & 1) {
168    const _r3 = \u0275\u0275getCurrentView();
169    \u0275\u0275elementStart(0, "button", 8);
170    \u0275\u0275listener("click", function DataTableBodyCellComponent_ng_container_2_button_1_Template_button_click_0_listener() {
171      \u0275\u0275restoreView(_r3);
172      const ctx_r1 = \u0275\u0275nextContext(2);
173      return \u0275\u0275resetView(ctx_r1.onTreeAction());
174    });
175    \u0275\u0275elementStart(1, "span");
176    \u0275\u0275template(2, DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template, 1, 0, "i", 9)(3, DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template, 1, 0, "i", 10)(4, DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template, 1, 0, "i", 11);
177    \u0275\u0275elementEnd()();
178  }
179  if (rf & 2) {
180    const ctx_r1 = \u0275\u0275nextContext(2);
181    \u0275\u0275property("disabled", ctx_r1.treeStatus === "disabled");
182    \u0275\u0275advance(2);
183    \u0275\u0275property("ngIf", ctx_r1.treeStatus === "loading");
184    \u0275\u0275advance();
185    \u0275\u0275property("ngIf", ctx_r1.treeStatus === "collapsed");
186    \u0275\u0275advance();
187    \u0275\u0275property("ngIf", ctx_r1.treeStatus === "expanded" || ctx_r1.treeStatus === "disabled");
188  }
189}
190function DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template(rf, ctx) {
191}
192function DataTableBodyCellComponent_ng_container_2_2_Template(rf, ctx) {
193  if (rf & 1) {
194    \u0275\u0275template(0, DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template, 0, 0, "ng-template", 15);
195  }
196  if (rf & 2) {
197    const ctx_r1 = \u0275\u0275nextContext(2);
198    \u0275\u0275property("ngTemplateOutlet", ctx_r1.column.treeToggleTemplate)("ngTemplateOutletContext", \u0275\u0275pureFunction1(2, _c2, ctx_r1.cellContext));
199  }
200}
201function DataTableBodyCellComponent_ng_container_2_Template(rf, ctx) {
202  if (rf & 1) {
203    \u0275\u0275elementContainerStart(0);
204    \u0275\u0275template(1, DataTableBodyCellComponent_ng_container_2_button_1_Template, 5, 4, "button", 7)(2, DataTableBodyCellComponent_ng_container_2_2_Template, 1, 4, null, 3);
205    \u0275\u0275elementContainerEnd();
206  }
207  if (rf & 2) {
208    const ctx_r1 = \u0275\u0275nextContext();
209    \u0275\u0275advance();
210    \u0275\u0275property("ngIf", !ctx_r1.column.treeToggleTemplate);
211    \u0275\u0275advance();
212    \u0275\u0275property("ngIf", ctx_r1.column.treeToggleTemplate);
213  }
214}
215function DataTableBodyCellComponent_span_3_Template(rf, ctx) {
216  if (rf & 1) {
217    \u0275\u0275element(0, "span", 16);
218  }
219  if (rf & 2) {
220    const ctx_r1 = \u0275\u0275nextContext();
221    \u0275\u0275property("title", ctx_r1.sanitizedValue)("innerHTML", ctx_r1.value, \u0275\u0275sanitizeHtml);
222  }
223}
224function DataTableBodyCellComponent_4_ng_template_0_Template(rf, ctx) {
225}
226function DataTableBodyCellComponent_4_Template(rf, ctx) {
227  if (rf & 1) {
228    \u0275\u0275template(0, DataTableBodyCellComponent_4_ng_template_0_Template, 0, 0, "ng-template", 15, 0, \u0275\u0275templateRefExtractor);
229  }
230  if (rf & 2) {
231    const ctx_r1 = \u0275\u0275nextContext();
232    \u0275\u0275property("ngTemplateOutlet", ctx_r1.column.cellTemplate)("ngTemplateOutletContext", ctx_r1.cellContext);
233  }
234}
235function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template(rf, ctx) {
236  if (rf & 1) {
237    const _r1 = \u0275\u0275getCurrentView();
238    \u0275\u0275elementStart(0, "datatable-body-cell", 3);
239    \u0275\u0275listener("activate", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_activate_0_listener($event) {
240      const ii_r2 = \u0275\u0275restoreView(_r1).index;
241      const ctx_r2 = \u0275\u0275nextContext(2);
242      return \u0275\u0275resetView(ctx_r2.onActivate($event, ii_r2));
243    })("treeAction", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_treeAction_0_listener() {
244      \u0275\u0275restoreView(_r1);
245      const ctx_r2 = \u0275\u0275nextContext(2);
246      return \u0275\u0275resetView(ctx_r2.onTreeAction());
247    });
248    \u0275\u0275elementEnd();
249  }
250  if (rf & 2) {
251    const column_r4 = ctx.$implicit;
252    const ctx_r2 = \u0275\u0275nextContext(2);
253    \u0275\u0275property("row", ctx_r2.row)("group", ctx_r2.group)("expanded", ctx_r2.expanded)("isSelected", ctx_r2.isSelected)("rowIndex", ctx_r2.rowIndex)("column", column_r4)("rowHeight", ctx_r2.rowHeight)("displayCheck", ctx_r2.displayCheck)("treeStatus", ctx_r2.treeStatus);
254  }
255}
256function DataTableBodyRowComponent_div_0_Template(rf, ctx) {
257  if (rf & 1) {
258    \u0275\u0275elementStart(0, "div", 1);
259    \u0275\u0275template(1, DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template, 1, 9, "datatable-body-cell", 2);
260    \u0275\u0275elementEnd();
261  }
262  if (rf & 2) {
263    const colGroup_r5 = ctx.$implicit;
264    const ctx_r2 = \u0275\u0275nextContext();
265    \u0275\u0275classMapInterpolate1("datatable-row-", colGroup_r5.type, " datatable-row-group");
266    \u0275\u0275property("ngStyle", ctx_r2._groupStyles[colGroup_r5.type]);
267    \u0275\u0275advance();
268    \u0275\u0275property("ngForOf", colGroup_r5.columns)("ngForTrackBy", ctx_r2.columnTrackingFn);
269  }
270}
271function DataTableSummaryRowComponent_datatable_body_row_0_Template(rf, ctx) {
272  if (rf & 1) {
273    \u0275\u0275element(0, "datatable-body-row", 1);
274  }
275  if (rf & 2) {
276    const ctx_r0 = \u0275\u0275nextContext();
277    \u0275\u0275property("innerWidth", ctx_r0.innerWidth)("offsetX", ctx_r0.offsetX)("columns", ctx_r0._internalColumns)("rowHeight", ctx_r0.rowHeight)("row", ctx_r0.summaryRow)("rowIndex", -1);
278  }
279}
280function DataTableRowWrapperComponent_div_0_1_ng_template_0_Template(rf, ctx) {
281}
282function DataTableRowWrapperComponent_div_0_1_Template(rf, ctx) {
283  if (rf & 1) {
284    \u0275\u0275template(0, DataTableRowWrapperComponent_div_0_1_ng_template_0_Template, 0, 0, "ng-template", 4);
285  }
286  if (rf & 2) {
287    const ctx_r0 = \u0275\u0275nextContext(2);
288    \u0275\u0275property("ngTemplateOutlet", ctx_r0.groupHeader.template)("ngTemplateOutletContext", ctx_r0.groupContext);
289  }
290}
291function DataTableRowWrapperComponent_div_0_Template(rf, ctx) {
292  if (rf & 1) {
293    \u0275\u0275elementStart(0, "div", 3);
294    \u0275\u0275template(1, DataTableRowWrapperComponent_div_0_1_Template, 1, 2, null, 1);
295    \u0275\u0275elementEnd();
296  }
297  if (rf & 2) {
298    const ctx_r0 = \u0275\u0275nextContext();
299    \u0275\u0275property("ngStyle", ctx_r0.getGroupHeaderStyle());
300    \u0275\u0275advance();
301    \u0275\u0275property("ngIf", ctx_r0.groupHeader && ctx_r0.groupHeader.template);
302  }
303}
304function DataTableRowWrapperComponent_ng_content_1_Template(rf, ctx) {
305  if (rf & 1) {
306    \u0275\u0275projection(0, 0, ["*ngIf", "(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template"]);
307  }
308}
309function DataTableRowWrapperComponent_div_2_1_ng_template_0_Template(rf, ctx) {
310}
311function DataTableRowWrapperComponent_div_2_1_Template(rf, ctx) {
312  if (rf & 1) {
313    \u0275\u0275template(0, DataTableRowWrapperComponent_div_2_1_ng_template_0_Template, 0, 0, "ng-template", 4);
314  }
315  if (rf & 2) {
316    const ctx_r0 = \u0275\u0275nextContext(2);
317    \u0275\u0275property("ngTemplateOutlet", ctx_r0.rowDetail.template)("ngTemplateOutletContext", ctx_r0.rowContext);
318  }
319}
320function DataTableRowWrapperComponent_div_2_Template(rf, ctx) {
321  if (rf & 1) {
322    \u0275\u0275elementStart(0, "div", 5);
323    \u0275\u0275template(1, DataTableRowWrapperComponent_div_2_1_Template, 1, 2, null, 1);
324    \u0275\u0275elementEnd();
325  }
326  if (rf & 2) {
327    const ctx_r0 = \u0275\u0275nextContext();
328    \u0275\u0275styleProp("height", ctx_r0.detailRowHeight, "px");
329    \u0275\u0275advance();
330    \u0275\u0275property("ngIf", ctx_r0.rowDetail && ctx_r0.rowDetail.template);
331  }
332}
333function DataTableBodyComponent_datatable_progress_0_Template(rf, ctx) {
334  if (rf & 1) {
335    \u0275\u0275element(0, "datatable-progress");
336  }
337}
338function DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template(rf, ctx) {
339  if (rf & 1) {
340    \u0275\u0275element(0, "datatable-summary-row", 10);
341  }
342  if (rf & 2) {
343    const ctx_r2 = \u0275\u0275nextContext(2);
344    \u0275\u0275property("rowHeight", ctx_r2.summaryHeight)("offsetX", ctx_r2.offsetX)("innerWidth", ctx_r2.innerWidth)("rows", ctx_r2.rows)("columns", ctx_r2.columns);
345  }
346}
347function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template(rf, ctx) {
348  if (rf & 1) {
349    const _r5 = \u0275\u0275getCurrentView();
350    \u0275\u0275elementStart(0, "datatable-body-row", 13);
351    \u0275\u0275listener("treeAction", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_treeAction_0_listener() {
352      \u0275\u0275restoreView(_r5);
353      const group_r6 = \u0275\u0275nextContext().$implicit;
354      const ctx_r2 = \u0275\u0275nextContext(2);
355      return \u0275\u0275resetView(ctx_r2.onTreeAction(group_r6));
356    })("activate", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_activate_0_listener($event) {
357      \u0275\u0275restoreView(_r5);
358      const i_r7 = \u0275\u0275nextContext().index;
359      const ctx_r2 = \u0275\u0275nextContext(2);
360      const selector_r8 = \u0275\u0275reference(2);
361      return \u0275\u0275resetView(selector_r8.onActivate($event, ctx_r2.indexes.first + i_r7));
362    });
363    \u0275\u0275elementEnd();
364  }
365  if (rf & 2) {
366    const group_r6 = \u0275\u0275nextContext().$implicit;
367    const ctx_r2 = \u0275\u0275nextContext(2);
368    const selector_r8 = \u0275\u0275reference(2);
369    \u0275\u0275property("isSelected", selector_r8.getRowSelected(group_r6))("innerWidth", ctx_r2.innerWidth)("offsetX", ctx_r2.offsetX)("columns", ctx_r2.columns)("rowHeight", ctx_r2.getRowHeight(group_r6))("row", group_r6)("rowIndex", ctx_r2.getRowIndex(group_r6))("expanded", ctx_r2.getRowExpanded(group_r6))("rowClass", ctx_r2.rowClass)("displayCheck", ctx_r2.displayCheck)("treeStatus", group_r6 && group_r6.treeStatus);
370  }
371}
372function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template(rf, ctx) {
373  if (rf & 1) {
374    const _r9 = \u0275\u0275getCurrentView();
375    \u0275\u0275elementStart(0, "datatable-body-row", 15);
376    \u0275\u0275listener("activate", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template_datatable_body_row_activate_0_listener($event) {
377      const i_r10 = \u0275\u0275restoreView(_r9).index;
378      \u0275\u0275nextContext(4);
379      const selector_r8 = \u0275\u0275reference(2);
380      return \u0275\u0275resetView(selector_r8.onActivate($event, i_r10));
381    });
382    \u0275\u0275elementEnd();
383  }
384  if (rf & 2) {
385    const row_r11 = ctx.$implicit;
386    const group_r6 = \u0275\u0275nextContext(2).$implicit;
387    const ctx_r2 = \u0275\u0275nextContext(2);
388    const selector_r8 = \u0275\u0275reference(2);
389    \u0275\u0275property("isSelected", selector_r8.getRowSelected(row_r11))("innerWidth", ctx_r2.innerWidth)("offsetX", ctx_r2.offsetX)("columns", ctx_r2.columns)("rowHeight", ctx_r2.getRowHeight(row_r11))("row", row_r11)("group", group_r6.value)("rowIndex", ctx_r2.getRowIndex(row_r11))("expanded", ctx_r2.getRowExpanded(row_r11))("rowClass", ctx_r2.rowClass);
390  }
391}
392function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template(rf, ctx) {
393  if (rf & 1) {
394    \u0275\u0275template(0, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template, 1, 10, "datatable-body-row", 14);
395  }
396  if (rf & 2) {
397    const group_r6 = \u0275\u0275nextContext().$implicit;
398    const ctx_r2 = \u0275\u0275nextContext(2);
399    \u0275\u0275property("ngForOf", group_r6.value)("ngForTrackBy", ctx_r2.rowTrackingFn);
400  }
401}
402function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template(rf, ctx) {
403  if (rf & 1) {
404    const _r4 = \u0275\u0275getCurrentView();
405    \u0275\u0275elementStart(0, "datatable-row-wrapper", 11);
406    \u0275\u0275listener("rowContextmenu", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template_datatable_row_wrapper_rowContextmenu_0_listener($event) {
407      \u0275\u0275restoreView(_r4);
408      const ctx_r2 = \u0275\u0275nextContext(2);
409      return \u0275\u0275resetView(ctx_r2.rowContextmenu.emit($event));
410    });
411    \u0275\u0275template(1, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template, 1, 11, "datatable-body-row", 12)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template, 1, 2, "ng-template", null, 1, \u0275\u0275templateRefExtractor);
412    \u0275\u0275elementEnd();
413  }
414  if (rf & 2) {
415    const group_r6 = ctx.$implicit;
416    const i_r7 = ctx.index;
417    const groupedRowsTemplate_r12 = \u0275\u0275reference(3);
418    const ctx_r2 = \u0275\u0275nextContext(2);
419    \u0275\u0275property("groupedRows", ctx_r2.groupedRows)("innerWidth", ctx_r2.innerWidth)("ngStyle", ctx_r2.getRowsStyles(group_r6))("rowDetail", ctx_r2.rowDetail)("groupHeader", ctx_r2.groupHeader)("offsetX", ctx_r2.offsetX)("detailRowHeight", ctx_r2.getDetailRowHeight(group_r6 && group_r6[i_r7], i_r7))("row", group_r6)("expanded", ctx_r2.getRowExpanded(group_r6))("rowIndex", ctx_r2.getRowIndex(group_r6 && group_r6[i_r7]));
420    \u0275\u0275advance();
421    \u0275\u0275property("ngIf", !ctx_r2.groupedRows)("ngIfElse", groupedRowsTemplate_r12);
422  }
423}
424function DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template(rf, ctx) {
425  if (rf & 1) {
426    \u0275\u0275element(0, "datatable-summary-row", 16);
427  }
428  if (rf & 2) {
429    const ctx_r2 = \u0275\u0275nextContext(2);
430    \u0275\u0275property("ngStyle", ctx_r2.getBottomSummaryRowStyles())("rowHeight", ctx_r2.summaryHeight)("offsetX", ctx_r2.offsetX)("innerWidth", ctx_r2.innerWidth)("rows", ctx_r2.rows)("columns", ctx_r2.columns);
431  }
432}
433function DataTableBodyComponent_datatable_scroller_3_Template(rf, ctx) {
434  if (rf & 1) {
435    const _r2 = \u0275\u0275getCurrentView();
436    \u0275\u0275elementStart(0, "datatable-scroller", 6);
437    \u0275\u0275listener("scroll", function DataTableBodyComponent_datatable_scroller_3_Template_datatable_scroller_scroll_0_listener($event) {
438      \u0275\u0275restoreView(_r2);
439      const ctx_r2 = \u0275\u0275nextContext();
440      return \u0275\u0275resetView(ctx_r2.onBodyScroll($event));
441    });
442    \u0275\u0275template(1, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template, 1, 5, "datatable-summary-row", 7)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template, 4, 12, "datatable-row-wrapper", 8)(3, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template, 1, 6, "datatable-summary-row", 9);
443    \u0275\u0275elementEnd();
444  }
445  if (rf & 2) {
446    const ctx_r2 = \u0275\u0275nextContext();
447    \u0275\u0275property("scrollbarV", ctx_r2.scrollbarV)("scrollbarH", ctx_r2.scrollbarH)("scrollHeight", ctx_r2.scrollHeight)("scrollWidth", ctx_r2.columnGroupWidths == null ? null : ctx_r2.columnGroupWidths.total);
448    \u0275\u0275advance();
449    \u0275\u0275property("ngIf", ctx_r2.summaryRow && ctx_r2.summaryPosition === "top");
450    \u0275\u0275advance();
451    \u0275\u0275property("ngForOf", ctx_r2.temp)("ngForTrackBy", ctx_r2.rowTrackingFn);
452    \u0275\u0275advance();
453    \u0275\u0275property("ngIf", ctx_r2.summaryRow && ctx_r2.summaryPosition === "bottom");
454  }
455}
456function DataTableBodyComponent_div_4_Template(rf, ctx) {
457  if (rf & 1) {
458    \u0275\u0275element(0, "div", 17);
459  }
460  if (rf & 2) {
461    const ctx_r2 = \u0275\u0275nextContext();
462    \u0275\u0275property("innerHTML", ctx_r2.emptyMessage, \u0275\u0275sanitizeHtml);
463  }
464}
465function DataTableHeaderCellComponent_1_ng_template_0_Template(rf, ctx) {
466}
467function DataTableHeaderCellComponent_1_Template(rf, ctx) {
468  if (rf & 1) {
469    \u0275\u0275template(0, DataTableHeaderCellComponent_1_ng_template_0_Template, 0, 0, "ng-template", 5);
470  }
471  if (rf & 2) {
472    const ctx_r0 = \u0275\u0275nextContext();
473    \u0275\u0275property("ngTemplateOutlet", ctx_r0.targetMarkerTemplate)("ngTemplateOutletContext", ctx_r0.targetMarkerContext);
474  }
475}
476function DataTableHeaderCellComponent_label_2_Template(rf, ctx) {
477  if (rf & 1) {
478    const _r2 = \u0275\u0275getCurrentView();
479    \u0275\u0275elementStart(0, "label", 6)(1, "input", 7);
480    \u0275\u0275listener("change", function DataTableHeaderCellComponent_label_2_Template_input_change_1_listener() {
481      \u0275\u0275restoreView(_r2);
482      const ctx_r0 = \u0275\u0275nextContext();
483      return \u0275\u0275resetView(ctx_r0.select.emit(!ctx_r0.allRowsSelected));
484    });
485    \u0275\u0275elementEnd()();
486  }
487  if (rf & 2) {
488    const ctx_r0 = \u0275\u0275nextContext();
489    \u0275\u0275advance();
490    \u0275\u0275property("checked", ctx_r0.allRowsSelected);
491  }
492}
493function DataTableHeaderCellComponent_span_3_Template(rf, ctx) {
494  if (rf & 1) {
495    const _r3 = \u0275\u0275getCurrentView();
496    \u0275\u0275elementStart(0, "span", 8)(1, "span", 9);
497    \u0275\u0275listener("click", function DataTableHeaderCellComponent_span_3_Template_span_click_1_listener() {
498      \u0275\u0275restoreView(_r3);
499      const ctx_r0 = \u0275\u0275nextContext();
500      return \u0275\u0275resetView(ctx_r0.onSort());
501    });
502    \u0275\u0275elementEnd()();
503  }
504  if (rf & 2) {
505    const ctx_r0 = \u0275\u0275nextContext();
506    \u0275\u0275advance();
507    \u0275\u0275property("innerHTML", ctx_r0.name, \u0275\u0275sanitizeHtml);
508  }
509}
510function DataTableHeaderCellComponent_4_ng_template_0_Template(rf, ctx) {
511}
512function DataTableHeaderCellComponent_4_Template(rf, ctx) {
513  if (rf & 1) {
514    \u0275\u0275template(0, DataTableHeaderCellComponent_4_ng_template_0_Template, 0, 0, "ng-template", 5);
515  }
516  if (rf & 2) {
517    const ctx_r0 = \u0275\u0275nextContext();
518    \u0275\u0275property("ngTemplateOutlet", ctx_r0.column.headerTemplate)("ngTemplateOutletContext", ctx_r0.cellContext);
519  }
520}
521function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template(rf, ctx) {
522  if (rf & 1) {
523    const _r1 = \u0275\u0275getCurrentView();
524    \u0275\u0275elementStart(0, "datatable-header-cell", 4);
525    \u0275\u0275listener("resize", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_resize_0_listener($event) {
526      const column_r2 = \u0275\u0275restoreView(_r1).$implicit;
527      const ctx_r2 = \u0275\u0275nextContext(2);
528      return \u0275\u0275resetView(ctx_r2.onColumnResized($event, column_r2));
529    })("longPressStart", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressStart_0_listener($event) {
530      \u0275\u0275restoreView(_r1);
531      const ctx_r2 = \u0275\u0275nextContext(2);
532      return \u0275\u0275resetView(ctx_r2.onLongPressStart($event));
533    })("longPressEnd", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressEnd_0_listener($event) {
534      \u0275\u0275restoreView(_r1);
535      const ctx_r2 = \u0275\u0275nextContext(2);
536      return \u0275\u0275resetView(ctx_r2.onLongPressEnd($event));
537    })("sort", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_sort_0_listener($event) {
538      \u0275\u0275restoreView(_r1);
539      const ctx_r2 = \u0275\u0275nextContext(2);
540      return \u0275\u0275resetView(ctx_r2.onSort($event));
541    })("select", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_select_0_listener($event) {
542      \u0275\u0275restoreView(_r1);
543      const ctx_r2 = \u0275\u0275nextContext(2);
544      return \u0275\u0275resetView(ctx_r2.select.emit($event));
545    })("columnContextmenu", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_columnContextmenu_0_listener($event) {
546      \u0275\u0275restoreView(_r1);
547      const ctx_r2 = \u0275\u0275nextContext(2);
548      return \u0275\u0275resetView(ctx_r2.columnContextmenu.emit($event));
549    });
550    \u0275\u0275elementEnd();
551  }
552  if (rf & 2) {
553    const column_r2 = ctx.$implicit;
554    const ctx_r2 = \u0275\u0275nextContext(2);
555    \u0275\u0275property("resizeEnabled", column_r2.resizeable)("pressModel", column_r2)("pressEnabled", ctx_r2.reorderable && column_r2.draggable)("dragX", ctx_r2.reorderable && column_r2.draggable && column_r2.dragging)("dragY", false)("dragModel", column_r2)("dragEventTarget", ctx_r2.dragEventTarget)("headerHeight", ctx_r2.headerHeight)("isTarget", column_r2.isTarget)("targetMarkerTemplate", ctx_r2.targetMarkerTemplate)("targetMarkerContext", column_r2.targetMarkerContext)("column", column_r2)("sortType", ctx_r2.sortType)("sorts", ctx_r2.sorts)("selectionType", ctx_r2.selectionType)("sortAscendingIcon", ctx_r2.sortAscendingIcon)("sortDescendingIcon", ctx_r2.sortDescendingIcon)("sortUnsetIcon", ctx_r2.sortUnsetIcon)("allRowsSelected", ctx_r2.allRowsSelected);
556  }
557}
558function DataTableHeaderComponent_div_1_Template(rf, ctx) {
559  if (rf & 1) {
560    \u0275\u0275elementStart(0, "div", 2);
561    \u0275\u0275template(1, DataTableHeaderComponent_div_1_datatable_header_cell_1_Template, 1, 19, "datatable-header-cell", 3);
562    \u0275\u0275elementEnd();
563  }
564  if (rf & 2) {
565    const colGroup_r4 = ctx.$implicit;
566    const ctx_r2 = \u0275\u0275nextContext();
567    \u0275\u0275classMap("datatable-row-" + colGroup_r4.type);
568    \u0275\u0275property("ngStyle", ctx_r2._styleByGroup[colGroup_r4.type]);
569    \u0275\u0275advance();
570    \u0275\u0275property("ngForOf", colGroup_r4.columns)("ngForTrackBy", ctx_r2.columnTrackingFn);
571  }
572}
573function DataTablePagerComponent_li_7_Template(rf, ctx) {
574  if (rf & 1) {
575    const _r1 = \u0275\u0275getCurrentView();
576    \u0275\u0275elementStart(0, "li", 6)(1, "a", 7);
577    \u0275\u0275listener("click", function DataTablePagerComponent_li_7_Template_a_click_1_listener() {
578      const pg_r2 = \u0275\u0275restoreView(_r1).$implicit;
579      const ctx_r2 = \u0275\u0275nextContext();
580      return \u0275\u0275resetView(ctx_r2.selectPage(pg_r2.number));
581    });
582    \u0275\u0275text(2);
583    \u0275\u0275elementEnd()();
584  }
585  if (rf & 2) {
586    const pg_r2 = ctx.$implicit;
587    const ctx_r2 = \u0275\u0275nextContext();
588    \u0275\u0275classProp("active", pg_r2.number === ctx_r2.page);
589    \u0275\u0275attribute("aria-label", "page " + pg_r2.number);
590    \u0275\u0275advance(2);
591    \u0275\u0275textInterpolate1(" ", pg_r2.text, " ");
592  }
593}
594var _c3 = (a0) => ({
595  "selected-count": a0
596});
597var _c4 = (a0, a1, a2, a3, a4) => ({
598  rowCount: a0,
599  pageSize: a1,
600  selectedCount: a2,
601  curPage: a3,
602  offset: a4
603});
604function DataTableFooterComponent_1_ng_template_0_Template(rf, ctx) {
605}
606function DataTableFooterComponent_1_Template(rf, ctx) {
607  if (rf & 1) {
608    \u0275\u0275template(0, DataTableFooterComponent_1_ng_template_0_Template, 0, 0, "ng-template", 4);
609  }
610  if (rf & 2) {
611    const ctx_r0 = \u0275\u0275nextContext();
612    \u0275\u0275property("ngTemplateOutlet", ctx_r0.footerTemplate.template)("ngTemplateOutletContext", \u0275\u0275pureFunction5(2, _c4, ctx_r0.rowCount, ctx_r0.pageSize, ctx_r0.selectedCount, ctx_r0.curPage, ctx_r0.offset));
613  }
614}
615function DataTableFooterComponent_div_2_span_1_Template(rf, ctx) {
616  if (rf & 1) {
617    \u0275\u0275elementStart(0, "span");
618    \u0275\u0275text(1);
619    \u0275\u0275elementEnd();
620  }
621  if (rf & 2) {
622    const ctx_r0 = \u0275\u0275nextContext(2);
623    \u0275\u0275advance();
624    \u0275\u0275textInterpolate2(" ", ctx_r0.selectedCount == null ? null : ctx_r0.selectedCount.toLocaleString(), " ", ctx_r0.selectedMessage, " / ");
625  }
626}
627function DataTableFooterComponent_div_2_Template(rf, ctx) {
628  if (rf & 1) {
629    \u0275\u0275elementStart(0, "div", 5);
630    \u0275\u0275template(1, DataTableFooterComponent_div_2_span_1_Template, 2, 2, "span", 1);
631    \u0275\u0275text(2);
632    \u0275\u0275elementEnd();
633  }
634  if (rf & 2) {
635    const ctx_r0 = \u0275\u0275nextContext();
636    \u0275\u0275advance();
637    \u0275\u0275property("ngIf", ctx_r0.selectedMessage);
638    \u0275\u0275advance();
639    \u0275\u0275textInterpolate2(" ", ctx_r0.rowCount == null ? null : ctx_r0.rowCount.toLocaleString(), " ", ctx_r0.totalMessage, " ");
640  }
641}
642function DataTableFooterComponent_datatable_pager_3_Template(rf, ctx) {
643  if (rf & 1) {
644    const _r2 = \u0275\u0275getCurrentView();
645    \u0275\u0275elementStart(0, "datatable-pager", 6);
646    \u0275\u0275listener("change", function DataTableFooterComponent_datatable_pager_3_Template_datatable_pager_change_0_listener($event) {
647      \u0275\u0275restoreView(_r2);
648      const ctx_r0 = \u0275\u0275nextContext();
649      return \u0275\u0275resetView(ctx_r0.page.emit($event));
650    });
651    \u0275\u0275elementEnd();
652  }
653  if (rf & 2) {
654    const ctx_r0 = \u0275\u0275nextContext();
655    \u0275\u0275property("pagerLeftArrowIcon", ctx_r0.pagerLeftArrowIcon)("pagerRightArrowIcon", ctx_r0.pagerRightArrowIcon)("pagerPreviousIcon", ctx_r0.pagerPreviousIcon)("pagerNextIcon", ctx_r0.pagerNextIcon)("page", ctx_r0.curPage)("size", ctx_r0.pageSize)("count", ctx_r0.rowCount)("hidden", !ctx_r0.isVisible);
656  }
657}
658function DatatableComponent_datatable_header_1_Template(rf, ctx) {
659  if (rf & 1) {
660    const _r1 = \u0275\u0275getCurrentView();
661    \u0275\u0275elementStart(0, "datatable-header", 4);
662    \u0275\u0275pipe(1, "async");
663    \u0275\u0275listener("sort", function DatatableComponent_datatable_header_1_Template_datatable_header_sort_0_listener($event) {
664      \u0275\u0275restoreView(_r1);
665      const ctx_r1 = \u0275\u0275nextContext();
666      return \u0275\u0275resetView(ctx_r1.onColumnSort($event));
667    })("resize", function DatatableComponent_datatable_header_1_Template_datatable_header_resize_0_listener($event) {
668      \u0275\u0275restoreView(_r1);
669      const ctx_r1 = \u0275\u0275nextContext();
670      return \u0275\u0275resetView(ctx_r1.onColumnResize($event));
671    })("reorder", function DatatableComponent_datatable_header_1_Template_datatable_header_reorder_0_listener($event) {
672      \u0275\u0275restoreView(_r1);
673      const ctx_r1 = \u0275\u0275nextContext();
674      return \u0275\u0275resetView(ctx_r1.onColumnReorder($event));
675    })("select", function DatatableComponent_datatable_header_1_Template_datatable_header_select_0_listener($event) {
676      \u0275\u0275restoreView(_r1);
677      const ctx_r1 = \u0275\u0275nextContext();
678      return \u0275\u0275resetView(ctx_r1.onHeaderSelect($event));
679    })("columnContextmenu", function DatatableComponent_datatable_header_1_Template_datatable_header_columnContextmenu_0_listener($event) {
680      \u0275\u0275restoreView(_r1);
681      const ctx_r1 = \u0275\u0275nextContext();
682      return \u0275\u0275resetView(ctx_r1.onColumnContextmenu($event));
683    });
684    \u0275\u0275elementEnd();
685  }
686  if (rf & 2) {
687    const ctx_r1 = \u0275\u0275nextContext();
688    \u0275\u0275property("sorts", ctx_r1.sorts)("sortType", ctx_r1.sortType)("scrollbarH", ctx_r1.scrollbarH)("innerWidth", ctx_r1._innerWidth)("offsetX", \u0275\u0275pipeBind1(1, 15, ctx_r1._offsetX))("dealsWithGroup", ctx_r1.groupedRows !== void 0)("columns", ctx_r1._internalColumns)("headerHeight", ctx_r1.headerHeight)("reorderable", ctx_r1.reorderable)("targetMarkerTemplate", ctx_r1.targetMarkerTemplate)("sortAscendingIcon", ctx_r1.cssClasses.sortAscending)("sortDescendingIcon", ctx_r1.cssClasses.sortDescending)("sortUnsetIcon", ctx_r1.cssClasses.sortUnset)("allRowsSelected", ctx_r1.allRowsSelected)("selectionType", ctx_r1.selectionType);
689  }
690}
691function DatatableComponent_datatable_footer_4_Template(rf, ctx) {
692  if (rf & 1) {
693    const _r3 = \u0275\u0275getCurrentView();
694    \u0275\u0275elementStart(0, "datatable-footer", 5);
695    \u0275\u0275listener("page", function DatatableComponent_datatable_footer_4_Template_datatable_footer_page_0_listener($event) {
696      \u0275\u0275restoreView(_r3);
697      const ctx_r1 = \u0275\u0275nextContext();
698      return \u0275\u0275resetView(ctx_r1.onFooterPage($event));
699    });
700    \u0275\u0275elementEnd();
701  }
702  if (rf & 2) {
703    const ctx_r1 = \u0275\u0275nextContext();
704    \u0275\u0275property("rowCount", ctx_r1.rowCount)("pageSize", ctx_r1.pageSize)("offset", ctx_r1.offset)("footerHeight", ctx_r1.footerHeight)("footerTemplate", ctx_r1.footer)("totalMessage", ctx_r1.messages.totalMessage)("pagerLeftArrowIcon", ctx_r1.cssClasses.pagerLeftArrow)("pagerRightArrowIcon", ctx_r1.cssClasses.pagerRightArrow)("pagerPreviousIcon", ctx_r1.cssClasses.pagerPrevious)("selectedCount", ctx_r1.selected.length)("selectedMessage", !!ctx_r1.selectionType && ctx_r1.messages.selectedMessage)("pagerNextIcon", ctx_r1.cssClasses.pagerNext);
705  }
706}
707var ScrollbarHelper = class {
708  constructor(document2) {
709    this.document = document2;
710    this.width = this.getWidth();
711  }
712  getWidth() {
713    const outer = this.document.createElement("div");
714    outer.style.visibility = "hidden";
715    outer.style.width = "100px";
716    outer.style.msOverflowStyle = "scrollbar";
717    this.document.body.appendChild(outer);
718    const widthNoScroll = outer.offsetWidth;
719    outer.style.overflow = "scroll";
720    const inner = this.document.createElement("div");
721    inner.style.width = "100%";
722    outer.appendChild(inner);
723    const widthWithScroll = inner.offsetWidth;
724    outer.parentNode.removeChild(outer);
725    return widthNoScroll - widthWithScroll;
726  }
727};
728ScrollbarHelper.\u0275fac = function ScrollbarHelper_Factory(__ngFactoryType__) {
729  return new (__ngFactoryType__ || ScrollbarHelper)(\u0275\u0275inject(DOCUMENT));
730};
731ScrollbarHelper.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({
732  token: ScrollbarHelper,
733  factory: ScrollbarHelper.\u0275fac
734});
735(() => {
736  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollbarHelper, [{
737    type: Injectable
738  }], function() {
739    return [{
740      type: void 0,
741      decorators: [{
742        type: Inject,
743        args: [DOCUMENT]
744      }]
745    }];
746  }, null);
747})();
748var DimensionsHelper = class {
749  getDimensions(element) {
750    return element.getBoundingClientRect();
751  }
752};
753DimensionsHelper.\u0275fac = function DimensionsHelper_Factory(__ngFactoryType__) {
754  return new (__ngFactoryType__ || DimensionsHelper)();
755};
756DimensionsHelper.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({
757  token: DimensionsHelper,
758  factory: DimensionsHelper.\u0275fac
759});
760(() => {
761  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DimensionsHelper, [{
762    type: Injectable
763  }], null, null);
764})();
765var ColumnChangesService = class {
766  constructor() {
767    this.columnInputChanges = new Subject();
768  }
769  get columnInputChanges$() {
770    return this.columnInputChanges.asObservable();
771  }
772  onInputChange() {
773    this.columnInputChanges.next();
774  }
775};
776ColumnChangesService.\u0275fac = function ColumnChangesService_Factory(__ngFactoryType__) {
777  return new (__ngFactoryType__ || ColumnChangesService)();
778};
779ColumnChangesService.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({
780  token: ColumnChangesService,
781  factory: ColumnChangesService.\u0275fac
782});
783(() => {
784  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ColumnChangesService, [{
785    type: Injectable
786  }], null, null);
787})();
788var DataTableFooterTemplateDirective = class {
789  constructor(template) {
790    this.template = template;
791  }
792};
793DataTableFooterTemplateDirective.\u0275fac = function DataTableFooterTemplateDirective_Factory(__ngFactoryType__) {
794  return new (__ngFactoryType__ || DataTableFooterTemplateDirective)(\u0275\u0275directiveInject(TemplateRef));
795};
796DataTableFooterTemplateDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
797  type: DataTableFooterTemplateDirective,
798  selectors: [["", "ngx-datatable-footer-template", ""]]
799});
800(() => {
801  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableFooterTemplateDirective, [{
802    type: Directive,
803    args: [{
804      selector: "[ngx-datatable-footer-template]"
805    }]
806  }], function() {
807    return [{
808      type: TemplateRef
809    }];
810  }, null);
811})();
812var VisibilityDirective = class {
813  constructor(element, zone) {
814    this.element = element;
815    this.zone = zone;
816    this.isVisible = false;
817    this.visible = new EventEmitter();
818  }
819  ngOnInit() {
820    this.runCheck();
821  }
822  ngOnDestroy() {
823    clearTimeout(this.timeout);
824  }
825  onVisibilityChange() {
826    this.zone.run(() => {
827      this.isVisible = true;
828      this.visible.emit(true);
829    });
830  }
831  runCheck() {
832    const check = () => {
833      const {
834        offsetHeight,
835        offsetWidth
836      } = this.element.nativeElement;
837      if (offsetHeight && offsetWidth) {
838        clearTimeout(this.timeout);
839        this.onVisibilityChange();
840      } else {
841        clearTimeout(this.timeout);
842        this.zone.runOutsideAngular(() => {
843          this.timeout = setTimeout(() => check(), 50);
844        });
845      }
846    };
847    this.timeout = setTimeout(() => check());
848  }
849};
850VisibilityDirective.\u0275fac = function VisibilityDirective_Factory(__ngFactoryType__) {
851  return new (__ngFactoryType__ || VisibilityDirective)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(NgZone));
852};
853VisibilityDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
854  type: VisibilityDirective,
855  selectors: [["", "visibilityObserver", ""]],
856  hostVars: 2,
857  hostBindings: function VisibilityDirective_HostBindings(rf, ctx) {
858    if (rf & 2) {
859      \u0275\u0275classProp("visible", ctx.isVisible);
860    }
861  },
862  outputs: {
863    visible: "visible"
864  }
865});
866(() => {
867  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(VisibilityDirective, [{
868    type: Directive,
869    args: [{
870      selector: "[visibilityObserver]"
871    }]
872  }], function() {
873    return [{
874      type: ElementRef
875    }, {
876      type: NgZone
877    }];
878  }, {
879    isVisible: [{
880      type: HostBinding,
881      args: ["class.visible"]
882    }],
883    visible: [{
884      type: Output
885    }]
886  });
887})();
888var DraggableDirective = class {
889  constructor(element) {
890    this.dragX = true;
891    this.dragY = true;
892    this.dragStart = new EventEmitter();
893    this.dragging = new EventEmitter();
894    this.dragEnd = new EventEmitter();
895    this.isDragging = false;
896    this.element = element.nativeElement;
897  }
898  ngOnChanges(changes) {
899    if (changes["dragEventTarget"] && changes["dragEventTarget"].currentValue && this.dragModel.dragging) {
900      this.onMousedown(changes["dragEventTarget"].currentValue);
901    }
902  }
903  ngOnDestroy() {
904    this._destroySubscription();
905  }
906  onMouseup(event) {
907    if (!this.isDragging) return;
908    this.isDragging = false;
909    this.element.classList.remove("dragging");
910    if (this.subscription) {
911      this._destroySubscription();
912      this.dragEnd.emit({
913        event,
914        element: this.element,
915        model: this.dragModel
916      });
917    }
918  }
919  onMousedown(event) {
920    const isDragElm = event.target.classList.contains("draggable");
921    if (isDragElm && (this.dragX || this.dragY)) {
922      event.preventDefault();
923      this.isDragging = true;
924      const mouseDownPos = {
925        x: event.clientX,
926        y: event.clientY
927      };
928      const mouseup = fromEvent(document, "mouseup");
929      this.subscription = mouseup.subscribe((ev) => this.onMouseup(ev));
930      const mouseMoveSub = fromEvent(document, "mousemove").pipe(takeUntil(mouseup)).subscribe((ev) => this.move(ev, mouseDownPos));
931      this.subscription.add(mouseMoveSub);
932      this.dragStart.emit({
933        event,
934        element: this.element,
935        model: this.dragModel
936      });
937    }
938  }
939  move(event, mouseDownPos) {
940    if (!this.isDragging) return;
941    const x = event.clientX - mouseDownPos.x;
942    const y = event.clientY - mouseDownPos.y;
943    if (this.dragX) this.element.style.left = `${x}px`;
944    if (this.dragY) this.element.style.top = `${y}px`;
945    this.element.classList.add("dragging");
946    this.dragging.emit({
947      event,
948      element: this.element,
949      model: this.dragModel
950    });
951  }
952  _destroySubscription() {
953    if (this.subscription) {
954      this.subscription.unsubscribe();
955      this.subscription = void 0;
956    }
957  }
958};
959DraggableDirective.\u0275fac = function DraggableDirective_Factory(__ngFactoryType__) {
960  return new (__ngFactoryType__ || DraggableDirective)(\u0275\u0275directiveInject(ElementRef));
961};
962DraggableDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
963  type: DraggableDirective,
964  selectors: [["", "draggable", ""]],
965  inputs: {
966    dragEventTarget: "dragEventTarget",
967    dragModel: "dragModel",
968    dragX: "dragX",
969    dragY: "dragY"
970  },
971  outputs: {
972    dragStart: "dragStart",
973    dragging: "dragging",
974    dragEnd: "dragEnd"
975  },
976  features: [\u0275\u0275NgOnChangesFeature]
977});
978(() => {
979  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DraggableDirective, [{
980    type: Directive,
981    args: [{
982      selector: "[draggable]"
983    }]
984  }], function() {
985    return [{
986      type: ElementRef
987    }];
988  }, {
989    dragEventTarget: [{
990      type: Input
991    }],
992    dragModel: [{
993      type: Input
994    }],
995    dragX: [{
996      type: Input
997    }],
998    dragY: [{
999      type: Input
1000    }],
1001    dragStart: [{
1002      type: Output
1003    }],
1004    dragging: [{
1005      type: Output
1006    }],
1007    dragEnd: [{
1008      type: Output
1009    }]
1010  });
1011})();
1012var ResizeableDirective = class {
1013  constructor(element, renderer) {
1014    this.renderer = renderer;
1015    this.resizeEnabled = true;
1016    this.resize = new EventEmitter();
1017    this.resizing = false;
1018    this.element = element.nativeElement;
1019  }
1020  ngAfterViewInit() {
1021    const renderer2 = this.renderer;
1022    this.resizeHandle = renderer2.createElement("span");
1023    if (this.resizeEnabled) {
1024      renderer2.addClass(this.resizeHandle, "resize-handle");
1025    } else {
1026      renderer2.addClass(this.resizeHandle, "resize-handle--not-resizable");
1027    }
1028    renderer2.appendChild(this.element, this.resizeHandle);
1029  }
1030  ngOnDestroy() {
1031    this._destroySubscription();
1032    if (this.renderer.destroyNode) {
1033      this.renderer.destroyNode(this.resizeHandle);
1034    } else if (this.resizeHandle) {
1035      this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle);
1036    }
1037  }
1038  onMouseup() {
1039    this.resizing = false;
1040    if (this.subscription && !this.subscription.closed) {
1041      this._destroySubscription();
1042      this.resize.emit(this.element.clientWidth);
1043    }
1044  }
1045  onMousedown(event) {
1046    const isHandle = event.target.classList.contains("resize-handle");
1047    const initialWidth = this.element.clientWidth;
1048    const mouseDownScreenX = event.screenX;
1049    if (isHandle) {
1050      event.stopPropagation();
1051      this.resizing = true;
1052      const mouseup = fromEvent(document, "mouseup");
1053      this.subscription = mouseup.subscribe((ev) => this.onMouseup());
1054      const mouseMoveSub = fromEvent(document, "mousemove").pipe(takeUntil(mouseup)).subscribe((e) => this.move(e, initialWidth, mouseDownScreenX));
1055      this.subscription.add(mouseMoveSub);
1056    }
1057  }
1058  move(event, initialWidth, mouseDownScreenX) {
1059    const movementX = event.screenX - mouseDownScreenX;
1060    const newWidth = initialWidth + movementX;
1061    const overMinWidth = !this.minWidth || newWidth >= this.minWidth;
1062    const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth;
1063    if (overMinWidth && underMaxWidth) {
1064      this.element.style.width = `${newWidth}px`;
1065    }
1066  }
1067  _destroySubscription() {
1068    if (this.subscription) {
1069      this.subscription.unsubscribe();
1070      this.subscription = void 0;
1071    }
1072  }
1073};
1074ResizeableDirective.\u0275fac = function ResizeableDirective_Factory(__ngFactoryType__) {
1075  return new (__ngFactoryType__ || ResizeableDirective)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Renderer2));
1076};
1077ResizeableDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1078  type: ResizeableDirective,
1079  selectors: [["", "resizeable", ""]],
1080  hostVars: 2,
1081  hostBindings: function ResizeableDirective_HostBindings(rf, ctx) {
1082    if (rf & 1) {
1083      \u0275\u0275listener("mousedown", function ResizeableDirective_mousedown_HostBindingHandler($event) {
1084        return ctx.onMousedown($event);
1085      });
1086    }
1087    if (rf & 2) {
1088      \u0275\u0275classProp("resizeable", ctx.resizeEnabled);
1089    }
1090  },
1091  inputs: {
1092    resizeEnabled: "resizeEnabled",
1093    minWidth: "minWidth",
1094    maxWidth: "maxWidth"
1095  },
1096  outputs: {
1097    resize: "resize"
1098  }
1099});
1100(() => {
1101  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ResizeableDirective, [{
1102    type: Directive,
1103    args: [{
1104      selector: "[resizeable]",
1105      host: {
1106        "[class.resizeable]": "resizeEnabled"
1107      }
1108    }]
1109  }], function() {
1110    return [{
1111      type: ElementRef
1112    }, {
1113      type: Renderer2
1114    }];
1115  }, {
1116    resizeEnabled: [{
1117      type: Input
1118    }],
1119    minWidth: [{
1120      type: Input
1121    }],
1122    maxWidth: [{
1123      type: Input
1124    }],
1125    resize: [{
1126      type: Output
1127    }],
1128    onMousedown: [{
1129      type: HostListener,
1130      args: ["mousedown", ["$event"]]
1131    }]
1132  });
1133})();
1134var OrderableDirective = class {
1135  constructor(differs, document2) {
1136    this.document = document2;
1137    this.reorder = new EventEmitter();
1138    this.targetChanged = new EventEmitter();
1139    this.differ = differs.find({}).create();
1140  }
1141  ngAfterContentInit() {
1142    this.updateSubscriptions();
1143    this.draggables.changes.subscribe(this.updateSubscriptions.bind(this));
1144  }
1145  ngOnDestroy() {
1146    this.draggables.forEach((d) => {
1147      d.dragStart.unsubscribe();
1148      d.dragging.unsubscribe();
1149      d.dragEnd.unsubscribe();
1150    });
1151  }
1152  updateSubscriptions() {
1153    const diffs = this.differ.diff(this.createMapDiffs());
1154    if (diffs) {
1155      const subscribe = ({
1156        currentValue,
1157        previousValue
1158      }) => {
1159        unsubscribe({
1160          previousValue
1161        });
1162        if (currentValue) {
1163          currentValue.dragStart.subscribe(this.onDragStart.bind(this));
1164          currentValue.dragging.subscribe(this.onDragging.bind(this));
1165          currentValue.dragEnd.subscribe(this.onDragEnd.bind(this));
1166        }
1167      };
1168      const unsubscribe = ({
1169        previousValue
1170      }) => {
1171        if (previousValue) {
1172          previousValue.dragStart.unsubscribe();
1173          previousValue.dragging.unsubscribe();
1174          previousValue.dragEnd.unsubscribe();
1175        }
1176      };
1177      diffs.forEachAddedItem(subscribe);
1178      diffs.forEachRemovedItem(unsubscribe);
1179    }
1180  }
1181  onDragStart() {
1182    this.positions = {};
1183    let i = 0;
1184    for (const dragger of this.draggables.toArray()) {
1185      const elm = dragger.element;
1186      const left = parseInt(elm.offsetLeft.toString(), 0);
1187      this.positions[dragger.dragModel.prop] = {
1188        left,
1189        right: left + parseInt(elm.offsetWidth.toString(), 0),
1190        index: i++,
1191        element: elm
1192      };
1193    }
1194  }
1195  onDragging({
1196    element,
1197    model,
1198    event
1199  }) {
1200    const prevPos = this.positions[model.prop];
1201    const target = this.isTarget(model, event);
1202    if (target) {
1203      if (this.lastDraggingIndex !== target.i) {
1204        this.targetChanged.emit({
1205          prevIndex: this.lastDraggingIndex,
1206          newIndex: target.i,
1207          initialIndex: prevPos.index
1208        });
1209        this.lastDraggingIndex = target.i;
1210      }
1211    } else if (this.lastDraggingIndex !== prevPos.index) {
1212      this.targetChanged.emit({
1213        prevIndex: this.lastDraggingIndex,
1214        initialIndex: prevPos.index
1215      });
1216      this.lastDraggingIndex = prevPos.index;
1217    }
1218  }
1219  onDragEnd({
1220    element,
1221    model,
1222    event
1223  }) {
1224    const prevPos = this.positions[model.prop];
1225    const target = this.isTarget(model, event);
1226    if (target) {
1227      this.reorder.emit({
1228        prevIndex: prevPos.index,
1229        newIndex: target.i,
1230        model
1231      });
1232    }
1233    this.lastDraggingIndex = void 0;
1234    element.style.left = "auto";
1235  }
1236  isTarget(model, event) {
1237    let i = 0;
1238    const x = event.x || event.clientX;
1239    const y = event.y || event.clientY;
1240    const targets = this.document.elementsFromPoint(x, y);
1241    for (const prop in this.positions) {
1242      const pos = this.positions[prop];
1243      if (model.prop !== prop && targets.find((el) => el === pos.element)) {
1244        return {
1245          pos,
1246          i
1247        };
1248      }
1249      i++;
1250    }
1251  }
1252  createMapDiffs() {
1253    return this.draggables.toArray().reduce((acc, curr) => {
1254      acc[curr.dragModel.$$id] = curr;
1255      return acc;
1256    }, {});
1257  }
1258};
1259OrderableDirective.\u0275fac = function OrderableDirective_Factory(__ngFactoryType__) {
1260  return new (__ngFactoryType__ || OrderableDirective)(\u0275\u0275directiveInject(KeyValueDiffers), \u0275\u0275directiveInject(DOCUMENT));
1261};
1262OrderableDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1263  type: OrderableDirective,
1264  selectors: [["", "orderable", ""]],
1265  contentQueries: function OrderableDirective_ContentQueries(rf, ctx, dirIndex) {
1266    if (rf & 1) {
1267      \u0275\u0275contentQuery(dirIndex, DraggableDirective, 5);
1268    }
1269    if (rf & 2) {
1270      let _t;
1271      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.draggables = _t);
1272    }
1273  },
1274  outputs: {
1275    reorder: "reorder",
1276    targetChanged: "targetChanged"
1277  }
1278});
1279(() => {
1280  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(OrderableDirective, [{
1281    type: Directive,
1282    args: [{
1283      selector: "[orderable]"
1284    }]
1285  }], function() {
1286    return [{
1287      type: KeyValueDiffers
1288    }, {
1289      type: void 0,
1290      decorators: [{
1291        type: Inject,
1292        args: [DOCUMENT]
1293      }]
1294    }];
1295  }, {
1296    reorder: [{
1297      type: Output
1298    }],
1299    targetChanged: [{
1300      type: Output
1301    }],
1302    draggables: [{
1303      type: ContentChildren,
1304      args: [DraggableDirective, {
1305        descendants: true
1306      }]
1307    }]
1308  });
1309})();
1310var LongPressDirective = class {
1311  constructor() {
1312    this.pressEnabled = true;
1313    this.duration = 500;
1314    this.longPressStart = new EventEmitter();
1315    this.longPressing = new EventEmitter();
1316    this.longPressEnd = new EventEmitter();
1317    this.mouseX = 0;
1318    this.mouseY = 0;
1319  }
1320  get press() {
1321    return this.pressing;
1322  }
1323  get isLongPress() {
1324    return this.isLongPressing;
1325  }
1326  onMouseDown(event) {
1327    if (event.which !== 1 || !this.pressEnabled) return;
1328    const target = event.target;
1329    if (target.classList.contains("resize-handle")) return;
1330    this.mouseX = event.clientX;
1331    this.mouseY = event.clientY;
1332    this.pressing = true;
1333    this.isLongPressing = false;
1334    const mouseup = fromEvent(document, "mouseup");
1335    this.subscription = mouseup.subscribe((ev) => this.onMouseup());
1336    this.timeout = setTimeout(() => {
1337      this.isLongPressing = true;
1338      this.longPressStart.emit({
1339        event,
1340        model: this.pressModel
1341      });
1342      this.subscription.add(fromEvent(document, "mousemove").pipe(takeUntil(mouseup)).subscribe((mouseEvent) => this.onMouseMove(mouseEvent)));
1343      this.loop(event);
1344    }, this.duration);
1345    this.loop(event);
1346  }
1347  onMouseMove(event) {
1348    if (this.pressing && !this.isLongPressing) {
1349      const xThres = Math.abs(event.clientX - this.mouseX) > 10;
1350      const yThres = Math.abs(event.clientY - this.mouseY) > 10;
1351      if (xThres || yThres) {
1352        this.endPress();
1353      }
1354    }
1355  }
1356  loop(event) {
1357    if (this.isLongPressing) {
1358      this.timeout = setTimeout(() => {
1359        this.longPressing.emit({
1360          event,
1361          model: this.pressModel
1362        });
1363        this.loop(event);
1364      }, 50);
1365    }
1366  }
1367  endPress() {
1368    clearTimeout(this.timeout);
1369    this.isLongPressing = false;
1370    this.pressing = false;
1371    this._destroySubscription();
1372    this.longPressEnd.emit({
1373      model: this.pressModel
1374    });
1375  }
1376  onMouseup() {
1377    this.endPress();
1378  }
1379  ngOnDestroy() {
1380    this._destroySubscription();
1381  }
1382  _destroySubscription() {
1383    if (this.subscription) {
1384      this.subscription.unsubscribe();
1385      this.subscription = void 0;
1386    }
1387  }
1388};
1389LongPressDirective.\u0275fac = function LongPressDirective_Factory(__ngFactoryType__) {
1390  return new (__ngFactoryType__ || LongPressDirective)();
1391};
1392LongPressDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1393  type: LongPressDirective,
1394  selectors: [["", "long-press", ""]],
1395  hostVars: 4,
1396  hostBindings: function LongPressDirective_HostBindings(rf, ctx) {
1397    if (rf & 1) {
1398      \u0275\u0275listener("mousedown", function LongPressDirective_mousedown_HostBindingHandler($event) {
1399        return ctx.onMouseDown($event);
1400      });
1401    }
1402    if (rf & 2) {
1403      \u0275\u0275classProp("press", ctx.press)("longpress", ctx.isLongPress);
1404    }
1405  },
1406  inputs: {
1407    pressEnabled: "pressEnabled",
1408    pressModel: "pressModel",
1409    duration: "duration"
1410  },
1411  outputs: {
1412    longPressStart: "longPressStart",
1413    longPressing: "longPressing",
1414    longPressEnd: "longPressEnd"
1415  }
1416});
1417(() => {
1418  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(LongPressDirective, [{
1419    type: Directive,
1420    args: [{
1421      selector: "[long-press]"
1422    }]
1423  }], null, {
1424    pressEnabled: [{
1425      type: Input
1426    }],
1427    pressModel: [{
1428      type: Input
1429    }],
1430    duration: [{
1431      type: Input
1432    }],
1433    longPressStart: [{
1434      type: Output
1435    }],
1436    longPressing: [{
1437      type: Output
1438    }],
1439    longPressEnd: [{
1440      type: Output
1441    }],
1442    press: [{
1443      type: HostBinding,
1444      args: ["class.press"]
1445    }],
1446    isLongPress: [{
1447      type: HostBinding,
1448      args: ["class.longpress"]
1449    }],
1450    onMouseDown: [{
1451      type: HostListener,
1452      args: ["mousedown", ["$event"]]
1453    }]
1454  });
1455})();
1456var ScrollerComponent = class {
1457  constructor(ngZone, element, renderer) {
1458    this.ngZone = ngZone;
1459    this.renderer = renderer;
1460    this.scrollbarV = false;
1461    this.scrollbarH = false;
1462    this.scroll = new EventEmitter();
1463    this.scrollYPos = 0;
1464    this.scrollXPos = 0;
1465    this.prevScrollYPos = 0;
1466    this.prevScrollXPos = 0;
1467    this._scrollEventListener = null;
1468    this.element = element.nativeElement;
1469  }
1470  ngOnInit() {
1471    if (this.scrollbarV || this.scrollbarH) {
1472      const renderer = this.renderer;
1473      this.parentElement = renderer.parentNode(renderer.parentNode(this.element));
1474      this._scrollEventListener = this.onScrolled.bind(this);
1475      this.parentElement.addEventListener("scroll", this._scrollEventListener);
1476    }
1477  }
1478  ngOnDestroy() {
1479    if (this._scrollEventListener) {
1480      this.parentElement.removeEventListener("scroll", this._scrollEventListener);
1481      this._scrollEventListener = null;
1482    }
1483  }
1484  setOffset(offsetY) {
1485    if (this.parentElement) {
1486      this.parentElement.scrollTop = offsetY;
1487    }
1488  }
1489  onScrolled(event) {
1490    const dom = event.currentTarget;
1491    requestAnimationFrame(() => {
1492      this.scrollYPos = dom.scrollTop;
1493      this.scrollXPos = dom.scrollLeft;
1494      this.updateOffset();
1495    });
1496  }
1497  updateOffset() {
1498    let direction;
1499    if (this.scrollYPos < this.prevScrollYPos) {
1500      direction = "down";
1501    } else if (this.scrollYPos > this.prevScrollYPos) {
1502      direction = "up";
1503    }
1504    this.scroll.emit({
1505      direction,
1506      scrollYPos: this.scrollYPos,
1507      scrollXPos: this.scrollXPos
1508    });
1509    this.prevScrollYPos = this.scrollYPos;
1510    this.prevScrollXPos = this.scrollXPos;
1511  }
1512};
1513ScrollerComponent.\u0275fac = function ScrollerComponent_Factory(__ngFactoryType__) {
1514  return new (__ngFactoryType__ || ScrollerComponent)(\u0275\u0275directiveInject(NgZone), \u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Renderer2));
1515};
1516ScrollerComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
1517  type: ScrollerComponent,
1518  selectors: [["datatable-scroller"]],
1519  hostAttrs: [1, "datatable-scroll"],
1520  hostVars: 4,
1521  hostBindings: function ScrollerComponent_HostBindings(rf, ctx) {
1522    if (rf & 2) {
1523      \u0275\u0275styleProp("height", ctx.scrollHeight, "px")("width", ctx.scrollWidth, "px");
1524    }
1525  },
1526  inputs: {
1527    scrollbarV: "scrollbarV",
1528    scrollbarH: "scrollbarH",
1529    scrollHeight: "scrollHeight",
1530    scrollWidth: "scrollWidth"
1531  },
1532  outputs: {
1533    scroll: "scroll"
1534  },
1535  ngContentSelectors: _c0,
1536  decls: 1,
1537  vars: 0,
1538  template: function ScrollerComponent_Template(rf, ctx) {
1539    if (rf & 1) {
1540      \u0275\u0275projectionDef();
1541      \u0275\u0275projection(0);
1542    }
1543  },
1544  encapsulation: 2,
1545  changeDetection: 0
1546});
1547(() => {
1548  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollerComponent, [{
1549    type: Component,
1550    args: [{
1551      selector: "datatable-scroller",
1552      template: ` <ng-content></ng-content> `,
1553      host: {
1554        class: "datatable-scroll"
1555      },
1556      changeDetection: ChangeDetectionStrategy.OnPush
1557    }]
1558  }], function() {
1559    return [{
1560      type: NgZone
1561    }, {
1562      type: ElementRef
1563    }, {
1564      type: Renderer2
1565    }];
1566  }, {
1567    scrollbarV: [{
1568      type: Input
1569    }],
1570    scrollbarH: [{
1571      type: Input
1572    }],
1573    scrollHeight: [{
1574      type: HostBinding,
1575      args: ["style.height.px"]
1576    }, {
1577      type: Input
1578    }],
1579    scrollWidth: [{
1580      type: HostBinding,
1581      args: ["style.width.px"]
1582    }, {
1583      type: Input
1584    }],
1585    scroll: [{
1586      type: Output
1587    }]
1588  });
1589})();
1590var DatatableGroupHeaderTemplateDirective = class {
1591  constructor(template) {
1592    this.template = template;
1593  }
1594};
1595DatatableGroupHeaderTemplateDirective.\u0275fac = function DatatableGroupHeaderTemplateDirective_Factory(__ngFactoryType__) {
1596  return new (__ngFactoryType__ || DatatableGroupHeaderTemplateDirective)(\u0275\u0275directiveInject(TemplateRef));
1597};
1598DatatableGroupHeaderTemplateDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1599  type: DatatableGroupHeaderTemplateDirective,
1600  selectors: [["", "ngx-datatable-group-header-template", ""]]
1601});
1602(() => {
1603  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableGroupHeaderTemplateDirective, [{
1604    type: Directive,
1605    args: [{
1606      selector: "[ngx-datatable-group-header-template]"
1607    }]
1608  }], function() {
1609    return [{
1610      type: TemplateRef
1611    }];
1612  }, null);
1613})();
1614var DatatableGroupHeaderDirective = class {
1615  constructor() {
1616    this.rowHeight = 0;
1617    this.toggle = new EventEmitter();
1618  }
1619  get template() {
1620    return this._templateInput || this._templateQuery;
1621  }
1622  /**
1623   * Toggle the expansion of a group
1624   */
1625  toggleExpandGroup(group) {
1626    this.toggle.emit({
1627      type: "group",
1628      value: group
1629    });
1630  }
1631  /**
1632   * Expand all groups
1633   */
1634  expandAllGroups() {
1635    this.toggle.emit({
1636      type: "all",
1637      value: true
1638    });
1639  }
1640  /**
1641   * Collapse all groups
1642   */
1643  collapseAllGroups() {
1644    this.toggle.emit({
1645      type: "all",
1646      value: false
1647    });
1648  }
1649};
1650DatatableGroupHeaderDirective.\u0275fac = function DatatableGroupHeaderDirective_Factory(__ngFactoryType__) {
1651  return new (__ngFactoryType__ || DatatableGroupHeaderDirective)();
1652};
1653DatatableGroupHeaderDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1654  type: DatatableGroupHeaderDirective,
1655  selectors: [["ngx-datatable-group-header"]],
1656  contentQueries: function DatatableGroupHeaderDirective_ContentQueries(rf, ctx, dirIndex) {
1657    if (rf & 1) {
1658      \u0275\u0275contentQuery(dirIndex, DatatableGroupHeaderTemplateDirective, 7, TemplateRef);
1659    }
1660    if (rf & 2) {
1661      let _t;
1662      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._templateQuery = _t.first);
1663    }
1664  },
1665  inputs: {
1666    rowHeight: "rowHeight",
1667    _templateInput: [0, "template", "_templateInput"]
1668  },
1669  outputs: {
1670    toggle: "toggle"
1671  }
1672});
1673(() => {
1674  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableGroupHeaderDirective, [{
1675    type: Directive,
1676    args: [{
1677      selector: "ngx-datatable-group-header"
1678    }]
1679  }], null, {
1680    rowHeight: [{
1681      type: Input
1682    }],
1683    _templateInput: [{
1684      type: Input,
1685      args: ["template"]
1686    }],
1687    _templateQuery: [{
1688      type: ContentChild,
1689      args: [DatatableGroupHeaderTemplateDirective, {
1690        read: TemplateRef,
1691        static: true
1692      }]
1693    }],
1694    toggle: [{
1695      type: Output
1696    }]
1697  });
1698})();
1699function emptyStringGetter() {
1700  return "";
1701}
1702function getterForProp(prop) {
1703  if (prop == null) {
1704    return emptyStringGetter;
1705  }
1706  if (typeof prop === "number") {
1707    return numericIndexGetter;
1708  } else {
1709    if (prop.indexOf(".") !== -1) {
1710      return deepValueGetter;
1711    } else {
1712      return shallowValueGetter;
1713    }
1714  }
1715}
1716function numericIndexGetter(row, index) {
1717  if (row == null) {
1718    return "";
1719  }
1720  if (!row || index == null) {
1721    return row;
1722  }
1723  const value = row[index];
1724  if (value == null) {
1725    return "";
1726  }
1727  return value;
1728}
1729function shallowValueGetter(obj, fieldName) {
1730  if (obj == null) {
1731    return "";
1732  }
1733  if (!obj || !fieldName) {
1734    return obj;
1735  }
1736  const value = obj[fieldName];
1737  if (value == null) {
1738    return "";
1739  }
1740  return value;
1741}
1742function deepValueGetter(obj, path) {
1743  if (obj == null) {
1744    return "";
1745  }
1746  if (!obj || !path) {
1747    return obj;
1748  }
1749  let current = obj[path];
1750  if (current !== void 0) {
1751    return current;
1752  }
1753  current = obj;
1754  const split = path.split(".");
1755  if (split.length) {
1756    for (let i = 0; i < split.length; i++) {
1757      current = current[split[i]];
1758      if (current === void 0 || current === null) {
1759        return "";
1760      }
1761    }
1762  }
1763  return current;
1764}
1765function optionalGetterForProp(prop) {
1766  return prop && ((row) => getterForProp(prop)(row, prop));
1767}
1768function groupRowsByParents(rows, from, to) {
1769  if (from && to) {
1770    const nodeById = {};
1771    const l = rows.length;
1772    let node = null;
1773    nodeById[0] = new TreeNode();
1774    const uniqIDs = rows.reduce((arr, item) => {
1775      const toValue = to(item);
1776      if (arr.indexOf(toValue) === -1) {
1777        arr.push(toValue);
1778      }
1779      return arr;
1780    }, []);
1781    for (let i = 0; i < l; i++) {
1782      nodeById[to(rows[i])] = new TreeNode(rows[i]);
1783    }
1784    for (let i = 0; i < l; i++) {
1785      node = nodeById[to(rows[i])];
1786      let parent = 0;
1787      const fromValue = from(node.row);
1788      if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) {
1789        parent = fromValue;
1790      }
1791      node.parent = nodeById[parent];
1792      node.row["level"] = node.parent.row["level"] + 1;
1793      node.parent.children.push(node);
1794    }
1795    let resolvedRows = [];
1796    nodeById[0].flatten(function() {
1797      resolvedRows = [...resolvedRows, this.row];
1798    }, true);
1799    return resolvedRows;
1800  } else {
1801    return rows;
1802  }
1803}
1804var TreeNode = class {
1805  constructor(row = null) {
1806    if (!row) {
1807      row = {
1808        level: -1,
1809        treeStatus: "expanded"
1810      };
1811    }
1812    this.row = row;
1813    this.parent = null;
1814    this.children = [];
1815  }
1816  flatten(f, recursive) {
1817    if (this.row["treeStatus"] === "expanded") {
1818      for (let i = 0, l = this.children.length; i < l; i++) {
1819        const child = this.children[i];
1820        f.apply(child, Array.prototype.slice.call(arguments, 2));
1821        if (recursive) child.flatten.apply(child, arguments);
1822      }
1823    }
1824  }
1825};
1826function camelCase(str) {
1827  str = str.replace(/[^a-zA-Z0-9 ]/g, " ");
1828  str = str.replace(/([a-z](?=[A-Z]))/g, "$1 ");
1829  str = str.replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, "").trim().toLowerCase();
1830  str = str.replace(/([ 0-9]+)([a-zA-Z])/g, function(a, b, c) {
1831    return b.trim() + c.toUpperCase();
1832  });
1833  return str;
1834}
1835function deCamelCase(str) {
1836  return str.replace(/([A-Z])/g, (match) => ` ${match}`).replace(/^./, (match) => match.toUpperCase());
1837}
1838function id() {
1839  return ("0000" + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);
1840}
1841function setColumnDefaults(columns) {
1842  if (!columns) return;
1843  let treeColumnFound = false;
1844  for (const column of columns) {
1845    if (!column.$$id) {
1846      column.$$id = id();
1847    }
1848    if (isNullOrUndefined(column.prop) && column.name) {
1849      column.prop = camelCase(column.name);
1850    }
1851    if (!column.$$valueGetter) {
1852      column.$$valueGetter = getterForProp(column.prop);
1853    }
1854    if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {
1855      column.name = deCamelCase(String(column.prop));
1856    }
1857    if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {
1858      column.name = "";
1859    }
1860    if (!column.hasOwnProperty("resizeable")) {
1861      column.resizeable = true;
1862    }
1863    if (!column.hasOwnProperty("sortable")) {
1864      column.sortable = true;
1865    }
1866    if (!column.hasOwnProperty("draggable")) {
1867      column.draggable = true;
1868    }
1869    if (!column.hasOwnProperty("canAutoResize")) {
1870      column.canAutoResize = true;
1871    }
1872    if (!column.hasOwnProperty("width")) {
1873      column.width = 150;
1874    }
1875    if (!column.hasOwnProperty("isTreeColumn")) {
1876      column.isTreeColumn = false;
1877    } else {
1878      if (column.isTreeColumn && !treeColumnFound) {
1879        treeColumnFound = true;
1880      } else {
1881        column.isTreeColumn = false;
1882      }
1883    }
1884  }
1885}
1886function isNullOrUndefined(value) {
1887  return value === null || value === void 0;
1888}
1889function translateTemplates(templates) {
1890  const result = [];
1891  for (const temp of templates) {
1892    const col = {};
1893    const props = Object.getOwnPropertyNames(temp);
1894    for (const prop of props) {
1895      col[prop] = temp[prop];
1896    }
1897    if (temp.headerTemplate) {
1898      col.headerTemplate = temp.headerTemplate;
1899    }
1900    if (temp.cellTemplate) {
1901      col.cellTemplate = temp.cellTemplate;
1902    }
1903    if (temp.summaryFunc) {
1904      col.summaryFunc = temp.summaryFunc;
1905    }
1906    if (temp.summaryTemplate) {
1907      col.summaryTemplate = temp.summaryTemplate;
1908    }
1909    result.push(col);
1910  }
1911  return result;
1912}
1913var ColumnMode;
1914(function(ColumnMode2) {
1915  ColumnMode2["standard"] = "standard";
1916  ColumnMode2["flex"] = "flex";
1917  ColumnMode2["force"] = "force";
1918})(ColumnMode || (ColumnMode = {}));
1919var SelectionType;
1920(function(SelectionType2) {
1921  SelectionType2["single"] = "single";
1922  SelectionType2["multi"] = "multi";
1923  SelectionType2["multiClick"] = "multiClick";
1924  SelectionType2["cell"] = "cell";
1925  SelectionType2["checkbox"] = "checkbox";
1926})(SelectionType || (SelectionType = {}));
1927var SortType;
1928(function(SortType2) {
1929  SortType2["single"] = "single";
1930  SortType2["multi"] = "multi";
1931})(SortType || (SortType = {}));
1932var ContextmenuType;
1933(function(ContextmenuType2) {
1934  ContextmenuType2["header"] = "header";
1935  ContextmenuType2["body"] = "body";
1936})(ContextmenuType || (ContextmenuType = {}));
1937var DataTableColumnHeaderDirective = class {
1938  constructor(template) {
1939    this.template = template;
1940  }
1941};
1942DataTableColumnHeaderDirective.\u0275fac = function DataTableColumnHeaderDirective_Factory(__ngFactoryType__) {
1943  return new (__ngFactoryType__ || DataTableColumnHeaderDirective)(\u0275\u0275directiveInject(TemplateRef));
1944};
1945DataTableColumnHeaderDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1946  type: DataTableColumnHeaderDirective,
1947  selectors: [["", "ngx-datatable-header-template", ""]]
1948});
1949(() => {
1950  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnHeaderDirective, [{
1951    type: Directive,
1952    args: [{
1953      selector: "[ngx-datatable-header-template]"
1954    }]
1955  }], function() {
1956    return [{
1957      type: TemplateRef
1958    }];
1959  }, null);
1960})();
1961var DataTableColumnCellDirective = class {
1962  constructor(template) {
1963    this.template = template;
1964  }
1965};
1966DataTableColumnCellDirective.\u0275fac = function DataTableColumnCellDirective_Factory(__ngFactoryType__) {
1967  return new (__ngFactoryType__ || DataTableColumnCellDirective)(\u0275\u0275directiveInject(TemplateRef));
1968};
1969DataTableColumnCellDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1970  type: DataTableColumnCellDirective,
1971  selectors: [["", "ngx-datatable-cell-template", ""]]
1972});
1973(() => {
1974  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnCellDirective, [{
1975    type: Directive,
1976    args: [{
1977      selector: "[ngx-datatable-cell-template]"
1978    }]
1979  }], function() {
1980    return [{
1981      type: TemplateRef
1982    }];
1983  }, null);
1984})();
1985var DataTableColumnCellTreeToggle = class {
1986  constructor(template) {
1987    this.template = template;
1988  }
1989};
1990DataTableColumnCellTreeToggle.\u0275fac = function DataTableColumnCellTreeToggle_Factory(__ngFactoryType__) {
1991  return new (__ngFactoryType__ || DataTableColumnCellTreeToggle)(\u0275\u0275directiveInject(TemplateRef));
1992};
1993DataTableColumnCellTreeToggle.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
1994  type: DataTableColumnCellTreeToggle,
1995  selectors: [["", "ngx-datatable-tree-toggle", ""]]
1996});
1997(() => {
1998  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnCellTreeToggle, [{
1999    type: Directive,
2000    args: [{
2001      selector: "[ngx-datatable-tree-toggle]"
2002    }]
2003  }], function() {
2004    return [{
2005      type: TemplateRef
2006    }];
2007  }, null);
2008})();
2009var DataTableColumnDirective = class {
2010  constructor(columnChangesService) {
2011    this.columnChangesService = columnChangesService;
2012    this.isFirstChange = true;
2013  }
2014  get cellTemplate() {
2015    return this._cellTemplateInput || this._cellTemplateQuery;
2016  }
2017  get headerTemplate() {
2018    return this._headerTemplateInput || this._headerTemplateQuery;
2019  }
2020  get treeToggleTemplate() {
2021    return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;
2022  }
2023  ngOnChanges() {
2024    if (this.isFirstChange) {
2025      this.isFirstChange = false;
2026    } else {
2027      this.columnChangesService.onInputChange();
2028    }
2029  }
2030};
2031DataTableColumnDirective.\u0275fac = function DataTableColumnDirective_Factory(__ngFactoryType__) {
2032  return new (__ngFactoryType__ || DataTableColumnDirective)(\u0275\u0275directiveInject(ColumnChangesService));
2033};
2034DataTableColumnDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
2035  type: DataTableColumnDirective,
2036  selectors: [["ngx-datatable-column"]],
2037  contentQueries: function DataTableColumnDirective_ContentQueries(rf, ctx, dirIndex) {
2038    if (rf & 1) {
2039      \u0275\u0275contentQuery(dirIndex, DataTableColumnCellDirective, 7, TemplateRef);
2040      \u0275\u0275contentQuery(dirIndex, DataTableColumnHeaderDirective, 7, TemplateRef);
2041      \u0275\u0275contentQuery(dirIndex, DataTableColumnCellTreeToggle, 7, TemplateRef);
2042    }
2043    if (rf & 2) {
2044      let _t;
2045      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._cellTemplateQuery = _t.first);
2046      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._headerTemplateQuery = _t.first);
2047      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._treeToggleTemplateQuery = _t.first);
2048    }
2049  },
2050  inputs: {
2051    name: "name",
2052    prop: "prop",
2053    frozenLeft: "frozenLeft",
2054    frozenRight: "frozenRight",
2055    flexGrow: "flexGrow",
2056    resizeable: "resizeable",
2057    comparator: "comparator",
2058    pipe: "pipe",
2059    sortable: "sortable",
2060    draggable: "draggable",
2061    canAutoResize: "canAutoResize",
2062    minWidth: "minWidth",
2063    width: "width",
2064    maxWidth: "maxWidth",
2065    checkboxable: "checkboxable",
2066    headerCheckboxable: "headerCheckboxable",
2067    headerClass: "headerClass",
2068    cellClass: "cellClass",
2069    isTreeColumn: "isTreeColumn",
2070    treeLevelIndent: "treeLevelIndent",
2071    summaryFunc: "summaryFunc",
2072    summaryTemplate: "summaryTemplate",
2073    _cellTemplateInput: [0, "cellTemplate", "_cellTemplateInput"],
2074    _headerTemplateInput: [0, "headerTemplate", "_headerTemplateInput"],
2075    _treeToggleTemplateInput: [0, "treeToggleTemplate", "_treeToggleTemplateInput"]
2076  },
2077  features: [\u0275\u0275NgOnChangesFeature]
2078});
2079(() => {
2080  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnDirective, [{
2081    type: Directive,
2082    args: [{
2083      selector: "ngx-datatable-column"
2084    }]
2085  }], function() {
2086    return [{
2087      type: ColumnChangesService
2088    }];
2089  }, {
2090    name: [{
2091      type: Input
2092    }],
2093    prop: [{
2094      type: Input
2095    }],
2096    frozenLeft: [{
2097      type: Input
2098    }],
2099    frozenRight: [{
2100      type: Input
2101    }],
2102    flexGrow: [{
2103      type: Input
2104    }],
2105    resizeable: [{
2106      type: Input
2107    }],
2108    comparator: [{
2109      type: Input
2110    }],
2111    pipe: [{
2112      type: Input
2113    }],
2114    sortable: [{
2115      type: Input
2116    }],
2117    draggable: [{
2118      type: Input
2119    }],
2120    canAutoResize: [{
2121      type: Input
2122    }],
2123    minWidth: [{
2124      type: Input
2125    }],
2126    width: [{
2127      type: Input
2128    }],
2129    maxWidth: [{
2130      type: Input
2131    }],
2132    checkboxable: [{
2133      type: Input
2134    }],
2135    headerCheckboxable: [{
2136      type: Input
2137    }],
2138    headerClass: [{
2139      type: Input
2140    }],
2141    cellClass: [{
2142      type: Input
2143    }],
2144    isTreeColumn: [{
2145      type: Input
2146    }],
2147    treeLevelIndent: [{
2148      type: Input
2149    }],
2150    summaryFunc: [{
2151      type: Input
2152    }],
2153    summaryTemplate: [{
2154      type: Input
2155    }],
2156    _cellTemplateInput: [{
2157      type: Input,
2158      args: ["cellTemplate"]
2159    }],
2160    _cellTemplateQuery: [{
2161      type: ContentChild,
2162      args: [DataTableColumnCellDirective, {
2163        read: TemplateRef,
2164        static: true
2165      }]
2166    }],
2167    _headerTemplateInput: [{
2168      type: Input,
2169      args: ["headerTemplate"]
2170    }],
2171    _headerTemplateQuery: [{
2172      type: ContentChild,
2173      args: [DataTableColumnHeaderDirective, {
2174        read: TemplateRef,
2175        static: true
2176      }]
2177    }],
2178    _treeToggleTemplateInput: [{
2179      type: Input,
2180      args: ["treeToggleTemplate"]
2181    }],
2182    _treeToggleTemplateQuery: [{
2183      type: ContentChild,
2184      args: [DataTableColumnCellTreeToggle, {
2185        read: TemplateRef,
2186        static: true
2187      }]
2188    }]
2189  });
2190})();
2191var DatatableRowDetailTemplateDirective = class {
2192  constructor(template) {
2193    this.template = template;
2194  }
2195};
2196DatatableRowDetailTemplateDirective.\u0275fac = function DatatableRowDetailTemplateDirective_Factory(__ngFactoryType__) {
2197  return new (__ngFactoryType__ || DatatableRowDetailTemplateDirective)(\u0275\u0275directiveInject(TemplateRef));
2198};
2199DatatableRowDetailTemplateDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
2200  type: DatatableRowDetailTemplateDirective,
2201  selectors: [["", "ngx-datatable-row-detail-template", ""]]
2202});
2203(() => {
2204  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableRowDetailTemplateDirective, [{
2205    type: Directive,
2206    args: [{
2207      selector: "[ngx-datatable-row-detail-template]"
2208    }]
2209  }], function() {
2210    return [{
2211      type: TemplateRef
2212    }];
2213  }, null);
2214})();
2215var DatatableRowDetailDirective = class {
2216  constructor() {
2217    this.rowHeight = 0;
2218    this.toggle = new EventEmitter();
2219  }
2220  get template() {
2221    return this._templateInput || this._templateQuery;
2222  }
2223  /**
2224   * Toggle the expansion of the row
2225   */
2226  toggleExpandRow(row) {
2227    this.toggle.emit({
2228      type: "row",
2229      value: row
2230    });
2231  }
2232  /**
2233   * API method to expand all the rows.
2234   */
2235  expandAllRows() {
2236    this.toggle.emit({
2237      type: "all",
2238      value: true
2239    });
2240  }
2241  /**
2242   * API method to collapse all the rows.
2243   */
2244  collapseAllRows() {
2245    this.toggle.emit({
2246      type: "all",
2247      value: false
2248    });
2249  }
2250};
2251DatatableRowDetailDirective.\u0275fac = function DatatableRowDetailDirective_Factory(__ngFactoryType__) {
2252  return new (__ngFactoryType__ || DatatableRowDetailDirective)();
2253};
2254DatatableRowDetailDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
2255  type: DatatableRowDetailDirective,
2256  selectors: [["ngx-datatable-row-detail"]],
2257  contentQueries: function DatatableRowDetailDirective_ContentQueries(rf, ctx, dirIndex) {
2258    if (rf & 1) {
2259      \u0275\u0275contentQuery(dirIndex, DatatableRowDetailTemplateDirective, 7, TemplateRef);
2260    }
2261    if (rf & 2) {
2262      let _t;
2263      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._templateQuery = _t.first);
2264    }
2265  },
2266  inputs: {
2267    rowHeight: "rowHeight",
2268    _templateInput: [0, "template", "_templateInput"]
2269  },
2270  outputs: {
2271    toggle: "toggle"
2272  }
2273});
2274(() => {
2275  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableRowDetailDirective, [{
2276    type: Directive,
2277    args: [{
2278      selector: "ngx-datatable-row-detail"
2279    }]
2280  }], null, {
2281    rowHeight: [{
2282      type: Input
2283    }],
2284    _templateInput: [{
2285      type: Input,
2286      args: ["template"]
2287    }],
2288    _templateQuery: [{
2289      type: ContentChild,
2290      args: [DatatableRowDetailTemplateDirective, {
2291        read: TemplateRef,
2292        static: true
2293      }]
2294    }],
2295    toggle: [{
2296      type: Output
2297    }]
2298  });
2299})();
2300var DatatableFooterDirective = class {
2301  get template() {
2302    return this._templateInput || this._templateQuery;
2303  }
2304};
2305DatatableFooterDirective.\u0275fac = function DatatableFooterDirective_Factory(__ngFactoryType__) {
2306  return new (__ngFactoryType__ || DatatableFooterDirective)();
2307};
2308DatatableFooterDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
2309  type: DatatableFooterDirective,
2310  selectors: [["ngx-datatable-footer"]],
2311  contentQueries: function DatatableFooterDirective_ContentQueries(rf, ctx, dirIndex) {
2312    if (rf & 1) {
2313      \u0275\u0275contentQuery(dirIndex, DataTableFooterTemplateDirective, 5, TemplateRef);
2314    }
2315    if (rf & 2) {
2316      let _t;
2317      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._templateQuery = _t.first);
2318    }
2319  },
2320  inputs: {
2321    footerHeight: "footerHeight",
2322    totalMessage: "totalMessage",
2323    selectedMessage: "selectedMessage",
2324    pagerLeftArrowIcon: "pagerLeftArrowIcon",
2325    pagerRightArrowIcon: "pagerRightArrowIcon",
2326    pagerPreviousIcon: "pagerPreviousIcon",
2327    pagerNextIcon: "pagerNextIcon",
2328    _templateInput: [0, "template", "_templateInput"]
2329  }
2330});
2331(() => {
2332  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableFooterDirective, [{
2333    type: Directive,
2334    args: [{
2335      selector: "ngx-datatable-footer"
2336    }]
2337  }], null, {
2338    footerHeight: [{
2339      type: Input
2340    }],
2341    totalMessage: [{
2342      type: Input
2343    }],
2344    selectedMessage: [{
2345      type: Input
2346    }],
2347    pagerLeftArrowIcon: [{
2348      type: Input
2349    }],
2350    pagerRightArrowIcon: [{
2351      type: Input
2352    }],
2353    pagerPreviousIcon: [{
2354      type: Input
2355    }],
2356    pagerNextIcon: [{
2357      type: Input
2358    }],
2359    _templateInput: [{
2360      type: Input,
2361      args: ["template"]
2362    }],
2363    _templateQuery: [{
2364      type: ContentChild,
2365      args: [DataTableFooterTemplateDirective, {
2366        read: TemplateRef
2367      }]
2368    }]
2369  });
2370})();
2371function columnsByPin(cols) {
2372  const ret = {
2373    left: [],
2374    center: [],
2375    right: []
2376  };
2377  if (cols) {
2378    for (const col of cols) {
2379      if (col.frozenLeft) {
2380        ret.left.push(col);
2381      } else if (col.frozenRight) {
2382        ret.right.push(col);
2383      } else {
2384        ret.center.push(col);
2385      }
2386    }
2387  }
2388  return ret;
2389}
2390function columnGroupWidths(groups, all) {
2391  return {
2392    left: columnTotalWidth(groups.left),
2393    center: columnTotalWidth(groups.center),
2394    right: columnTotalWidth(groups.right),
2395    total: Math.floor(columnTotalWidth(all))
2396  };
2397}
2398function columnTotalWidth(columns, prop) {
2399  let totalWidth = 0;
2400  if (columns) {
2401    for (const c of columns) {
2402      const has = prop && c[prop];
2403      const width = has ? c[prop] : c.width;
2404      totalWidth = totalWidth + parseFloat(width);
2405    }
2406  }
2407  return totalWidth;
2408}
2409function columnsTotalWidth(columns, prop) {
2410  let totalWidth = 0;
2411  for (const column of columns) {
2412    const has = prop && column[prop];
2413    totalWidth = totalWidth + (has ? column[prop] : column.width);
2414  }
2415  return totalWidth;
2416}
2417function columnsByPinArr(val) {
2418  const colsByPinArr = [];
2419  const colsByPin = columnsByPin(val);
2420  colsByPinArr.push({
2421    type: "left",
2422    columns: colsByPin["left"]
2423  });
2424  colsByPinArr.push({
2425    type: "center",
2426    columns: colsByPin["center"]
2427  });
2428  colsByPinArr.push({
2429    type: "right",
2430    columns: colsByPin["right"]
2431  });
2432  return colsByPinArr;
2433}
2434var RowHeightCache = class {
2435  constructor() {
2436    this.treeArray = [];
2437  }
2438  /**
2439   * Clear the Tree array.
2440   */
2441  clearCache() {
2442    this.treeArray = [];
2443  }
2444  /**
2445   * Initialize the Fenwick tree with row Heights.
2446   *
2447   * @param rows The array of rows which contain the expanded status.
2448   * @param rowHeight The row height.
2449   * @param detailRowHeight The detail row height.
2450   */
2451  initCache(details) {
2452    const {
2453      rows,
2454      rowHeight,
2455      detailRowHeight,
2456      externalVirtual,
2457      rowCount,
2458      rowIndexes,
2459      rowExpansions
2460    } = details;
2461    const isFn = typeof rowHeight === "function";
2462    const isDetailFn = typeof detailRowHeight === "function";
2463    if (!isFn && isNaN(rowHeight)) {
2464      throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a
2465        valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);
2466    }
2467    if (!isDetailFn && isNaN(detailRowHeight)) {
2468      throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a
2469        valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);
2470    }
2471    const n = externalVirtual ? rowCount : rows.length;
2472    this.treeArray = new Array(n);
2473    for (let i = 0; i < n; ++i) {
2474      this.treeArray[i] = 0;
2475    }
2476    for (let i = 0; i < n; ++i) {
2477      const row = rows[i];
2478      let currentRowHeight = rowHeight;
2479      if (isFn) {
2480        currentRowHeight = rowHeight(row);
2481      }
2482      const expanded = rowExpansions.has(row);
2483      if (row && expanded) {
2484        if (isDetailFn) {
2485          const index = rowIndexes.get(row);
2486          currentRowHeight += detailRowHeight(row, index);
2487        } else {
2488          currentRowHeight += detailRowHeight;
2489        }
2490      }
2491      this.update(i, currentRowHeight);
2492    }
2493  }
2494  /**
2495   * Given the ScrollY position i.e. sum, provide the rowIndex
2496   * that is present in the current view port.  Below handles edge cases.
2497   */
2498  getRowIndex(scrollY) {
2499    if (scrollY === 0) return 0;
2500    return this.calcRowIndex(scrollY);
2501  }
2502  /**
2503   * When a row is expanded or rowHeight is changed, update the height.  This can
2504   * be utilized in future when Angular Data table supports dynamic row heights.
2505   */
2506  update(atRowIndex, byRowHeight) {
2507    if (!this.treeArray.length) {
2508      throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:
2509        Row Height cache not initialized.`);
2510    }
2511    const n = this.treeArray.length;
2512    atRowIndex |= 0;
2513    while (atRowIndex < n) {
2514      this.treeArray[atRowIndex] += byRowHeight;
2515      atRowIndex |= atRowIndex + 1;
2516    }
2517  }
2518  /**
2519   * Range Sum query from 1 to the rowIndex
2520   */
2521  query(atIndex) {
2522    if (!this.treeArray.length) {
2523      throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);
2524    }
2525    let sum = 0;
2526    atIndex |= 0;
2527    while (atIndex >= 0) {
2528      sum += this.treeArray[atIndex];
2529      atIndex = (atIndex & atIndex + 1) - 1;
2530    }
2531    return sum;
2532  }
2533  /**
2534   * Find the total height between 2 row indexes
2535   */
2536  queryBetween(atIndexA, atIndexB) {
2537    return this.query(atIndexB) - this.query(atIndexA - 1);
2538  }
2539  /**
2540   * Given the ScrollY position i.e. sum, provide the rowIndex
2541   * that is present in the current view port.
2542   */
2543  calcRowIndex(sum) {
2544    if (!this.treeArray.length) return 0;
2545    let pos = -1;
2546    const dataLength = this.treeArray.length;
2547    const highestBit = Math.pow(2, dataLength.toString(2).length - 1);
2548    for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {
2549      const nextPos = pos + blockSize;
2550      if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {
2551        sum -= this.treeArray[nextPos];
2552        pos = nextPos;
2553      }
2554    }
2555    return pos + 1;
2556  }
2557};
2558var cache = {};
2559var testStyle = typeof document !== "undefined" ? document.createElement("div").style : void 0;
2560var prefix = function() {
2561  const styles = typeof window !== "undefined" ? window.getComputedStyle(document.documentElement, "") : void 0;
2562  const match = typeof styles !== "undefined" ? Array.prototype.slice.call(styles).join("").match(/-(moz|webkit|ms)-/) : null;
2563  const pre = match !== null ? match[1] : void 0;
2564  const dom = typeof pre !== "undefined" ? "WebKit|Moz|MS|O".match(new RegExp("(" + pre + ")", "i"))[1] : void 0;
2565  return dom ? {
2566    dom,
2567    lowercase: pre,
2568    css: `-${pre}-`,
2569    js: pre[0].toUpperCase() + pre.substr(1)
2570  } : void 0;
2571}();
2572function getVendorPrefixedName(property) {
2573  const name = camelCase(property);
2574  if (!cache[name]) {
2575    if (prefix !== void 0 && testStyle[prefix.css + property] !== void 0) {
2576      cache[name] = prefix.css + property;
2577    } else if (testStyle[property] !== void 0) {
2578      cache[name] = property;
2579    }
2580  }
2581  return cache[name];
2582}
2583var transform = typeof window !== "undefined" ? getVendorPrefixedName("transform") : void 0;
2584var backfaceVisibility = typeof window !== "undefined" ? getVendorPrefixedName("backfaceVisibility") : void 0;
2585var hasCSSTransforms = typeof window !== "undefined" ? !!getVendorPrefixedName("transform") : void 0;
2586var hasCSS3DTransforms = typeof window !== "undefined" ? !!getVendorPrefixedName("perspective") : void 0;
2587var ua = typeof window !== "undefined" ? window.navigator.userAgent : "Chrome";
2588var isSafari = /Safari\//.test(ua) && !/Chrome\//.test(ua);
2589function translateXY(styles, x, y) {
2590  if (typeof transform !== "undefined" && hasCSSTransforms) {
2591    if (!isSafari && hasCSS3DTransforms) {
2592      styles[transform] = `translate3d(${x}px, ${y}px, 0)`;
2593      styles[backfaceVisibility] = "hidden";
2594    } else {
2595      styles[camelCase(transform)] = `translate(${x}px, ${y}px)`;
2596    }
2597  } else {
2598    styles.top = `${y}px`;
2599    styles.left = `${x}px`;
2600  }
2601}
2602var ProgressBarComponent = class {
2603};
2604ProgressBarComponent.\u0275fac = function ProgressBarComponent_Factory(__ngFactoryType__) {
2605  return new (__ngFactoryType__ || ProgressBarComponent)();
2606};
2607ProgressBarComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
2608  type: ProgressBarComponent,
2609  selectors: [["datatable-progress"]],
2610  decls: 3,
2611  vars: 0,
2612  consts: [["role", "progressbar", 1, "progress-linear"], [1, "container"], [1, "bar"]],
2613  template: function ProgressBarComponent_Template(rf, ctx) {
2614    if (rf & 1) {
2615      \u0275\u0275elementStart(0, "div", 0)(1, "div", 1);
2616      \u0275\u0275element(2, "div", 2);
2617      \u0275\u0275elementEnd()();
2618    }
2619  },
2620  encapsulation: 2,
2621  changeDetection: 0
2622});
2623(() => {
2624  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ProgressBarComponent, [{
2625    type: Component,
2626    args: [{
2627      selector: "datatable-progress",
2628      template: `
2629    <div class="progress-linear" role="progressbar">
2630      <div class="container">
2631        <div class="bar"></div>
2632      </div>
2633    </div>
2634  `,
2635      changeDetection: ChangeDetectionStrategy.OnPush
2636    }]
2637  }], null, null);
2638})();
2639function selectRows(selected, row, comparefn) {
2640  const selectedIndex = comparefn(row, selected);
2641  if (selectedIndex > -1) {
2642    selected.splice(selectedIndex, 1);
2643  } else {
2644    selected.push(row);
2645  }
2646  return selected;
2647}
2648function selectRowsBetween(selected, rows, index, prevIndex, comparefn) {
2649  const reverse = index < prevIndex;
2650  for (let i = 0; i < rows.length; i++) {
2651    const row = rows[i];
2652    const greater = i >= prevIndex && i <= index;
2653    const lesser = i <= prevIndex && i >= index;
2654    let range = {
2655      start: 0,
2656      end: 0
2657    };
2658    if (reverse) {
2659      range = {
2660        start: index,
2661        end: prevIndex
2662      };
2663    } else {
2664      range = {
2665        start: prevIndex,
2666        end: index + 1
2667      };
2668    }
2669    if (reverse && lesser || !reverse && greater) {
2670      if (i >= range.start && i <= range.end) {
2671        selected.push(row);
2672      }
2673    }
2674  }
2675  return selected;
2676}
2677var Keys;
2678(function(Keys2) {
2679  Keys2[Keys2["up"] = 38] = "up";
2680  Keys2[Keys2["down"] = 40] = "down";
2681  Keys2[Keys2["return"] = 13] = "return";
2682  Keys2[Keys2["escape"] = 27] = "escape";
2683  Keys2[Keys2["left"] = 37] = "left";
2684  Keys2[Keys2["right"] = 39] = "right";
2685})(Keys || (Keys = {}));
2686var DataTableSelectionComponent = class {
2687  constructor() {
2688    this.activate = new EventEmitter();
2689    this.select = new EventEmitter();
2690  }
2691  selectRow(event, index, row) {
2692    if (!this.selectEnabled) return;
2693    const chkbox = this.selectionType === SelectionType.checkbox;
2694    const multi = this.selectionType === SelectionType.multi;
2695    const multiClick = this.selectionType === SelectionType.multiClick;
2696    let selected = [];
2697    if (multi || chkbox || multiClick) {
2698      if (event.shiftKey) {
2699        selected = selectRowsBetween([], this.rows, index, this.prevIndex, this.getRowSelectedIdx.bind(this));
2700      } else if (event.ctrlKey || event.metaKey || multiClick || chkbox) {
2701        selected = selectRows([...this.selected], row, this.getRowSelectedIdx.bind(this));
2702      } else {
2703        selected = selectRows([], row, this.getRowSelectedIdx.bind(this));
2704      }
2705    } else {
2706      selected = selectRows([], row, this.getRowSelectedIdx.bind(this));
2707    }
2708    if (typeof this.selectCheck === "function") {
2709      selected = selected.filter(this.selectCheck.bind(this));
2710    }
2711    this.selected.splice(0, this.selected.length);
2712    this.selected.push(...selected);
2713    this.prevIndex = index;
2714    this.select.emit({
2715      selected
2716    });
2717  }
2718  onActivate(model, index) {
2719    const {
2720      type,
2721      event,
2722      row
2723    } = model;
2724    const chkbox = this.selectionType === SelectionType.checkbox;
2725    const select = !chkbox && (type === "click" || type === "dblclick") || chkbox && type === "checkbox";
2726    if (select) {
2727      this.selectRow(event, index, row);
2728    } else if (type === "keydown") {
2729      if (event.keyCode === Keys.return) {
2730        this.selectRow(event, index, row);
2731      } else {
2732        this.onKeyboardFocus(model);
2733      }
2734    }
2735    this.activate.emit(model);
2736  }
2737  onKeyboardFocus(model) {
2738    const {
2739      keyCode
2740    } = model.event;
2741    const shouldFocus = keyCode === Keys.up || keyCode === Keys.down || keyCode === Keys.right || keyCode === Keys.left;
2742    if (shouldFocus) {
2743      const isCellSelection = this.selectionType === SelectionType.cell;
2744      if (!model.cellElement || !isCellSelection) {
2745        this.focusRow(model.rowElement, keyCode);
2746      } else if (isCellSelection) {
2747        this.focusCell(model.cellElement, model.rowElement, keyCode, model.cellIndex);
2748      }
2749    }
2750  }
2751  focusRow(rowElement, keyCode) {
2752    const nextRowElement = this.getPrevNextRow(rowElement, keyCode);
2753    if (nextRowElement) nextRowElement.focus();
2754  }
2755  getPrevNextRow(rowElement, keyCode) {
2756    const parentElement = rowElement.parentElement;
2757    if (parentElement) {
2758      let focusElement;
2759      if (keyCode === Keys.up) {
2760        focusElement = parentElement.previousElementSibling;
2761      } else if (keyCode === Keys.down) {
2762        focusElement = parentElement.nextElementSibling;
2763      }
2764      if (focusElement && focusElement.children.length) {
2765        return focusElement.children[0];
2766      }
2767    }
2768  }
2769  focusCell(cellElement, rowElement, keyCode, cellIndex) {
2770    let nextCellElement;
2771    if (keyCode === Keys.left) {
2772      nextCellElement = cellElement.previousElementSibling;
2773    } else if (keyCode === Keys.right) {
2774      nextCellElement = cellElement.nextElementSibling;
2775    } else if (keyCode === Keys.up || keyCode === Keys.down) {
2776      const nextRowElement = this.getPrevNextRow(rowElement, keyCode);
2777      if (nextRowElement) {
2778        const children = nextRowElement.getElementsByClassName("datatable-body-cell");
2779        if (children.length) nextCellElement = children[cellIndex];
2780      }
2781    }
2782    if (nextCellElement) nextCellElement.focus();
2783  }
2784  getRowSelected(row) {
2785    return this.getRowSelectedIdx(row, this.selected) > -1;
2786  }
2787  getRowSelectedIdx(row, selected) {
2788    if (!selected || !selected.length) return -1;
2789    const rowId = this.rowIdentity(row);
2790    return selected.findIndex((r) => {
2791      const id2 = this.rowIdentity(r);
2792      return id2 === rowId;
2793    });
2794  }
2795};
2796DataTableSelectionComponent.\u0275fac = function DataTableSelectionComponent_Factory(__ngFactoryType__) {
2797  return new (__ngFactoryType__ || DataTableSelectionComponent)();
2798};
2799DataTableSelectionComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
2800  type: DataTableSelectionComponent,
2801  selectors: [["datatable-selection"]],
2802  inputs: {
2803    rows: "rows",
2804    selected: "selected",
2805    selectEnabled: "selectEnabled",
2806    selectionType: "selectionType",
2807    rowIdentity: "rowIdentity",
2808    selectCheck: "selectCheck"
2809  },
2810  outputs: {
2811    activate: "activate",
2812    select: "select"
2813  },
2814  ngContentSelectors: _c0,
2815  decls: 1,
2816  vars: 0,
2817  template: function DataTableSelectionComponent_Template(rf, ctx) {
2818    if (rf & 1) {
2819      \u0275\u0275projectionDef();
2820      \u0275\u0275projection(0);
2821    }
2822  },
2823  encapsulation: 2,
2824  changeDetection: 0
2825});
2826(() => {
2827  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableSelectionComponent, [{
2828    type: Component,
2829    args: [{
2830      selector: "datatable-selection",
2831      template: ` <ng-content></ng-content> `,
2832      changeDetection: ChangeDetectionStrategy.OnPush
2833    }]
2834  }], null, {
2835    rows: [{
2836      type: Input
2837    }],
2838    selected: [{
2839      type: Input
2840    }],
2841    selectEnabled: [{
2842      type: Input
2843    }],
2844    selectionType: [{
2845      type: Input
2846    }],
2847    rowIdentity: [{
2848      type: Input
2849    }],
2850    selectCheck: [{
2851      type: Input
2852    }],
2853    activate: [{
2854      type: Output
2855    }],
2856    select: [{
2857      type: Output
2858    }]
2859  });
2860})();
2861var SortDirection;
2862(function(SortDirection3) {
2863  SortDirection3["asc"] = "asc";
2864  SortDirection3["desc"] = "desc";
2865})(SortDirection || (SortDirection = {}));
2866var DataTableBodyCellComponent = class {
2867  constructor(element, cd) {
2868    this.cd = cd;
2869    this.activate = new EventEmitter();
2870    this.treeAction = new EventEmitter();
2871    this.isFocused = false;
2872    this.onCheckboxChangeFn = this.onCheckboxChange.bind(this);
2873    this.activateFn = this.activate.emit.bind(this.activate);
2874    this.cellContext = {
2875      onCheckboxChangeFn: this.onCheckboxChangeFn,
2876      activateFn: this.activateFn,
2877      row: this.row,
2878      group: this.group,
2879      value: this.value,
2880      column: this.column,
2881      rowHeight: this.rowHeight,
2882      isSelected: this.isSelected,
2883      rowIndex: this.rowIndex,
2884      treeStatus: this.treeStatus,
2885      onTreeAction: this.onTreeAction.bind(this)
2886    };
2887    this._element = element.nativeElement;
2888  }
2889  set group(group) {
2890    this._group = group;
2891    this.cellContext.group = group;
2892    this.checkValueUpdates();
2893    this.cd.markForCheck();
2894  }
2895  get group() {
2896    return this._group;
2897  }
2898  set rowHeight(val) {
2899    this._rowHeight = val;
2900    this.cellContext.rowHeight = val;
2901    this.checkValueUpdates();
2902    this.cd.markForCheck();
2903  }
2904  get rowHeight() {
2905    return this._rowHeight;
2906  }
2907  set isSelected(val) {
2908    this._isSelected = val;
2909    this.cellContext.isSelected = val;
2910    this.cd.markForCheck();
2911  }
2912  get isSelected() {
2913    return this._isSelected;
2914  }
2915  set expanded(val) {
2916    this._expanded = val;
2917    this.cellContext.expanded = val;
2918    this.cd.markForCheck();
2919  }
2920  get expanded() {
2921    return this._expanded;
2922  }
2923  set rowIndex(val) {
2924    this._rowIndex = val;
2925    this.cellContext.rowIndex = val;
2926    this.checkValueUpdates();
2927    this.cd.markForCheck();
2928  }
2929  get rowIndex() {
2930    return this._rowIndex;
2931  }
2932  set column(column) {
2933    this._column = column;
2934    this.cellContext.column = column;
2935    this.checkValueUpdates();
2936    this.cd.markForCheck();
2937  }
2938  get column() {
2939    return this._column;
2940  }
2941  set row(row) {
2942    this._row = row;
2943    this.cellContext.row = row;
2944    this.checkValueUpdates();
2945    this.cd.markForCheck();
2946  }
2947  get row() {
2948    return this._row;
2949  }
2950  set sorts(val) {
2951    this._sorts = val;
2952    this.calcSortDir = this.calcSortDir(val);
2953  }
2954  get sorts() {
2955    return this._sorts;
2956  }
2957  set treeStatus(status) {
2958    if (status !== "collapsed" && status !== "expanded" && status !== "loading" && status !== "disabled") {
2959      this._treeStatus = "collapsed";
2960    } else {
2961      this._treeStatus = status;
2962    }
2963    this.cellContext.treeStatus = this._treeStatus;
2964    this.checkValueUpdates();
2965    this.cd.markForCheck();
2966  }
2967  get treeStatus() {
2968    return this._treeStatus;
2969  }
2970  get columnCssClasses() {
2971    let cls = "datatable-body-cell";
2972    if (this.column.cellClass) {
2973      if (typeof this.column.cellClass === "string") {
2974        cls += " " + this.column.cellClass;
2975      } else if (typeof this.column.cellClass === "function") {
2976        const res = this.column.cellClass({
2977          row: this.row,
2978          group: this.group,
2979          column: this.column,
2980          value: this.value,
2981          rowHeight: this.rowHeight
2982        });
2983        if (typeof res === "string") {
2984          cls += " " + res;
2985        } else if (typeof res === "object") {
2986          const keys = Object.keys(res);
2987          for (const k of keys) {
2988            if (res[k] === true) {
2989              cls += ` ${k}`;
2990            }
2991          }
2992        }
2993      }
2994    }
2995    if (!this.sortDir) {
2996      cls += " sort-active";
2997    }
2998    if (this.isFocused) {
2999      cls += " active";
3000    }
3001    if (this.sortDir === SortDirection.asc) {
3002      cls += " sort-asc";
3003    }
3004    if (this.sortDir === SortDirection.desc) {
3005      cls += " sort-desc";
3006    }
3007    return cls;
3008  }
3009  get width() {
3010    return this.column.width;
3011  }
3012  get minWidth() {
3013    return this.column.minWidth;
3014  }
3015  get maxWidth() {
3016    return this.column.maxWidth;
3017  }
3018  get height() {
3019    const height = this.rowHeight;
3020    if (isNaN(height)) {
3021      return height;
3022    }
3023    return height + "px";
3024  }
3025  ngDoCheck() {
3026    this.checkValueUpdates();
3027  }
3028  ngOnDestroy() {
3029    if (this.cellTemplate) {
3030      this.cellTemplate.clear();
3031    }
3032  }
3033  checkValueUpdates() {
3034    let value = "";
3035    if (!this.row || !this.column) {
3036      value = "";
3037    } else {
3038      const val = this.column.$$valueGetter(this.row, this.column.prop);
3039      const userPipe = this.column.pipe;
3040      if (userPipe) {
3041        value = userPipe.transform(val);
3042      } else if (value !== void 0) {
3043        value = val;
3044      }
3045    }
3046    if (this.value !== value) {
3047      this.value = value;
3048      this.cellContext.value = value;
3049      this.sanitizedValue = value !== null && value !== void 0 ? this.stripHtml(value) : value;
3050      this.cd.markForCheck();
3051    }
3052  }
3053  onFocus() {
3054    this.isFocused = true;
3055  }
3056  onBlur() {
3057    this.isFocused = false;
3058  }
3059  onClick(event) {
3060    this.activate.emit({
3061      type: "click",
3062      event,
3063      row: this.row,
3064      group: this.group,
3065      rowHeight: this.rowHeight,
3066      column: this.column,
3067      value: this.value,
3068      cellElement: this._element
3069    });
3070  }
3071  onDblClick(event) {
3072    this.activate.emit({
3073      type: "dblclick",
3074      event,
3075      row: this.row,
3076      group: this.group,
3077      rowHeight: this.rowHeight,
3078      column: this.column,
3079      value: this.value,
3080      cellElement: this._element
3081    });
3082  }
3083  onKeyDown(event) {
3084    const keyCode = event.keyCode;
3085    const isTargetCell = event.target === this._element;
3086    const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right;
3087    if (isAction && isTargetCell) {
3088      event.preventDefault();
3089      event.stopPropagation();
3090      this.activate.emit({
3091        type: "keydown",
3092        event,
3093        row: this.row,
3094        group: this.group,
3095        rowHeight: this.rowHeight,
3096        column: this.column,
3097        value: this.value,
3098        cellElement: this._element
3099      });
3100    }
3101  }
3102  onCheckboxChange(event) {
3103    this.activate.emit({
3104      type: "checkbox",
3105      event,
3106      row: this.row,
3107      group: this.group,
3108      rowHeight: this.rowHeight,
3109      column: this.column,
3110      value: this.value,
3111      cellElement: this._element,
3112      treeStatus: "collapsed"
3113    });
3114  }
3115  calcSortDir(sorts) {
3116    if (!sorts) {
3117      return;
3118    }
3119    const sort = sorts.find((s) => {
3120      return s.prop === this.column.prop;
3121    });
3122    if (sort) {
3123      return sort.dir;
3124    }
3125  }
3126  stripHtml(html) {
3127    if (!html.replace) {
3128      return html;
3129    }
3130    return html.replace(/<\/?[^>]+(>|$)/g, "");
3131  }
3132  onTreeAction() {
3133    this.treeAction.emit(this.row);
3134  }
3135  calcLeftMargin(column, row) {
3136    const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;
3137    return column.isTreeColumn ? row.level * levelIndent : 0;
3138  }
3139};
3140DataTableBodyCellComponent.\u0275fac = function DataTableBodyCellComponent_Factory(__ngFactoryType__) {
3141  return new (__ngFactoryType__ || DataTableBodyCellComponent)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(ChangeDetectorRef));
3142};
3143DataTableBodyCellComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
3144  type: DataTableBodyCellComponent,
3145  selectors: [["datatable-body-cell"]],
3146  viewQuery: function DataTableBodyCellComponent_Query(rf, ctx) {
3147    if (rf & 1) {
3148      \u0275\u0275viewQuery(_c1, 7, ViewContainerRef);
3149    }
3150    if (rf & 2) {
3151      let _t;
3152      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.cellTemplate = _t.first);
3153    }
3154  },
3155  hostVars: 10,
3156  hostBindings: function DataTableBodyCellComponent_HostBindings(rf, ctx) {
3157    if (rf & 1) {
3158      \u0275\u0275listener("focus", function DataTableBodyCellComponent_focus_HostBindingHandler() {
3159        return ctx.onFocus();
3160      })("blur", function DataTableBodyCellComponent_blur_HostBindingHandler() {
3161        return ctx.onBlur();
3162      })("click", function DataTableBodyCellComponent_click_HostBindingHandler($event) {
3163        return ctx.onClick($event);
3164      })("dblclick", function DataTableBodyCellComponent_dblclick_HostBindingHandler($event) {
3165        return ctx.onDblClick($event);
3166      })("keydown", function DataTableBodyCellComponent_keydown_HostBindingHandler($event) {
3167        return ctx.onKeyDown($event);
3168      });
3169    }
3170    if (rf & 2) {
3171      \u0275\u0275classMap(ctx.columnCssClasses);
3172      \u0275\u0275styleProp("width", ctx.width, "px")("min-width", ctx.minWidth, "px")("max-width", ctx.maxWidth, "px")("height", ctx.height);
3173    }
3174  },
3175  inputs: {
3176    displayCheck: "displayCheck",
3177    group: "group",
3178    rowHeight: "rowHeight",
3179    isSelected: "isSelected",
3180    expanded: "expanded",
3181    rowIndex: "rowIndex",
3182    column: "column",
3183    row: "row",
3184    sorts: "sorts",
3185    treeStatus: "treeStatus"
3186  },
3187  outputs: {
3188    activate: "activate",
3189    treeAction: "treeAction"
3190  },
3191  decls: 5,
3192  vars: 6,
3193  consts: [["cellTemplate", ""], [1, "datatable-body-cell-label"], ["class", "datatable-checkbox", 4, "ngIf"], [4, "ngIf"], [3, "title", "innerHTML", 4, "ngIf"], [1, "datatable-checkbox"], ["type", "checkbox", 3, "click", "checked"], ["class", "datatable-tree-button", 3, "disabled", "click", 4, "ngIf"], [1, "datatable-tree-button", 3, "click", "disabled"], ["class", "icon datatable-icon-collapse", 4, "ngIf"], ["class", "icon datatable-icon-up", 4, "ngIf"], ["class", "icon datatable-icon-down", 4, "ngIf"], [1, "icon", "datatable-icon-collapse"], [1, "icon", "datatable-icon-up"], [1, "icon", "datatable-icon-down"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "title", "innerHTML"]],
3194  template: function DataTableBodyCellComponent_Template(rf, ctx) {
3195    if (rf & 1) {
3196      \u0275\u0275elementStart(0, "div", 1);
3197      \u0275\u0275template(1, DataTableBodyCellComponent_label_1_Template, 2, 1, "label", 2)(2, DataTableBodyCellComponent_ng_container_2_Template, 3, 2, "ng-container", 3)(3, DataTableBodyCellComponent_span_3_Template, 1, 2, "span", 4)(4, DataTableBodyCellComponent_4_Template, 2, 2, null, 3);
3198      \u0275\u0275elementEnd();
3199    }
3200    if (rf & 2) {
3201      \u0275\u0275styleProp("margin-left", ctx.calcLeftMargin(ctx.column, ctx.row), "px");
3202      \u0275\u0275advance();
3203      \u0275\u0275property("ngIf", ctx.column.checkboxable && (!ctx.displayCheck || ctx.displayCheck(ctx.row, ctx.column, ctx.value)));
3204      \u0275\u0275advance();
3205      \u0275\u0275property("ngIf", ctx.column.isTreeColumn);
3206      \u0275\u0275advance();
3207      \u0275\u0275property("ngIf", !ctx.column.cellTemplate);
3208      \u0275\u0275advance();
3209      \u0275\u0275property("ngIf", ctx.column.cellTemplate);
3210    }
3211  },
3212  dependencies: [NgIf, NgTemplateOutlet],
3213  encapsulation: 2,
3214  changeDetection: 0
3215});
3216(() => {
3217  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableBodyCellComponent, [{
3218    type: Component,
3219    args: [{
3220      selector: "datatable-body-cell",
3221      changeDetection: ChangeDetectionStrategy.OnPush,
3222      template: `
3223    <div class="datatable-body-cell-label" [style.margin-left.px]="calcLeftMargin(column, row)">
3224      <label
3225        *ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))"
3226        class="datatable-checkbox"
3227      >
3228        <input type="checkbox" [checked]="isSelected" (click)="onCheckboxChange($event)" />
3229      </label>
3230      <ng-container *ngIf="column.isTreeColumn">
3231        <button
3232          *ngIf="!column.treeToggleTemplate"
3233          class="datatable-tree-button"
3234          [disabled]="treeStatus === 'disabled'"
3235          (click)="onTreeAction()"
3236        >
3237          <span>
3238            <i *ngIf="treeStatus === 'loading'" class="icon datatable-icon-collapse"></i>
3239            <i *ngIf="treeStatus === 'collapsed'" class="icon datatable-icon-up"></i>
3240            <i *ngIf="treeStatus === 'expanded' || treeStatus === 'disabled'" class="icon datatable-icon-down"></i>
3241          </span>
3242        </button>
3243        <ng-template
3244          *ngIf="column.treeToggleTemplate"
3245          [ngTemplateOutlet]="column.treeToggleTemplate"
3246          [ngTemplateOutletContext]="{ cellContext: cellContext }"
3247        >
3248        </ng-template>
3249      </ng-container>
3250
3251      <span *ngIf="!column.cellTemplate" [title]="sanitizedValue" [innerHTML]="value"> </span>
3252      <ng-template
3253        #cellTemplate
3254        *ngIf="column.cellTemplate"
3255        [ngTemplateOutlet]="column.cellTemplate"
3256        [ngTemplateOutletContext]="cellContext"
3257      >
3258      </ng-template>
3259    </div>
3260  `
3261    }]
3262  }], function() {
3263    return [{
3264      type: ElementRef
3265    }, {
3266      type: ChangeDetectorRef
3267    }];
3268  }, {
3269    displayCheck: [{
3270      type: Input
3271    }],
3272    group: [{
3273      type: Input
3274    }],
3275    rowHeight: [{
3276      type: Input
3277    }],
3278    isSelected: [{
3279      type: Input
3280    }],
3281    expanded: [{
3282      type: Input
3283    }],
3284    rowIndex: [{
3285      type: Input
3286    }],
3287    column: [{
3288      type: Input
3289    }],
3290    row: [{
3291      type: Input
3292    }],
3293    sorts: [{
3294      type: Input
3295    }],
3296    treeStatus: [{
3297      type: Input
3298    }],
3299    activate: [{
3300      type: Output
3301    }],
3302    treeAction: [{
3303      type: Output
3304    }],
3305    cellTemplate: [{
3306      type: ViewChild,
3307      args: ["cellTemplate", {
3308        read: ViewContainerRef,
3309        static: true
3310      }]
3311    }],
3312    columnCssClasses: [{
3313      type: HostBinding,
3314      args: ["class"]
3315    }],
3316    width: [{
3317      type: HostBinding,
3318      args: ["style.width.px"]
3319    }],
3320    minWidth: [{
3321      type: HostBinding,
3322      args: ["style.minWidth.px"]
3323    }],
3324    maxWidth: [{
3325      type: HostBinding,
3326      args: ["style.maxWidth.px"]
3327    }],
3328    height: [{
3329      type: HostBinding,
3330      args: ["style.height"]
3331    }],
3332    onFocus: [{
3333      type: HostListener,
3334      args: ["focus"]
3335    }],
3336    onBlur: [{
3337      type: HostListener,
3338      args: ["blur"]
3339    }],
3340    onClick: [{
3341      type: HostListener,
3342      args: ["click", ["$event"]]
3343    }],
3344    onDblClick: [{
3345      type: HostListener,
3346      args: ["dblclick", ["$event"]]
3347    }],
3348    onKeyDown: [{
3349      type: HostListener,
3350      args: ["keydown", ["$event"]]
3351    }]
3352  });
3353})();
3354var DataTableBodyRowComponent = class {
3355  constructor(differs, scrollbarHelper, cd, element) {
3356    this.differs = differs;
3357    this.scrollbarHelper = scrollbarHelper;
3358    this.cd = cd;
3359    this.treeStatus = "collapsed";
3360    this.activate = new EventEmitter();
3361    this.treeAction = new EventEmitter();
3362    this._groupStyles = {
3363      left: {},
3364      center: {},
3365      right: {}
3366    };
3367    this._element = element.nativeElement;
3368    this._rowDiffer = differs.find({}).create();
3369  }
3370  set columns(val) {
3371    this._columns = val;
3372    this.recalculateColumns(val);
3373    this.buildStylesByGroup();
3374  }
3375  get columns() {
3376    return this._columns;
3377  }
3378  set innerWidth(val) {
3379    if (this._columns) {
3380      const colByPin = columnsByPin(this._columns);
3381      this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);
3382    }
3383    this._innerWidth = val;
3384    this.recalculateColumns();
3385    this.buildStylesByGroup();
3386  }
3387  get innerWidth() {
3388    return this._innerWidth;
3389  }
3390  set offsetX(val) {
3391    this._offsetX = val;
3392    this.buildStylesByGroup();
3393  }
3394  get offsetX() {
3395    return this._offsetX;
3396  }
3397  get cssClass() {
3398    let cls = "datatable-body-row";
3399    if (this.isSelected) {
3400      cls += " active";
3401    }
3402    if (this.rowIndex % 2 !== 0) {
3403      cls += " datatable-row-odd";
3404    }
3405    if (this.rowIndex % 2 === 0) {
3406      cls += " datatable-row-even";
3407    }
3408    if (this.rowClass) {
3409      const res = this.rowClass(this.row);
3410      if (typeof res === "string") {
3411        cls += ` ${res}`;
3412      } else if (typeof res === "object") {
3413        const keys = Object.keys(res);
3414        for (const k of keys) {
3415          if (res[k] === true) {
3416            cls += ` ${k}`;
3417          }
3418        }
3419      }
3420    }
3421    return cls;
3422  }
3423  get columnsTotalWidths() {
3424    return this._columnGroupWidths.total;
3425  }
3426  ngDoCheck() {
3427    if (this._rowDiffer.diff(this.row)) {
3428      this.cd.markForCheck();
3429    }
3430  }
3431  trackByGroups(index, colGroup) {
3432    return colGroup.type;
3433  }
3434  columnTrackingFn(index, column) {
3435    return column.$$id;
3436  }
3437  buildStylesByGroup() {
3438    this._groupStyles.left = this.calcStylesByGroup("left");
3439    this._groupStyles.center = this.calcStylesByGroup("center");
3440    this._groupStyles.right = this.calcStylesByGroup("right");
3441    this.cd.markForCheck();
3442  }
3443  calcStylesByGroup(group) {
3444    const widths = this._columnGroupWidths;
3445    const offsetX = this.offsetX;
3446    const styles = {
3447      width: `${widths[group]}px`
3448    };
3449    if (group === "left") {
3450      translateXY(styles, offsetX, 0);
3451    } else if (group === "right") {
3452      const bodyWidth = parseInt(this.innerWidth + "", 0);
3453      const totalDiff = widths.total - bodyWidth;
3454      const offsetDiff = totalDiff - offsetX;
3455      const offset = (offsetDiff + this.scrollbarHelper.width) * -1;
3456      translateXY(styles, offset, 0);
3457    }
3458    return styles;
3459  }
3460  onActivate(event, index) {
3461    event.cellIndex = index;
3462    event.rowElement = this._element;
3463    this.activate.emit(event);
3464  }
3465  onKeyDown(event) {
3466    const keyCode = event.keyCode;
3467    const isTargetRow = event.target === this._element;
3468    const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right;
3469    if (isAction && isTargetRow) {
3470      event.preventDefault();
3471      event.stopPropagation();
3472      this.activate.emit({
3473        type: "keydown",
3474        event,
3475        row: this.row,
3476        rowElement: this._element
3477      });
3478    }
3479  }
3480  onMouseenter(event) {
3481    this.activate.emit({
3482      type: "mouseenter",
3483      event,
3484      row: this.row,
3485      rowElement: this._element
3486    });
3487  }
3488  recalculateColumns(val = this.columns) {
3489    this._columns = val;
3490    const colsByPin = columnsByPin(this._columns);
3491    this._columnsByPin = columnsByPinArr(this._columns);
3492    this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);
3493  }
3494  onTreeAction() {
3495    this.treeAction.emit();
3496  }
3497};
3498DataTableBodyRowComponent.\u0275fac = function DataTableBodyRowComponent_Factory(__ngFactoryType__) {
3499  return new (__ngFactoryType__ || DataTableBodyRowComponent)(\u0275\u0275directiveInject(KeyValueDiffers), \u0275\u0275directiveInject(ScrollbarHelper, 4), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(ElementRef));
3500};
3501DataTableBodyRowComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
3502  type: DataTableBodyRowComponent,
3503  selectors: [["datatable-body-row"]],
3504  hostVars: 6,
3505  hostBindings: function DataTableBodyRowComponent_HostBindings(rf, ctx) {
3506    if (rf & 1) {
3507      \u0275\u0275listener("keydown", function DataTableBodyRowComponent_keydown_HostBindingHandler($event) {
3508        return ctx.onKeyDown($event);
3509      })("mouseenter", function DataTableBodyRowComponent_mouseenter_HostBindingHandler($event) {
3510        return ctx.onMouseenter($event);
3511      });
3512    }
3513    if (rf & 2) {
3514      \u0275\u0275classMap(ctx.cssClass);
3515      \u0275\u0275styleProp("height", ctx.rowHeight, "px")("width", ctx.columnsTotalWidths, "px");
3516    }
3517  },
3518  inputs: {
3519    columns: "columns",
3520    innerWidth: "innerWidth",
3521    expanded: "expanded",
3522    rowClass: "rowClass",
3523    row: "row",
3524    group: "group",
3525    isSelected: "isSelected",
3526    rowIndex: "rowIndex",
3527    displayCheck: "displayCheck",
3528    treeStatus: "treeStatus",
3529    offsetX: "offsetX",
3530    rowHeight: "rowHeight"
3531  },
3532  outputs: {
3533    activate: "activate",
3534    treeAction: "treeAction"
3535  },
3536  decls: 1,
3537  vars: 2,
3538  consts: [[3, "class", "ngStyle", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "ngStyle"], ["role", "cell", "tabindex", "-1", 3, "row", "group", "expanded", "isSelected", "rowIndex", "column", "rowHeight", "displayCheck", "treeStatus", "activate", "treeAction", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "cell", "tabindex", "-1", 3, "activate", "treeAction", "row", "group", "expanded", "isSelected", "rowIndex", "column", "rowHeight", "displayCheck", "treeStatus"]],
3539  template: function DataTableBodyRowComponent_Template(rf, ctx) {
3540    if (rf & 1) {
3541      \u0275\u0275template(0, DataTableBodyRowComponent_div_0_Template, 2, 6, "div", 0);
3542    }
3543    if (rf & 2) {
3544      \u0275\u0275property("ngForOf", ctx._columnsByPin)("ngForTrackBy", ctx.trackByGroups);
3545    }
3546  },
3547  dependencies: [DataTableBodyCellComponent, NgForOf, NgStyle],
3548  encapsulation: 2,
3549  changeDetection: 0
3550});
3551(() => {
3552  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableBodyRowComponent, [{
3553    type: Component,
3554    args: [{
3555      selector: "datatable-body-row",
3556      changeDetection: ChangeDetectionStrategy.OnPush,
3557      template: `
3558    <div
3559      *ngFor="let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups"
3560      class="datatable-row-{{ colGroup.type }} datatable-row-group"
3561      [ngStyle]="_groupStyles[colGroup.type]"
3562    >
3563      <datatable-body-cell
3564        role="cell"
3565        *ngFor="let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn"
3566        tabindex="-1"
3567        [row]="row"
3568        [group]="group"
3569        [expanded]="expanded"
3570        [isSelected]="isSelected"
3571        [rowIndex]="rowIndex"
3572        [column]="column"
3573        [rowHeight]="rowHeight"
3574        [displayCheck]="displayCheck"
3575        [treeStatus]="treeStatus"
3576        (activate)="onActivate($event, ii)"
3577        (treeAction)="onTreeAction()"
3578      >
3579      </datatable-body-cell>
3580    </div>
3581  `
3582    }]
3583  }], function() {
3584    return [{
3585      type: KeyValueDiffers
3586    }, {
3587      type: ScrollbarHelper,
3588      decorators: [{
3589        type: SkipSelf
3590      }]
3591    }, {
3592      type: ChangeDetectorRef
3593    }, {
3594      type: ElementRef
3595    }];
3596  }, {
3597    columns: [{
3598      type: Input
3599    }],
3600    innerWidth: [{
3601      type: Input
3602    }],
3603    expanded: [{
3604      type: Input
3605    }],
3606    rowClass: [{
3607      type: Input
3608    }],
3609    row: [{
3610      type: Input
3611    }],
3612    group: [{
3613      type: Input
3614    }],
3615    isSelected: [{
3616      type: Input
3617    }],
3618    rowIndex: [{
3619      type: Input
3620    }],
3621    displayCheck: [{
3622      type: Input
3623    }],
3624    treeStatus: [{
3625      type: Input
3626    }],
3627    offsetX: [{
3628      type: Input
3629    }],
3630    cssClass: [{
3631      type: HostBinding,
3632      args: ["class"]
3633    }],
3634    rowHeight: [{
3635      type: HostBinding,
3636      args: ["style.height.px"]
3637    }, {
3638      type: Input
3639    }],
3640    columnsTotalWidths: [{
3641      type: HostBinding,
3642      args: ["style.width.px"]
3643    }],
3644    activate: [{
3645      type: Output
3646    }],
3647    treeAction: [{
3648      type: Output
3649    }],
3650    onKeyDown: [{
3651      type: HostListener,
3652      args: ["keydown", ["$event"]]
3653    }],
3654    onMouseenter: [{
3655      type: HostListener,
3656      args: ["mouseenter", ["$event"]]
3657    }]
3658  });
3659})();
3660function defaultSumFunc(cells) {
3661  const cellsWithValues = cells.filter((cell) => !!cell);
3662  if (!cellsWithValues.length) {
3663    return null;
3664  }
3665  if (cellsWithValues.some((cell) => typeof cell !== "number")) {
3666    return null;
3667  }
3668  return cellsWithValues.reduce((res, cell) => res + cell);
3669}
3670function noopSumFunc(cells) {
3671  return null;
3672}
3673var DataTableSummaryRowComponent = class {
3674  constructor() {
3675    this.summaryRow = {};
3676  }
3677  ngOnChanges() {
3678    if (!this.columns || !this.rows) {
3679      return;
3680    }
3681    this.updateInternalColumns();
3682    this.updateValues();
3683  }
3684  updateInternalColumns() {
3685    this._internalColumns = this.columns.map((col) => __spreadProps(__spreadValues({}, col), {
3686      cellTemplate: col.summaryTemplate
3687    }));
3688  }
3689  updateValues() {
3690    this.summaryRow = {};
3691    this.columns.filter((col) => !col.summaryTemplate).forEach((col) => {
3692      const cellsFromSingleColumn = this.rows.map((row) => row[col.prop]);
3693      const sumFunc = this.getSummaryFunction(col);
3694      this.summaryRow[col.prop] = col.pipe ? col.pipe.transform(sumFunc(cellsFromSingleColumn)) : sumFunc(cellsFromSingleColumn);
3695    });
3696  }
3697  getSummaryFunction(column) {
3698    if (column.summaryFunc === void 0) {
3699      return defaultSumFunc;
3700    } else if (column.summaryFunc === null) {
3701      return noopSumFunc;
3702    } else {
3703      return column.summaryFunc;
3704    }
3705  }
3706};
3707DataTableSummaryRowComponent.\u0275fac = function DataTableSummaryRowComponent_Factory(__ngFactoryType__) {
3708  return new (__ngFactoryType__ || DataTableSummaryRowComponent)();
3709};
3710DataTableSummaryRowComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
3711  type: DataTableSummaryRowComponent,
3712  selectors: [["datatable-summary-row"]],
3713  hostAttrs: [1, "datatable-summary-row"],
3714  inputs: {
3715    rows: "rows",
3716    columns: "columns",
3717    rowHeight: "rowHeight",
3718    offsetX: "offsetX",
3719    innerWidth: "innerWidth"
3720  },
3721  features: [\u0275\u0275NgOnChangesFeature],
3722  decls: 1,
3723  vars: 1,
3724  consts: [["tabindex", "-1", 3, "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex", 4, "ngIf"], ["tabindex", "-1", 3, "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex"]],
3725  template: function DataTableSummaryRowComponent_Template(rf, ctx) {
3726    if (rf & 1) {
3727      \u0275\u0275template(0, DataTableSummaryRowComponent_datatable_body_row_0_Template, 1, 6, "datatable-body-row", 0);
3728    }
3729    if (rf & 2) {
3730      \u0275\u0275property("ngIf", ctx.summaryRow && ctx._internalColumns);
3731    }
3732  },
3733  dependencies: [DataTableBodyRowComponent, NgIf],
3734  encapsulation: 2
3735});
3736(() => {
3737  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableSummaryRowComponent, [{
3738    type: Component,
3739    args: [{
3740      selector: "datatable-summary-row",
3741      template: `
3742    <datatable-body-row
3743      *ngIf="summaryRow && _internalColumns"
3744      tabindex="-1"
3745      [innerWidth]="innerWidth"
3746      [offsetX]="offsetX"
3747      [columns]="_internalColumns"
3748      [rowHeight]="rowHeight"
3749      [row]="summaryRow"
3750      [rowIndex]="-1"
3751    >
3752    </datatable-body-row>
3753  `,
3754      host: {
3755        class: "datatable-summary-row"
3756      }
3757    }]
3758  }], null, {
3759    rows: [{
3760      type: Input
3761    }],
3762    columns: [{
3763      type: Input
3764    }],
3765    rowHeight: [{
3766      type: Input
3767    }],
3768    offsetX: [{
3769      type: Input
3770    }],
3771    innerWidth: [{
3772      type: Input
3773    }]
3774  });
3775})();
3776var DataTableRowWrapperComponent = class {
3777  constructor(cd, differs) {
3778    this.cd = cd;
3779    this.differs = differs;
3780    this.rowContextmenu = new EventEmitter(false);
3781    this._expanded = false;
3782    this.groupContext = {
3783      group: this.row,
3784      expanded: this.expanded,
3785      rowIndex: this.rowIndex
3786    };
3787    this.rowContext = {
3788      row: this.row,
3789      expanded: this.expanded,
3790      rowIndex: this.rowIndex
3791    };
3792    this.rowDiffer = differs.find({}).create();
3793  }
3794  set rowIndex(val) {
3795    this._rowIndex = val;
3796    this.rowContext.rowIndex = val;
3797    this.groupContext.rowIndex = val;
3798    this.cd.markForCheck();
3799  }
3800  get rowIndex() {
3801    return this._rowIndex;
3802  }
3803  set expanded(val) {
3804    this._expanded = val;
3805    this.groupContext.expanded = val;
3806    this.rowContext.expanded = val;
3807    this.cd.markForCheck();
3808  }
3809  get expanded() {
3810    return this._expanded;
3811  }
3812  ngDoCheck() {
3813    if (this.rowDiffer.diff(this.row)) {
3814      this.rowContext.row = this.row;
3815      this.groupContext.group = this.row;
3816      this.cd.markForCheck();
3817    }
3818  }
3819  onContextmenu($event) {
3820    this.rowContextmenu.emit({
3821      event: $event,
3822      row: this.row
3823    });
3824  }
3825  getGroupHeaderStyle() {
3826    const styles = {};
3827    styles["transform"] = "translate3d(" + this.offsetX + "px, 0px, 0px)";
3828    styles["backface-visibility"] = "hidden";
3829    styles["width"] = this.innerWidth;
3830    return styles;
3831  }
3832};
3833DataTableRowWrapperComponent.\u0275fac = function DataTableRowWrapperComponent_Factory(__ngFactoryType__) {
3834  return new (__ngFactoryType__ || DataTableRowWrapperComponent)(\u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(KeyValueDiffers));
3835};
3836DataTableRowWrapperComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
3837  type: DataTableRowWrapperComponent,
3838  selectors: [["datatable-row-wrapper"]],
3839  hostAttrs: [1, "datatable-row-wrapper"],
3840  hostBindings: function DataTableRowWrapperComponent_HostBindings(rf, ctx) {
3841    if (rf & 1) {
3842      \u0275\u0275listener("contextmenu", function DataTableRowWrapperComponent_contextmenu_HostBindingHandler($event) {
3843        return ctx.onContextmenu($event);
3844      });
3845    }
3846  },
3847  inputs: {
3848    innerWidth: "innerWidth",
3849    rowDetail: "rowDetail",
3850    groupHeader: "groupHeader",
3851    offsetX: "offsetX",
3852    detailRowHeight: "detailRowHeight",
3853    row: "row",
3854    groupedRows: "groupedRows",
3855    rowIndex: "rowIndex",
3856    expanded: "expanded"
3857  },
3858  outputs: {
3859    rowContextmenu: "rowContextmenu"
3860  },
3861  ngContentSelectors: _c0,
3862  decls: 3,
3863  vars: 3,
3864  consts: [["class", "datatable-group-header", 3, "ngStyle", 4, "ngIf"], [4, "ngIf"], ["class", "datatable-row-detail", 3, "height", 4, "ngIf"], [1, "datatable-group-header", 3, "ngStyle"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "datatable-row-detail"]],
3865  template: function DataTableRowWrapperComponent_Template(rf, ctx) {
3866    if (rf & 1) {
3867      \u0275\u0275projectionDef();
3868      \u0275\u0275template(0, DataTableRowWrapperComponent_div_0_Template, 2, 2, "div", 0)(1, DataTableRowWrapperComponent_ng_content_1_Template, 1, 0, "ng-content", 1)(2, DataTableRowWrapperComponent_div_2_Template, 2, 3, "div", 2);
3869    }
3870    if (rf & 2) {
3871      \u0275\u0275property("ngIf", ctx.groupHeader && ctx.groupHeader.template);
3872      \u0275\u0275advance();
3873      \u0275\u0275property("ngIf", ctx.groupHeader && ctx.groupHeader.template && ctx.expanded || !ctx.groupHeader || !ctx.groupHeader.template);
3874      \u0275\u0275advance();
3875      \u0275\u0275property("ngIf", ctx.rowDetail && ctx.rowDetail.template && ctx.expanded);
3876    }
3877  },
3878  dependencies: [NgIf, NgStyle, NgTemplateOutlet],
3879  encapsulation: 2,
3880  changeDetection: 0
3881});
3882(() => {
3883  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableRowWrapperComponent, [{
3884    type: Component,
3885    args: [{
3886      selector: "datatable-row-wrapper",
3887      changeDetection: ChangeDetectionStrategy.OnPush,
3888      template: `
3889    <div *ngIf="groupHeader && groupHeader.template" class="datatable-group-header" [ngStyle]="getGroupHeaderStyle()">
3890      <ng-template
3891        *ngIf="groupHeader && groupHeader.template"
3892        [ngTemplateOutlet]="groupHeader.template"
3893        [ngTemplateOutletContext]="groupContext"
3894      >
3895      </ng-template>
3896    </div>
3897    <ng-content *ngIf="(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template">
3898    </ng-content>
3899    <div
3900      *ngIf="rowDetail && rowDetail.template && expanded"
3901      [style.height.px]="detailRowHeight"
3902      class="datatable-row-detail"
3903    >
3904      <ng-template
3905        *ngIf="rowDetail && rowDetail.template"
3906        [ngTemplateOutlet]="rowDetail.template"
3907        [ngTemplateOutletContext]="rowContext"
3908      >
3909      </ng-template>
3910    </div>
3911  `,
3912      host: {
3913        class: "datatable-row-wrapper"
3914      }
3915    }]
3916  }], function() {
3917    return [{
3918      type: ChangeDetectorRef
3919    }, {
3920      type: KeyValueDiffers
3921    }];
3922  }, {
3923    innerWidth: [{
3924      type: Input
3925    }],
3926    rowDetail: [{
3927      type: Input
3928    }],
3929    groupHeader: [{
3930      type: Input
3931    }],
3932    offsetX: [{
3933      type: Input
3934    }],
3935    detailRowHeight: [{
3936      type: Input
3937    }],
3938    row: [{
3939      type: Input
3940    }],
3941    groupedRows: [{
3942      type: Input
3943    }],
3944    rowContextmenu: [{
3945      type: Output
3946    }],
3947    rowIndex: [{
3948      type: Input
3949    }],
3950    expanded: [{
3951      type: Input
3952    }],
3953    onContextmenu: [{
3954      type: HostListener,
3955      args: ["contextmenu", ["$event"]]
3956    }]
3957  });
3958})();
3959var DataTableBodyComponent = class {
3960  /**
3961   * Creates an instance of DataTableBodyComponent.
3962   */
3963  constructor(cd) {
3964    this.cd = cd;
3965    this.selected = [];
3966    this.scroll = new EventEmitter();
3967    this.page = new EventEmitter();
3968    this.activate = new EventEmitter();
3969    this.select = new EventEmitter();
3970    this.detailToggle = new EventEmitter();
3971    this.rowContextmenu = new EventEmitter(false);
3972    this.treeAction = new EventEmitter();
3973    this.rowHeightsCache = new RowHeightCache();
3974    this.temp = [];
3975    this.offsetY = 0;
3976    this.indexes = {};
3977    this.rowIndexes = /* @__PURE__ */ new WeakMap();
3978    this.rowExpansions = [];
3979    this.getDetailRowHeight = (row, index) => {
3980      if (!this.rowDetail) {
3981        return 0;
3982      }
3983      const rowHeight = this.rowDetail.rowHeight;
3984      return typeof rowHeight === "function" ? rowHeight(row, index) : rowHeight;
3985    };
3986    this.rowTrackingFn = (index, row) => {
3987      const idx = this.getRowIndex(row);
3988      if (this.trackByProp) {
3989        return row[this.trackByProp];
3990      } else {
3991        return idx;
3992      }
3993    };
3994  }
3995  set pageSize(val) {
3996    this._pageSize = val;
3997    this.recalcLayout();
3998  }
3999  get pageSize() {
4000    return this._pageSize;
4001  }
4002  set rows(val) {
4003    this._rows = val;
4004    this.recalcLayout();
4005  }
4006  get rows() {
4007    return this._rows;
4008  }
4009  set columns(val) {
4010    this._columns = val;
4011    const colsByPin = columnsByPin(val);
4012    this.columnGroupWidths = columnGroupWidths(colsByPin, val);
4013  }
4014  get columns() {
4015    return this._columns;
4016  }
4017  set offset(val) {
4018    this._offset = val;
4019    if (!this.scrollbarV || this.scrollbarV && !this.virtualization) this.recalcLayout();
4020  }
4021  get offset() {
4022    return this._offset;
4023  }
4024  set rowCount(val) {
4025    this._rowCount = val;
4026    this.recalcLayout();
4027  }
4028  get rowCount() {
4029    return this._rowCount;
4030  }
4031  get bodyWidth() {
4032    if (this.scrollbarH) {
4033      return this.innerWidth + "px";
4034    } else {
4035      return "100%";
4036    }
4037  }
4038  set bodyHeight(val) {
4039    if (this.scrollbarV) {
4040      this._bodyHeight = val + "px";
4041    } else {
4042      this._bodyHeight = "auto";
4043    }
4044    this.recalcLayout();
4045  }
4046  get bodyHeight() {
4047    return this._bodyHeight;
4048  }
4049  /**
4050   * Returns if selection is enabled.
4051   */
4052  get selectEnabled() {
4053    return !!this.selectionType;
4054  }
4055  /**
4056   * Property that would calculate the height of scroll bar
4057   * based on the row heights cache for virtual scroll and virtualization. Other scenarios
4058   * calculate scroll height automatically (as height will be undefined).
4059   */
4060  get scrollHeight() {
4061    if (this.scrollbarV && this.virtualization && this.rowCount) {
4062      return this.rowHeightsCache.query(this.rowCount - 1);
4063    }
4064    return void 0;
4065  }
4066  /**
4067   * Called after the constructor, initializing input properties
4068   */
4069  ngOnInit() {
4070    if (this.rowDetail) {
4071      this.listener = this.rowDetail.toggle.subscribe(({
4072        type,
4073        value
4074      }) => {
4075        if (type === "row") {
4076          this.toggleRowExpansion(value);
4077        }
4078        if (type === "all") {
4079          this.toggleAllRows(value);
4080        }
4081        this.updateIndexes();
4082        this.updateRows();
4083        this.cd.markForCheck();
4084      });
4085    }
4086    if (this.groupHeader) {
4087      this.listener = this.groupHeader.toggle.subscribe(({
4088        type,
4089        value
4090      }) => {
4091        if (type === "group") {
4092          this.toggleRowExpansion(value);
4093        }
4094        if (type === "all") {
4095          this.toggleAllRows(value);
4096        }
4097        this.updateIndexes();
4098        this.updateRows();
4099        this.cd.markForCheck();
4100      });
4101    }
4102  }
4103  /**
4104   * Called once, before the instance is destroyed.
4105   */
4106  ngOnDestroy() {
4107    if (this.rowDetail || this.groupHeader) {
4108      this.listener.unsubscribe();
4109    }
4110  }
4111  /**
4112   * Updates the Y offset given a new offset.
4113   */
4114  updateOffsetY(offset) {
4115    if (!this.scroller) {
4116      return;
4117    }
4118    if (this.scrollbarV && this.virtualization && offset) {
4119      const rowIndex = this.pageSize * offset;
4120      offset = this.rowHeightsCache.query(rowIndex - 1);
4121    } else if (this.scrollbarV && !this.virtualization) {
4122      offset = 0;
4123    }
4124    this.scroller.setOffset(offset || 0);
4125  }
4126  /**
4127   * Body was scrolled, this is mainly useful for
4128   * when a user is server-side pagination via virtual scroll.
4129   */
4130  onBodyScroll(event) {
4131    const scrollYPos = event.scrollYPos;
4132    const scrollXPos = event.scrollXPos;
4133    if (this.offsetY !== scrollYPos || this.offsetX !== scrollXPos) {
4134      this.scroll.emit({
4135        offsetY: scrollYPos,
4136        offsetX: scrollXPos
4137      });
4138    }
4139    this.offsetY = scrollYPos;
4140    this.offsetX = scrollXPos;
4141    this.updateIndexes();
4142    this.updatePage(event.direction);
4143    this.updateRows();
4144  }
4145  /**
4146   * Updates the page given a direction.
4147   */
4148  updatePage(direction) {
4149    let offset = this.indexes.first / this.pageSize;
4150    if (direction === "up") {
4151      offset = Math.ceil(offset);
4152    } else if (direction === "down") {
4153      offset = Math.floor(offset);
4154    }
4155    if (direction !== void 0 && !isNaN(offset)) {
4156      this.page.emit({
4157        offset
4158      });
4159    }
4160  }
4161  /**
4162   * Updates the rows in the view port
4163   */
4164  updateRows() {
4165    const {
4166      first,
4167      last
4168    } = this.indexes;
4169    let rowIndex = first;
4170    let idx = 0;
4171    const temp = [];
4172    if (this.groupedRows) {
4173      let maxRowsPerGroup = 3;
4174      if (this.groupedRows.length === 1) {
4175        maxRowsPerGroup = this.groupedRows[0].value.length;
4176      }
4177      while (rowIndex < last && rowIndex < this.groupedRows.length) {
4178        const group = this.groupedRows[rowIndex];
4179        this.rowIndexes.set(group, rowIndex);
4180        if (group.value) {
4181          group.value.forEach((g, i) => {
4182            const _idx = `${rowIndex}-${i}`;
4183            this.rowIndexes.set(g, _idx);
4184          });
4185        }
4186        temp[idx] = group;
4187        idx++;
4188        rowIndex++;
4189      }
4190    } else {
4191      while (rowIndex < last && rowIndex < this.rowCount) {
4192        const row = this.rows[rowIndex];
4193        if (row) {
4194          this.rowIndexes.set(row, rowIndex);
4195          temp[idx] = row;
4196        }
4197        idx++;
4198        rowIndex++;
4199      }
4200    }
4201    this.temp = temp;
4202  }
4203  /**
4204   * Get the row height
4205   */
4206  getRowHeight(row) {
4207    if (typeof this.rowHeight === "function") {
4208      return this.rowHeight(row);
4209    }
4210    return this.rowHeight;
4211  }
4212  /**
4213   * @param group the group with all rows
4214   */
4215  getGroupHeight(group) {
4216    let rowHeight = 0;
4217    if (group.value) {
4218      for (let index = 0; index < group.value.length; index++) {
4219        rowHeight += this.getRowAndDetailHeight(group.value[index]);
4220      }
4221    }
4222    return rowHeight;
4223  }
4224  /**
4225   * Calculate row height based on the expanded state of the row.
4226   */
4227  getRowAndDetailHeight(row) {
4228    let rowHeight = this.getRowHeight(row);
4229    const expanded = this.getRowExpanded(row);
4230    if (expanded) {
4231      rowHeight += this.getDetailRowHeight(row);
4232    }
4233    return rowHeight;
4234  }
4235  /**
4236   * Calculates the styles for the row so that the rows can be moved in 2D space
4237   * during virtual scroll inside the DOM.   In the below case the Y position is
4238   * manipulated.   As an example, if the height of row 0 is 30 px and row 1 is
4239   * 100 px then following styles are generated:
4240   *
4241   * transform: translate3d(0px, 0px, 0px);    ->  row0
4242   * transform: translate3d(0px, 30px, 0px);   ->  row1
4243   * transform: translate3d(0px, 130px, 0px);  ->  row2
4244   *
4245   * Row heights have to be calculated based on the row heights cache as we wont
4246   * be able to determine which row is of what height before hand.  In the above
4247   * case the positionY of the translate3d for row2 would be the sum of all the
4248   * heights of the rows before it (i.e. row0 and row1).
4249   *
4250   * @param rows the row that needs to be placed in the 2D space.
4251   * @returns the CSS3 style to be applied
4252   *
4253   * @memberOf DataTableBodyComponent
4254   */
4255  getRowsStyles(rows) {
4256    const styles = {};
4257    if (this.groupedRows) {
4258      styles.width = this.columnGroupWidths.total;
4259    }
4260    if (this.scrollbarV && this.virtualization) {
4261      let idx = 0;
4262      if (this.groupedRows) {
4263        const row = rows[rows.length - 1];
4264        idx = row ? this.getRowIndex(row) : 0;
4265      } else {
4266        idx = this.getRowIndex(rows);
4267      }
4268      const pos = this.rowHeightsCache.query(idx - 1);
4269      translateXY(styles, 0, pos);
4270    }
4271    return styles;
4272  }
4273  /**
4274   * Calculate bottom summary row offset for scrollbar mode.
4275   * For more information about cache and offset calculation
4276   * see description for `getRowsStyles` method
4277   *
4278   * @returns the CSS3 style to be applied
4279   *
4280   * @memberOf DataTableBodyComponent
4281   */
4282  getBottomSummaryRowStyles() {
4283    if (!this.scrollbarV || !this.rows || !this.rows.length) {
4284      return null;
4285    }
4286    const styles = {
4287      position: "absolute"
4288    };
4289    const pos = this.rowHeightsCache.query(this.rows.length - 1);
4290    translateXY(styles, 0, pos);
4291    return styles;
4292  }
4293  /**
4294   * Hides the loading indicator
4295   */
4296  hideIndicator() {
4297    setTimeout(() => this.loadingIndicator = false, 500);
4298  }
4299  /**
4300   * Updates the index of the rows in the viewport
4301   */
4302  updateIndexes() {
4303    let first = 0;
4304    let last = 0;
4305    if (this.scrollbarV) {
4306      if (this.virtualization) {
4307        const height = parseInt(this.bodyHeight, 0);
4308        first = this.rowHeightsCache.getRowIndex(this.offsetY);
4309        last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;
4310      } else {
4311        first = 0;
4312        last = this.rowCount;
4313      }
4314    } else {
4315      if (!this.externalPaging) {
4316        first = Math.max(this.offset * this.pageSize, 0);
4317      }
4318      last = Math.min(first + this.pageSize, this.rowCount);
4319    }
4320    this.indexes = {
4321      first,
4322      last
4323    };
4324  }
4325  /**
4326   * Refreshes the full Row Height cache.  Should be used
4327   * when the entire row array state has changed.
4328   */
4329  refreshRowHeightCache() {
4330    if (!this.scrollbarV || this.scrollbarV && !this.virtualization) {
4331      return;
4332    }
4333    this.rowHeightsCache.clearCache();
4334    if (this.rows && this.rows.length) {
4335      const rowExpansions = /* @__PURE__ */ new Set();
4336      for (const row of this.rows) {
4337        if (this.getRowExpanded(row)) {
4338          rowExpansions.add(row);
4339        }
4340      }
4341      this.rowHeightsCache.initCache({
4342        rows: this.rows,
4343        rowHeight: this.rowHeight,
4344        detailRowHeight: this.getDetailRowHeight,
4345        externalVirtual: this.scrollbarV && this.externalPaging,
4346        rowCount: this.rowCount,
4347        rowIndexes: this.rowIndexes,
4348        rowExpansions
4349      });
4350    }
4351  }
4352  /**
4353   * Gets the index for the view port
4354   */
4355  getAdjustedViewPortIndex() {
4356    const viewPortFirstRowIndex = this.indexes.first;
4357    if (this.scrollbarV && this.virtualization) {
4358      const offsetScroll = this.rowHeightsCache.query(viewPortFirstRowIndex - 1);
4359      return offsetScroll <= this.offsetY ? viewPortFirstRowIndex - 1 : viewPortFirstRowIndex;
4360    }
4361    return viewPortFirstRowIndex;
4362  }
4363  /**
4364   * Toggle the Expansion of the row i.e. if the row is expanded then it will
4365   * collapse and vice versa.   Note that the expanded status is stored as
4366   * a part of the row object itself as we have to preserve the expanded row
4367   * status in case of sorting and filtering of the row set.
4368   */
4369  toggleRowExpansion(row) {
4370    const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();
4371    const rowExpandedIdx = this.getRowExpandedIdx(row, this.rowExpansions);
4372    const expanded = rowExpandedIdx > -1;
4373    if (this.scrollbarV && this.virtualization) {
4374      const detailRowHeight = this.getDetailRowHeight(row) * (expanded ? -1 : 1);
4375      const idx = this.getRowIndex(row);
4376      this.rowHeightsCache.update(idx, detailRowHeight);
4377    }
4378    if (expanded) {
4379      this.rowExpansions.splice(rowExpandedIdx, 1);
4380    } else {
4381      this.rowExpansions.push(row);
4382    }
4383    this.detailToggle.emit({
4384      rows: [row],
4385      currentIndex: viewPortFirstRowIndex
4386    });
4387  }
4388  /**
4389   * Expand/Collapse all the rows no matter what their state is.
4390   */
4391  toggleAllRows(expanded) {
4392    this.rowExpansions = [];
4393    const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();
4394    if (expanded) {
4395      for (const row of this.rows) {
4396        this.rowExpansions.push(row);
4397      }
4398    }
4399    if (this.scrollbarV) {
4400      this.recalcLayout();
4401    }
4402    this.detailToggle.emit({
4403      rows: this.rows,
4404      currentIndex: viewPortFirstRowIndex
4405    });
4406  }
4407  /**
4408   * Recalculates the table
4409   */
4410  recalcLayout() {
4411    this.refreshRowHeightCache();
4412    this.updateIndexes();
4413    this.updateRows();
4414  }
4415  /**
4416   * Tracks the column
4417   */
4418  columnTrackingFn(index, column) {
4419    return column.$$id;
4420  }
4421  /**
4422   * Gets the row pinning group styles
4423   */
4424  stylesByGroup(group) {
4425    const widths = this.columnGroupWidths;
4426    const offsetX = this.offsetX;
4427    const styles = {
4428      width: `${widths[group]}px`
4429    };
4430    if (group === "left") {
4431      translateXY(styles, offsetX, 0);
4432    } else if (group === "right") {
4433      const bodyWidth = parseInt(this.innerWidth + "", 0);
4434      const totalDiff = widths.total - bodyWidth;
4435      const offsetDiff = totalDiff - offsetX;
4436      const offset = offsetDiff * -1;
4437      translateXY(styles, offset, 0);
4438    }
4439    return styles;
4440  }
4441  /**
4442   * Returns if the row was expanded and set default row expansion when row expansion is empty
4443   */
4444  getRowExpanded(row) {
4445    if (this.rowExpansions.length === 0 && this.groupExpansionDefault) {
4446      for (const group of this.groupedRows) {
4447        this.rowExpansions.push(group);
4448      }
4449    }
4450    return this.getRowExpandedIdx(row, this.rowExpansions) > -1;
4451  }
4452  getRowExpandedIdx(row, expanded) {
4453    if (!expanded || !expanded.length) return -1;
4454    const rowId = this.rowIdentity(row);
4455    return expanded.findIndex((r) => {
4456      const id2 = this.rowIdentity(r);
4457      return id2 === rowId;
4458    });
4459  }
4460  /**
4461   * Gets the row index given a row
4462   */
4463  getRowIndex(row) {
4464    return this.rowIndexes.get(row) || 0;
4465  }
4466  onTreeAction(row) {
4467    this.treeAction.emit({
4468      row
4469    });
4470  }
4471};
4472DataTableBodyComponent.\u0275fac = function DataTableBodyComponent_Factory(__ngFactoryType__) {
4473  return new (__ngFactoryType__ || DataTableBodyComponent)(\u0275\u0275directiveInject(ChangeDetectorRef));
4474};
4475DataTableBodyComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
4476  type: DataTableBodyComponent,
4477  selectors: [["datatable-body"]],
4478  viewQuery: function DataTableBodyComponent_Query(rf, ctx) {
4479    if (rf & 1) {
4480      \u0275\u0275viewQuery(ScrollerComponent, 5);
4481    }
4482    if (rf & 2) {
4483      let _t;
4484      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.scroller = _t.first);
4485    }
4486  },
4487  hostAttrs: [1, "datatable-body"],
4488  hostVars: 4,
4489  hostBindings: function DataTableBodyComponent_HostBindings(rf, ctx) {
4490    if (rf & 2) {
4491      \u0275\u0275styleProp("width", ctx.bodyWidth)("height", ctx.bodyHeight);
4492    }
4493  },
4494  inputs: {
4495    scrollbarV: "scrollbarV",
4496    scrollbarH: "scrollbarH",
4497    loadingIndicator: "loadingIndicator",
4498    externalPaging: "externalPaging",
4499    rowHeight: "rowHeight",
4500    offsetX: "offsetX",
4501    emptyMessage: "emptyMessage",
4502    selectionType: "selectionType",
4503    selected: "selected",
4504    rowIdentity: "rowIdentity",
4505    rowDetail: "rowDetail",
4506    groupHeader: "groupHeader",
4507    selectCheck: "selectCheck",
4508    displayCheck: "displayCheck",
4509    trackByProp: "trackByProp",
4510    rowClass: "rowClass",
4511    groupedRows: "groupedRows",
4512    groupExpansionDefault: "groupExpansionDefault",
4513    innerWidth: "innerWidth",
4514    groupRowsBy: "groupRowsBy",
4515    virtualization: "virtualization",
4516    summaryRow: "summaryRow",
4517    summaryPosition: "summaryPosition",
4518    summaryHeight: "summaryHeight",
4519    pageSize: "pageSize",
4520    rows: "rows",
4521    columns: "columns",
4522    offset: "offset",
4523    rowCount: "rowCount",
4524    bodyHeight: "bodyHeight"
4525  },
4526  outputs: {
4527    scroll: "scroll",
4528    page: "page",
4529    activate: "activate",
4530    select: "select",
4531    detailToggle: "detailToggle",
4532    rowContextmenu: "rowContextmenu",
4533    treeAction: "treeAction"
4534  },
4535  decls: 5,
4536  vars: 9,
4537  consts: [["selector", ""], ["groupedRowsTemplate", ""], [4, "ngIf"], [3, "select", "activate", "selected", "rows", "selectCheck", "selectEnabled", "selectionType", "rowIdentity"], [3, "scrollbarV", "scrollbarH", "scrollHeight", "scrollWidth", "scroll", 4, "ngIf"], ["class", "empty-row", 3, "innerHTML", 4, "ngIf"], [3, "scroll", "scrollbarV", "scrollbarH", "scrollHeight", "scrollWidth"], [3, "rowHeight", "offsetX", "innerWidth", "rows", "columns", 4, "ngIf"], [3, "groupedRows", "innerWidth", "ngStyle", "rowDetail", "groupHeader", "offsetX", "detailRowHeight", "row", "expanded", "rowIndex", "rowContextmenu", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "row", 3, "ngStyle", "rowHeight", "offsetX", "innerWidth", "rows", "columns", 4, "ngIf"], [3, "rowHeight", "offsetX", "innerWidth", "rows", "columns"], [3, "rowContextmenu", "groupedRows", "innerWidth", "ngStyle", "rowDetail", "groupHeader", "offsetX", "detailRowHeight", "row", "expanded", "rowIndex"], ["role", "row", "tabindex", "-1", 3, "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex", "expanded", "rowClass", "displayCheck", "treeStatus", "treeAction", "activate", 4, "ngIf", "ngIfElse"], ["role", "row", "tabindex", "-1", 3, "treeAction", "activate", "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex", "expanded", "rowClass", "displayCheck", "treeStatus"], ["role", "row", "tabindex", "-1", 3, "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "group", "rowIndex", "expanded", "rowClass", "activate", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "row", "tabindex", "-1", 3, "activate", "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "group", "rowIndex", "expanded", "rowClass"], ["role", "row", 3, "ngStyle", "rowHeight", "offsetX", "innerWidth", "rows", "columns"], [1, "empty-row", 3, "innerHTML"]],
4538  template: function DataTableBodyComponent_Template(rf, ctx) {
4539    if (rf & 1) {
4540      const _r1 = \u0275\u0275getCurrentView();
4541      \u0275\u0275template(0, DataTableBodyComponent_datatable_progress_0_Template, 1, 0, "datatable-progress", 2);
4542      \u0275\u0275elementStart(1, "datatable-selection", 3, 0);
4543      \u0275\u0275listener("select", function DataTableBodyComponent_Template_datatable_selection_select_1_listener($event) {
4544        \u0275\u0275restoreView(_r1);
4545        return \u0275\u0275resetView(ctx.select.emit($event));
4546      })("activate", function DataTableBodyComponent_Template_datatable_selection_activate_1_listener($event) {
4547        \u0275\u0275restoreView(_r1);
4548        return \u0275\u0275resetView(ctx.activate.emit($event));
4549      });
4550      \u0275\u0275template(3, DataTableBodyComponent_datatable_scroller_3_Template, 4, 8, "datatable-scroller", 4)(4, DataTableBodyComponent_div_4_Template, 1, 1, "div", 5);
4551      \u0275\u0275elementEnd();
4552    }
4553    if (rf & 2) {
4554      \u0275\u0275property("ngIf", ctx.loadingIndicator);
4555      \u0275\u0275advance();
4556      \u0275\u0275property("selected", ctx.selected)("rows", ctx.rows)("selectCheck", ctx.selectCheck)("selectEnabled", ctx.selectEnabled)("selectionType", ctx.selectionType)("rowIdentity", ctx.rowIdentity);
4557      \u0275\u0275advance(2);
4558      \u0275\u0275property("ngIf", ctx.rows == null ? null : ctx.rows.length);
4559      \u0275\u0275advance();
4560      \u0275\u0275property("ngIf", !(ctx.rows == null ? null : ctx.rows.length) && !ctx.loadingIndicator);
4561    }
4562  },
4563  dependencies: [ProgressBarComponent, DataTableSelectionComponent, ScrollerComponent, DataTableSummaryRowComponent, DataTableRowWrapperComponent, DataTableBodyRowComponent, NgIf, NgForOf, NgStyle],
4564  encapsulation: 2,
4565  changeDetection: 0
4566});
4567(() => {
4568  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableBodyComponent, [{
4569    type: Component,
4570    args: [{
4571      selector: "datatable-body",
4572      template: `
4573    <datatable-progress *ngIf="loadingIndicator"> </datatable-progress>
4574    <datatable-selection
4575      #selector
4576      [selected]="selected"
4577      [rows]="rows"
4578      [selectCheck]="selectCheck"
4579      [selectEnabled]="selectEnabled"
4580      [selectionType]="selectionType"
4581      [rowIdentity]="rowIdentity"
4582      (select)="select.emit($event)"
4583      (activate)="activate.emit($event)"
4584    >
4585      <datatable-scroller
4586        *ngIf="rows?.length"
4587        [scrollbarV]="scrollbarV"
4588        [scrollbarH]="scrollbarH"
4589        [scrollHeight]="scrollHeight"
4590        [scrollWidth]="columnGroupWidths?.total"
4591        (scroll)="onBodyScroll($event)"
4592      >
4593        <datatable-summary-row
4594          *ngIf="summaryRow && summaryPosition === 'top'"
4595          [rowHeight]="summaryHeight"
4596          [offsetX]="offsetX"
4597          [innerWidth]="innerWidth"
4598          [rows]="rows"
4599          [columns]="columns"
4600        >
4601        </datatable-summary-row>
4602        <datatable-row-wrapper
4603          [groupedRows]="groupedRows"
4604          *ngFor="let group of temp; let i = index; trackBy: rowTrackingFn"
4605          [innerWidth]="innerWidth"
4606          [ngStyle]="getRowsStyles(group)"
4607          [rowDetail]="rowDetail"
4608          [groupHeader]="groupHeader"
4609          [offsetX]="offsetX"
4610          [detailRowHeight]="getDetailRowHeight(group && group[i], i)"
4611          [row]="group"
4612          [expanded]="getRowExpanded(group)"
4613          [rowIndex]="getRowIndex(group && group[i])"
4614          (rowContextmenu)="rowContextmenu.emit($event)"
4615        >
4616          <datatable-body-row
4617            role="row"
4618            *ngIf="!groupedRows; else groupedRowsTemplate"
4619            tabindex="-1"
4620            [isSelected]="selector.getRowSelected(group)"
4621            [innerWidth]="innerWidth"
4622            [offsetX]="offsetX"
4623            [columns]="columns"
4624            [rowHeight]="getRowHeight(group)"
4625            [row]="group"
4626            [rowIndex]="getRowIndex(group)"
4627            [expanded]="getRowExpanded(group)"
4628            [rowClass]="rowClass"
4629            [displayCheck]="displayCheck"
4630            [treeStatus]="group && group.treeStatus"
4631            (treeAction)="onTreeAction(group)"
4632            (activate)="selector.onActivate($event, indexes.first + i)"
4633          >
4634          </datatable-body-row>
4635          <ng-template #groupedRowsTemplate>
4636            <datatable-body-row
4637              role="row"
4638              *ngFor="let row of group.value; let i = index; trackBy: rowTrackingFn"
4639              tabindex="-1"
4640              [isSelected]="selector.getRowSelected(row)"
4641              [innerWidth]="innerWidth"
4642              [offsetX]="offsetX"
4643              [columns]="columns"
4644              [rowHeight]="getRowHeight(row)"
4645              [row]="row"
4646              [group]="group.value"
4647              [rowIndex]="getRowIndex(row)"
4648              [expanded]="getRowExpanded(row)"
4649              [rowClass]="rowClass"
4650              (activate)="selector.onActivate($event, i)"
4651            >
4652            </datatable-body-row>
4653          </ng-template>
4654        </datatable-row-wrapper>
4655        <datatable-summary-row
4656          role="row"
4657          *ngIf="summaryRow && summaryPosition === 'bottom'"
4658          [ngStyle]="getBottomSummaryRowStyles()"
4659          [rowHeight]="summaryHeight"
4660          [offsetX]="offsetX"
4661          [innerWidth]="innerWidth"
4662          [rows]="rows"
4663          [columns]="columns"
4664        >
4665        </datatable-summary-row>
4666      </datatable-scroller>
4667      <div class="empty-row" *ngIf="!rows?.length && !loadingIndicator" [innerHTML]="emptyMessage"></div>
4668    </datatable-selection>
4669  `,
4670      changeDetection: ChangeDetectionStrategy.OnPush,
4671      host: {
4672        class: "datatable-body"
4673      }
4674    }]
4675  }], function() {
4676    return [{
4677      type: ChangeDetectorRef
4678    }];
4679  }, {
4680    scrollbarV: [{
4681      type: Input
4682    }],
4683    scrollbarH: [{
4684      type: Input
4685    }],
4686    loadingIndicator: [{
4687      type: Input
4688    }],
4689    externalPaging: [{
4690      type: Input
4691    }],
4692    rowHeight: [{
4693      type: Input
4694    }],
4695    offsetX: [{
4696      type: Input
4697    }],
4698    emptyMessage: [{
4699      type: Input
4700    }],
4701    selectionType: [{
4702      type: Input
4703    }],
4704    selected: [{
4705      type: Input
4706    }],
4707    rowIdentity: [{
4708      type: Input
4709    }],
4710    rowDetail: [{
4711      type: Input
4712    }],
4713    groupHeader: [{
4714      type: Input
4715    }],
4716    selectCheck: [{
4717      type: Input
4718    }],
4719    displayCheck: [{
4720      type: Input
4721    }],
4722    trackByProp: [{
4723      type: Input
4724    }],
4725    rowClass: [{
4726      type: Input
4727    }],
4728    groupedRows: [{
4729      type: Input
4730    }],
4731    groupExpansionDefault: [{
4732      type: Input
4733    }],
4734    innerWidth: [{
4735      type: Input
4736    }],
4737    groupRowsBy: [{
4738      type: Input
4739    }],
4740    virtualization: [{
4741      type: Input
4742    }],
4743    summaryRow: [{
4744      type: Input
4745    }],
4746    summaryPosition: [{
4747      type: Input
4748    }],
4749    summaryHeight: [{
4750      type: Input
4751    }],
4752    pageSize: [{
4753      type: Input
4754    }],
4755    rows: [{
4756      type: Input
4757    }],
4758    columns: [{
4759      type: Input
4760    }],
4761    offset: [{
4762      type: Input
4763    }],
4764    rowCount: [{
4765      type: Input
4766    }],
4767    bodyWidth: [{
4768      type: HostBinding,
4769      args: ["style.width"]
4770    }],
4771    bodyHeight: [{
4772      type: Input
4773    }, {
4774      type: HostBinding,
4775      args: ["style.height"]
4776    }],
4777    scroll: [{
4778      type: Output
4779    }],
4780    page: [{
4781      type: Output
4782    }],
4783    activate: [{
4784      type: Output
4785    }],
4786    select: [{
4787      type: Output
4788    }],
4789    detailToggle: [{
4790      type: Output
4791    }],
4792    rowContextmenu: [{
4793      type: Output
4794    }],
4795    treeAction: [{
4796      type: Output
4797    }],
4798    scroller: [{
4799      type: ViewChild,
4800      args: [ScrollerComponent]
4801    }]
4802  });
4803})();
4804function nextSortDir(sortType, current) {
4805  if (sortType === SortType.single) {
4806    if (current === SortDirection.asc) {
4807      return SortDirection.desc;
4808    } else {
4809      return SortDirection.asc;
4810    }
4811  } else {
4812    if (!current) {
4813      return SortDirection.asc;
4814    } else if (current === SortDirection.asc) {
4815      return SortDirection.desc;
4816    } else if (current === SortDirection.desc) {
4817      return void 0;
4818    }
4819    return void 0;
4820  }
4821}
4822function orderByComparator(a, b) {
4823  if (a === null || typeof a === "undefined") a = 0;
4824  if (b === null || typeof b === "undefined") b = 0;
4825  if (a instanceof Date && b instanceof Date) {
4826    if (a < b) return -1;
4827    if (a > b) return 1;
4828  } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {
4829    a = String(a);
4830    b = String(b);
4831    if (a.toLowerCase() < b.toLowerCase()) return -1;
4832    if (a.toLowerCase() > b.toLowerCase()) return 1;
4833  } else {
4834    if (parseFloat(a) < parseFloat(b)) return -1;
4835    if (parseFloat(a) > parseFloat(b)) return 1;
4836  }
4837  return 0;
4838}
4839function sortRows(rows, columns, dirs) {
4840  if (!rows) return [];
4841  if (!dirs || !dirs.length || !columns) return [...rows];
4842  const rowToIndexMap = /* @__PURE__ */ new Map();
4843  rows.forEach((row, index) => rowToIndexMap.set(row, index));
4844  const temp = [...rows];
4845  const cols = columns.reduce((obj, col) => {
4846    if (col.comparator && typeof col.comparator === "function") {
4847      obj[col.prop] = col.comparator;
4848    }
4849    return obj;
4850  }, {});
4851  const cachedDirs = dirs.map((dir) => {
4852    const prop = dir.prop;
4853    return {
4854      prop,
4855      dir: dir.dir,
4856      valueGetter: getterForProp(prop),
4857      compareFn: cols[prop] || orderByComparator
4858    };
4859  });
4860  return temp.sort(function(rowA, rowB) {
4861    for (const cachedDir of cachedDirs) {
4862      const {
4863        prop,
4864        valueGetter
4865      } = cachedDir;
4866      const propA = valueGetter(rowA, prop);
4867      const propB = valueGetter(rowB, prop);
4868      const comparison = cachedDir.dir !== SortDirection.desc ? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir) : -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir);
4869      if (comparison !== 0) return comparison;
4870    }
4871    if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB))) return 0;
4872    return rowToIndexMap.get(rowA) < rowToIndexMap.get(rowB) ? -1 : 1;
4873  });
4874}
4875var DataTableHeaderCellComponent = class {
4876  constructor(cd) {
4877    this.cd = cd;
4878    this.sort = new EventEmitter();
4879    this.select = new EventEmitter();
4880    this.columnContextmenu = new EventEmitter(false);
4881    this.sortFn = this.onSort.bind(this);
4882    this.selectFn = this.select.emit.bind(this.select);
4883    this.cellContext = {
4884      column: this.column,
4885      sortDir: this.sortDir,
4886      sortFn: this.sortFn,
4887      allRowsSelected: this.allRowsSelected,
4888      selectFn: this.selectFn
4889    };
4890  }
4891  set allRowsSelected(value) {
4892    this._allRowsSelected = value;
4893    this.cellContext.allRowsSelected = value;
4894  }
4895  get allRowsSelected() {
4896    return this._allRowsSelected;
4897  }
4898  set column(column) {
4899    this._column = column;
4900    this.cellContext.column = column;
4901    this.cd.markForCheck();
4902  }
4903  get column() {
4904    return this._column;
4905  }
4906  set sorts(val) {
4907    this._sorts = val;
4908    this.sortDir = this.calcSortDir(val);
4909    this.cellContext.sortDir = this.sortDir;
4910    this.sortClass = this.calcSortClass(this.sortDir);
4911    this.cd.markForCheck();
4912  }
4913  get sorts() {
4914    return this._sorts;
4915  }
4916  get columnCssClasses() {
4917    let cls = "datatable-header-cell";
4918    if (this.column.sortable) cls += " sortable";
4919    if (this.column.resizeable) cls += " resizeable";
4920    if (this.column.headerClass) {
4921      if (typeof this.column.headerClass === "string") {
4922        cls += " " + this.column.headerClass;
4923      } else if (typeof this.column.headerClass === "function") {
4924        const res = this.column.headerClass({
4925          column: this.column
4926        });
4927        if (typeof res === "string") {
4928          cls += res;
4929        } else if (typeof res === "object") {
4930          const keys = Object.keys(res);
4931          for (const k of keys) {
4932            if (res[k] === true) cls += ` ${k}`;
4933          }
4934        }
4935      }
4936    }
4937    const sortDir = this.sortDir;
4938    if (sortDir) {
4939      cls += ` sort-active sort-${sortDir}`;
4940    }
4941    return cls;
4942  }
4943  get name() {
4944    return this.column.headerTemplate === void 0 ? this.column.name : void 0;
4945  }
4946  get minWidth() {
4947    return this.column.minWidth;
4948  }
4949  get maxWidth() {
4950    return this.column.maxWidth;
4951  }
4952  get width() {
4953    return this.column.width;
4954  }
4955  get isCheckboxable() {
4956    return this.column.checkboxable && this.column.headerCheckboxable && this.selectionType === SelectionType.checkbox;
4957  }
4958  onContextmenu($event) {
4959    this.columnContextmenu.emit({
4960      event: $event,
4961      column: this.column
4962    });
4963  }
4964  ngOnInit() {
4965    this.sortClass = this.calcSortClass(this.sortDir);
4966  }
4967  calcSortDir(sorts) {
4968    if (sorts && this.column) {
4969      const sort = sorts.find((s) => {
4970        return s.prop === this.column.prop;
4971      });
4972      if (sort) return sort.dir;
4973    }
4974  }
4975  onSort() {
4976    if (!this.column.sortable) return;
4977    const newValue = nextSortDir(this.sortType, this.sortDir);
4978    this.sort.emit({
4979      column: this.column,
4980      prevValue: this.sortDir,
4981      newValue
4982    });
4983  }
4984  calcSortClass(sortDir) {
4985    if (!this.cellContext.column.sortable) return;
4986    if (sortDir === SortDirection.asc) {
4987      return `sort-btn sort-asc ${this.sortAscendingIcon}`;
4988    } else if (sortDir === SortDirection.desc) {
4989      return `sort-btn sort-desc ${this.sortDescendingIcon}`;
4990    } else {
4991      return `sort-btn ${this.sortUnsetIcon}`;
4992    }
4993  }
4994};
4995DataTableHeaderCellComponent.\u0275fac = function DataTableHeaderCellComponent_Factory(__ngFactoryType__) {
4996  return new (__ngFactoryType__ || DataTableHeaderCellComponent)(\u0275\u0275directiveInject(ChangeDetectorRef));
4997};
4998DataTableHeaderCellComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
4999  type: DataTableHeaderCellComponent,
5000  selectors: [["datatable-header-cell"]],
5001  hostAttrs: [1, "datatable-header-cell"],
5002  hostVars: 11,
5003  hostBindings: function DataTableHeaderCellComponent_HostBindings(rf, ctx) {
5004    if (rf & 1) {
5005      \u0275\u0275listener("contextmenu", function DataTableHeaderCellComponent_contextmenu_HostBindingHandler($event) {
5006        return ctx.onContextmenu($event);
5007      });
5008    }
5009    if (rf & 2) {
5010      \u0275\u0275attribute("title", ctx.name);
5011      \u0275\u0275classMap(ctx.columnCssClasses);
5012      \u0275\u0275styleProp("height", ctx.headerHeight, "px")("min-width", ctx.minWidth, "px")("max-width", ctx.maxWidth, "px")("width", ctx.width, "px");
5013    }
5014  },
5015  inputs: {
5016    sortType: "sortType",
5017    sortAscendingIcon: "sortAscendingIcon",
5018    sortDescendingIcon: "sortDescendingIcon",
5019    sortUnsetIcon: "sortUnsetIcon",
5020    isTarget: "isTarget",
5021    targetMarkerTemplate: "targetMarkerTemplate",
5022    targetMarkerContext: "targetMarkerContext",
5023    allRowsSelected: "allRowsSelected",
5024    selectionType: "selectionType",
5025    column: "column",
5026    headerHeight: "headerHeight",
5027    sorts: "sorts"
5028  },
5029  outputs: {
5030    sort: "sort",
5031    select: "select",
5032    columnContextmenu: "columnContextmenu"
5033  },
5034  decls: 6,
5035  vars: 6,
5036  consts: [[1, "datatable-header-cell-template-wrap"], [4, "ngIf"], ["class", "datatable-checkbox", 4, "ngIf"], ["class", "datatable-header-cell-wrapper", 4, "ngIf"], [3, "click"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "datatable-checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "datatable-header-cell-wrapper"], [1, "datatable-header-cell-label", "draggable", 3, "click", "innerHTML"]],
5037  template: function DataTableHeaderCellComponent_Template(rf, ctx) {
5038    if (rf & 1) {
5039      \u0275\u0275elementStart(0, "div", 0);
5040      \u0275\u0275template(1, DataTableHeaderCellComponent_1_Template, 1, 2, null, 1)(2, DataTableHeaderCellComponent_label_2_Template, 2, 1, "label", 2)(3, DataTableHeaderCellComponent_span_3_Template, 2, 1, "span", 3)(4, DataTableHeaderCellComponent_4_Template, 1, 2, null, 1);
5041      \u0275\u0275elementStart(5, "span", 4);
5042      \u0275\u0275listener("click", function DataTableHeaderCellComponent_Template_span_click_5_listener() {
5043        return ctx.onSort();
5044      });
5045      \u0275\u0275elementEnd()();
5046    }
5047    if (rf & 2) {
5048      \u0275\u0275advance();
5049      \u0275\u0275property("ngIf", ctx.isTarget);
5050      \u0275\u0275advance();
5051      \u0275\u0275property("ngIf", ctx.isCheckboxable);
5052      \u0275\u0275advance();
5053      \u0275\u0275property("ngIf", !ctx.column.headerTemplate);
5054      \u0275\u0275advance();
5055      \u0275\u0275property("ngIf", ctx.column.headerTemplate);
5056      \u0275\u0275advance();
5057      \u0275\u0275classMap(ctx.sortClass);
5058    }
5059  },
5060  dependencies: [NgIf, NgTemplateOutlet],
5061  encapsulation: 2,
5062  changeDetection: 0
5063});
5064(() => {
5065  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableHeaderCellComponent, [{
5066    type: Component,
5067    args: [{
5068      selector: "datatable-header-cell",
5069      template: `
5070    <div class="datatable-header-cell-template-wrap">
5071      <ng-template
5072        *ngIf="isTarget"
5073        [ngTemplateOutlet]="targetMarkerTemplate"
5074        [ngTemplateOutletContext]="targetMarkerContext"
5075      >
5076      </ng-template>
5077      <label *ngIf="isCheckboxable" class="datatable-checkbox">
5078        <input type="checkbox" [checked]="allRowsSelected" (change)="select.emit(!allRowsSelected)" />
5079      </label>
5080      <span *ngIf="!column.headerTemplate" class="datatable-header-cell-wrapper">
5081        <span class="datatable-header-cell-label draggable" (click)="onSort()" [innerHTML]="name"> </span>
5082      </span>
5083      <ng-template
5084        *ngIf="column.headerTemplate"
5085        [ngTemplateOutlet]="column.headerTemplate"
5086        [ngTemplateOutletContext]="cellContext"
5087      >
5088      </ng-template>
5089      <span (click)="onSort()" [class]="sortClass"> </span>
5090    </div>
5091  `,
5092      host: {
5093        class: "datatable-header-cell"
5094      },
5095      changeDetection: ChangeDetectionStrategy.OnPush
5096    }]
5097  }], function() {
5098    return [{
5099      type: ChangeDetectorRef
5100    }];
5101  }, {
5102    sortType: [{
5103      type: Input
5104    }],
5105    sortAscendingIcon: [{
5106      type: Input
5107    }],
5108    sortDescendingIcon: [{
5109      type: Input
5110    }],
5111    sortUnsetIcon: [{
5112      type: Input
5113    }],
5114    isTarget: [{
5115      type: Input
5116    }],
5117    targetMarkerTemplate: [{
5118      type: Input
5119    }],
5120    targetMarkerContext: [{
5121      type: Input
5122    }],
5123    allRowsSelected: [{
5124      type: Input
5125    }],
5126    selectionType: [{
5127      type: Input
5128    }],
5129    column: [{
5130      type: Input
5131    }],
5132    headerHeight: [{
5133      type: HostBinding,
5134      args: ["style.height.px"]
5135    }, {
5136      type: Input
5137    }],
5138    sorts: [{
5139      type: Input
5140    }],
5141    sort: [{
5142      type: Output
5143    }],
5144    select: [{
5145      type: Output
5146    }],
5147    columnContextmenu: [{
5148      type: Output
5149    }],
5150    columnCssClasses: [{
5151      type: HostBinding,
5152      args: ["class"]
5153    }],
5154    name: [{
5155      type: HostBinding,
5156      args: ["attr.title"]
5157    }],
5158    minWidth: [{
5159      type: HostBinding,
5160      args: ["style.minWidth.px"]
5161    }],
5162    maxWidth: [{
5163      type: HostBinding,
5164      args: ["style.maxWidth.px"]
5165    }],
5166    width: [{
5167      type: HostBinding,
5168      args: ["style.width.px"]
5169    }],
5170    onContextmenu: [{
5171      type: HostListener,
5172      args: ["contextmenu", ["$event"]]
5173    }]
5174  });
5175})();
5176var DataTableHeaderComponent = class {
5177  constructor(cd) {
5178    this.cd = cd;
5179    this.sort = new EventEmitter();
5180    this.reorder = new EventEmitter();
5181    this.resize = new EventEmitter();
5182    this.select = new EventEmitter();
5183    this.columnContextmenu = new EventEmitter(false);
5184    this._columnGroupWidths = {
5185      total: 100
5186    };
5187    this._styleByGroup = {
5188      left: {},
5189      center: {},
5190      right: {}
5191    };
5192    this.destroyed = false;
5193  }
5194  set innerWidth(val) {
5195    this._innerWidth = val;
5196    setTimeout(() => {
5197      if (this._columns) {
5198        const colByPin = columnsByPin(this._columns);
5199        this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);
5200        this.setStylesByGroup();
5201      }
5202    });
5203  }
5204  get innerWidth() {
5205    return this._innerWidth;
5206  }
5207  set headerHeight(val) {
5208    if (val !== "auto") {
5209      this._headerHeight = `${val}px`;
5210    } else {
5211      this._headerHeight = val;
5212    }
5213  }
5214  get headerHeight() {
5215    return this._headerHeight;
5216  }
5217  set columns(val) {
5218    this._columns = val;
5219    const colsByPin = columnsByPin(val);
5220    this._columnsByPin = columnsByPinArr(val);
5221    setTimeout(() => {
5222      this._columnGroupWidths = columnGroupWidths(colsByPin, val);
5223      this.setStylesByGroup();
5224    });
5225  }
5226  get columns() {
5227    return this._columns;
5228  }
5229  set offsetX(val) {
5230    this._offsetX = val;
5231    this.setStylesByGroup();
5232  }
5233  get offsetX() {
5234    return this._offsetX;
5235  }
5236  ngOnDestroy() {
5237    this.destroyed = true;
5238  }
5239  onLongPressStart({
5240    event,
5241    model
5242  }) {
5243    model.dragging = true;
5244    this.dragEventTarget = event;
5245  }
5246  onLongPressEnd({
5247    event,
5248    model
5249  }) {
5250    this.dragEventTarget = event;
5251    setTimeout(() => {
5252      const column = this._columns.find((c) => c.$$id === model.$$id);
5253      if (column) {
5254        column.dragging = false;
5255      }
5256    }, 5);
5257  }
5258  get headerWidth() {
5259    if (this.scrollbarH) {
5260      return this.innerWidth + "px";
5261    }
5262    return "100%";
5263  }
5264  trackByGroups(index, colGroup) {
5265    return colGroup.type;
5266  }
5267  columnTrackingFn(index, column) {
5268    return column.$$id;
5269  }
5270  onColumnResized(width, column) {
5271    if (width <= column.minWidth) {
5272      width = column.minWidth;
5273    } else if (width >= column.maxWidth) {
5274      width = column.maxWidth;
5275    }
5276    this.resize.emit({
5277      column,
5278      prevValue: column.width,
5279      newValue: width
5280    });
5281  }
5282  onColumnReordered({
5283    prevIndex,
5284    newIndex,
5285    model
5286  }) {
5287    const column = this.getColumn(newIndex);
5288    column.isTarget = false;
5289    column.targetMarkerContext = void 0;
5290    this.reorder.emit({
5291      column: model,
5292      prevValue: prevIndex,
5293      newValue: newIndex
5294    });
5295  }
5296  onTargetChanged({
5297    prevIndex,
5298    newIndex,
5299    initialIndex
5300  }) {
5301    if (prevIndex || prevIndex === 0) {
5302      const oldColumn = this.getColumn(prevIndex);
5303      oldColumn.isTarget = false;
5304      oldColumn.targetMarkerContext = void 0;
5305    }
5306    if (newIndex || newIndex === 0) {
5307      const newColumn = this.getColumn(newIndex);
5308      newColumn.isTarget = true;
5309      if (initialIndex !== newIndex) {
5310        newColumn.targetMarkerContext = {
5311          class: "targetMarker ".concat(initialIndex > newIndex ? "dragFromRight" : "dragFromLeft")
5312        };
5313      }
5314    }
5315  }
5316  getColumn(index) {
5317    const leftColumnCount = this._columnsByPin[0].columns.length;
5318    if (index < leftColumnCount) {
5319      return this._columnsByPin[0].columns[index];
5320    }
5321    const centerColumnCount = this._columnsByPin[1].columns.length;
5322    if (index < leftColumnCount + centerColumnCount) {
5323      return this._columnsByPin[1].columns[index - leftColumnCount];
5324    }
5325    return this._columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];
5326  }
5327  onSort({
5328    column,
5329    prevValue,
5330    newValue
5331  }) {
5332    if (column.dragging) {
5333      return;
5334    }
5335    const sorts = this.calcNewSorts(column, prevValue, newValue);
5336    this.sort.emit({
5337      sorts,
5338      column,
5339      prevValue,
5340      newValue
5341    });
5342  }
5343  calcNewSorts(column, prevValue, newValue) {
5344    let idx = 0;
5345    if (!this.sorts) {
5346      this.sorts = [];
5347    }
5348    const sorts = this.sorts.map((s, i) => {
5349      s = __spreadValues({}, s);
5350      if (s.prop === column.prop) {
5351        idx = i;
5352      }
5353      return s;
5354    });
5355    if (newValue === void 0) {
5356      sorts.splice(idx, 1);
5357    } else if (prevValue) {
5358      sorts[idx].dir = newValue;
5359    } else {
5360      if (this.sortType === SortType.single) {
5361        sorts.splice(0, this.sorts.length);
5362      }
5363      sorts.push({
5364        dir: newValue,
5365        prop: column.prop
5366      });
5367    }
5368    return sorts;
5369  }
5370  setStylesByGroup() {
5371    this._styleByGroup.left = this.calcStylesByGroup("left");
5372    this._styleByGroup.center = this.calcStylesByGroup("center");
5373    this._styleByGroup.right = this.calcStylesByGroup("right");
5374    if (!this.destroyed) {
5375      this.cd.detectChanges();
5376    }
5377  }
5378  calcStylesByGroup(group) {
5379    const widths = this._columnGroupWidths;
5380    const offsetX = this.offsetX;
5381    const styles = {
5382      width: `${widths[group]}px`
5383    };
5384    if (group === "center") {
5385      translateXY(styles, offsetX * -1, 0);
5386    } else if (group === "right") {
5387      const totalDiff = widths.total - this.innerWidth;
5388      const offset = totalDiff * -1;
5389      translateXY(styles, offset, 0);
5390    }
5391    return styles;
5392  }
5393};
5394DataTableHeaderComponent.\u0275fac = function DataTableHeaderComponent_Factory(__ngFactoryType__) {
5395  return new (__ngFactoryType__ || DataTableHeaderComponent)(\u0275\u0275directiveInject(ChangeDetectorRef));
5396};
5397DataTableHeaderComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
5398  type: DataTableHeaderComponent,
5399  selectors: [["datatable-header"]],
5400  hostAttrs: [1, "datatable-header"],
5401  hostVars: 4,
5402  hostBindings: function DataTableHeaderComponent_HostBindings(rf, ctx) {
5403    if (rf & 2) {
5404      \u0275\u0275styleProp("height", ctx.headerHeight)("width", ctx.headerWidth);
5405    }
5406  },
5407  inputs: {
5408    sortAscendingIcon: "sortAscendingIcon",
5409    sortDescendingIcon: "sortDescendingIcon",
5410    sortUnsetIcon: "sortUnsetIcon",
5411    scrollbarH: "scrollbarH",
5412    dealsWithGroup: "dealsWithGroup",
5413    targetMarkerTemplate: "targetMarkerTemplate",
5414    innerWidth: "innerWidth",
5415    sorts: "sorts",
5416    sortType: "sortType",
5417    allRowsSelected: "allRowsSelected",
5418    selectionType: "selectionType",
5419    reorderable: "reorderable",
5420    headerHeight: "headerHeight",
5421    columns: "columns",
5422    offsetX: "offsetX"
5423  },
5424  outputs: {
5425    sort: "sort",
5426    reorder: "reorder",
5427    resize: "resize",
5428    select: "select",
5429    columnContextmenu: "columnContextmenu"
5430  },
5431  decls: 2,
5432  vars: 4,
5433  consts: [["role", "row", "orderable", "", 1, "datatable-header-inner", 3, "reorder", "targetChanged"], [3, "class", "ngStyle", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "ngStyle"], ["role", "columnheader", "resizeable", "", "long-press", "", "draggable", "", 3, "resizeEnabled", "pressModel", "pressEnabled", "dragX", "dragY", "dragModel", "dragEventTarget", "headerHeight", "isTarget", "targetMarkerTemplate", "targetMarkerContext", "column", "sortType", "sorts", "selectionType", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected", "resize", "longPressStart", "longPressEnd", "sort", "select", "columnContextmenu", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "columnheader", "resizeable", "", "long-press", "", "draggable", "", 3, "resize", "longPressStart", "longPressEnd", "sort", "select", "columnContextmenu", "resizeEnabled", "pressModel", "pressEnabled", "dragX", "dragY", "dragModel", "dragEventTarget", "headerHeight", "isTarget", "targetMarkerTemplate", "targetMarkerContext", "column", "sortType", "sorts", "selectionType", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected"]],
5434  template: function DataTableHeaderComponent_Template(rf, ctx) {
5435    if (rf & 1) {
5436      \u0275\u0275elementStart(0, "div", 0);
5437      \u0275\u0275listener("reorder", function DataTableHeaderComponent_Template_div_reorder_0_listener($event) {
5438        return ctx.onColumnReordered($event);
5439      })("targetChanged", function DataTableHeaderComponent_Template_div_targetChanged_0_listener($event) {
5440        return ctx.onTargetChanged($event);
5441      });
5442      \u0275\u0275template(1, DataTableHeaderComponent_div_1_Template, 2, 5, "div", 1);
5443      \u0275\u0275elementEnd();
5444    }
5445    if (rf & 2) {
5446      \u0275\u0275styleProp("width", ctx._columnGroupWidths.total, "px");
5447      \u0275\u0275advance();
5448      \u0275\u0275property("ngForOf", ctx._columnsByPin)("ngForTrackBy", ctx.trackByGroups);
5449    }
5450  },
5451  dependencies: [DataTableHeaderCellComponent, OrderableDirective, NgForOf, NgStyle, ResizeableDirective, LongPressDirective, DraggableDirective],
5452  encapsulation: 2,
5453  changeDetection: 0
5454});
5455(() => {
5456  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableHeaderComponent, [{
5457    type: Component,
5458    args: [{
5459      selector: "datatable-header",
5460      template: `
5461    <div
5462      role="row"
5463      orderable
5464      (reorder)="onColumnReordered($event)"
5465      (targetChanged)="onTargetChanged($event)"
5466      [style.width.px]="_columnGroupWidths.total"
5467      class="datatable-header-inner"
5468    >
5469      <div
5470        *ngFor="let colGroup of _columnsByPin; trackBy: trackByGroups"
5471        [class]="'datatable-row-' + colGroup.type"
5472        [ngStyle]="_styleByGroup[colGroup.type]"
5473      >
5474        <datatable-header-cell
5475          role="columnheader"
5476          *ngFor="let column of colGroup.columns; trackBy: columnTrackingFn"
5477          resizeable
5478          [resizeEnabled]="column.resizeable"
5479          (resize)="onColumnResized($event, column)"
5480          long-press
5481          [pressModel]="column"
5482          [pressEnabled]="reorderable && column.draggable"
5483          (longPressStart)="onLongPressStart($event)"
5484          (longPressEnd)="onLongPressEnd($event)"
5485          draggable
5486          [dragX]="reorderable && column.draggable && column.dragging"
5487          [dragY]="false"
5488          [dragModel]="column"
5489          [dragEventTarget]="dragEventTarget"
5490          [headerHeight]="headerHeight"
5491          [isTarget]="column.isTarget"
5492          [targetMarkerTemplate]="targetMarkerTemplate"
5493          [targetMarkerContext]="column.targetMarkerContext"
5494          [column]="column"
5495          [sortType]="sortType"
5496          [sorts]="sorts"
5497          [selectionType]="selectionType"
5498          [sortAscendingIcon]="sortAscendingIcon"
5499          [sortDescendingIcon]="sortDescendingIcon"
5500          [sortUnsetIcon]="sortUnsetIcon"
5501          [allRowsSelected]="allRowsSelected"
5502          (sort)="onSort($event)"
5503          (select)="select.emit($event)"
5504          (columnContextmenu)="columnContextmenu.emit($event)"
5505        >
5506        </datatable-header-cell>
5507      </div>
5508    </div>
5509  `,
5510      host: {
5511        class: "datatable-header"
5512      },
5513      changeDetection: ChangeDetectionStrategy.OnPush
5514    }]
5515  }], function() {
5516    return [{
5517      type: ChangeDetectorRef
5518    }];
5519  }, {
5520    sortAscendingIcon: [{
5521      type: Input
5522    }],
5523    sortDescendingIcon: [{
5524      type: Input
5525    }],
5526    sortUnsetIcon: [{
5527      type: Input
5528    }],
5529    scrollbarH: [{
5530      type: Input
5531    }],
5532    dealsWithGroup: [{
5533      type: Input
5534    }],
5535    targetMarkerTemplate: [{
5536      type: Input
5537    }],
5538    innerWidth: [{
5539      type: Input
5540    }],
5541    sorts: [{
5542      type: Input
5543    }],
5544    sortType: [{
5545      type: Input
5546    }],
5547    allRowsSelected: [{
5548      type: Input
5549    }],
5550    selectionType: [{
5551      type: Input
5552    }],
5553    reorderable: [{
5554      type: Input
5555    }],
5556    headerHeight: [{
5557      type: HostBinding,
5558      args: ["style.height"]
5559    }, {
5560      type: Input
5561    }],
5562    columns: [{
5563      type: Input
5564    }],
5565    offsetX: [{
5566      type: Input
5567    }],
5568    sort: [{
5569      type: Output
5570    }],
5571    reorder: [{
5572      type: Output
5573    }],
5574    resize: [{
5575      type: Output
5576    }],
5577    select: [{
5578      type: Output
5579    }],
5580    columnContextmenu: [{
5581      type: Output
5582    }],
5583    headerWidth: [{
5584      type: HostBinding,
5585      args: ["style.width"]
5586    }]
5587  });
5588})();
5589function throttle(func, wait, options) {
5590  options = options || {};
5591  let context;
5592  let args;
5593  let result;
5594  let timeout = null;
5595  let previous = 0;
5596  function later() {
5597    previous = options.leading === false ? 0 : +/* @__PURE__ */ new Date();
5598    timeout = null;
5599    result = func.apply(context, args);
5600  }
5601  return function() {
5602    const now = +/* @__PURE__ */ new Date();
5603    if (!previous && options.leading === false) {
5604      previous = now;
5605    }
5606    const remaining = wait - (now - previous);
5607    context = this;
5608    args = arguments;
5609    if (remaining <= 0) {
5610      clearTimeout(timeout);
5611      timeout = null;
5612      previous = now;
5613      result = func.apply(context, args);
5614    } else if (!timeout && options.trailing !== false) {
5615      timeout = setTimeout(later, remaining);
5616    }
5617    return result;
5618  };
5619}
5620function throttleable(duration, options) {
5621  return function innerDecorator(target, key, descriptor) {
5622    return {
5623      configurable: true,
5624      enumerable: descriptor.enumerable,
5625      get: function getter() {
5626        Object.defineProperty(this, key, {
5627          configurable: true,
5628          enumerable: descriptor.enumerable,
5629          value: throttle(descriptor.value, duration, options)
5630        });
5631        return this[key];
5632      }
5633    };
5634  };
5635}
5636function getTotalFlexGrow(columns) {
5637  let totalFlexGrow = 0;
5638  for (const c of columns) {
5639    totalFlexGrow += c.flexGrow || 0;
5640  }
5641  return totalFlexGrow;
5642}
5643function adjustColumnWidths(allColumns, expectedWidth) {
5644  const columnsWidth = columnsTotalWidth(allColumns);
5645  const totalFlexGrow = getTotalFlexGrow(allColumns);
5646  const colsByGroup = columnsByPin(allColumns);
5647  if (columnsWidth !== expectedWidth) {
5648    scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);
5649  }
5650}
5651function scaleColumns(colsByGroup, maxWidth, totalFlexGrow) {
5652  for (const attr in colsByGroup) {
5653    for (const column of colsByGroup[attr]) {
5654      if (!column.canAutoResize) {
5655        maxWidth -= column.width;
5656        totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;
5657      } else {
5658        column.width = 0;
5659      }
5660    }
5661  }
5662  const hasMinWidth = {};
5663  let remainingWidth = maxWidth;
5664  do {
5665    const widthPerFlexPoint = remainingWidth / totalFlexGrow;
5666    remainingWidth = 0;
5667    for (const attr in colsByGroup) {
5668      for (const column of colsByGroup[attr]) {
5669        if (column.canAutoResize && !hasMinWidth[column.prop]) {
5670          const newWidth = column.width + column.flexGrow * widthPerFlexPoint;
5671          if (column.minWidth !== void 0 && newWidth < column.minWidth) {
5672            remainingWidth += newWidth - column.minWidth;
5673            column.width = column.minWidth;
5674            hasMinWidth[column.prop] = true;
5675          } else {
5676            column.width = newWidth;
5677          }
5678        }
5679      }
5680    }
5681  } while (remainingWidth !== 0);
5682}
5683function forceFillColumnWidths(allColumns, expectedWidth, startIdx, allowBleed, defaultColWidth = 300) {
5684  const columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter((c) => {
5685    return c.canAutoResize !== false;
5686  });
5687  for (const column of columnsToResize) {
5688    if (!column.$$oldWidth) {
5689      column.$$oldWidth = column.width;
5690    }
5691  }
5692  let additionWidthPerColumn = 0;
5693  let exceedsWindow = false;
5694  let contentWidth = getContentWidth(allColumns, defaultColWidth);
5695  let remainingWidth = expectedWidth - contentWidth;
5696  const columnsProcessed = [];
5697  const remainingWidthLimit = 1;
5698  do {
5699    additionWidthPerColumn = remainingWidth / columnsToResize.length;
5700    exceedsWindow = contentWidth >= expectedWidth;
5701    for (const column of columnsToResize) {
5702      if (exceedsWindow && allowBleed) {
5703        column.width = column.$$oldWidth || column.width || defaultColWidth;
5704      } else {
5705        const newSize = (column.width || defaultColWidth) + additionWidthPerColumn;
5706        if (column.minWidth && newSize < column.minWidth) {
5707          column.width = column.minWidth;
5708          columnsProcessed.push(column);
5709        } else if (column.maxWidth && newSize > column.maxWidth) {
5710          column.width = column.maxWidth;
5711          columnsProcessed.push(column);
5712        } else {
5713          column.width = newSize;
5714        }
5715      }
5716      column.width = Math.max(0, column.width);
5717    }
5718    contentWidth = getContentWidth(allColumns);
5719    remainingWidth = expectedWidth - contentWidth;
5720    removeProcessedColumns(columnsToResize, columnsProcessed);
5721  } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);
5722}
5723function removeProcessedColumns(columnsToResize, columnsProcessed) {
5724  for (const column of columnsProcessed) {
5725    const index = columnsToResize.indexOf(column);
5726    columnsToResize.splice(index, 1);
5727  }
5728}
5729function getContentWidth(allColumns, defaultColWidth = 300) {
5730  let contentWidth = 0;
5731  for (const column of allColumns) {
5732    contentWidth += column.width || defaultColWidth;
5733  }
5734  return contentWidth;
5735}
5736var DataTablePagerComponent = class {
5737  constructor() {
5738    this.change = new EventEmitter();
5739    this._count = 0;
5740    this._page = 1;
5741    this._size = 0;
5742  }
5743  set size(val) {
5744    this._size = val;
5745    this.pages = this.calcPages();
5746  }
5747  get size() {
5748    return this._size;
5749  }
5750  set count(val) {
5751    this._count = val;
5752    this.pages = this.calcPages();
5753  }
5754  get count() {
5755    return this._count;
5756  }
5757  set page(val) {
5758    this._page = val;
5759    this.pages = this.calcPages();
5760  }
5761  get page() {
5762    return this._page;
5763  }
5764  get totalPages() {
5765    const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size);
5766    return Math.max(count || 0, 1);
5767  }
5768  canPrevious() {
5769    return this.page > 1;
5770  }
5771  canNext() {
5772    return this.page < this.totalPages;
5773  }
5774  prevPage() {
5775    this.selectPage(this.page - 1);
5776  }
5777  nextPage() {
5778    this.selectPage(this.page + 1);
5779  }
5780  selectPage(page) {
5781    if (page > 0 && page <= this.totalPages && page !== this.page) {
5782      this.page = page;
5783      this.change.emit({
5784        page
5785      });
5786    }
5787  }
5788  calcPages(page) {
5789    const pages = [];
5790    let startPage = 1;
5791    let endPage = this.totalPages;
5792    const maxSize = 5;
5793    const isMaxSized = maxSize < this.totalPages;
5794    page = page || this.page;
5795    if (isMaxSized) {
5796      startPage = page - Math.floor(maxSize / 2);
5797      endPage = page + Math.floor(maxSize / 2);
5798      if (startPage < 1) {
5799        startPage = 1;
5800        endPage = Math.min(startPage + maxSize - 1, this.totalPages);
5801      } else if (endPage > this.totalPages) {
5802        startPage = Math.max(this.totalPages - maxSize + 1, 1);
5803        endPage = this.totalPages;
5804      }
5805    }
5806    for (let num = startPage; num <= endPage; num++) {
5807      pages.push({
5808        number: num,
5809        text: num
5810      });
5811    }
5812    return pages;
5813  }
5814};
5815DataTablePagerComponent.\u0275fac = function DataTablePagerComponent_Factory(__ngFactoryType__) {
5816  return new (__ngFactoryType__ || DataTablePagerComponent)();
5817};
5818DataTablePagerComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
5819  type: DataTablePagerComponent,
5820  selectors: [["datatable-pager"]],
5821  hostAttrs: [1, "datatable-pager"],
5822  inputs: {
5823    pagerLeftArrowIcon: "pagerLeftArrowIcon",
5824    pagerRightArrowIcon: "pagerRightArrowIcon",
5825    pagerPreviousIcon: "pagerPreviousIcon",
5826    pagerNextIcon: "pagerNextIcon",
5827    size: "size",
5828    count: "count",
5829    page: "page"
5830  },
5831  outputs: {
5832    change: "change"
5833  },
5834  decls: 14,
5835  vars: 21,
5836  consts: [[1, "pager"], ["role", "button", "aria-label", "go to first page", "href", "javascript:void(0)", 3, "click"], ["role", "button", "aria-label", "go to previous page", "href", "javascript:void(0)", 3, "click"], ["role", "button", "class", "pages", 3, "active", 4, "ngFor", "ngForOf"], ["role", "button", "aria-label", "go to next page", "href", "javascript:void(0)", 3, "click"], ["role", "button", "aria-label", "go to last page", "href", "javascript:void(0)", 3, "click"], ["role", "button", 1, "pages"], ["href", "javascript:void(0)", 3, "click"]],
5837  template: function DataTablePagerComponent_Template(rf, ctx) {
5838    if (rf & 1) {
5839      \u0275\u0275elementStart(0, "ul", 0)(1, "li")(2, "a", 1);
5840      \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_2_listener() {
5841        return ctx.selectPage(1);
5842      });
5843      \u0275\u0275element(3, "i");
5844      \u0275\u0275elementEnd()();
5845      \u0275\u0275elementStart(4, "li")(5, "a", 2);
5846      \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_5_listener() {
5847        return ctx.prevPage();
5848      });
5849      \u0275\u0275element(6, "i");
5850      \u0275\u0275elementEnd()();
5851      \u0275\u0275template(7, DataTablePagerComponent_li_7_Template, 3, 4, "li", 3);
5852      \u0275\u0275elementStart(8, "li")(9, "a", 4);
5853      \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_9_listener() {
5854        return ctx.nextPage();
5855      });
5856      \u0275\u0275element(10, "i");
5857      \u0275\u0275elementEnd()();
5858      \u0275\u0275elementStart(11, "li")(12, "a", 5);
5859      \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_12_listener() {
5860        return ctx.selectPage(ctx.totalPages);
5861      });
5862      \u0275\u0275element(13, "i");
5863      \u0275\u0275elementEnd()()();
5864    }
5865    if (rf & 2) {
5866      \u0275\u0275advance();
5867      \u0275\u0275classProp("disabled", !ctx.canPrevious());
5868      \u0275\u0275advance(2);
5869      \u0275\u0275classMap(ctx.pagerPreviousIcon);
5870      \u0275\u0275advance();
5871      \u0275\u0275classProp("disabled", !ctx.canPrevious());
5872      \u0275\u0275advance(2);
5873      \u0275\u0275classMap(ctx.pagerLeftArrowIcon);
5874      \u0275\u0275advance();
5875      \u0275\u0275property("ngForOf", ctx.pages);
5876      \u0275\u0275advance();
5877      \u0275\u0275classProp("disabled", !ctx.canNext());
5878      \u0275\u0275advance(2);
5879      \u0275\u0275classMap(ctx.pagerRightArrowIcon);
5880      \u0275\u0275advance();
5881      \u0275\u0275classProp("disabled", !ctx.canNext());
5882      \u0275\u0275advance(2);
5883      \u0275\u0275classMap(ctx.pagerNextIcon);
5884    }
5885  },
5886  dependencies: [NgForOf],
5887  encapsulation: 2,
5888  changeDetection: 0
5889});
5890(() => {
5891  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTablePagerComponent, [{
5892    type: Component,
5893    args: [{
5894      selector: "datatable-pager",
5895      template: `
5896    <ul class="pager">
5897      <li [class.disabled]="!canPrevious()">
5898        <a role="button" aria-label="go to first page" href="javascript:void(0)" (click)="selectPage(1)">
5899          <i class="{{ pagerPreviousIcon }}"></i>
5900        </a>
5901      </li>
5902      <li [class.disabled]="!canPrevious()">
5903        <a role="button" aria-label="go to previous page" href="javascript:void(0)" (click)="prevPage()">
5904          <i class="{{ pagerLeftArrowIcon }}"></i>
5905        </a>
5906      </li>
5907      <li
5908        role="button"
5909        [attr.aria-label]="'page ' + pg.number"
5910        class="pages"
5911        *ngFor="let pg of pages"
5912        [class.active]="pg.number === page"
5913      >
5914        <a href="javascript:void(0)" (click)="selectPage(pg.number)">
5915          {{ pg.text }}
5916        </a>
5917      </li>
5918      <li [class.disabled]="!canNext()">
5919        <a role="button" aria-label="go to next page" href="javascript:void(0)" (click)="nextPage()">
5920          <i class="{{ pagerRightArrowIcon }}"></i>
5921        </a>
5922      </li>
5923      <li [class.disabled]="!canNext()">
5924        <a role="button" aria-label="go to last page" href="javascript:void(0)" (click)="selectPage(totalPages)">
5925          <i class="{{ pagerNextIcon }}"></i>
5926        </a>
5927      </li>
5928    </ul>
5929  `,
5930      host: {
5931        class: "datatable-pager"
5932      },
5933      changeDetection: ChangeDetectionStrategy.OnPush
5934    }]
5935  }], null, {
5936    pagerLeftArrowIcon: [{
5937      type: Input
5938    }],
5939    pagerRightArrowIcon: [{
5940      type: Input
5941    }],
5942    pagerPreviousIcon: [{
5943      type: Input
5944    }],
5945    pagerNextIcon: [{
5946      type: Input
5947    }],
5948    size: [{
5949      type: Input
5950    }],
5951    count: [{
5952      type: Input
5953    }],
5954    page: [{
5955      type: Input
5956    }],
5957    change: [{
5958      type: Output
5959    }]
5960  });
5961})();
5962var DataTableFooterComponent = class {
5963  constructor() {
5964    this.selectedCount = 0;
5965    this.page = new EventEmitter();
5966  }
5967  get isVisible() {
5968    return this.rowCount / this.pageSize > 1;
5969  }
5970  get curPage() {
5971    return this.offset + 1;
5972  }
5973};
5974DataTableFooterComponent.\u0275fac = function DataTableFooterComponent_Factory(__ngFactoryType__) {
5975  return new (__ngFactoryType__ || DataTableFooterComponent)();
5976};
5977DataTableFooterComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
5978  type: DataTableFooterComponent,
5979  selectors: [["datatable-footer"]],
5980  hostAttrs: [1, "datatable-footer"],
5981  inputs: {
5982    footerHeight: "footerHeight",
5983    rowCount: "rowCount",
5984    pageSize: "pageSize",
5985    offset: "offset",
5986    pagerLeftArrowIcon: "pagerLeftArrowIcon",
5987    pagerRightArrowIcon: "pagerRightArrowIcon",
5988    pagerPreviousIcon: "pagerPreviousIcon",
5989    pagerNextIcon: "pagerNextIcon",
5990    totalMessage: "totalMessage",
5991    footerTemplate: "footerTemplate",
5992    selectedCount: "selectedCount",
5993    selectedMessage: "selectedMessage"
5994  },
5995  outputs: {
5996    page: "page"
5997  },
5998  decls: 4,
5999  vars: 8,
6000  consts: [[1, "datatable-footer-inner", 3, "ngClass"], [4, "ngIf"], ["class", "page-count", 4, "ngIf"], [3, "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "page", "size", "count", "hidden", "change", 4, "ngIf"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "page-count"], [3, "change", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "page", "size", "count", "hidden"]],
6001  template: function DataTableFooterComponent_Template(rf, ctx) {
6002    if (rf & 1) {
6003      \u0275\u0275elementStart(0, "div", 0);
6004      \u0275\u0275template(1, DataTableFooterComponent_1_Template, 1, 8, null, 1)(2, DataTableFooterComponent_div_2_Template, 3, 3, "div", 2)(3, DataTableFooterComponent_datatable_pager_3_Template, 1, 8, "datatable-pager", 3);
6005      \u0275\u0275elementEnd();
6006    }
6007    if (rf & 2) {
6008      \u0275\u0275styleProp("height", ctx.footerHeight, "px");
6009      \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(6, _c3, ctx.selectedMessage));
6010      \u0275\u0275advance();
6011      \u0275\u0275property("ngIf", ctx.footerTemplate);
6012      \u0275\u0275advance();
6013      \u0275\u0275property("ngIf", !ctx.footerTemplate);
6014      \u0275\u0275advance();
6015      \u0275\u0275property("ngIf", !ctx.footerTemplate);
6016    }
6017  },
6018  dependencies: [DataTablePagerComponent, NgClass, NgIf, NgTemplateOutlet],
6019  encapsulation: 2,
6020  changeDetection: 0
6021});
6022(() => {
6023  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableFooterComponent, [{
6024    type: Component,
6025    args: [{
6026      selector: "datatable-footer",
6027      template: `
6028    <div
6029      class="datatable-footer-inner"
6030      [ngClass]="{ 'selected-count': selectedMessage }"
6031      [style.height.px]="footerHeight"
6032    >
6033      <ng-template
6034        *ngIf="footerTemplate"
6035        [ngTemplateOutlet]="footerTemplate.template"
6036        [ngTemplateOutletContext]="{
6037          rowCount: rowCount,
6038          pageSize: pageSize,
6039          selectedCount: selectedCount,
6040          curPage: curPage,
6041          offset: offset
6042        }"
6043      >
6044      </ng-template>
6045      <div class="page-count" *ngIf="!footerTemplate">
6046        <span *ngIf="selectedMessage"> {{ selectedCount?.toLocaleString() }} {{ selectedMessage }} / </span>
6047        {{ rowCount?.toLocaleString() }} {{ totalMessage }}
6048      </div>
6049      <datatable-pager
6050        *ngIf="!footerTemplate"
6051        [pagerLeftArrowIcon]="pagerLeftArrowIcon"
6052        [pagerRightArrowIcon]="pagerRightArrowIcon"
6053        [pagerPreviousIcon]="pagerPreviousIcon"
6054        [pagerNextIcon]="pagerNextIcon"
6055        [page]="curPage"
6056        [size]="pageSize"
6057        [count]="rowCount"
6058        [hidden]="!isVisible"
6059        (change)="page.emit($event)"
6060      >
6061      </datatable-pager>
6062    </div>
6063  `,
6064      host: {
6065        class: "datatable-footer"
6066      },
6067      changeDetection: ChangeDetectionStrategy.OnPush
6068    }]
6069  }], null, {
6070    footerHeight: [{
6071      type: Input
6072    }],
6073    rowCount: [{
6074      type: Input
6075    }],
6076    pageSize: [{
6077      type: Input
6078    }],
6079    offset: [{
6080      type: Input
6081    }],
6082    pagerLeftArrowIcon: [{
6083      type: Input
6084    }],
6085    pagerRightArrowIcon: [{
6086      type: Input
6087    }],
6088    pagerPreviousIcon: [{
6089      type: Input
6090    }],
6091    pagerNextIcon: [{
6092      type: Input
6093    }],
6094    totalMessage: [{
6095      type: Input
6096    }],
6097    footerTemplate: [{
6098      type: Input
6099    }],
6100    selectedCount: [{
6101      type: Input
6102    }],
6103    selectedMessage: [{
6104      type: Input
6105    }],
6106    page: [{
6107      type: Output
6108    }]
6109  });
6110})();
6111var DatatableComponent = class {
6112  constructor(scrollbarHelper, dimensionsHelper, cd, element, differs, columnChangesService, configuration) {
6113    this.scrollbarHelper = scrollbarHelper;
6114    this.dimensionsHelper = dimensionsHelper;
6115    this.cd = cd;
6116    this.columnChangesService = columnChangesService;
6117    this.configuration = configuration;
6118    this.selected = [];
6119    this.scrollbarV = false;
6120    this.scrollbarH = false;
6121    this.rowHeight = 30;
6122    this.columnMode = ColumnMode.standard;
6123    this.headerHeight = 30;
6124    this.footerHeight = 0;
6125    this.externalPaging = false;
6126    this.externalSorting = false;
6127    this.loadingIndicator = false;
6128    this.reorderable = true;
6129    this.swapColumns = true;
6130    this.sortType = SortType.single;
6131    this.sorts = [];
6132    this.cssClasses = {
6133      sortAscending: "datatable-icon-up",
6134      sortDescending: "datatable-icon-down",
6135      sortUnset: "datatable-icon-sort-unset",
6136      pagerLeftArrow: "datatable-icon-left",
6137      pagerRightArrow: "datatable-icon-right",
6138      pagerPrevious: "datatable-icon-prev",
6139      pagerNext: "datatable-icon-skip"
6140    };
6141    this.messages = {
6142      // Message to show when array is presented
6143      // but contains no values
6144      emptyMessage: "No data to display",
6145      // Footer total message
6146      totalMessage: "total",
6147      // Footer selected message
6148      selectedMessage: "selected"
6149    };
6150    this.groupExpansionDefault = false;
6151    this.selectAllRowsOnPage = false;
6152    this.virtualization = true;
6153    this.summaryRow = false;
6154    this.summaryHeight = 30;
6155    this.summaryPosition = "top";
6156    this.scroll = new EventEmitter();
6157    this.activate = new EventEmitter();
6158    this.select = new EventEmitter();
6159    this.sort = new EventEmitter();
6160    this.page = new EventEmitter();
6161    this.reorder = new EventEmitter();
6162    this.resize = new EventEmitter();
6163    this.tableContextmenu = new EventEmitter(false);
6164    this.treeAction = new EventEmitter();
6165    this.rowCount = 0;
6166    this._offsetX = new BehaviorSubject(0);
6167    this._count = 0;
6168    this._offset = 0;
6169    this._subscriptions = [];
6170    this.rowIdentity = (x) => {
6171      if (this._groupRowsBy) {
6172        return x.key;
6173      } else {
6174        return x;
6175      }
6176    };
6177    this.element = element.nativeElement;
6178    this.rowDiffer = differs.find({}).create();
6179    if (this.configuration && this.configuration.messages) {
6180      this.messages = __spreadValues({}, this.configuration.messages);
6181    }
6182  }
6183  /**
6184   * Rows that are displayed in the table.
6185   */
6186  set rows(val) {
6187    this._rows = val;
6188    if (val) {
6189      this._internalRows = [...val];
6190    }
6191    if (!this.externalSorting) {
6192      this.sortInternalRows();
6193    }
6194    this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));
6195    this.recalculate();
6196    if (this._rows && this._groupRowsBy) {
6197      this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);
6198    }
6199    this.cd.markForCheck();
6200  }
6201  /**
6202   * Gets the rows.
6203   */
6204  get rows() {
6205    return this._rows;
6206  }
6207  /**
6208   * This attribute allows the user to set the name of the column to group the data with
6209   */
6210  set groupRowsBy(val) {
6211    if (val) {
6212      this._groupRowsBy = val;
6213      if (this._rows && this._groupRowsBy) {
6214        this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);
6215      }
6216    }
6217  }
6218  get groupRowsBy() {
6219    return this._groupRowsBy;
6220  }
6221  /**
6222   * Columns to be displayed.
6223   */
6224  set columns(val) {
6225    if (val) {
6226      this._internalColumns = [...val];
6227      setColumnDefaults(this._internalColumns);
6228      this.recalculateColumns();
6229    }
6230    this._columns = val;
6231  }
6232  /**
6233   * Get the columns.
6234   */
6235  get columns() {
6236    return this._columns;
6237  }
6238  /**
6239   * The page size to be shown.
6240   * Default value: `undefined`
6241   */
6242  set limit(val) {
6243    this._limit = val;
6244    this.recalculate();
6245  }
6246  /**
6247   * Gets the limit.
6248   */
6249  get limit() {
6250    return this._limit;
6251  }
6252  /**
6253   * The total count of all rows.
6254   * Default value: `0`
6255   */
6256  set count(val) {
6257    this._count = val;
6258    this.recalculate();
6259  }
6260  /**
6261   * Gets the count.
6262   */
6263  get count() {
6264    return this._count;
6265  }
6266  /**
6267   * The current offset ( page - 1 ) shown.
6268   * Default value: `0`
6269   */
6270  set offset(val) {
6271    this._offset = val;
6272  }
6273  get offset() {
6274    return Math.max(Math.min(this._offset, Math.ceil(this.rowCount / this.pageSize) - 1), 0);
6275  }
6276  /**
6277   * CSS class applied if the header height if fixed height.
6278   */
6279  get isFixedHeader() {
6280    const headerHeight = this.headerHeight;
6281    return typeof headerHeight === "string" ? headerHeight !== "auto" : true;
6282  }
6283  /**
6284   * CSS class applied to the root element if
6285   * the row heights are fixed heights.
6286   */
6287  get isFixedRow() {
6288    return this.rowHeight !== "auto";
6289  }
6290  /**
6291   * CSS class applied to root element if
6292   * vertical scrolling is enabled.
6293   */
6294  get isVertScroll() {
6295    return this.scrollbarV;
6296  }
6297  /**
6298   * CSS class applied to root element if
6299   * virtualization is enabled.
6300   */
6301  get isVirtualized() {
6302    return this.virtualization;
6303  }
6304  /**
6305   * CSS class applied to the root element
6306   * if the horziontal scrolling is enabled.
6307   */
6308  get isHorScroll() {
6309    return this.scrollbarH;
6310  }
6311  /**
6312   * CSS class applied to root element is selectable.
6313   */
6314  get isSelectable() {
6315    return this.selectionType !== void 0;
6316  }
6317  /**
6318   * CSS class applied to root is checkbox selection.
6319   */
6320  get isCheckboxSelection() {
6321    return this.selectionType === SelectionType.checkbox;
6322  }
6323  /**
6324   * CSS class applied to root if cell selection.
6325   */
6326  get isCellSelection() {
6327    return this.selectionType === SelectionType.cell;
6328  }
6329  /**
6330   * CSS class applied to root if single select.
6331   */
6332  get isSingleSelection() {
6333    return this.selectionType === SelectionType.single;
6334  }
6335  /**
6336   * CSS class added to root element if mulit select
6337   */
6338  get isMultiSelection() {
6339    return this.selectionType === SelectionType.multi;
6340  }
6341  /**
6342   * CSS class added to root element if mulit click select
6343   */
6344  get isMultiClickSelection() {
6345    return this.selectionType === SelectionType.multiClick;
6346  }
6347  /**
6348   * Column templates gathered from `ContentChildren`
6349   * if described in your markup.
6350   */
6351  set columnTemplates(val) {
6352    this._columnTemplates = val;
6353    this.translateColumns(val);
6354  }
6355  /**
6356   * Returns the column templates.
6357   */
6358  get columnTemplates() {
6359    return this._columnTemplates;
6360  }
6361  /**
6362   * Returns if all rows are selected.
6363   */
6364  get allRowsSelected() {
6365    let allRowsSelected = this.rows && this.selected && this.selected.length === this.rows.length;
6366    if (this.bodyComponent && this.selectAllRowsOnPage) {
6367      const indexes = this.bodyComponent.indexes;
6368      const rowsOnPage = indexes.last - indexes.first;
6369      allRowsSelected = this.selected.length === rowsOnPage;
6370    }
6371    return this.selected && this.rows && this.rows.length !== 0 && allRowsSelected;
6372  }
6373  /**
6374   * Lifecycle hook that is called after data-bound
6375   * properties of a directive are initialized.
6376   */
6377  ngOnInit() {
6378    this.recalculate();
6379  }
6380  /**
6381   * Lifecycle hook that is called after a component's
6382   * view has been fully initialized.
6383   */
6384  ngAfterViewInit() {
6385    if (!this.externalSorting) {
6386      this.sortInternalRows();
6387    }
6388    if (typeof requestAnimationFrame === "undefined") {
6389      return;
6390    }
6391    requestAnimationFrame(() => {
6392      this.recalculate();
6393      if (this.externalPaging && this.scrollbarV) {
6394        this.page.emit({
6395          count: this.count,
6396          pageSize: this.pageSize,
6397          limit: this.limit,
6398          offset: 0
6399        });
6400      }
6401    });
6402  }
6403  /**
6404   * Lifecycle hook that is called after a component's
6405   * content has been fully initialized.
6406   */
6407  ngAfterContentInit() {
6408    this.columnTemplates.changes.subscribe((v) => this.translateColumns(v));
6409    this.listenForColumnInputChanges();
6410  }
6411  /**
6412   * Translates the templates to the column objects
6413   */
6414  translateColumns(val) {
6415    if (val) {
6416      const arr = val.toArray();
6417      if (arr.length) {
6418        this._internalColumns = translateTemplates(arr);
6419        setColumnDefaults(this._internalColumns);
6420        this.recalculateColumns();
6421        this.sortInternalRows();
6422        this.cd.markForCheck();
6423      }
6424    }
6425  }
6426  /**
6427   * Creates a map with the data grouped by the user choice of grouping index
6428   *
6429   * @param originalArray the original array passed via parameter
6430   * @param groupByIndex  the index of the column to group the data by
6431   */
6432  groupArrayBy(originalArray, groupBy) {
6433    const map = /* @__PURE__ */ new Map();
6434    let i = 0;
6435    originalArray.forEach((item) => {
6436      const key = item[groupBy];
6437      if (!map.has(key)) {
6438        map.set(key, [item]);
6439      } else {
6440        map.get(key).push(item);
6441      }
6442      i++;
6443    });
6444    const addGroup = (key, value) => {
6445      return {
6446        key,
6447        value
6448      };
6449    };
6450    return Array.from(map, (x) => addGroup(x[0], x[1]));
6451  }
6452  /*
6453   * Lifecycle hook that is called when Angular dirty checks a directive.
6454   */
6455  ngDoCheck() {
6456    if (this.rowDiffer.diff(this.rows)) {
6457      if (!this.externalSorting) {
6458        this.sortInternalRows();
6459      } else {
6460        this._internalRows = [...this.rows];
6461      }
6462      this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));
6463      this.recalculatePages();
6464      this.cd.markForCheck();
6465    }
6466  }
6467  /**
6468   * Recalc's the sizes of the grid.
6469   *
6470   * Updated automatically on changes to:
6471   *
6472   *  - Columns
6473   *  - Rows
6474   *  - Paging related
6475   *
6476   * Also can be manually invoked or upon window resize.
6477   */
6478  recalculate() {
6479    this.recalculateDims();
6480    this.recalculateColumns();
6481    this.cd.markForCheck();
6482  }
6483  /**
6484   * Window resize handler to update sizes.
6485   */
6486  onWindowResize() {
6487    this.recalculate();
6488  }
6489  /**
6490   * Recalulcates the column widths based on column width
6491   * distribution mode and scrollbar offsets.
6492   */
6493  recalculateColumns(columns = this._internalColumns, forceIdx = -1, allowBleed = this.scrollbarH) {
6494    if (!columns) return void 0;
6495    let width = this._innerWidth;
6496    if (this.scrollbarV) {
6497      width = width - this.scrollbarHelper.width;
6498    }
6499    if (this.columnMode === ColumnMode.force) {
6500      forceFillColumnWidths(columns, width, forceIdx, allowBleed);
6501    } else if (this.columnMode === ColumnMode.flex) {
6502      adjustColumnWidths(columns, width);
6503    }
6504    return columns;
6505  }
6506  /**
6507   * Recalculates the dimensions of the table size.
6508   * Internally calls the page size and row count calcs too.
6509   *
6510   */
6511  recalculateDims() {
6512    const dims = this.dimensionsHelper.getDimensions(this.element);
6513    this._innerWidth = Math.floor(dims.width);
6514    if (this.scrollbarV) {
6515      let height = dims.height;
6516      if (this.headerHeight) height = height - this.headerHeight;
6517      if (this.footerHeight) height = height - this.footerHeight;
6518      this.bodyHeight = height;
6519    }
6520    this.recalculatePages();
6521  }
6522  /**
6523   * Recalculates the pages after a update.
6524   */
6525  recalculatePages() {
6526    this.pageSize = this.calcPageSize();
6527    this.rowCount = this.calcRowCount();
6528  }
6529  /**
6530   * Body triggered a page event.
6531   */
6532  onBodyPage({
6533    offset
6534  }) {
6535    if (this.externalPaging && !this.virtualization) {
6536      return;
6537    }
6538    this.offset = offset;
6539    this.page.emit({
6540      count: this.count,
6541      pageSize: this.pageSize,
6542      limit: this.limit,
6543      offset: this.offset
6544    });
6545  }
6546  /**
6547   * The body triggered a scroll event.
6548   */
6549  onBodyScroll(event) {
6550    this._offsetX.next(event.offsetX);
6551    this.scroll.emit(event);
6552    this.cd.detectChanges();
6553  }
6554  /**
6555   * The footer triggered a page event.
6556   */
6557  onFooterPage(event) {
6558    this.offset = event.page - 1;
6559    this.bodyComponent.updateOffsetY(this.offset);
6560    this.page.emit({
6561      count: this.count,
6562      pageSize: this.pageSize,
6563      limit: this.limit,
6564      offset: this.offset
6565    });
6566    if (this.selectAllRowsOnPage) {
6567      this.selected = [];
6568      this.select.emit({
6569        selected: this.selected
6570      });
6571    }
6572  }
6573  /**
6574   * Recalculates the sizes of the page
6575   */
6576  calcPageSize(val = this.rows) {
6577    if (this.scrollbarV && this.virtualization) {
6578      const size = Math.ceil(this.bodyHeight / this.rowHeight);
6579      return Math.max(size, 0);
6580    }
6581    if (this.limit !== void 0) {
6582      return this.limit;
6583    }
6584    if (val) {
6585      return val.length;
6586    }
6587    return 0;
6588  }
6589  /**
6590   * Calculates the row count.
6591   */
6592  calcRowCount(val = this.rows) {
6593    if (!this.externalPaging) {
6594      if (!val) return 0;
6595      if (this.groupedRows) {
6596        return this.groupedRows.length;
6597      } else if (this.treeFromRelation != null && this.treeToRelation != null) {
6598        return this._internalRows.length;
6599      } else {
6600        return val.length;
6601      }
6602    }
6603    return this.count;
6604  }
6605  /**
6606   * The header triggered a contextmenu event.
6607   */
6608  onColumnContextmenu({
6609    event,
6610    column
6611  }) {
6612    this.tableContextmenu.emit({
6613      event,
6614      type: ContextmenuType.header,
6615      content: column
6616    });
6617  }
6618  /**
6619   * The body triggered a contextmenu event.
6620   */
6621  onRowContextmenu({
6622    event,
6623    row
6624  }) {
6625    this.tableContextmenu.emit({
6626      event,
6627      type: ContextmenuType.body,
6628      content: row
6629    });
6630  }
6631  /**
6632   * The header triggered a column resize event.
6633   */
6634  onColumnResize({
6635    column,
6636    newValue
6637  }) {
6638    if (column === void 0) {
6639      return;
6640    }
6641    let idx;
6642    const cols = this._internalColumns.map((c, i) => {
6643      c = __spreadValues({}, c);
6644      if (c.$$id === column.$$id) {
6645        idx = i;
6646        c.width = newValue;
6647        c.$$oldWidth = newValue;
6648      }
6649      return c;
6650    });
6651    this.recalculateColumns(cols, idx);
6652    this._internalColumns = cols;
6653    this.resize.emit({
6654      column,
6655      newValue
6656    });
6657  }
6658  /**
6659   * The header triggered a column re-order event.
6660   */
6661  onColumnReorder({
6662    column,
6663    newValue,
6664    prevValue
6665  }) {
6666    const cols = this._internalColumns.map((c) => {
6667      return __spreadValues({}, c);
6668    });
6669    if (this.swapColumns) {
6670      const prevCol = cols[newValue];
6671      cols[newValue] = column;
6672      cols[prevValue] = prevCol;
6673    } else {
6674      if (newValue > prevValue) {
6675        const movedCol = cols[prevValue];
6676        for (let i = prevValue; i < newValue; i++) {
6677          cols[i] = cols[i + 1];
6678        }
6679        cols[newValue] = movedCol;
6680      } else {
6681        const movedCol = cols[prevValue];
6682        for (let i = prevValue; i > newValue; i--) {
6683          cols[i] = cols[i - 1];
6684        }
6685        cols[newValue] = movedCol;
6686      }
6687    }
6688    this._internalColumns = cols;
6689    this.reorder.emit({
6690      column,
6691      newValue,
6692      prevValue
6693    });
6694  }
6695  /**
6696   * The header triggered a column sort event.
6697   */
6698  onColumnSort(event) {
6699    if (this.selectAllRowsOnPage) {
6700      this.selected = [];
6701      this.select.emit({
6702        selected: this.selected
6703      });
6704    }
6705    this.sorts = event.sorts;
6706    if (this.externalSorting === false) {
6707      this.sortInternalRows();
6708    }
6709    this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));
6710    this.offset = 0;
6711    this.bodyComponent.updateOffsetY(this.offset);
6712    this.sort.emit(event);
6713  }
6714  /**
6715   * Toggle all row selection
6716   */
6717  onHeaderSelect(event) {
6718    if (this.bodyComponent && this.selectAllRowsOnPage) {
6719      const first = this.bodyComponent.indexes.first;
6720      const last = this.bodyComponent.indexes.last;
6721      const allSelected = this.selected.length === last - first;
6722      this.selected = [];
6723      if (!allSelected) {
6724        this.selected.push(...this._internalRows.slice(first, last));
6725      }
6726    } else {
6727      const allSelected = this.selected.length === this.rows.length;
6728      this.selected = [];
6729      if (!allSelected) {
6730        this.selected.push(...this.rows);
6731      }
6732    }
6733    this.select.emit({
6734      selected: this.selected
6735    });
6736  }
6737  /**
6738   * A row was selected from body
6739   */
6740  onBodySelect(event) {
6741    this.select.emit(event);
6742  }
6743  /**
6744   * A row was expanded or collapsed for tree
6745   */
6746  onTreeAction(event) {
6747    const row = event.row;
6748    const rowIndex = this._rows.findIndex((r) => r[this.treeToRelation] === event.row[this.treeToRelation]);
6749    this.treeAction.emit({
6750      row,
6751      rowIndex
6752    });
6753  }
6754  ngOnDestroy() {
6755    this._subscriptions.forEach((subscription) => subscription.unsubscribe());
6756  }
6757  /**
6758   * listen for changes to input bindings of all DataTableColumnDirective and
6759   * trigger the columnTemplates.changes observable to emit
6760   */
6761  listenForColumnInputChanges() {
6762    this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(() => {
6763      if (this.columnTemplates) {
6764        this.columnTemplates.notifyOnChanges();
6765      }
6766    }));
6767  }
6768  sortInternalRows() {
6769    this._internalRows = sortRows(this._internalRows, this._internalColumns, this.sorts);
6770  }
6771};
6772DatatableComponent.\u0275fac = function DatatableComponent_Factory(__ngFactoryType__) {
6773  return new (__ngFactoryType__ || DatatableComponent)(\u0275\u0275directiveInject(ScrollbarHelper, 4), \u0275\u0275directiveInject(DimensionsHelper, 4), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(KeyValueDiffers), \u0275\u0275directiveInject(ColumnChangesService), \u0275\u0275directiveInject("configuration", 8));
6774};
6775DatatableComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
6776  type: DatatableComponent,
6777  selectors: [["ngx-datatable"]],
6778  contentQueries: function DatatableComponent_ContentQueries(rf, ctx, dirIndex) {
6779    if (rf & 1) {
6780      \u0275\u0275contentQuery(dirIndex, DatatableRowDetailDirective, 5);
6781      \u0275\u0275contentQuery(dirIndex, DatatableGroupHeaderDirective, 5);
6782      \u0275\u0275contentQuery(dirIndex, DatatableFooterDirective, 5);
6783      \u0275\u0275contentQuery(dirIndex, DataTableColumnDirective, 4);
6784    }
6785    if (rf & 2) {
6786      let _t;
6787      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.rowDetail = _t.first);
6788      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.groupHeader = _t.first);
6789      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.footer = _t.first);
6790      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.columnTemplates = _t);
6791    }
6792  },
6793  viewQuery: function DatatableComponent_Query(rf, ctx) {
6794    if (rf & 1) {
6795      \u0275\u0275viewQuery(DataTableBodyComponent, 5);
6796      \u0275\u0275viewQuery(DataTableHeaderComponent, 5);
6797    }
6798    if (rf & 2) {
6799      let _t;
6800      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.bodyComponent = _t.first);
6801      \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.headerComponent = _t.first);
6802    }
6803  },
6804  hostAttrs: [1, "ngx-datatable"],
6805  hostVars: 22,
6806  hostBindings: function DatatableComponent_HostBindings(rf, ctx) {
6807    if (rf & 1) {
6808      \u0275\u0275listener("resize", function DatatableComponent_resize_HostBindingHandler() {
6809        return ctx.onWindowResize();
6810      }, false, \u0275\u0275resolveWindow);
6811    }
6812    if (rf & 2) {
6813      \u0275\u0275classProp("fixed-header", ctx.isFixedHeader)("fixed-row", ctx.isFixedRow)("scroll-vertical", ctx.isVertScroll)("virtualized", ctx.isVirtualized)("scroll-horz", ctx.isHorScroll)("selectable", ctx.isSelectable)("checkbox-selection", ctx.isCheckboxSelection)("cell-selection", ctx.isCellSelection)("single-selection", ctx.isSingleSelection)("multi-selection", ctx.isMultiSelection)("multi-click-selection", ctx.isMultiClickSelection);
6814    }
6815  },
6816  inputs: {
6817    targetMarkerTemplate: "targetMarkerTemplate",
6818    rows: "rows",
6819    groupRowsBy: "groupRowsBy",
6820    groupedRows: "groupedRows",
6821    columns: "columns",
6822    selected: "selected",
6823    scrollbarV: "scrollbarV",
6824    scrollbarH: "scrollbarH",
6825    rowHeight: "rowHeight",
6826    columnMode: "columnMode",
6827    headerHeight: "headerHeight",
6828    footerHeight: "footerHeight",
6829    externalPaging: "externalPaging",
6830    externalSorting: "externalSorting",
6831    limit: "limit",
6832    count: "count",
6833    offset: "offset",
6834    loadingIndicator: "loadingIndicator",
6835    selectionType: "selectionType",
6836    reorderable: "reorderable",
6837    swapColumns: "swapColumns",
6838    sortType: "sortType",
6839    sorts: "sorts",
6840    cssClasses: "cssClasses",
6841    messages: "messages",
6842    rowClass: "rowClass",
6843    selectCheck: "selectCheck",
6844    displayCheck: "displayCheck",
6845    groupExpansionDefault: "groupExpansionDefault",
6846    trackByProp: "trackByProp",
6847    selectAllRowsOnPage: "selectAllRowsOnPage",
6848    virtualization: "virtualization",
6849    treeFromRelation: "treeFromRelation",
6850    treeToRelation: "treeToRelation",
6851    summaryRow: "summaryRow",
6852    summaryHeight: "summaryHeight",
6853    summaryPosition: "summaryPosition",
6854    rowIdentity: "rowIdentity"
6855  },
6856  outputs: {
6857    scroll: "scroll",
6858    activate: "activate",
6859    select: "select",
6860    sort: "sort",
6861    page: "page",
6862    reorder: "reorder",
6863    resize: "resize",
6864    tableContextmenu: "tableContextmenu",
6865    treeAction: "treeAction"
6866  },
6867  decls: 5,
6868  vars: 34,
6869  consts: [["role", "table", "visibilityObserver", "", 3, "visible"], ["role", "rowgroup", 3, "sorts", "sortType", "scrollbarH", "innerWidth", "offsetX", "dealsWithGroup", "columns", "headerHeight", "reorderable", "targetMarkerTemplate", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected", "selectionType", "sort", "resize", "reorder", "select", "columnContextmenu", 4, "ngIf"], ["role", "rowgroup", 3, "page", "activate", "rowContextmenu", "select", "scroll", "treeAction", "groupRowsBy", "groupedRows", "rows", "groupExpansionDefault", "scrollbarV", "scrollbarH", "virtualization", "loadingIndicator", "externalPaging", "rowHeight", "rowCount", "offset", "trackByProp", "columns", "pageSize", "offsetX", "rowDetail", "groupHeader", "selected", "innerWidth", "bodyHeight", "selectionType", "emptyMessage", "rowIdentity", "rowClass", "selectCheck", "displayCheck", "summaryRow", "summaryHeight", "summaryPosition"], [3, "rowCount", "pageSize", "offset", "footerHeight", "footerTemplate", "totalMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "selectedCount", "selectedMessage", "pagerNextIcon", "page", 4, "ngIf"], ["role", "rowgroup", 3, "sort", "resize", "reorder", "select", "columnContextmenu", "sorts", "sortType", "scrollbarH", "innerWidth", "offsetX", "dealsWithGroup", "columns", "headerHeight", "reorderable", "targetMarkerTemplate", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected", "selectionType"], [3, "page", "rowCount", "pageSize", "offset", "footerHeight", "footerTemplate", "totalMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "selectedCount", "selectedMessage", "pagerNextIcon"]],
6870  template: function DatatableComponent_Template(rf, ctx) {
6871    if (rf & 1) {
6872      \u0275\u0275elementStart(0, "div", 0);
6873      \u0275\u0275listener("visible", function DatatableComponent_Template_div_visible_0_listener() {
6874        return ctx.recalculate();
6875      });
6876      \u0275\u0275template(1, DatatableComponent_datatable_header_1_Template, 2, 17, "datatable-header", 1);
6877      \u0275\u0275elementStart(2, "datatable-body", 2);
6878      \u0275\u0275pipe(3, "async");
6879      \u0275\u0275listener("page", function DatatableComponent_Template_datatable_body_page_2_listener($event) {
6880        return ctx.onBodyPage($event);
6881      })("activate", function DatatableComponent_Template_datatable_body_activate_2_listener($event) {
6882        return ctx.activate.emit($event);
6883      })("rowContextmenu", function DatatableComponent_Template_datatable_body_rowContextmenu_2_listener($event) {
6884        return ctx.onRowContextmenu($event);
6885      })("select", function DatatableComponent_Template_datatable_body_select_2_listener($event) {
6886        return ctx.onBodySelect($event);
6887      })("scroll", function DatatableComponent_Template_datatable_body_scroll_2_listener($event) {
6888        return ctx.onBodyScroll($event);
6889      })("treeAction", function DatatableComponent_Template_datatable_body_treeAction_2_listener($event) {
6890        return ctx.onTreeAction($event);
6891      });
6892      \u0275\u0275elementEnd();
6893      \u0275\u0275template(4, DatatableComponent_datatable_footer_4_Template, 1, 12, "datatable-footer", 3);
6894      \u0275\u0275elementEnd();
6895    }
6896    if (rf & 2) {
6897      \u0275\u0275advance();
6898      \u0275\u0275property("ngIf", ctx.headerHeight);
6899      \u0275\u0275advance();
6900      \u0275\u0275property("groupRowsBy", ctx.groupRowsBy)("groupedRows", ctx.groupedRows)("rows", ctx._internalRows)("groupExpansionDefault", ctx.groupExpansionDefault)("scrollbarV", ctx.scrollbarV)("scrollbarH", ctx.scrollbarH)("virtualization", ctx.virtualization)("loadingIndicator", ctx.loadingIndicator)("externalPaging", ctx.externalPaging)("rowHeight", ctx.rowHeight)("rowCount", ctx.rowCount)("offset", ctx.offset)("trackByProp", ctx.trackByProp)("columns", ctx._internalColumns)("pageSize", ctx.pageSize)("offsetX", \u0275\u0275pipeBind1(3, 32, ctx._offsetX))("rowDetail", ctx.rowDetail)("groupHeader", ctx.groupHeader)("selected", ctx.selected)("innerWidth", ctx._innerWidth)("bodyHeight", ctx.bodyHeight)("selectionType", ctx.selectionType)("emptyMessage", ctx.messages.emptyMessage)("rowIdentity", ctx.rowIdentity)("rowClass", ctx.rowClass)("selectCheck", ctx.selectCheck)("displayCheck", ctx.displayCheck)("summaryRow", ctx.summaryRow)("summaryHeight", ctx.summaryHeight)("summaryPosition", ctx.summaryPosition);
6901      \u0275\u0275advance(2);
6902      \u0275\u0275property("ngIf", ctx.footerHeight);
6903    }
6904  },
6905  dependencies: [DataTableHeaderComponent, DataTableBodyComponent, DataTableFooterComponent, VisibilityDirective, NgIf, AsyncPipe],
6906  styles: [".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\n"],
6907  encapsulation: 2,
6908  changeDetection: 0
6909});
6910__decorate([throttleable(5)], DatatableComponent.prototype, "onWindowResize", null);
6911(() => {
6912  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableComponent, [{
6913    type: Component,
6914    args: [{
6915      selector: "ngx-datatable",
6916      changeDetection: ChangeDetectionStrategy.OnPush,
6917      encapsulation: ViewEncapsulation$1.None,
6918      host: {
6919        class: "ngx-datatable"
6920      },
6921      template: '<div role="table" visibilityObserver (visible)="recalculate()">\n  <datatable-header\n    role="rowgroup"\n    *ngIf="headerHeight"\n    [sorts]="sorts"\n    [sortType]="sortType"\n    [scrollbarH]="scrollbarH"\n    [innerWidth]="_innerWidth"\n    [offsetX]="_offsetX | async"\n    [dealsWithGroup]="groupedRows !== undefined"\n    [columns]="_internalColumns"\n    [headerHeight]="headerHeight"\n    [reorderable]="reorderable"\n    [targetMarkerTemplate]="targetMarkerTemplate"\n    [sortAscendingIcon]="cssClasses.sortAscending"\n    [sortDescendingIcon]="cssClasses.sortDescending"\n    [sortUnsetIcon]="cssClasses.sortUnset"\n    [allRowsSelected]="allRowsSelected"\n    [selectionType]="selectionType"\n    (sort)="onColumnSort($event)"\n    (resize)="onColumnResize($event)"\n    (reorder)="onColumnReorder($event)"\n    (select)="onHeaderSelect($event)"\n    (columnContextmenu)="onColumnContextmenu($event)"\n  >\n  </datatable-header>\n  <datatable-body\n    role="rowgroup"\n    [groupRowsBy]="groupRowsBy"\n    [groupedRows]="groupedRows"\n    [rows]="_internalRows"\n    [groupExpansionDefault]="groupExpansionDefault"\n    [scrollbarV]="scrollbarV"\n    [scrollbarH]="scrollbarH"\n    [virtualization]="virtualization"\n    [loadingIndicator]="loadingIndicator"\n    [externalPaging]="externalPaging"\n    [rowHeight]="rowHeight"\n    [rowCount]="rowCount"\n    [offset]="offset"\n    [trackByProp]="trackByProp"\n    [columns]="_internalColumns"\n    [pageSize]="pageSize"\n    [offsetX]="_offsetX | async"\n    [rowDetail]="rowDetail"\n    [groupHeader]="groupHeader"\n    [selected]="selected"\n    [innerWidth]="_innerWidth"\n    [bodyHeight]="bodyHeight"\n    [selectionType]="selectionType"\n    [emptyMessage]="messages.emptyMessage"\n    [rowIdentity]="rowIdentity"\n    [rowClass]="rowClass"\n    [selectCheck]="selectCheck"\n    [displayCheck]="displayCheck"\n    [summaryRow]="summaryRow"\n    [summaryHeight]="summaryHeight"\n    [summaryPosition]="summaryPosition"\n    (page)="onBodyPage($event)"\n    (activate)="activate.emit($event)"\n    (rowContextmenu)="onRowContextmenu($event)"\n    (select)="onBodySelect($event)"\n    (scroll)="onBodyScroll($event)"\n    (treeAction)="onTreeAction($event)"\n  >\n  </datatable-body>\n  <datatable-footer\n    *ngIf="footerHeight"\n    [rowCount]="rowCount"\n    [pageSize]="pageSize"\n    [offset]="offset"\n    [footerHeight]="footerHeight"\n    [footerTemplate]="footer"\n    [totalMessage]="messages.totalMessage"\n    [pagerLeftArrowIcon]="cssClasses.pagerLeftArrow"\n    [pagerRightArrowIcon]="cssClasses.pagerRightArrow"\n    [pagerPreviousIcon]="cssClasses.pagerPrevious"\n    [selectedCount]="selected.length"\n    [selectedMessage]="!!selectionType && messages.selectedMessage"\n    [pagerNextIcon]="cssClasses.pagerNext"\n    (page)="onFooterPage($event)"\n  >\n  </datatable-footer>\n</div>\n',
6922      styles: [".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\n"]
6923    }]
6924  }], function() {
6925    return [{
6926      type: ScrollbarHelper,
6927      decorators: [{
6928        type: SkipSelf
6929      }]
6930    }, {
6931      type: DimensionsHelper,
6932      decorators: [{
6933        type: SkipSelf
6934      }]
6935    }, {
6936      type: ChangeDetectorRef
6937    }, {
6938      type: ElementRef
6939    }, {
6940      type: KeyValueDiffers
6941    }, {
6942      type: ColumnChangesService
6943    }, {
6944      type: void 0,
6945      decorators: [{
6946        type: Optional
6947      }, {
6948        type: Inject,
6949        args: ["configuration"]
6950      }]
6951    }];
6952  }, {
6953    targetMarkerTemplate: [{
6954      type: Input
6955    }],
6956    rows: [{
6957      type: Input
6958    }],
6959    groupRowsBy: [{
6960      type: Input
6961    }],
6962    groupedRows: [{
6963      type: Input
6964    }],
6965    columns: [{
6966      type: Input
6967    }],
6968    selected: [{
6969      type: Input
6970    }],
6971    scrollbarV: [{
6972      type: Input
6973    }],
6974    scrollbarH: [{
6975      type: Input
6976    }],
6977    rowHeight: [{
6978      type: Input
6979    }],
6980    columnMode: [{
6981      type: Input
6982    }],
6983    headerHeight: [{
6984      type: Input
6985    }],
6986    footerHeight: [{
6987      type: Input
6988    }],
6989    externalPaging: [{
6990      type: Input
6991    }],
6992    externalSorting: [{
6993      type: Input
6994    }],
6995    limit: [{
6996      type: Input
6997    }],
6998    count: [{
6999      type: Input
7000    }],
7001    offset: [{
7002      type: Input
7003    }],
7004    loadingIndicator: [{
7005      type: Input
7006    }],
7007    selectionType: [{
7008      type: Input
7009    }],
7010    reorderable: [{
7011      type: Input
7012    }],
7013    swapColumns: [{
7014      type: Input
7015    }],
7016    sortType: [{
7017      type: Input
7018    }],
7019    sorts: [{
7020      type: Input
7021    }],
7022    cssClasses: [{
7023      type: Input
7024    }],
7025    messages: [{
7026      type: Input
7027    }],
7028    rowClass: [{
7029      type: Input
7030    }],
7031    selectCheck: [{
7032      type: Input
7033    }],
7034    displayCheck: [{
7035      type: Input
7036    }],
7037    groupExpansionDefault: [{
7038      type: Input
7039    }],
7040    trackByProp: [{
7041      type: Input
7042    }],
7043    selectAllRowsOnPage: [{
7044      type: Input
7045    }],
7046    virtualization: [{
7047      type: Input
7048    }],
7049    treeFromRelation: [{
7050      type: Input
7051    }],
7052    treeToRelation: [{
7053      type: Input
7054    }],
7055    summaryRow: [{
7056      type: Input
7057    }],
7058    summaryHeight: [{
7059      type: Input
7060    }],
7061    summaryPosition: [{
7062      type: Input
7063    }],
7064    scroll: [{
7065      type: Output
7066    }],
7067    activate: [{
7068      type: Output
7069    }],
7070    select: [{
7071      type: Output
7072    }],
7073    sort: [{
7074      type: Output
7075    }],
7076    page: [{
7077      type: Output
7078    }],
7079    reorder: [{
7080      type: Output
7081    }],
7082    resize: [{
7083      type: Output
7084    }],
7085    tableContextmenu: [{
7086      type: Output
7087    }],
7088    treeAction: [{
7089      type: Output
7090    }],
7091    isFixedHeader: [{
7092      type: HostBinding,
7093      args: ["class.fixed-header"]
7094    }],
7095    isFixedRow: [{
7096      type: HostBinding,
7097      args: ["class.fixed-row"]
7098    }],
7099    isVertScroll: [{
7100      type: HostBinding,
7101      args: ["class.scroll-vertical"]
7102    }],
7103    isVirtualized: [{
7104      type: HostBinding,
7105      args: ["class.virtualized"]
7106    }],
7107    isHorScroll: [{
7108      type: HostBinding,
7109      args: ["class.scroll-horz"]
7110    }],
7111    isSelectable: [{
7112      type: HostBinding,
7113      args: ["class.selectable"]
7114    }],
7115    isCheckboxSelection: [{
7116      type: HostBinding,
7117      args: ["class.checkbox-selection"]
7118    }],
7119    isCellSelection: [{
7120      type: HostBinding,
7121      args: ["class.cell-selection"]
7122    }],
7123    isSingleSelection: [{
7124      type: HostBinding,
7125      args: ["class.single-selection"]
7126    }],
7127    isMultiSelection: [{
7128      type: HostBinding,
7129      args: ["class.multi-selection"]
7130    }],
7131    isMultiClickSelection: [{
7132      type: HostBinding,
7133      args: ["class.multi-click-selection"]
7134    }],
7135    columnTemplates: [{
7136      type: ContentChildren,
7137      args: [DataTableColumnDirective]
7138    }],
7139    rowDetail: [{
7140      type: ContentChild,
7141      args: [DatatableRowDetailDirective]
7142    }],
7143    groupHeader: [{
7144      type: ContentChild,
7145      args: [DatatableGroupHeaderDirective]
7146    }],
7147    footer: [{
7148      type: ContentChild,
7149      args: [DatatableFooterDirective]
7150    }],
7151    bodyComponent: [{
7152      type: ViewChild,
7153      args: [DataTableBodyComponent]
7154    }],
7155    headerComponent: [{
7156      type: ViewChild,
7157      args: [DataTableHeaderComponent]
7158    }],
7159    rowIdentity: [{
7160      type: Input
7161    }],
7162    onWindowResize: [{
7163      type: HostListener,
7164      args: ["window:resize"]
7165    }]
7166  });
7167})();
7168var NgxDatatableModule = class _NgxDatatableModule {
7169  /**
7170   * Configure global configuration via INgxDatatableConfig
7171   * @param configuration
7172   */
7173  static forRoot(configuration) {
7174    return {
7175      ngModule: _NgxDatatableModule,
7176      providers: [{
7177        provide: "configuration",
7178        useValue: configuration
7179      }]
7180    };
7181  }
7182};
7183NgxDatatableModule.\u0275fac = function NgxDatatableModule_Factory(__ngFactoryType__) {
7184  return new (__ngFactoryType__ || NgxDatatableModule)();
7185};
7186NgxDatatableModule.\u0275mod = /* @__PURE__ */ \u0275\u0275defineNgModule({
7187  type: NgxDatatableModule
7188});
7189NgxDatatableModule.\u0275inj = /* @__PURE__ */ \u0275\u0275defineInjector({
7190  providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],
7191  imports: [[CommonModule]]
7192});
7193(() => {
7194  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgxDatatableModule, [{
7195    type: NgModule,
7196    args: [{
7197      imports: [CommonModule],
7198      providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],
7199      declarations: [DataTableFooterTemplateDirective, VisibilityDirective, DraggableDirective, ResizeableDirective, OrderableDirective, LongPressDirective, ScrollerComponent, DatatableComponent, DataTableColumnDirective, DataTableHeaderComponent, DataTableHeaderCellComponent, DataTableBodyComponent, DataTableFooterComponent, DataTablePagerComponent, ProgressBarComponent, DataTableBodyRowComponent, DataTableRowWrapperComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableBodyCellComponent, DataTableSelectionComponent, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DatatableFooterDirective, DatatableGroupHeaderTemplateDirective, DataTableSummaryRowComponent],
7200      exports: [DatatableComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableColumnDirective, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DataTableFooterTemplateDirective, DatatableFooterDirective, DataTablePagerComponent, DatatableGroupHeaderTemplateDirective]
7201    }]
7202  }], null, null);
7203})();
7204var ClickType;
7205(function(ClickType2) {
7206  ClickType2["single"] = "single";
7207  ClickType2["double"] = "double";
7208})(ClickType || (ClickType = {}));
7209if (typeof document !== "undefined" && !document.elementsFromPoint) {
7210  document.elementsFromPoint = elementsFromPoint;
7211}
7212function elementsFromPoint(x, y) {
7213  const elements = [];
7214  const previousPointerEvents = [];
7215  let current;
7216  let i;
7217  let d;
7218  while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) {
7219    elements.push(current);
7220    previousPointerEvents.push({
7221      value: current.style.getPropertyValue("pointer-events"),
7222      priority: current.style.getPropertyPriority("pointer-events")
7223    });
7224    current.style.setProperty("pointer-events", "none", "important");
7225  }
7226  for (i = previousPointerEvents.length; d = previousPointerEvents[--i]; ) {
7227    elements[i].style.setProperty("pointer-events", d.value ? d.value : "", d.priority);
7228  }
7229  return elements;
7230}
7231
7232// src/interfaces/table/table.interface.ts
7233var SortDirection2;
7234(function(SortDirection3) {
7235  SortDirection3["ASC"] = "asc";
7236  SortDirection3["DESC"] = "desc";
7237})(SortDirection2 || (SortDirection2 = {}));
7238
7239// src/app/shared/components/table/table.component.ts
7240var _c02 = ["table"];
7241var _c12 = () => ({ emptyMessage: "Sem dados.", totalMessage: "Total", selectedMessage: "Selecionado" });
7242var _c22 = (a0) => ({ "deleted-row": a0 });
7243var _c32 = (a0) => ({ "disabled-increase": a0 });
7244var _c42 = (a0, a1, a2, a3) => ({ "background-color": a0, color: a1, "font-size": a2, "font-weight": a3 });
7245function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_div_4_Template(rf, ctx) {
7246  if (rf & 1) {
7247    \u0275\u0275element(0, "div", 22);
7248    \u0275\u0275pipe(1, "translate");
7249  }
7250  if (rf & 2) {
7251    \u0275\u0275property("matTooltip", \u0275\u0275pipeBind1(1, 1, "OP Opened"));
7252  }
7253}
7254function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_Template(rf, ctx) {
7255  if (rf & 1) {
7256    \u0275\u0275elementContainerStart(0);
7257    \u0275\u0275elementStart(1, "div", 20);
7258    \u0275\u0275text(2);
7259    \u0275\u0275pipe(3, "translate");
7260    \u0275\u0275elementEnd();
7261    \u0275\u0275template(4, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_div_4_Template, 2, 3, "div", 21);
7262    \u0275\u0275elementContainerEnd();
7263  }
7264  if (rf & 2) {
7265    const badge_r2 = \u0275\u0275nextContext().$implicit;
7266    const ctx_r2 = \u0275\u0275nextContext(2);
7267    const value_r4 = ctx_r2.value;
7268    const row_r5 = ctx_r2.row;
7269    const ctx_r5 = \u0275\u0275nextContext(3);
7270    \u0275\u0275advance();
7271    \u0275\u0275classMap(ctx_r5.getBadgeClass(badge_r2, value_r4));
7272    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(7, _c22, row_r5 == null ? null : row_r5.isDeleted));
7273    \u0275\u0275advance();
7274    \u0275\u0275textInterpolate1(" ", \u0275\u0275pipeBind1(3, 5, ctx_r5.getBadgeValue(badge_r2, value_r4)), " ");
7275    \u0275\u0275advance(2);
7276    \u0275\u0275property("ngIf", (row_r5 == null ? null : row_r5.innerFlowStatus == null ? null : row_r5.innerFlowStatus.internalStatus) === "OP_OPENED");
7277  }
7278}
7279function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_Template(rf, ctx) {
7280  if (rf & 1) {
7281    \u0275\u0275elementContainerStart(0);
7282    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_Template, 5, 9, "ng-container", 18);
7283    \u0275\u0275elementContainerEnd();
7284  }
7285  if (rf & 2) {
7286    const badge_r2 = ctx.$implicit;
7287    \u0275\u0275nextContext(2);
7288    const defaultColumn_r7 = \u0275\u0275reference(2);
7289    const column_r8 = \u0275\u0275nextContext(2).$implicit;
7290    \u0275\u0275advance();
7291    \u0275\u0275property("ngIf", column_r8.prop === badge_r2.prop)("ngIfElse", defaultColumn_r7);
7292  }
7293}
7294function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_container_2_Template(rf, ctx) {
7295  if (rf & 1) {
7296    \u0275\u0275elementContainerStart(0);
7297    \u0275\u0275namespaceSVG();
7298    \u0275\u0275elementStart(1, "svg", 24);
7299    \u0275\u0275element(2, "path", 25);
7300    \u0275\u0275elementEnd();
7301    \u0275\u0275elementContainerEnd();
7302  }
7303}
7304function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_template_3_Template(rf, ctx) {
7305  if (rf & 1) {
7306    \u0275\u0275namespaceSVG();
7307    \u0275\u0275elementStart(0, "svg", 24);
7308    \u0275\u0275element(1, "path", 26);
7309    \u0275\u0275elementEnd();
7310  }
7311}
7312function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_Template(rf, ctx) {
7313  if (rf & 1) {
7314    \u0275\u0275elementContainerStart(0);
7315    \u0275\u0275elementStart(1, "div", 23);
7316    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_container_2_Template, 3, 0, "ng-container", 18)(3, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_template_3_Template, 2, 0, "ng-template", null, 3, \u0275\u0275templateRefExtractor);
7317    \u0275\u0275elementEnd();
7318    \u0275\u0275elementContainerEnd();
7319  }
7320  if (rf & 2) {
7321    const iconExpired_r9 = \u0275\u0275reference(4);
7322    const icon_r10 = \u0275\u0275nextContext().$implicit;
7323    const value_r4 = \u0275\u0275nextContext(3).value;
7324    const ctx_r5 = \u0275\u0275nextContext(3);
7325    \u0275\u0275advance(2);
7326    \u0275\u0275property("ngIf", ctx_r5.getIconName(icon_r10, value_r4) === "icon-active")("ngIfElse", iconExpired_r9);
7327  }
7328}
7329function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_Template(rf, ctx) {
7330  if (rf & 1) {
7331    \u0275\u0275elementContainerStart(0);
7332    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_Template, 5, 2, "ng-container", 19);
7333    \u0275\u0275elementContainerEnd();
7334  }
7335  if (rf & 2) {
7336    const icon_r10 = ctx.$implicit;
7337    const column_r8 = \u0275\u0275nextContext(5).$implicit;
7338    \u0275\u0275advance();
7339    \u0275\u0275property("ngIf", column_r8.prop === icon_r10.prop);
7340  }
7341}
7342function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_Template(rf, ctx) {
7343  if (rf & 1) {
7344    \u0275\u0275elementContainerStart(0);
7345    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_Template, 2, 1, "ng-container", 8);
7346    \u0275\u0275elementContainerEnd();
7347  }
7348  if (rf & 2) {
7349    const ctx_r5 = \u0275\u0275nextContext(5);
7350    \u0275\u0275advance();
7351    \u0275\u0275property("ngForOf", ctx_r5.tableIcons);
7352  }
7353}
7354function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_Template(rf, ctx) {
7355  if (rf & 1) {
7356    \u0275\u0275elementContainerStart(0);
7357    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_Template, 2, 2, "ng-container", 8)(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_Template, 2, 1, "ng-container", 19);
7358    \u0275\u0275elementContainerEnd();
7359  }
7360  if (rf & 2) {
7361    const ctx_r5 = \u0275\u0275nextContext(4);
7362    \u0275\u0275advance();
7363    \u0275\u0275property("ngForOf", ctx_r5.tableBadges);
7364    \u0275\u0275advance();
7365    \u0275\u0275property("ngIf", ctx_r5.tableIcons && ctx_r5.tableIcons.length > 0);
7366  }
7367}
7368function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_container_0_Template(rf, ctx) {
7369  if (rf & 1) {
7370    \u0275\u0275elementContainerStart(0);
7371    \u0275\u0275element(1, "span", 27);
7372    \u0275\u0275elementContainerEnd();
7373  }
7374  if (rf & 2) {
7375    const ctx_r2 = \u0275\u0275nextContext(2);
7376    const value_r4 = ctx_r2.value;
7377    const row_r5 = ctx_r2.row;
7378    \u0275\u0275advance();
7379    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(2, _c22, row_r5 == null ? null : row_r5.isDeleted))("innerHTML", value_r4, \u0275\u0275sanitizeHtml);
7380  }
7381}
7382function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_div_2_Template(rf, ctx) {
7383  if (rf & 1) {
7384    \u0275\u0275elementStart(0, "div", 30)(1, "div", 31);
7385    \u0275\u0275namespaceSVG();
7386    \u0275\u0275elementStart(2, "svg", 32);
7387    \u0275\u0275element(3, "path", 33);
7388    \u0275\u0275elementEnd()();
7389    \u0275\u0275namespaceHTML();
7390    \u0275\u0275element(4, "img", 34);
7391    \u0275\u0275elementEnd();
7392  }
7393  if (rf & 2) {
7394    const row_r5 = \u0275\u0275nextContext(3).row;
7395    \u0275\u0275advance(4);
7396    \u0275\u0275property("src", row_r5.image, \u0275\u0275sanitizeUrl);
7397  }
7398}
7399function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template(rf, ctx) {
7400  if (rf & 1) {
7401    const _r11 = \u0275\u0275getCurrentView();
7402    \u0275\u0275elementStart(0, "div", 28);
7403    \u0275\u0275listener("mouseenter", function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template_div_mouseenter_0_listener($event) {
7404      \u0275\u0275restoreView(_r11);
7405      const ctx_r5 = \u0275\u0275nextContext(5);
7406      return \u0275\u0275resetView(ctx_r5.showImageOnMouseEnter($event));
7407    })("mouseleave", function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template_div_mouseleave_0_listener($event) {
7408      \u0275\u0275restoreView(_r11);
7409      const ctx_r5 = \u0275\u0275nextContext(5);
7410      return \u0275\u0275resetView(ctx_r5.removeImageOnMouseLeave($event));
7411    });
7412    \u0275\u0275element(1, "span", 27);
7413    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_div_2_Template, 5, 1, "div", 29);
7414    \u0275\u0275elementEnd();
7415  }
7416  if (rf & 2) {
7417    const ctx_r2 = \u0275\u0275nextContext(2);
7418    const value_r4 = ctx_r2.value;
7419    const row_r5 = ctx_r2.row;
7420    \u0275\u0275advance();
7421    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(3, _c22, row_r5 == null ? null : row_r5.isDeleted))("innerHTML", value_r4, \u0275\u0275sanitizeHtml);
7422    \u0275\u0275advance();
7423    \u0275\u0275property("ngIf", row_r5.image !== "");
7424  }
7425}
7426function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_Template(rf, ctx) {
7427  if (rf & 1) {
7428    \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_container_0_Template, 2, 4, "ng-container", 18)(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template, 3, 5, "ng-template", null, 4, \u0275\u0275templateRefExtractor);
7429  }
7430  if (rf & 2) {
7431    const codeProp_r12 = \u0275\u0275reference(2);
7432    const column_r8 = \u0275\u0275nextContext(3).$implicit;
7433    \u0275\u0275property("ngIf", column_r8.prop !== "code")("ngIfElse", codeProp_r12);
7434  }
7435}
7436function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_Template(rf, ctx) {
7437  if (rf & 1) {
7438    \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_Template, 3, 2, "ng-container", 18)(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_Template, 3, 2, "ng-template", null, 2, \u0275\u0275templateRefExtractor);
7439  }
7440  if (rf & 2) {
7441    const defaultColumn_r7 = \u0275\u0275reference(2);
7442    const ctx_r5 = \u0275\u0275nextContext(3);
7443    \u0275\u0275property("ngIf", ctx_r5.tableBadges && ctx_r5.tableBadges.length > 0)("ngIfElse", defaultColumn_r7);
7444  }
7445}
7446function TableComponent_ng_container_2_ngx_datatable_column_1_Template(rf, ctx) {
7447  if (rf & 1) {
7448    \u0275\u0275elementStart(0, "ngx-datatable-column", 16);
7449    \u0275\u0275pipe(1, "translate");
7450    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_Template, 3, 2, "ng-template", 17);
7451    \u0275\u0275elementEnd();
7452  }
7453  if (rf & 2) {
7454    const ctx_r12 = \u0275\u0275nextContext();
7455    const column_r8 = ctx_r12.$implicit;
7456    const i_r14 = ctx_r12.index;
7457    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 5, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("width", column_r8.width);
7458  }
7459}
7460function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template(rf, ctx) {
7461  if (rf & 1) {
7462    const _r15 = \u0275\u0275getCurrentView();
7463    \u0275\u0275elementStart(0, "div", 36)(1, "div", 37)(2, "span", 38)(3, "button", 39);
7464    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_button_click_3_listener() {
7465      const row_r16 = \u0275\u0275restoreView(_r15).row;
7466      const ctx_r5 = \u0275\u0275nextContext(3);
7467      return \u0275\u0275resetView(ctx_r5.decreaseQuantity(row_r16));
7468    });
7469    \u0275\u0275namespaceSVG();
7470    \u0275\u0275elementStart(4, "svg", 40);
7471    \u0275\u0275element(5, "rect", 41)(6, "path", 42);
7472    \u0275\u0275elementEnd()()();
7473    \u0275\u0275namespaceHTML();
7474    \u0275\u0275elementStart(7, "input", 43, 5);
7475    \u0275\u0275listener("change", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_input_change_7_listener($event) {
7476      const row_r16 = \u0275\u0275restoreView(_r15).row;
7477      const ctx_r5 = \u0275\u0275nextContext(3);
7478      return \u0275\u0275resetView(ctx_r5.changeQuantity(row_r16, $event));
7479    })("keydown", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_input_keydown_7_listener($event) {
7480      \u0275\u0275restoreView(_r15);
7481      const inputText_r17 = \u0275\u0275reference(8);
7482      const ctx_r5 = \u0275\u0275nextContext(3);
7483      return \u0275\u0275resetView(ctx_r5.callCheckLength($event, inputText_r17));
7484    });
7485    \u0275\u0275elementEnd();
7486    \u0275\u0275elementStart(9, "span", 44)(10, "button", 45);
7487    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_button_click_10_listener() {
7488      const row_r16 = \u0275\u0275restoreView(_r15).row;
7489      const ctx_r5 = \u0275\u0275nextContext(3);
7490      return \u0275\u0275resetView(ctx_r5.increaseQuantity(row_r16));
7491    });
7492    \u0275\u0275namespaceSVG();
7493    \u0275\u0275elementStart(11, "svg", 46);
7494    \u0275\u0275element(12, "rect", 41)(13, "path", 47);
7495    \u0275\u0275elementEnd()()()()();
7496  }
7497  if (rf & 2) {
7498    const value_r18 = ctx.value;
7499    const row_r16 = ctx.row;
7500    const ctx_r5 = \u0275\u0275nextContext(3);
7501    \u0275\u0275advance();
7502    \u0275\u0275classMap(ctx_r5.mustDisableQuantityField(row_r16) || (row_r16 == null ? null : row_r16.disabled) ? "disabled" : "");
7503    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(6, _c32, row_r16 == null ? null : row_r16.disabledIncreaseQuantity));
7504    \u0275\u0275advance();
7505    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(8, _c22, row_r16 == null ? null : row_r16.isDeleted));
7506    \u0275\u0275advance(5);
7507    \u0275\u0275property("value", (value_r18 == null ? null : value_r18.quantity) || 0);
7508    \u0275\u0275advance(2);
7509    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(10, _c22, row_r16 == null ? null : row_r16.isDeleted));
7510  }
7511}
7512function TableComponent_ng_container_2_ngx_datatable_column_2_Template(rf, ctx) {
7513  if (rf & 1) {
7514    \u0275\u0275elementStart(0, "ngx-datatable-column", 35);
7515    \u0275\u0275pipe(1, "translate");
7516    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template, 14, 12, "ng-template", 17);
7517    \u0275\u0275elementEnd();
7518  }
7519  if (rf & 2) {
7520    const column_r8 = \u0275\u0275nextContext().$implicit;
7521    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 4, column_r8.name))("prop", column_r8.checkboxValue || "")("sortable", false)("width", column_r8.width);
7522  }
7523}
7524function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_1_Template(rf, ctx) {
7525  if (rf & 1) {
7526    const _r19 = \u0275\u0275getCurrentView();
7527    \u0275\u0275elementStart(0, "button", 53)(1, "mat-icon", 54);
7528    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_1_Template_mat_icon_click_1_listener() {
7529      \u0275\u0275restoreView(_r19);
7530      const action_r20 = \u0275\u0275nextContext(3).$implicit;
7531      const row_r21 = \u0275\u0275nextContext().row;
7532      const ctx_r5 = \u0275\u0275nextContext(3);
7533      return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21));
7534    });
7535    \u0275\u0275text(2);
7536    \u0275\u0275elementEnd()();
7537  }
7538  if (rf & 2) {
7539    const action_r20 = \u0275\u0275nextContext(3).$implicit;
7540    \u0275\u0275classMap(action_r20.value);
7541    \u0275\u0275advance();
7542    \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(4, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight));
7543    \u0275\u0275advance();
7544    \u0275\u0275textInterpolate1(" ", action_r20.icon, " ");
7545  }
7546}
7547function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_2_Template(rf, ctx) {
7548  if (rf & 1) {
7549    const _r22 = \u0275\u0275getCurrentView();
7550    \u0275\u0275elementStart(0, "button", 55)(1, "mat-icon", 54);
7551    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_2_Template_mat_icon_click_1_listener() {
7552      \u0275\u0275restoreView(_r22);
7553      const action_r20 = \u0275\u0275nextContext(3).$implicit;
7554      const row_r21 = \u0275\u0275nextContext().row;
7555      const ctx_r5 = \u0275\u0275nextContext(3);
7556      return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21));
7557    });
7558    \u0275\u0275text(2);
7559    \u0275\u0275elementEnd()();
7560  }
7561  if (rf & 2) {
7562    const action_r20 = \u0275\u0275nextContext(3).$implicit;
7563    \u0275\u0275classMap(action_r20.value);
7564    \u0275\u0275property("matTooltip", action_r20.tooltip);
7565    \u0275\u0275advance();
7566    \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(5, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight));
7567    \u0275\u0275advance();
7568    \u0275\u0275textInterpolate1(" ", action_r20.icon, " ");
7569  }
7570}
7571function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_Template(rf, ctx) {
7572  if (rf & 1) {
7573    \u0275\u0275elementContainerStart(0);
7574    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_1_Template, 3, 9, "button", 51)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_2_Template, 3, 10, "button", 52);
7575    \u0275\u0275elementContainerEnd();
7576  }
7577  if (rf & 2) {
7578    const action_r20 = \u0275\u0275nextContext(2).$implicit;
7579    \u0275\u0275advance();
7580    \u0275\u0275property("ngIf", !action_r20.tooltip);
7581    \u0275\u0275advance();
7582    \u0275\u0275property("ngIf", action_r20.tooltip);
7583  }
7584}
7585function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_1_Template(rf, ctx) {
7586  if (rf & 1) {
7587    const _r23 = \u0275\u0275getCurrentView();
7588    \u0275\u0275elementStart(0, "mat-icon", 54);
7589    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_1_Template_mat_icon_click_0_listener() {
7590      \u0275\u0275restoreView(_r23);
7591      const action_r20 = \u0275\u0275nextContext(4).$implicit;
7592      const row_r21 = \u0275\u0275nextContext().row;
7593      const ctx_r5 = \u0275\u0275nextContext(3);
7594      return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21));
7595    });
7596    \u0275\u0275text(1, " block ");
7597    \u0275\u0275elementEnd();
7598  }
7599  if (rf & 2) {
7600    const action_r20 = \u0275\u0275nextContext(4).$implicit;
7601    \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(1, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight));
7602  }
7603}
7604function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_2_Template(rf, ctx) {
7605  if (rf & 1) {
7606    const _r24 = \u0275\u0275getCurrentView();
7607    \u0275\u0275elementStart(0, "mat-icon", 54);
7608    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_2_Template_mat_icon_click_0_listener() {
7609      \u0275\u0275restoreView(_r24);
7610      const action_r20 = \u0275\u0275nextContext(4).$implicit;
7611      const row_r21 = \u0275\u0275nextContext().row;
7612      const ctx_r5 = \u0275\u0275nextContext(3);
7613      return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21));
7614    });
7615    \u0275\u0275text(1);
7616    \u0275\u0275elementEnd();
7617  }
7618  if (rf & 2) {
7619    const action_r20 = \u0275\u0275nextContext(4).$implicit;
7620    \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(2, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight));
7621    \u0275\u0275advance();
7622    \u0275\u0275textInterpolate1(" ", action_r20.icon, " ");
7623  }
7624}
7625function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_Template(rf, ctx) {
7626  if (rf & 1) {
7627    \u0275\u0275elementStart(0, "button", 53);
7628    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_1_Template, 2, 6, "mat-icon", 58)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_2_Template, 2, 7, "mat-icon", 58);
7629    \u0275\u0275elementEnd();
7630  }
7631  if (rf & 2) {
7632    const row_r21 = \u0275\u0275nextContext(4).row;
7633    \u0275\u0275advance();
7634    \u0275\u0275property("ngIf", !row_r21.hasDatasheet);
7635    \u0275\u0275advance();
7636    \u0275\u0275property("ngIf", row_r21.hasDatasheet);
7637  }
7638}
7639function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_1_Template(rf, ctx) {
7640  if (rf & 1) {
7641    const _r25 = \u0275\u0275getCurrentView();
7642    \u0275\u0275elementStart(0, "mat-icon", 54);
7643    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_1_Template_mat_icon_click_0_listener() {
7644      \u0275\u0275restoreView(_r25);
7645      const action_r20 = \u0275\u0275nextContext(4).$implicit;
7646      const row_r21 = \u0275\u0275nextContext().row;
7647      const ctx_r5 = \u0275\u0275nextContext(3);
7648      return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21));
7649    });
7650    \u0275\u0275text(1, " block ");
7651    \u0275\u0275elementEnd();
7652  }
7653  if (rf & 2) {
7654    const action_r20 = \u0275\u0275nextContext(4).$implicit;
7655    \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(1, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight));
7656  }
7657}
7658function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_2_Template(rf, ctx) {
7659  if (rf & 1) {
7660    const _r26 = \u0275\u0275getCurrentView();
7661    \u0275\u0275elementStart(0, "mat-icon", 54);
7662    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_2_Template_mat_icon_click_0_listener() {
7663      \u0275\u0275restoreView(_r26);
7664      const action_r20 = \u0275\u0275nextContext(4).$implicit;
7665      const row_r21 = \u0275\u0275nextContext().row;
7666      const ctx_r5 = \u0275\u0275nextContext(3);
7667      return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21));
7668    });
7669    \u0275\u0275text(1);
7670    \u0275\u0275elementEnd();
7671  }
7672  if (rf & 2) {
7673    const action_r20 = \u0275\u0275nextContext(4).$implicit;
7674    \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(2, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight));
7675    \u0275\u0275advance();
7676    \u0275\u0275textInterpolate1(" ", action_r20.icon, " ");
7677  }
7678}
7679function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_Template(rf, ctx) {
7680  if (rf & 1) {
7681    \u0275\u0275elementStart(0, "button", 55);
7682    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_1_Template, 2, 6, "mat-icon", 58)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_2_Template, 2, 7, "mat-icon", 58);
7683    \u0275\u0275elementEnd();
7684  }
7685  if (rf & 2) {
7686    const action_r20 = \u0275\u0275nextContext(3).$implicit;
7687    const row_r21 = \u0275\u0275nextContext().row;
7688    \u0275\u0275property("matTooltip", action_r20.tooltip);
7689    \u0275\u0275advance();
7690    \u0275\u0275property("ngIf", !row_r21.hasDatasheet);
7691    \u0275\u0275advance();
7692    \u0275\u0275property("ngIf", row_r21.hasDatasheet);
7693  }
7694}
7695function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_Template(rf, ctx) {
7696  if (rf & 1) {
7697    \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_Template, 3, 2, "button", 56)(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_Template, 3, 3, "button", 57);
7698  }
7699  if (rf & 2) {
7700    const action_r20 = \u0275\u0275nextContext(2).$implicit;
7701    \u0275\u0275property("ngIf", !action_r20.tooltip);
7702    \u0275\u0275advance();
7703    \u0275\u0275property("ngIf", action_r20.tooltip);
7704  }
7705}
7706function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_Template(rf, ctx) {
7707  if (rf & 1) {
7708    \u0275\u0275elementContainerStart(0);
7709    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_Template, 3, 2, "ng-container", 18)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_Template, 2, 2, "ng-template", null, 6, \u0275\u0275templateRefExtractor);
7710    \u0275\u0275elementContainerEnd();
7711  }
7712  if (rf & 2) {
7713    const datasheetIcon_r27 = \u0275\u0275reference(3);
7714    const action_r20 = \u0275\u0275nextContext().$implicit;
7715    \u0275\u0275advance();
7716    \u0275\u0275property("ngIf", action_r20.value !== "download")("ngIfElse", datasheetIcon_r27);
7717  }
7718}
7719function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_2_Template(rf, ctx) {
7720  if (rf & 1) {
7721    const _r28 = \u0275\u0275getCurrentView();
7722    \u0275\u0275elementContainerStart(0);
7723    \u0275\u0275elementStart(1, "button", 59);
7724    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_2_Template_button_click_1_listener() {
7725      \u0275\u0275restoreView(_r28);
7726      const action_r20 = \u0275\u0275nextContext().$implicit;
7727      const row_r21 = \u0275\u0275nextContext().row;
7728      const ctx_r5 = \u0275\u0275nextContext(3);
7729      return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21));
7730    });
7731    \u0275\u0275elementStart(2, "p", 60);
7732    \u0275\u0275text(3);
7733    \u0275\u0275pipe(4, "translate");
7734    \u0275\u0275elementEnd()();
7735    \u0275\u0275elementContainerEnd();
7736  }
7737  if (rf & 2) {
7738    const action_r20 = \u0275\u0275nextContext().$implicit;
7739    \u0275\u0275advance(3);
7740    \u0275\u0275textInterpolate1(" ", \u0275\u0275pipeBind1(4, 1, action_r20.buttonLabel), " ");
7741  }
7742}
7743function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_3_Template(rf, ctx) {
7744  if (rf & 1) {
7745    const _r29 = \u0275\u0275getCurrentView();
7746    \u0275\u0275elementContainerStart(0);
7747    \u0275\u0275elementStart(1, "mat-checkbox", 61);
7748    \u0275\u0275listener("change", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_3_Template_mat_checkbox_change_1_listener($event) {
7749      \u0275\u0275restoreView(_r29);
7750      const action_r20 = \u0275\u0275nextContext().$implicit;
7751      const row_r21 = \u0275\u0275nextContext().row;
7752      const ctx_r5 = \u0275\u0275nextContext(3);
7753      return \u0275\u0275resetView(ctx_r5.onClickCheckboxAction(action_r20.value, row_r21, $event.checked));
7754    });
7755    \u0275\u0275elementEnd();
7756    \u0275\u0275elementContainerEnd();
7757  }
7758  if (rf & 2) {
7759    const row_r21 = \u0275\u0275nextContext(2).row;
7760    const column_r8 = \u0275\u0275nextContext(2).$implicit;
7761    \u0275\u0275advance();
7762    \u0275\u0275property("checked", row_r21[column_r8.checkboxValue] !== 0);
7763  }
7764}
7765function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_Template(rf, ctx) {
7766  if (rf & 1) {
7767    \u0275\u0275elementStart(0, "span", 50);
7768    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_Template, 4, 2, "ng-container", 19)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_2_Template, 5, 3, "ng-container", 19)(3, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_3_Template, 2, 1, "ng-container", 19);
7769    \u0275\u0275elementEnd();
7770  }
7771  if (rf & 2) {
7772    const action_r20 = ctx.$implicit;
7773    const row_r21 = \u0275\u0275nextContext().row;
7774    const column_r8 = \u0275\u0275nextContext(2).$implicit;
7775    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(4, _c22, row_r21 == null ? null : row_r21.isDeleted));
7776    \u0275\u0275advance();
7777    \u0275\u0275property("ngIf", action_r20.icon);
7778    \u0275\u0275advance();
7779    \u0275\u0275property("ngIf", action_r20.buttonLabel);
7780    \u0275\u0275advance();
7781    \u0275\u0275property("ngIf", action_r20.checkbox && column_r8.checkboxValue !== null && column_r8.checkboxValue !== void 0);
7782  }
7783}
7784function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_Template(rf, ctx) {
7785  if (rf & 1) {
7786    \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_Template, 4, 6, "span", 49);
7787  }
7788  if (rf & 2) {
7789    const ctx_r5 = \u0275\u0275nextContext(3);
7790    \u0275\u0275property("ngForOf", ctx_r5.tableActionIcons);
7791  }
7792}
7793function TableComponent_ng_container_2_ngx_datatable_column_3_Template(rf, ctx) {
7794  if (rf & 1) {
7795    \u0275\u0275elementStart(0, "ngx-datatable-column", 48);
7796    \u0275\u0275pipe(1, "translate");
7797    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_Template, 1, 1, "ng-template", 17);
7798    \u0275\u0275elementEnd();
7799  }
7800  if (rf & 2) {
7801    const column_r8 = \u0275\u0275nextContext().$implicit;
7802    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 4, column_r8.name))("prop", column_r8.checkboxValue || "")("sortable", false)("width", column_r8.width);
7803  }
7804}
7805function TableComponent_ng_container_2_ngx_datatable_column_4_ng_template_2_Template(rf, ctx) {
7806  if (rf & 1) {
7807    const _r30 = \u0275\u0275getCurrentView();
7808    \u0275\u0275elementStart(0, "span", 63);
7809    \u0275\u0275elementContainerStart(1);
7810    \u0275\u0275elementStart(2, "button");
7811    \u0275\u0275namespaceSVG();
7812    \u0275\u0275elementStart(3, "svg", 64);
7813    \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_4_ng_template_2_Template_svg_click_3_listener() {
7814      \u0275\u0275restoreView(_r30);
7815      const ctx_r5 = \u0275\u0275nextContext(3);
7816      return \u0275\u0275resetView(ctx_r5.onClickVideo());
7817    });
7818    \u0275\u0275element(4, "path", 65)(5, "path", 66);
7819    \u0275\u0275elementEnd()();
7820    \u0275\u0275elementContainerEnd();
7821    \u0275\u0275elementEnd();
7822  }
7823}
7824function TableComponent_ng_container_2_ngx_datatable_column_4_Template(rf, ctx) {
7825  if (rf & 1) {
7826    \u0275\u0275elementStart(0, "ngx-datatable-column", 62);
7827    \u0275\u0275pipe(1, "translate");
7828    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_4_ng_template_2_Template, 6, 0, "ng-template", 17);
7829    \u0275\u0275elementEnd();
7830  }
7831  if (rf & 2) {
7832    const column_r8 = \u0275\u0275nextContext().$implicit;
7833    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 4, column_r8.name))("prop", column_r8.checkboxValue || "")("sortable", false)("width", column_r8.width);
7834  }
7835}
7836function TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_0_Template(rf, ctx) {
7837  if (rf & 1) {
7838    \u0275\u0275element(0, "span", 70);
7839  }
7840  if (rf & 2) {
7841    const ctx_r30 = \u0275\u0275nextContext();
7842    const value_r32 = ctx_r30.value;
7843    const row_r33 = ctx_r30.row;
7844    \u0275\u0275propertyInterpolate("matTooltip", value_r32);
7845    \u0275\u0275property("innerHTML", value_r32, \u0275\u0275sanitizeHtml)("ngClass", \u0275\u0275pureFunction1(3, _c22, row_r33 == null ? null : row_r33.isDeleted));
7846  }
7847}
7848function TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_1_Template(rf, ctx) {
7849  if (rf & 1) {
7850    \u0275\u0275element(0, "span", 27);
7851  }
7852  if (rf & 2) {
7853    const ctx_r30 = \u0275\u0275nextContext();
7854    const value_r32 = ctx_r30.value;
7855    const row_r33 = ctx_r30.row;
7856    \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(2, _c22, row_r33 == null ? null : row_r33.isDeleted))("innerHTML", value_r32, \u0275\u0275sanitizeHtml);
7857  }
7858}
7859function TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_Template(rf, ctx) {
7860  if (rf & 1) {
7861    \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_0_Template, 1, 5, "span", 68)(1, TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_1_Template, 1, 4, "span", 69);
7862  }
7863  if (rf & 2) {
7864    const value_r32 = ctx.value;
7865    \u0275\u0275property("ngIf", value_r32.length > 45);
7866    \u0275\u0275advance();
7867    \u0275\u0275property("ngIf", value_r32.length <= 45);
7868  }
7869}
7870function TableComponent_ng_container_2_ngx_datatable_column_5_Template(rf, ctx) {
7871  if (rf & 1) {
7872    \u0275\u0275elementStart(0, "ngx-datatable-column", 67);
7873    \u0275\u0275pipe(1, "translate");
7874    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_Template, 2, 2, "ng-template", 17);
7875    \u0275\u0275elementEnd();
7876  }
7877  if (rf & 2) {
7878    const ctx_r12 = \u0275\u0275nextContext();
7879    const column_r8 = ctx_r12.$implicit;
7880    const i_r14 = ctx_r12.index;
7881    const customHeader_r34 = \u0275\u0275reference(10);
7882    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 7, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("sortable", false)("width", column_r8.width)("headerTemplate", customHeader_r34);
7883  }
7884}
7885function TableComponent_ng_container_2_ngx_datatable_column_6_ng_template_2_Template(rf, ctx) {
7886  if (rf & 1) {
7887    \u0275\u0275elementStart(0, "div", 20);
7888    \u0275\u0275text(1);
7889    \u0275\u0275pipe(2, "translate");
7890    \u0275\u0275elementEnd();
7891  }
7892  if (rf & 2) {
7893    const value_r35 = ctx.value;
7894    \u0275\u0275property("ngClass", value_r35 === "INCOME" ? "income custom-badge" : "withdraw custom-badge");
7895    \u0275\u0275advance();
7896    \u0275\u0275textInterpolate1(" ", \u0275\u0275pipeBind1(2, 2, value_r35), " ");
7897  }
7898}
7899function TableComponent_ng_container_2_ngx_datatable_column_6_Template(rf, ctx) {
7900  if (rf & 1) {
7901    \u0275\u0275elementStart(0, "ngx-datatable-column", 71);
7902    \u0275\u0275pipe(1, "translate");
7903    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_6_ng_template_2_Template, 3, 4, "ng-template", 17);
7904    \u0275\u0275elementEnd();
7905  }
7906  if (rf & 2) {
7907    const column_r8 = \u0275\u0275nextContext().$implicit;
7908    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 5, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("sortable", false)("width", column_r8.width);
7909  }
7910}
7911function TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_0_Template(rf, ctx) {
7912  if (rf & 1) {
7913    \u0275\u0275element(0, "span", 75);
7914  }
7915  if (rf & 2) {
7916    const value_r36 = \u0275\u0275nextContext().value;
7917    \u0275\u0275propertyInterpolate("matTooltip", value_r36);
7918    \u0275\u0275property("innerHTML", value_r36, \u0275\u0275sanitizeHtml);
7919  }
7920}
7921function TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_1_Template(rf, ctx) {
7922  if (rf & 1) {
7923    \u0275\u0275element(0, "span", 76);
7924  }
7925  if (rf & 2) {
7926    const value_r36 = \u0275\u0275nextContext().value;
7927    \u0275\u0275property("innerHTML", value_r36, \u0275\u0275sanitizeHtml);
7928  }
7929}
7930function TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_Template(rf, ctx) {
7931  if (rf & 1) {
7932    \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_0_Template, 1, 2, "span", 73)(1, TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_1_Template, 1, 1, "span", 74);
7933  }
7934  if (rf & 2) {
7935    const value_r36 = ctx.value;
7936    \u0275\u0275property("ngIf", value_r36.length > 15);
7937    \u0275\u0275advance();
7938    \u0275\u0275property("ngIf", value_r36.length <= 15);
7939  }
7940}
7941function TableComponent_ng_container_2_ngx_datatable_column_7_Template(rf, ctx) {
7942  if (rf & 1) {
7943    \u0275\u0275elementStart(0, "ngx-datatable-column", 72);
7944    \u0275\u0275pipe(1, "translate");
7945    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_Template, 2, 2, "ng-template", 17);
7946    \u0275\u0275elementEnd();
7947  }
7948  if (rf & 2) {
7949    const ctx_r12 = \u0275\u0275nextContext();
7950    const column_r8 = ctx_r12.$implicit;
7951    const i_r14 = ctx_r12.index;
7952    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 6, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("sortable", false)("width", column_r8.width);
7953  }
7954}
7955function TableComponent_ng_container_2_ngx_datatable_column_8_ng_template_2_Template(rf, ctx) {
7956  if (rf & 1) {
7957    \u0275\u0275element(0, "span", 76);
7958  }
7959  if (rf & 2) {
7960    const value_r37 = ctx.value;
7961    const row_r38 = ctx.row;
7962    \u0275\u0275classProp("financingDocument", row_r38 == null ? null : row_r38.showOtherFinancingMarker);
7963    \u0275\u0275property("innerHTML", value_r37, \u0275\u0275sanitizeHtml);
7964  }
7965}
7966function TableComponent_ng_container_2_ngx_datatable_column_8_Template(rf, ctx) {
7967  if (rf & 1) {
7968    \u0275\u0275elementStart(0, "ngx-datatable-column", 72);
7969    \u0275\u0275pipe(1, "translate");
7970    \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_8_ng_template_2_Template, 1, 3, "ng-template", 17);
7971    \u0275\u0275elementEnd();
7972  }
7973  if (rf & 2) {
7974    const ctx_r12 = \u0275\u0275nextContext();
7975    const column_r8 = ctx_r12.$implicit;
7976    const i_r14 = ctx_r12.index;
7977    \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 6, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("sortable", false)("width", column_r8.width);
7978  }
7979}
7980function TableComponent_ng_container_2_ng_template_9_Template(rf, ctx) {
7981  if (rf & 1) {
7982    const _r39 = \u0275\u0275getCurrentView();
7983    \u0275\u0275elementStart(0, "span", 77);
7984    \u0275\u0275text(1);
7985    \u0275\u0275pipe(2, "translate");
7986    \u0275\u0275elementEnd();
7987    \u0275\u0275elementStart(3, "div", 78);
7988    \u0275\u0275namespaceSVG();
7989    \u0275\u0275elementStart(4, "svg", 79);
7990    \u0275\u0275element(5, "path", 80)(6, "path", 81);
7991    \u0275\u0275elementEnd();
7992    \u0275\u0275namespaceHTML();
7993    \u0275\u0275elementStart(7, "input", 82);
7994    \u0275\u0275pipe(8, "translate");
7995    \u0275\u0275listener("keyup", function TableComponent_ng_container_2_ng_template_9_Template_input_keyup_7_listener($event) {
7996      \u0275\u0275restoreView(_r39);
7997      const ctx_r5 = \u0275\u0275nextContext(2);
7998      return \u0275\u0275resetView(ctx_r5.filterData($event.target.value));
7999    });
8000    \u0275\u0275elementEnd()();
8001  }
8002  if (rf & 2) {
8003    const column_r40 = ctx.column;
8004    \u0275\u0275advance();
8005    \u0275\u0275textInterpolate(\u0275\u0275pipeBind1(2, 2, column_r40.name));
8006    \u0275\u0275advance(6);
8007    \u0275\u0275property("placeholder", \u0275\u0275pipeBind1(8, 4, "Search"));
8008  }
8009}
8010function TableComponent_ng_container_2_Template(rf, ctx) {
8011  if (rf & 1) {
8012    \u0275\u0275elementContainerStart(0);
8013    \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_Template, 3, 7, "ngx-datatable-column", 9)(2, TableComponent_ng_container_2_ngx_datatable_column_2_Template, 3, 6, "ngx-datatable-column", 10)(3, TableComponent_ng_container_2_ngx_datatable_column_3_Template, 3, 6, "ngx-datatable-column", 11)(4, TableComponent_ng_container_2_ngx_datatable_column_4_Template, 3, 6, "ngx-datatable-column", 12)(5, TableComponent_ng_container_2_ngx_datatable_column_5_Template, 3, 9, "ngx-datatable-column", 13)(6, TableComponent_ng_container_2_ngx_datatable_column_6_Template, 3, 7, "ngx-datatable-column", 14)(7, TableComponent_ng_container_2_ngx_datatable_column_7_Template, 3, 8, "ngx-datatable-column", 15)(8, TableComponent_ng_container_2_ngx_datatable_column_8_Template, 3, 8, "ngx-datatable-column", 15)(9, TableComponent_ng_container_2_ng_template_9_Template, 9, 6, "ng-template", null, 1, \u0275\u0275templateRefExtractor);
8014    \u0275\u0275elementContainerEnd();
8015  }
8016  if (rf & 2) {
8017    const column_r8 = ctx.$implicit;
8018    \u0275\u0275advance();
8019    \u0275\u0275property("ngIf", column_r8.prop !== "actions" && column_r8.prop !== "quantity" && column_r8.prop !== "video" && column_r8.prop !== "equipment" && column_r8.prop !== "orderOwner" && column_r8.prop !== "orderTitle" && column_r8.prop !== "invoiceClient" && column_r8.prop !== "operationType" && column_r8.prop !== "ownerParent" && column_r8.prop !== "paymentMethod");
8020    \u0275\u0275advance();
8021    \u0275\u0275property("ngIf", column_r8.prop === "quantity");
8022    \u0275\u0275advance();
8023    \u0275\u0275property("ngIf", column_r8.prop === "actions");
8024    \u0275\u0275advance();
8025    \u0275\u0275property("ngIf", column_r8.prop === "video");
8026    \u0275\u0275advance();
8027    \u0275\u0275property("ngIf", column_r8.prop === "equipment");
8028    \u0275\u0275advance();
8029    \u0275\u0275property("ngIf", column_r8.prop === "operationType");
8030    \u0275\u0275advance();
8031    \u0275\u0275property("ngIf", column_r8.prop === "orderOwner" || column_r8.prop === "orderTitle" || column_r8.prop === "invoiceClient" || column_r8.prop === "ownerParent");
8032    \u0275\u0275advance();
8033    \u0275\u0275property("ngIf", column_r8.prop === "paymentMethod");
8034  }
8035}
8036var TableComponent = class _TableComponent {
8037  constructor() {
8038    this.utils = inject(Utils);
8039    this.inputHelper = inject(InputHelper);
8040    this.store = inject(Store);
8041    this.destroyRef = inject(DestroyRef);
8042    this.isSidebarOpen$ = this.store.select(LayoutMetaState.getIsSidebarOpen);
8043    this.selected = [];
8044    this.selectionType = SelectionType;
8045    this.codeImg = "assets/images/Kit1.png";
8046    this.tableOffset = 0;
8047    this.tableLimit = 10;
8048    this.externalPaging = false;
8049    this.allowHandleQuantityOfMultipleItems = true;
8050    this.tableAction = new EventEmitter();
8051    this.scrollBarHorizontal = window.innerWidth < 1400;
8052    window.onresize = () => {
8053      if (this.enableHorizontalScroll === true) {
8054        this.scrollBarHorizontal = true;
8055      } else {
8056        this.scrollBarHorizontal = window.innerWidth < 1400;
8057      }
8058    };
8059  }
8060  ngOnInit() {
8061    this.currentActions = new BehaviorSubject([]);
8062    if (this.enableHorizontalScroll === true) {
8063      this.scrollBarHorizontal = true;
8064    } else {
8065      this.scrollBarHorizontal = window.innerWidth < 1400;
8066    }
8067    this.isSidebarOpen$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
8068      this.resizeTable();
8069    });
8070  }
8071  onActivate(event) {
8072    if (event?.type === "click" && window.innerWidth < 567) {
8073      const clickedColumnProp = event?.column?.prop;
8074      if (clickedColumnProp !== "actions") {
8075        this.onClickIconAction("visibility", event.row);
8076      }
8077    }
8078  }
8079  ngOnChanges() {
8080    if (this.staticTableData?.length > 0) {
8081      if (this.tableFilters?.length === 0) {
8082        this.clearFilters();
8083      } else {
8084        if (this.tableFilters?.length > 0) {
8085          this.filterTableData(this.tableFilters);
8086        }
8087      }
8088    }
8089  }
8090  showImageOnMouseEnter(event) {
8091    const element = event.target;
8092    element.classList.add("show-img");
8093  }
8094  removeImageOnMouseLeave(event) {
8095    const element = event.target;
8096    element.classList.remove("show-img");
8097  }
8098  /**
8099   * Filter table data based on the filters
8100   * @param filters
8101   */
8102  filterTableData(filters) {
8103    this.tableData = this.tableData.filter((element) => {
8104      return filters.every((filter) => {
8105        return element[filter.columnDef] === filter.value;
8106      });
8107    });
8108  }
8109  filterData(value) {
8110    if (value !== "") {
8111      const valueLowerCase = value.toString().toLowerCase().trim();
8112      this.tableData = this.staticTableData.filter((item) => {
8113        if (item.equipment && item.equipment.toString().toLowerCase().indexOf(valueLowerCase) !== -1 || !value) {
8114          return true;
8115        }
8116      });
8117    } else {
8118      this.tableData = this.staticTableData;
8119    }
8120  }
8121  clearFilters() {
8122    this.tableData = this.staticTableData;
8123  }
8124  displayCheck() {
8125    return true;
8126  }
8127  /**
8128   * Update table action based on the selected rows and the actions
8129   * @param event
8130   */
8131  onSelect(event) {
8132    const data = event.selected;
8133    const currentActionsSnapshot = this.currentActions.getValue();
8134    const foundSelectedAction = currentActionsSnapshot.filter((action) => action === "selected")[0];
8135    const foundSelectedActionIndex = currentActionsSnapshot.indexOf(foundSelectedAction);
8136    if (data && data.length > 0) {
8137      if (!foundSelectedAction) {
8138        currentActionsSnapshot.push("selected");
8139      }
8140    } else {
8141      currentActionsSnapshot.splice(foundSelectedActionIndex, 1);
8142    }
8143    this.currentActions.next(currentActionsSnapshot);
8144    const updatedCurrentActions = this.currentActions.getValue();
8145    const selectedRowsIndexes = event.selected.map((row) => {
8146      return this.tableData.indexOf(row);
8147    });
8148    this.onUpdateTableAction(event.selected, updatedCurrentActions, selectedRowsIndexes);
8149  }
8150  /**
8151   * Set selected rows based on clicked row
8152   *
8153   * @param {string} action
8154   * @param {*} row
8155   * @memberof TableComponent
8156   */
8157  onClickIconAction(action, row) {
8158    this.selected = [row];
8159    const foundIndexOfRow = this.tableData.indexOf(row);
8160    this.onUpdateTableAction(this.selected, [action], [foundIndexOfRow]);
8161  }
8162  onClickVideo() {
8163    console.log("Video");
8164  }
8165  /**
8166   * Update table action based on the selected rows and the actions
8167   *
8168   * @param {any[]} data
8169   * @param {string[]} actions
8170   * @memberof TableComponent
8171   */
8172  onUpdateTableAction(data, actions, rowsIndexes) {
8173    this.tableAction.emit({
8174      actions,
8175      data,
8176      rowsIndexes
8177    });
8178  }
8179  onClickCheckboxAction(action, row, checked) {
8180    this.selected = [row];
8181    const foundIndexOfRow = this.tableData.indexOf(row);
8182    this.onUpdateTableWithCheckboxAction(this.selected, [action], [foundIndexOfRow], checked);
8183  }
8184  onUpdateTableWithCheckboxAction(data, actions, rowsIndexes, checked) {
8185    this.tableAction.emit({
8186      actions,
8187      data,
8188      rowsIndexes,
8189      checked
8190    });
8191  }
8192  /**
8193   * Created expecting to receive pagination information from the table
8194   *
8195   * @param {*} event
8196   * @memberof TableComponent
8197   */
8198  onPaginate(event) {
8199    this.table.recalculate();
8200    this.table.ngDoCheck();
8201    this.tableAction.emit({
8202      actions: ["paginate"],
8203      offset: event.offset + 1,
8204      data: [],
8205      rowsIndexes: []
8206    });
8207  }
8208  onSort(event) {
8209    this.table.recalculate();
8210    this.table.ngDoCheck();
8211    this.tableAction.emit({
8212      actions: ["sort"],
8213      data: [],
8214      rowsIndexes: [],
8215      sortOptions: {
8216        columnDef: event.column.prop,
8217        sortDirection: event.newValue === "asc" ? SortDirection2.ASC : SortDirection2.DESC
8218      }
8219    });
8220  }
8221  getBadgeClass(badge, value) {
8222    const foundValue = badge.values.filter((badgeValue) => badgeValue.value === value)[0];
8223    return foundValue ? foundValue.class : badge?.values[0]?.class || "";
8224  }
8225  getIconName(icon, value) {
8226    const foundValue = icon.values.filter((badgeValue) => badgeValue.value === value)[0];
8227    return foundValue ? foundValue.iconName : icon?.values[0]?.iconName || "";
8228  }
8229  getBadgeValue(badge, value) {
8230    const foundValue = badge.values.filter((badgeValue) => badgeValue.value === value)[0];
8231    if (foundValue) {
8232      return foundValue.parsedValue ? foundValue.parsedValue : foundValue?.value?.toString() || value.toString();
8233    }
8234    return value.toString();
8235  }
8236  increaseQuantity(row) {
8237    row.quantity++;
8238    this.updateAmount(row);
8239    this.tableAction.emit({
8240      actions: ["quantity"],
8241      data: [row],
8242      rowsIndexes: [this.tableData.indexOf(row)]
8243    });
8244  }
8245  decreaseQuantity(row) {
8246    if (row.quantity > 0) {
8247      row.quantity--;
8248      this.updateAmount(row);
8249      this.tableAction.emit({
8250        actions: ["quantity"],
8251        data: [row],
8252        rowsIndexes: [this.tableData.indexOf(row)]
8253      });
8254    } else {
8255      this.updateAmount(row);
8256    }
8257  }
8258  updateAmount(row) {
8259    if (row.amount && row.value) {
8260      if (row.quantity === 0) {
8261        row.amount = this.utils.parseValueToBRLCurrency(0);
8262      } else {
8263        const parsedValue = this.utils.parseBRLCurrencyToValue(row.value);
8264        row.amount = this.utils.parseValueToBRLCurrency(row.quantity * parsedValue);
8265      }
8266    }
8267  }
8268  changeQuantity(row, event) {
8269    row.quantity = Number(event.target.value);
8270    this.updateAmount(row);
8271    this.tableAction.emit({
8272      actions: ["quantity"],
8273      data: [row],
8274      rowsIndexes: [this.tableData.indexOf(row)]
8275    });
8276  }
8277  callCheckLength(e, input) {
8278    if (e.key === "Enter" || e.key === "Tab") {
8279      e.target.blur();
8280    }
8281    this.inputHelper.checkLength(e, input, 99999);
8282  }
8283  mustDisableQuantityField(row) {
8284    const foundItemWithQuantity = this.tableData.filter((item) => item.quantity > 0)[0];
8285    return foundItemWithQuantity && foundItemWithQuantity !== row && !this.allowHandleQuantityOfMultipleItems;
8286  }
8287  resizeTable() {
8288    if (this.table) {
8289      setTimeout(() => {
8290        this.table.recalculate();
8291        this.table.recalculateColumns();
8292      }, 300);
8293    }
8294  }
8295  static {
8296    this.\u0275fac = function TableComponent_Factory(__ngFactoryType__) {
8297      return new (__ngFactoryType__ || _TableComponent)();
8298    };
8299  }
8300  static {
8301    this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _TableComponent, selectors: [["app-table"]], viewQuery: function TableComponent_Query(rf, ctx) {
8302      if (rf & 1) {
8303        \u0275\u0275viewQuery(_c02, 5);
8304      }
8305      if (rf & 2) {
8306        let _t;
8307        \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.table = _t.first);
8308      }
8309    }, inputs: { tableData: "tableData", staticTableData: "staticTableData", tableHeaders: "tableHeaders", tableFilters: "tableFilters", tableOffset: "tableOffset", tableLimit: "tableLimit", tableCount: "tableCount", externalPaging: "externalPaging", tableActionIcons: "tableActionIcons", tableBadges: "tableBadges", tableIcons: "tableIcons", allowHandleQuantityOfMultipleItems: "allowHandleQuantityOfMultipleItems", enableHorizontalScroll: "enableHorizontalScroll" }, outputs: { tableAction: "tableAction" }, standalone: true, features: [\u0275\u0275NgOnChangesFeature, \u0275\u0275StandaloneFeature], decls: 3, vars: 20, consts: [["table", ""], ["customHeader", ""], ["defaultColumn", ""], ["iconExpired", ""], ["codeProp", ""], ["inputText", ""], ["datasheetIcon", ""], [1, "bootstrap", "col-xl-12", "col-12", "col-lg-12", "col-sm-12", "col-md-12", 3, "select", "page", "sort", "activate", "rows", "columnMode", "columns", "dis
8309playCheck", "selectionType", "selectAllRowsOnPage", "headerHeight", "footerHeight", "rowHeight", "loadingIndicator", "selected", "messages", "limit", "offset", "count", "externalPaging", "externalSorting", "scrollbarH"], [4, "ngFor", "ngForOf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "width", 4, "ngIf"], ["prop", "quantity", "class", "actions-col", 3, "name", "prop", "sortable", "width", 4, "ngIf"], ["prop", "actions", "class", "actions-col", 3, "name", "prop", "sortable", "width", 4, "ngIf"], ["prop", "video", "class", "video-col", 3, "name", "prop", "sortable", "width", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width", "headerTemplate", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "sortable", "width", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "width"], ["ngx-datatable-cell-template", ""], [4, "ngIf", "ngIfElse"], [4, "ngIf"], [3, "ngClass"], ["class", "op-opened", 3, "matTooltip", 4, "ngIf"], [1, "op-opened", 3, "matTooltip"], [1, "table-icon"], ["width", "12", "height", "16", "viewBox", "0 0 12 16", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M11.1167 6.05833L6.05833 1L1 6.05833M6.05833 15.1667V1.14167", "stroke", "#4FDB5B", "stroke-width", "1.25", "stroke-miterlimit", "10", "stroke-linecap", "round", "stroke-linejoin", "round"], ["d", "M11.1167 10.
83091087L6.05833 15.167L1 10.1087M6.05833 1.00032V15.0253", "stroke", "#FB273E", "stroke-width", "1.25", "stroke-miterlimit", "10", "stroke-linecap", "round", "stroke-linejoin", "round"], [3, "ngClass", "innerHTML"], [1, "code-prop", 3, "mouseenter", "mouseleave"], ["class", "code-img d-none", 4, "ngIf"], [1, "code-img", "d-none"], [1, "arow"], ["width", "19", "height", "20", "viewBox", "0 0 19 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M17.7121 8.23733C19.1188 8.99147 19.1188 11.0085 17.7121 11.7627L2.94498 19.6795C1.61263 20.3938 -9.80384e-07 19.4286 -9.14303e-07 17.9168L-2.22193e-07 2.08318C-1.56112e-07 0.571435 1.61263 -0.39378 2.94499 0.320508L17.7121 8.23733Z"], ["alt", "", 1, "img-fluid", 3, "src"], ["prop", "quantity", 1, "actions-col", 3, "name", "prop", "sortable", "width"], [1, "qty-box"], [1, "input-group", 3, "ngClass"], [1, "input-group-prepend", "decrease", 3, "ngClass"], ["type", "button", "data-type", "minus", 1, "btn", "quantity-left-minus", 2, "color", "black", 3, "click"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "feather", "feather-minus-square", "font-secondary"], ["width", "20", "height", "20", "rx", "2", "fill", "#E2E5E9"], ["d", "M14.2105 10.5789H5.78947C5.35789 10.5789 5 10.2211 5 9.78947C5 9.35789 5.35789 9 5.78947 9H14.2105C14.6421 9 15 9.35789 15 9.78947C15 10.2211 14.6421 10.5789 14.2105 10.5789Z", "fill", "#647387"], ["type", "text", "name", "quantity", "data-original-title", "", "title", "", 1, "form-control", "input-number", 3, "change", "keydown", "value"], [1, "input-group-prepend", "increase", 3, "ngClass"], ["type", "button", "data-type", "plus", 1, "btn", "quantity-right-plus", 3, "click"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "feather", "feather-plus-square"], ["d", "M14.2105 9.21053H10.7895V5.78947C10.7895 5.35789 10.4316 5 10 5C9.56842 5 9.21053 5.35789 9.21053 5.78947V9.21053H5.78947C5.35789 9.21053 5 9.56842 5 10C5 10.4316 5.35789 10.7895 5.78947 10.7895H9.21053V14.2105C9.21053 14.6421 9.56842 15 10 15C10.4316 15 10.7895 14.6421 10.7895 14.2105V10.7895H14.2105C14.6421 10.7895 15 10.4316 15 10C15 9.56842 14.6421 9.21053 14.2105 9.21053Z", "fill", "#647387"], ["prop", "actions", 1, "actions-col", 3, "name", "prop", "sortable", "width"], ["class", "buttons", 3, "ngClass", 4, "ngFor", "ngForOf"], [1, "buttons", 3, "ngClass"], ["mat-icon-button", "", 3, "class", 4, "ngIf"], ["mat-icon-button", "", 3, "class", "matTooltip", 4, "ngIf"], ["mat-icon-button", ""], [1, "font-primary", 3, "click", "ngStyle"], ["mat-icon-button", "", 3, "matTooltip"], ["mat-icon-button", "", 4, "ngIf"], ["mat-icon-button", "", 3, "matTooltip", 4, "ngIf"], ["class", "font-primary", 3, "ngStyle", "click", 4, "ngIf"], ["mat-flat-button", "", 1, "bg-primary", "rounded", "border-0", "px-6", "me-2", 3, "click"], [1, "text-white", "fw-bold", "my-1"], [3, "change", "checked"], ["prop", "video", 1, "video-col", 3, "name", "prop", "sortable", "width"], [1, "video-button"], ["width", "34", "height", "34", "viewBox", "0 0 34 34", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 3, "click"], ["opacity", "0.4", "d", "M30.1226 17C30.1226 24.272 24.2279 30.1667 16.956 30.1667C9.68401 30.1667 3.78931 24.272 3.78931 17C3.78931 9.72808 9.68401 3.83337 16.956 3.83337C24.2279 3.83337 30.1226 9.72808 30.1226 17Z", "stroke", "#CBCBDC", "stroke-width", "2"], ["d", "M21.2078 14.4938L17.0994 12.128C16.0794 11.533 14.8469 11.533 13.8269 12.128C12.8069 12.723 12.1978 13.7713 12.1978 14.9613V19.7072C12.1978 20.883 12.8069 21.9455 13.8269 22.5405C14.3215 22.8286 14.8837 22.9804 15.4561 22.9804C16.0285 22.9804 16.5906 22.8286 17.0853 22.5405L21.1936 20.1747C22.2136 19.5797 22.8228 18.5313 22.8228 17.3413C22.8511 16.1513 22.2419 15.0888 21.2078 14.4938Z", "fill", "#E05F57"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width", "headerTemplate"], [3, "innerHTML", "ngClass", "matTooltip", 4, "ngIf"], [3, "ngClass", "innerHTML", 4, "ngIf"], [3, "innerHTML", "ngClass", "matTooltip"], [3, "name", "prop", "headerCheckboxable", "sortable", "width"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width"], [3, "innerHTML", "matTooltip", 4, "ngIf"], [3, "innerHTML", 4, "ngIf"], [3, "innerHTML", "matTooltip"], [3, "innerHTML"], [1, "datatable-header-cell-label", "draggable", "me-4"], [1, "search", "d-flex", "align-items-center", "position-relative"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z", "stroke", "#647387", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], ["d", "M17.5 17.5L13.875 13.875", "stroke", "#647387", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], ["id", "search", "type", "text", "aria-label", "Search", "aria-describedby", "basic-addon1", 1, "form-control", 3, "keyup", "placeholder"]], template: function TableComponent_Template(rf, ctx) {
8310      if (rf & 1) {
8311        const _r1 = \u0275\u0275getCurrentView();
8312        \u0275\u0275elementStart(0, "ngx-datatable", 7, 0);
8313        \u0275\u0275listener("select", function TableComponent_Template_ngx_datatable_select_0_listener($event) {
8314          \u0275\u0275restoreView(_r1);
8315          return \u0275\u0275resetView(ctx.onSelect($event));
8316        })("page", function TableComponent_Template_ngx_datatable_page_0_listener($event) {
8317          \u0275\u0275restoreView(_r1);
8318          return \u0275\u0275resetView(ctx.onPaginate($event));
8319        })("sort", function TableComponent_Template_ngx_datatable_sort_0_listener($event) {
8320          \u0275\u0275restoreView(_r1);
8321          return \u0275\u0275resetView(ctx.onSort($event));
8322        })("activate", function TableComponent_Template_ngx_datatable_activate_0_listener($event) {
8323          \u0275\u0275restoreView(_r1);
8324          return \u0275\u0275resetView(ctx.onActivate($event));
8325        });
8326        \u0275\u0275template(2, TableComponent_ng_container_2_Template, 11, 8, "ng-container", 8);
8327        \u0275\u0275elementEnd();
8328      }
8329      if (rf & 2) {
8330        \u0275\u0275property("rows", ctx.tableData)("columnMode", "force")("columns", ctx.tableHeaders)("displayCheck", ctx.displayCheck)("selectionType", ctx.selectionType.checkbox)("selectAllRowsOnPage", false)("headerHeight", 50)("footerHeight", 50)("rowHeight", "auto")("loadingIndicator", true)("selected", ctx.selected)("messages", \u0275\u0275pureFunction0(19, _c12))("limit", ctx.tableLimit)("offset", ctx.tableOffset)("count", ctx.tableCount)("externalPaging", ctx.externalPaging)("externalSorting", ctx.externalPaging)("scrollbarH", ctx.scrollBarHorizontal);
8331        \u0275\u0275advance(2);
8332        \u0275\u0275property("ngForOf", ctx.tableHeaders);
8333      }
8334    }, dependencies: [CommonModule, NgClass, NgForOf, NgIf, NgStyle, NgxDatatableModule, DatatableComponent, DataTableColumnDirective, DataTableColumnCellDirective, MatCheckboxModule, MatCheckbox, MatIconModule, MatIcon, MatButtonModule, MatButton, MatIconButton, MatTooltipModule, MatTooltip, TranslateModule, TranslatePipe], styles: ["\n\n.disabled[_ngcontent-%COMP%], \n.disabled-increase[_ngcontent-%COMP%]   input[_ngcontent-%COMP%], \n.disabled-increase[_ngcontent-%COMP%]   .increase[_ngcontent-%COMP%] {\n  pointer-events: none;\n  opacity: 0.5;\n}\n.datatable-header-cell-label[_ngcontent-%COMP%] {\n  color: #050a1d !important;\n}\n.code-img[_ngcontent-%COMP%] {\n  position: absolute;\n  width: 220px;\n  height: 220px;\n  background-color: #f5f7f9;\n  box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.1);\n  border-radius: 6px;\n  top: 60px;\n  z-index: 10;\n}\n.code-img[_ngcontent-%COMP%]   .arow[_ngcontent-%COMP%] {\n  position: absolute;\n  left: 20px;\n  top: -22px;\n  rotate: 270deg;\n  border-radius: 8px;\n  z-index: -1;\n}\n.code-img[_ngcontent-%COMP%]   .arow[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%]   path[_ngcontent-%COMP%] {\n  fill: #f5f7f9;\n}\n.show-img[_ngcontent-%COMP%]   .code-img[_ngcontent-%COMP%] {\n  display: flex !important;\n  align-items: center;\n  justify-content: center;\n}\n.custom-badge[_ngcontent-%COMP%] {\n  background: #f5f5f5;\n  color: #000;\n  padding: 0.4rem 0.8rem;\n  border-radius: 6px;\n  font-size: 0.8rem !important;\n  font-weight: 500 !important;\n  margin-left: 0.5rem;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.available[_ngcontent-%COMP%] {\n  background-color: transparent;\n  color: #52965f;\n  font-size: 16px;\n  margin-left: 0 !important;\n  padding: 0;\n}\n.unavailable[_ngcontent-%COMP%], \n.to_order[_ngcontent-%COMP%] {\n  background-color: transparent;\n  color: #daa158;\n  font-size: 16px;\n  margin-left: 0 !important;\n  padding: 0;\n}\n.to_order[_ngcontent-%COMP%] {\n  background-color: transparent;\n  color: #daa158;\n  font-size: 16px;\n  margin-left: 0 !important;\n  padding: 0;\n}\n.created[_ngcontent-%COMP%] {\n  background: rgba(218, 161, 88, 0.2) !important;\n  color: #daa158 !important;\n  margin-left: 0;\n}\n.in-approval[_ngcontent-%COMP%] {\n  background: rgba(255, 166, 0, 0.2) !important;\n  color: orange !important;\n  margin-left: 0;\n}\n.in-processing[_ngcontent-%COMP%] {\n  background: rgba(255, 166, 0, 0.2) !important;\n  color: orange !important;\n  margin-left: 0;\n}\n.AWAITING_PAYMENT[_ngcontent-%COMP%] {\n  background: rgba(255, 166, 0, 0.2) !important;\n  color: orange !important;\n  margin-left: 0;\n}\n.PAYMENT_APPROVED[_ngcontent-%COMP%] {\n  background: rgba(0, 255, 42, 0.2) !important;\n  color: #28ab28 !important;\n  margin-left: 0;\n}\n.FINANCING_APPROVED[_ngcontent-%COMP%] {\n  background: rgba(0, 255, 42, 0.2) !important;\n  color: #28ab28 !important;\n  margin-left: 0;\n}\n.in-assemble[_ngcontent-%COMP%] {\n  background: rgba(0, 176, 255, 0.2) !important;\n  color: #3f3fcd !important;\n  margin-left: 0;\n}\n.invoice[_ngcontent-%COMP%] {\n  background: rgba(0, 176, 255, 0.2) !important;\n  color: #3f3fcd !important;\n  margin-left: 0;\n}\n.in-delivery[_ngcontent-%COMP%] {\n  background: rgba(247, 186, 255, 0.2) !important;\n  color: #d16a7c !important;\n  margin-left: 0;\n}\n.delivered[_ngcontent-%COMP%] {\n  background: rgba(0, 255, 42, 0.2) !important;\n  color: #28ab28 !important;\n  margin-left: 0;\n}\n.loss[_ngcontent-%COMP%] {\n  background: rgba(255, 0, 0, 0.2) !important;\n  color: red !important;\n  margin-left: 0;\n}
8334\n.income[_ngcontent-%COMP%] {\n  background: rgba(0, 255, 42, 0.2) !important;\n  color: #28ab28 !important;\n  margin-left: 0;\n}\n.withdraw[_ngcontent-%COMP%] {\n  background: rgba(255, 0, 0, 0.2) !important;\n  color: red !important;\n  margin-left: 0;\n}\n.deleted-row.deleted[_ngcontent-%COMP%] {\n  background-color: transparent;\n  color: #fb273e !important;\n  font-size: 16px;\n  margin-left: 0 !important;\n  padding: 0;\n}\n.deleted-row[_ngcontent-%COMP%] {\n  color: #647387 !important;\n}\n.buttons.deleted-row[_ngcontent-%COMP%]   .delete[_ngcontent-%COMP%] {\n  display: none;\n}\n.buttons[_ngcontent-%COMP%]   .restore[_ngcontent-%COMP%] {\n  display: none;\n}\n.buttons.deleted-row[_ngcontent-%COMP%]   .restore[_ngcontent-%COMP%] {\n  display: block;\n}\n.qty-box[_ngcontent-%COMP%] {\n  width: 108px;\n}\n.qty-box[_ngcontent-%COMP%]   .input-group-prepend[_ngcontent-%COMP%] {\n  padding: 0;\n  margin: 0 5px !important;\n}\n.video-button[_ngcontent-%COMP%]   button[_ngcontent-%COMP%] {\n  background: transparent;\n  border: none;\n}\n.search[_ngcontent-%COMP%]   .form-control[_ngcontent-%COMP%] {\n  border-radius: 6px;\n  border: 1px solid #e4e8f1;\n  transition: all 0.3s ease;\n  padding-left: 45px;\n}\n.search[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%] {\n  position: absolute;\n  margin-top: -4px;\n  left: 15px;\n}\n.form-control[_ngcontent-%COMP%]:focus {\n  box-shadow: none;\n  border-color: #c2c5cc !important;\n}\n  .ngx-datatable {\n  overflow: inherit !important;\n}\n  .datatable-body-cell-label, \n  .code-prop {\n  height: 30px;\n  display: flex;\n  align-items: center;\n}\n  .datatable-body-cell-label .mat-mdc-icon-button, \n  .code-prop .mat-mdc-icon-button {\n  width: 30px;\n  height: 30px;\n  padding: 0;\n  justify-content: center;\n}\n  .datatable-body-cell-label .mat-mdc-icon-button .mat-mdc-button-touch-target, \n  .code-prop .mat-mdc-icon-button .mat-mdc-button-touch-target {\n  height: 36px;\n  width: 36px;\n}\n  .datatable-body-cell-label .buttons {\n  margin: 0 !important;\n}\n  .datatable-body-cell-label .buttons button {\n  display: flex;\n  align-items: center;\n}\n  .datatable-body-cell-label .buttons button .mat-button-wrapper {\n  height: fit-content;\n  width: 100%;\n}\n  .code-prop {\n  cursor: pointer;\n}\n  .datatable-body-cell .datatable-body-cell-label span, \n  .datatable-header-cell .datatable-header-cell-wrapper span {\n  white-space: nowrap;\n}\n  .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a {\n  background-color: #a7b1be !important;\n  border-color: #a7b1be !important;\n}\n  .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a {\n  filter: brightness(0.9);\n  font-weight: 400 !important;\n}\n  .ngx-datatable.bootstrap .datatable-footer .datatable-pager a {\n  display: flex !important;\n  align-items: center;\n  padding: 0px 9px;\n  height: 26px;\n  font-size: 14px;\n  line-height: 16px;\n  min-width: 24px;\n  border-radius: 6px;\n  color: white;\n  background-color: #050a1d;\n  border-color: #050a1d;\n}\n  .ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a {\n  background-color: #a7b1be !important;\n  border-color: #a7b1be !important;\n}\n  .ngx-datatable .datatable-footer .datatable-pager .pager {\n  display: flex !important;\n  justify-content: flex-end;\n  gap: 4px;\n}\n  .ngx-datatable .datatable-footer .datatable-pager .pager li a i {\n  display: flex;\n  align-items: center;\n}\n  .ngx-datatable .datatable-body {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}"] });
8335  }
8336};
8337(() => {
8338  (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(TableComponent, { className: "TableComponent", filePath: "src/app/shared/components/table/table.component.ts", lineNumber: 54 });
8339})();
8340
8341export {
8342  TableComponent
8343};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.