@tetacom/ng-components 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/assets/icons.svg CHANGED
@@ -740,4 +740,7 @@
740
740
  <symbol fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" id="warningFilled">
741
741
  <path fill-rule="evenodd" clip-rule="evenodd" d="M7.13175 2.01949L0.854929 13.0039C0.473983 13.6706 0.95535 14.5001 1.72317 14.5001H14.2768C15.0446 14.5001 15.526 13.6706 15.1451 13.0039L8.86824 2.01949C8.48434 1.34767 7.51564 1.34767 7.13175 2.01949ZM7.99999 9.85695C7.65481 9.85695 7.37499 9.57713 7.37499 9.23195V6.33434C7.37499 5.98916 7.65481 5.70934 7.99999 5.70934C8.34517 5.70934 8.62499 5.98916 8.62499 6.33434L8.62499 9.23195C8.62499 9.57713 8.34517 9.85695 7.99999 9.85695ZM7.99999 12.4558C7.65481 12.4558 7.37499 12.1759 7.37499 11.8308V11.4686C7.37499 11.1234 7.65481 10.8436 7.99999 10.8436C8.34517 10.8436 8.62499 11.1234 8.62499 11.4686V11.8308C8.62499 12.1759 8.34517 12.4558 7.99999 12.4558Z" fill="currentColor" fill-opacity="0.87" />
742
742
  </symbol>
743
+ <symbol fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" id="attach">
744
+ <path d="M6.93752 3.7555L2.87166 7.82137C1.40719 9.28583 1.40719 11.6602 2.87166 13.1247V13.1247C4.33612 14.5891 6.71049 14.5891 8.17496 13.1247L14.0086 7.29104C14.9849 6.31473 14.9849 4.73182 14.0086 3.7555V3.7555C13.0323 2.77919 11.4494 2.77919 10.4731 3.7555L4.99298 9.23558C4.50482 9.72374 4.50482 10.5152 4.99298 11.0033V11.0033C5.48113 11.4915 6.27259 11.4915 6.76074 11.0033L10.4731 7.29104" stroke="currentColor" fill-opacity="0.87" stroke-width="1.25" stroke-linecap="round"/>
745
+ </symbol>
743
746
  </svg>
@@ -37,14 +37,14 @@ export declare class HeadCellComponent<T> implements OnInit, OnDestroy {
37
37
  private observer;
38
38
  constructor(_svc: TableService<T>, _app: ApplicationRef, _elementRef: ElementRef, _cdr: ChangeDetectorRef);
39
39
  dragstart(event: DragEvent): void;
40
- dragenter(event: DragEvent): void;
40
+ dragenter(): void;
41
41
  allowDrop(event: DragEvent): void;
42
42
  dragleave(event: DragEvent): void;
43
- dragend(event: DragEvent): void;
43
+ dragend(): void;
44
44
  drop(event: DragEvent): void;
45
45
  ngOnInit(): void;
46
46
  ngOnDestroy(): void;
47
- resizeStart(event: MouseEvent): void;
47
+ resizeStart(): void;
48
48
  resizeProcess(event: MouseEvent): void;
49
49
  resizeEnd(): void;
50
50
  static ɵfac: i0.ɵɵFactoryDeclaration<HeadCellComponent<any>, never>;
@@ -28,17 +28,19 @@ export class HeadCellComponent {
28
28
  template: this.mainTemplate,
29
29
  order: 10,
30
30
  showTab: () => true,
31
- }, {
31
+ },
32
+ {
32
33
  icon: 'filter',
33
34
  template: this.filterTemplate,
34
35
  order: 20,
35
36
  showTab: (column) => column.filterable,
36
- }, {
37
+ },
38
+ {
37
39
  icon: 'eye',
38
40
  template: this.columnsTemplate,
39
41
  order: 30,
40
42
  showTab: () => true,
41
- }
43
+ },
42
44
  ];
43
45
  }
44
46
  get elementRef() {
@@ -49,8 +51,7 @@ export class HeadCellComponent {
49
51
  if (this.column.headDropdownConfig.strategy === 'replace') {
50
52
  return this.column.headDropdownConfig.tabs;
51
53
  }
52
- return [...this.defaultTemplates, ...this.column.headDropdownConfig.tabs]
53
- .sort((a, b) => a.order - b.order);
54
+ return [...this.defaultTemplates, ...this.column.headDropdownConfig.tabs].sort((a, b) => a.order - b.order);
54
55
  }
55
56
  return this.defaultTemplates;
56
57
  }
@@ -71,21 +72,20 @@ export class HeadCellComponent {
71
72
  }
72
73
  this._svc.dragStart(this.column);
73
74
  }
74
- dragenter(event) {
75
+ dragenter() {
75
76
  this.rect = this._elementRef.nativeElement.getBoundingClientRect();
76
77
  }
77
78
  allowDrop(event) {
78
79
  event.preventDefault();
79
80
  if (this.rect && this._svc.dragSource) {
80
- this.showDrag =
81
- event.clientX >= this.rect.x + this.rect.width / 2 ? 'right' : 'left';
81
+ this.showDrag = event.clientX >= this.rect.x + this.rect.width / 2 ? 'right' : 'left';
82
82
  }
83
83
  }
84
84
  dragleave(event) {
85
85
  event.preventDefault();
86
86
  this.showDrag = null;
87
87
  }
88
- dragend(event) {
88
+ dragend() {
89
89
  this.showDrag = null;
90
90
  }
91
91
  drop(event) {
@@ -103,13 +103,13 @@ export class HeadCellComponent {
103
103
  this.iconName = combineLatest([this.sortParam, this.filtered]).pipe(map((data) => {
104
104
  const [sortParam, filtered] = data;
105
105
  if (sortParam && filtered) {
106
- return sortParam.asc ? 'filterSortUpColor' : 'filterSortDownColor';
106
+ return sortParam.asc ? 'filterSortUp' : 'filterSortDown';
107
107
  }
108
108
  if (sortParam) {
109
- return sortParam.asc ? 'sortUpColor' : 'sortDownColor';
109
+ return sortParam.asc ? 'arrowUp' : 'arrowDown';
110
110
  }
111
111
  if (filtered) {
112
- return 'filterColor';
112
+ return 'filter';
113
113
  }
114
114
  return '';
115
115
  }));
@@ -122,7 +122,7 @@ export class HeadCellComponent {
122
122
  });
123
123
  }, {
124
124
  root: this._svc.getTableElement(this._elementRef.nativeElement),
125
- threshold: [1]
125
+ threshold: [1],
126
126
  });
127
127
  this.observer.observe(this._elementRef.nativeElement);
128
128
  }
@@ -131,7 +131,7 @@ export class HeadCellComponent {
131
131
  this.observer.unobserve(this._elementRef.nativeElement);
132
132
  this.observer.disconnect();
133
133
  }
134
- resizeStart(event) {
134
+ resizeStart() {
135
135
  const rect = this._elementRef.nativeElement.getBoundingClientRect();
136
136
  this._startPosition = rect.x;
137
137
  this._svc.lockPreviousColumns(this.column, this._elementRef.nativeElement);
@@ -149,7 +149,7 @@ export class HeadCellComponent {
149
149
  this._startPosition = null;
150
150
  }
151
151
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: HeadCellComponent, deps: [{ token: i1.TableService }, { token: i0.ApplicationRef }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
152
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: HeadCellComponent, isStandalone: true, selector: "teta-head-cell", inputs: { column: "column", showHeadCellMenu: "showHeadCellMenu", data: "data" }, host: { listeners: { "dragenter": "dragenter($event)", "dragover": "allowDrop($event)", "dragleave": "dragleave($event)", "dragend": "dragend($event)", "drop": "drop($event)" }, properties: { "class.table-head__cell_active": "this.dropDownOpen" } }, viewQueries: [{ propertyName: "mainTemplate", first: true, predicate: ["mainTemplate"], descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }, { propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"], dependencies: [{ kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HeadCellHostComponent, selector: "teta-head-cell-host", inputs: ["column", "columns", "data"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: ["columns", "column", "state", "data", "tabTemplates", "dropDownOpen"], outputs: ["dropDownOpenChange"] }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: ResizeDragDirective, selector: "[tetaResizeDrag]", inputs: ["tetaResizeDrag"], outputs: ["resizeStart", "resizeProcess", "resizeEnd"] }, { kind: "component", type: MainDropdownTabComponent, selector: "teta-main-dropdown-tab", inputs: ["columns", "column", "state", "data", "close", "headCellElementRef"] }, { kind: "component", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: HeadCellComponent, isStandalone: true, selector: "teta-head-cell", inputs: { column: "column", showHeadCellMenu: "showHeadCellMenu", data: "data" }, host: { listeners: { "dragenter": "dragenter($event)", "dragover": "allowDrop($event)", "dragleave": "dragleave($event)", "dragend": "dragend($event)", "drop": "drop($event)" }, properties: { "class.table-head__cell_active": "this.dropDownOpen" } }, viewQueries: [{ propertyName: "mainTemplate", first: true, predicate: ["mainTemplate"], descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }, { propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"row row_auto\">\n <teta-dropdown\n [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\"\n >\n <div\n tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\"\n >\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon [palette]=\"'text'\" [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown\n tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"\n ></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div\n class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div\n class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault(); $event.stopPropagation()\"\n (drag)=\"$event.preventDefault(); $event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart()\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"\n>\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template\n #mainTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-main-dropdown-tab\n [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"\n ></teta-main-dropdown-tab>\n</ng-template>\n<ng-template\n #filterTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-filter-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\" [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template\n #columnsTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-visibility-dropdown-tab\n [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"\n ></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"], dependencies: [{ kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HeadCellHostComponent, selector: "teta-head-cell-host", inputs: ["column", "columns", "data"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: ["columns", "column", "state", "data", "tabTemplates", "dropDownOpen"], outputs: ["dropDownOpenChange"] }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: ResizeDragDirective, selector: "[tetaResizeDrag]", inputs: ["tetaResizeDrag"], outputs: ["resizeStart", "resizeProcess", "resizeEnd"] }, { kind: "component", type: MainDropdownTabComponent, selector: "teta-main-dropdown-tab", inputs: ["columns", "column", "state", "data", "close", "headCellElementRef"] }, { kind: "component", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
153
  }
154
154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: HeadCellComponent, decorators: [{
155
155
  type: Component,
@@ -166,7 +166,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
166
166
  FilterDropdownTabComponent,
167
167
  VisibilityDropdownTabComponent,
168
168
  AsyncPipe,
169
- ], template: "<div class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"] }]
169
+ ], template: "<div class=\"row row_auto\">\n <teta-dropdown\n [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\"\n >\n <div\n tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\"\n >\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon [palette]=\"'text'\" [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown\n tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"\n ></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div\n class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div\n class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault(); $event.stopPropagation()\"\n (drag)=\"$event.preventDefault(); $event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart()\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"\n>\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template\n #mainTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-main-dropdown-tab\n [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"\n ></teta-main-dropdown-tab>\n</ng-template>\n<ng-template\n #filterTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-filter-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\" [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template\n #columnsTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-visibility-dropdown-tab\n [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"\n ></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"] }]
170
170
  }], ctorParameters: () => [{ type: i1.TableService }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { column: [{
171
171
  type: Input
172
172
  }], showHeadCellMenu: [{
@@ -201,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
201
201
  type: HostListener,
202
202
  args: ['drop', ['$event']]
203
203
  }] } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvaGVhZC1jZWxsL2hlYWQtY2VsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL2hlYWQtY2VsbC9oZWFkLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUNULFVBQVUsRUFBRSxXQUFXLEVBQ3ZCLFlBQVksRUFDWixLQUFLLEVBRUcsV0FBVyxFQUFFLFNBQVMsR0FDL0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRWxFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEQsT0FBTyxFQUFDLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUUvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztB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QzFCLDhCQUE4Qjt3QkFDOUIsU0FBUztxQkFDWjt1S0FHTSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFVTixZQUFZO3NCQURYLFdBQVc7dUJBQUMsK0JBQStCO2dCQVFELFlBQVk7c0JBQXRELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDSSxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRyxlQUFlO3NCQUE1RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkF3REwsU0FBUztzQkFBL0MsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSUMsU0FBUztzQkFBOUMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUUcsU0FBUztzQkFBL0MsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBS0EsT0FBTztzQkFBM0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSUQsSUFBSTtzQkFBckMsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlQ29sdW1ufSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHtDb2x1bW5SZXNpemVFdmVudH0gZnJvbSAnLi4vY29udHJhY3QvY29sdW1uLXJlc2l6ZS1ldmVudCc7XG5pbXBvcnQge0ZpbHRlclN0YXRlfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZmlsdGVyLXN0YXRlJztcbmltcG9ydCB7VGFibGVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7U29ydFBhcmFtfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3Qvc29ydC1wYXJhbSc7XG5pbXBvcnQge1N0YXRlVXRpbH0gZnJvbSAnLi4vdXRpbC9zdGF0ZS11dGlsJztcbmltcG9ydCB7VmVydGljYWxBbGlnbn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vdmVydGljYWwtYWxpZ24uZW51bSc7XG5pbXBvcnQge0FsaWdufSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9hbGlnbi5lbnVtJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0hlYWREcm9wZG93blRhYn0gZnJvbSAnLi4vY29udHJhY3QvaGVhZC1kcm9wZG93bi10YWInO1xuaW1wb3J0IHsgVmlzaWJpbGl0eURyb3Bkb3duVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtaGVhZC92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi92aXNpYmlsaXR5LWRyb3Bkb3duLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyRHJvcGRvd25UYWJDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1oZWFkL2ZpbHRlci1kcm9wZG93bi10YWIvZmlsdGVyLWRyb3Bkb3duLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFpbkRyb3Bkb3duVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtaGVhZC9tYWluLWRyb3Bkb3duLXRhYi9tYWluLWRyb3Bkb3duLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVzaXplRHJhZ0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9yZXNpemUtZHJhZy9yZXNpemUtZHJhZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHJvcGRvd25Db250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZHJvcGRvd24vZHJvcGRvd24tY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSGVhZENlbGxEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2hlYWQtY2VsbC1kcm9wZG93bi9oZWFkLWNlbGwtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGVhZENlbGxIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi4vaGVhZC1jZWxsLWhvc3QvaGVhZC1jZWxsLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE5nQ2xhc3MsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEcm9wZG93bkhlYWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kcm9wZG93bi9kcm9wZG93bi1oZWFkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Ryb3Bkb3duL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGV0YS1oZWFkLWNlbGwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oZWFkLWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2hlYWQtY2VsbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEcm9wZG93bkNvbXBvbmVudCxcbiAgICAgICAgRHJvcGRvd25IZWFkRGlyZWN0aXZlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBIZWFkQ2VsbEhvc3RDb21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIEhlYWRDZWxsRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIERyb3Bkb3duQ29udGVudERpcmVjdGl2ZSxcbiAgICAgICAgUmVzaXplRHJhZ0RpcmVjdGl2ZSxcbiAgICAgICAgTWFpbkRyb3Bkb3duVGFiQ29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJEcm9wZG93blRhYkNvbXBvbmVudCxcbiAgICAgICAgVmlzaWJpbGl0eURyb3Bkb3duVGFiQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZENlbGxDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbHVtbjogVGFibGVDb2x1bW47XG4gIEBJbnB1dCgpIHNob3dIZWFkQ2VsbE1lbnU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRhdGE6IFRbXTtcblxuICB2ZXJ0aWNhbEFsaWduID0gVmVydGljYWxBbGlnbjtcbiAgYWxpZ24gPSBBbGlnbjtcbiAgc3RhdGU6IE9ic2VydmFibGU8RmlsdGVyU3RhdGU+O1xuICBjb2x1bW5zOiBPYnNlcnZhYmxlPFRhYmxlQ29sdW1uW10+O1xuICBmaWx0ZXJlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc29ydFBhcmFtOiBPYnNlcnZhYmxlPFNvcnRQYXJhbT47XG4gIGljb25OYW1lOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUtaGVhZF9fY2VsbF9hY3RpdmUnKVxuICBkcm9wRG93bk9wZW4gPSBmYWxzZTtcbiAgc2hvd0RyYWc6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWN0OiBhbnk7XG5cbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuICBwcml2YXRlIF9zdGFydFBvc2l0aW9uOiBudW1iZXI7XG5cbiAgQFZpZXdDaGlsZCgnbWFpblRlbXBsYXRlJywge3N0YXRpYzogdHJ1ZX0pIG1haW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyVGVtcGxhdGUnLCB7c3RhdGljOiB0cnVlfSkgZmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNUZW1wbGF0ZScsIHtzdGF0aWM6IHRydWV9KSBjb2x1bW5zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZ2V0IGRlZmF1bHRUZW1wbGF0ZXMoKTogSGVhZERyb3Bkb3duVGFiW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGljb246ICdtZW51JyxcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMubWFpblRlbXBsYXRlLFxuICAgICAgICBvcmRlcjogMTAsXG4gICAgICAgIHNob3dUYWI6ICgpID0+IHRydWUsXG4gICAgICB9LCB7XG4gICAgICAgIGljb246ICdmaWx0ZXInLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5maWx0ZXJUZW1wbGF0ZSxcbiAgICAgICAgb3JkZXI6IDIwLFxuICAgICAgICBzaG93VGFiOiAoY29sdW1uKSA9PiBjb2x1bW4uZmlsdGVyYWJsZSxcbiAgICAgIH0sIHtcbiAgICAgICAgaWNvbjogJ2V5ZScsXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLmNvbHVtbnNUZW1wbGF0ZSxcbiAgICAgICAgb3JkZXI6IDMwLFxuICAgICAgICBzaG93VGFiOiAoKSA9PiB0cnVlLFxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBnZXQgZWxlbWVudFJlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgfVxuXG4gIGdldCB0YWJUZW1wbGF0ZXMoKSB7XG4gICAgaWYgKHRoaXMuY29sdW1uPy5oZWFkRHJvcGRvd25Db25maWcgJiYgdGhpcy5jb2x1bW4uaGVhZERyb3Bkb3duQ29uZmlnLnRhYnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0aGlzLmNvbHVtbi5oZWFkRHJvcGRvd25Db25maWcuc3RyYXRlZ3kgPT09ICdyZXBsYWNlJykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uaGVhZERyb3Bkb3duQ29uZmlnLnRhYnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLnRoaXMuZGVmYXVsdFRlbXBsYXRlcywgLi4udGhpcy5jb2x1bW4uaGVhZERyb3Bkb3duQ29uZmlnLnRhYnNdXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFRlbXBsYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogVGFibGVTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgX2FwcDogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICB9XG5cbiAgZHJhZ3N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsICdtb3ZlJyk7XG4gICAgfVxuICAgIHRoaXMuX3N2Yy5kcmFnU3RhcnQodGhpcy5jb2x1bW4pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VudGVyJywgWyckZXZlbnQnXSkgZHJhZ2VudGVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnJlY3QgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pIGFsbG93RHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5yZWN0ICYmIHRoaXMuX3N2Yy5kcmFnU291cmNlKSB7XG4gICAgICB0aGlzLnNob3dEcmFnID1cbiAgICAgICAgZXZlbnQuY2xpZW50WCA+PSB0aGlzLnJlY3QueCArIHRoaXMucmVjdC53aWR0aCAvIDIgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pIGRyYWdsZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnNob3dEcmFnID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdlbmQnLCBbJyRldmVudCddKSBkcmFnZW5kKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEcmFnID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKSBkcm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBtb3ZlID0gZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgaWYgKG1vdmUgPT09ICdtb3ZlJykge1xuICAgICAgdGhpcy5fc3ZjLnJlb3JkZXJDb2x1bW4odGhpcy5jb2x1bW4sIHRoaXMuc2hvd0RyYWcgPT09ICdsZWZ0Jyk7XG4gICAgfVxuICAgIHRoaXMuc2hvd0RyYWcgPSBudWxsO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5fc3ZjLmNvbHVtbnM7XG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuX3N2Yy5zdGF0ZTtcbiAgICB0aGlzLnNvcnRQYXJhbSA9IHRoaXMuc3RhdGUucGlwZShcbiAgICAgIG1hcCgoXykgPT4gU3RhdGVVdGlsLmdldFNvcnRTdGF0ZShfLCB0aGlzLmNvbHVtbikpXG4gICAgKTtcbiAgICB0aGlzLmZpbHRlcmVkID0gdGhpcy5zdGF0ZS5waXBlKFxuICAgICAgbWFwKChfKSA9PiBTdGF0ZVV0aWwuaXNDb2x1bW5GaWx0ZXJlZChfLCB0aGlzLmNvbHVtbikpXG4gICAgKTtcbiAgICB0aGlzLmljb25OYW1lID0gY29tYmluZUxhdGVzdChbdGhpcy5zb3J0UGFyYW0sIHRoaXMuZmlsdGVyZWRdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbU29ydFBhcmFtLCBib29sZWFuXSkgPT4ge1xuICAgICAgICBjb25zdCBbc29ydFBhcmFtLCBmaWx0ZXJlZF0gPSBkYXRhO1xuICAgICAgICBpZiAoc29ydFBhcmFtICYmIGZpbHRlcmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHNvcnRQYXJhbS5hc2MgPyAnZmlsdGVyU29ydFVwQ29sb3InIDogJ2ZpbHRlclNvcnREb3duQ29sb3InO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3J0UGFyYW0pIHtcbiAgICAgICAgICByZXR1cm4gc29ydFBhcmFtLmFzYyA/ICdzb3J0VXBDb2xvcicgOiAnc29ydERvd25Db2xvcic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcmVkKSB7XG4gICAgICAgICAgcmV0dXJuICdmaWx0ZXJDb2xvcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgdGhpcy5kcm9wRG93bk9wZW4pIHtcbiAgICAgICAgICB0aGlzLmRyb3BEb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIHtcbiAgICAgIHJvb3Q6IHRoaXMuX3N2Yy5nZXRUYWJsZUVsZW1lbnQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSxcbiAgICAgIHRocmVzaG9sZDogWzFdXG4gICAgfSk7XG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMub2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICByZXNpemVTdGFydChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5fc3RhcnRQb3NpdGlvbiA9IHJlY3QueDtcbiAgICB0aGlzLl9zdmMubG9ja1ByZXZpb3VzQ29sdW1ucyh0aGlzLmNvbHVtbiwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHJlc2l6ZVByb2Nlc3MoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhcnRQb3NpdGlvbiAmJiBldmVudC5wYWdlWCA+IDApIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fc3RhcnRQb3NpdGlvbjtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N2Yy5yZXNpemVDb2x1bW4oXG4gICAgICAgICAgbmV3IENvbHVtblJlc2l6ZUV2ZW50KHRoaXMuY29sdW1uLCBldmVudC5wYWdlWCAtIHBvc2l0aW9uKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9hcHAudGljaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplRW5kKCkge1xuICAgIHRoaXMuX3N0YXJ0UG9zaXRpb24gPSBudWxsO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93IHJvd19hdXRvXCI+XG4gIDx0ZXRhLWRyb3Bkb3duIFthdXRvQ2xvc2VJZ25vcmVdPVwiWydlbnRlcicsICdpbnNpZGUnXVwiXG4gICAgW3ZlcnRpY2FsQWxpZ25dPVwidmVydGljYWxBbGlnbi5hdXRvXCJcbiAgICBbYXBwZW5kVG9Cb2R5XT1cInRydWVcIlxuICAgIFsob3BlbildPVwiZHJvcERvd25PcGVuXCJcbiAgICBbYWxpZ25dPVwiYWxpZ24uYXV0b1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICBbY2xhc3MudGFibGUtaGVhZF9fY2VsbF9fbWVudV9vcGVuXT1cImRyb3BEb3duT3BlblwiXG4gICAgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG8ganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxkaXYgdGV0YURyb3Bkb3duSGVhZFxuICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiXG4gICAgICBjbGFzcz1cInRhYmxlLWhlYWRfX2NlbGxfX3dyYXBwZXJcIlxuICAgICAgKGRyYWdzdGFydCk9XCJkcmFnc3RhcnQoJGV2ZW50KVwiXG4gICAgICBbbmdDbGFzc109XCJjb2x1bW4uaGVhZENlbGxDbGFzc1wiPlxuICAgICAgPHRldGEtaGVhZC1jZWxsLWhvc3QgW2NvbHVtbl09XCJjb2x1bW5cIiBbY29sdW1uc109XCJjb2x1bW5zIHwgYXN5bmNcIiBbZGF0YV09XCJkYXRhXCI+PC90ZXRhLWhlYWQtY2VsbC1ob3N0PlxuICAgICAgQGlmIChpY29uTmFtZSB8IGFzeW5jOyBhcyBpY29uKSB7XG4gICAgICAgIDx0ZXRhLWljb25cbiAgICAgICAgICBbcGFsZXR0ZV09XCIndGV4dCdcIlxuICAgICAgICBbbmFtZV09XCJpY29uXCI+PC90ZXRhLWljb24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChzaG93SGVhZENlbGxNZW51KSB7XG4gICAgICA8dGV0YS1oZWFkLWNlbGwtZHJvcGRvd24gdGV0YURyb3Bkb3duQ29udGVudFxuICAgICAgICBbdGFiVGVtcGxhdGVzXT1cInRhYlRlbXBsYXRlc1wiXG4gICAgICAgIFtkYXRhXT1cImRhdGFcIlxuICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnMgfCBhc3luY1wiXG4gICAgICAgIFtzdGF0ZV09XCJzdGF0ZSB8IGFzeW5jXCJcbiAgICAgIFsoZHJvcERvd25PcGVuKV09XCJkcm9wRG93bk9wZW5cIj48L3RldGEtaGVhZC1jZWxsLWRyb3Bkb3duPlxuICAgIH1cbiAgPC90ZXRhLWRyb3Bkb3duPlxuICBAaWYgKHNob3dEcmFnKSB7XG4gICAgPGRpdiBjbGFzcz1cImRyb3AtYXJlYVwiXG4gICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgICBbY2xhc3MuZHJvcC1hcmVhX2xlZnRdPVwic2hvd0RyYWcgPT09ICdsZWZ0J1wiXG4gICAgICBbY2xhc3MuZHJvcC1hcmVhX3JpZ2h0XT1cInNob3dEcmFnID09PSAncmlnaHQnXCJcbiAgICA+PC9kaXY+XG4gIH1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRfX2NlbGxfX3Jlc2l6ZVwiXG4gIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgKGRyYWdzdGFydCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAoZHJhZyk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICBbdGV0YVJlc2l6ZURyYWddPVwiJ3ZlcnRpY2FsJ1wiXG4gIChyZXNpemVTdGFydCk9XCJyZXNpemVTdGFydCgkZXZlbnQpXCJcbiAgKHJlc2l6ZVByb2Nlc3MpPVwicmVzaXplUHJvY2VzcygkZXZlbnQpXCJcbiAgKHJlc2l6ZUVuZCk9XCJyZXNpemVFbmQoKVwiPlxuICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZF9fY2VsbF9fcmVzaXplX2RyYWdcIj48L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNtYWluVGVtcGxhdGUgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1zdGF0ZT1cInN0YXRlXCJcbiAgbGV0LWNsb3NlPVwiY2xvc2VcIj5cbiAgPHRldGEtbWFpbi1kcm9wZG93bi10YWIgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgW2Nsb3NlXT1cImNsb3NlXCJcbiAgW2hlYWRDZWxsRWxlbWVudFJlZl09XCJlbGVtZW50UmVmXCI+PC90ZXRhLW1haW4tZHJvcGRvd24tdGFiPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZmlsdGVyVGVtcGxhdGUgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1zdGF0ZT1cInN0YXRlXCJcbiAgbGV0LWNsb3NlPVwiY2xvc2VcIj5cbiAgPHRldGEtZmlsdGVyLWRyb3Bkb3duLXRhYiBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICBbY2xvc2VdPVwiY2xvc2VcIlxuICBbZGF0YV09XCJkYXRhXCI+PC90ZXRhLWZpbHRlci1kcm9wZG93bi10YWI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjb2x1bW5zVGVtcGxhdGUgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1zdGF0ZT1cInN0YXRlXCJcbiAgbGV0LWNsb3NlPVwiY2xvc2VcIj5cbiAgPHRldGEtdmlzaWJpbGl0eS1kcm9wZG93bi10YWIgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgW2Nsb3NlXT1cImNsb3NlXCJcbiAgW2RhdGFdPVwiZGF0YVwiPjwvdGV0YS12aXNpYmlsaXR5LWRyb3Bkb3duLXRhYj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvaGVhZC1jZWxsL2hlYWQtY2VsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL2hlYWQtY2VsbC9oZWFkLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRWpELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBQ3pILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FB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QUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFVTixZQUFZO3NCQURYLFdBQVc7dUJBQUMsK0JBQStCO2dCQVFDLFlBQVk7c0JBQXhELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSSxjQUFjO3NCQUE1RCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxlQUFlO3NCQUE5RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF3RFAsU0FBUztzQkFBL0MsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSUMsU0FBUztzQkFBOUMsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBT0csU0FBUztzQkFBL0MsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBS0EsT0FBTztzQkFBM0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSUQsSUFBSTtzQkFBckMsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBDb2x1bW5SZXNpemVFdmVudCB9IGZyb20gJy4uL2NvbnRyYWN0L2NvbHVtbi1yZXNpemUtZXZlbnQnO1xuaW1wb3J0IHsgRmlsdGVyU3RhdGUgfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZmlsdGVyLXN0YXRlJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdGFibGUuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTb3J0UGFyYW0gfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3Qvc29ydC1wYXJhbSc7XG5pbXBvcnQgeyBTdGF0ZVV0aWwgfSBmcm9tICcuLi91dGlsL3N0YXRlLXV0aWwnO1xuaW1wb3J0IHsgVmVydGljYWxBbGlnbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL3ZlcnRpY2FsLWFsaWduLmVudW0nO1xuaW1wb3J0IHsgQWxpZ24gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9hbGlnbi5lbnVtJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEhlYWREcm9wZG93blRhYiB9IGZyb20gJy4uL2NvbnRyYWN0L2hlYWQtZHJvcGRvd24tdGFiJztcbmltcG9ydCB7IFZpc2liaWxpdHlEcm9wZG93blRhYkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYmxlLWhlYWQvdmlzaWJpbGl0eS1kcm9wZG93bi10YWIvdmlzaWJpbGl0eS1kcm9wZG93bi10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbHRlckRyb3Bkb3duVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtaGVhZC9maWx0ZXItZHJvcGRvd24tdGFiL2ZpbHRlci1kcm9wZG93bi10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IE1haW5Ecm9wZG93blRhYkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYmxlLWhlYWQvbWFpbi1kcm9wZG93bi10YWIvbWFpbi1kcm9wZG93bi10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFJlc2l6ZURyYWdEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvcmVzaXplLWRyYWcvcmVzaXplLWRyYWcuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyb3Bkb3duQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEhlYWRDZWxsRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9oZWFkLWNlbGwtZHJvcGRvd24vaGVhZC1jZWxsLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEhlYWRDZWxsSG9zdENvbXBvbmVudCB9IGZyb20gJy4uL2hlYWQtY2VsbC1ob3N0L2hlYWQtY2VsbC1ob3N0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRHJvcGRvd25IZWFkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZHJvcGRvd24vZHJvcGRvd24taGVhZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9kcm9wZG93bi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWhlYWQtY2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkLWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkLWNlbGwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEcm9wZG93bkNvbXBvbmVudCxcbiAgICBEcm9wZG93bkhlYWREaXJlY3RpdmUsXG4gICAgTmdDbGFzcyxcbiAgICBIZWFkQ2VsbEhvc3RDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBIZWFkQ2VsbERyb3Bkb3duQ29tcG9uZW50LFxuICAgIERyb3Bkb3duQ29udGVudERpcmVjdGl2ZSxcbiAgICBSZXNpemVEcmFnRGlyZWN0aXZlLFxuICAgIE1haW5Ecm9wZG93blRhYkNvbXBvbmVudCxcbiAgICBGaWx0ZXJEcm9wZG93blRhYkNvbXBvbmVudCxcbiAgICBWaXNpYmlsaXR5RHJvcGRvd25UYWJDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkQ2VsbENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY29sdW1uOiBUYWJsZUNvbHVtbjtcbiAgQElucHV0KCkgc2hvd0hlYWRDZWxsTWVudTogYm9vbGVhbjtcbiAgQElucHV0KCkgZGF0YTogVFtdO1xuXG4gIHZlcnRpY2FsQWxpZ24gPSBWZXJ0aWNhbEFsaWduO1xuICBhbGlnbiA9IEFsaWduO1xuICBzdGF0ZTogT2JzZXJ2YWJsZTxGaWx0ZXJTdGF0ZT47XG4gIGNvbHVtbnM6IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG4gIGZpbHRlcmVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzb3J0UGFyYW06IE9ic2VydmFibGU8U29ydFBhcmFtPjtcbiAgaWNvbk5hbWU6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWJsZS1oZWFkX19jZWxsX2FjdGl2ZScpXG4gIGRyb3BEb3duT3BlbiA9IGZhbHNlO1xuICBzaG93RHJhZzogJ2xlZnQnIHwgJ3JpZ2h0JyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlY3Q6IGFueTtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX3N0YXJ0UG9zaXRpb246IG51bWJlcjtcblxuICBAVmlld0NoaWxkKCdtYWluVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBtYWluVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlclRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGNvbHVtbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBnZXQgZGVmYXVsdFRlbXBsYXRlcygpOiBIZWFkRHJvcGRvd25UYWJbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgaWNvbjogJ21lbnUnLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5tYWluVGVtcGxhdGUsXG4gICAgICAgIG9yZGVyOiAxMCxcbiAgICAgICAgc2hvd1RhYjogKCkgPT4gdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246ICdmaWx0ZXInLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5maWx0ZXJUZW1wbGF0ZSxcbiAgICAgICAgb3JkZXI6IDIwLFxuICAgICAgICBzaG93VGFiOiAoY29sdW1uKSA9PiBjb2x1bW4uZmlsdGVyYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246ICdleWUnLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5jb2x1bW5zVGVtcGxhdGUsXG4gICAgICAgIG9yZGVyOiAzMCxcbiAgICAgICAgc2hvd1RhYjogKCkgPT4gdHJ1ZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGdldCBlbGVtZW50UmVmKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICB9XG5cbiAgZ2V0IHRhYlRlbXBsYXRlcygpIHtcbiAgICBpZiAodGhpcy5jb2x1bW4/LmhlYWREcm9wZG93bkNvbmZpZyAmJiB0aGlzLmNvbHVtbi5oZWFkRHJvcGRvd25Db25maWcudGFicz8ubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMuY29sdW1uLmhlYWREcm9wZG93bkNvbmZpZy5zdHJhdGVneSA9PT0gJ3JlcGxhY2UnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5oZWFkRHJvcGRvd25Db25maWcudGFicztcbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4udGhpcy5kZWZhdWx0VGVtcGxhdGVzLCAuLi50aGlzLmNvbHVtbi5oZWFkRHJvcGRvd25Db25maWcudGFic10uc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRUZW1wbGF0ZXM7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPixcbiAgICBwcml2YXRlIF9hcHA6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgZHJhZ3N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsICdtb3ZlJyk7XG4gICAgfVxuICAgIHRoaXMuX3N2Yy5kcmFnU3RhcnQodGhpcy5jb2x1bW4pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VudGVyJywgWyckZXZlbnQnXSkgZHJhZ2VudGVyKCk6IHZvaWQge1xuICAgIHRoaXMucmVjdCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSkgYWxsb3dEcm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLnJlY3QgJiYgdGhpcy5fc3ZjLmRyYWdTb3VyY2UpIHtcbiAgICAgIHRoaXMuc2hvd0RyYWcgPSBldmVudC5jbGllbnRYID49IHRoaXMucmVjdC54ICsgdGhpcy5yZWN0LndpZHRoIC8gMiA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSkgZHJhZ2xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc2hvd0RyYWcgPSBudWxsO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VuZCcsIFsnJGV2ZW50J10pIGRyYWdlbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RHJhZyA9IG51bGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSkgZHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgbW92ZSA9IGV2ZW50LmRhdGFUcmFuc2ZlciAmJiBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dCcpO1xuICAgIGlmIChtb3ZlID09PSAnbW92ZScpIHtcbiAgICAgIHRoaXMuX3N2Yy5yZW9yZGVyQ29sdW1uKHRoaXMuY29sdW1uLCB0aGlzLnNob3dEcmFnID09PSAnbGVmdCcpO1xuICAgIH1cbiAgICB0aGlzLnNob3dEcmFnID0gbnVsbDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuX3N2Yy5jb2x1bW5zO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLl9zdmMuc3RhdGU7XG4gICAgdGhpcy5zb3J0UGFyYW0gPSB0aGlzLnN0YXRlLnBpcGUobWFwKChfKSA9PiBTdGF0ZVV0aWwuZ2V0U29ydFN0YXRlKF8sIHRoaXMuY29sdW1uKSkpO1xuICAgIHRoaXMuZmlsdGVyZWQgPSB0aGlzLnN0YXRlLnBpcGUobWFwKChfKSA9PiBTdGF0ZVV0aWwuaXNDb2x1bW5GaWx0ZXJlZChfLCB0aGlzLmNvbHVtbikpKTtcbiAgICB0aGlzLmljb25OYW1lID0gY29tYmluZUxhdGVzdChbdGhpcy5zb3J0UGFyYW0sIHRoaXMuZmlsdGVyZWRdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbU29ydFBhcmFtLCBib29sZWFuXSkgPT4ge1xuICAgICAgICBjb25zdCBbc29ydFBhcmFtLCBmaWx0ZXJlZF0gPSBkYXRhO1xuICAgICAgICBpZiAoc29ydFBhcmFtICYmIGZpbHRlcmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHNvcnRQYXJhbS5hc2MgPyAnZmlsdGVyU29ydFVwJyA6ICdmaWx0ZXJTb3J0RG93bic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvcnRQYXJhbSkge1xuICAgICAgICAgIHJldHVybiBzb3J0UGFyYW0uYXNjID8gJ2Fycm93VXAnIDogJ2Fycm93RG93bic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcmVkKSB7XG4gICAgICAgICAgcmV0dXJuICdmaWx0ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKSA9PiB7XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgICBpZiAoIWVudHJ5LmlzSW50ZXJzZWN0aW5nICYmIHRoaXMuZHJvcERvd25PcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcm9vdDogdGhpcy5fc3ZjLmdldFRhYmxlRWxlbWVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLFxuICAgICAgICB0aHJlc2hvbGQ6IFsxXSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcmVzaXplU3RhcnQoKTogdm9pZCB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLl9zdGFydFBvc2l0aW9uID0gcmVjdC54O1xuICAgIHRoaXMuX3N2Yy5sb2NrUHJldmlvdXNDb2x1bW5zKHRoaXMuY29sdW1uLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcmVzaXplUHJvY2VzcyhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGFydFBvc2l0aW9uICYmIGV2ZW50LnBhZ2VYID4gMCkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9zdGFydFBvc2l0aW9uO1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3ZjLnJlc2l6ZUNvbHVtbihuZXcgQ29sdW1uUmVzaXplRXZlbnQodGhpcy5jb2x1bW4sIGV2ZW50LnBhZ2VYIC0gcG9zaXRpb24pKTtcbiAgICAgICAgdGhpcy5fYXBwLnRpY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2l6ZUVuZCgpIHtcbiAgICB0aGlzLl9zdGFydFBvc2l0aW9uID0gbnVsbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvdyByb3dfYXV0b1wiPlxuICA8dGV0YS1kcm9wZG93blxuICAgIFthdXRvQ2xvc2VJZ25vcmVdPVwiWydlbnRlcicsICdpbnNpZGUnXVwiXG4gICAgW3ZlcnRpY2FsQWxpZ25dPVwidmVydGljYWxBbGlnbi5hdXRvXCJcbiAgICBbYXBwZW5kVG9Cb2R5XT1cInRydWVcIlxuICAgIFsob3BlbildPVwiZHJvcERvd25PcGVuXCJcbiAgICBbYWxpZ25dPVwiYWxpZ24uYXV0b1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICBbY2xhc3MudGFibGUtaGVhZF9fY2VsbF9fbWVudV9vcGVuXT1cImRyb3BEb3duT3BlblwiXG4gICAgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG8ganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gID5cbiAgICA8ZGl2XG4gICAgICB0ZXRhRHJvcGRvd25IZWFkXG4gICAgICBkcmFnZ2FibGU9XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwidGFibGUtaGVhZF9fY2VsbF9fd3JhcHBlclwiXG4gICAgICAoZHJhZ3N0YXJ0KT1cImRyYWdzdGFydCgkZXZlbnQpXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkQ2VsbENsYXNzXCJcbiAgICA+XG4gICAgICA8dGV0YS1oZWFkLWNlbGwtaG9zdCBbY29sdW1uXT1cImNvbHVtblwiIFtjb2x1bW5zXT1cImNvbHVtbnMgfCBhc3luY1wiIFtkYXRhXT1cImRhdGFcIj48L3RldGEtaGVhZC1jZWxsLWhvc3Q+XG4gICAgICBAaWYgKGljb25OYW1lIHwgYXN5bmM7IGFzIGljb24pIHtcbiAgICAgIDx0ZXRhLWljb24gW3BhbGV0dGVdPVwiJ3RleHQnXCIgW25hbWVdPVwiaWNvblwiPjwvdGV0YS1pY29uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoc2hvd0hlYWRDZWxsTWVudSkge1xuICAgIDx0ZXRhLWhlYWQtY2VsbC1kcm9wZG93blxuICAgICAgdGV0YURyb3Bkb3duQ29udGVudFxuICAgICAgW3RhYlRlbXBsYXRlc109XCJ0YWJUZW1wbGF0ZXNcIlxuICAgICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zIHwgYXN5bmNcIlxuICAgICAgW3N0YXRlXT1cInN0YXRlIHwgYXN5bmNcIlxuICAgICAgWyhkcm9wRG93bk9wZW4pXT1cImRyb3BEb3duT3BlblwiXG4gICAgPjwvdGV0YS1oZWFkLWNlbGwtZHJvcGRvd24+XG4gICAgfVxuICA8L3RldGEtZHJvcGRvd24+XG4gIEBpZiAoc2hvd0RyYWcpIHtcbiAgPGRpdlxuICAgIGNsYXNzPVwiZHJvcC1hcmVhXCJcbiAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXG4gICAgW2NsYXNzLmRyb3AtYXJlYV9sZWZ0XT1cInNob3dEcmFnID09PSAnbGVmdCdcIlxuICAgIFtjbGFzcy5kcm9wLWFyZWFfcmlnaHRdPVwic2hvd0RyYWcgPT09ICdyaWdodCdcIlxuICA+PC9kaXY+XG4gIH1cbjwvZGl2PlxuPGRpdlxuICBjbGFzcz1cInRhYmxlLWhlYWRfX2NlbGxfX3Jlc2l6ZVwiXG4gIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgKGRyYWdzdGFydCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgKGRyYWcpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gIFt0ZXRhUmVzaXplRHJhZ109XCIndmVydGljYWwnXCJcbiAgKHJlc2l6ZVN0YXJ0KT1cInJlc2l6ZVN0YXJ0KClcIlxuICAocmVzaXplUHJvY2Vzcyk9XCJyZXNpemVQcm9jZXNzKCRldmVudClcIlxuICAocmVzaXplRW5kKT1cInJlc2l6ZUVuZCgpXCJcbj5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRfX2NlbGxfX3Jlc2l6ZV9kcmFnXCI+PC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZVxuICAjbWFpblRlbXBsYXRlXG4gIGxldC1jb2x1bW49XCJjb2x1bW5cIlxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICBsZXQtZGF0YT1cImRhdGFcIlxuICBsZXQtc3RhdGU9XCJzdGF0ZVwiXG4gIGxldC1jbG9zZT1cImNsb3NlXCJcbj5cbiAgPHRldGEtbWFpbi1kcm9wZG93bi10YWJcbiAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICBbY2xvc2VdPVwiY2xvc2VcIlxuICAgIFtoZWFkQ2VsbEVsZW1lbnRSZWZdPVwiZWxlbWVudFJlZlwiXG4gID48L3RldGEtbWFpbi1kcm9wZG93bi10YWI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICNmaWx0ZXJUZW1wbGF0ZVxuICBsZXQtY29sdW1uPVwiY29sdW1uXCJcbiAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgbGV0LWRhdGE9XCJkYXRhXCJcbiAgbGV0LXN0YXRlPVwic3RhdGVcIlxuICBsZXQtY2xvc2U9XCJjbG9zZVwiXG4+XG4gIDx0ZXRhLWZpbHRlci1kcm9wZG93bi10YWIgW2NvbHVtbl09XCJjb2x1bW5cIiBbc3RhdGVdPVwic3RhdGVcIiBbY2xvc2VdPVwiY2xvc2VcIiBbZGF0YV09XCJkYXRhXCI+PC90ZXRhLWZpbHRlci1kcm9wZG93bi10YWI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICNjb2x1bW5zVGVtcGxhdGVcbiAgbGV0LWNvbHVtbj1cImNvbHVtblwiXG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXG4gIGxldC1kYXRhPVwiZGF0YVwiXG4gIGxldC1zdGF0ZT1cInN0YXRlXCJcbiAgbGV0LWNsb3NlPVwiY2xvc2VcIlxuPlxuICA8dGV0YS12aXNpYmlsaXR5LWRyb3Bkb3duLXRhYlxuICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgIFtjbG9zZV09XCJjbG9zZVwiXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gID48L3RldGEtdmlzaWJpbGl0eS1kcm9wZG93bi10YWI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,10 +1,10 @@
1
- import { inject, InjectionToken } from "@angular/core";
2
- import { Observable, share } from "rxjs";
3
- import { DOCUMENT } from "@angular/common";
1
+ import { inject, InjectionToken } from '@angular/core';
2
+ import { Observable, share } from 'rxjs';
3
+ import { DOCUMENT } from '@angular/common';
4
4
  export const ANIMATION_FRAME = new InjectionToken('Shared Observable based on `window.requestAnimationFrame`', {
5
5
  factory: () => {
6
6
  const { requestAnimationFrame, cancelAnimationFrame } = inject(WINDOW);
7
- const animationFrame$ = new Observable(subscriber => {
7
+ const animationFrame$ = new Observable((subscriber) => {
8
8
  let id = NaN;
9
9
  const callback = (timestamp) => {
10
10
  subscriber.next(timestamp);
@@ -27,4 +27,4 @@ export const WINDOW = new InjectionToken('An abstraction over global window obje
27
27
  return defaultView;
28
28
  },
29
29
  });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLWZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29ic2VydmFibGUvYW5pbWF0aW9uLWZyYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQy9DLDJEQUEyRCxFQUMzRDtJQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUMscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQXNCLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNiLE1BQU0sUUFBUSxHQUFHLENBQUMsU0FBOEIsRUFBRSxFQUFFO2dCQUNsRCxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMzQixFQUFFLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDO1lBRUYsRUFBRSxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXJDLE9BQU8sR0FBRyxFQUFFO2dCQUNWLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FDdEMsMENBQTBDLEVBQzFDO0lBQ0UsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE1BQU0sRUFBQyxXQUFXLEVBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7T2JzZXJ2YWJsZSwgc2hhcmV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fRlJBTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxET01IaWdoUmVzVGltZVN0YW1wPj4oXG4gICdTaGFyZWQgT2JzZXJ2YWJsZSBiYXNlZCBvbiBgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZWAnLFxuICB7XG4gICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgY29uc3Qge3JlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FuY2VsQW5pbWF0aW9uRnJhbWV9ID0gaW5qZWN0KFdJTkRPVyk7XG4gICAgICBjb25zdCBhbmltYXRpb25GcmFtZSQgPSBuZXcgT2JzZXJ2YWJsZTxET01IaWdoUmVzVGltZVN0YW1wPihzdWJzY3JpYmVyID0+IHtcbiAgICAgICAgbGV0IGlkID0gTmFOO1xuICAgICAgICBjb25zdCBjYWxsYmFjayA9ICh0aW1lc3RhbXA6IERPTUhpZ2hSZXNUaW1lU3RhbXApID0+IHtcbiAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodGltZXN0YW1wKTtcbiAgICAgICAgICBpZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBhbmltYXRpb25GcmFtZSQucGlwZShzaGFyZSgpKTtcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IFdJTkRPVyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXaW5kb3c+KFxuICAnQW4gYWJzdHJhY3Rpb24gb3ZlciBnbG9iYWwgd2luZG93IG9iamVjdCcsXG4gIHtcbiAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICBjb25zdCB7ZGVmYXVsdFZpZXd9ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgICAgaWYgKCFkZWZhdWx0Vmlldykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dpbmRvdyBpcyBub3QgYXZhaWxhYmxlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkZWZhdWx0VmlldztcbiAgICB9LFxuICB9LFxuKTtcbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLWZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29ic2VydmFibGUvYW5pbWF0aW9uLWZyYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQy9DLDJEQUEyRCxFQUMzRDtJQUNFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkUsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQXNCLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDekUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQ2IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxTQUE4QixFQUFFLEVBQUU7Z0JBQ2xELFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUM7WUFFRixFQUFFLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFckMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1Ysb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0YsQ0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFTLDBDQUEwQyxFQUFFO0lBQzNGLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBzaGFyZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgQU5JTUFUSU9OX0ZSQU1FID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8RE9NSGlnaFJlc1RpbWVTdGFtcD4+KFxuICAnU2hhcmVkIE9ic2VydmFibGUgYmFzZWQgb24gYHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVgJyxcbiAge1xuICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBjYW5jZWxBbmltYXRpb25GcmFtZSB9ID0gaW5qZWN0KFdJTkRPVyk7XG4gICAgICBjb25zdCBhbmltYXRpb25GcmFtZSQgPSBuZXcgT2JzZXJ2YWJsZTxET01IaWdoUmVzVGltZVN0YW1wPigoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICBsZXQgaWQgPSBOYU47XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKHRpbWVzdGFtcDogRE9NSGlnaFJlc1RpbWVTdGFtcCkgPT4ge1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh0aW1lc3RhbXApO1xuICAgICAgICAgIGlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShpZCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGFuaW1hdGlvbkZyYW1lJC5waXBlKHNoYXJlKCkpO1xuICAgIH0sXG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBXSU5ET1cgPSBuZXcgSW5qZWN0aW9uVG9rZW48V2luZG93PignQW4gYWJzdHJhY3Rpb24gb3ZlciBnbG9iYWwgd2luZG93IG9iamVjdCcsIHtcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIGNvbnN0IHsgZGVmYXVsdFZpZXcgfSA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICBpZiAoIWRlZmF1bHRWaWV3KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dpbmRvdyBpcyBub3QgYXZhaWxhYmxlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWaWV3O1xuICB9LFxufSk7XG4iXX0=
@@ -1,2 +1,3 @@
1
1
  export * from './animation-frame';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vYnNlcnZhYmxlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5pbWF0aW9uLWZyYW1lJztcbiJdfQ==
2
+ export * from './zone-observable';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vYnNlcnZhYmxlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb24tZnJhbWUnO1xuZXhwb3J0ICogZnJvbSAnLi96b25lLW9ic2VydmFibGUnOyJdfQ==
@@ -0,0 +1,15 @@
1
+ import { Observable, pipe } from 'rxjs';
2
+ export function tetaZoneFull(ngZone) {
3
+ return source => new Observable(subscriber => source.subscribe({
4
+ next: value => ngZone.run(() => subscriber.next(value)),
5
+ error: (error) => ngZone.run(() => subscriber.error(error)),
6
+ complete: () => ngZone.run(() => subscriber.complete()),
7
+ }));
8
+ }
9
+ export function tetaZoneFree(ngZone) {
10
+ return source => new Observable(subscriber => ngZone.runOutsideAngular(() => source.subscribe(subscriber)));
11
+ }
12
+ export function tetaZoneOptimized(ngZone) {
13
+ return pipe(tetaZoneFree(ngZone), tetaZoneFull(ngZone));
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1vYnNlcnZhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29ic2VydmFibGUvem9uZS1vYnNlcnZhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBMkIsVUFBVSxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoRSxNQUFNLFVBQVUsWUFBWSxDQUFJLE1BQWM7SUFDNUMsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUNkLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQzFCLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDZixJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsS0FBSyxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3hELENBQUMsQ0FDSCxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUksTUFBYztJQUM1QyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQ2QsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDMUIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDN0QsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUksTUFBYztJQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Tmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCBwaXBlfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRldGFab25lRnVsbDxUPihuZ1pvbmU6IE5nWm9uZSk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIHJldHVybiBzb3VyY2UgPT5cbiAgICBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmVyID0+XG4gICAgICBzb3VyY2Uuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogdmFsdWUgPT4gbmdab25lLnJ1bigoKSA9PiBzdWJzY3JpYmVyLm5leHQodmFsdWUpKSxcbiAgICAgICAgZXJyb3I6IChlcnJvcjogdW5rbm93bikgPT4gbmdab25lLnJ1bigoKSA9PiBzdWJzY3JpYmVyLmVycm9yKGVycm9yKSksXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiBuZ1pvbmUucnVuKCgpID0+IHN1YnNjcmliZXIuY29tcGxldGUoKSksXG4gICAgICB9KSxcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGV0YVpvbmVGcmVlPFQ+KG5nWm9uZTogTmdab25lKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+IHtcbiAgcmV0dXJuIHNvdXJjZSA9PlxuICAgIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZXIgPT5cbiAgICAgIG5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBzb3VyY2Uuc3Vic2NyaWJlKHN1YnNjcmliZXIpKSxcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGV0YVpvbmVPcHRpbWl6ZWQ8VD4obmdab25lOiBOZ1pvbmUpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4ge1xuICByZXR1cm4gcGlwZSh0ZXRhWm9uZUZyZWUobmdab25lKSwgdGV0YVpvbmVGdWxsKG5nWm9uZSkpO1xufVxuIl19
@@ -9,7 +9,7 @@ import * as i2 from '@angular/forms';
9
9
  import { NG_VALUE_ACCESSOR, FormsModule, UntypedFormControl, UntypedFormGroup, Validators, ControlContainer, NgForm, NgModelGroup, FormGroup, ReactiveFormsModule } from '@angular/forms';
10
10
  import { maskitoDateTimeOptionsGenerator, maskitoDateOptionsGenerator, maskitoDateRangeOptionsGenerator } from '@maskito/kit';
11
11
  import dayjs from 'dayjs';
12
- import { BehaviorSubject, ReplaySubject, combineLatest, takeWhile, filter, map as map$1, lastValueFrom, take, shareReplay, Subject, animationFrameScheduler, fromEvent, tap, merge, Observable, share } from 'rxjs';
12
+ import { BehaviorSubject, ReplaySubject, combineLatest, takeWhile, filter, map as map$1, lastValueFrom, take, shareReplay, Subject, animationFrameScheduler, fromEvent, tap, merge, Observable, share, pipe } from 'rxjs';
13
13
  import * as i4 from '@maskito/angular';
14
14
  import { MaskitoModule } from '@maskito/angular';
15
15
  import { trigger, transition, style, animate } from '@angular/animations';
@@ -9446,17 +9446,19 @@ class HeadCellComponent {
9446
9446
  template: this.mainTemplate,
9447
9447
  order: 10,
9448
9448
  showTab: () => true,
9449
- }, {
9449
+ },
9450
+ {
9450
9451
  icon: 'filter',
9451
9452
  template: this.filterTemplate,
9452
9453
  order: 20,
9453
9454
  showTab: (column) => column.filterable,
9454
- }, {
9455
+ },
9456
+ {
9455
9457
  icon: 'eye',
9456
9458
  template: this.columnsTemplate,
9457
9459
  order: 30,
9458
9460
  showTab: () => true,
9459
- }
9461
+ },
9460
9462
  ];
9461
9463
  }
9462
9464
  get elementRef() {
@@ -9467,8 +9469,7 @@ class HeadCellComponent {
9467
9469
  if (this.column.headDropdownConfig.strategy === 'replace') {
9468
9470
  return this.column.headDropdownConfig.tabs;
9469
9471
  }
9470
- return [...this.defaultTemplates, ...this.column.headDropdownConfig.tabs]
9471
- .sort((a, b) => a.order - b.order);
9472
+ return [...this.defaultTemplates, ...this.column.headDropdownConfig.tabs].sort((a, b) => a.order - b.order);
9472
9473
  }
9473
9474
  return this.defaultTemplates;
9474
9475
  }
@@ -9489,21 +9490,20 @@ class HeadCellComponent {
9489
9490
  }
9490
9491
  this._svc.dragStart(this.column);
9491
9492
  }
9492
- dragenter(event) {
9493
+ dragenter() {
9493
9494
  this.rect = this._elementRef.nativeElement.getBoundingClientRect();
9494
9495
  }
9495
9496
  allowDrop(event) {
9496
9497
  event.preventDefault();
9497
9498
  if (this.rect && this._svc.dragSource) {
9498
- this.showDrag =
9499
- event.clientX >= this.rect.x + this.rect.width / 2 ? 'right' : 'left';
9499
+ this.showDrag = event.clientX >= this.rect.x + this.rect.width / 2 ? 'right' : 'left';
9500
9500
  }
9501
9501
  }
9502
9502
  dragleave(event) {
9503
9503
  event.preventDefault();
9504
9504
  this.showDrag = null;
9505
9505
  }
9506
- dragend(event) {
9506
+ dragend() {
9507
9507
  this.showDrag = null;
9508
9508
  }
9509
9509
  drop(event) {
@@ -9521,13 +9521,13 @@ class HeadCellComponent {
9521
9521
  this.iconName = combineLatest([this.sortParam, this.filtered]).pipe(map((data) => {
9522
9522
  const [sortParam, filtered] = data;
9523
9523
  if (sortParam && filtered) {
9524
- return sortParam.asc ? 'filterSortUpColor' : 'filterSortDownColor';
9524
+ return sortParam.asc ? 'filterSortUp' : 'filterSortDown';
9525
9525
  }
9526
9526
  if (sortParam) {
9527
- return sortParam.asc ? 'sortUpColor' : 'sortDownColor';
9527
+ return sortParam.asc ? 'arrowUp' : 'arrowDown';
9528
9528
  }
9529
9529
  if (filtered) {
9530
- return 'filterColor';
9530
+ return 'filter';
9531
9531
  }
9532
9532
  return '';
9533
9533
  }));
@@ -9540,7 +9540,7 @@ class HeadCellComponent {
9540
9540
  });
9541
9541
  }, {
9542
9542
  root: this._svc.getTableElement(this._elementRef.nativeElement),
9543
- threshold: [1]
9543
+ threshold: [1],
9544
9544
  });
9545
9545
  this.observer.observe(this._elementRef.nativeElement);
9546
9546
  }
@@ -9549,7 +9549,7 @@ class HeadCellComponent {
9549
9549
  this.observer.unobserve(this._elementRef.nativeElement);
9550
9550
  this.observer.disconnect();
9551
9551
  }
9552
- resizeStart(event) {
9552
+ resizeStart() {
9553
9553
  const rect = this._elementRef.nativeElement.getBoundingClientRect();
9554
9554
  this._startPosition = rect.x;
9555
9555
  this._svc.lockPreviousColumns(this.column, this._elementRef.nativeElement);
@@ -9567,7 +9567,7 @@ class HeadCellComponent {
9567
9567
  this._startPosition = null;
9568
9568
  }
9569
9569
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: HeadCellComponent, deps: [{ token: TableService }, { token: i0.ApplicationRef }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
9570
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: HeadCellComponent, isStandalone: true, selector: "teta-head-cell", inputs: { column: "column", showHeadCellMenu: "showHeadCellMenu", data: "data" }, host: { listeners: { "dragenter": "dragenter($event)", "dragover": "allowDrop($event)", "dragleave": "dragleave($event)", "dragend": "dragend($event)", "drop": "drop($event)" }, properties: { "class.table-head__cell_active": "this.dropDownOpen" } }, viewQueries: [{ propertyName: "mainTemplate", first: true, predicate: ["mainTemplate"], descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }, { propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"], dependencies: [{ kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HeadCellHostComponent, selector: "teta-head-cell-host", inputs: ["column", "columns", "data"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: ["columns", "column", "state", "data", "tabTemplates", "dropDownOpen"], outputs: ["dropDownOpenChange"] }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: ResizeDragDirective, selector: "[tetaResizeDrag]", inputs: ["tetaResizeDrag"], outputs: ["resizeStart", "resizeProcess", "resizeEnd"] }, { kind: "component", type: MainDropdownTabComponent, selector: "teta-main-dropdown-tab", inputs: ["columns", "column", "state", "data", "close", "headCellElementRef"] }, { kind: "component", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9570
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: HeadCellComponent, isStandalone: true, selector: "teta-head-cell", inputs: { column: "column", showHeadCellMenu: "showHeadCellMenu", data: "data" }, host: { listeners: { "dragenter": "dragenter($event)", "dragover": "allowDrop($event)", "dragleave": "dragleave($event)", "dragend": "dragend($event)", "drop": "drop($event)" }, properties: { "class.table-head__cell_active": "this.dropDownOpen" } }, viewQueries: [{ propertyName: "mainTemplate", first: true, predicate: ["mainTemplate"], descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }, { propertyName: "columnsTemplate", first: true, predicate: ["columnsTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"row row_auto\">\n <teta-dropdown\n [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\"\n >\n <div\n tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\"\n >\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon [palette]=\"'text'\" [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown\n tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"\n ></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div\n class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div\n class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault(); $event.stopPropagation()\"\n (drag)=\"$event.preventDefault(); $event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart()\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"\n>\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template\n #mainTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-main-dropdown-tab\n [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"\n ></teta-main-dropdown-tab>\n</ng-template>\n<ng-template\n #filterTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-filter-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\" [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template\n #columnsTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-visibility-dropdown-tab\n [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"\n ></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"], dependencies: [{ kind: "component", type: DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HeadCellHostComponent, selector: "teta-head-cell-host", inputs: ["column", "columns", "data"] }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: HeadCellDropdownComponent, selector: "teta-head-cell-dropdown", inputs: ["columns", "column", "state", "data", "tabTemplates", "dropDownOpen"], outputs: ["dropDownOpenChange"] }, { kind: "directive", type: DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: ResizeDragDirective, selector: "[tetaResizeDrag]", inputs: ["tetaResizeDrag"], outputs: ["resizeStart", "resizeProcess", "resizeEnd"] }, { kind: "component", type: MainDropdownTabComponent, selector: "teta-main-dropdown-tab", inputs: ["columns", "column", "state", "data", "close", "headCellElementRef"] }, { kind: "component", type: FilterDropdownTabComponent, selector: "teta-filter-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "component", type: VisibilityDropdownTabComponent, selector: "teta-visibility-dropdown-tab", inputs: ["columns", "column", "state", "data", "close"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9571
9571
  }
9572
9572
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: HeadCellComponent, decorators: [{
9573
9573
  type: Component,
@@ -9584,7 +9584,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
9584
9584
  FilterDropdownTabComponent,
9585
9585
  VisibilityDropdownTabComponent,
9586
9586
  AsyncPipe,
9587
- ], template: "<div class=\"row row_auto\">\n <teta-dropdown [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\">\n <div tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\">\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault();$event.stopPropagation()\"\n (drag)=\"$event.preventDefault();$event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\">\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template #mainTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-main-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"></teta-main-dropdown-tab>\n</ng-template>\n<ng-template #filterTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-filter-dropdown-tab [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template #columnsTemplate let-column=\"column\" let-columns=\"columns\" let-data=\"data\" let-state=\"state\"\n let-close=\"close\">\n <teta-visibility-dropdown-tab [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"] }]
9587
+ ], template: "<div class=\"row row_auto\">\n <teta-dropdown\n [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\"\n >\n <div\n tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\"\n >\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon [palette]=\"'text'\" [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown\n tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"\n ></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div\n class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div\n class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault(); $event.stopPropagation()\"\n (drag)=\"$event.preventDefault(); $event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart()\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"\n>\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template\n #mainTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-main-dropdown-tab\n [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"\n ></teta-main-dropdown-tab>\n</ng-template>\n<ng-template\n #filterTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-filter-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\" [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template\n #columnsTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-visibility-dropdown-tab\n [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"\n ></teta-visibility-dropdown-tab>\n</ng-template>\n", styles: [".drop-area{position:absolute;width:1px;background:var(--color-text-50);top:0;bottom:0;z-index:10}.drop-area_left{left:-1px}.drop-area_right{right:-1px}\n"] }]
9588
9588
  }], ctorParameters: () => [{ type: TableService }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { column: [{
9589
9589
  type: Input
9590
9590
  }], showHeadCellMenu: [{
@@ -11897,7 +11897,7 @@ const ruLocale = {
11897
11897
  const ANIMATION_FRAME = new InjectionToken('Shared Observable based on `window.requestAnimationFrame`', {
11898
11898
  factory: () => {
11899
11899
  const { requestAnimationFrame, cancelAnimationFrame } = inject(WINDOW);
11900
- const animationFrame$ = new Observable(subscriber => {
11900
+ const animationFrame$ = new Observable((subscriber) => {
11901
11901
  let id = NaN;
11902
11902
  const callback = (timestamp) => {
11903
11903
  subscriber.next(timestamp);
@@ -11921,9 +11921,23 @@ const WINDOW = new InjectionToken('An abstraction over global window object', {
11921
11921
  },
11922
11922
  });
11923
11923
 
11924
+ function tetaZoneFull(ngZone) {
11925
+ return source => new Observable(subscriber => source.subscribe({
11926
+ next: value => ngZone.run(() => subscriber.next(value)),
11927
+ error: (error) => ngZone.run(() => subscriber.error(error)),
11928
+ complete: () => ngZone.run(() => subscriber.complete()),
11929
+ }));
11930
+ }
11931
+ function tetaZoneFree(ngZone) {
11932
+ return source => new Observable(subscriber => ngZone.runOutsideAngular(() => source.subscribe(subscriber)));
11933
+ }
11934
+ function tetaZoneOptimized(ngZone) {
11935
+ return pipe(tetaZoneFree(ngZone), tetaZoneFull(ngZone));
11936
+ }
11937
+
11924
11938
  /**
11925
11939
  * Generated bundle index. Do not edit.
11926
11940
  */
11927
11941
 
11928
- export { ANIMATION_FRAME, AccordionComponent, AccordionContentDirective, AccordionHeadComponent, AccordionItemComponent, AggregationType, Align, ArrayUtil, AutoPositionDirective, AutocompleteComponent, AvatarComponent, BooleanCellComponent, BooleanFilter, BooleanFilterComponent, ButtonComponent, CHECKBOX_CONTROL_VALUE_ACCESSOR, CellComponent, CellComponentBase, CellHostComponent, Chart3dComponent, Chart3dOptions, CheckboxComponent, ClickOutsideDirective, ClickService, ColorInputComponent, ColumnReorderEvent, ColumnResizeEvent, ContextMenuDirective, CurrentModal, DATE_PICKER_CONTROL_VALUE_ACCESSOR, DATE_Range_CONTROL_VALUE_ACCESSOR, DateCalendarComponent, DateCellComponent, DateFilter, DateFilterComponent, DateFilterValue, DatePeriod, DatePickerComponent, DatePickerMode, DateRangeComponent, DateTimeCellComponent, DateUtil, DayModel, DelimiterComponent, DetailComponentBase, DialogComponent, DialogService, DisableControlDirective, DividerComponent, DomUtil, DragContainerDirective, DragContainerInstance, DragDirective, DragDropService, DragInstance, DragPlaceholderDirective, DragPreviewDirective, DragSortContainerDirective, DragSortItemDirective, DropdownComponent, DropdownContentDirective, DropdownDirective, DropdownHeadDirective, DynamicComponentService, DynamicContentBaseDirective, DynamicData, EditEvent, EditType, ExpandCardComponent, ExpandItemComponent, ExpandPanelComponent, ExpandPanelContentDirective, ExpandPanelHeadDirective, ExportType, FileItemComponent, FileUploadAreaComponent, FilterBase, FilterComponentBase, FilterHostComponent, FilterItem, FilterState, FilterType, FormGroupTitleComponent, FormsUtil, HeadCellComponentBase, HeadCellHostComponent, HighlightDirective, HintDirective, IconComponent, IconFileComponent, IconService, IconSpriteDirective, InputComponent, LetContext, LetDirective, ListCellComponent, ListFilter, ListFilterComponent, ListFilterType, LoaderDirective, Message, MessageComponent, MessageHostComponent, MessageService, ModalCloseReason, ModalContainerComponent, ModalInstance, ModalModule, ModalService, NoAutofillDirective, NumberPipe, NumericCellComponent, NumericFilter, NumericFilterComponent, NumericFilterValue, OnlyNumberDirective, OverlayContainerService, PagerComponent, PagerState, PagerUtil, PanelComponent, PopupContentComponent, PositionUtil, ProgressBarComponent, PropertyGridComponent, PropertyGridItemDescriptionDirective, PropertyGridModule, RadioButtonComponent, RadioComponent, RangeCalendarComponent, ResizeDragDirective, ResizePanelComponent, SLIDER_CONTROL_VALUE_ACCESSOR, SWITCH_CONTROL_VALUE_ACCESSOR, ScrollIntoViewDirective, ScrollableComponent, ScrollableDirective, SelectComponent, SelectOptionDirective, SelectType, SelectValueDirective, SidebarComponent, SidebarPosition, SortEvent, SortParam, StateUtil, StringCellComponent, StringFilter, StringFilterComponent, StringFilterType, StringUtil, SwitchButtonComponent, SwitchComponent, TOGGLE_CONTROL_VALUE_ACCESSOR, TabComponent, TabContentDirective, TabTitleDirective, TableBodyComponent, TableColumn, TableColumnStore, TableComponent, TableHeadComponent, TableRow, TableService, TableUtil, TabsComponent, TetaConfigService, TetaContentRef, TetaDatePipe, TetaSize, TetaTemplateDirective, TextFieldComponent, ThemeSwitchComponent, ThemeSwitchService, ToggleComponent, ToolbarComponent, TooltipDirective, TreeComponent, TreeItemToggleComponent, TreeService, VerticalAlign, WINDOW, boolOrFuncCallback, enLocale, exportDomToImage, formatNumber, getCellComponent, getPrecision, isFunction, prependZero, ruLocale };
11942
+ export { ANIMATION_FRAME, AccordionComponent, AccordionContentDirective, AccordionHeadComponent, AccordionItemComponent, AggregationType, Align, ArrayUtil, AutoPositionDirective, AutocompleteComponent, AvatarComponent, BooleanCellComponent, BooleanFilter, BooleanFilterComponent, ButtonComponent, CHECKBOX_CONTROL_VALUE_ACCESSOR, CellComponent, CellComponentBase, CellHostComponent, Chart3dComponent, Chart3dOptions, CheckboxComponent, ClickOutsideDirective, ClickService, ColorInputComponent, ColumnReorderEvent, ColumnResizeEvent, ContextMenuDirective, CurrentModal, DATE_PICKER_CONTROL_VALUE_ACCESSOR, DATE_Range_CONTROL_VALUE_ACCESSOR, DateCalendarComponent, DateCellComponent, DateFilter, DateFilterComponent, DateFilterValue, DatePeriod, DatePickerComponent, DatePickerMode, DateRangeComponent, DateTimeCellComponent, DateUtil, DayModel, DelimiterComponent, DetailComponentBase, DialogComponent, DialogService, DisableControlDirective, DividerComponent, DomUtil, DragContainerDirective, DragContainerInstance, DragDirective, DragDropService, DragInstance, DragPlaceholderDirective, DragPreviewDirective, DragSortContainerDirective, DragSortItemDirective, DropdownComponent, DropdownContentDirective, DropdownDirective, DropdownHeadDirective, DynamicComponentService, DynamicContentBaseDirective, DynamicData, EditEvent, EditType, ExpandCardComponent, ExpandItemComponent, ExpandPanelComponent, ExpandPanelContentDirective, ExpandPanelHeadDirective, ExportType, FileItemComponent, FileUploadAreaComponent, FilterBase, FilterComponentBase, FilterHostComponent, FilterItem, FilterState, FilterType, FormGroupTitleComponent, FormsUtil, HeadCellComponentBase, HeadCellHostComponent, HighlightDirective, HintDirective, IconComponent, IconFileComponent, IconService, IconSpriteDirective, InputComponent, LetContext, LetDirective, ListCellComponent, ListFilter, ListFilterComponent, ListFilterType, LoaderDirective, Message, MessageComponent, MessageHostComponent, MessageService, ModalCloseReason, ModalContainerComponent, ModalInstance, ModalModule, ModalService, NoAutofillDirective, NumberPipe, NumericCellComponent, NumericFilter, NumericFilterComponent, NumericFilterValue, OnlyNumberDirective, OverlayContainerService, PagerComponent, PagerState, PagerUtil, PanelComponent, PopupContentComponent, PositionUtil, ProgressBarComponent, PropertyGridComponent, PropertyGridItemDescriptionDirective, PropertyGridModule, RadioButtonComponent, RadioComponent, RangeCalendarComponent, ResizeDragDirective, ResizePanelComponent, SLIDER_CONTROL_VALUE_ACCESSOR, SWITCH_CONTROL_VALUE_ACCESSOR, ScrollIntoViewDirective, ScrollableComponent, ScrollableDirective, SelectComponent, SelectOptionDirective, SelectType, SelectValueDirective, SidebarComponent, SidebarPosition, SortEvent, SortParam, StateUtil, StringCellComponent, StringFilter, StringFilterComponent, StringFilterType, StringUtil, SwitchButtonComponent, SwitchComponent, TOGGLE_CONTROL_VALUE_ACCESSOR, TabComponent, TabContentDirective, TabTitleDirective, TableBodyComponent, TableColumn, TableColumnStore, TableComponent, TableHeadComponent, TableRow, TableService, TableUtil, TabsComponent, TetaConfigService, TetaContentRef, TetaDatePipe, TetaSize, TetaTemplateDirective, TextFieldComponent, ThemeSwitchComponent, ThemeSwitchService, ToggleComponent, ToolbarComponent, TooltipDirective, TreeComponent, TreeItemToggleComponent, TreeService, VerticalAlign, WINDOW, boolOrFuncCallback, enLocale, exportDomToImage, formatNumber, getCellComponent, getPrecision, isFunction, prependZero, ruLocale, tetaZoneFree, tetaZoneFull, tetaZoneOptimized };
11929
11943
  //# sourceMappingURL=tetacom-ng-components.mjs.map