@energinet/watt 4.0.3 → 4.0.5

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.
@@ -89,7 +89,9 @@ export class WattDataTableComponent {
89
89
  <vater-flex [autoSize]="autoSize()" fill="vertical">
90
90
  <ng-content select="watt-table" />
91
91
  @if (
92
- enableEmptyState() && !table().loading && table().dataSource().filteredData.length === 0
92
+ enableEmptyState() &&
93
+ !table().loading() &&
94
+ table().dataSource().filteredData.length === 0
93
95
  ) {
94
96
  <vater-flex [autoSize]="autoSize()" fill="vertical">
95
97
  <vater-stack scrollable justify="center">
@@ -167,7 +169,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
167
169
  <vater-flex [autoSize]="autoSize()" fill="vertical">
168
170
  <ng-content select="watt-table" />
169
171
  @if (
170
- enableEmptyState() && !table().loading && table().dataSource().filteredData.length === 0
172
+ enableEmptyState() &&
173
+ !table().loading() &&
174
+ table().dataSource().filteredData.length === 0
171
175
  ) {
172
176
  <vater-flex [autoSize]="autoSize()" fill="vertical">
173
177
  <vater-stack scrollable justify="center">
@@ -199,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
199
203
  </watt-card>
200
204
  `, styles: ["watt-data-table h3,watt-data-table h4{line-height:44px;min-height:44px;margin:0}watt-data-table watt-paginator{display:block;margin:calc(-1 * var(--watt-space-m)) -24px -24px}watt-data-table watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:none}watt-data-table watt-empty-state{margin:var(--watt-space-xl) 0}\n"] }]
201
205
  }] });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kYXRhLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL2RhdGEvd2F0dC1kYXRhLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHFCQUFxQixHQUN0QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUczRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUF5Ry9ELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRW5DLEtBQUssR0FBRyxLQUFLLDJEQUFXLENBQUM7SUFDekIsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLGlEQUFDLENBQUM7SUFDcEIsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLHdEQUFDLENBQUM7SUFDM0IsVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLHNEQUFDLENBQUM7SUFDekIsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLGtEQUFDLENBQUM7SUFDckIsV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLHVEQUFDLENBQUM7SUFDM0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLHVEQUFDLENBQUM7SUFDMUIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksNERBQUMsQ0FBQztJQUMvQixTQUFTLEdBQUcsS0FBSywrREFBVSxDQUFDO0lBQzVCLFdBQVcsR0FBRyxLQUFLLGlFQUFVLENBQUM7SUFDOUIsZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLDJEQUFDLENBQUM7SUFDOUIsS0FBSyxHQUFHLEtBQUssMkRBQVUsQ0FBQztJQUN4QixRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztJQUN4QixPQUFPLEdBQUcsS0FBSyxDQUFvQixXQUFXLG1EQUFDLENBQUM7SUFDaEQsY0FBYyxHQUFHLEtBQUssQ0FDcEIsUUFBUSwwREFDVCxDQUFDO0lBRUYsS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ2pCLFdBQVcsR0FBRyxNQUFNLEVBQWEsQ0FBQztJQUNsQyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFakIsS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQSxrQkFBMkIsQ0FBQSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFbEYsTUFBTSxHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsa0RBQUMsQ0FBQztJQUN4QyxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRXJDLFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO3VHQWpDVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiw2cEVBeUJILENBQUEsa0JBQTJCLENBQUEsd0dBRXRDLG1CQUFtQixnRUE3RjVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0VULHVhQWxHQyxrQkFBa0IsMkZBQ2xCLG9CQUFvQix5RUFDcEIsbUJBQW1CLHVFQUNuQixxQkFBcUIsdUdBQ3JCLGlCQUFpQixzRkFDakIsdUJBQXVCLHNIQUN2QixzQkFBc0Isd0pBQ3RCLG1CQUFtQixnSUFDbkIsbUJBQW1COzsyRkE0RlYsc0JBQXNCO2tCQXZHbEMsU0FBUzsrQkFDRSxpQkFBaUIsV0FDbEI7d0JBQ1Asa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxZQXdCM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnRVQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb250ZW50Q2hpbGQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5cbmltcG9ydCB7XG4gIFZhdGVyRmxleENvbXBvbmVudCxcbiAgVmF0ZXJTcGFjZXJDb21wb25lbnQsXG4gIFZhdGVyU3RhY2tDb21wb25lbnQsXG4gIFZhdGVyVXRpbGl0eURpcmVjdGl2ZSxcbn0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3ZhdGVyJztcbmltcG9ydCB7IFdBVFRfQ0FSRF9WQVJJQU5ULCBXYXR0Q2FyZENvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9jYXJkJztcbmltcG9ydCB7IFdhdHRCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvYnV0dG9uJztcbmltcG9ydCB7IFdhdHRFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2VtcHR5LXN0YXRlJztcbmltcG9ydCB7IFdhdHRQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvcGFnaW5hdG9yJztcbmltcG9ydCB7IFdhdHRTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvc2VhcmNoJztcbmltcG9ydCB7IFdhdHRUYWJsZUNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC90YWJsZSc7XG5pbXBvcnQgeyBXYXR0SWNvbiB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcblxuaW1wb3J0IHsgV2F0dERhdGFJbnRsU2VydmljZSB9IGZyb20gJy4vd2F0dC1kYXRhLWludGwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhdHQtZGF0YS10YWJsZScsXG4gIGltcG9ydHM6IFtcbiAgICBWYXRlckZsZXhDb21wb25lbnQsXG4gICAgVmF0ZXJTcGFjZXJDb21wb25lbnQsXG4gICAgVmF0ZXJTdGFja0NvbXBvbmVudCxcbiAgICBWYXRlclV0aWxpdHlEaXJlY3RpdmUsXG4gICAgV2F0dENhcmRDb21wb25lbnQsXG4gICAgV2F0dEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgV2F0dFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBXYXR0U2VhcmNoQ29tcG9uZW50LFxuICAgIFdhdHRCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIHdhdHQtZGF0YS10YWJsZSBoMyxcbiAgICAgIHdhdHQtZGF0YS10YWJsZSBoNCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA0NHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA0NHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIHdhdHQtZGF0YS10YWJsZSB3YXR0LXBhZ2luYXRvciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IGNhbGMoLTEgKiB2YXIoLS13YXR0LXNwYWNlLW0pKSAtMjRweCAtMjRweDtcbiAgICAgIH1cblxuICAgICAgd2F0dC1kYXRhLXRhYmxlIHdhdHQtdGFibGUgLm1hdC1tZGMtdGFibGUgdHIubWRjLWRhdGEtdGFibGVfX3JvdzpsYXN0LWNoaWxkIC5tYXQtbWRjLWNlbGwge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgfVxuXG4gICAgICB3YXR0LWRhdGEtdGFibGUgd2F0dC1lbXB0eS1zdGF0ZSB7XG4gICAgICAgIG1hcmdpbjogdmFyKC0td2F0dC1zcGFjZS14bCkgMDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx3YXR0LWNhcmQgdmF0ZXIgZmlsbD1cInZlcnRpY2FsXCIgW3ZhcmlhbnRdPVwidmFyaWFudCgpXCI+XG4gICAgICA8dmF0ZXItZmxleCBhdXRvU2l6ZSBmaWxsPVwidmVydGljYWxcIiBnYXA9XCJtXCI+XG4gICAgICAgIEBpZiAoaGVhZGVyKCkpIHtcbiAgICAgICAgICA8dmF0ZXItc3RhY2sgZGlyZWN0aW9uPVwicm93XCIgZ2FwPVwibVwiPlxuICAgICAgICAgICAgPHZhdGVyLXN0YWNrIGRpcmVjdGlvbj1cInJvd1wiIGdhcD1cInNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaDNcIiAvPlxuICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJoNFwiIC8+XG4gICAgICAgICAgICAgIEBpZiAoZW5hYmxlQ291bnQoKSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2F0dC1jaGlwLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb3VudCgpID8/IHRhYmxlKCkuZGF0YVNvdXJjZSgpLnRvdGFsQ291bnQgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChxdWVyeVRpbWUoKSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2F0dC1sYWJlbFwiPmluIHt7IHF1ZXJ5VGltZSgpIH19IG1zPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3ZhdGVyLXN0YWNrPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgICAgIDx2YXRlci1zcGFjZXIgLz5cbiAgICAgICAgICAgIEBpZiAoZW5hYmxlU2VhcmNoKCkpIHtcbiAgICAgICAgICAgICAgPHdhdHQtc2VhcmNoXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNlYXJjaExhYmVsKCkgPz8gaW50bC5zZWFyY2hcIlxuICAgICAgICAgICAgICAgIFt0cmltXT1cInRyaW1TZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgKHNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIndhdHQtZGF0YS1hY3Rpb25zXCIgLz5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIndhdHQtYnV0dG9uXCIgLz5cbiAgICAgICAgICA8L3ZhdGVyLXN0YWNrPlxuICAgICAgICB9XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIndhdHQtZGF0YS1maWx0ZXJzXCIgLz5cbiAgICAgICAgPHZhdGVyLWZsZXggW2F1dG9TaXplXT1cImF1dG9TaXplKClcIiBmaWxsPVwidmVydGljYWxcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ3YXR0LXRhYmxlXCIgLz5cbiAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgZW5hYmxlRW1wdHlTdGF0ZSgpICYmICF0YWJsZSgpLmxvYWRpbmcgJiYgdGFibGUoKS5kYXRhU291cmNlKCkuZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgPHZhdGVyLWZsZXggW2F1dG9TaXplXT1cImF1dG9TaXplKClcIiBmaWxsPVwidmVydGljYWxcIj5cbiAgICAgICAgICAgICAgPHZhdGVyLXN0YWNrIHNjcm9sbGFibGUganVzdGlmeT1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDx3YXR0LWVtcHR5LXN0YXRlXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCJlcnJvcigpID8gJ2N1c3RvbS1wb3dlcicgOiByZWFkeSgpID8gZW1wdHlTdGF0ZUljb24oKSA6ICdjdXN0b20tZXhwbG9yZSdcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICBlcnJvcigpID8gaW50bC5lcnJvclRpdGxlIDogcmVhZHkoKSA/IGludGwuZW1wdHlUaXRsZSA6IGludGwuZGVmYXVsdFRpdGxlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwiZXJyb3IoKSA/IGludGwuZXJyb3JUZXh0IDogcmVhZHkoKSA/IGludGwuZW1wdHlUZXh0IDogaW50bC5kZWZhdWx0VGV4dFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChlbmFibGVSZXRyeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDx3YXR0LWJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cInJldHJ5LmVtaXQoKVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgaW50bC5lbXB0eVJldHJ5XG4gICAgICAgICAgICAgICAgICAgIH19PC93YXR0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3dhdHQtZW1wdHktc3RhdGU+XG4gICAgICAgICAgICAgIDwvdmF0ZXItc3RhY2s+XG4gICAgICAgICAgICA8L3ZhdGVyLWZsZXg+XG4gICAgICAgICAgfVxuICAgICAgICA8L3ZhdGVyLWZsZXg+XG4gICAgICAgIEBpZiAoZW5hYmxlUGFnaW5hdG9yKCkpIHtcbiAgICAgICAgICA8d2F0dC1wYWdpbmF0b3JcbiAgICAgICAgICAgIFtmb3JdPVwidGFibGUoKS5kYXRhU291cmNlKClcIlxuICAgICAgICAgICAgW2xlbmd0aF09XCJjb3VudCgpID8/IDBcIlxuICAgICAgICAgICAgKGNoYW5nZWQpPVwicGFnZUNoYW5nZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L3ZhdGVyLWZsZXg+XG4gICAgPC93YXR0LWNhcmQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHREYXRhVGFibGVDb21wb25lbnQge1xuICBpbnRsID0gaW5qZWN0KFdhdHREYXRhSW50bFNlcnZpY2UpO1xuXG4gIGVycm9yID0gaW5wdXQ8dW5rbm93bj4oKTtcbiAgcmVhZHkgPSBpbnB1dCh0cnVlKTtcbiAgZW5hYmxlU2VhcmNoID0gaW5wdXQodHJ1ZSk7XG4gIHRyaW1TZWFyY2ggPSBpbnB1dCh0cnVlKTtcbiAgaGVhZGVyID0gaW5wdXQodHJ1ZSk7XG4gIGVuYWJsZVJldHJ5ID0gaW5wdXQoZmFsc2UpO1xuICBlbmFibGVDb3VudCA9IGlucHV0KHRydWUpO1xuICBlbmFibGVFbXB0eVN0YXRlID0gaW5wdXQodHJ1ZSk7XG4gIHF1ZXJ5VGltZSA9IGlucHV0PG51bWJlcj4oKTtcbiAgc2VhcmNoTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGVuYWJsZVBhZ2luYXRvciA9IGlucHV0KHRydWUpO1xuICBjb3VudCA9IGlucHV0PG51bWJlcj4oKTtcbiAgYXV0b1NpemUgPSBpbnB1dChmYWxzZSk7XG4gIHZhcmlhbnQgPSBpbnB1dDxXQVRUX0NBUkRfVkFSSUFOVD4oJ2VsZXZhdGlvbicpO1xuICBlbXB0eVN0YXRlSWNvbiA9IGlucHV0PFdhdHRJY29uIHwgJ2N1c3RvbS1wb3dlcicgfCAnY3VzdG9tLWV4cGxvcmUnIHwgJ2N1c3RvbS1uby1yZXN1bHRzJz4oXG4gICAgJ2NhbmNlbCdcbiAgKTtcblxuICBjbGVhciA9IG91dHB1dCgpO1xuICBwYWdlQ2hhbmdlZCA9IG91dHB1dDxQYWdlRXZlbnQ+KCk7XG4gIHJldHJ5ID0gb3V0cHV0KCk7XG5cbiAgdGFibGUgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoV2F0dFRhYmxlQ29tcG9uZW50PHVua25vd24+LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pO1xuXG4gIHNlYXJjaCA9IHZpZXdDaGlsZChXYXR0U2VhcmNoQ29tcG9uZW50KTtcbiAgcmVzZXQgPSAoKSA9PiB0aGlzLnNlYXJjaCgpPy5jbGVhcigpO1xuXG4gIG9uU2VhcmNoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhYmxlKCkuZGF0YVNvdXJjZSgpLmZpbHRlciA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHRoaXMuY2xlYXIuZW1pdCgpO1xuICB9XG59XG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kYXRhLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL2RhdGEvd2F0dC1kYXRhLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHFCQUFxQixHQUN0QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUczRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUEyRy9ELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRW5DLEtBQUssR0FBRyxLQUFLLDJEQUFXLENBQUM7SUFDekIsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLGlEQUFDLENBQUM7SUFDcEIsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLHdEQUFDLENBQUM7SUFDM0IsVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLHNEQUFDLENBQUM7SUFDekIsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLGtEQUFDLENBQUM7SUFDckIsV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLHVEQUFDLENBQUM7SUFDM0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLHVEQUFDLENBQUM7SUFDMUIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksNERBQUMsQ0FBQztJQUMvQixTQUFTLEdBQUcsS0FBSywrREFBVSxDQUFDO0lBQzVCLFdBQVcsR0FBRyxLQUFLLGlFQUFVLENBQUM7SUFDOUIsZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLDJEQUFDLENBQUM7SUFDOUIsS0FBSyxHQUFHLEtBQUssMkRBQVUsQ0FBQztJQUN4QixRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztJQUN4QixPQUFPLEdBQUcsS0FBSyxDQUFvQixXQUFXLG1EQUFDLENBQUM7SUFDaEQsY0FBYyxHQUFHLEtBQUssQ0FDcEIsUUFBUSwwREFDVCxDQUFDO0lBRUYsS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ2pCLFdBQVcsR0FBRyxNQUFNLEVBQWEsQ0FBQztJQUNsQyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFakIsS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQSxrQkFBMkIsQ0FBQSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFbEYsTUFBTSxHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsa0RBQUMsQ0FBQztJQUN4QyxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRXJDLFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO3VHQWpDVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiw2cEVBeUJILENBQUEsa0JBQTJCLENBQUEsd0dBRXRDLG1CQUFtQixnRUEvRjVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRVQsdWFBcEdDLGtCQUFrQiwyRkFDbEIsb0JBQW9CLHlFQUNwQixtQkFBbUIsdUVBQ25CLHFCQUFxQix1R0FDckIsaUJBQWlCLHNGQUNqQix1QkFBdUIsc0hBQ3ZCLHNCQUFzQix3SkFDdEIsbUJBQW1CLGdJQUNuQixtQkFBbUI7OzJGQThGVixzQkFBc0I7a0JBekdsQyxTQUFTOytCQUNFLGlCQUFpQixXQUNsQjt3QkFDUCxrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3FCQUNwQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLFlBd0IzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0VUIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29udGVudENoaWxkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuXG5pbXBvcnQge1xuICBWYXRlckZsZXhDb21wb25lbnQsXG4gIFZhdGVyU3BhY2VyQ29tcG9uZW50LFxuICBWYXRlclN0YWNrQ29tcG9uZW50LFxuICBWYXRlclV0aWxpdHlEaXJlY3RpdmUsXG59IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC92YXRlcic7XG5pbXBvcnQgeyBXQVRUX0NBUkRfVkFSSUFOVCwgV2F0dENhcmRDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY2FyZCc7XG5pbXBvcnQgeyBXYXR0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2J1dHRvbic7XG5pbXBvcnQgeyBXYXR0RW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9lbXB0eS1zdGF0ZSc7XG5pbXBvcnQgeyBXYXR0UGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3BhZ2luYXRvcic7XG5pbXBvcnQgeyBXYXR0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3NlYXJjaCc7XG5pbXBvcnQgeyBXYXR0VGFibGVDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvdGFibGUnO1xuaW1wb3J0IHsgV2F0dEljb24gfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvaWNvbic7XG5cbmltcG9ydCB7IFdhdHREYXRhSW50bFNlcnZpY2UgfSBmcm9tICcuL3dhdHQtZGF0YS1pbnRsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YXR0LWRhdGEtdGFibGUnLFxuICBpbXBvcnRzOiBbXG4gICAgVmF0ZXJGbGV4Q29tcG9uZW50LFxuICAgIFZhdGVyU3BhY2VyQ29tcG9uZW50LFxuICAgIFZhdGVyU3RhY2tDb21wb25lbnQsXG4gICAgVmF0ZXJVdGlsaXR5RGlyZWN0aXZlLFxuICAgIFdhdHRDYXJkQ29tcG9uZW50LFxuICAgIFdhdHRFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFdhdHRQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgV2F0dFNlYXJjaENvbXBvbmVudCxcbiAgICBXYXR0QnV0dG9uQ29tcG9uZW50LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICB3YXR0LWRhdGEtdGFibGUgaDMsXG4gICAgICB3YXR0LWRhdGEtdGFibGUgaDQge1xuICAgICAgICBsaW5lLWhlaWdodDogNDRweDtcbiAgICAgICAgbWluLWhlaWdodDogNDRweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICB3YXR0LWRhdGEtdGFibGUgd2F0dC1wYWdpbmF0b3Ige1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiBjYWxjKC0xICogdmFyKC0td2F0dC1zcGFjZS1tKSkgLTI0cHggLTI0cHg7XG4gICAgICB9XG5cbiAgICAgIHdhdHQtZGF0YS10YWJsZSB3YXR0LXRhYmxlIC5tYXQtbWRjLXRhYmxlIHRyLm1kYy1kYXRhLXRhYmxlX19yb3c6bGFzdC1jaGlsZCAubWF0LW1kYy1jZWxsIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgd2F0dC1kYXRhLXRhYmxlIHdhdHQtZW1wdHktc3RhdGUge1xuICAgICAgICBtYXJnaW46IHZhcigtLXdhdHQtc3BhY2UteGwpIDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8d2F0dC1jYXJkIHZhdGVyIGZpbGw9XCJ2ZXJ0aWNhbFwiIFt2YXJpYW50XT1cInZhcmlhbnQoKVwiPlxuICAgICAgPHZhdGVyLWZsZXggYXV0b1NpemUgZmlsbD1cInZlcnRpY2FsXCIgZ2FwPVwibVwiPlxuICAgICAgICBAaWYgKGhlYWRlcigpKSB7XG4gICAgICAgICAgPHZhdGVyLXN0YWNrIGRpcmVjdGlvbj1cInJvd1wiIGdhcD1cIm1cIj5cbiAgICAgICAgICAgIDx2YXRlci1zdGFjayBkaXJlY3Rpb249XCJyb3dcIiBnYXA9XCJzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImgzXCIgLz5cbiAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaDRcIiAvPlxuICAgICAgICAgICAgICBAaWYgKGVuYWJsZUNvdW50KCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndhdHQtY2hpcC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAge3sgY291bnQoKSA/PyB0YWJsZSgpLmRhdGFTb3VyY2UoKS50b3RhbENvdW50IH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAocXVlcnlUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndhdHQtbGFiZWxcIj5pbiB7eyBxdWVyeVRpbWUoKSB9fSBtczwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC92YXRlci1zdGFjaz5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8dmF0ZXItc3BhY2VyIC8+XG4gICAgICAgICAgICBAaWYgKGVuYWJsZVNlYXJjaCgpKSB7XG4gICAgICAgICAgICAgIDx3YXR0LXNlYXJjaFxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzZWFyY2hMYWJlbCgpID8/IGludGwuc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbdHJpbV09XCJ0cmltU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIChzZWFyY2gpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ3YXR0LWRhdGEtYWN0aW9uc1wiIC8+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ3YXR0LWJ1dHRvblwiIC8+XG4gICAgICAgICAgPC92YXRlci1zdGFjaz5cbiAgICAgICAgfVxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJ3YXR0LWRhdGEtZmlsdGVyc1wiIC8+XG4gICAgICAgIDx2YXRlci1mbGV4IFthdXRvU2l6ZV09XCJhdXRvU2l6ZSgpXCIgZmlsbD1cInZlcnRpY2FsXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwid2F0dC10YWJsZVwiIC8+XG4gICAgICAgICAgQGlmIChcbiAgICAgICAgICAgIGVuYWJsZUVtcHR5U3RhdGUoKSAmJlxuICAgICAgICAgICAgIXRhYmxlKCkubG9hZGluZygpICYmXG4gICAgICAgICAgICB0YWJsZSgpLmRhdGFTb3VyY2UoKS5maWx0ZXJlZERhdGEubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICA8dmF0ZXItZmxleCBbYXV0b1NpemVdPVwiYXV0b1NpemUoKVwiIGZpbGw9XCJ2ZXJ0aWNhbFwiPlxuICAgICAgICAgICAgICA8dmF0ZXItc3RhY2sgc2Nyb2xsYWJsZSBqdXN0aWZ5PVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHdhdHQtZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cImVycm9yKCkgPyAnY3VzdG9tLXBvd2VyJyA6IHJlYWR5KCkgPyBlbXB0eVN0YXRlSWNvbigpIDogJ2N1c3RvbS1leHBsb3JlJ1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIGVycm9yKCkgPyBpbnRsLmVycm9yVGl0bGUgOiByZWFkeSgpID8gaW50bC5lbXB0eVRpdGxlIDogaW50bC5kZWZhdWx0VGl0bGVcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJlcnJvcigpID8gaW50bC5lcnJvclRleHQgOiByZWFkeSgpID8gaW50bC5lbXB0eVRleHQgOiBpbnRsLmRlZmF1bHRUZXh0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKGVuYWJsZVJldHJ5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHdhdHQtYnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwicmV0cnkuZW1pdCgpXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBpbnRsLmVtcHR5UmV0cnlcbiAgICAgICAgICAgICAgICAgICAgfX08L3dhdHQtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvd2F0dC1lbXB0eS1zdGF0ZT5cbiAgICAgICAgICAgICAgPC92YXRlci1zdGFjaz5cbiAgICAgICAgICAgIDwvdmF0ZXItZmxleD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdmF0ZXItZmxleD5cbiAgICAgICAgQGlmIChlbmFibGVQYWdpbmF0b3IoKSkge1xuICAgICAgICAgIDx3YXR0LXBhZ2luYXRvclxuICAgICAgICAgICAgW2Zvcl09XCJ0YWJsZSgpLmRhdGFTb3VyY2UoKVwiXG4gICAgICAgICAgICBbbGVuZ3RoXT1cImNvdW50KCkgPz8gMFwiXG4gICAgICAgICAgICAoY2hhbmdlZCk9XCJwYWdlQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIDwvdmF0ZXItZmxleD5cbiAgICA8L3dhdHQtY2FyZD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dERhdGFUYWJsZUNvbXBvbmVudCB7XG4gIGludGwgPSBpbmplY3QoV2F0dERhdGFJbnRsU2VydmljZSk7XG5cbiAgZXJyb3IgPSBpbnB1dDx1bmtub3duPigpO1xuICByZWFkeSA9IGlucHV0KHRydWUpO1xuICBlbmFibGVTZWFyY2ggPSBpbnB1dCh0cnVlKTtcbiAgdHJpbVNlYXJjaCA9IGlucHV0KHRydWUpO1xuICBoZWFkZXIgPSBpbnB1dCh0cnVlKTtcbiAgZW5hYmxlUmV0cnkgPSBpbnB1dChmYWxzZSk7XG4gIGVuYWJsZUNvdW50ID0gaW5wdXQodHJ1ZSk7XG4gIGVuYWJsZUVtcHR5U3RhdGUgPSBpbnB1dCh0cnVlKTtcbiAgcXVlcnlUaW1lID0gaW5wdXQ8bnVtYmVyPigpO1xuICBzZWFyY2hMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgZW5hYmxlUGFnaW5hdG9yID0gaW5wdXQodHJ1ZSk7XG4gIGNvdW50ID0gaW5wdXQ8bnVtYmVyPigpO1xuICBhdXRvU2l6ZSA9IGlucHV0KGZhbHNlKTtcbiAgdmFyaWFudCA9IGlucHV0PFdBVFRfQ0FSRF9WQVJJQU5UPignZWxldmF0aW9uJyk7XG4gIGVtcHR5U3RhdGVJY29uID0gaW5wdXQ8V2F0dEljb24gfCAnY3VzdG9tLXBvd2VyJyB8ICdjdXN0b20tZXhwbG9yZScgfCAnY3VzdG9tLW5vLXJlc3VsdHMnPihcbiAgICAnY2FuY2VsJ1xuICApO1xuXG4gIGNsZWFyID0gb3V0cHV0KCk7XG4gIHBhZ2VDaGFuZ2VkID0gb3V0cHV0PFBhZ2VFdmVudD4oKTtcbiAgcmV0cnkgPSBvdXRwdXQoKTtcblxuICB0YWJsZSA9IGNvbnRlbnRDaGlsZC5yZXF1aXJlZChXYXR0VGFibGVDb21wb25lbnQ8dW5rbm93bj4sIHsgZGVzY2VuZGFudHM6IHRydWUgfSk7XG5cbiAgc2VhcmNoID0gdmlld0NoaWxkKFdhdHRTZWFyY2hDb21wb25lbnQpO1xuICByZXNldCA9ICgpID0+IHRoaXMuc2VhcmNoKCk/LmNsZWFyKCk7XG5cbiAgb25TZWFyY2godmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudGFibGUoKS5kYXRhU291cmNlKCkuZmlsdGVyID0gdmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkgdGhpcy5jbGVhci5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -17,5 +17,5 @@
17
17
  */
18
18
  //#endregion
19
19
  export { WattTableDataSource } from './watt-table-data-source';
20
- export { WattTableComponent, WattTableCellDirective, WattTableToolbarDirective, WattTableToolbarSpacerComponent, WATT_TABLE, } from './watt-table.component';
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFBd0IsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLFVBQVUsR0FDWCxNQUFNLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuZXhwb3J0IHsgSVdhdHRUYWJsZURhdGFTb3VyY2UsIFdhdHRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL3dhdHQtdGFibGUtZGF0YS1zb3VyY2UnO1xuZXhwb3J0IHtcbiAgdHlwZSBXYXR0VGFibGVDb2x1bW4sXG4gIHR5cGUgV2F0dFRhYmxlQ29sdW1uRGVmLFxuICBXYXR0VGFibGVDb21wb25lbnQsXG4gIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmUsXG4gIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmUsXG4gIFdhdHRUYWJsZVRvb2xiYXJTcGFjZXJDb21wb25lbnQsXG4gIFdBVFRfVEFCTEUsXG59IGZyb20gJy4vd2F0dC10YWJsZS5jb21wb25lbnQnO1xuIl19
20
+ export { WattTableComponent, WattTableCellDirective, WattTableToolbarDirective, WATT_TABLE, } from './watt-table.component';
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFBd0IsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsVUFBVSxHQUNYLE1BQU0sd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5leHBvcnQgeyBJV2F0dFRhYmxlRGF0YVNvdXJjZSwgV2F0dFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vd2F0dC10YWJsZS1kYXRhLXNvdXJjZSc7XG5leHBvcnQge1xuICB0eXBlIFdhdHRUYWJsZUNvbHVtbixcbiAgdHlwZSBXYXR0VGFibGVDb2x1bW5EZWYsXG4gIFdhdHRUYWJsZUNvbXBvbmVudCxcbiAgV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgV2F0dFRhYmxlVG9vbGJhckRpcmVjdGl2ZSxcbiAgV0FUVF9UQUJMRSxcbn0gZnJvbSAnLi93YXR0LXRhYmxlLmNvbXBvbmVudCc7XG4iXX0=
@@ -17,14 +17,14 @@
17
17
  */
18
18
  //#endregion
19
19
  import { KeyValuePipe, NgClass, NgTemplateOutlet } from '@angular/common';
20
- import { Component, contentChild, contentChildren, Directive, ElementRef, inject, input, model, output, signal, TemplateRef, viewChild, viewChildren, ViewEncapsulation, } from '@angular/core';
20
+ import { Component, computed, contentChild, contentChildren, Directive, effect, inject, input, model, output, TemplateRef, viewChild, viewChildren, ViewEncapsulation, } from '@angular/core';
21
21
  import { outputFromObservable } from '@angular/core/rxjs-interop';
22
22
  import { FormsModule } from '@angular/forms';
23
23
  import { MatSort, MatSortModule } from '@angular/material/sort';
24
24
  import { MatTableModule } from '@angular/material/table';
25
25
  import { Subject } from 'rxjs';
26
26
  import { WattCheckboxComponent } from '@energinet/watt/checkbox';
27
- import { WattDatePipe } from '@energinet/watt/core/date';
27
+ import { wattFormatDate } from '@energinet/watt/core/date';
28
28
  import { WattIconComponent } from '@energinet/watt/icon';
29
29
  import { WattTableDataSource } from './watt-table-data-source';
30
30
  import { animateExpandableCells } from './watt-table-expand-animation';
@@ -174,11 +174,11 @@ export class WattTableComponent {
174
174
  * clickable or not. This is available on `EventEmitter`, but not on `output`,
175
175
  * which is why this workaround is used.
176
176
  */
177
- _rowClick$ = new Subject();
177
+ rowClick$ = new Subject();
178
178
  /**
179
179
  * Emits whenever a row is clicked.
180
180
  */
181
- rowClick = outputFromObservable(this._rowClick$);
181
+ rowClick = outputFromObservable(this.rowClick$);
182
182
  /**
183
183
  * Event emitted when the user changes the active sort or sort direction.
184
184
  */
@@ -187,9 +187,9 @@ export class WattTableComponent {
187
187
  cells = contentChildren((WattTableCellDirective), ...(ngDevMode ? [{ debugName: "cells" }] : []));
188
188
  toolbar = contentChild((WattTableToolbarDirective), ...(ngDevMode ? [{ debugName: "toolbar" }] : []));
189
189
  sort = viewChild(MatSort, ...(ngDevMode ? [{ debugName: "sort" }] : []));
190
+ // Enables animation for expanding/collapsing cells
190
191
  tableCellElements = viewChildren('td', ...(ngDevMode ? [{ debugName: "tableCellElements" }] : []));
191
- /** @ignore */
192
- _animationEffect = animateExpandableCells(this.tableCellElements, this.expanded);
192
+ animationEffect = animateExpandableCells(this.tableCellElements, this.expanded);
193
193
  // Selectable
194
194
  filterSelectionBy = (rows) => rows.filter((row) => this.selection().includes(row));
195
195
  getSelectionState = () => {
@@ -199,122 +199,61 @@ export class WattTableComponent {
199
199
  return false;
200
200
  return filteredSelection.length === this.dataSource().filteredData.length ? true : null;
201
201
  };
202
- /** @ignore */
203
- _checkboxColumn = '__checkboxColumn__';
204
- /** @ignore */
205
- _expandableColumn = '__expandableColumn__';
206
- /** @ignore */
207
- _element = inject(ElementRef);
208
- /** @ignore */
209
- _datePipe = inject(WattDatePipe);
210
- /** @ignore */
211
- _hasFooter = signal(false, ...(ngDevMode ? [{ debugName: "_hasFooter" }] : []));
212
- /** @ignore */
213
- formatCellData(cell) {
214
- if (!cell)
215
- return '—';
216
- if (cell instanceof Date)
217
- return this._datePipe.transform(cell);
218
- return cell;
219
- }
220
- /** @ignore */
221
- getCellData(row, column) {
222
- if (!column?.accessor)
223
- return null;
224
- const { accessor } = column;
225
- const cell = typeof accessor === 'function' ? accessor(row) : row[accessor];
226
- return this.formatCellData(cell);
227
- }
228
- /** @ignore */
229
- checkHasFooter() {
230
- this._hasFooter.set(Object.values(this.columns()).some((column) => !!column.footer));
231
- }
232
- ngAfterViewInit() {
233
- const dataSource = this.dataSource();
234
- if (dataSource === undefined)
235
- return;
236
- this.checkHasFooter();
237
- dataSource.sort = this.sort();
238
- if (dataSource instanceof WattTableDataSource === false)
239
- return;
240
- dataSource.sortingDataAccessor = (row, sortHeaderId) => {
241
- const sortColumn = this.columns()[sortHeaderId];
242
- if (!sortColumn?.accessor)
243
- return '';
244
- // Access raw value for sorting, instead of applying default formatting.
245
- const { accessor } = sortColumn;
246
- const cell = typeof accessor === 'function' ? accessor(row) : row[accessor];
247
- // Make sorting by text case insensitive.
248
- if (typeof cell === 'string')
249
- return cell.toLowerCase();
250
- if (cell instanceof Date)
251
- return cell.getTime();
252
- return cell;
253
- };
254
- }
255
- ngOnChanges(changes) {
256
- if (changes['columns'] || changes['displayedColumns'] || changes['selectable']) {
257
- const displayedColumns = this.displayedColumns();
258
- const sizing = Object.keys(this.columns())
259
- .filter((key) => !displayedColumns || displayedColumns.includes(key))
260
- .map((key) => this.columns()[key])
261
- .filter((column) => !column.expandable)
262
- .map((column) => column.size ?? 'auto');
263
- if (this.selectable()) {
264
- // Add space for extra checkbox column
265
- sizing.unshift('var(--watt-space-xl)');
266
- }
267
- if (this._isExpandable()) {
268
- // Add space for extra expandable column
269
- sizing.push('min-content');
270
- }
271
- this._element.nativeElement.style.setProperty('--watt-table-grid-template-columns', sizing.join(' '));
272
- this.checkHasFooter();
273
- }
274
- }
275
- /**
276
- * Clears the selection.
277
- */
278
- clearSelection = () => this.selection.set([]);
279
- /**
280
- * Toggles the selection of a row.
281
- */
282
- toggleSelection = (row) => this.selection.update((s) => (s.includes(row) ? s.filter((r) => r !== row) : s.concat(row)));
283
- /** @ignore */
284
- _getColumns() {
202
+ // Unique names for special columns
203
+ checkboxColumn = '__checkboxColumn__';
204
+ expandableColumn = '__expandableColumn__';
205
+ hasFooter = computed(() => Object.values(this.columns()).some((c) => c.footer), ...(ngDevMode ? [{ debugName: "hasFooter" }] : []));
206
+ isExpandable = computed(() => Object.values(this.columns()).some((c) => c.expandable), ...(ngDevMode ? [{ debugName: "isExpandable" }] : []));
207
+ renderedColumns = computed(() => {
285
208
  const columns = this.displayedColumns() ?? Object.keys(this.columns());
286
209
  return [
287
- ...(this.selectable() ? [this._checkboxColumn] : []),
210
+ ...(this.selectable() ? [this.checkboxColumn] : []),
288
211
  ...columns.filter((key) => !this.columns()[key].expandable),
289
- ...(this._isExpandable() ? [this._expandableColumn] : []),
212
+ ...(this.isExpandable() ? [this.expandableColumn] : []),
290
213
  ...columns.filter((key) => this.columns()[key].expandable),
291
214
  ];
292
- }
293
- /** @ignore */
294
- _getColumnTemplate(column) {
295
- return this.cells().find((item) => item.column() === column)?.templateRef;
296
- }
297
- /** @ignore */
298
- _getColumnHeader(column) {
215
+ }, ...(ngDevMode ? [{ debugName: "renderedColumns" }] : []));
216
+ sizing = computed(() => {
217
+ const columns = this.columns();
218
+ return this.renderedColumns()
219
+ .filter((key) => !columns[key]?.expandable)
220
+ .map((key) => {
221
+ switch (key) {
222
+ case this.checkboxColumn:
223
+ return 'var(--watt-space-xl)';
224
+ case this.expandableColumn:
225
+ return 'min-content';
226
+ default:
227
+ return columns[key]?.size ?? 'auto';
228
+ }
229
+ });
230
+ }, ...(ngDevMode ? [{ debugName: "sizing" }] : []));
231
+ /** Try to get cell data for a specific `column` and `row`. */
232
+ getCellData = (column, row) => {
233
+ if (column.cell)
234
+ return column.cell(row);
235
+ return !column.accessor
236
+ ? ''
237
+ : typeof column.accessor === 'function'
238
+ ? column.accessor(row)
239
+ : row[column.accessor];
240
+ };
241
+ getColumnTemplate = (column) => this.cells().find((item) => item.column() === column)?.templateRef;
242
+ getColumnHeader = (column) => {
299
243
  if (typeof column.value.header === 'string')
300
244
  return column.value.header;
301
245
  const cell = this.cells().find((item) => item.column() === column.value);
302
246
  return cell?.header() ?? this.resolveHeader()?.(column.key) ?? column.key;
303
- }
304
- /** @ignore */
305
- _getColumnHelperAction(column) {
306
- return column.value.helperAction;
307
- }
308
- /** @ignore */
309
- _getColumnHeaderTooltip(column) {
310
- return column.value.tooltip;
311
- }
312
- /** @ignore */
313
- _getColumnCell(column, row) {
314
- return column.value.cell?.(row) ?? this.getCellData(row, column.value);
315
- }
316
- /** @ignore */
317
- _getRowKey = (index, row) => {
247
+ };
248
+ getColumnCell = (column, row) => {
249
+ const cell = this.getCellData(column, row);
250
+ if (cell === undefined || cell === null)
251
+ return '—';
252
+ if (cell instanceof Date)
253
+ return wattFormatDate(cell);
254
+ return cell;
255
+ };
256
+ getRowKey = (index, row) => {
318
257
  const trackBy = this.trackBy();
319
258
  if (typeof trackBy === 'string')
320
259
  return row[trackBy];
@@ -322,29 +261,48 @@ export class WattTableComponent {
322
261
  return trackBy(index, row);
323
262
  return this.dataSource().data.indexOf(row);
324
263
  };
325
- /** @ignore */
326
- _isActiveRow(row) {
264
+ isActiveRow = (row) => {
327
265
  const activeRow = this.activeRow();
328
266
  const activeRowComparator = this.activeRowComparator();
329
267
  if (!activeRow)
330
268
  return false;
331
269
  return activeRowComparator ? activeRowComparator(row, activeRow) : row === activeRow;
332
- }
333
- /** @ignore */
334
- _isExpandable() {
335
- return Object.values(this.columns()).some((column) => column.expandable);
336
- }
337
- /** @ignore */
338
- _onRowClick(row) {
270
+ };
271
+ onRowClick = (row) => {
339
272
  if (this.disabled() || window.getSelection()?.toString() !== '')
340
273
  return;
341
- if (this._isExpandable()) {
274
+ if (this.isExpandable()) {
342
275
  this.expanded.update((rows) => rows.includes(row) ? rows.filter((r) => r != row) : [...rows, row]);
343
276
  }
344
- this._rowClick$.next(row);
277
+ this.rowClick$.next(row);
278
+ };
279
+ constructor() {
280
+ effect(() => {
281
+ const dataSource = this.dataSource();
282
+ dataSource.sort = this.sort();
283
+ if (!(dataSource instanceof WattTableDataSource))
284
+ return;
285
+ dataSource.sortingDataAccessor = (row, sortHeaderId) => {
286
+ const column = this.columns()[sortHeaderId];
287
+ const value = this.getCellData(column, row);
288
+ if (typeof value === 'string')
289
+ return value.toLowerCase(); // case insensitive sorting
290
+ if (value instanceof Date)
291
+ return value.getTime();
292
+ return value;
293
+ };
294
+ });
345
295
  }
296
+ /**
297
+ * Clears the selection.
298
+ */
299
+ clearSelection = () => this.selection.set([]);
300
+ /**
301
+ * Toggles the selection of a row.
302
+ */
303
+ toggleSelection = (row) => this.selection.update((s) => (s.includes(row) ? s.filter((r) => r !== row) : s.concat(row)));
346
304
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
347
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattTableComponent, isStandalone: true, selector: "watt-table", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, displayedColumns: { classPropertyName: "displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, stickyFooter: { classPropertyName: "stickyFooter", publicName: "stickyFooter", isSignal: true, isRequired: false, transformFunction: null }, resolveHeader: { classPropertyName: "resolveHeader", publicName: "resolveHeader", isSignal: true, isRequired: false, transformFunction: null }, sortBy: { classPropertyName: "sortBy", publicName: "sortBy", isSignal: true, isRequired: false, transformFunction: null }, sortDirection: { classPropertyName: "sortDirection", publicName: "sortDirection", isSignal: true, isRequired: false, transformFunction: null }, sortClear: { classPropertyName: "sortClear", publicName: "sortClear", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, suppressRowHoverHighlight: { classPropertyName: "suppressRowHoverHighlight", publicName: "suppressRowHoverHighlight", isSignal: true, isRequired: false, transformFunction: null }, activeRow: { classPropertyName: "activeRow", publicName: "activeRow", isSignal: true, isRequired: false, transformFunction: null }, activeRowComparator: { classPropertyName: "activeRowComparator", publicName: "activeRowComparator", isSignal: true, isRequired: false, transformFunction: null }, hideColumnHeaders: { classPropertyName: "hideColumnHeaders", publicName: "hideColumnHeaders", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selection: "selectionChange", expanded: "expandedChange", rowClick: "rowClick", sortChange: "sortChange" }, host: { properties: { "class.watt-table-variant-zebra": "variant() === \"zebra\"" } }, providers: [WattDatePipe], queries: [{ propertyName: "cells", predicate: (WattTableCellDirective), isSignal: true }, { propertyName: "toolbar", first: true, predicate: (WattTableToolbarDirective), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, isSignal: true }, { propertyName: "tableCellElements", predicate: ["td"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<table\n mat-table\n matSort\n role=\"treegrid\"\n [ngClass]=\"{ 'watt-table-has-selection': getSelectionState() !== false }\"\n [matSortActive]=\"sortBy()\"\n [matSortDirection]=\"sortDirection()\"\n [matSortDisableClear]=\"!sortClear()\"\n [dataSource]=\"dataSource()\"\n [attr.aria-label]=\"description()\"\n (matSortChange)=\"sortChange.emit($event)\"\n>\n @if (selectable()) {\n <ng-container [matColumnDef]=\"_checkboxColumn\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"getSelectionState()\"\n (ngModelChange)=\"$event ? selection.set(dataSource().filteredData) : clearSelection()\"\n />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"selection().includes(row)\"\n (ngModelChange)=\"toggleSelection(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n }\n\n <ng-container [matColumnDef]=\"_expandableColumn\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"_getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n (click)=\"_onRowClick(row)\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n >\n <watt-icon name=\"right\" size=\"xs\" />\n </td>\n </ng-container>\n\n @for (column of columns() | keyvalue; track column.key) {\n <ng-container [matColumnDef]=\"column.key\" [stickyEnd]=\"column.value.stickyEnd?.()\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{\n column.value.headerCellClass\n }}\"\n >\n @if (_getColumnHelperAction(column); as action) {\n <watt-icon name=\"help\" (click)=\"action()\" />\n }\n\n <div\n class=\"watt-table-header-cell\"\n mat-sort-header\n [arrowPosition]=\"column.value.align === 'right' ? 'before' : 'after'\"\n [disabled]=\"!column.value.accessor || column.value.sort === false\"\n >\n {{ _getColumnHeader(column) }}\n </div>\n @if (_getColumnHeaderTooltip(column); as tooltip) {\n <watt-icon [title]=\"tooltip\" name=\"info\" />\n }\n </th>\n\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"_getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{ column.value.dataCellClass }}\"\n (click)=\"!column.value.expandable && _onRowClick(row)\"\n >\n @if (_isExpandable()) {\n @defer (when !column.value.expandable || expanded().includes(row)) {\n @if (_getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ _getColumnCell(column, row) }}\n }\n }\n } @else {\n @if (_getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ _getColumnCell(column, row) }}\n }\n }\n </td>\n\n @if (_hasFooter()) {\n <td\n mat-footer-cell\n *matFooterCellDef\n class=\"{{ column.value.footer?.class }} watt-table-align-{{\n column.value.align ?? 'left'\n }} \"\n >\n {{ column.value.footer?.value?.() }}\n </td>\n }\n </ng-container>\n }\n\n <ng-container matColumnDef=\"spacer\">\n <td class=\"watt-table-footer-spacer\" mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (!hideColumnHeaders()) {\n <tr mat-header-row *matHeaderRowDef=\"_getColumns()\"></tr>\n }\n <tr\n mat-row\n *matRowDef=\"let row; columns: _getColumns()\"\n [attr.aria-selected]=\"row === activeRow()\"\n [ngClass]=\"{\n 'watt-table-highlight-row': !disabled() && !suppressRowHoverHighlight(),\n 'watt-table-clickable-row': !disabled() && _rowClick$.observed,\n 'watt-table-active-row': _isActiveRow(row),\n 'watt-table-no-end-divider': hideColumnHeaders(),\n }\"\n ></tr>\n\n @if (toolbar()) {\n <tr mat-footer-row *matFooterRowDef=\"['spacer']\"></tr>\n }\n\n @if (_hasFooter()) {\n <tr\n mat-footer-row\n [class.watt-table-hide-footer]=\"loading() || dataSource().filteredData.length === 0\"\n *matFooterRowDef=\"_getColumns(); sticky: stickyFooter()\"\n ></tr>\n }\n\n <ng-container *matNoDataRow>\n @if (loading()) {\n @for (i of [1, 2, 3]; track i) {\n <tr class=\"mat-mdc-row\">\n @for (_ of _getColumns(); track _; let i = $index) {\n <td class=\"mat-mdc-cell\" [class.watt-table-loading-cell]=\"i > 0 || !selectable()\"></td>\n }\n </tr>\n }\n }\n </ng-container>\n</table>\n\n@if (toolbar(); as toolbar) {\n <div class=\"watt-table-toolbar\" role=\"toolbar\">\n <ng-container\n *ngTemplateOutlet=\"\n toolbar.templateRef;\n context: { $implicit: filterSelectionBy(dataSource().filteredData) }\n \"\n />\n </div>\n}\n", styles: ["watt-table{--mat-table-row-item-label-text-font: $primary-font-family;--mat-table-row-item-outline-color: var(--watt-color-neutral-grey-300);--mat-table-header-headline-font: $primary-font-family}watt-table,watt-table .mat-mdc-table{display:grid;position:relative;overflow:auto;min-height:44px}watt-table .mat-mdc-table{grid-template-columns:var(--watt-table-grid-template-columns);grid-auto-rows:max-content;max-height:100%;z-index:1}watt-table .mat-mdc-table thead,watt-table .mat-mdc-table tbody,watt-table .mat-mdc-table tfoot,watt-table .mat-mdc-table tr.mat-mdc-row,watt-table .mat-mdc-table tr.mat-mdc-header-row,watt-table .mat-mdc-table tr.mat-mdc-footer-row{display:contents}watt-table .mat-mdc-table tr.watt-table-hide-footer{display:none}watt-table .mat-mdc-table tr.mat-mdc-header-row{flex:0 0 auto}watt-table .mat-mdc-table th.mat-mdc-header-cell{color:var(--watt-typography-label-color);font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:uppercase;box-sizing:border-box;display:flex;position:sticky;top:0;padding:0 var(--watt-space-s);height:auto;background:var(--watt-color-primary-ultralight);box-shadow:0 -1px #0000001f inset;border:0;z-index:2!important;white-space:nowrap;-webkit-user-select:none;user-select:none}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table td.mat-mdc-cell{display:flex;align-items:center;min-height:56px;padding:var(--watt-space-s) var(--watt-space-m)}watt-table .mat-mdc-table td.mat-mdc-cell.watt-table-cell--expandable{padding:0}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer),watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:1px solid var(--watt-color-neutral-grey-300)}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer){font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;border-top:2px solid var(--watt-color-neutral-grey-300);background-color:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-no-end-divider:last-child .mat-mdc-cell{border-bottom:0px solid var(--watt-color-neutral-grey-300)!important}watt-table .mat-mdc-table .watt-table-clickable-row>td:not(.watt-table-cell--expandable),watt-table .mat-mdc-table tr:has(>.watt-table-cell--expandable)>td:not(.watt-table-cell--expandable){cursor:pointer;-webkit-user-select:text;user-select:text}watt-table .mat-mdc-table .watt-table-highlight-row:hover:not(.watt-table-active-row,:has(>.watt-table-cell--expandable:hover))>td{background:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-active-row>td{background:var(--watt-color-secondary-ultralight)}watt-table .mat-mdc-table .mat-column-__expandableColumn__>watt-icon{transition:transform .2s}watt-table .mat-mdc-table .mat-column-__expandableColumn__.watt-table-cell--expanded>watt-icon{transform:rotate(90deg)}watt-table .mat-mdc-table .mat-sort-header-arrow{margin:0}watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-arrow{margin-right:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-arrow,watt-table .mat-mdc-table .watt-table-align-left .mat-sort-header-arrow{margin-left:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-header-cell{padding:.75rem var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-checkbox-cell{justify-content:center}watt-table .mat-mdc-table th.watt-table-checkbox-cell{display:flex;align-items:center}watt-table .mat-mdc-table .watt-table-align-center,watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-container{justify-content:center}watt-table .mat-mdc-table .watt-table-align-right,watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-container{justify-content:right}.watt-table-variant-zebra>table>tbody>tr:nth-child(2n)>td{background-color:var(--watt-color-neutral-grey-50)}watt-table .mat-mdc-table th.watt-table-cell--expandable{display:none}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable{position:relative;min-height:0;max-height:0;border-bottom-width:0;overflow:hidden;pointer-events:none;grid-column:1/-1;background:transparent;flex:1 1 auto;opacity:0;will-change:opacity;transition:opacity .2s cubic-bezier(.4,0,.2,1),overflow 0s .3s allow-discrete}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable>.watt-table-cell-wrapper{position:absolute;top:0;width:100%}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded{height:auto;max-height:initial;opacity:1;border-bottom-width:1px;pointer-events:all;overflow:visible}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded>.watt-table-cell-wrapper{position:relative}.watt-table-footer-spacer{display:none;height:76px;border:0}.watt-table-has-selection .watt-table-footer-spacer{display:block}.watt-table-has-selection+.watt-table-toolbar{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .5s}.watt-table-toolbar{position:absolute;bottom:var(--watt-space-m);left:50%;transform:translate(-50%);display:flex;align-items:center;padding:0 var(--watt-space-m);min-height:44px;border-radius:22px;color:var(--watt-color-primary-contrast);background-color:var(--watt-color-primary);z-index:1;opacity:0;visibility:hidden;transition:none}.watt-table-toolbar .watt-button--disabled{opacity:.4;--watt-button-primary-disabled-color: #fff}.watt-table-loading-cell:before{content:\"\";flex:1;display:block;max-width:200px;height:var(--watt-space-m);border-radius:var(--watt-space-m);opacity:.75;animation:shine 2s infinite linear;background-color:var(--watt-color-neutral-grey-200);background-size:300px;background-position:-100px;background-image:linear-gradient(90deg,var(--watt-color-neutral-grey-300) 0px,var(--watt-color-neutral-grey-200) 40px,var(--watt-color-neutral-grey-300) 80px)}@keyframes shine{40%,to{background-position:200px}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "directive", type: i3.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }, { kind: "component", type: WattCheckboxComponent, selector: "watt-checkbox", inputs: ["required"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [NgTemplateOutlet]] });
305
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattTableComponent, isStandalone: true, selector: "watt-table", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, displayedColumns: { classPropertyName: "displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, stickyFooter: { classPropertyName: "stickyFooter", publicName: "stickyFooter", isSignal: true, isRequired: false, transformFunction: null }, resolveHeader: { classPropertyName: "resolveHeader", publicName: "resolveHeader", isSignal: true, isRequired: false, transformFunction: null }, sortBy: { classPropertyName: "sortBy", publicName: "sortBy", isSignal: true, isRequired: false, transformFunction: null }, sortDirection: { classPropertyName: "sortDirection", publicName: "sortDirection", isSignal: true, isRequired: false, transformFunction: null }, sortClear: { classPropertyName: "sortClear", publicName: "sortClear", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, suppressRowHoverHighlight: { classPropertyName: "suppressRowHoverHighlight", publicName: "suppressRowHoverHighlight", isSignal: true, isRequired: false, transformFunction: null }, activeRow: { classPropertyName: "activeRow", publicName: "activeRow", isSignal: true, isRequired: false, transformFunction: null }, activeRowComparator: { classPropertyName: "activeRowComparator", publicName: "activeRowComparator", isSignal: true, isRequired: false, transformFunction: null }, hideColumnHeaders: { classPropertyName: "hideColumnHeaders", publicName: "hideColumnHeaders", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selection: "selectionChange", expanded: "expandedChange", rowClick: "rowClick", sortChange: "sortChange" }, host: { properties: { "class.watt-table-variant-zebra": "variant() === \"zebra\"", "style.--watt-table-grid-template-columns": "sizing().join(\" \")" } }, queries: [{ propertyName: "cells", predicate: (WattTableCellDirective), isSignal: true }, { propertyName: "toolbar", first: true, predicate: (WattTableToolbarDirective), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, isSignal: true }, { propertyName: "tableCellElements", predicate: ["td"], descendants: true, isSignal: true }], ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<table\n mat-table\n matSort\n role=\"treegrid\"\n [ngClass]=\"{ 'watt-table-has-selection': getSelectionState() !== false }\"\n [matSortActive]=\"sortBy()\"\n [matSortDirection]=\"sortDirection()\"\n [matSortDisableClear]=\"!sortClear()\"\n [dataSource]=\"dataSource()\"\n [attr.aria-label]=\"description()\"\n (matSortChange)=\"sortChange.emit($event)\"\n>\n @if (selectable()) {\n <ng-container [matColumnDef]=\"checkboxColumn\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"getSelectionState()\"\n (ngModelChange)=\"$event ? selection.set(dataSource().filteredData) : clearSelection()\"\n />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"selection().includes(row)\"\n (ngModelChange)=\"toggleSelection(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n }\n\n <ng-container [matColumnDef]=\"expandableColumn\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n (click)=\"onRowClick(row)\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n >\n <watt-icon name=\"right\" size=\"xs\" />\n </td>\n </ng-container>\n\n @for (column of columns() | keyvalue; track column.key) {\n <ng-container [matColumnDef]=\"column.key\" [stickyEnd]=\"column.value.stickyEnd?.()\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{\n column.value.headerCellClass\n }}\"\n >\n @if (column.value.helperAction; as action) {\n <watt-icon name=\"help\" (click)=\"action()\" />\n }\n\n <div\n class=\"watt-table-header-cell\"\n mat-sort-header\n [arrowPosition]=\"column.value.align === 'right' ? 'before' : 'after'\"\n [disabled]=\"!column.value.accessor || column.value.sort === false\"\n >\n {{ getColumnHeader(column) }}\n </div>\n @if (column.value.tooltip; as tooltip) {\n <watt-icon [title]=\"tooltip\" name=\"info\" />\n }\n </th>\n\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{ column.value.dataCellClass }}\"\n (click)=\"!column.value.expandable && onRowClick(row)\"\n >\n @if (isExpandable()) {\n @defer (when !column.value.expandable || expanded().includes(row)) {\n @if (getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ getColumnCell(column.value, row) }}\n }\n }\n } @else {\n @if (getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ getColumnCell(column.value, row) }}\n }\n }\n </td>\n\n @if (hasFooter()) {\n <td\n mat-footer-cell\n *matFooterCellDef\n class=\"{{ column.value.footer?.class }} watt-table-align-{{\n column.value.align ?? 'left'\n }} \"\n >\n {{ column.value.footer?.value?.() }}\n </td>\n }\n </ng-container>\n }\n\n <ng-container matColumnDef=\"spacer\">\n <td class=\"watt-table-footer-spacer\" mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (!hideColumnHeaders()) {\n <tr mat-header-row *matHeaderRowDef=\"renderedColumns()\"></tr>\n }\n <tr\n mat-row\n *matRowDef=\"let row; columns: renderedColumns()\"\n [attr.aria-selected]=\"row === activeRow()\"\n [ngClass]=\"{\n 'watt-table-highlight-row': !disabled() && !suppressRowHoverHighlight(),\n 'watt-table-clickable-row': !disabled() && rowClick$.observed,\n 'watt-table-active-row': isActiveRow(row),\n 'watt-table-no-end-divider': hideColumnHeaders(),\n }\"\n ></tr>\n\n @if (toolbar()) {\n <tr mat-footer-row *matFooterRowDef=\"['spacer']\"></tr>\n }\n\n @if (hasFooter()) {\n <tr\n mat-footer-row\n [class.watt-table-hide-footer]=\"loading() || dataSource().filteredData.length === 0\"\n *matFooterRowDef=\"renderedColumns(); sticky: stickyFooter()\"\n ></tr>\n }\n\n <ng-container *matNoDataRow>\n @if (loading()) {\n @for (i of [1, 2, 3]; track i) {\n <tr class=\"mat-mdc-row\">\n @for (_ of renderedColumns(); track _; let i = $index) {\n <td class=\"mat-mdc-cell\" [class.watt-table-loading-cell]=\"i > 0 || !selectable()\"></td>\n }\n </tr>\n }\n }\n </ng-container>\n</table>\n\n@if (toolbar(); as toolbar) {\n <div class=\"watt-table-toolbar\" role=\"toolbar\">\n <ng-container\n *ngTemplateOutlet=\"\n toolbar.templateRef;\n context: { $implicit: filterSelectionBy(dataSource().filteredData) }\n \"\n />\n </div>\n}\n", styles: ["watt-table{--mat-table-row-item-label-text-font: $primary-font-family;--mat-table-row-item-outline-color: var(--watt-color-neutral-grey-300);--mat-table-header-headline-font: $primary-font-family}watt-table,watt-table .mat-mdc-table{display:grid;position:relative;overflow:auto;min-height:44px}watt-table .mat-mdc-table{grid-template-columns:var(--watt-table-grid-template-columns);grid-auto-rows:max-content;max-height:100%;z-index:1}watt-table .mat-mdc-table thead,watt-table .mat-mdc-table tbody,watt-table .mat-mdc-table tfoot,watt-table .mat-mdc-table tr.mat-mdc-row,watt-table .mat-mdc-table tr.mat-mdc-header-row,watt-table .mat-mdc-table tr.mat-mdc-footer-row{display:contents}watt-table .mat-mdc-table tr.watt-table-hide-footer{display:none}watt-table .mat-mdc-table tr.mat-mdc-header-row{flex:0 0 auto}watt-table .mat-mdc-table th.mat-mdc-header-cell{color:var(--watt-typography-label-color);font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:uppercase;box-sizing:border-box;display:flex;position:sticky;top:0;padding:0 var(--watt-space-s);height:auto;background:var(--watt-color-primary-ultralight);box-shadow:0 -1px #0000001f inset;border:0;z-index:2!important;white-space:nowrap;-webkit-user-select:none;user-select:none}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table td.mat-mdc-cell{display:flex;align-items:center;min-height:56px;padding:var(--watt-space-s) var(--watt-space-m)}watt-table .mat-mdc-table td.mat-mdc-cell.watt-table-cell--expandable{padding:0}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer),watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:1px solid var(--watt-color-neutral-grey-300)}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer){font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;border-top:2px solid var(--watt-color-neutral-grey-300);background-color:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-no-end-divider:last-child .mat-mdc-cell{border-bottom:0px solid var(--watt-color-neutral-grey-300)!important}watt-table .mat-mdc-table .watt-table-clickable-row>td:not(.watt-table-cell--expandable),watt-table .mat-mdc-table tr:has(>.watt-table-cell--expandable)>td:not(.watt-table-cell--expandable){cursor:pointer;-webkit-user-select:text;user-select:text}watt-table .mat-mdc-table .watt-table-highlight-row:hover:not(.watt-table-active-row,:has(>.watt-table-cell--expandable:hover))>td{background:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-active-row>td{background:var(--watt-color-secondary-ultralight)}watt-table .mat-mdc-table .mat-column-__expandableColumn__>watt-icon{transition:transform .2s}watt-table .mat-mdc-table .mat-column-__expandableColumn__.watt-table-cell--expanded>watt-icon{transform:rotate(90deg)}watt-table .mat-mdc-table .mat-sort-header-arrow{margin:0}watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-arrow{margin-right:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-arrow,watt-table .mat-mdc-table .watt-table-align-left .mat-sort-header-arrow{margin-left:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-header-cell{padding:.75rem var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-checkbox-cell{justify-content:center}watt-table .mat-mdc-table th.watt-table-checkbox-cell{display:flex;align-items:center}watt-table .mat-mdc-table .watt-table-align-center,watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-container{justify-content:center}watt-table .mat-mdc-table .watt-table-align-right,watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-container{justify-content:right}.watt-table-variant-zebra>table>tbody>tr:nth-child(2n)>td{background-color:var(--watt-color-neutral-grey-50)}watt-table .mat-mdc-table th.watt-table-cell--expandable{display:none}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable{position:relative;min-height:0;max-height:0;border-bottom-width:0;overflow:hidden;pointer-events:none;grid-column:1/-1;background:transparent;flex:1 1 auto;opacity:0;will-change:opacity;transition:opacity .2s cubic-bezier(.4,0,.2,1),overflow 0s .3s allow-discrete}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable>.watt-table-cell-wrapper{position:absolute;top:0;width:100%}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded{height:auto;max-height:initial;opacity:1;border-bottom-width:1px;pointer-events:all;overflow:visible}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded>.watt-table-cell-wrapper{position:relative}.watt-table-footer-spacer{display:none;height:76px;border:0}.watt-table-has-selection .watt-table-footer-spacer{display:block}.watt-table-has-selection+.watt-table-toolbar{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .5s}.watt-table-toolbar{position:absolute;bottom:var(--watt-space-m);left:50%;transform:translate(-50%);display:flex;align-items:center;padding:0 var(--watt-space-m);min-height:44px;border-radius:22px;color:var(--watt-color-primary-contrast);background-color:var(--watt-color-primary);z-index:1;opacity:0;visibility:hidden;transition:none}.watt-table-toolbar .watt-button--disabled{opacity:.4;--watt-button-primary-disabled-color: #fff}.watt-table-loading-cell:before{content:\"\";flex:1;display:block;max-width:200px;height:var(--watt-space-m);border-radius:var(--watt-space-m);opacity:.75;animation:shine 2s infinite linear;background-color:var(--watt-color-neutral-grey-200);background-size:300px;background-position:-100px;background-image:linear-gradient(90deg,var(--watt-color-neutral-grey-300) 0px,var(--watt-color-neutral-grey-200) 40px,var(--watt-color-neutral-grey-300) 80px)}@keyframes shine{40%,to{background-position:200px}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i3.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i3.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "directive", type: i3.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }, { kind: "component", type: WattCheckboxComponent, selector: "watt-checkbox", inputs: ["required"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [NgTemplateOutlet]] });
348
306
  }
349
307
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTableComponent, decorators: [{
350
308
  type: Component,
@@ -357,22 +315,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
357
315
  MatTableModule,
358
316
  WattIconComponent,
359
317
  WattCheckboxComponent,
360
- ], providers: [WattDatePipe], encapsulation: ViewEncapsulation.None, selector: 'watt-table', host: {
318
+ ], encapsulation: ViewEncapsulation.None, selector: 'watt-table', host: {
361
319
  '[class.watt-table-variant-zebra]': 'variant() === "zebra"',
362
- }, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<table\n mat-table\n matSort\n role=\"treegrid\"\n [ngClass]=\"{ 'watt-table-has-selection': getSelectionState() !== false }\"\n [matSortActive]=\"sortBy()\"\n [matSortDirection]=\"sortDirection()\"\n [matSortDisableClear]=\"!sortClear()\"\n [dataSource]=\"dataSource()\"\n [attr.aria-label]=\"description()\"\n (matSortChange)=\"sortChange.emit($event)\"\n>\n @if (selectable()) {\n <ng-container [matColumnDef]=\"_checkboxColumn\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"getSelectionState()\"\n (ngModelChange)=\"$event ? selection.set(dataSource().filteredData) : clearSelection()\"\n />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"selection().includes(row)\"\n (ngModelChange)=\"toggleSelection(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n }\n\n <ng-container [matColumnDef]=\"_expandableColumn\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"_getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n (click)=\"_onRowClick(row)\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n >\n <watt-icon name=\"right\" size=\"xs\" />\n </td>\n </ng-container>\n\n @for (column of columns() | keyvalue; track column.key) {\n <ng-container [matColumnDef]=\"column.key\" [stickyEnd]=\"column.value.stickyEnd?.()\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{\n column.value.headerCellClass\n }}\"\n >\n @if (_getColumnHelperAction(column); as action) {\n <watt-icon name=\"help\" (click)=\"action()\" />\n }\n\n <div\n class=\"watt-table-header-cell\"\n mat-sort-header\n [arrowPosition]=\"column.value.align === 'right' ? 'before' : 'after'\"\n [disabled]=\"!column.value.accessor || column.value.sort === false\"\n >\n {{ _getColumnHeader(column) }}\n </div>\n @if (_getColumnHeaderTooltip(column); as tooltip) {\n <watt-icon [title]=\"tooltip\" name=\"info\" />\n }\n </th>\n\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"_getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{ column.value.dataCellClass }}\"\n (click)=\"!column.value.expandable && _onRowClick(row)\"\n >\n @if (_isExpandable()) {\n @defer (when !column.value.expandable || expanded().includes(row)) {\n @if (_getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ _getColumnCell(column, row) }}\n }\n }\n } @else {\n @if (_getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ _getColumnCell(column, row) }}\n }\n }\n </td>\n\n @if (_hasFooter()) {\n <td\n mat-footer-cell\n *matFooterCellDef\n class=\"{{ column.value.footer?.class }} watt-table-align-{{\n column.value.align ?? 'left'\n }} \"\n >\n {{ column.value.footer?.value?.() }}\n </td>\n }\n </ng-container>\n }\n\n <ng-container matColumnDef=\"spacer\">\n <td class=\"watt-table-footer-spacer\" mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (!hideColumnHeaders()) {\n <tr mat-header-row *matHeaderRowDef=\"_getColumns()\"></tr>\n }\n <tr\n mat-row\n *matRowDef=\"let row; columns: _getColumns()\"\n [attr.aria-selected]=\"row === activeRow()\"\n [ngClass]=\"{\n 'watt-table-highlight-row': !disabled() && !suppressRowHoverHighlight(),\n 'watt-table-clickable-row': !disabled() && _rowClick$.observed,\n 'watt-table-active-row': _isActiveRow(row),\n 'watt-table-no-end-divider': hideColumnHeaders(),\n }\"\n ></tr>\n\n @if (toolbar()) {\n <tr mat-footer-row *matFooterRowDef=\"['spacer']\"></tr>\n }\n\n @if (_hasFooter()) {\n <tr\n mat-footer-row\n [class.watt-table-hide-footer]=\"loading() || dataSource().filteredData.length === 0\"\n *matFooterRowDef=\"_getColumns(); sticky: stickyFooter()\"\n ></tr>\n }\n\n <ng-container *matNoDataRow>\n @if (loading()) {\n @for (i of [1, 2, 3]; track i) {\n <tr class=\"mat-mdc-row\">\n @for (_ of _getColumns(); track _; let i = $index) {\n <td class=\"mat-mdc-cell\" [class.watt-table-loading-cell]=\"i > 0 || !selectable()\"></td>\n }\n </tr>\n }\n }\n </ng-container>\n</table>\n\n@if (toolbar(); as toolbar) {\n <div class=\"watt-table-toolbar\" role=\"toolbar\">\n <ng-container\n *ngTemplateOutlet=\"\n toolbar.templateRef;\n context: { $implicit: filterSelectionBy(dataSource().filteredData) }\n \"\n />\n </div>\n}\n", styles: ["watt-table{--mat-table-row-item-label-text-font: $primary-font-family;--mat-table-row-item-outline-color: var(--watt-color-neutral-grey-300);--mat-table-header-headline-font: $primary-font-family}watt-table,watt-table .mat-mdc-table{display:grid;position:relative;overflow:auto;min-height:44px}watt-table .mat-mdc-table{grid-template-columns:var(--watt-table-grid-template-columns);grid-auto-rows:max-content;max-height:100%;z-index:1}watt-table .mat-mdc-table thead,watt-table .mat-mdc-table tbody,watt-table .mat-mdc-table tfoot,watt-table .mat-mdc-table tr.mat-mdc-row,watt-table .mat-mdc-table tr.mat-mdc-header-row,watt-table .mat-mdc-table tr.mat-mdc-footer-row{display:contents}watt-table .mat-mdc-table tr.watt-table-hide-footer{display:none}watt-table .mat-mdc-table tr.mat-mdc-header-row{flex:0 0 auto}watt-table .mat-mdc-table th.mat-mdc-header-cell{color:var(--watt-typography-label-color);font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:uppercase;box-sizing:border-box;display:flex;position:sticky;top:0;padding:0 var(--watt-space-s);height:auto;background:var(--watt-color-primary-ultralight);box-shadow:0 -1px #0000001f inset;border:0;z-index:2!important;white-space:nowrap;-webkit-user-select:none;user-select:none}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table td.mat-mdc-cell{display:flex;align-items:center;min-height:56px;padding:var(--watt-space-s) var(--watt-space-m)}watt-table .mat-mdc-table td.mat-mdc-cell.watt-table-cell--expandable{padding:0}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer),watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:1px solid var(--watt-color-neutral-grey-300)}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer){font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;border-top:2px solid var(--watt-color-neutral-grey-300);background-color:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-no-end-divider:last-child .mat-mdc-cell{border-bottom:0px solid var(--watt-color-neutral-grey-300)!important}watt-table .mat-mdc-table .watt-table-clickable-row>td:not(.watt-table-cell--expandable),watt-table .mat-mdc-table tr:has(>.watt-table-cell--expandable)>td:not(.watt-table-cell--expandable){cursor:pointer;-webkit-user-select:text;user-select:text}watt-table .mat-mdc-table .watt-table-highlight-row:hover:not(.watt-table-active-row,:has(>.watt-table-cell--expandable:hover))>td{background:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-active-row>td{background:var(--watt-color-secondary-ultralight)}watt-table .mat-mdc-table .mat-column-__expandableColumn__>watt-icon{transition:transform .2s}watt-table .mat-mdc-table .mat-column-__expandableColumn__.watt-table-cell--expanded>watt-icon{transform:rotate(90deg)}watt-table .mat-mdc-table .mat-sort-header-arrow{margin:0}watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-arrow{margin-right:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-arrow,watt-table .mat-mdc-table .watt-table-align-left .mat-sort-header-arrow{margin-left:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-header-cell{padding:.75rem var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-checkbox-cell{justify-content:center}watt-table .mat-mdc-table th.watt-table-checkbox-cell{display:flex;align-items:center}watt-table .mat-mdc-table .watt-table-align-center,watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-container{justify-content:center}watt-table .mat-mdc-table .watt-table-align-right,watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-container{justify-content:right}.watt-table-variant-zebra>table>tbody>tr:nth-child(2n)>td{background-color:var(--watt-color-neutral-grey-50)}watt-table .mat-mdc-table th.watt-table-cell--expandable{display:none}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable{position:relative;min-height:0;max-height:0;border-bottom-width:0;overflow:hidden;pointer-events:none;grid-column:1/-1;background:transparent;flex:1 1 auto;opacity:0;will-change:opacity;transition:opacity .2s cubic-bezier(.4,0,.2,1),overflow 0s .3s allow-discrete}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable>.watt-table-cell-wrapper{position:absolute;top:0;width:100%}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded{height:auto;max-height:initial;opacity:1;border-bottom-width:1px;pointer-events:all;overflow:visible}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded>.watt-table-cell-wrapper{position:relative}.watt-table-footer-spacer{display:none;height:76px;border:0}.watt-table-has-selection .watt-table-footer-spacer{display:block}.watt-table-has-selection+.watt-table-toolbar{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .5s}.watt-table-toolbar{position:absolute;bottom:var(--watt-space-m);left:50%;transform:translate(-50%);display:flex;align-items:center;padding:0 var(--watt-space-m);min-height:44px;border-radius:22px;color:var(--watt-color-primary-contrast);background-color:var(--watt-color-primary);z-index:1;opacity:0;visibility:hidden;transition:none}.watt-table-toolbar .watt-button--disabled{opacity:.4;--watt-button-primary-disabled-color: #fff}.watt-table-loading-cell:before{content:\"\";flex:1;display:block;max-width:200px;height:var(--watt-space-m);border-radius:var(--watt-space-m);opacity:.75;animation:shine 2s infinite linear;background-color:var(--watt-color-neutral-grey-200);background-size:300px;background-position:-100px;background-image:linear-gradient(90deg,var(--watt-color-neutral-grey-300) 0px,var(--watt-color-neutral-grey-200) 40px,var(--watt-color-neutral-grey-300) 80px)}@keyframes shine{40%,to{background-position:200px}}\n"] }]
363
- }] });
364
- export class WattTableToolbarSpacerComponent {
365
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTableToolbarSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
366
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: WattTableToolbarSpacerComponent, isStandalone: true, selector: "watt-table-toolbar-spacer", ngImport: i0, template: '', isInline: true, styles: [":host{width:var(--watt-space-xl)}\n"] });
367
- }
368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTableToolbarSpacerComponent, decorators: [{
369
- type: Component,
370
- args: [{ selector: 'watt-table-toolbar-spacer', template: '', styles: [":host{width:var(--watt-space-xl)}\n"] }]
371
- }] });
372
- export const WATT_TABLE = [
373
- WattTableComponent,
374
- WattTableCellDirective,
375
- WattTableToolbarDirective,
376
- WattTableToolbarSpacerComponent,
377
- ];
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJsZS93YXR0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RhYmxlL3dhdHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQVksWUFBWSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BGLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF3QixtQkFBbUIsRUFBRSxNQUFN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QkFYM0MsU0FBUzsrQkFDRSwyQkFBMkIsWUFDM0IsRUFBRTs7QUFXZCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsa0JBQWtCO0lBQ2xCLHNCQUFzQjtJQUN0Qix5QkFBeUI7SUFDekIsK0JBQStCO0NBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQgeyBLZXlWYWx1ZSwgS2V5VmFsdWVQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgY29udGVudENoaWxkLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIE9uQ2hhbmdlcyxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGQsXG4gIHZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBTaWduYWwsIFRyYWNrQnlGdW5jdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb3V0cHV0RnJvbU9ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNvcnQsIE1hdFNvcnRNb2R1bGUsIFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBXYXR0Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY2hlY2tib3gnO1xuaW1wb3J0IHsgV2F0dERhdGVQaXBlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IElXYXR0VGFibGVEYXRhU291cmNlLCBXYXR0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi93YXR0LXRhYmxlLWRhdGEtc291cmNlJztcbmltcG9ydCB7IGFuaW1hdGVFeHBhbmRhYmxlQ2VsbHMgfSBmcm9tICcuL3dhdHQtdGFibGUtZXhwYW5kLWFuaW1hdGlvbic7XG5cbi8qKiBDbGFzcyBuYW1lIGZvciBleHBhbmRhYmxlIGNlbGxzLiAqL1xuZXhwb3J0IGNvbnN0IEVYUEFOREFCTEVfQ0xBU1MgPSAnd2F0dC10YWJsZS1jZWxsLS1leHBhbmRhYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBXYXR0VGFibGVDb2x1bW48VD4ge1xuICAvKipcbiAgICogVGhlIGRhdGEgdGhhdCB0aGlzIGNvbHVtbiBzaG91bGQgYmUgYm91bmQgdG8sIGVpdGhlciBhcyBhIHByb3BlcnR5IG9mIGBUYFxuICAgKiBvciBkZXJpdmVkIGZyb20gZWFjaCByb3cgb2YgYFRgIHVzaW5nIGFuIGFjY2Vzc29yIGZ1bmN0aW9uLiAgVXNlIGBudWxsYFxuICAgKiBmb3IgY29sdW1ucyB0aGF0IHNob3VsZCBub3QgYmUgYXNzb2NpYXRlZCB3aXRoIGRhdGEsIGJ1dCBub3RlIHRoYXQgdGhpc1xuICAgKiB3aWxsIGRpc2FibGUgc29ydGluZyBhbmQgYXV0b21hdGljIGNlbGwgcG9wdWxhdGlvbi5cbiAgICovXG4gIGFjY2Vzc29yOiBrZXlvZiBUIHwgKChyb3c6IFQpID0+IHVua25vd24pIHwgbnVsbDtcblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgaGVhZGVyIHRleHQgdG8gYSBzdGF0aWMgZGlzcGxheSB2YWx1ZS4gVGhpcyB3aWxsIHByZXZlbnRcbiAgICogdGhlIGByZXNvbHZlSGVhZGVyYCBpbnB1dCBmdW5jdGlvbiBmcm9tIGJlaW5nIGNhbGxlZCBmb3IgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBjZWxsIGNvbnRlbnQgd2hlbiBub3QgdXNpbmcgdGVtcGxhdGUuIEJ5IGRlZmF1bHQsXG4gICAqIGNlbGwgY29udGVudCBpcyBmb3VuZCB1c2luZyB0aGUgYGFjY2Vzc29yYCAodW5sZXNzIGl0IGlzIGBudWxsYCkuXG4gICAqL1xuICBjZWxsPzogKHJvdzogVCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAqIHVubGVzcyBgYWNjZXNzb3JgIGlzIGBudWxsYC5cbiAgICovXG4gIHNvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbHVtbiBzaXplIHVzaW5nIGdyaWQgc2l6aW5nIHZhbHVlcy4gRGVmYXVsdHMgdG8gYFwiYXV0b1wiYC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogQWNjZXB0cyBhbGwgb2YgdGhlIENTUyBncmlkIHRyYWNrIHNpemUga2V5d29yZHMgKHN1Y2ggYXMgYG1pbi1jb250ZW50YCxcbiAgICogYG1heC1jb250ZW50YCwgYG1pbm1heCgpYCkgYXMgd2VsbCBhcyBmcmFjdGlvbmFsIChgZnJgKSwgcGVyY2VudGFnZSAoYCVgKVxuICAgKiBhbmQgbGVuZ3RoIChgcHhgLCBgZW1gLCBldGMpIHVuaXRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jdHJhY2stc2l6ZXNcbiAgICovXG4gIHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvcml6b250YWxseSBhbGlnbiB0aGUgY29udGVudHMgb2YgdGhlIGNvbHVtbi4gRGVmYXVsdHMgdG8gYFwibGVmdFwiYC5cbiAgICovXG4gIGFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgaWNvbiB3aWxsIGJlIHNob3duIGluIHRoZSBoZWFkZXIgY2VsbCwgd2l0aCBhbiBjbGljayBldmVudC5cbiAgICovXG4gIGhlbHBlckFjdGlvbj86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgaGVhZGVyIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGhlYWRlckNlbGxDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBkYXRhIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGRhdGFDZWxsQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZm9vdGVyPzogV2F0dFRhYmxlQ29sdW1uRm9vdGVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBjb2x1bW4gcmVtYWlucyB2aXNpYmxlIHdoZW4gaG9yaXpvbnRhbGx5IHNjcm9sbGluZy5cbiAgICovXG4gIHN0aWNreUVuZD86IFNpZ25hbDxib29sZWFuPjtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBjZWxsIGlzIHJlcGxhY2VkIHdpdGggYW4gZXhwYW5kYWJsZSBhcnJvdyBhbmQgdGhlIGNvbnRlbnQgaXMgZGVmZXJyZWQuXG4gICAqIENsaWNraW5nIG9uIHRoZSBhcnJvdyByZXZlYWxzIHRoZSBjb250ZW50IGJlbG93IHRoZSBjdXJyZW50IHJvdy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gcHJvdmlkZSBhIGN1c3RvbSBgdHJhY2tCeWAgZnVuY3Rpb24gd2hlbiB1c2luZyBgZXhwYW5kYWJsZWAsXG4gICAqIG90aGVyd2lzZSBhbmltYXRpb25zIGNhbiBiZSBpbmFjY3VyYXRlIHdoZW4gZGF0YSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgZXhwYW5kYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvb2x0aXAgdGV4dCB0byBzaG93IG9uIGhvdmVyIG9mIHRoZSBoZWFkZXIgY2VsbC5cbiAgICovXG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGZvb3RlciBjZWxsIG9mIGEgY29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhdHRUYWJsZUNvbHVtbkZvb3RlciB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgZm9vdGVyIGNlbGwuXG4gICAqL1xuICB2YWx1ZT86IFNpZ25hbDxzdHJpbmcgfCBudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGZvb3RlciBjZWxsLlxuICAgKi9cbiAgY2xhc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVjb3JkIGZvciBkZWZpbmluZyBjb2x1bW5zIHdpdGgga2V5cyB1c2VkIGFzIGNvbHVtbiBpZGVudGlmaWVycy5cbiAqL1xuZXhwb3J0IHR5cGUgV2F0dFRhYmxlQ29sdW1uRGVmPFQ+ID0gUmVjb3JkPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+PjtcblxuLy8gVXNlZCBmb3Igc3Ryb25nbHkgdHlwaW5nIHRoZSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZVxuaW50ZXJmYWNlIFdhdHRUYWJsZUNlbGxDb250ZXh0PFQ+IHtcbiAgJGltcGxpY2l0OiBUO1xufVxuXG5pbnRlcmZhY2UgV2F0dFRhYmxlVG9vbGJhckNvbnRleHQ8VD4ge1xuICAkaW1wbGljaXQ6IFQ7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVDZWxsXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVDZWxsQ29udGV4dDxUPj4pO1xuXG4gIC8qKlxuICAgKiBUaGUgV2F0dFRhYmxlQ29sdW1uIHRoaXMgdGVtcGxhdGUgYXBwbGllcyB0by5cbiAgICovXG4gIGNvbHVtbiA9IGlucHV0LnJlcXVpcmVkPFdhdHRUYWJsZUNvbHVtbjxUPj4oeyBhbGlhczogJ3dhdHRUYWJsZUNlbGwnIH0pO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBoZWFkZXIgdGV4dCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIGhlYWRlciA9IGlucHV0PHN0cmluZz4odW5kZWZpbmVkLCB7IGFsaWFzOiAnd2F0dFRhYmxlQ2VsbEhlYWRlcicgfSk7XG5cbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oXG4gICAgX2RpcmVjdGl2ZTogV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZTxUPixcbiAgICBjb250ZXh0OiB1bmtub3duXG4gICk6IGNvbnRleHQgaXMgV2F0dFRhYmxlQ2VsbENvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVUb29sYmFyXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVUb29sYmFyQ29udGV4dDxUW10+Pik7XG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFQ+KFxuICAgIF9kaXJlY3RpdmU6IFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBjb250ZXh0IGlzIFdhdHRUYWJsZVRvb2xiYXJDb250ZXh0PFRbXT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVXNhZ2U6XG4gKiBgaW1wb3J0IHsgV0FUVF9UQUJMRSB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L3RhYmxlJztgXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIFdhdHRJY29uQ29tcG9uZW50LFxuICAgIFdhdHRDaGVja2JveENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbV2F0dERhdGVQaXBlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICd3YXR0LXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLndhdHQtdGFibGUtdmFyaWFudC16ZWJyYV0nOiAndmFyaWFudCgpID09PSBcInplYnJhXCInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0VGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVGhlIHRhYmxlJ3Mgc291cmNlIG9mIGRhdGEuIFByb3BlcnR5IHNob3VsZCBub3QgYmUgY2hhbmdlZCBhZnRlclxuICAgKiBpbml0aWFsaXphdGlvbiwgaW5zdGVhZCB1cGRhdGUgdGhlIGRhdGEgb24gdGhlIGluc3RhbmNlIGl0c2VsZi5cbiAgICovXG4gIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxJV2F0dFRhYmxlRGF0YVNvdXJjZTxUPj4oKTtcblxuICAvKipcbiAgICogQ29sdW1uIGRlZmluaXRpb24gcmVjb3JkIHdpdGgga2V5cyByZXByZXNlbnRpbmcgdGhlIGNvbHVtbiBpZGVudGlmaWVyc1xuICAgKiBhbmQgdmFsdWVzIGJlaW5nIHRoZSBjb2x1bW4gY29uZmlndXJhdGlvbi4gVGhlIG9yZGVyIG9mIHRoZSBjb2x1bW5zXG4gICAqIGlzIGRldGVybWluZWQgYnkgdGhlIHByb3BlcnR5IG9yZGVyLCBidXQgY2FuIGJlIG92ZXJydWxlZCBieSB0aGVcbiAgICogYGRpc3BsYXllZENvbHVtbnNgIGlucHV0LlxuICAgKi9cbiAgY29sdW1ucyA9IGlucHV0PFdhdHRUYWJsZUNvbHVtbkRlZjxUPj4oe30pO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBoaWRpbmcgb3IgcmVvcmRlcmluZyBjb2x1bW5zIGRlZmluZWQgaW4gdGhlIGBjb2x1bW5zYCBpbnB1dC5cbiAgICovXG4gIGRpc3BsYXllZENvbHVtbnMgPSBpbnB1dDxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogVXNlZCBmb3IgZGlzYWJsaW5nIHRoZSB0YWJsZS4gVGhpcyB3aWxsIGRpc2FibGUgYWxsIHVzZXIgaW50ZXJhY3Rpb25cbiAgICovXG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgZGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGZvciB2aXN1YWxseSBpbXBhaXJlZCB1c2Vycy5cbiAgICovXG4gIGRlc2NyaXB0aW9uID0gaW5wdXQoJycpO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgdGFibGUgd2lsbCBzaG93IGEgbG9hZGluZyBpbmRpY2F0b3JcbiAgICogd2hlbiB0aGVyZSBpcyBubyBkYXRhLlxuICAgKi9cbiAgbG9hZGluZyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogSWYgdHJ1ZSB0aGUgZm9vdGVyIHdpbGwgYmUgc3RpY2t5XG4gICAqL1xuICBzdGlja3lGb290ZXIgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBoZWFkZXIgdGV4dCBmb3IgY29sdW1ucyB0aGF0XG4gICAqIGRvIG5vdCBoYXZlIGEgc3RhdGljIGhlYWRlciB0ZXh0IHNldCBpbiB0aGUgY29sdW1uIGRlZmluaXRpb24uXG4gICAqIFVzZWZ1bCBmb3IgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBvZiBjb2x1bW4gaGVhZGVycy5cbiAgICovXG4gIHJlc29sdmVIZWFkZXIgPSBpbnB1dDwoa2V5OiBzdHJpbmcpID0+IHN0cmluZz4oKTtcblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgY29sdW1uIHRoYXQgc2hvdWxkIGJlIHNvcnRlZCBpbml0aWFsbHkuXG4gICAqL1xuICBzb3J0QnkgPSBpbnB1dCgnJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IGRpcmVjdGlvbiBvZiB0aGUgaW5pdGlhbGx5IHNvcnRlZCBjb2x1bW4uXG4gICAqL1xuICBzb3J0RGlyZWN0aW9uID0gaW5wdXQ8U29ydERpcmVjdGlvbj4oJycpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNsZWFyIHRoZSBzb3J0LiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBzb3J0Q2xlYXIgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFibGUgc2hvdWxkIGluY2x1ZGUgYSBjaGVja2JveCBjb2x1bW4gZm9yIHJvdyBzZWxlY3Rpb24uXG4gICAqL1xuICBzZWxlY3RhYmxlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByb3dzLiBPbmx5IGFwcGxpY2FibGUgd2hlbiBzZWxlY3RhYmxlIGlzIGB0cnVlYC5cbiAgICovXG4gIHNlbGVjdGlvbiA9IG1vZGVsPFRbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHJvdyBob3ZlciBoaWdobGlnaHQuXG4gICAqL1xuICBzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0ID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHJvdy5cbiAgICovXG4gIGFjdGl2ZVJvdyA9IGlucHV0PFQ+KCk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0d28gcm93cyBhcmUgZXF1YWwuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBkZXRlcm1pbmluZyB0aGUgYWN0aXZlIHJvdyBpcyB0byBjb21wYXJlXG4gICAqIHRoZSB0d28gcm93IG9iamVjdHMgdXNpbmcgc3RyaWN0IGVxdWFsaXR5IGNoZWNrLiBUaGlzIGlzIHN1ZmZpY2llbnRcbiAgICogYXMgbG9uZyBhcyB0aGUgaW5zdGFuY2VzIHJlbWFpbiB0aGUgc2FtZSwgd2hpY2ggbWF5IG5vdCBiZSB0aGUgY2FzZVxuICAgKiBpZiByb3cgZGF0YSBpcyByZWNyZWF0ZWQgb3IgcmVidWlsdCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICBhY3RpdmVSb3dDb21wYXJhdG9yID0gaW5wdXQ8KGN1cnJlbnRSb3c6IFQsIGFjdGl2ZVJvdzogVCkgPT4gYm9vbGVhbj4oKTtcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbHVtbiBoZWFkZXJzIHdpbGwgbm90IGJlIHNob3duLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICBoaWRlQ29sdW1uSGVhZGVycyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQ2hvb3NlIGZyb20gYSBwcmVkZWZpbmVkIHNldCBvZiBkaXNwbGF5IHZhcmlhbnRzLlxuICAgKi9cbiAgdmFyaWFudCA9IGlucHV0PCd6ZWJyYSc+KCk7XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHJvd3MgdGhhdCBhcmUgY3VycmVudGx5IGV4cGFuZGVkLlxuICAgKi9cbiAgZXhwYW5kZWQgPSBtb2RlbDxUW10+KFtdKTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZnVuY3Rpb24gZm9yIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHJvd3MuXG4gICAqL1xuICB0cmFja0J5ID0gaW5wdXQ8VHJhY2tCeUZ1bmN0aW9uPFQ+IHwga2V5b2YgVD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBUaGUgYG9ic2VydmVkYCBib29sZWFuIGZyb20gdGhlIGBTdWJqZWN0YCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhIHJvdyBpc1xuICAgKiBjbGlja2FibGUgb3Igbm90LiBUaGlzIGlzIGF2YWlsYWJsZSBvbiBgRXZlbnRFbWl0dGVyYCwgYnV0IG5vdCBvbiBgb3V0cHV0YCxcbiAgICogd2hpY2ggaXMgd2h5IHRoaXMgd29ya2Fyb3VuZCBpcyB1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9yb3dDbGljayQgPSBuZXcgU3ViamVjdDxUPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuZXZlciBhIHJvdyBpcyBjbGlja2VkLlxuICAgKi9cbiAgcm93Q2xpY2sgPSBvdXRwdXRGcm9tT2JzZXJ2YWJsZSh0aGlzLl9yb3dDbGljayQpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2hhbmdlcyB0aGUgYWN0aXZlIHNvcnQgb3Igc29ydCBkaXJlY3Rpb24uXG4gICAqL1xuICBzb3J0Q2hhbmdlID0gb3V0cHV0PFNvcnQ+KCk7XG5cbiAgLy8gUXVlcmllc1xuICBwcm90ZWN0ZWQgY2VsbHMgPSBjb250ZW50Q2hpbGRyZW4oV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZTxUPik7XG4gIHByb3RlY3RlZCB0b29sYmFyID0gY29udGVudENoaWxkKFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4pO1xuICBwcm90ZWN0ZWQgc29ydCA9IHZpZXdDaGlsZChNYXRTb3J0KTtcbiAgcHJvdGVjdGVkIHRhYmxlQ2VsbEVsZW1lbnRzID0gdmlld0NoaWxkcmVuPEVsZW1lbnRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PigndGQnKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBfYW5pbWF0aW9uRWZmZWN0ID0gYW5pbWF0ZUV4cGFuZGFibGVDZWxscyh0aGlzLnRhYmxlQ2VsbEVsZW1lbnRzLCB0aGlzLmV4cGFuZGVkKTtcblxuICAvLyBTZWxlY3RhYmxlXG4gIHByb3RlY3RlZCBmaWx0ZXJTZWxlY3Rpb25CeSA9IChyb3dzOiBUW10pID0+IHJvd3MuZmlsdGVyKChyb3cpID0+IHRoaXMuc2VsZWN0aW9uKCkuaW5jbHVkZXMocm93KSk7XG4gIHByb3RlY3RlZCBnZXRTZWxlY3Rpb25TdGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmRhdGFTb3VyY2UoKS5maWx0ZXJlZERhdGE7XG4gICAgY29uc3QgZmlsdGVyZWRTZWxlY3Rpb24gPSB0aGlzLmZpbHRlclNlbGVjdGlvbkJ5KGZpbHRlcmVkRGF0YSk7XG4gICAgaWYgKCFmaWx0ZXJlZFNlbGVjdGlvbi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZmlsdGVyZWRTZWxlY3Rpb24ubGVuZ3RoID09PSB0aGlzLmRhdGFTb3VyY2UoKS5maWx0ZXJlZERhdGEubGVuZ3RoID8gdHJ1ZSA6IG51bGw7XG4gIH07XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2NoZWNrYm94Q29sdW1uID0gJ19fY2hlY2tib3hDb2x1bW5fXyc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2V4cGFuZGFibGVDb2x1bW4gPSAnX19leHBhbmRhYmxlQ29sdW1uX18nO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIF9lbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBfZGF0ZVBpcGUgPSBpbmplY3QoV2F0dERhdGVQaXBlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBfaGFzRm9vdGVyID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGZvcm1hdENlbGxEYXRhKGNlbGw6IHVua25vd24pIHtcbiAgICBpZiAoIWNlbGwpIHJldHVybiAn4oCUJztcbiAgICBpZiAoY2VsbCBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oY2VsbCk7XG4gICAgcmV0dXJuIGNlbGw7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGdldENlbGxEYXRhKHJvdzogVCwgY29sdW1uPzogV2F0dFRhYmxlQ29sdW1uPFQ+KSB7XG4gICAgaWYgKCFjb2x1bW4/LmFjY2Vzc29yKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IGFjY2Vzc29yIH0gPSBjb2x1bW47XG4gICAgY29uc3QgY2VsbCA9IHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJyA/IGFjY2Vzc29yKHJvdykgOiByb3dbYWNjZXNzb3JdO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdENlbGxEYXRhKGNlbGwpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBjaGVja0hhc0Zvb3RlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9oYXNGb290ZXIuc2V0KE9iamVjdC52YWx1ZXModGhpcy5jb2x1bW5zKCkpLnNvbWUoKGNvbHVtbikgPT4gISFjb2x1bW4uZm9vdGVyKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSgpO1xuICAgIGlmIChkYXRhU291cmNlID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgIHRoaXMuY2hlY2tIYXNGb290ZXIoKTtcbiAgICBkYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQoKTtcbiAgICBpZiAoZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdhdHRUYWJsZURhdGFTb3VyY2UgPT09IGZhbHNlKSByZXR1cm47XG4gICAgZGF0YVNvdXJjZS5zb3J0aW5nRGF0YUFjY2Vzc29yID0gKHJvdzogVCwgc29ydEhlYWRlcklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHNvcnRDb2x1bW4gPSB0aGlzLmNvbHVtbnMoKVtzb3J0SGVhZGVySWRdO1xuICAgICAgaWYgKCFzb3J0Q29sdW1uPy5hY2Nlc3NvcikgcmV0dXJuICcnO1xuXG4gICAgICAvLyBBY2Nlc3MgcmF3IHZhbHVlIGZvciBzb3J0aW5nLCBpbnN0ZWFkIG9mIGFwcGx5aW5nIGRlZmF1bHQgZm9ybWF0dGluZy5cbiAgICAgIGNvbnN0IHsgYWNjZXNzb3IgfSA9IHNvcnRDb2x1bW47XG4gICAgICBjb25zdCBjZWxsID0gdHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gYWNjZXNzb3Iocm93KSA6IHJvd1thY2Nlc3Nvcl07XG5cbiAgICAgIC8vIE1ha2Ugc29ydGluZyBieSB0ZXh0IGNhc2UgaW5zZW5zaXRpdmUuXG4gICAgICBpZiAodHlwZW9mIGNlbGwgPT09ICdzdHJpbmcnKSByZXR1cm4gY2VsbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGNlbGwgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gY2VsbC5nZXRUaW1lKCk7XG4gICAgICByZXR1cm4gY2VsbCBhcyBudW1iZXI7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddIHx8IGNoYW5nZXNbJ2Rpc3BsYXllZENvbHVtbnMnXSB8fCBjaGFuZ2VzWydzZWxlY3RhYmxlJ10pIHtcbiAgICAgIGNvbnN0IGRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmRpc3BsYXllZENvbHVtbnMoKTtcbiAgICAgIGNvbnN0IHNpemluZyA9IE9iamVjdC5rZXlzKHRoaXMuY29sdW1ucygpKVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+ICFkaXNwbGF5ZWRDb2x1bW5zIHx8IGRpc3BsYXllZENvbHVtbnMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgLm1hcCgoa2V5KSA9PiB0aGlzLmNvbHVtbnMoKVtrZXldKVxuICAgICAgICAuZmlsdGVyKChjb2x1bW4pID0+ICFjb2x1bW4uZXhwYW5kYWJsZSlcbiAgICAgICAgLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4uc2l6ZSA/PyAnYXV0bycpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RhYmxlKCkpIHtcbiAgICAgICAgLy8gQWRkIHNwYWNlIGZvciBleHRyYSBjaGVja2JveCBjb2x1bW5cbiAgICAgICAgc2l6aW5nLnVuc2hpZnQoJ3ZhcigtLXdhdHQtc3BhY2UteGwpJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9pc0V4cGFuZGFibGUoKSkge1xuICAgICAgICAvLyBBZGQgc3BhY2UgZm9yIGV4dHJhIGV4cGFuZGFibGUgY29sdW1uXG4gICAgICAgIHNpemluZy5wdXNoKCdtaW4tY29udGVudCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICctLXdhdHQtdGFibGUtZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJyxcbiAgICAgICAgc2l6aW5nLmpvaW4oJyAnKVxuICAgICAgKTtcblxuICAgICAgdGhpcy5jaGVja0hhc0Zvb3RlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIHNlbGVjdGlvbi5cbiAgICovXG4gIGNsZWFyU2VsZWN0aW9uID0gKCkgPT4gdGhpcy5zZWxlY3Rpb24uc2V0KFtdKTtcblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIG9mIGEgcm93LlxuICAgKi9cbiAgdG9nZ2xlU2VsZWN0aW9uID0gKHJvdzogVCkgPT5cbiAgICB0aGlzLnNlbGVjdGlvbi51cGRhdGUoKHMpID0+IChzLmluY2x1ZGVzKHJvdykgPyBzLmZpbHRlcigocikgPT4gciAhPT0gcm93KSA6IHMuY29uY2F0KHJvdykpKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBfZ2V0Q29sdW1ucygpIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zKCkgPz8gT2JqZWN0LmtleXModGhpcy5jb2x1bW5zKCkpO1xuICAgIHJldHVybiBbXG4gICAgICAuLi4odGhpcy5zZWxlY3RhYmxlKCkgPyBbdGhpcy5fY2hlY2tib3hDb2x1bW5dIDogW10pLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIoKGtleSkgPT4gIXRoaXMuY29sdW1ucygpW2tleV0uZXhwYW5kYWJsZSksXG4gICAgICAuLi4odGhpcy5faXNFeHBhbmRhYmxlKCkgPyBbdGhpcy5fZXhwYW5kYWJsZUNvbHVtbl0gOiBbXSksXG4gICAgICAuLi5jb2x1bW5zLmZpbHRlcigoa2V5KSA9PiB0aGlzLmNvbHVtbnMoKVtrZXldLmV4cGFuZGFibGUpLFxuICAgIF07XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBfZ2V0Q29sdW1uVGVtcGxhdGUoY29sdW1uOiBXYXR0VGFibGVDb2x1bW48VD4pIHtcbiAgICByZXR1cm4gdGhpcy5jZWxscygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uY29sdW1uKCkgPT09IGNvbHVtbik/LnRlbXBsYXRlUmVmO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2dldENvbHVtbkhlYWRlcihjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+Pikge1xuICAgIGlmICh0eXBlb2YgY29sdW1uLnZhbHVlLmhlYWRlciA9PT0gJ3N0cmluZycpIHJldHVybiBjb2x1bW4udmFsdWUuaGVhZGVyO1xuICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGxzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4oKSA9PT0gY29sdW1uLnZhbHVlKTtcbiAgICByZXR1cm4gY2VsbD8uaGVhZGVyKCkgPz8gdGhpcy5yZXNvbHZlSGVhZGVyKCk/Lihjb2x1bW4ua2V5KSA/PyBjb2x1bW4ua2V5O1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2dldENvbHVtbkhlbHBlckFjdGlvbihjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+Pikge1xuICAgIHJldHVybiBjb2x1bW4udmFsdWUuaGVscGVyQWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2dldENvbHVtbkhlYWRlclRvb2x0aXAoY29sdW1uOiBLZXlWYWx1ZTxzdHJpbmcsIFdhdHRUYWJsZUNvbHVtbjxUPj4pIHtcbiAgICByZXR1cm4gY29sdW1uLnZhbHVlLnRvb2x0aXA7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBfZ2V0Q29sdW1uQ2VsbChjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+Piwgcm93OiBUKSB7XG4gICAgcmV0dXJuIGNvbHVtbi52YWx1ZS5jZWxsPy4ocm93KSA/PyB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIF9nZXRSb3dLZXkgPSAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiB7XG4gICAgY29uc3QgdHJhY2tCeSA9IHRoaXMudHJhY2tCeSgpO1xuICAgIGlmICh0eXBlb2YgdHJhY2tCeSA9PT0gJ3N0cmluZycpIHJldHVybiByb3dbdHJhY2tCeV07XG4gICAgaWYgKHR5cGVvZiB0cmFja0J5ID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdHJhY2tCeShpbmRleCwgcm93KTtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlKCkuZGF0YS5pbmRleE9mKHJvdyk7XG4gIH07XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2lzQWN0aXZlUm93KHJvdzogVCkge1xuICAgIGNvbnN0IGFjdGl2ZVJvdyA9IHRoaXMuYWN0aXZlUm93KCk7XG4gICAgY29uc3QgYWN0aXZlUm93Q29tcGFyYXRvciA9IHRoaXMuYWN0aXZlUm93Q29tcGFyYXRvcigpO1xuICAgIGlmICghYWN0aXZlUm93KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGFjdGl2ZVJvd0NvbXBhcmF0b3IgPyBhY3RpdmVSb3dDb21wYXJhdG9yKHJvdywgYWN0aXZlUm93KSA6IHJvdyA9PT0gYWN0aXZlUm93O1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2lzRXhwYW5kYWJsZSgpIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmNvbHVtbnMoKSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uZXhwYW5kYWJsZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBfb25Sb3dDbGljayhyb3c6IFQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHdpbmRvdy5nZXRTZWxlY3Rpb24oKT8udG9TdHJpbmcoKSAhPT0gJycpIHJldHVybjtcbiAgICBpZiAodGhpcy5faXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWQudXBkYXRlKChyb3dzKSA9PlxuICAgICAgICByb3dzLmluY2x1ZGVzKHJvdykgPyByb3dzLmZpbHRlcigocikgPT4gciAhPSByb3cpIDogWy4uLnJvd3MsIHJvd11cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm93Q2xpY2skLm5leHQocm93KTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YXR0LXRhYmxlLXRvb2xiYXItc3BhY2VyJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS13YXR0LXNwYWNlLXhsKTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0VGFibGVUb29sYmFyU3BhY2VyQ29tcG9uZW50IHt9XG5cbmV4cG9ydCBjb25zdCBXQVRUX1RBQkxFID0gW1xuICBXYXR0VGFibGVDb21wb25lbnQsXG4gIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmUsXG4gIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmUsXG4gIFdhdHRUYWJsZVRvb2xiYXJTcGFjZXJDb21wb25lbnQsXG5dO1xuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjx0YWJsZVxuICBtYXQtdGFibGVcbiAgbWF0U29ydFxuICByb2xlPVwidHJlZWdyaWRcIlxuICBbbmdDbGFzc109XCJ7ICd3YXR0LXRhYmxlLWhhcy1zZWxlY3Rpb24nOiBnZXRTZWxlY3Rpb25TdGF0ZSgpICE9PSBmYWxzZSB9XCJcbiAgW21hdFNvcnRBY3RpdmVdPVwic29ydEJ5KClcIlxuICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uKClcIlxuICBbbWF0U29ydERpc2FibGVDbGVhcl09XCIhc29ydENsZWFyKClcIlxuICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlKClcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImRlc2NyaXB0aW9uKClcIlxuICAobWF0U29ydENoYW5nZSk9XCJzb3J0Q2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4+XG4gIEBpZiAoc2VsZWN0YWJsZSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIl9jaGVja2JveENvbHVtblwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cIndhdHQtdGFibGUtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICA8d2F0dC1jaGVja2JveFxuICAgICAgICAgIFtuZ01vZGVsXT1cImdldFNlbGVjdGlvblN0YXRlKClcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi5zZXQoZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YSkgOiBjbGVhclNlbGVjdGlvbigpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgY2xhc3M9XCJ3YXR0LXRhYmxlLWNoZWNrYm94LWNlbGxcIj5cbiAgICAgICAgPHdhdHQtY2hlY2tib3hcbiAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3Rpb24oKS5pbmNsdWRlcyhyb3cpXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb24ocm93KVwiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG5cbiAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIl9leHBhbmRhYmxlQ29sdW1uXCI+XG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgIDx0ZFxuICAgICAgI3RkXG4gICAgICBtYXQtY2VsbFxuICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICBbYXR0ci5kYXRhLWtleV09XCJfZ2V0Um93S2V5KGluZGV4LCByb3cpXCJcbiAgICAgIFthdHRyLmRhdGEtcm93LWluZGV4XT1cImluZGV4XCJcbiAgICAgIChjbGljayk9XCJfb25Sb3dDbGljayhyb3cpXCJcbiAgICAgIFtjbGFzcy53YXR0LXRhYmxlLWNlbGwtLWV4cGFuZGVkXT1cImV4cGFuZGVkKCkuaW5jbHVkZXMocm93KVwiXG4gICAgPlxuICAgICAgPHdhdHQtaWNvbiBuYW1lPVwicmlnaHRcIiBzaXplPVwieHNcIiAvPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zKCkgfCBrZXl2YWx1ZTsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCIgW3N0aWNreUVuZF09XCJjb2x1bW4udmFsdWUuc3RpY2t5RW5kPy4oKVwiPlxuICAgICAgPHRoXG4gICAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICBbY2xhc3Mud2F0dC10YWJsZS1jZWxsLS1leHBhbmRhYmxlXT1cImNvbHVtbi52YWx1ZS5leHBhbmRhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJ3YXR0LXRhYmxlLWFsaWduLXt7IGNvbHVtbi52YWx1ZS5hbGlnbiA/PyAnbGVmdCcgfX0ge3tcbiAgICAgICAgICBjb2x1bW4udmFsdWUuaGVhZGVyQ2VsbENsYXNzXG4gICAgICAgIH19XCJcbiAgICAgID5cbiAgICAgICAgQGlmIChfZ2V0Q29sdW1uSGVscGVyQWN0aW9uKGNvbHVtbik7IGFzIGFjdGlvbikge1xuICAgICAgICAgIDx3YXR0LWljb24gbmFtZT1cImhlbHBcIiAoY2xpY2spPVwiYWN0aW9uKClcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwid2F0dC10YWJsZS1oZWFkZXItY2VsbFwiXG4gICAgICAgICAgbWF0LXNvcnQtaGVhZGVyXG4gICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uLnZhbHVlLmFsaWduID09PSAncmlnaHQnID8gJ2JlZm9yZScgOiAnYWZ0ZXInXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbHVtbi52YWx1ZS5hY2Nlc3NvciB8fCBjb2x1bW4udmFsdWUuc29ydCA9PT0gZmFsc2VcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgX2dldENvbHVtbkhlYWRlcihjb2x1bW4pIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKF9nZXRDb2x1bW5IZWFkZXJUb29sdGlwKGNvbHVtbik7IGFzIHRvb2x0aXApIHtcbiAgICAgICAgICA8d2F0dC1pY29uIFt0aXRsZV09XCJ0b29sdGlwXCIgbmFtZT1cImluZm9cIiAvPlxuICAgICAgICB9XG4gICAgICA8L3RoPlxuXG4gICAgICA8dGRcbiAgICAgICAgI3RkXG4gICAgICAgIG1hdC1jZWxsXG4gICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICBbYXR0ci5kYXRhLWtleV09XCJfZ2V0Um93S2V5KGluZGV4LCByb3cpXCJcbiAgICAgICAgW2F0dHIuZGF0YS1yb3ctaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICBbY2xhc3Mud2F0dC10YWJsZS1jZWxsLS1leHBhbmRlZF09XCJleHBhbmRlZCgpLmluY2x1ZGVzKHJvdylcIlxuICAgICAgICBbY2xhc3Mud2F0dC10YWJsZS1jZWxsLS1leHBhbmRhYmxlXT1cImNvbHVtbi52YWx1ZS5leHBhbmRhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJ3YXR0LXRhYmxlLWFsaWduLXt7IGNvbHVtbi52YWx1ZS5hbGlnbiA/PyAnbGVmdCcgfX0ge3sgY29sdW1uLnZhbHVlLmRhdGFDZWxsQ2xhc3MgfX1cIlxuICAgICAgICAoY2xpY2spPVwiIWNvbHVtbi52YWx1ZS5leHBhbmRhYmxlICYmIF9vblJvd0NsaWNrKHJvdylcIlxuICAgICAgPlxuICAgICAgICBAaWYgKF9pc0V4cGFuZGFibGUoKSkge1xuICAgICAgICAgIEBkZWZlciAod2hlbiAhY29sdW1uLnZhbHVlLmV4cGFuZGFibGUgfHwgZXhwYW5kZWQoKS5pbmNsdWRlcyhyb3cpKSB7XG4gICAgICAgICAgICBAaWYgKF9nZXRDb2x1bW5UZW1wbGF0ZShjb2x1bW4udmFsdWUpOyBhcyB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2F0dC10YWJsZS1jZWxsLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIHt7IF9nZXRDb2x1bW5DZWxsKGNvbHVtbiwgcm93KSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChfZ2V0Q29sdW1uVGVtcGxhdGUoY29sdW1uLnZhbHVlKTsgYXMgdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YXR0LXRhYmxlLWNlbGwtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIHt7IF9nZXRDb2x1bW5DZWxsKGNvbHVtbiwgcm93KSB9fVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC90ZD5cblxuICAgICAgQGlmIChfaGFzRm9vdGVyKCkpIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgbWF0LWZvb3Rlci1jZWxsXG4gICAgICAgICAgKm1hdEZvb3RlckNlbGxEZWZcbiAgICAgICAgICBjbGFzcz1cInt7IGNvbHVtbi52YWx1ZS5mb290ZXI/LmNsYXNzIH19IHdhdHQtdGFibGUtYWxpZ24te3tcbiAgICAgICAgICAgIGNvbHVtbi52YWx1ZS5hbGlnbiA/PyAnbGVmdCdcbiAgICAgICAgICB9fSBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29sdW1uLnZhbHVlLmZvb3Rlcj8udmFsdWU/LigpIH19XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cblxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNwYWNlclwiPlxuICAgIDx0ZCBjbGFzcz1cIndhdHQtdGFibGUtZm9vdGVyLXNwYWNlclwiIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICBAaWYgKCFoaWRlQ29sdW1uSGVhZGVycygpKSB7XG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJfZ2V0Q29sdW1ucygpXCI+PC90cj5cbiAgfVxuICA8dHJcbiAgICBtYXQtcm93XG4gICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IF9nZXRDb2x1bW5zKClcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwicm93ID09PSBhY3RpdmVSb3coKVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3dhdHQtdGFibGUtaGlnaGxpZ2h0LXJvdyc6ICFkaXNhYmxlZCgpICYmICFzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0KCksXG4gICAgICAnd2F0dC10YWJsZS1jbGlja2FibGUtcm93JzogIWRpc2FibGVkKCkgJiYgX3Jvd0NsaWNrJC5vYnNlcnZlZCxcbiAgICAgICd3YXR0LXRhYmxlLWFjdGl2ZS1yb3cnOiBfaXNBY3RpdmVSb3cocm93KSxcbiAgICAgICd3YXR0LXRhYmxlLW5vLWVuZC1kaXZpZGVyJzogaGlkZUNvbHVtbkhlYWRlcnMoKSxcbiAgICB9XCJcbiAgPjwvdHI+XG5cbiAgQGlmICh0b29sYmFyKCkpIHtcbiAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3BhY2VyJ11cIj48L3RyPlxuICB9XG5cbiAgQGlmIChfaGFzRm9vdGVyKCkpIHtcbiAgICA8dHJcbiAgICAgIG1hdC1mb290ZXItcm93XG4gICAgICBbY2xhc3Mud2F0dC10YWJsZS1oaWRlLWZvb3Rlcl09XCJsb2FkaW5nKCkgfHwgZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YS5sZW5ndGggPT09IDBcIlxuICAgICAgKm1hdEZvb3RlclJvd0RlZj1cIl9nZXRDb2x1bW5zKCk7IHN0aWNreTogc3RpY2t5Rm9vdGVyKClcIlxuICAgID48L3RyPlxuICB9XG5cbiAgPG5nLWNvbnRhaW5lciAqbWF0Tm9EYXRhUm93PlxuICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICBAZm9yIChpIG9mIFsxLCAyLCAzXTsgdHJhY2sgaSkge1xuICAgICAgICA8dHIgY2xhc3M9XCJtYXQtbWRjLXJvd1wiPlxuICAgICAgICAgIEBmb3IgKF8gb2YgX2dldENvbHVtbnMoKTsgdHJhY2sgXzsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1tZGMtY2VsbFwiIFtjbGFzcy53YXR0LXRhYmxlLWxvYWRpbmctY2VsbF09XCJpID4gMCB8fCAhc2VsZWN0YWJsZSgpXCI+PC90ZD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgfVxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGFibGU+XG5cbkBpZiAodG9vbGJhcigpOyBhcyB0b29sYmFyKSB7XG4gIDxkaXYgY2xhc3M9XCJ3YXR0LXRhYmxlLXRvb2xiYXJcIiByb2xlPVwidG9vbGJhclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIHRvb2xiYXIudGVtcGxhdGVSZWY7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBmaWx0ZXJTZWxlY3Rpb25CeShkYXRhU291cmNlKCkuZmlsdGVyZWREYXRhKSB9XG4gICAgICBcIlxuICAgIC8+XG4gIDwvZGl2PlxufVxuIl19
320
+ '[style.--watt-table-grid-template-columns]': 'sizing().join(" ")',
321
+ }, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<table\n mat-table\n matSort\n role=\"treegrid\"\n [ngClass]=\"{ 'watt-table-has-selection': getSelectionState() !== false }\"\n [matSortActive]=\"sortBy()\"\n [matSortDirection]=\"sortDirection()\"\n [matSortDisableClear]=\"!sortClear()\"\n [dataSource]=\"dataSource()\"\n [attr.aria-label]=\"description()\"\n (matSortChange)=\"sortChange.emit($event)\"\n>\n @if (selectable()) {\n <ng-container [matColumnDef]=\"checkboxColumn\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"getSelectionState()\"\n (ngModelChange)=\"$event ? selection.set(dataSource().filteredData) : clearSelection()\"\n />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"selection().includes(row)\"\n (ngModelChange)=\"toggleSelection(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n }\n\n <ng-container [matColumnDef]=\"expandableColumn\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n (click)=\"onRowClick(row)\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n >\n <watt-icon name=\"right\" size=\"xs\" />\n </td>\n </ng-container>\n\n @for (column of columns() | keyvalue; track column.key) {\n <ng-container [matColumnDef]=\"column.key\" [stickyEnd]=\"column.value.stickyEnd?.()\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{\n column.value.headerCellClass\n }}\"\n >\n @if (column.value.helperAction; as action) {\n <watt-icon name=\"help\" (click)=\"action()\" />\n }\n\n <div\n class=\"watt-table-header-cell\"\n mat-sort-header\n [arrowPosition]=\"column.value.align === 'right' ? 'before' : 'after'\"\n [disabled]=\"!column.value.accessor || column.value.sort === false\"\n >\n {{ getColumnHeader(column) }}\n </div>\n @if (column.value.tooltip; as tooltip) {\n <watt-icon [title]=\"tooltip\" name=\"info\" />\n }\n </th>\n\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{ column.value.dataCellClass }}\"\n (click)=\"!column.value.expandable && onRowClick(row)\"\n >\n @if (isExpandable()) {\n @defer (when !column.value.expandable || expanded().includes(row)) {\n @if (getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ getColumnCell(column.value, row) }}\n }\n }\n } @else {\n @if (getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ getColumnCell(column.value, row) }}\n }\n }\n </td>\n\n @if (hasFooter()) {\n <td\n mat-footer-cell\n *matFooterCellDef\n class=\"{{ column.value.footer?.class }} watt-table-align-{{\n column.value.align ?? 'left'\n }} \"\n >\n {{ column.value.footer?.value?.() }}\n </td>\n }\n </ng-container>\n }\n\n <ng-container matColumnDef=\"spacer\">\n <td class=\"watt-table-footer-spacer\" mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (!hideColumnHeaders()) {\n <tr mat-header-row *matHeaderRowDef=\"renderedColumns()\"></tr>\n }\n <tr\n mat-row\n *matRowDef=\"let row; columns: renderedColumns()\"\n [attr.aria-selected]=\"row === activeRow()\"\n [ngClass]=\"{\n 'watt-table-highlight-row': !disabled() && !suppressRowHoverHighlight(),\n 'watt-table-clickable-row': !disabled() && rowClick$.observed,\n 'watt-table-active-row': isActiveRow(row),\n 'watt-table-no-end-divider': hideColumnHeaders(),\n }\"\n ></tr>\n\n @if (toolbar()) {\n <tr mat-footer-row *matFooterRowDef=\"['spacer']\"></tr>\n }\n\n @if (hasFooter()) {\n <tr\n mat-footer-row\n [class.watt-table-hide-footer]=\"loading() || dataSource().filteredData.length === 0\"\n *matFooterRowDef=\"renderedColumns(); sticky: stickyFooter()\"\n ></tr>\n }\n\n <ng-container *matNoDataRow>\n @if (loading()) {\n @for (i of [1, 2, 3]; track i) {\n <tr class=\"mat-mdc-row\">\n @for (_ of renderedColumns(); track _; let i = $index) {\n <td class=\"mat-mdc-cell\" [class.watt-table-loading-cell]=\"i > 0 || !selectable()\"></td>\n }\n </tr>\n }\n }\n </ng-container>\n</table>\n\n@if (toolbar(); as toolbar) {\n <div class=\"watt-table-toolbar\" role=\"toolbar\">\n <ng-container\n *ngTemplateOutlet=\"\n toolbar.templateRef;\n context: { $implicit: filterSelectionBy(dataSource().filteredData) }\n \"\n />\n </div>\n}\n", styles: ["watt-table{--mat-table-row-item-label-text-font: $primary-font-family;--mat-table-row-item-outline-color: var(--watt-color-neutral-grey-300);--mat-table-header-headline-font: $primary-font-family}watt-table,watt-table .mat-mdc-table{display:grid;position:relative;overflow:auto;min-height:44px}watt-table .mat-mdc-table{grid-template-columns:var(--watt-table-grid-template-columns);grid-auto-rows:max-content;max-height:100%;z-index:1}watt-table .mat-mdc-table thead,watt-table .mat-mdc-table tbody,watt-table .mat-mdc-table tfoot,watt-table .mat-mdc-table tr.mat-mdc-row,watt-table .mat-mdc-table tr.mat-mdc-header-row,watt-table .mat-mdc-table tr.mat-mdc-footer-row{display:contents}watt-table .mat-mdc-table tr.watt-table-hide-footer{display:none}watt-table .mat-mdc-table tr.mat-mdc-header-row{flex:0 0 auto}watt-table .mat-mdc-table th.mat-mdc-header-cell{color:var(--watt-typography-label-color);font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:uppercase;box-sizing:border-box;display:flex;position:sticky;top:0;padding:0 var(--watt-space-s);height:auto;background:var(--watt-color-primary-ultralight);box-shadow:0 -1px #0000001f inset;border:0;z-index:2!important;white-space:nowrap;-webkit-user-select:none;user-select:none}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table td.mat-mdc-cell{display:flex;align-items:center;min-height:56px;padding:var(--watt-space-s) var(--watt-space-m)}watt-table .mat-mdc-table td.mat-mdc-cell.watt-table-cell--expandable{padding:0}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer),watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:1px solid var(--watt-color-neutral-grey-300)}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer){font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;border-top:2px solid var(--watt-color-neutral-grey-300);background-color:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-no-end-divider:last-child .mat-mdc-cell{border-bottom:0px solid var(--watt-color-neutral-grey-300)!important}watt-table .mat-mdc-table .watt-table-clickable-row>td:not(.watt-table-cell--expandable),watt-table .mat-mdc-table tr:has(>.watt-table-cell--expandable)>td:not(.watt-table-cell--expandable){cursor:pointer;-webkit-user-select:text;user-select:text}watt-table .mat-mdc-table .watt-table-highlight-row:hover:not(.watt-table-active-row,:has(>.watt-table-cell--expandable:hover))>td{background:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-active-row>td{background:var(--watt-color-secondary-ultralight)}watt-table .mat-mdc-table .mat-column-__expandableColumn__>watt-icon{transition:transform .2s}watt-table .mat-mdc-table .mat-column-__expandableColumn__.watt-table-cell--expanded>watt-icon{transform:rotate(90deg)}watt-table .mat-mdc-table .mat-sort-header-arrow{margin:0}watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-arrow{margin-right:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-arrow,watt-table .mat-mdc-table .watt-table-align-left .mat-sort-header-arrow{margin-left:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-header-cell{padding:.75rem var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-checkbox-cell{justify-content:center}watt-table .mat-mdc-table th.watt-table-checkbox-cell{display:flex;align-items:center}watt-table .mat-mdc-table .watt-table-align-center,watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-container{justify-content:center}watt-table .mat-mdc-table .watt-table-align-right,watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-container{justify-content:right}.watt-table-variant-zebra>table>tbody>tr:nth-child(2n)>td{background-color:var(--watt-color-neutral-grey-50)}watt-table .mat-mdc-table th.watt-table-cell--expandable{display:none}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable{position:relative;min-height:0;max-height:0;border-bottom-width:0;overflow:hidden;pointer-events:none;grid-column:1/-1;background:transparent;flex:1 1 auto;opacity:0;will-change:opacity;transition:opacity .2s cubic-bezier(.4,0,.2,1),overflow 0s .3s allow-discrete}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable>.watt-table-cell-wrapper{position:absolute;top:0;width:100%}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded{height:auto;max-height:initial;opacity:1;border-bottom-width:1px;pointer-events:all;overflow:visible}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded>.watt-table-cell-wrapper{position:relative}.watt-table-footer-spacer{display:none;height:76px;border:0}.watt-table-has-selection .watt-table-footer-spacer{display:block}.watt-table-has-selection+.watt-table-toolbar{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .5s}.watt-table-toolbar{position:absolute;bottom:var(--watt-space-m);left:50%;transform:translate(-50%);display:flex;align-items:center;padding:0 var(--watt-space-m);min-height:44px;border-radius:22px;color:var(--watt-color-primary-contrast);background-color:var(--watt-color-primary);z-index:1;opacity:0;visibility:hidden;transition:none}.watt-table-toolbar .watt-button--disabled{opacity:.4;--watt-button-primary-disabled-color: #fff}.watt-table-loading-cell:before{content:\"\";flex:1;display:block;max-width:200px;height:var(--watt-space-m);border-radius:var(--watt-space-m);opacity:.75;animation:shine 2s infinite linear;background-color:var(--watt-color-neutral-grey-200);background-size:300px;background-position:-100px;background-image:linear-gradient(90deg,var(--watt-color-neutral-grey-300) 0px,var(--watt-color-neutral-grey-200) 40px,var(--watt-color-neutral-grey-300) 80px)}@keyframes shine{40%,to{background-position:200px}}\n"] }]
322
+ }], ctorParameters: () => [] });
323
+ export const WATT_TABLE = [WattTableComponent, WattTableCellDirective, WattTableToolbarDirective];
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJsZS93YXR0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RhYmxlL3dhdHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQVksWUFBWSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF3QixtQkFBbUIsRUFBRSxNQUFN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QyxHQUFNLEVBQUUsRUFBRSxDQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3VHQWpRcEYsa0JBQWtCOzJGQUFsQixrQkFBa0IsMGtHQXFJSyxDQUFBLHNCQUF5QixDQUFBLHVFQUMxQixDQUFBLHlCQUE0QixDQUFBLHNHQUNsQyxPQUFPLDZKQzFXcEMsdXlNQTRMQSxzNkxEcUJJLE9BQU8sb0ZBQ1AsZ0JBQWdCLG1KQUVoQixXQUFXLDhWQUNYLGFBQWEsaWRBQ2IsY0FBYywrZ0RBQ2QsaUJBQWlCLGtHQUNqQixxQkFBcUIsMkVBTHJCLFlBQVksaUdBRFosZ0JBQWdCOzsyRkFpQlAsa0JBQWtCO2tCQXBCOUIsU0FBUzs4QkFDQzt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjtxQkFDdEIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxZQUMzQixZQUFZLFFBR2hCO3dCQUNKLGtDQUFrQyxFQUFFLHVCQUF1Qjt3QkFDM0QsNENBQTRDLEVBQUUsb0JBQW9CO3FCQUNuRTs7QUFzUUgsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IEtleVZhbHVlLCBLZXlWYWx1ZVBpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgY29udGVudENoaWxkLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICB2aWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgU2lnbmFsLCBUcmFja0J5RnVuY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0TW9kdWxlLCBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgV2F0dENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NoZWNrYm94JztcbmltcG9ydCB7IHdhdHRGb3JtYXREYXRlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IElXYXR0VGFibGVEYXRhU291cmNlLCBXYXR0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi93YXR0LXRhYmxlLWRhdGEtc291cmNlJztcbmltcG9ydCB7IGFuaW1hdGVFeHBhbmRhYmxlQ2VsbHMgfSBmcm9tICcuL3dhdHQtdGFibGUtZXhwYW5kLWFuaW1hdGlvbic7XG5cbi8qKiBDbGFzcyBuYW1lIGZvciBleHBhbmRhYmxlIGNlbGxzLiAqL1xuZXhwb3J0IGNvbnN0IEVYUEFOREFCTEVfQ0xBU1MgPSAnd2F0dC10YWJsZS1jZWxsLS1leHBhbmRhYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBXYXR0VGFibGVDb2x1bW48VD4ge1xuICAvKipcbiAgICogVGhlIGRhdGEgdGhhdCB0aGlzIGNvbHVtbiBzaG91bGQgYmUgYm91bmQgdG8sIGVpdGhlciBhcyBhIHByb3BlcnR5IG9mIGBUYFxuICAgKiBvciBkZXJpdmVkIGZyb20gZWFjaCByb3cgb2YgYFRgIHVzaW5nIGFuIGFjY2Vzc29yIGZ1bmN0aW9uLiAgVXNlIGBudWxsYFxuICAgKiBmb3IgY29sdW1ucyB0aGF0IHNob3VsZCBub3QgYmUgYXNzb2NpYXRlZCB3aXRoIGRhdGEsIGJ1dCBub3RlIHRoYXQgdGhpc1xuICAgKiB3aWxsIGRpc2FibGUgc29ydGluZyBhbmQgYXV0b21hdGljIGNlbGwgcG9wdWxhdGlvbi5cbiAgICovXG4gIGFjY2Vzc29yOiBrZXlvZiBUIHwgKChyb3c6IFQpID0+IHVua25vd24pIHwgbnVsbDtcblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgaGVhZGVyIHRleHQgdG8gYSBzdGF0aWMgZGlzcGxheSB2YWx1ZS4gVGhpcyB3aWxsIHByZXZlbnRcbiAgICogdGhlIGByZXNvbHZlSGVhZGVyYCBpbnB1dCBmdW5jdGlvbiBmcm9tIGJlaW5nIGNhbGxlZCBmb3IgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBjZWxsIGNvbnRlbnQgd2hlbiBub3QgdXNpbmcgdGVtcGxhdGUuIEJ5IGRlZmF1bHQsXG4gICAqIGNlbGwgY29udGVudCBpcyBmb3VuZCB1c2luZyB0aGUgYGFjY2Vzc29yYCAodW5sZXNzIGl0IGlzIGBudWxsYCkuXG4gICAqL1xuICBjZWxsPzogKHJvdzogVCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAqIHVubGVzcyBgYWNjZXNzb3JgIGlzIGBudWxsYC5cbiAgICovXG4gIHNvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbHVtbiBzaXplIHVzaW5nIGdyaWQgc2l6aW5nIHZhbHVlcy4gRGVmYXVsdHMgdG8gYFwiYXV0b1wiYC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogQWNjZXB0cyBhbGwgb2YgdGhlIENTUyBncmlkIHRyYWNrIHNpemUga2V5d29yZHMgKHN1Y2ggYXMgYG1pbi1jb250ZW50YCxcbiAgICogYG1heC1jb250ZW50YCwgYG1pbm1heCgpYCkgYXMgd2VsbCBhcyBmcmFjdGlvbmFsIChgZnJgKSwgcGVyY2VudGFnZSAoYCVgKVxuICAgKiBhbmQgbGVuZ3RoIChgcHhgLCBgZW1gLCBldGMpIHVuaXRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jdHJhY2stc2l6ZXNcbiAgICovXG4gIHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvcml6b250YWxseSBhbGlnbiB0aGUgY29udGVudHMgb2YgdGhlIGNvbHVtbi4gRGVmYXVsdHMgdG8gYFwibGVmdFwiYC5cbiAgICovXG4gIGFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgaWNvbiB3aWxsIGJlIHNob3duIGluIHRoZSBoZWFkZXIgY2VsbCwgd2l0aCBhbiBjbGljayBldmVudC5cbiAgICovXG4gIGhlbHBlckFjdGlvbj86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgaGVhZGVyIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGhlYWRlckNlbGxDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBkYXRhIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGRhdGFDZWxsQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZm9vdGVyPzogV2F0dFRhYmxlQ29sdW1uRm9vdGVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBjb2x1bW4gcmVtYWlucyB2aXNpYmxlIHdoZW4gaG9yaXpvbnRhbGx5IHNjcm9sbGluZy5cbiAgICovXG4gIHN0aWNreUVuZD86IFNpZ25hbDxib29sZWFuPjtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBjZWxsIGlzIHJlcGxhY2VkIHdpdGggYW4gZXhwYW5kYWJsZSBhcnJvdyBhbmQgdGhlIGNvbnRlbnQgaXMgZGVmZXJyZWQuXG4gICAqIENsaWNraW5nIG9uIHRoZSBhcnJvdyByZXZlYWxzIHRoZSBjb250ZW50IGJlbG93IHRoZSBjdXJyZW50IHJvdy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gcHJvdmlkZSBhIGN1c3RvbSBgdHJhY2tCeWAgZnVuY3Rpb24gd2hlbiB1c2luZyBgZXhwYW5kYWJsZWAsXG4gICAqIG90aGVyd2lzZSBhbmltYXRpb25zIGNhbiBiZSBpbmFjY3VyYXRlIHdoZW4gZGF0YSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgZXhwYW5kYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvb2x0aXAgdGV4dCB0byBzaG93IG9uIGhvdmVyIG9mIHRoZSBoZWFkZXIgY2VsbC5cbiAgICovXG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGZvb3RlciBjZWxsIG9mIGEgY29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhdHRUYWJsZUNvbHVtbkZvb3RlciB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgZm9vdGVyIGNlbGwuXG4gICAqL1xuICB2YWx1ZT86IFNpZ25hbDxzdHJpbmcgfCBudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGZvb3RlciBjZWxsLlxuICAgKi9cbiAgY2xhc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVjb3JkIGZvciBkZWZpbmluZyBjb2x1bW5zIHdpdGgga2V5cyB1c2VkIGFzIGNvbHVtbiBpZGVudGlmaWVycy5cbiAqL1xuZXhwb3J0IHR5cGUgV2F0dFRhYmxlQ29sdW1uRGVmPFQ+ID0gUmVjb3JkPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+PjtcblxuLy8gVXNlZCBmb3Igc3Ryb25nbHkgdHlwaW5nIHRoZSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZVxuaW50ZXJmYWNlIFdhdHRUYWJsZUNlbGxDb250ZXh0PFQ+IHtcbiAgJGltcGxpY2l0OiBUO1xufVxuXG5pbnRlcmZhY2UgV2F0dFRhYmxlVG9vbGJhckNvbnRleHQ8VD4ge1xuICAkaW1wbGljaXQ6IFQ7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVDZWxsXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVDZWxsQ29udGV4dDxUPj4pO1xuXG4gIC8qKlxuICAgKiBUaGUgV2F0dFRhYmxlQ29sdW1uIHRoaXMgdGVtcGxhdGUgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGNvbHVtbiA9IGlucHV0LnJlcXVpcmVkPFdhdHRUYWJsZUNvbHVtbjxUPj4oeyBhbGlhczogJ3dhdHRUYWJsZUNlbGwnIH0pO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBoZWFkZXIgdGV4dCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4odW5kZWZpbmVkLCB7IGFsaWFzOiAnd2F0dFRhYmxlQ2VsbEhlYWRlcicgfSk7XG5cbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oXG4gICAgX2RpcmVjdGl2ZTogV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZTxUPixcbiAgICBjb250ZXh0OiB1bmtub3duXG4gICk6IGNvbnRleHQgaXMgV2F0dFRhYmxlQ2VsbENvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVUb29sYmFyXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVUb29sYmFyQ29udGV4dDxUW10+Pik7XG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFQ+KFxuICAgIF9kaXJlY3RpdmU6IFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBjb250ZXh0IGlzIFdhdHRUYWJsZVRvb2xiYXJDb250ZXh0PFRbXT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVXNhZ2U6XG4gKiBgaW1wb3J0IHsgV0FUVF9UQUJMRSB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L3RhYmxlJztgXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIFdhdHRJY29uQ29tcG9uZW50LFxuICAgIFdhdHRDaGVja2JveENvbXBvbmVudCxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICd3YXR0LXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLndhdHQtdGFibGUtdmFyaWFudC16ZWJyYV0nOiAndmFyaWFudCgpID09PSBcInplYnJhXCInLFxuICAgICdbc3R5bGUuLS13YXR0LXRhYmxlLWdyaWQtdGVtcGxhdGUtY29sdW1uc10nOiAnc2l6aW5nKCkuam9pbihcIiBcIiknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0VGFibGVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICogVGhlIHRhYmxlJ3Mgc291cmNlIG9mIGRhdGEuIFByb3BlcnR5IHNob3VsZCBub3QgYmUgY2hhbmdlZCBhZnRlclxuICAgKiBpbml0aWFsaXphdGlvbiwgaW5zdGVhZCB1cGRhdGUgdGhlIGRhdGEgb24gdGhlIGluc3RhbmNlIGl0c2VsZi5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxJV2F0dFRhYmxlRGF0YVNvdXJjZTxUPj4oKTtcblxuICAvKipcbiAgICogQ29sdW1uIGRlZmluaXRpb24gcmVjb3JkIHdpdGgga2V5cyByZXByZXNlbnRpbmcgdGhlIGNvbHVtbiBpZGVudGlmaWVyc1xuICAgKiBhbmQgdmFsdWVzIGJlaW5nIHRoZSBjb2x1bW4gY29uZmlndXJhdGlvbi4gVGhlIG9yZGVyIG9mIHRoZSBjb2x1bW5zXG4gICAqIGlzIGRldGVybWluZWQgYnkgdGhlIHByb3BlcnR5IG9yZGVyLCBidXQgY2FuIGJlIG92ZXJydWxlZCBieSB0aGVcbiAgICogYGRpc3BsYXllZENvbHVtbnNgIGlucHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29sdW1ucyA9IGlucHV0PFdhdHRUYWJsZUNvbHVtbkRlZjxUPj4oe30pO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBoaWRpbmcgb3IgcmVvcmRlcmluZyBjb2x1bW5zIGRlZmluZWQgaW4gdGhlIGBjb2x1bW5zYCBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBpbnB1dDxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogVXNlZCBmb3IgZGlzYWJsaW5nIHRoZSB0YWJsZS4gVGhpcyB3aWxsIGRpc2FibGUgYWxsIHVzZXIgaW50ZXJhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgZGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGZvciB2aXN1YWxseSBpbXBhaXJlZCB1c2Vycy5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQoJycpO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgdGFibGUgd2lsbCBzaG93IGEgbG9hZGluZyBpbmRpY2F0b3JcbiAgICogd2hlbiB0aGVyZSBpcyBubyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGluZyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogSWYgdHJ1ZSB0aGUgZm9vdGVyIHdpbGwgYmUgc3RpY2t5XG4gICAqL1xuICByZWFkb25seSBzdGlja3lGb290ZXIgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBoZWFkZXIgdGV4dCBmb3IgY29sdW1ucyB0aGF0XG4gICAqIGRvIG5vdCBoYXZlIGEgc3RhdGljIGhlYWRlciB0ZXh0IHNldCBpbiB0aGUgY29sdW1uIGRlZmluaXRpb24uXG4gICAqIFVzZWZ1bCBmb3IgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBvZiBjb2x1bW4gaGVhZGVycy5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVIZWFkZXIgPSBpbnB1dDwoa2V5OiBzdHJpbmcpID0+IHN0cmluZz4oKTtcblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgY29sdW1uIHRoYXQgc2hvdWxkIGJlIHNvcnRlZCBpbml0aWFsbHkuXG4gICAqL1xuICByZWFkb25seSBzb3J0QnkgPSBpbnB1dCgnJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IGRpcmVjdGlvbiBvZiB0aGUgaW5pdGlhbGx5IHNvcnRlZCBjb2x1bW4uXG4gICAqL1xuICByZWFkb25seSBzb3J0RGlyZWN0aW9uID0gaW5wdXQ8U29ydERpcmVjdGlvbj4oJycpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNsZWFyIHRoZSBzb3J0LiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzb3J0Q2xlYXIgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFibGUgc2hvdWxkIGluY2x1ZGUgYSBjaGVja2JveCBjb2x1bW4gZm9yIHJvdyBzZWxlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RhYmxlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByb3dzLiBPbmx5IGFwcGxpY2FibGUgd2hlbiBzZWxlY3RhYmxlIGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IG1vZGVsPFRbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHJvdyBob3ZlciBoaWdobGlnaHQuXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0ID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHJvdy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZVJvdyA9IGlucHV0PFQ+KCk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0d28gcm93cyBhcmUgZXF1YWwuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBkZXRlcm1pbmluZyB0aGUgYWN0aXZlIHJvdyBpcyB0byBjb21wYXJlXG4gICAqIHRoZSB0d28gcm93IG9iamVjdHMgdXNpbmcgc3RyaWN0IGVxdWFsaXR5IGNoZWNrLiBUaGlzIGlzIHN1ZmZpY2llbnRcbiAgICogYXMgbG9uZyBhcyB0aGUgaW5zdGFuY2VzIHJlbWFpbiB0aGUgc2FtZSwgd2hpY2ggbWF5IG5vdCBiZSB0aGUgY2FzZVxuICAgKiBpZiByb3cgZGF0YSBpcyByZWNyZWF0ZWQgb3IgcmVidWlsdCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICByZWFkb25seSBhY3RpdmVSb3dDb21wYXJhdG9yID0gaW5wdXQ8KGN1cnJlbnRSb3c6IFQsIGFjdGl2ZVJvdzogVCkgPT4gYm9vbGVhbj4oKTtcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbHVtbiBoZWFkZXJzIHdpbGwgbm90IGJlIHNob3duLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBoaWRlQ29sdW1uSGVhZGVycyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQ2hvb3NlIGZyb20gYSBwcmVkZWZpbmVkIHNldCBvZiBkaXNwbGF5IHZhcmlhbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PCd6ZWJyYSc+KCk7XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHJvd3MgdGhhdCBhcmUgY3VycmVudGx5IGV4cGFuZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBtb2RlbDxUW10+KFtdKTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZnVuY3Rpb24gZm9yIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHJvd3MuXG4gICAqL1xuICByZWFkb25seSB0cmFja0J5ID0gaW5wdXQ8VHJhY2tCeUZ1bmN0aW9uPFQ+IHwga2V5b2YgVD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBUaGUgYG9ic2VydmVkYCBib29sZWFuIGZyb20gdGhlIGBTdWJqZWN0YCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhIHJvdyBpc1xuICAgKiBjbGlja2FibGUgb3Igbm90LiBUaGlzIGlzIGF2YWlsYWJsZSBvbiBgRXZlbnRFbWl0dGVyYCwgYnV0IG5vdCBvbiBgb3V0cHV0YCxcbiAgICogd2hpY2ggaXMgd2h5IHRoaXMgd29ya2Fyb3VuZCBpcyB1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJvd0NsaWNrJCA9IG5ldyBTdWJqZWN0PFQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW5ldmVyIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqL1xuICByZWFkb25seSByb3dDbGljayA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMucm93Q2xpY2skKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGFjdGl2ZSBzb3J0IG9yIHNvcnQgZGlyZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0PigpO1xuXG4gIC8vIFF1ZXJpZXNcbiAgcHJvdGVjdGVkIGNlbGxzID0gY29udGVudENoaWxkcmVuKFdhdHRUYWJsZUNlbGxEaXJlY3RpdmU8VD4pO1xuICBwcm90ZWN0ZWQgdG9vbGJhciA9IGNvbnRlbnRDaGlsZChXYXR0VGFibGVUb29sYmFyRGlyZWN0aXZlPFQ+KTtcbiAgcHJvdGVjdGVkIHNvcnQgPSB2aWV3Q2hpbGQoTWF0U29ydCk7XG5cbiAgLy8gRW5hYmxlcyBhbmltYXRpb24gZm9yIGV4cGFuZGluZy9jb2xsYXBzaW5nIGNlbGxzXG4gIHByb3RlY3RlZCB0YWJsZUNlbGxFbGVtZW50cyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oJ3RkJyk7XG4gIHByb3RlY3RlZCBhbmltYXRpb25FZmZlY3QgPSBhbmltYXRlRXhwYW5kYWJsZUNlbGxzKHRoaXMudGFibGVDZWxsRWxlbWVudHMsIHRoaXMuZXhwYW5kZWQpO1xuXG4gIC8vIFNlbGVjdGFibGVcbiAgcHJvdGVjdGVkIGZpbHRlclNlbGVjdGlvbkJ5ID0gKHJvd3M6IFRbXSkgPT4gcm93cy5maWx0ZXIoKHJvdykgPT4gdGhpcy5zZWxlY3Rpb24oKS5pbmNsdWRlcyhyb3cpKTtcbiAgcHJvdGVjdGVkIGdldFNlbGVjdGlvblN0YXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YTtcbiAgICBjb25zdCBmaWx0ZXJlZFNlbGVjdGlvbiA9IHRoaXMuZmlsdGVyU2VsZWN0aW9uQnkoZmlsdGVyZWREYXRhKTtcbiAgICBpZiAoIWZpbHRlcmVkU2VsZWN0aW9uLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBmaWx0ZXJlZFNlbGVjdGlvbi5sZW5ndGggPT09IHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YS5sZW5ndGggPyB0cnVlIDogbnVsbDtcbiAgfTtcblxuICAvLyBVbmlxdWUgbmFtZXMgZm9yIHNwZWNpYWwgY29sdW1uc1xuICBwcm90ZWN0ZWQgY2hlY2tib3hDb2x1bW4gPSAnX19jaGVja2JveENvbHVtbl9fJztcbiAgcHJvdGVjdGVkIGV4cGFuZGFibGVDb2x1bW4gPSAnX19leHBhbmRhYmxlQ29sdW1uX18nO1xuXG4gIHByb3RlY3RlZCBoYXNGb290ZXIgPSBjb21wdXRlZCgoKSA9PiBPYmplY3QudmFsdWVzKHRoaXMuY29sdW1ucygpKS5zb21lKChjKSA9PiBjLmZvb3RlcikpO1xuICBwcm90ZWN0ZWQgaXNFeHBhbmRhYmxlID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LnZhbHVlcyh0aGlzLmNvbHVtbnMoKSkuc29tZSgoYykgPT4gYy5leHBhbmRhYmxlKSk7XG4gIHByb3RlY3RlZCByZW5kZXJlZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucygpID8/IE9iamVjdC5rZXlzKHRoaXMuY29sdW1ucygpKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uKHRoaXMuc2VsZWN0YWJsZSgpID8gW3RoaXMuY2hlY2tib3hDb2x1bW5dIDogW10pLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIoKGtleSkgPT4gIXRoaXMuY29sdW1ucygpW2tleV0uZXhwYW5kYWJsZSksXG4gICAgICAuLi4odGhpcy5pc0V4cGFuZGFibGUoKSA/IFt0aGlzLmV4cGFuZGFibGVDb2x1bW5dIDogW10pLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIoKGtleSkgPT4gdGhpcy5jb2x1bW5zKClba2V5XS5leHBhbmRhYmxlKSxcbiAgICBdO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgc2l6aW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMoKTtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlZENvbHVtbnMoKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiAhY29sdW1uc1trZXldPy5leHBhbmRhYmxlKVxuICAgICAgLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSB0aGlzLmNoZWNrYm94Q29sdW1uOlxuICAgICAgICAgICAgcmV0dXJuICd2YXIoLS13YXR0LXNwYWNlLXhsKSc7XG4gICAgICAgICAgY2FzZSB0aGlzLmV4cGFuZGFibGVDb2x1bW46XG4gICAgICAgICAgICByZXR1cm4gJ21pbi1jb250ZW50JztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbnNba2V5XT8uc2l6ZSA/PyAnYXV0byc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9KTtcblxuICAvKiogVHJ5IHRvIGdldCBjZWxsIGRhdGEgZm9yIGEgc3BlY2lmaWMgYGNvbHVtbmAgYW5kIGByb3dgLiAqL1xuICBwcml2YXRlIGdldENlbGxEYXRhID0gKGNvbHVtbjogV2F0dFRhYmxlQ29sdW1uPFQ+LCByb3c6IFQpID0+IHtcbiAgICBpZiAoY29sdW1uLmNlbGwpIHJldHVybiBjb2x1bW4uY2VsbChyb3cpO1xuICAgIHJldHVybiAhY29sdW1uLmFjY2Vzc29yXG4gICAgICA/ICcnXG4gICAgICA6IHR5cGVvZiBjb2x1bW4uYWNjZXNzb3IgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjb2x1bW4uYWNjZXNzb3Iocm93KVxuICAgICAgICA6IHJvd1tjb2x1bW4uYWNjZXNzb3JdO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5UZW1wbGF0ZSA9IChjb2x1bW46IFdhdHRUYWJsZUNvbHVtbjxUPikgPT5cbiAgICB0aGlzLmNlbGxzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4oKSA9PT0gY29sdW1uKT8udGVtcGxhdGVSZWY7XG5cbiAgcHJvdGVjdGVkIGdldENvbHVtbkhlYWRlciA9IChjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+PikgPT4ge1xuICAgIGlmICh0eXBlb2YgY29sdW1uLnZhbHVlLmhlYWRlciA9PT0gJ3N0cmluZycpIHJldHVybiBjb2x1bW4udmFsdWUuaGVhZGVyO1xuICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGxzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4oKSA9PT0gY29sdW1uLnZhbHVlKTtcbiAgICByZXR1cm4gY2VsbD8uaGVhZGVyKCkgPz8gdGhpcy5yZXNvbHZlSGVhZGVyKCk/Lihjb2x1bW4ua2V5KSA/PyBjb2x1bW4ua2V5O1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5DZWxsID0gKGNvbHVtbjogV2F0dFRhYmxlQ29sdW1uPFQ+LCByb3c6IFQpID0+IHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5nZXRDZWxsRGF0YShjb2x1bW4sIHJvdyk7XG4gICAgaWYgKGNlbGwgPT09IHVuZGVmaW5lZCB8fCBjZWxsID09PSBudWxsKSByZXR1cm4gJ+KAlCc7XG4gICAgaWYgKGNlbGwgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gd2F0dEZvcm1hdERhdGUoY2VsbCk7XG4gICAgcmV0dXJuIGNlbGw7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGdldFJvd0tleSA9IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IHtcbiAgICBjb25zdCB0cmFja0J5ID0gdGhpcy50cmFja0J5KCk7XG4gICAgaWYgKHR5cGVvZiB0cmFja0J5ID09PSAnc3RyaW5nJykgcmV0dXJuIHJvd1t0cmFja0J5XTtcbiAgICBpZiAodHlwZW9mIHRyYWNrQnkgPT09ICdmdW5jdGlvbicpIHJldHVybiB0cmFja0J5KGluZGV4LCByb3cpO1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UoKS5kYXRhLmluZGV4T2Yocm93KTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgaXNBY3RpdmVSb3cgPSAocm93OiBUKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlUm93ID0gdGhpcy5hY3RpdmVSb3coKTtcbiAgICBjb25zdCBhY3RpdmVSb3dDb21wYXJhdG9yID0gdGhpcy5hY3RpdmVSb3dDb21wYXJhdG9yKCk7XG4gICAgaWYgKCFhY3RpdmVSb3cpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYWN0aXZlUm93Q29tcGFyYXRvciA/IGFjdGl2ZVJvd0NvbXBhcmF0b3Iocm93LCBhY3RpdmVSb3cpIDogcm93ID09PSBhY3RpdmVSb3c7XG4gIH07XG5cbiAgcHJvdGVjdGVkIG9uUm93Q2xpY2sgPSAocm93OiBUKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LnRvU3RyaW5nKCkgIT09ICcnKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWQudXBkYXRlKChyb3dzKSA9PlxuICAgICAgICByb3dzLmluY2x1ZGVzKHJvdykgPyByb3dzLmZpbHRlcigocikgPT4gciAhPSByb3cpIDogWy4uLnJvd3MsIHJvd11cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dDbGljayQubmV4dChyb3cpO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgICBkYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQoKTtcbiAgICAgIGlmICghKGRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXYXR0VGFibGVEYXRhU291cmNlKSkgcmV0dXJuO1xuICAgICAgZGF0YVNvdXJjZS5zb3J0aW5nRGF0YUFjY2Vzc29yID0gKHJvdzogVCwgc29ydEhlYWRlcklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zKClbc29ydEhlYWRlcklkXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldENlbGxEYXRhKGNvbHVtbiwgcm93KTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpOyAvLyBjYXNlIGluc2Vuc2l0aXZlIHNvcnRpbmdcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIG51bWJlcjtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24uXG4gICAqL1xuICBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHRoaXMuc2VsZWN0aW9uLnNldChbXSk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHNlbGVjdGlvbiBvZiBhIHJvdy5cbiAgICovXG4gIHRvZ2dsZVNlbGVjdGlvbiA9IChyb3c6IFQpID0+XG4gICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlKChzKSA9PiAocy5pbmNsdWRlcyhyb3cpID8gcy5maWx0ZXIoKHIpID0+IHIgIT09IHJvdykgOiBzLmNvbmNhdChyb3cpKSk7XG59XG5cbmV4cG9ydCBjb25zdCBXQVRUX1RBQkxFID0gW1dhdHRUYWJsZUNvbXBvbmVudCwgV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZSwgV2F0dFRhYmxlVG9vbGJhckRpcmVjdGl2ZV07XG4iLCI8IS0tXG5AbGljZW5zZVxuQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbi0tPlxuPHRhYmxlXG4gIG1hdC10YWJsZVxuICBtYXRTb3J0XG4gIHJvbGU9XCJ0cmVlZ3JpZFwiXG4gIFtuZ0NsYXNzXT1cInsgJ3dhdHQtdGFibGUtaGFzLXNlbGVjdGlvbic6IGdldFNlbGVjdGlvblN0YXRlKCkgIT09IGZhbHNlIH1cIlxuICBbbWF0U29ydEFjdGl2ZV09XCJzb3J0QnkoKVwiXG4gIFttYXRTb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb24oKVwiXG4gIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cIiFzb3J0Q2xlYXIoKVwiXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2UoKVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiZGVzY3JpcHRpb24oKVwiXG4gIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbj5cbiAgQGlmIChzZWxlY3RhYmxlKCkpIHtcbiAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY2hlY2tib3hDb2x1bW5cIiBbc3RpY2t5XT1cInRydWVcIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJ3YXR0LXRhYmxlLWNoZWNrYm94LWNlbGxcIj5cbiAgICAgICAgPHdhdHQtY2hlY2tib3hcbiAgICAgICAgICBbbmdNb2RlbF09XCJnZXRTZWxlY3Rpb25TdGF0ZSgpXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24uc2V0KGRhdGFTb3VyY2UoKS5maWx0ZXJlZERhdGEpIDogY2xlYXJTZWxlY3Rpb24oKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwid2F0dC10YWJsZS1jaGVja2JveC1jZWxsXCI+XG4gICAgICAgIDx3YXR0LWNoZWNrYm94XG4gICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0aW9uKCkuaW5jbHVkZXMocm93KVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uKHJvdylcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAvPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxuXG4gIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJleHBhbmRhYmxlQ29sdW1uXCI+XG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgIDx0ZFxuICAgICAgI3RkXG4gICAgICBtYXQtY2VsbFxuICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICBbYXR0ci5kYXRhLWtleV09XCJnZXRSb3dLZXkoaW5kZXgsIHJvdylcIlxuICAgICAgW2F0dHIuZGF0YS1yb3ctaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93KVwiXG4gICAgICBbY2xhc3Mud2F0dC10YWJsZS1jZWxsLS1leHBhbmRlZF09XCJleHBhbmRlZCgpLmluY2x1ZGVzKHJvdylcIlxuICAgID5cbiAgICAgIDx3YXR0LWljb24gbmFtZT1cInJpZ2h0XCIgc2l6ZT1cInhzXCIgLz5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpIHwga2V5dmFsdWU7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmtleVwiIFtzdGlja3lFbmRdPVwiY29sdW1uLnZhbHVlLnN0aWNreUVuZD8uKClcIj5cbiAgICAgIDx0aFxuICAgICAgICBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgW2NsYXNzLndhdHQtdGFibGUtY2VsbC0tZXhwYW5kYWJsZV09XCJjb2x1bW4udmFsdWUuZXhwYW5kYWJsZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC10YWJsZS1hbGlnbi17eyBjb2x1bW4udmFsdWUuYWxpZ24gPz8gJ2xlZnQnIH19IHt7XG4gICAgICAgICAgY29sdW1uLnZhbHVlLmhlYWRlckNlbGxDbGFzc1xuICAgICAgICB9fVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoY29sdW1uLnZhbHVlLmhlbHBlckFjdGlvbjsgYXMgYWN0aW9uKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBuYW1lPVwiaGVscFwiIChjbGljayk9XCJhY3Rpb24oKVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ3YXR0LXRhYmxlLWhlYWRlci1jZWxsXCJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcbiAgICAgICAgICBbYXJyb3dQb3NpdGlvbl09XCJjb2x1bW4udmFsdWUuYWxpZ24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sdW1uLnZhbHVlLmFjY2Vzc29yIHx8IGNvbHVtbi52YWx1ZS5zb3J0ID09PSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDb2x1bW5IZWFkZXIoY29sdW1uKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChjb2x1bW4udmFsdWUudG9vbHRpcDsgYXMgdG9vbHRpcCkge1xuICAgICAgICAgIDx3YXR0LWljb24gW3RpdGxlXT1cInRvb2x0aXBcIiBuYW1lPVwiaW5mb1wiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvdGg+XG5cbiAgICAgIDx0ZFxuICAgICAgICAjdGRcbiAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgIFthdHRyLmRhdGEta2V5XT1cImdldFJvd0tleShpbmRleCwgcm93KVwiXG4gICAgICAgIFthdHRyLmRhdGEtcm93LWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgW2NsYXNzLndhdHQtdGFibGUtY2VsbC0tZXhwYW5kZWRdPVwiZXhwYW5kZWQoKS5pbmNsdWRlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLndhdHQtdGFibGUtY2VsbC0tZXhwYW5kYWJsZV09XCJjb2x1bW4udmFsdWUuZXhwYW5kYWJsZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC10YWJsZS1hbGlnbi17eyBjb2x1bW4udmFsdWUuYWxpZ24gPz8gJ2xlZnQnIH19IHt7IGNvbHVtbi52YWx1ZS5kYXRhQ2VsbENsYXNzIH19XCJcbiAgICAgICAgKGNsaWNrKT1cIiFjb2x1bW4udmFsdWUuZXhwYW5kYWJsZSAmJiBvblJvd0NsaWNrKHJvdylcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgQGRlZmVyICh3aGVuICFjb2x1bW4udmFsdWUuZXhwYW5kYWJsZSB8fCBleHBhbmRlZCgpLmluY2x1ZGVzKHJvdykpIHtcbiAgICAgICAgICAgIEBpZiAoZ2V0Q29sdW1uVGVtcGxhdGUoY29sdW1uLnZhbHVlKTsgYXMgdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhdHQtdGFibGUtY2VsbC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICB7eyBnZXRDb2x1bW5DZWxsKGNvbHVtbi52YWx1ZSwgcm93KSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChnZXRDb2x1bW5UZW1wbGF0ZShjb2x1bW4udmFsdWUpOyBhcyB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhdHQtdGFibGUtY2VsbC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgZ2V0Q29sdW1uQ2VsbChjb2x1bW4udmFsdWUsIHJvdykgfX1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvdGQ+XG5cbiAgICAgIEBpZiAoaGFzRm9vdGVyKCkpIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgbWF0LWZvb3Rlci1jZWxsXG4gICAgICAgICAgKm1hdEZvb3RlckNlbGxEZWZcbiAgICAgICAgICBjbGFzcz1cInt7IGNvbHVtbi52YWx1ZS5mb290ZXI/LmNsYXNzIH19IHdhdHQtdGFibGUtYWxpZ24te3tcbiAgICAgICAgICAgIGNvbHVtbi52YWx1ZS5hbGlnbiA/PyAnbGVmdCdcbiAgICAgICAgICB9fSBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29sdW1uLnZhbHVlLmZvb3Rlcj8udmFsdWU/LigpIH19XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cblxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNwYWNlclwiPlxuICAgIDx0ZCBjbGFzcz1cIndhdHQtdGFibGUtZm9vdGVyLXNwYWNlclwiIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICBAaWYgKCFoaWRlQ29sdW1uSGVhZGVycygpKSB7XG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJyZW5kZXJlZENvbHVtbnMoKVwiPjwvdHI+XG4gIH1cbiAgPHRyXG4gICAgbWF0LXJvd1xuICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiByZW5kZXJlZENvbHVtbnMoKVwiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJyb3cgPT09IGFjdGl2ZVJvdygpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnd2F0dC10YWJsZS1oaWdobGlnaHQtcm93JzogIWRpc2FibGVkKCkgJiYgIXN1cHByZXNzUm93SG92ZXJIaWdobGlnaHQoKSxcbiAgICAgICd3YXR0LXRhYmxlLWNsaWNrYWJsZS1yb3cnOiAhZGlzYWJsZWQoKSAmJiByb3dDbGljayQub2JzZXJ2ZWQsXG4gICAgICAnd2F0dC10YWJsZS1hY3RpdmUtcm93JzogaXNBY3RpdmVSb3cocm93KSxcbiAgICAgICd3YXR0LXRhYmxlLW5vLWVuZC1kaXZpZGVyJzogaGlkZUNvbHVtbkhlYWRlcnMoKSxcbiAgICB9XCJcbiAgPjwvdHI+XG5cbiAgQGlmICh0b29sYmFyKCkpIHtcbiAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3BhY2VyJ11cIj48L3RyPlxuICB9XG5cbiAgQGlmIChoYXNGb290ZXIoKSkge1xuICAgIDx0clxuICAgICAgbWF0LWZvb3Rlci1yb3dcbiAgICAgIFtjbGFzcy53YXR0LXRhYmxlLWhpZGUtZm9vdGVyXT1cImxvYWRpbmcoKSB8fCBkYXRhU291cmNlKCkuZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiXG4gICAgICAqbWF0Rm9vdGVyUm93RGVmPVwicmVuZGVyZWRDb2x1bW5zKCk7IHN0aWNreTogc3RpY2t5Rm9vdGVyKClcIlxuICAgID48L3RyPlxuICB9XG5cbiAgPG5nLWNvbnRhaW5lciAqbWF0Tm9EYXRhUm93PlxuICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICBAZm9yIChpIG9mIFsxLCAyLCAzXTsgdHJhY2sgaSkge1xuICAgICAgICA8dHIgY2xhc3M9XCJtYXQtbWRjLXJvd1wiPlxuICAgICAgICAgIEBmb3IgKF8gb2YgcmVuZGVyZWRDb2x1bW5zKCk7IHRyYWNrIF87IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIiBbY2xhc3Mud2F0dC10YWJsZS1sb2FkaW5nLWNlbGxdPVwiaSA+IDAgfHwgIXNlbGVjdGFibGUoKVwiPjwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgfVxuICAgIH1cbiAgPC9uZy1jb250YWluZXI+XG48L3RhYmxlPlxuXG5AaWYgKHRvb2xiYXIoKTsgYXMgdG9vbGJhcikge1xuICA8ZGl2IGNsYXNzPVwid2F0dC10YWJsZS10b29sYmFyXCIgcm9sZT1cInRvb2xiYXJcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0b29sYmFyLnRlbXBsYXRlUmVmO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmlsdGVyU2VsZWN0aW9uQnkoZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YSkgfVxuICAgICAgXCJcbiAgICAvPlxuICA8L2Rpdj5cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@energinet/watt",
4
- "version": "4.0.3",
4
+ "version": "4.0.5",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
7
7
  ".": {
package/table/index.d.ts CHANGED
@@ -15,4 +15,4 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  export { IWattTableDataSource, WattTableDataSource } from './watt-table-data-source';
18
- export { type WattTableColumn, type WattTableColumnDef, WattTableComponent, WattTableCellDirective, WattTableToolbarDirective, WattTableToolbarSpacerComponent, WATT_TABLE, } from './watt-table.component';
18
+ export { type WattTableColumn, type WattTableColumnDef, WattTableComponent, WattTableCellDirective, WattTableToolbarDirective, WATT_TABLE, } from './watt-table.component';
@@ -15,11 +15,10 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { KeyValue } from '@angular/common';
18
- import { AfterViewInit, ElementRef, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';
18
+ import { ElementRef, TemplateRef } from '@angular/core';
19
19
  import type { Signal, TrackByFunction } from '@angular/core';
20
20
  import { MatSort, Sort, SortDirection } from '@angular/material/sort';
21
21
  import { Subject } from 'rxjs';
22
- import { WattDatePipe } from '@energinet/watt/core/date';
23
22
  import { IWattTableDataSource } from './watt-table-data-source';
24
23
  import * as i0 from "@angular/core";
25
24
  /** Class name for expandable cells. */
@@ -124,11 +123,11 @@ export declare class WattTableCellDirective<T> {
124
123
  /**
125
124
  * The WattTableColumn this template applies to.
126
125
  */
127
- column: import("@angular/core").InputSignal<WattTableColumn<T>>;
126
+ readonly column: import("@angular/core").InputSignal<WattTableColumn<T>>;
128
127
  /**
129
128
  * Optional header text for the column.
130
129
  */
131
- header: import("@angular/core").InputSignal<string | undefined>;
130
+ readonly header: import("@angular/core").InputSignal<string | undefined>;
132
131
  static ngTemplateContextGuard<T>(_directive: WattTableCellDirective<T>, context: unknown): context is WattTableCellContext<T>;
133
132
  static ɵfac: i0.ɵɵFactoryDeclaration<WattTableCellDirective<any>, never>;
134
133
  static ɵdir: i0.ɵɵDirectiveDeclaration<WattTableCellDirective<any>, "[wattTableCell]", never, { "column": { "alias": "wattTableCell"; "required": true; "isSignal": true; }; "header": { "alias": "wattTableCellHeader"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -143,74 +142,74 @@ export declare class WattTableToolbarDirective<T> {
143
142
  * Usage:
144
143
  * `import { WATT_TABLE } from '@energinet-datahub/watt/table';`
145
144
  */
146
- export declare class WattTableComponent<T> implements OnChanges, AfterViewInit {
145
+ export declare class WattTableComponent<T> {
147
146
  /**
148
147
  * The table's source of data. Property should not be changed after
149
148
  * initialization, instead update the data on the instance itself.
150
149
  */
151
- dataSource: import("@angular/core").InputSignal<IWattTableDataSource<T>>;
150
+ readonly dataSource: import("@angular/core").InputSignal<IWattTableDataSource<T>>;
152
151
  /**
153
152
  * Column definition record with keys representing the column identifiers
154
153
  * and values being the column configuration. The order of the columns
155
154
  * is determined by the property order, but can be overruled by the
156
155
  * `displayedColumns` input.
157
156
  */
158
- columns: import("@angular/core").InputSignal<WattTableColumnDef<T>>;
157
+ readonly columns: import("@angular/core").InputSignal<WattTableColumnDef<T>>;
159
158
  /**
160
159
  * Used for hiding or reordering columns defined in the `columns` input.
161
160
  */
162
- displayedColumns: import("@angular/core").InputSignal<string[] | undefined>;
161
+ readonly displayedColumns: import("@angular/core").InputSignal<string[] | undefined>;
163
162
  /**
164
163
  * Used for disabling the table. This will disable all user interaction
165
164
  */
166
- disabled: import("@angular/core").InputSignal<boolean>;
165
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
167
166
  /**
168
167
  * Provide a description of the table for visually impaired users.
169
168
  */
170
- description: import("@angular/core").InputSignal<string>;
169
+ readonly description: import("@angular/core").InputSignal<string>;
171
170
  /**
172
171
  * If set to `true`, the table will show a loading indicator
173
172
  * when there is no data.
174
173
  */
175
- loading: import("@angular/core").InputSignal<boolean>;
174
+ readonly loading: import("@angular/core").InputSignal<boolean>;
176
175
  /**
177
176
  * If true the footer will be sticky
178
177
  */
179
- stickyFooter: import("@angular/core").InputSignal<boolean>;
178
+ readonly stickyFooter: import("@angular/core").InputSignal<boolean>;
180
179
  /**
181
180
  * Optional callback for determining header text for columns that
182
181
  * do not have a static header text set in the column definition.
183
182
  * Useful for providing translations of column headers.
184
183
  */
185
- resolveHeader: import("@angular/core").InputSignal<((key: string) => string) | undefined>;
184
+ readonly resolveHeader: import("@angular/core").InputSignal<((key: string) => string) | undefined>;
186
185
  /**
187
186
  * Identifier for column that should be sorted initially.
188
187
  */
189
- sortBy: import("@angular/core").InputSignal<string>;
188
+ readonly sortBy: import("@angular/core").InputSignal<string>;
190
189
  /**
191
190
  * The sort direction of the initially sorted column.
192
191
  */
193
- sortDirection: import("@angular/core").InputSignal<SortDirection>;
192
+ readonly sortDirection: import("@angular/core").InputSignal<SortDirection>;
194
193
  /**
195
194
  * Whether to allow the user to clear the sort. Defaults to `true`.
196
195
  */
197
- sortClear: import("@angular/core").InputSignal<boolean>;
196
+ readonly sortClear: import("@angular/core").InputSignal<boolean>;
198
197
  /**
199
198
  * Whether the table should include a checkbox column for row selection.
200
199
  */
201
- selectable: import("@angular/core").InputSignal<boolean>;
200
+ readonly selectable: import("@angular/core").InputSignal<boolean>;
202
201
  /**
203
202
  * Sets the selected rows. Only applicable when selectable is `true`.
204
203
  */
205
- selection: import("@angular/core").ModelSignal<T[]>;
204
+ readonly selection: import("@angular/core").ModelSignal<T[]>;
206
205
  /**
207
206
  * Set to true to disable row hover highlight.
208
207
  */
209
- suppressRowHoverHighlight: import("@angular/core").InputSignal<boolean>;
208
+ readonly suppressRowHoverHighlight: import("@angular/core").InputSignal<boolean>;
210
209
  /**
211
210
  * Highlights the currently active row.
212
211
  */
213
- activeRow: import("@angular/core").InputSignal<T | undefined>;
212
+ readonly activeRow: import("@angular/core").InputSignal<T | undefined>;
214
213
  /**
215
214
  * Custom comparator function to determine if two rows are equal.
216
215
  *
@@ -220,64 +219,60 @@ export declare class WattTableComponent<T> implements OnChanges, AfterViewInit {
220
219
  * as long as the instances remain the same, which may not be the case
221
220
  * if row data is recreated or rebuilt from serialization.
222
221
  */
223
- activeRowComparator: import("@angular/core").InputSignal<((currentRow: T, activeRow: T) => boolean) | undefined>;
222
+ readonly activeRowComparator: import("@angular/core").InputSignal<((currentRow: T, activeRow: T) => boolean) | undefined>;
224
223
  /**
225
224
  * If set to `true`, the column headers will not be shown. Default is `false`.
226
225
  */
227
- hideColumnHeaders: import("@angular/core").InputSignal<boolean>;
226
+ readonly hideColumnHeaders: import("@angular/core").InputSignal<boolean>;
228
227
  /**
229
228
  * Choose from a predefined set of display variants.
230
229
  */
231
- variant: import("@angular/core").InputSignal<"zebra" | undefined>;
230
+ readonly variant: import("@angular/core").InputSignal<"zebra" | undefined>;
232
231
  /**
233
232
  * Array of rows that are currently expanded.
234
233
  */
235
- expanded: import("@angular/core").ModelSignal<T[]>;
234
+ readonly expanded: import("@angular/core").ModelSignal<T[]>;
236
235
  /**
237
236
  * Optional function for uniquely identifying rows.
238
237
  */
239
- trackBy: import("@angular/core").InputSignal<TrackByFunction<T> | keyof T | undefined>;
238
+ readonly trackBy: import("@angular/core").InputSignal<TrackByFunction<T> | keyof T | undefined>;
240
239
  /**
241
240
  * @ignore
242
241
  * The `observed` boolean from the `Subject` is used to determine if a row is
243
242
  * clickable or not. This is available on `EventEmitter`, but not on `output`,
244
243
  * which is why this workaround is used.
245
244
  */
246
- protected _rowClick$: Subject<T>;
245
+ protected rowClick$: Subject<T>;
247
246
  /**
248
247
  * Emits whenever a row is clicked.
249
248
  */
250
- rowClick: import("@angular/core").OutputRef<T>;
249
+ readonly rowClick: import("@angular/core").OutputRef<T>;
251
250
  /**
252
251
  * Event emitted when the user changes the active sort or sort direction.
253
252
  */
254
- sortChange: import("@angular/core").OutputEmitterRef<Sort>;
253
+ readonly sortChange: import("@angular/core").OutputEmitterRef<Sort>;
255
254
  protected cells: Signal<readonly WattTableCellDirective<T>[]>;
256
255
  protected toolbar: Signal<WattTableToolbarDirective<any> | undefined>;
257
256
  protected sort: Signal<MatSort | undefined>;
258
257
  protected tableCellElements: Signal<readonly ElementRef<HTMLTableCellElement>[]>;
259
- /** @ignore */
260
- _animationEffect: import("@angular/core").AfterRenderRef;
258
+ protected animationEffect: import("@angular/core").AfterRenderRef;
261
259
  protected filterSelectionBy: (rows: T[]) => T[];
262
260
  protected getSelectionState: () => boolean | null;
263
- /** @ignore */
264
- _checkboxColumn: string;
265
- /** @ignore */
266
- _expandableColumn: string;
267
- /** @ignore */
268
- _element: ElementRef<HTMLElement>;
269
- /** @ignore */
270
- _datePipe: WattDatePipe;
271
- /** @ignore */
272
- _hasFooter: import("@angular/core").WritableSignal<boolean>;
273
- /** @ignore */
274
- private formatCellData;
275
- /** @ignore */
261
+ protected checkboxColumn: string;
262
+ protected expandableColumn: string;
263
+ protected hasFooter: Signal<boolean>;
264
+ protected isExpandable: Signal<boolean>;
265
+ protected renderedColumns: Signal<string[]>;
266
+ protected sizing: Signal<string[]>;
267
+ /** Try to get cell data for a specific `column` and `row`. */
276
268
  private getCellData;
277
- /** @ignore */
278
- private checkHasFooter;
279
- ngAfterViewInit(): void;
280
- ngOnChanges(changes: SimpleChanges): void;
269
+ protected getColumnTemplate: (column: WattTableColumn<T>) => TemplateRef<any> | undefined;
270
+ protected getColumnHeader: (column: KeyValue<string, WattTableColumn<T>>) => string;
271
+ protected getColumnCell: (column: WattTableColumn<T>, row: T) => {} | null;
272
+ protected getRowKey: (index: number, row: T) => any;
273
+ protected isActiveRow: (row: T) => boolean;
274
+ protected onRowClick: (row: T) => void;
275
+ constructor();
281
276
  /**
282
277
  * Clears the selection.
283
278
  */
@@ -286,32 +281,8 @@ export declare class WattTableComponent<T> implements OnChanges, AfterViewInit {
286
281
  * Toggles the selection of a row.
287
282
  */
288
283
  toggleSelection: (row: T) => void;
289
- /** @ignore */
290
- _getColumns(): string[];
291
- /** @ignore */
292
- _getColumnTemplate(column: WattTableColumn<T>): TemplateRef<any> | undefined;
293
- /** @ignore */
294
- _getColumnHeader(column: KeyValue<string, WattTableColumn<T>>): string;
295
- /** @ignore */
296
- _getColumnHelperAction(column: KeyValue<string, WattTableColumn<T>>): (() => void) | undefined;
297
- /** @ignore */
298
- _getColumnHeaderTooltip(column: KeyValue<string, WattTableColumn<T>>): string | undefined;
299
- /** @ignore */
300
- _getColumnCell(column: KeyValue<string, WattTableColumn<T>>, row: T): {} | null;
301
- /** @ignore */
302
- _getRowKey: (index: number, row: T) => any;
303
- /** @ignore */
304
- _isActiveRow(row: T): boolean;
305
- /** @ignore */
306
- _isExpandable(): boolean;
307
- /** @ignore */
308
- _onRowClick(row: T): void;
309
284
  static ɵfac: i0.ɵɵFactoryDeclaration<WattTableComponent<any>, never>;
310
285
  static ɵcmp: i0.ɵɵComponentDeclaration<WattTableComponent<any>, "watt-table", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "stickyFooter": { "alias": "stickyFooter"; "required": false; "isSignal": true; }; "resolveHeader": { "alias": "resolveHeader"; "required": false; "isSignal": true; }; "sortBy": { "alias": "sortBy"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "sortClear": { "alias": "sortClear"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "suppressRowHoverHighlight": { "alias": "suppressRowHoverHighlight"; "required": false; "isSignal": true; }; "activeRow": { "alias": "activeRow"; "required": false; "isSignal": true; }; "activeRowComparator": { "alias": "activeRowComparator"; "required": false; "isSignal": true; }; "hideColumnHeaders": { "alias": "hideColumnHeaders"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "expanded": "expandedChange"; "rowClick": "rowClick"; "sortChange": "sortChange"; }, ["cells", "toolbar"], never, true, never>;
311
286
  }
312
- export declare class WattTableToolbarSpacerComponent {
313
- static ɵfac: i0.ɵɵFactoryDeclaration<WattTableToolbarSpacerComponent, never>;
314
- static ɵcmp: i0.ɵɵComponentDeclaration<WattTableToolbarSpacerComponent, "watt-table-toolbar-spacer", never, {}, {}, never, never, true, never>;
315
- }
316
- export declare const WATT_TABLE: (typeof WattTableToolbarSpacerComponent)[];
287
+ export declare const WATT_TABLE: (typeof WattTableToolbarDirective | typeof WattTableComponent)[];
317
288
  export {};