@coolon/angular-ui-powerups 16.1.0-aplpha.152 → 16.1.0-aplpha.153

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYWN0aW9uLWNvbHVtbi9tZW51LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIENvbW1hbmRGYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVCdWlsZGVyPFJvdyBleHRlbmRzIG9iamVjdD4ge1xuICBhZGRDb21tYW5kKGZhY3Rvcnk6IENvbW1hbmQuRmFjdG9yeTxSb3c+LCBmYWNlOiBDb21tYW5kRmFjZSk6dm9pZDtcbiAgYWRkU2VwYXJhdG9yKCk6dm9pZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYWN0aW9uLWNvbHVtbi9tZW51LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIENvbW1hbmRGYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZmlsZS9maWxlLWRvd25sb2FkL2ZpbGUtZG93bmxvYWQuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51QnVpbGRlcjxSb3cgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgYWRkQ29tbWFuZChmYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8Um93PiwgZmFjZTogQ29tbWFuZEZhY2UpOnZvaWQ7XG4gIGFkZERvd25sb2FkKGNhbGxiYWNrOiAocm93OlJvdykgPT4gRmlsZURvd25sb2FkQ29tcG9uZW50LkRvd25sb2FkSW5mbyk6dm9pZDtcbiAgYWRkU2VwYXJhdG9yKCk6dm9pZDtcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { MatMenuTrigger } from '@angular/material/menu';
3
- import { Dsl } from '@coolon/pectin';
4
3
  import { DisposableComponent } from '../../../disposable-component';
4
+ import { Track } from '../../../track';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
7
7
  import * as i2 from "../../../commands/group/tool-bar/tool-bar.component";
@@ -9,7 +9,9 @@ import * as i3 from "../../../commands/command/command.component";
9
9
  import * as i4 from "../../../commands/group/popup-menu/more-menu.component";
10
10
  import * as i5 from "../../../commands/separator.component";
11
11
  import * as i6 from "../../../commands/flex.component";
12
- class MenuItemData {
12
+ import * as i7 from "../../../file/file-download/file-download.component";
13
+ // TODO: This performs poorly, lots of factory calls initial rendering and on mouse movements
14
+ class CommandData {
13
15
  factory;
14
16
  face;
15
17
  constructor(factory, face) {
@@ -17,6 +19,15 @@ class MenuItemData {
17
19
  this.face = face;
18
20
  }
19
21
  }
22
+ class DownloadData {
23
+ createInfo;
24
+ constructor(createInfo) {
25
+ this.createInfo = createInfo;
26
+ }
27
+ createDownloadInfo(value) {
28
+ return this.createInfo(value);
29
+ }
30
+ }
20
31
  /**
21
32
  *
22
33
  */
@@ -25,83 +36,104 @@ export class TableActionColumnComponent extends DisposableComponent {
25
36
  menu;
26
37
  actions = [];
27
38
  moreActions = [];
39
+ trackByIndex = Track.byIndex;
40
+ constructor() {
41
+ super();
42
+ this.onInit(() => console.log("table action column init"));
43
+ }
28
44
  addCommand(commandFactory, properties) {
29
- this.actions.push(new MenuItemData(commandFactory, properties));
45
+ this.actions.push(new CommandData(commandFactory, properties));
30
46
  }
31
47
  addSeparator() {
32
48
  this.actions.push(null);
33
49
  }
50
+ addDownload(factory) {
51
+ this.actions.push(new DownloadData(factory));
52
+ }
34
53
  addMoreMenu(builder) {
35
54
  const self = this;
36
55
  builder({
37
56
  addCommand(factory, face) {
38
- self.moreActions.push(new MenuItemData(factory, face));
57
+ self.moreActions.push(new CommandData(factory, face));
39
58
  },
40
59
  addSeparator() {
41
60
  self.moreActions.push(null);
61
+ },
62
+ addDownload(factory) {
63
+ self.moreActions.push(new DownloadData(factory));
42
64
  }
43
65
  });
44
66
  }
45
- constructor() {
46
- super();
47
- }
48
- createMoreMenuCommand(item, value) {
49
- const { when } = Dsl.disposeWith(this);
50
- const command = item.factory.create(value, { disposedWith: this });
51
- when(command.busy$).becomesFalsey(() => {
52
- this.closeMoreMenu();
53
- });
54
- return command;
55
- }
67
+ // createMoreMenuCommand(item: CommandData<T>, value: T): Command<void> {
68
+ // const { when } = Dsl.disposeWith(this);
69
+ // const command = item.factory.create(value, { disposedWith: this });
70
+ // when(command.busy$).becomesFalsey(() => {
71
+ // this.closeMoreMenu();
72
+ // });
73
+ // return command;
74
+ // }
56
75
  closeMoreMenu() {
57
76
  this.menu.closeMenu();
58
77
  }
78
+ isCommand(item) {
79
+ return item instanceof CommandData;
80
+ }
81
+ isDownload(item) {
82
+ return item instanceof DownloadData;
83
+ }
84
+ isSeparator(item) {
85
+ return !item;
86
+ }
59
87
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableActionColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
88
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableActionColumnComponent, selector: "aup-table-action-column", inputs: { value: "value" }, viewQueries: [{ propertyName: "menu", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: `
61
89
  <aup-tool-bar>
62
- <ng-container *ngFor="let action of actions">
63
- <aup-command *ngIf="action"
90
+ <ng-container *ngFor="let action of actions;trackBy: trackByIndex">
91
+ <aup-command *ngIf="isCommand(action)"
64
92
  #comp
65
93
  [command]="action.factory.create(value, {disposedWith: comp})"
66
- [face]="action.face"></aup-command>
67
- <aup-separator *ngIf="!action"/>
94
+ [face]="action.face" />
95
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
96
+ <aup-separator *ngIf="isSeparator(action)" />
68
97
  </ng-container>
69
98
  </aup-tool-bar>
70
99
  <ng-container *ngIf="moreActions.length > 0">
71
- <aup-flex class="flex"/>
100
+ <aup-flex class="flex" />
72
101
  <aup-more-menu>
73
- <ng-container *ngFor="let action of moreActions">
74
- <aup-command *ngIf="action"
102
+ <ng-container *ngFor="let action of moreActions; trackBy: trackByIndex">
103
+ <aup-command *ngIf="isCommand(action)"
75
104
  #comp
76
105
  [command]="action.factory.create(value, {disposedWith: comp})"
77
- [face]="action.face"></aup-command>
78
- <aup-separator *ngIf="!action"/>
106
+ [face]="action.face" />
107
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
108
+ <aup-separator *ngIf="isSeparator(action)" />
79
109
  </ng-container>
80
110
  </aup-more-menu>
81
111
  </ng-container>
82
- `, isInline: true, styles: [":host{display:inline-flex;flex-direction:row;align-items:center}:host:last-child{padding-right:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ToolBarComponent, selector: "aup-tool-bar" }, { kind: "component", type: i3.CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: i4.MoreMenuComponent, selector: "aup-more-menu", inputs: ["tooltip"] }, { kind: "component", type: i5.SeparatorComponent, selector: "aup-separator" }, { kind: "component", type: i6.FlexComponent, selector: "aup-flex" }] });
112
+ `, isInline: true, styles: [":host{display:inline-flex;flex-direction:row;align-items:center}:host:last-child{padding-right:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ToolBarComponent, selector: "aup-tool-bar" }, { kind: "component", type: i3.CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: i4.MoreMenuComponent, selector: "aup-more-menu", inputs: ["tooltip"] }, { kind: "component", type: i5.SeparatorComponent, selector: "aup-separator" }, { kind: "component", type: i6.FlexComponent, selector: "aup-flex" }, { kind: "component", type: i7.FileDownloadComponent, selector: "aup-file-download", inputs: ["download$", "download", "alignFace"] }] });
83
113
  }
84
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableActionColumnComponent, decorators: [{
85
115
  type: Component,
86
116
  args: [{ selector: 'aup-table-action-column', template: `
87
117
  <aup-tool-bar>
88
- <ng-container *ngFor="let action of actions">
89
- <aup-command *ngIf="action"
118
+ <ng-container *ngFor="let action of actions;trackBy: trackByIndex">
119
+ <aup-command *ngIf="isCommand(action)"
90
120
  #comp
91
121
  [command]="action.factory.create(value, {disposedWith: comp})"
92
- [face]="action.face"></aup-command>
93
- <aup-separator *ngIf="!action"/>
122
+ [face]="action.face" />
123
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
124
+ <aup-separator *ngIf="isSeparator(action)" />
94
125
  </ng-container>
95
126
  </aup-tool-bar>
96
127
  <ng-container *ngIf="moreActions.length > 0">
97
- <aup-flex class="flex"/>
128
+ <aup-flex class="flex" />
98
129
  <aup-more-menu>
99
- <ng-container *ngFor="let action of moreActions">
100
- <aup-command *ngIf="action"
130
+ <ng-container *ngFor="let action of moreActions; trackBy: trackByIndex">
131
+ <aup-command *ngIf="isCommand(action)"
101
132
  #comp
102
133
  [command]="action.factory.create(value, {disposedWith: comp})"
103
- [face]="action.face"></aup-command>
104
- <aup-separator *ngIf="!action"/>
134
+ [face]="action.face" />
135
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
136
+ <aup-separator *ngIf="isSeparator(action)" />
105
137
  </ng-container>
106
138
  </aup-more-menu>
107
139
  </ng-container>
@@ -112,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
112
144
  type: ViewChild,
113
145
  args: [MatMenuTrigger]
114
146
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1hY3Rpb24tY29sdW1uL3RhYmxlLWFjdGlvbi1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEQsT0FBTyxFQUFXLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQUtwRSxNQUFNLFlBQVk7SUFDSztJQUE0QztJQUFqRSxZQUFxQixPQUFpQyxFQUFXLElBQWlCO1FBQTdELFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBQVcsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUNsRixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQW1DSCxNQUFNLE9BQU8sMEJBQTZDLFNBQVEsbUJBQW1CO0lBR25GLEtBQUssQ0FBSTtJQUdULElBQUksQ0FBaUI7SUFFWixPQUFPLEdBQXNCLEVBQUUsQ0FBQztJQUNoQyxXQUFXLEdBQXNCLEVBQUUsQ0FBQztJQUU3QyxVQUFVLENBQUMsY0FBd0MsRUFBRSxVQUF1QjtRQUMxRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0M7UUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQztZQUNOLFVBQVUsQ0FBQyxPQUEyQixFQUFFLElBQWlCO2dCQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBQ0QsWUFBWTtnQkFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBcUIsRUFBRSxLQUFRO1FBQ25ELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFDLFlBQVksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7dUdBN0NVLDBCQUEwQjsyRkFBMUIsMEJBQTBCLGlJQUsxQixjQUFjLHVFQXJDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVDs7MkZBVVUsMEJBQTBCO2tCQWxDdEMsU0FBUzsrQkFDRSx5QkFBeUIsWUFDekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7MEVBYUQsS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5pbXBvcnQgeyBDb21tYW5kLCBEc2wgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBDb21tYW5kRmFjZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1hbmRzL2NvbW1hbmQtZmFjZSc7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi4vY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQgeyBNZW51QnVpbGRlciB9IGZyb20gJy4vbWVudS1idWlsZGVyJztcblxuXG5jbGFzcyBNZW51SXRlbURhdGE8VCBleHRlbmRzIG9iamVjdD4gIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZmFjdG9yeTogQ29tbWFuZC5GYWN0b3J5PFQsIHZvaWQ+LCByZWFkb25seSBmYWNlOiBDb21tYW5kRmFjZSkge1xuICB9XG59XG5cbi8qKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVwLXRhYmxlLWFjdGlvbi1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxhdXAtdG9vbC1iYXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxuICAgICAgICA8YXVwLWNvbW1hbmQgKm5nSWY9XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgI2NvbXBcbiAgICAgICAgICAgICAgICAgICAgIFtjb21tYW5kXT1cImFjdGlvbi5mYWN0b3J5LmNyZWF0ZSh2YWx1ZSwge2Rpc3Bvc2VkV2l0aDogY29tcH0pXCJcbiAgICAgICAgICAgICAgICAgICAgIFtmYWNlXT1cImFjdGlvbi5mYWNlXCI+PC9hdXAtY29tbWFuZD5cbiAgICAgICAgPGF1cC1zZXBhcmF0b3IgKm5nSWY9XCIhYWN0aW9uXCIvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hdXAtdG9vbC1iYXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vcmVBY3Rpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxhdXAtZmxleCBjbGFzcz1cImZsZXhcIi8+XG4gICAgICA8YXVwLW1vcmUtbWVudT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIG1vcmVBY3Rpb25zXCI+XG4gICAgICAgICAgPGF1cC1jb21tYW5kICpuZ0lmPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgI2NvbXBcbiAgICAgICAgICAgICAgICAgICAgICAgW2NvbW1hbmRdPVwiYWN0aW9uLmZhY3RvcnkuY3JlYXRlKHZhbHVlLCB7ZGlzcG9zZWRXaXRoOiBjb21wfSlcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZmFjZV09XCJhY3Rpb24uZmFjZVwiPjwvYXVwLWNvbW1hbmQ+XG4gICAgICAgICAgPGF1cC1zZXBhcmF0b3IgKm5nSWY9XCIhYWN0aW9uXCIvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXVwLW1vcmUtbWVudT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgc3R5bGVzOiBbYDpob3N0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgfVxuICB9YF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVBY3Rpb25Db2x1bW5Db21wb25lbnQ8VCBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQ2VsbFJlbmRlcmVyPFQ+LCBNZW51QnVpbGRlcjxUPiB7XG5cbiAgQElucHV0KClcbiAgdmFsdWU6IFQ7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcilcbiAgbWVudTogTWF0TWVudVRyaWdnZXI7XG5cbiAgcmVhZG9ubHkgYWN0aW9uczogTWVudUl0ZW1EYXRhPFQ+W10gPSBbXTtcbiAgcmVhZG9ubHkgbW9yZUFjdGlvbnM6IE1lbnVJdGVtRGF0YTxUPltdID0gW107XG5cbiAgYWRkQ29tbWFuZChjb21tYW5kRmFjdG9yeTogQ29tbWFuZC5GYWN0b3J5PFQsIHZvaWQ+LCBwcm9wZXJ0aWVzOiBDb21tYW5kRmFjZSkge1xuICAgIHRoaXMuYWN0aW9ucy5wdXNoKG5ldyBNZW51SXRlbURhdGEoY29tbWFuZEZhY3RvcnksIHByb3BlcnRpZXMpKTtcbiAgfVxuXG4gIGFkZFNlcGFyYXRvcigpIHtcbiAgICB0aGlzLmFjdGlvbnMucHVzaChudWxsKTtcbiAgfVxuXG4gIGFkZE1vcmVNZW51KGJ1aWxkZXI6KG1lbnU6IE1lbnVCdWlsZGVyPFQ+KSA9PiB2b2lkKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgYnVpbGRlcih7XG4gICAgICBhZGRDb21tYW5kKGZhY3Rvcnk6IENvbW1hbmQuRmFjdG9yeTxUPiwgZmFjZTogQ29tbWFuZEZhY2Upe1xuICAgICAgICBzZWxmLm1vcmVBY3Rpb25zLnB1c2gobmV3IE1lbnVJdGVtRGF0YShmYWN0b3J5LCBmYWNlKSk7XG4gICAgICB9LFxuICAgICAgYWRkU2VwYXJhdG9yKCkge1xuICAgICAgICBzZWxmLm1vcmVBY3Rpb25zLnB1c2gobnVsbCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY3JlYXRlTW9yZU1lbnVDb21tYW5kKGl0ZW06IE1lbnVJdGVtRGF0YTxUPiwgdmFsdWU6IFQpOiBDb21tYW5kPHZvaWQ+IHtcbiAgICBjb25zdCB7IHdoZW4gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICBjb25zdCBjb21tYW5kID0gaXRlbS5mYWN0b3J5LmNyZWF0ZSh2YWx1ZSwge2Rpc3Bvc2VkV2l0aDogdGhpc30pO1xuICAgIHdoZW4oY29tbWFuZC5idXN5JCkuYmVjb21lc0ZhbHNleSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlTW9yZU1lbnUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29tbWFuZDtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VNb3JlTWVudSgpIHtcbiAgICB0aGlzLm1lbnUuY2xvc2VNZW51KCk7XG4gIH1cbn1cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYWN0aW9uLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1hY3Rpb24tY29sdW1uL3RhYmxlLWFjdGlvbi1jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFJeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFcEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFLdkMsNkZBQTZGO0FBRTdGLE1BQU0sV0FBVztJQUNNO0lBQTRDO0lBQWpFLFlBQXFCLE9BQWlDLEVBQVcsSUFBaUI7UUFBN0QsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFBVyxTQUFJLEdBQUosSUFBSSxDQUFhO0lBQ2xGLENBQUM7Q0FDRjtBQUVELE1BQU0sWUFBWTtJQUNJO0lBQXBCLFlBQW9CLFVBQTREO1FBQTVELGVBQVUsR0FBVixVQUFVLENBQWtEO0lBQ2hGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFRO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFLRDs7R0FFRztBQXNDSCxNQUFNLE9BQU8sMEJBQTZDLFNBQVEsbUJBQW1CO0lBR25GLEtBQUssQ0FBSTtJQUdULElBQUksQ0FBaUI7SUFFWixPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUM1QixXQUFXLEdBQWtCLEVBQUUsQ0FBQztJQUVoQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtJQUVyQztRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsVUFBVSxDQUFDLGNBQXdDLEVBQUUsVUFBdUI7UUFDMUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXVEO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUF1QztRQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxDQUFDO1lBQ04sVUFBVSxDQUFDLE9BQTJCLEVBQUUsSUFBaUI7Z0JBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCxZQUFZO2dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxXQUFXLENBQUMsT0FBdUQ7Z0JBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbkQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx5RUFBeUU7SUFDekUsNENBQTRDO0lBQzVDLHdFQUF3RTtJQUN4RSw4Q0FBOEM7SUFDOUMsNEJBQTRCO0lBQzVCLFFBQVE7SUFDUixvQkFBb0I7SUFDcEIsSUFBSTtJQUVJLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWlCO1FBQ3pCLE9BQU8sSUFBSSxZQUFZLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQWlCO1FBQzFCLE9BQU8sSUFBSSxZQUFZLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWlCO1FBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDO3VHQXBFVSwwQkFBMEI7MkZBQTFCLDBCQUEwQixpSUFLMUIsY0FBYyx1RUF4Q2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDs7MkZBV1UsMEJBQTBCO2tCQXJDdEMsU0FBUzsrQkFDRSx5QkFBeUIsWUFDekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDswRUFjRCxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5cbmltcG9ydCB7IENvbW1hbmQsIERzbCwgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBDb21tYW5kRmFjZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1hbmRzL2NvbW1hbmQtZmFjZSc7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZmlsZS9maWxlLWRvd25sb2FkL2ZpbGUtZG93bmxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYWNrIH0gZnJvbSAnLi4vLi4vLi4vdHJhY2snO1xuaW1wb3J0IHsgQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi4vY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQgeyBNZW51QnVpbGRlciB9IGZyb20gJy4vbWVudS1idWlsZGVyJztcblxuXG4vLyBUT0RPOiBUaGlzIHBlcmZvcm1zIHBvb3JseSwgbG90cyBvZiBmYWN0b3J5IGNhbGxzIGluaXRpYWwgcmVuZGVyaW5nIGFuZCBvbiBtb3VzZSBtb3ZlbWVudHNcblxuY2xhc3MgQ29tbWFuZERhdGE8VCBleHRlbmRzIG9iamVjdD4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBmYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8VCwgdm9pZD4sIHJlYWRvbmx5IGZhY2U6IENvbW1hbmRGYWNlKSB7XG4gIH1cbn1cblxuY2xhc3MgRG93bmxvYWREYXRhPFQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjcmVhdGVJbmZvOiAodmFsdWU6IFQpID0+IEZpbGVEb3dubG9hZENvbXBvbmVudC5Eb3dubG9hZEluZm8pIHtcbiAgfVxuXG4gIGNyZWF0ZURvd25sb2FkSW5mbyh2YWx1ZTogVCk6IEZpbGVEb3dubG9hZENvbXBvbmVudC5Eb3dubG9hZEluZm8ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUluZm8odmFsdWUpO1xuICB9XG59XG5cbnR5cGUgTWVudUl0ZW08VCBleHRlbmRzIG9iamVjdD4gPSBDb21tYW5kRGF0YTxUPiB8IERvd25sb2FkRGF0YTxUPiB8IG51bGw7XG5cblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXAtdGFibGUtYWN0aW9uLWNvbHVtbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGF1cC10b29sLWJhcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zO3RyYWNrQnk6IHRyYWNrQnlJbmRleFwiPlxuICAgICAgICA8YXVwLWNvbW1hbmQgKm5nSWY9XCJpc0NvbW1hbmQoYWN0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAjY29tcFxuICAgICAgICAgICAgICAgICAgICAgW2NvbW1hbmRdPVwiYWN0aW9uLmZhY3RvcnkuY3JlYXRlKHZhbHVlLCB7ZGlzcG9zZWRXaXRoOiBjb21wfSlcIlxuICAgICAgICAgICAgICAgICAgICAgW2ZhY2VdPVwiYWN0aW9uLmZhY2VcIiAvPlxuICAgICAgICA8YXVwLWZpbGUtZG93bmxvYWQgKm5nSWY9XCJpc0Rvd25sb2FkKGFjdGlvbilcIiBbZG93bmxvYWRdPVwiYWN0aW9uLmNyZWF0ZURvd25sb2FkSW5mbyh2YWx1ZSlcIiAvPlxuICAgICAgICA8YXVwLXNlcGFyYXRvciAqbmdJZj1cImlzU2VwYXJhdG9yKGFjdGlvbilcIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9hdXAtdG9vbC1iYXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vcmVBY3Rpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxhdXAtZmxleCBjbGFzcz1cImZsZXhcIiAvPlxuICAgICAgPGF1cC1tb3JlLW1lbnU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBtb3JlQWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG4gICAgICAgICAgPGF1cC1jb21tYW5kICpuZ0lmPVwiaXNDb21tYW5kKGFjdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAjY29tcFxuICAgICAgICAgICAgICAgICAgICAgICBbY29tbWFuZF09XCJhY3Rpb24uZmFjdG9yeS5jcmVhdGUodmFsdWUsIHtkaXNwb3NlZFdpdGg6IGNvbXB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmYWNlXT1cImFjdGlvbi5mYWNlXCIgLz5cbiAgICAgICAgICA8YXVwLWZpbGUtZG93bmxvYWQgKm5nSWY9XCJpc0Rvd25sb2FkKGFjdGlvbilcIiBbZG93bmxvYWRdPVwiYWN0aW9uLmNyZWF0ZURvd25sb2FkSW5mbyh2YWx1ZSlcIiAvPlxuICAgICAgICAgIDxhdXAtc2VwYXJhdG9yICpuZ0lmPVwiaXNTZXBhcmF0b3IoYWN0aW9uKVwiIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9hdXAtbW9yZS1tZW51PlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBzdHlsZXM6IFtgOmhvc3Qge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbiAgfWBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQWN0aW9uQ29sdW1uQ29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIENlbGxSZW5kZXJlcjxUPiwgTWVudUJ1aWxkZXI8VD4ge1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlOiBUO1xuXG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpXG4gIG1lbnU6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIHJlYWRvbmx5IGFjdGlvbnM6IE1lbnVJdGVtPFQ+W10gPSBbXTtcbiAgcmVhZG9ubHkgbW9yZUFjdGlvbnM6IE1lbnVJdGVtPFQ+W10gPSBbXTtcblxuICByZWFkb25seSB0cmFja0J5SW5kZXggPSBUcmFjay5ieUluZGV4XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm9uSW5pdCgoKSA9PiBjb25zb2xlLmxvZyhcInRhYmxlIGFjdGlvbiBjb2x1bW4gaW5pdFwiKSk7XG4gIH1cblxuICBhZGRDb21tYW5kKGNvbW1hbmRGYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8VCwgdm9pZD4sIHByb3BlcnRpZXM6IENvbW1hbmRGYWNlKSB7XG4gICAgdGhpcy5hY3Rpb25zLnB1c2gobmV3IENvbW1hbmREYXRhKGNvbW1hbmRGYWN0b3J5LCBwcm9wZXJ0aWVzKSk7XG4gIH1cblxuICBhZGRTZXBhcmF0b3IoKSB7XG4gICAgdGhpcy5hY3Rpb25zLnB1c2gobnVsbCk7XG4gIH1cblxuICBhZGREb3dubG9hZChmYWN0b3J5OiAocm93OiBUKSA9PiBGaWxlRG93bmxvYWRDb21wb25lbnQuRG93bmxvYWRJbmZvKSB7XG4gICAgdGhpcy5hY3Rpb25zLnB1c2gobmV3IERvd25sb2FkRGF0YShmYWN0b3J5KSk7XG4gIH1cblxuICBhZGRNb3JlTWVudShidWlsZGVyOiAobWVudTogTWVudUJ1aWxkZXI8VD4pID0+IHZvaWQpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBidWlsZGVyKHtcbiAgICAgIGFkZENvbW1hbmQoZmFjdG9yeTogQ29tbWFuZC5GYWN0b3J5PFQ+LCBmYWNlOiBDb21tYW5kRmFjZSkge1xuICAgICAgICBzZWxmLm1vcmVBY3Rpb25zLnB1c2gobmV3IENvbW1hbmREYXRhKGZhY3RvcnksIGZhY2UpKTtcbiAgICAgIH0sXG4gICAgICBhZGRTZXBhcmF0b3IoKSB7XG4gICAgICAgIHNlbGYubW9yZUFjdGlvbnMucHVzaChudWxsKTtcbiAgICAgIH0sXG4gICAgICBhZGREb3dubG9hZChmYWN0b3J5OiAocm93OiBUKSA9PiBGaWxlRG93bmxvYWRDb21wb25lbnQuRG93bmxvYWRJbmZvKSB7XG4gICAgICAgIHNlbGYubW9yZUFjdGlvbnMucHVzaChuZXcgRG93bmxvYWREYXRhKGZhY3RvcnkpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGNyZWF0ZU1vcmVNZW51Q29tbWFuZChpdGVtOiBDb21tYW5kRGF0YTxUPiwgdmFsdWU6IFQpOiBDb21tYW5kPHZvaWQ+IHtcbiAgLy8gICBjb25zdCB7IHdoZW4gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgLy8gICBjb25zdCBjb21tYW5kID0gaXRlbS5mYWN0b3J5LmNyZWF0ZSh2YWx1ZSwgeyBkaXNwb3NlZFdpdGg6IHRoaXMgfSk7XG4gIC8vICAgd2hlbihjb21tYW5kLmJ1c3kkKS5iZWNvbWVzRmFsc2V5KCgpID0+IHtcbiAgLy8gICAgIHRoaXMuY2xvc2VNb3JlTWVudSgpO1xuICAvLyAgIH0pO1xuICAvLyAgIHJldHVybiBjb21tYW5kO1xuICAvLyB9XG5cbiAgcHJpdmF0ZSBjbG9zZU1vcmVNZW51KCkge1xuICAgIHRoaXMubWVudS5jbG9zZU1lbnUoKTtcbiAgfVxuXG4gIGlzQ29tbWFuZChpdGVtOiBNZW51SXRlbTxUPik6IGl0ZW0gaXMgQ29tbWFuZERhdGE8VD4ge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgQ29tbWFuZERhdGE7XG4gIH1cblxuICBpc0Rvd25sb2FkKGl0ZW06IE1lbnVJdGVtPFQ+KTogaXRlbSBpcyBEb3dubG9hZERhdGE8VD4ge1xuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgRG93bmxvYWREYXRhO1xuICB9XG5cbiAgaXNTZXBhcmF0b3IoaXRlbTogTWVudUl0ZW08VD4pIHtcbiAgICByZXR1cm4gIWl0ZW07XG4gIH1cbn1cbiJdfQ==
@@ -4366,7 +4366,8 @@ class FooterRowModel {
4366
4366
  })(FooterRowModel || (FooterRowModel = {}));
4367
4367
  ProxyRegistry.registerOneTimeBinding(FooterRowModel);
4368
4368
 
4369
- class MenuItemData {
4369
+ // TODO: This performs poorly, lots of factory calls initial rendering and on mouse movements
4370
+ class CommandData {
4370
4371
  factory;
4371
4372
  face;
4372
4373
  constructor(factory, face) {
@@ -4374,6 +4375,15 @@ class MenuItemData {
4374
4375
  this.face = face;
4375
4376
  }
4376
4377
  }
4378
+ class DownloadData {
4379
+ createInfo;
4380
+ constructor(createInfo) {
4381
+ this.createInfo = createInfo;
4382
+ }
4383
+ createDownloadInfo(value) {
4384
+ return this.createInfo(value);
4385
+ }
4386
+ }
4377
4387
  /**
4378
4388
  *
4379
4389
  */
@@ -4382,83 +4392,104 @@ class TableActionColumnComponent extends DisposableComponent {
4382
4392
  menu;
4383
4393
  actions = [];
4384
4394
  moreActions = [];
4395
+ trackByIndex = Track.byIndex;
4396
+ constructor() {
4397
+ super();
4398
+ this.onInit(() => console.log("table action column init"));
4399
+ }
4385
4400
  addCommand(commandFactory, properties) {
4386
- this.actions.push(new MenuItemData(commandFactory, properties));
4401
+ this.actions.push(new CommandData(commandFactory, properties));
4387
4402
  }
4388
4403
  addSeparator() {
4389
4404
  this.actions.push(null);
4390
4405
  }
4406
+ addDownload(factory) {
4407
+ this.actions.push(new DownloadData(factory));
4408
+ }
4391
4409
  addMoreMenu(builder) {
4392
4410
  const self = this;
4393
4411
  builder({
4394
4412
  addCommand(factory, face) {
4395
- self.moreActions.push(new MenuItemData(factory, face));
4413
+ self.moreActions.push(new CommandData(factory, face));
4396
4414
  },
4397
4415
  addSeparator() {
4398
4416
  self.moreActions.push(null);
4417
+ },
4418
+ addDownload(factory) {
4419
+ self.moreActions.push(new DownloadData(factory));
4399
4420
  }
4400
4421
  });
4401
4422
  }
4402
- constructor() {
4403
- super();
4404
- }
4405
- createMoreMenuCommand(item, value) {
4406
- const { when } = Dsl.disposeWith(this);
4407
- const command = item.factory.create(value, { disposedWith: this });
4408
- when(command.busy$).becomesFalsey(() => {
4409
- this.closeMoreMenu();
4410
- });
4411
- return command;
4412
- }
4423
+ // createMoreMenuCommand(item: CommandData<T>, value: T): Command<void> {
4424
+ // const { when } = Dsl.disposeWith(this);
4425
+ // const command = item.factory.create(value, { disposedWith: this });
4426
+ // when(command.busy$).becomesFalsey(() => {
4427
+ // this.closeMoreMenu();
4428
+ // });
4429
+ // return command;
4430
+ // }
4413
4431
  closeMoreMenu() {
4414
4432
  this.menu.closeMenu();
4415
4433
  }
4434
+ isCommand(item) {
4435
+ return item instanceof CommandData;
4436
+ }
4437
+ isDownload(item) {
4438
+ return item instanceof DownloadData;
4439
+ }
4440
+ isSeparator(item) {
4441
+ return !item;
4442
+ }
4416
4443
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableActionColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4417
4444
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableActionColumnComponent, selector: "aup-table-action-column", inputs: { value: "value" }, viewQueries: [{ propertyName: "menu", first: true, predicate: MatMenuTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: `
4418
4445
  <aup-tool-bar>
4419
- <ng-container *ngFor="let action of actions">
4420
- <aup-command *ngIf="action"
4446
+ <ng-container *ngFor="let action of actions;trackBy: trackByIndex">
4447
+ <aup-command *ngIf="isCommand(action)"
4421
4448
  #comp
4422
4449
  [command]="action.factory.create(value, {disposedWith: comp})"
4423
- [face]="action.face"></aup-command>
4424
- <aup-separator *ngIf="!action"/>
4450
+ [face]="action.face" />
4451
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
4452
+ <aup-separator *ngIf="isSeparator(action)" />
4425
4453
  </ng-container>
4426
4454
  </aup-tool-bar>
4427
4455
  <ng-container *ngIf="moreActions.length > 0">
4428
- <aup-flex class="flex"/>
4456
+ <aup-flex class="flex" />
4429
4457
  <aup-more-menu>
4430
- <ng-container *ngFor="let action of moreActions">
4431
- <aup-command *ngIf="action"
4458
+ <ng-container *ngFor="let action of moreActions; trackBy: trackByIndex">
4459
+ <aup-command *ngIf="isCommand(action)"
4432
4460
  #comp
4433
4461
  [command]="action.factory.create(value, {disposedWith: comp})"
4434
- [face]="action.face"></aup-command>
4435
- <aup-separator *ngIf="!action"/>
4462
+ [face]="action.face" />
4463
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
4464
+ <aup-separator *ngIf="isSeparator(action)" />
4436
4465
  </ng-container>
4437
4466
  </aup-more-menu>
4438
4467
  </ng-container>
4439
- `, isInline: true, styles: [":host{display:inline-flex;flex-direction:row;align-items:center}:host:last-child{padding-right:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolBarComponent, selector: "aup-tool-bar" }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: MoreMenuComponent, selector: "aup-more-menu", inputs: ["tooltip"] }, { kind: "component", type: SeparatorComponent, selector: "aup-separator" }, { kind: "component", type: FlexComponent, selector: "aup-flex" }] });
4468
+ `, isInline: true, styles: [":host{display:inline-flex;flex-direction:row;align-items:center}:host:last-child{padding-right:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToolBarComponent, selector: "aup-tool-bar" }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }, { kind: "component", type: MoreMenuComponent, selector: "aup-more-menu", inputs: ["tooltip"] }, { kind: "component", type: SeparatorComponent, selector: "aup-separator" }, { kind: "component", type: FlexComponent, selector: "aup-flex" }, { kind: "component", type: FileDownloadComponent, selector: "aup-file-download", inputs: ["download$", "download", "alignFace"] }] });
4440
4469
  }
4441
4470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableActionColumnComponent, decorators: [{
4442
4471
  type: Component,
4443
4472
  args: [{ selector: 'aup-table-action-column', template: `
4444
4473
  <aup-tool-bar>
4445
- <ng-container *ngFor="let action of actions">
4446
- <aup-command *ngIf="action"
4474
+ <ng-container *ngFor="let action of actions;trackBy: trackByIndex">
4475
+ <aup-command *ngIf="isCommand(action)"
4447
4476
  #comp
4448
4477
  [command]="action.factory.create(value, {disposedWith: comp})"
4449
- [face]="action.face"></aup-command>
4450
- <aup-separator *ngIf="!action"/>
4478
+ [face]="action.face" />
4479
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
4480
+ <aup-separator *ngIf="isSeparator(action)" />
4451
4481
  </ng-container>
4452
4482
  </aup-tool-bar>
4453
4483
  <ng-container *ngIf="moreActions.length > 0">
4454
- <aup-flex class="flex"/>
4484
+ <aup-flex class="flex" />
4455
4485
  <aup-more-menu>
4456
- <ng-container *ngFor="let action of moreActions">
4457
- <aup-command *ngIf="action"
4486
+ <ng-container *ngFor="let action of moreActions; trackBy: trackByIndex">
4487
+ <aup-command *ngIf="isCommand(action)"
4458
4488
  #comp
4459
4489
  [command]="action.factory.create(value, {disposedWith: comp})"
4460
- [face]="action.face"></aup-command>
4461
- <aup-separator *ngIf="!action"/>
4490
+ [face]="action.face" />
4491
+ <aup-file-download *ngIf="isDownload(action)" [download]="action.createDownloadInfo(value)" />
4492
+ <aup-separator *ngIf="isSeparator(action)" />
4462
4493
  </ng-container>
4463
4494
  </aup-more-menu>
4464
4495
  </ng-container>