@cleavelandprice/ngx-lib 4.4.2 → 4.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/active-directory/material/components/user-chooser/user-chooser.component.d.ts +18 -18
- package/esm2022/active-directory/active-directory.api.mjs +11 -0
- package/esm2022/active-directory/active-directory.module.mjs +40 -0
- package/esm2022/active-directory/cleavelandprice-ngx-lib-active-directory.mjs +5 -0
- package/esm2022/active-directory/material/cleavelandprice-ngx-lib-active-directory-material.mjs +5 -0
- package/esm2022/active-directory/material/components/user-chooser/user-chooser.component.mjs +437 -0
- package/esm2022/active-directory/material/components/user-form-field/user-form-field.component.mjs +159 -0
- package/esm2022/active-directory/material/mat-active-directory.api.mjs +11 -0
- package/esm2022/active-directory/material/mat-active-directory.module.mjs +100 -0
- package/esm2022/active-directory/material/model/default-user-chooser-data.mjs +15 -0
- package/esm2022/active-directory/material/model/default-user-chooser-filter-options.mjs +8 -0
- package/esm2022/active-directory/material/model/selectable-group.mjs +2 -0
- package/esm2022/active-directory/material/model/selectable-user.mjs +2 -0
- package/esm2022/active-directory/material/model/user-chooser-data.mjs +2 -0
- package/esm2022/active-directory/material/model/user-chooser-filter-options.mjs +3 -0
- package/esm2022/active-directory/material/model/user-chooser-mode.mjs +6 -0
- package/esm2022/active-directory/material/model/user-chooser-pre-processing-group.mjs +3 -0
- package/esm2022/active-directory/model/active-directory-service-options-token.mjs +3 -0
- package/esm2022/active-directory/model/active-directory-service-options.mjs +2 -0
- package/esm2022/active-directory/model/ad-object-with-children.mjs +2 -0
- package/esm2022/active-directory/model/ad-object.mjs +2 -0
- package/esm2022/active-directory/model/cache-object.mjs +3 -0
- package/esm2022/active-directory/model/cleaveland-price-user.mjs +2 -0
- package/esm2022/active-directory/model/group.mjs +2 -0
- package/esm2022/active-directory/model/user-or-group.mjs +2 -0
- package/esm2022/active-directory/model/user.mjs +2 -0
- package/esm2022/active-directory/services/active-directory.service.mjs +125 -0
- package/esm2022/authentication/authentication.api.mjs +7 -0
- package/esm2022/authentication/authentication.base.module.mjs +40 -0
- package/esm2022/authentication/cleavelandprice-ngx-lib-authentication.mjs +5 -0
- package/esm2022/authentication/material/cleavelandprice-ngx-lib-authentication-material.mjs +5 -0
- package/esm2022/authentication/material/components/login/login.component.mjs +49 -0
- package/esm2022/authentication/material/components/login-form/login-form.component.mjs +82 -0
- package/esm2022/authentication/material/mat-authentication.api.mjs +8 -0
- package/esm2022/authentication/material/mat-authentication.module.mjs +84 -0
- package/esm2022/authentication/material/model/login-form-data.mjs +2 -0
- package/esm2022/authentication/material/model/mat-authentication-service-options-token.mjs +3 -0
- package/esm2022/authentication/material/model/mat-authentication-service-options.mjs +2 -0
- package/esm2022/authentication/material/services/mat-authentication.service.mjs +67 -0
- package/esm2022/authentication/model/abstract-authentication-service.mjs +2 -0
- package/esm2022/authentication/model/authenticated-user.mjs +2 -0
- package/esm2022/authentication/model/authentication-request.mjs +2 -0
- package/esm2022/authentication/model/authentication-service-options-token.mjs +3 -0
- package/esm2022/authentication/model/authentication-service-options.mjs +2 -0
- package/esm2022/authentication/object/authentication-object.api.mjs +6 -0
- package/esm2022/authentication/object/authentication-object.module.mjs +40 -0
- package/esm2022/authentication/object/cleavelandprice-ngx-lib-authentication-object.mjs +5 -0
- package/esm2022/authentication/object/services/authentication-object.service.mjs +129 -0
- package/esm2022/authentication/token/authentication-token.api.mjs +6 -0
- package/esm2022/authentication/token/authetiction-token.module.mjs +40 -0
- package/esm2022/authentication/token/cleavelandprice-ngx-lib-authentication-token.mjs +5 -0
- package/esm2022/authentication/token/model/authentication-token-service-options-token.mjs +3 -0
- package/esm2022/authentication/token/model/authentication-token-service-options.mjs +2 -0
- package/esm2022/authentication/token/model/authentication-token.mjs +2 -0
- package/esm2022/authentication/token/services/authentication-token.service.mjs +138 -0
- package/esm2022/cleavelandprice-ngx-lib.mjs +5 -0
- package/esm2022/dialog/cleavelandprice-ngx-lib-dialog.mjs +5 -0
- package/esm2022/dialog/components/base/base.component.mjs +102 -0
- package/esm2022/dialog/components/choice/choice.component.mjs +21 -0
- package/esm2022/dialog/components/confirmation/confirmation.component.mjs +21 -0
- package/esm2022/dialog/components/input/input.component.mjs +21 -0
- package/esm2022/dialog/components/message/message.component.mjs +21 -0
- package/esm2022/dialog/dialog.api.mjs +20 -0
- package/esm2022/dialog/dialog.module.mjs +73 -0
- package/esm2022/dialog/model/confirmation-dialog-mode.mjs +8 -0
- package/esm2022/dialog/model/dialog-base-data.mjs +2 -0
- package/esm2022/dialog/model/dialog-choice-data.mjs +2 -0
- package/esm2022/dialog/model/dialog-type.mjs +8 -0
- package/esm2022/lib/model/app-path-config.mjs +2 -0
- package/esm2022/lib/model/app-type.mjs +2 -0
- package/esm2022/lib/model/app.mjs +2 -0
- package/esm2022/lib/model/caching-config.mjs +2 -0
- package/esm2022/lib/model/credentials.mjs +2 -0
- package/esm2022/lib/model/logging-config.mjs +2 -0
- package/esm2022/lib/model/service-options-token.mjs +3 -0
- package/esm2022/lib/model/service-options.mjs +2 -0
- package/esm2022/lib/ngx-lib.module.mjs +37 -0
- package/esm2022/lib/services/app-path-config.service.mjs +50 -0
- package/esm2022/lib/services/service-base.mjs +26 -0
- package/esm2022/msgraph/cleavelandprice-ngx-lib-msgraph.mjs +5 -0
- package/esm2022/msgraph/model/address.mjs +2 -0
- package/esm2022/msgraph/model/attendee.mjs +2 -0
- package/esm2022/msgraph/model/bulk-calendar-events.mjs +2 -0
- package/esm2022/msgraph/model/bulk-calendar-request.mjs +2 -0
- package/esm2022/msgraph/model/calendar-event.mjs +2 -0
- package/esm2022/msgraph/model/coordinates.mjs +2 -0
- package/esm2022/msgraph/model/email-address.mjs +2 -0
- package/esm2022/msgraph/model/location.mjs +2 -0
- package/esm2022/msgraph/model/online-meeting-info.mjs +2 -0
- package/esm2022/msgraph/model/patterned-recurrence.mjs +2 -0
- package/esm2022/msgraph/model/phone.mjs +2 -0
- package/esm2022/msgraph/model/recipient.mjs +2 -0
- package/esm2022/msgraph/model/recurrence-pattern.mjs +2 -0
- package/esm2022/msgraph/model/recurrence-range.mjs +2 -0
- package/esm2022/msgraph/model/response-status.mjs +2 -0
- package/esm2022/msgraph/model/room.mjs +6 -0
- package/esm2022/msgraph/model/user.mjs +132 -0
- package/esm2022/msgraph/msgraph.api.mjs +19 -0
- package/esm2022/msgraph/msgraph.module.mjs +27 -0
- package/esm2022/public_api.mjs +15 -0
- package/esm2022/quill/cleavelandprice-ngx-lib-quill.mjs +5 -0
- package/esm2022/quill/components/editor/editor.component.mjs +282 -0
- package/esm2022/quill/components/raw/raw.component.mjs +30 -0
- package/esm2022/quill/mention/cleavelandprice-ngx-lib-quill-mention.mjs +5 -0
- package/esm2022/quill/mention/components/editor/editor.component.mjs +151 -0
- package/esm2022/quill/mention/model/dialog-data.mjs +2 -0
- package/esm2022/quill/mention/quill-mention.api.mjs +9 -0
- package/esm2022/quill/mention/quill-mention.module.mjs +65 -0
- package/esm2022/quill/model/buttons.mjs +3 -0
- package/esm2022/quill/model/config.mjs +3 -0
- package/esm2022/quill/model/default-buttons.mjs +50 -0
- package/esm2022/quill/model/default-config.mjs +28 -0
- package/esm2022/quill/model/default-icons.mjs +7 -0
- package/esm2022/quill/model/default-tooltips.mjs +53 -0
- package/esm2022/quill/model/dialog-data.mjs +2 -0
- package/esm2022/quill/model/icons.mjs +3 -0
- package/esm2022/quill/model/tooltips.mjs +3 -0
- package/esm2022/quill/quill.api.mjs +13 -0
- package/esm2022/quill/quill.module.mjs +75 -0
- package/esm2022/sharepoint/cleavelandprice-ngx-lib-sharepoint.mjs +5 -0
- package/esm2022/sharepoint/components/user-photo/user-photo.component.mjs +40 -0
- package/esm2022/sharepoint/default-credentials.mjs +6 -0
- package/esm2022/sharepoint/model/base-item.mjs +2 -0
- package/esm2022/sharepoint/model/base-request-credential.mjs +2 -0
- package/esm2022/sharepoint/model/base-request.mjs +2 -0
- package/esm2022/sharepoint/model/cache-object.mjs +3 -0
- package/esm2022/sharepoint/model/file-request.mjs +2 -0
- package/esm2022/sharepoint/model/folder-request.mjs +2 -0
- package/esm2022/sharepoint/model/list-item.mjs +2 -0
- package/esm2022/sharepoint/model/list-items-request.mjs +2 -0
- package/esm2022/sharepoint/model/photo-item.mjs +2 -0
- package/esm2022/sharepoint/model/sharepoint-service-options.mjs +3 -0
- package/esm2022/sharepoint/model/uri-request.mjs +2 -0
- package/esm2022/sharepoint/model/user-request.mjs +2 -0
- package/esm2022/sharepoint/model/user.mjs +2 -0
- package/esm2022/sharepoint/pipes/user-photo-url.pipe.mjs +37 -0
- package/esm2022/sharepoint/services/sharepoint.service.mjs +155 -0
- package/esm2022/sharepoint/sharepoint.api.mjs +17 -0
- package/esm2022/sharepoint/sharepoint.module.mjs +50 -0
- package/esm2022/table/cleavelandprice-ngx-lib-table.mjs +5 -0
- package/esm2022/table/components/table/table.component.mjs +120 -0
- package/esm2022/table/model/table-column.mjs +2 -0
- package/esm2022/table/pipes/decimalPoints.mjs +14 -0
- package/esm2022/table/pipes/roundNumber.mjs +14 -0
- package/esm2022/table/table.api.mjs +6 -0
- package/esm2022/table/table.module.mjs +78 -0
- package/esm2022/upload/cleavelandprice-ngx-lib-upload.mjs +5 -0
- package/esm2022/upload/components/upload/upload.component.mjs +32 -0
- package/esm2022/upload/components/upload-dialog/upload-dialog.component.mjs +98 -0
- package/esm2022/upload/model/database-file-info.mjs +2 -0
- package/esm2022/upload/model/file-upload-request.mjs +2 -0
- package/esm2022/upload/model/filesystem-file-info.mjs +2 -0
- package/esm2022/upload/model/msg-file-content.mjs +5 -0
- package/esm2022/upload/model/upload-service-options-token.mjs +3 -0
- package/esm2022/upload/model/upload-service-options.mjs +3 -0
- package/esm2022/upload/model/upload-status.mjs +2 -0
- package/esm2022/upload/services/upload.service.mjs +106 -0
- package/esm2022/upload/upload.api.mjs +11 -0
- package/esm2022/upload/upload.module.mjs +68 -0
- package/esm2022/url-utilities/cleavelandprice-ngx-lib-url-utilities.mjs +5 -0
- package/esm2022/url-utilities/pipes/safe-resource-url.pipe.mjs +19 -0
- package/esm2022/url-utilities/pipes/safe-url.pipe.mjs +19 -0
- package/esm2022/url-utilities/pipes/uri-scheme.pipe.mjs +106 -0
- package/esm2022/url-utilities/url-utilities.api.mjs +13 -0
- package/esm2022/url-utilities/url-utilities.module.mjs +34 -0
- package/fesm2022/cleavelandprice-ngx-lib-active-directory-material.mjs +12 -12
- package/fesm2022/cleavelandprice-ngx-lib-active-directory-material.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib-active-directory.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs +15 -15
- package/fesm2022/cleavelandprice-ngx-lib-authentication-material.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib-authentication-object.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib-authentication-token.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs +4 -4
- package/fesm2022/cleavelandprice-ngx-lib-authentication.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs +24 -24
- package/fesm2022/cleavelandprice-ngx-lib-dialog.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs +4 -4
- package/fesm2022/cleavelandprice-ngx-lib-msgraph.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs +10 -10
- package/fesm2022/cleavelandprice-ngx-lib-quill-mention.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-quill.mjs +14 -14
- package/fesm2022/cleavelandprice-ngx-lib-quill.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs +14 -14
- package/fesm2022/cleavelandprice-ngx-lib-sharepoint.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-table.mjs +14 -14
- package/fesm2022/cleavelandprice-ngx-lib-table.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-upload.mjs +15 -14
- package/fesm2022/cleavelandprice-ngx-lib-upload.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs +13 -13
- package/fesm2022/cleavelandprice-ngx-lib-url-utilities.mjs.map +1 -1
- package/fesm2022/cleavelandprice-ngx-lib.mjs +7 -7
- package/fesm2022/cleavelandprice-ngx-lib.mjs.map +1 -1
- package/package.json +35 -5
- package/table/model/table-column.d.ts +4 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Component, input, output, viewChild } from '@angular/core';
|
|
2
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
3
|
+
import { MatSort, MatSortHeader } from '@angular/material/sort';
|
|
4
|
+
import { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef, MatTable, MatTableDataSource } from '@angular/material/table';
|
|
5
|
+
import { DatePipe, DecimalPipe, NgClass, NgStyle } from '@angular/common';
|
|
6
|
+
import { FormsModule } from '@angular/forms';
|
|
7
|
+
import { MatButton, MatIconButton } from '@angular/material/button';
|
|
8
|
+
import { MatCheckbox } from '@angular/material/checkbox';
|
|
9
|
+
import { MatFormField, MatLabel, MatPrefix } from '@angular/material/form-field';
|
|
10
|
+
import { MatIcon } from '@angular/material/icon';
|
|
11
|
+
import { MatInput } from '@angular/material/input';
|
|
12
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
13
|
+
import { RoundNumberPipe } from '../../pipes/roundNumber';
|
|
14
|
+
import { DecimalPointsPipe } from '../../pipes/decimalPoints';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "@angular/forms";
|
|
17
|
+
export class TableComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
//#region Inputs
|
|
20
|
+
this.title = input('');
|
|
21
|
+
this.tableData = input.required();
|
|
22
|
+
this.columns = input([]);
|
|
23
|
+
this.showPaginator = input(true);
|
|
24
|
+
this.showSearch = input(true);
|
|
25
|
+
this.maxTableHeight = input('50em');
|
|
26
|
+
this.shrinkTable = input(false);
|
|
27
|
+
this.paginatorSticky = input(false);
|
|
28
|
+
this.pageinatorDefaultIncrement = input(50);
|
|
29
|
+
this.sortingDataAccessor = input();
|
|
30
|
+
//#endregion
|
|
31
|
+
this.buttonClicked = output();
|
|
32
|
+
this.isMobile = false;
|
|
33
|
+
this.paginator = viewChild(MatPaginator);
|
|
34
|
+
this.sort = viewChild(MatSort);
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.dataSource = new MatTableDataSource(this.tableData());
|
|
38
|
+
if (this.sortingDataAccessor()) {
|
|
39
|
+
this.dataSource.sortingDataAccessor = this.sortingDataAccessor();
|
|
40
|
+
}
|
|
41
|
+
this.columnNames = this.columns().map(c => c.field);
|
|
42
|
+
this.#setTablePageSizeOptions(this.pageinatorDefaultIncrement());
|
|
43
|
+
}
|
|
44
|
+
ngAfterViewInit() {
|
|
45
|
+
if (this.paginator() && !this.dataSource.paginator) {
|
|
46
|
+
this.dataSource.paginator = this.paginator();
|
|
47
|
+
}
|
|
48
|
+
if (this.sort() && !this.dataSource.sort) {
|
|
49
|
+
this.dataSource.sort = this.sort();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
searchFilterChange(event) {
|
|
53
|
+
const filterValue = event.target.value;
|
|
54
|
+
this.dataSource.filter = filterValue.trim().toLowerCase();
|
|
55
|
+
}
|
|
56
|
+
buttonClick(rowData, field) {
|
|
57
|
+
this.buttonClicked.emit({ rowData, field });
|
|
58
|
+
}
|
|
59
|
+
editableFieldChange(rowData, field, value) {
|
|
60
|
+
rowData[field] = value;
|
|
61
|
+
this.buttonClicked.emit({ rowData, field });
|
|
62
|
+
}
|
|
63
|
+
getNestedFieldValue(rowData, nestedField) {
|
|
64
|
+
if (!nestedField) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
return rowData[nestedField];
|
|
68
|
+
}
|
|
69
|
+
getDoubleNestedFieldValue(rowData, field, nestedField) {
|
|
70
|
+
if (!field || !nestedField) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
return rowData[field][nestedField];
|
|
74
|
+
}
|
|
75
|
+
#setTablePageSizeOptions(defaultPageIncrement = 50) {
|
|
76
|
+
this.pageSizeOptions = [];
|
|
77
|
+
for (let i = defaultPageIncrement; i < this.dataSource.data.length; i = i + (defaultPageIncrement * 2)) {
|
|
78
|
+
this.pageSizeOptions.push(i);
|
|
79
|
+
}
|
|
80
|
+
this.pageSizeOptions.push(this.dataSource.data.length);
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: TableComponent, isStandalone: true, selector: "lib-table", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, tableData: { classPropertyName: "tableData", publicName: "tableData", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, showPaginator: { classPropertyName: "showPaginator", publicName: "showPaginator", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, maxTableHeight: { classPropertyName: "maxTableHeight", publicName: "maxTableHeight", isSignal: true, isRequired: false, transformFunction: null }, shrinkTable: { classPropertyName: "shrinkTable", publicName: "shrinkTable", isSignal: true, isRequired: false, transformFunction: null }, paginatorSticky: { classPropertyName: "paginatorSticky", publicName: "paginatorSticky", isSignal: true, isRequired: false, transformFunction: null }, pageinatorDefaultIncrement: { classPropertyName: "pageinatorDefaultIncrement", publicName: "pageinatorDefaultIncrement", isSignal: true, isRequired: false, transformFunction: null }, sortingDataAccessor: { classPropertyName: "sortingDataAccessor", publicName: "sortingDataAccessor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClicked: "buttonClicked" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, isSignal: true }], ngImport: i0, template: "<h3>{{title()}}</h3>\r\n\r\n@if (showSearch()) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Search</mat-label>\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input type=\"text\" matInput (keyup)=\"searchFilterChange($event)\">\r\n </mat-form-field>\r\n}\r\n\r\n<div class=\"table-container\" [ngStyle]=\"{'max-height': maxTableHeight()}\" [class.shrink-table]=\"shrinkTable()\">\r\n <table mat-table [dataSource]=\"dataSource\" matSort>\r\n @for (column of columns(); track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth }\">\r\n <div>{{ column.fieldColumnTitle }}</div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let data\" [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth }\">\r\n @if(column.isDate) {\r\n @if(column.isDate.showTime) {\r\n {{ data[column.field] | date:'short' }}\r\n }\r\n @else if(column.isDate.customFormat) {\r\n {{ data[column.field] | date:'' + column.isDate.customFormat + ''}}\r\n }\r\n @else {\r\n {{ data[column.field] | date:'shortDate' }}\r\n }\r\n }\r\n @else if (column.isNumber) {\r\n @if (column.isNumber.needsRounded) {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'0.0-0' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'0.0-0' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'0.0-0' }}\r\n }\r\n } @else {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'.2-2' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'.2-2' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'.2-2' }}\r\n }\r\n }\r\n }\r\n @else if (column.isCheckbox) {\r\n <mat-checkbox [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isCheckbox['isDisabled']\" />\r\n }\r\n @else if (column.isHyperlink) {\r\n <a [href]=\"data[column.isHyperlink.linkField]\" target=\"_blank\">\r\n {{ data[column.field] }}\r\n </a>\r\n }\r\n @else if (column.isButton) {\r\n @if (column.isButton.isIcon) {\r\n <button mat-icon-button [matTooltip]=\"column.isButton.isIcon.toolTip\" [disabled]=\"column.isButton.isDisabled\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n <mat-icon>{{column.isButton.isIcon.iconName}}</mat-icon>\r\n </button>\r\n } @else if (column.isButton.isCheckbox) {\r\n <mat-checkbox [matTooltip]=\"column.isButton.isCheckbox.toolTip\"\r\n [(ngModel)]=\"data[column.field]\" (click)=\"buttonClick(data, column.field)\" />\r\n } @else {\r\n <button mat-raised-button [disabled]=\"column.isButton.isDisabled\"\r\n [color]=\"column.isButton.isDisabled ? undefined : 'primary'\"\r\n [class.button-extra-padding]=\"column.isButton.extraPadding\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n {{column.isButton.text}}\r\n </button>\r\n }\r\n }\r\n @else if (column.nestedField) {\r\n {{ getNestedFieldValue(data[column.field], column.nestedField) }}\r\n }\r\n @else if (column.doubleNestedField) {\r\n {{ getDoubleNestedFieldValue(data, column.doubleNestedField.field, column.doubleNestedField.nestedField) }}\r\n }\r\n @else if (column.isEditable) {\r\n @if (column.isEditable.type === 'textarea') {\r\n <textarea style=\"width: 100%;\" [rows]=\"3\" [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\"></textarea>\r\n }\r\n @else if (column.isEditable.isNumber) {\r\n @if (column.isEditable.isNumber.needsRounded) {\r\n <input [ngModel]=\"data[column.field] | roundNumber\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else if (column.isEditable.isNumber.decimalPoints) {\r\n <input [ngModel]=\"data[column.field] | decimalPoints:column.isEditable.isNumber.decimalPoints\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else {\r\n <input [ngModel]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n }\r\n @else {\r\n <input [(ngModel)]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"text\">\r\n }\r\n }\r\n @else {\r\n {{ data[column.field] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columnNames;\" class=\"table-row\"></tr>\r\n <tr mat-row *matNoDataRow>\r\n <td class=\"mat-cell\" colspan=\"9999\">\r\n No records exist.\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n @if (showPaginator()) {\r\n <mat-paginator [class.paginator-sticky]=\"paginatorSticky()\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons />\r\n }\r\n</div>\r\n", styles: [".mat-form-field{width:100%!important}.table-container{display:grid;grid-template-columns:1fr;max-height:50em;overflow:auto;margin:1em .5em .5em;text-align:center!important}.table-container .table{width:100%}:host ::ng-deep .mat-sort-header-container{display:flex;justify-content:center;margin-left:1.25em}td,th{text-align:center!important;vertical-align:middle!important}.shrink-table .mat-mdc-unelevated-button{line-height:1.75em}.shrink-table .mat-mdc-outlined-button{line-height:1.5em;height:1.5em}.shrink-table .mat-mdc-row:hover{background-color:#8f8f8f18;font-weight:700}.shrink-table .mat-mdc-row,tr.mat-row{min-height:1.5em;height:1.5em}.shrink-table .mat-mdc-header-row{min-height:40px}.shrink-table tr.mat-mdc-header-row{height:1.5em;border-radius:5px}.shrink-table .mat-column-tools{min-width:225px;max-width:225px}.shrink-table .mat-mdc-header-cell{font-weight:700}.paginator-sticky{bottom:0;position:sticky;z-index:10}.button-extra-padding{padding-top:1.75em;padding-bottom:1.75em}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "component", type: MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: RoundNumberPipe, name: "roundNumber" }, { kind: "pipe", type: DecimalPointsPipe, name: "decimalPoints" }] }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableComponent, decorators: [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{ selector: 'lib-table', imports: [
|
|
88
|
+
DatePipe,
|
|
89
|
+
DecimalPipe,
|
|
90
|
+
FormsModule,
|
|
91
|
+
MatButton,
|
|
92
|
+
MatCell,
|
|
93
|
+
MatCellDef,
|
|
94
|
+
MatCheckbox,
|
|
95
|
+
MatColumnDef,
|
|
96
|
+
MatFormField,
|
|
97
|
+
MatHeaderCell,
|
|
98
|
+
MatHeaderCellDef,
|
|
99
|
+
MatHeaderRow,
|
|
100
|
+
MatHeaderRowDef,
|
|
101
|
+
MatIcon,
|
|
102
|
+
MatIconButton,
|
|
103
|
+
MatInput,
|
|
104
|
+
MatLabel,
|
|
105
|
+
MatNoDataRow,
|
|
106
|
+
MatPaginator,
|
|
107
|
+
MatPrefix,
|
|
108
|
+
MatRow,
|
|
109
|
+
MatRowDef,
|
|
110
|
+
MatSort,
|
|
111
|
+
MatSortHeader,
|
|
112
|
+
MatTable,
|
|
113
|
+
MatTooltip,
|
|
114
|
+
NgClass,
|
|
115
|
+
NgStyle,
|
|
116
|
+
RoundNumberPipe,
|
|
117
|
+
DecimalPointsPipe
|
|
118
|
+
], standalone: true, template: "<h3>{{title()}}</h3>\r\n\r\n@if (showSearch()) {\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Search</mat-label>\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input type=\"text\" matInput (keyup)=\"searchFilterChange($event)\">\r\n </mat-form-field>\r\n}\r\n\r\n<div class=\"table-container\" [ngStyle]=\"{'max-height': maxTableHeight()}\" [class.shrink-table]=\"shrinkTable()\">\r\n <table mat-table [dataSource]=\"dataSource\" matSort>\r\n @for (column of columns(); track column) {\r\n <ng-container [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth }\">\r\n <div>{{ column.fieldColumnTitle }}</div>\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let data\" [class.hide-mobile]=\"column.hideOnMobile && isMobile\" [ngStyle]=\"{ 'width': column.columnWidth }\">\r\n @if(column.isDate) {\r\n @if(column.isDate.showTime) {\r\n {{ data[column.field] | date:'short' }}\r\n }\r\n @else if(column.isDate.customFormat) {\r\n {{ data[column.field] | date:'' + column.isDate.customFormat + ''}}\r\n }\r\n @else {\r\n {{ data[column.field] | date:'shortDate' }}\r\n }\r\n }\r\n @else if (column.isNumber) {\r\n @if (column.isNumber.needsRounded) {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'0.0-0' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'0.0-0' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'0.0-0' }}\r\n }\r\n } @else {\r\n @if (column.isNumber.percentage) {\r\n {{ data[column.field] | number:'.2-2' }}%\r\n }\r\n @else if (column.isNumber.money) {\r\n ${{ data[column.field] | number:'.2-2' }}\r\n }\r\n @else {\r\n {{ data[column.field] | number:'.2-2' }}\r\n }\r\n }\r\n }\r\n @else if (column.isCheckbox) {\r\n <mat-checkbox [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isCheckbox['isDisabled']\" />\r\n }\r\n @else if (column.isHyperlink) {\r\n <a [href]=\"data[column.isHyperlink.linkField]\" target=\"_blank\">\r\n {{ data[column.field] }}\r\n </a>\r\n }\r\n @else if (column.isButton) {\r\n @if (column.isButton.isIcon) {\r\n <button mat-icon-button [matTooltip]=\"column.isButton.isIcon.toolTip\" [disabled]=\"column.isButton.isDisabled\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n <mat-icon>{{column.isButton.isIcon.iconName}}</mat-icon>\r\n </button>\r\n } @else if (column.isButton.isCheckbox) {\r\n <mat-checkbox [matTooltip]=\"column.isButton.isCheckbox.toolTip\"\r\n [(ngModel)]=\"data[column.field]\" (click)=\"buttonClick(data, column.field)\" />\r\n } @else {\r\n <button mat-raised-button [disabled]=\"column.isButton.isDisabled\"\r\n [color]=\"column.isButton.isDisabled ? undefined : 'primary'\"\r\n [class.button-extra-padding]=\"column.isButton.extraPadding\"\r\n (click)=\"column.isButton.isDisabled ? undefined : buttonClick(data, column.field)\">\r\n {{column.isButton.text}}\r\n </button>\r\n }\r\n }\r\n @else if (column.nestedField) {\r\n {{ getNestedFieldValue(data[column.field], column.nestedField) }}\r\n }\r\n @else if (column.doubleNestedField) {\r\n {{ getDoubleNestedFieldValue(data, column.doubleNestedField.field, column.doubleNestedField.nestedField) }}\r\n }\r\n @else if (column.isEditable) {\r\n @if (column.isEditable.type === 'textarea') {\r\n <textarea style=\"width: 100%;\" [rows]=\"3\" [(ngModel)]=\"data[column.field]\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\"></textarea>\r\n }\r\n @else if (column.isEditable.isNumber) {\r\n @if (column.isEditable.isNumber.needsRounded) {\r\n <input [ngModel]=\"data[column.field] | roundNumber\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else if (column.isEditable.isNumber.decimalPoints) {\r\n <input [ngModel]=\"data[column.field] | decimalPoints:column.isEditable.isNumber.decimalPoints\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n @else {\r\n <input [ngModel]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"number\">\r\n }\r\n }\r\n @else {\r\n <input [(ngModel)]=\"data[column.field]\" (ngModelChange)=\"editableFieldChange(data, column.field, $event)\" style=\"width: 55%;\" [disabled]=\"column.isEditable.disable !== undefined && column.isEditable.disable\" type=\"text\">\r\n }\r\n }\r\n @else {\r\n {{ data[column.field] }}\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnNames; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columnNames;\" class=\"table-row\"></tr>\r\n <tr mat-row *matNoDataRow>\r\n <td class=\"mat-cell\" colspan=\"9999\">\r\n No records exist.\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n @if (showPaginator()) {\r\n <mat-paginator [class.paginator-sticky]=\"paginatorSticky()\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons />\r\n }\r\n</div>\r\n", styles: [".mat-form-field{width:100%!important}.table-container{display:grid;grid-template-columns:1fr;max-height:50em;overflow:auto;margin:1em .5em .5em;text-align:center!important}.table-container .table{width:100%}:host ::ng-deep .mat-sort-header-container{display:flex;justify-content:center;margin-left:1.25em}td,th{text-align:center!important;vertical-align:middle!important}.shrink-table .mat-mdc-unelevated-button{line-height:1.75em}.shrink-table .mat-mdc-outlined-button{line-height:1.5em;height:1.5em}.shrink-table .mat-mdc-row:hover{background-color:#8f8f8f18;font-weight:700}.shrink-table .mat-mdc-row,tr.mat-row{min-height:1.5em;height:1.5em}.shrink-table .mat-mdc-header-row{min-height:40px}.shrink-table tr.mat-mdc-header-row{height:1.5em;border-radius:5px}.shrink-table .mat-column-tools{min-width:225px;max-width:225px}.shrink-table .mat-mdc-header-cell{font-weight:700}.paginator-sticky{bottom:0;position:sticky;z-index:10}.button-extra-padding{padding-top:1.75em;padding-bottom:1.75em}\n"] }]
|
|
119
|
+
}] });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNNLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFD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QUNSLFdBQVcsOENBQ1gsV0FBVyxpeEJBQ1gsU0FBUyxpTEFDVCxPQUFPLG1FQUNQLFVBQVUseURBQ1YsV0FBVyxpVUFDWCxZQUFZLHFGQUNaLFlBQVksNExBQ1osYUFBYSxpRkFDYixnQkFBZ0IsK0RBQ2hCLFlBQVksMkdBQ1osZUFBZSxvSEFDZixPQUFPLDJJQUNQLGFBQWEsNkZBQ2IsUUFBUSxpVUFDUixRQUFRLHNEQUNSLFlBQVksc0VBQ1osWUFBWSxzUEFDWixTQUFTLHFIQUNULE1BQU0sdUZBQ04sU0FBUyx1R0FDVCxPQUFPLGtOQUNQLGFBQWEsdU1BQ2IsUUFBUSxnR0FDUixVQUFVLGlSQUVWLE9BQU8sc0VBQ1AsZUFBZSwrQ0FDZixpQkFBaUI7OzJGQU1aLGNBQWM7a0JBdEMxQixTQUFTOytCQUNJLFdBQVcsV0FDWjt3QkFDTCxRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxTQUFTO3dCQUNULE9BQU87d0JBQ1AsVUFBVTt3QkFDVixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsTUFBTTt3QkFDTixTQUFTO3dCQUNULE9BQU87d0JBQ1AsYUFBYTt3QkFDYixRQUFRO3dCQUNSLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsaUJBQWlCO3FCQUNwQixjQUNXLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgTWF0U29ydEhlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDZWxsLCBNYXRDZWxsRGVmLCBNYXRDb2x1bW5EZWYsIE1hdEhlYWRlckNlbGwsIE1hdEhlYWRlckNlbGxEZWYsIE1hdEhlYWRlclJvdywgTWF0SGVhZGVyUm93RGVmLCBNYXROb0RhdGFSb3csIE1hdFJvdywgTWF0Um93RGVmLCBNYXRUYWJsZSwgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgRGF0ZVBpcGUsIERlY2ltYWxQaXBlLCBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRQcmVmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL3RhYmxlLWNvbHVtbic7XHJcbmltcG9ydCB7IFJvdW5kTnVtYmVyUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3JvdW5kTnVtYmVyJztcclxuaW1wb3J0IHsgRGVjaW1hbFBvaW50c1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9kZWNpbWFsUG9pbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItdGFibGUnLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIERhdGVQaXBlLFxyXG4gICAgICAgIERlY2ltYWxQaXBlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hdEJ1dHRvbixcclxuICAgICAgICBNYXRDZWxsLFxyXG4gICAgICAgIE1hdENlbGxEZWYsXHJcbiAgICAgICAgTWF0Q2hlY2tib3gsXHJcbiAgICAgICAgTWF0Q29sdW1uRGVmLFxyXG4gICAgICAgIE1hdEZvcm1GaWVsZCxcclxuICAgICAgICBNYXRIZWFkZXJDZWxsLFxyXG4gICAgICAgIE1hdEhlYWRlckNlbGxEZWYsXHJcbiAgICAgICAgTWF0SGVhZGVyUm93LFxyXG4gICAgICAgIE1hdEhlYWRlclJvd0RlZixcclxuICAgICAgICBNYXRJY29uLFxyXG4gICAgICAgIE1hdEljb25CdXR0b24sXHJcbiAgICAgICAgTWF0SW5wdXQsXHJcbiAgICAgICAgTWF0TGFiZWwsXHJcbiAgICAgICAgTWF0Tm9EYXRhUm93LFxyXG4gICAgICAgIE1hdFBhZ2luYXRvcixcclxuICAgICAgICBNYXRQcmVmaXgsXHJcbiAgICAgICAgTWF0Um93LFxyXG4gICAgICAgIE1hdFJvd0RlZixcclxuICAgICAgICBNYXRTb3J0LFxyXG4gICAgICAgIE1hdFNvcnRIZWFkZXIsXHJcbiAgICAgICAgTWF0VGFibGUsXHJcbiAgICAgICAgTWF0VG9vbHRpcCxcclxuICAgICAgICBOZ0NsYXNzLFxyXG4gICAgICAgIE5nU3R5bGUsXHJcbiAgICAgICAgUm91bmROdW1iZXJQaXBlLFxyXG4gICAgICAgIERlY2ltYWxQb2ludHNQaXBlXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIC8vI3JlZ2lvbiBJbnB1dHNcclxuICB0aXRsZSA9IGlucHV0KCcnKTtcclxuICB0YWJsZURhdGEgPSBpbnB1dC5yZXF1aXJlZDxhbnlbXT4oKTtcclxuICBjb2x1bW5zID0gaW5wdXQ8VGFibGVDb2x1bW5bXT4oW10pO1xyXG4gIHNob3dQYWdpbmF0b3IgPSBpbnB1dCh0cnVlKTtcclxuICBzaG93U2VhcmNoID0gaW5wdXQodHJ1ZSk7XHJcbiAgbWF4VGFibGVIZWlnaHQgPSBpbnB1dCgnNTBlbScpO1xyXG4gIHNocmlua1RhYmxlID0gaW5wdXQoZmFsc2UpO1xyXG4gIHBhZ2luYXRvclN0aWNreSA9IGlucHV0KGZhbHNlKTtcclxuICBwYWdlaW5hdG9yRGVmYXVsdEluY3JlbWVudCA9IGlucHV0KDUwKTtcclxuICBzb3J0aW5nRGF0YUFjY2Vzc29yID0gaW5wdXQ8KGRhdGE6IGFueSwgc29ydEhlYWRlcklkOiBzdHJpbmcpID0+IHN0cmluZz4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgYnV0dG9uQ2xpY2tlZCA9IG91dHB1dDx7IHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZyB9PigpO1xyXG5cclxuICBpc01vYmlsZSA9IGZhbHNlO1xyXG4gIGRhdGFTb3VyY2UhOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcclxuICBwYWdlU2l6ZU9wdGlvbnMhOiBudW1iZXJbXTsgLy8gPSBbMTAsIDIwLCAxMDAsIDUwMF07XHJcbiAgY29sdW1uTmFtZXMhOiBzdHJpbmdbXTtcclxuXHJcbiAgcGFnaW5hdG9yID0gdmlld0NoaWxkKE1hdFBhZ2luYXRvcik7XHJcbiAgc29ydCA9IHZpZXdDaGlsZChNYXRTb3J0KTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMudGFibGVEYXRhKCkpO1xyXG5cclxuICAgIGlmICh0aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IoKSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydGluZ0RhdGFBY2Nlc3NvciA9IHRoaXMuc29ydGluZ0RhdGFBY2Nlc3NvcigpITtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbHVtbk5hbWVzID0gdGhpcy5jb2x1bW5zKCkubWFwKGMgPT4gYy5maWVsZCk7XHJcblxyXG4gICAgdGhpcy4jc2V0VGFibGVQYWdlU2l6ZU9wdGlvbnModGhpcy5wYWdlaW5hdG9yRGVmYXVsdEluY3JlbWVudCgpKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnBhZ2luYXRvcigpICYmICF0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcigpITtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNvcnQoKSAmJiAhdGhpcy5kYXRhU291cmNlLnNvcnQpIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQoKSE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2hGaWx0ZXJDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGljayhyb3dEYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuYnV0dG9uQ2xpY2tlZC5lbWl0KHsgcm93RGF0YSwgZmllbGQgfSk7XHJcbiAgfVxyXG5cclxuICBlZGl0YWJsZUZpZWxkQ2hhbmdlKHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgcm93RGF0YVtmaWVsZF0gPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCh7IHJvd0RhdGEsIGZpZWxkIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmVzdGVkRmllbGRWYWx1ZShyb3dEYXRhOiBhbnksIG5lc3RlZEZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGlmICghbmVzdGVkRmllbGQpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgcmV0dXJuIHJvd0RhdGFbbmVzdGVkRmllbGRdO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG91YmxlTmVzdGVkRmllbGRWYWx1ZShyb3dEYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcsIG5lc3RlZEZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGlmICghZmllbGQgfHwgIW5lc3RlZEZpZWxkKSB7IHJldHVybjsgfVxyXG5cclxuICAgIHJldHVybiByb3dEYXRhW2ZpZWxkXVtuZXN0ZWRGaWVsZF07XHJcbiAgfVxyXG5cclxuICAjc2V0VGFibGVQYWdlU2l6ZU9wdGlvbnMoZGVmYXVsdFBhZ2VJbmNyZW1lbnQ6IG51bWJlciA9IDUwKSB7XHJcbiAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSBkZWZhdWx0UGFnZUluY3JlbWVudDsgaSA8IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aDsgaSA9IGkgKyAoZGVmYXVsdFBhZ2VJbmNyZW1lbnQgKiAyKSkge1xyXG4gICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucy5wdXNoKGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFnZVNpemVPcHRpb25zLnB1c2godGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoKTtcclxuICB9XHJcbn1cclxuIiwiPGgzPnt7dGl0bGUoKX19PC9oMz5cclxuXHJcbkBpZiAoc2hvd1NlYXJjaCgpKSB7XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgKGtleXVwKT1cInNlYXJjaEZpbHRlckNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxufVxyXG5cclxuPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodCc6IG1heFRhYmxlSGVpZ2h0KCl9XCIgW2NsYXNzLnNocmluay10YWJsZV09XCJzaHJpbmtUYWJsZSgpXCI+XHJcbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpOyB0cmFjayBjb2x1bW4pIHtcclxuICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmZpZWxkXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciBbY2xhc3MuaGlkZS1tb2JpbGVdPVwiY29sdW1uLmhpZGVPbk1vYmlsZSAmJiBpc01vYmlsZVwiIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogY29sdW1uLmNvbHVtbldpZHRoIH1cIj5cclxuICAgICAgICAgICAgPGRpdj57eyBjb2x1bW4uZmllbGRDb2x1bW5UaXRsZSB9fTwvZGl2PlxyXG4gICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZGF0YVwiIFtjbGFzcy5oaWRlLW1vYmlsZV09XCJjb2x1bW4uaGlkZU9uTW9iaWxlICYmIGlzTW9iaWxlXCIgW25nU3R5bGVdPVwieyAnd2lkdGgnOiBjb2x1bW4uY29sdW1uV2lkdGggfVwiPlxyXG4gICAgICAgICAgICBAaWYoY29sdW1uLmlzRGF0ZSkge1xyXG4gICAgICAgICAgICAgIEBpZihjb2x1bW4uaXNEYXRlLnNob3dUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5maWVsZF0gfCBkYXRlOidzaG9ydCcgfX1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGVsc2UgaWYoY29sdW1uLmlzRGF0ZS5jdXN0b21Gb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IGRhdGU6JycgKyBjb2x1bW4uaXNEYXRlLmN1c3RvbUZvcm1hdCArICcnfX1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4uZmllbGRdIHwgZGF0ZTonc2hvcnREYXRlJyB9fVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLmlzTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgQGlmIChjb2x1bW4uaXNOdW1iZXIubmVlZHNSb3VuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5pc051bWJlci5wZXJjZW50YWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IG51bWJlcjonMC4wLTAnIH19JVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5pc051bWJlci5tb25leSkge1xyXG4gICAgICAgICAgICAgICAgICAke3sgZGF0YVtjb2x1bW4uZmllbGRdIHwgbnVtYmVyOicwLjAtMCcgfX1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4uZmllbGRdIHwgbnVtYmVyOicwLjAtMCcgfX1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmlzTnVtYmVyLnBlcmNlbnRhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4uZmllbGRdIHwgbnVtYmVyOicuMi0yJyB9fSVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBlbHNlIGlmIChjb2x1bW4uaXNOdW1iZXIubW9uZXkpIHtcclxuICAgICAgICAgICAgICAgICAgJHt7IGRhdGFbY29sdW1uLmZpZWxkXSB8IG51bWJlcjonLjItMicgfX1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4uZmllbGRdIHwgbnVtYmVyOicuMi0yJyB9fVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLmlzQ2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiZGF0YVtjb2x1bW4uZmllbGRdXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0NoZWNrYm94Wydpc0Rpc2FibGVkJ11cIiAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIGlmIChjb2x1bW4uaXNIeXBlcmxpbmspIHtcclxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCJkYXRhW2NvbHVtbi5pc0h5cGVybGluay5saW5rRmllbGRdXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5maWVsZF0gfX1cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5pc0J1dHRvbikge1xyXG4gICAgICAgICAgICAgIEBpZiAoY29sdW1uLmlzQnV0dG9uLmlzSWNvbikge1xyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdFRvb2x0aXBdPVwiY29sdW1uLmlzQnV0dG9uLmlzSWNvbi50b29sVGlwXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0J1dHRvbi5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbHVtbi5pc0J1dHRvbi5pc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogYnV0dG9uQ2xpY2soZGF0YSwgY29sdW1uLmZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tjb2x1bW4uaXNCdXR0b24uaXNJY29uLmljb25OYW1lfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoY29sdW1uLmlzQnV0dG9uLmlzQ2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW21hdFRvb2x0aXBdPVwiY29sdW1uLmlzQnV0dG9uLmlzQ2hlY2tib3gudG9vbFRpcFwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0YVtjb2x1bW4uZmllbGRdXCIgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKGRhdGEsIGNvbHVtbi5maWVsZClcIiAvPlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiY29sdW1uLmlzQnV0dG9uLmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiY29sdW1uLmlzQnV0dG9uLmlzRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWV4dHJhLXBhZGRpbmddPVwiY29sdW1uLmlzQnV0dG9uLmV4dHJhUGFkZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb2x1bW4uaXNCdXR0b24uaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGJ1dHRvbkNsaWNrKGRhdGEsIGNvbHVtbi5maWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAge3tjb2x1bW4uaXNCdXR0b24udGV4dH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5uZXN0ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICAgIHt7IGdldE5lc3RlZEZpZWxkVmFsdWUoZGF0YVtjb2x1bW4uZmllbGRdLCBjb2x1bW4ubmVzdGVkRmllbGQpIH19XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5kb3VibGVOZXN0ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICAgIHt7IGdldERvdWJsZU5lc3RlZEZpZWxkVmFsdWUoZGF0YSwgY29sdW1uLmRvdWJsZU5lc3RlZEZpZWxkLmZpZWxkLCBjb2x1bW4uZG91YmxlTmVzdGVkRmllbGQubmVzdGVkRmllbGQpIH19XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKGNvbHVtbi5pc0VkaXRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5pc0VkaXRhYmxlLnR5cGUgPT09ICd0ZXh0YXJlYScpIHtcclxuICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3Jvd3NdPVwiM1wiIFsobmdNb2RlbCldPVwiZGF0YVtjb2x1bW4uZmllbGRdXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBlbHNlIGlmIChjb2x1bW4uaXNFZGl0YWJsZS5pc051bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5pc0VkaXRhYmxlLmlzTnVtYmVyLm5lZWRzUm91bmRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbbmdNb2RlbF09XCJkYXRhW2NvbHVtbi5maWVsZF0gfCByb3VuZE51bWJlclwiICBzdHlsZT1cIndpZHRoOiA1NSU7XCIgIFtkaXNhYmxlZF09XCJjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLmlzRWRpdGFibGUuZGlzYWJsZVwiIHR5cGU9XCJudW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoY29sdW1uLmlzRWRpdGFibGUuaXNOdW1iZXIuZGVjaW1hbFBvaW50cykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbbmdNb2RlbF09XCJkYXRhW2NvbHVtbi5maWVsZF0gfCBkZWNpbWFsUG9pbnRzOmNvbHVtbi5pc0VkaXRhYmxlLmlzTnVtYmVyLmRlY2ltYWxQb2ludHNcIiAobmdNb2RlbENoYW5nZSk9XCJlZGl0YWJsZUZpZWxkQ2hhbmdlKGRhdGEsIGNvbHVtbi5maWVsZCwgJGV2ZW50KVwiIHN0eWxlPVwid2lkdGg6IDU1JTtcIiAgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlXCIgdHlwZT1cIm51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW25nTW9kZWxdPVwiZGF0YVtjb2x1bW4uZmllbGRdXCIgKG5nTW9kZWxDaGFuZ2UpPVwiZWRpdGFibGVGaWVsZENoYW5nZShkYXRhLCBjb2x1bW4uZmllbGQsICRldmVudClcIiBzdHlsZT1cIndpZHRoOiA1NSU7XCIgIFtkaXNhYmxlZF09XCJjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLmlzRWRpdGFibGUuZGlzYWJsZVwiIHR5cGU9XCJudW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJkYXRhW2NvbHVtbi5maWVsZF1cIiAobmdNb2RlbENoYW5nZSk9XCJlZGl0YWJsZUZpZWxkQ2hhbmdlKGRhdGEsIGNvbHVtbi5maWVsZCwgJGV2ZW50KVwiIHN0eWxlPVwid2lkdGg6IDU1JTtcIiAgW2Rpc2FibGVkXT1cImNvbHVtbi5pc0VkaXRhYmxlLmRpc2FibGUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uaXNFZGl0YWJsZS5kaXNhYmxlXCIgdHlwZT1cInRleHRcIj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4uZmllbGRdIH19XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uTmFtZXM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XHJcbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5OYW1lcztcIiBjbGFzcz1cInRhYmxlLXJvd1wiPjwvdHI+XHJcbiAgICAgIDx0ciBtYXQtcm93ICptYXROb0RhdGFSb3c+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIiBjb2xzcGFuPVwiOTk5OVwiPlxyXG4gICAgICAgICAgTm8gcmVjb3JkcyBleGlzdC5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICBAaWYgKHNob3dQYWdpbmF0b3IoKSkge1xyXG4gICAgICA8bWF0LXBhZ2luYXRvciBbY2xhc3MucGFnaW5hdG9yLXN0aWNreV09XCJwYWdpbmF0b3JTdGlja3koKVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgLz5cclxuICAgIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL21vZGVsL3RhYmxlLWNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbiB7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICBmaWVsZENvbHVtblRpdGxlOiBzdHJpbmc7XHJcbiAgY29sdW1uV2lkdGg/OiBzdHJpbmc7XHJcblxyXG4gIGlzRGF0ZT86IHsgc2hvd1RpbWU6IGJvb2xlYW4sIGN1c3RvbUZvcm1hdD86IHN0cmluZyB9O1xyXG4gIGlzUGVyY2VudD86IGJvb2xlYW47XHJcblxyXG4gIGlzTnVtYmVyPzogeyBuZWVkc1JvdW5kZWQ6IGJvb2xlYW4sIHBlcmNlbnRhZ2U/OiBib29sZWFuLCBtb25leT86IGJvb2xlYW4gfTtcclxuXHJcbiAgaXNDaGVja2JveD86IHsgaXNEaXNhYmxlZDogYm9vbGVhbiB9O1xyXG5cclxuICBpc0J1dHRvbj86IHsgaXNEaXNhYmxlZDogYm9vbGVhbiwgdGV4dD86IHN0cmluZywgaXNJY29uPzogeyBpY29uTmFtZTogc3RyaW5nLCB0b29sVGlwOiBzdHJpbmcgfSwgaXNDaGVja2JveD86IHsgdG9vbFRpcDogc3RyaW5nLCBtdWx0aXBsZVNlbGVjdDogYm9vbGVhbiB9LCBleHRyYVBhZGRpbmc/OiBib29sZWFuIH07XHJcblxyXG4gIGlzRWRpdGFibGU/OiB7XHJcbiAgICB0eXBlOiBzdHJpbmcsXHJcbiAgICBkaXNhYmxlPzogYm9vbGVhbixcclxuICAgIGlzTnVtYmVyPzogeyBuZWVkc1JvdW5kZWQ6IGJvb2xlYW4sIGRlY2ltYWxQb2ludHM/OiBudW1iZXIgfVxyXG4gIH07XHJcblxyXG4gIGhpZGVPbk1vYmlsZT86IGJvb2xlYW47XHJcblxyXG4gIG5lc3RlZEZpZWxkPzogc3RyaW5nO1xyXG4gIGRvdWJsZU5lc3RlZEZpZWxkPzogeyBmaWVsZDogc3RyaW5nLCBuZXN0ZWRGaWVsZDogc3RyaW5nIH1cclxuXHJcbiAgaXNIeXBlcmxpbms/OiB7IGxpbmtGaWVsZDogc3RyaW5nIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Pipe } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class DecimalPointsPipe {
|
|
4
|
+
transform(val, numberOfDecimalPoints) {
|
|
5
|
+
return parseFloat(val.toString()).toFixed(numberOfDecimalPoints);
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DecimalPointsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
8
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: DecimalPointsPipe, isStandalone: true, name: "decimalPoints" }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DecimalPointsPipe, decorators: [{
|
|
11
|
+
type: Pipe,
|
|
12
|
+
args: [{ name: 'decimalPoints', standalone: true }]
|
|
13
|
+
}] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbFBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3RhYmxlL3NyYy9waXBlcy9kZWNpbWFsUG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUdwRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFNBQVMsQ0FBQyxHQUFRLEVBQUUscUJBQTZCO1FBQy9DLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBSFUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBQaXBlKHsgbmFtZTogJ2RlY2ltYWxQb2ludHMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBEZWNpbWFsUG9pbnRzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm17XHJcbiAgdHJhbnNmb3JtKHZhbDogYW55LCBudW1iZXJPZkRlY2ltYWxQb2ludHM6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsLnRvU3RyaW5nKCkpLnRvRml4ZWQobnVtYmVyT2ZEZWNpbWFsUG9pbnRzKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Pipe } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class RoundNumberPipe {
|
|
4
|
+
transform(val) {
|
|
5
|
+
return Math.round(+val);
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
8
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: RoundNumberPipe, isStandalone: true, name: "roundNumber" }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundNumberPipe, decorators: [{
|
|
11
|
+
type: Pipe,
|
|
12
|
+
args: [{ name: 'roundNumber', standalone: true }]
|
|
13
|
+
}] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmROdW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi90YWJsZS9zcmMvcGlwZXMvcm91bmROdW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBR3BELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFNBQVMsQ0FBQyxHQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7OEdBSFUsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdyb3VuZE51bWJlcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcclxuZXhwb3J0IGNsYXNzIFJvdW5kTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm17XHJcbiAgdHJhbnNmb3JtKHZhbDogYW55KSB7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZCgrdmFsKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './model/table-column';
|
|
2
|
+
export * from './components/table/table.component';
|
|
3
|
+
export * from './table.module';
|
|
4
|
+
export * from './pipes/roundNumber';
|
|
5
|
+
export * from './pipes/decimalPoints';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL3RhYmxlLmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsY0FBYyxnQkFBZ0IsQ0FBQztBQUUvQixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsL3RhYmxlLWNvbHVtbic7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcm91bmROdW1iZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2RlY2ltYWxQb2ludHMnO1xyXG4iXX0=
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
6
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
8
|
+
import { MatInputModule } from '@angular/material/input';
|
|
9
|
+
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
10
|
+
import { MatSortModule } from '@angular/material/sort';
|
|
11
|
+
import { MatTableModule } from '@angular/material/table';
|
|
12
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
13
|
+
import { TableComponent } from './components/table/table.component';
|
|
14
|
+
import { RoundNumberPipe } from './pipes/roundNumber';
|
|
15
|
+
import { DecimalPointsPipe } from './pipes/decimalPoints';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
export class TableModule {
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
19
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: TableModule, imports: [CommonModule,
|
|
20
|
+
FormsModule,
|
|
21
|
+
ReactiveFormsModule,
|
|
22
|
+
MatButtonModule,
|
|
23
|
+
MatCheckboxModule,
|
|
24
|
+
MatFormFieldModule,
|
|
25
|
+
MatInputModule,
|
|
26
|
+
MatTableModule,
|
|
27
|
+
MatSortModule,
|
|
28
|
+
MatPaginatorModule,
|
|
29
|
+
MatTooltipModule,
|
|
30
|
+
MatIconModule,
|
|
31
|
+
TableComponent,
|
|
32
|
+
RoundNumberPipe,
|
|
33
|
+
DecimalPointsPipe], exports: [TableComponent,
|
|
34
|
+
RoundNumberPipe,
|
|
35
|
+
DecimalPointsPipe] }); }
|
|
36
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableModule, imports: [CommonModule,
|
|
37
|
+
FormsModule,
|
|
38
|
+
ReactiveFormsModule,
|
|
39
|
+
MatButtonModule,
|
|
40
|
+
MatCheckboxModule,
|
|
41
|
+
MatFormFieldModule,
|
|
42
|
+
MatInputModule,
|
|
43
|
+
MatTableModule,
|
|
44
|
+
MatSortModule,
|
|
45
|
+
MatPaginatorModule,
|
|
46
|
+
MatTooltipModule,
|
|
47
|
+
MatIconModule,
|
|
48
|
+
TableComponent] }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TableModule, decorators: [{
|
|
51
|
+
type: NgModule,
|
|
52
|
+
args: [{
|
|
53
|
+
declarations: [],
|
|
54
|
+
imports: [
|
|
55
|
+
CommonModule,
|
|
56
|
+
FormsModule,
|
|
57
|
+
ReactiveFormsModule,
|
|
58
|
+
MatButtonModule,
|
|
59
|
+
MatCheckboxModule,
|
|
60
|
+
MatFormFieldModule,
|
|
61
|
+
MatInputModule,
|
|
62
|
+
MatTableModule,
|
|
63
|
+
MatSortModule,
|
|
64
|
+
MatPaginatorModule,
|
|
65
|
+
MatTooltipModule,
|
|
66
|
+
MatIconModule,
|
|
67
|
+
TableComponent,
|
|
68
|
+
RoundNumberPipe,
|
|
69
|
+
DecimalPointsPipe
|
|
70
|
+
],
|
|
71
|
+
exports: [
|
|
72
|
+
TableComponent,
|
|
73
|
+
RoundNumberPipe,
|
|
74
|
+
DecimalPointsPipe
|
|
75
|
+
]
|
|
76
|
+
}]
|
|
77
|
+
}] });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdGFibGUvc3JjL3RhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQThCMUQsTUFBTSxPQUFPLFdBQVc7OEdBQVgsV0FBVzsrR0FBWCxXQUFXLFlBeEJwQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUVuQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFFYixjQUFjO1lBQ2QsZUFBZTtZQUNmLGlCQUFpQixhQUdqQixjQUFjO1lBQ2QsZUFBZTtZQUNmLGlCQUFpQjsrR0FHUixXQUFXLFlBeEJwQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUVuQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFFYixjQUFjOzsyRkFVTCxXQUFXO2tCQTVCdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFFbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBRWIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixpQkFBaUI7cUJBQ2xCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdW5kTnVtYmVyUGlwZSB9IGZyb20gJy4vcGlwZXMvcm91bmROdW1iZXInO1xyXG5pbXBvcnQgeyBEZWNpbWFsUG9pbnRzUGlwZSB9IGZyb20gJy4vcGlwZXMvZGVjaW1hbFBvaW50cyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG5cclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdFNvcnRNb2R1bGUsXHJcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuXHJcbiAgICBUYWJsZUNvbXBvbmVudCxcclxuICAgIFJvdW5kTnVtYmVyUGlwZSxcclxuICAgIERlY2ltYWxQb2ludHNQaXBlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBUYWJsZUNvbXBvbmVudCxcclxuICAgIFJvdW5kTnVtYmVyUGlwZSxcclxuICAgIERlY2ltYWxQb2ludHNQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVNb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './upload.api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXZlbGFuZHByaWNlLW5neC1saWItdXBsb2FkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9jbGVhdmVsYW5kcHJpY2Utbmd4LWxpYi11cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi91cGxvYWQuYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Component, inject, output } from '@angular/core';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import { MatButton } from '@angular/material/button';
|
|
4
|
+
import { UploadService } from './../../services/upload.service';
|
|
5
|
+
import { UploadDialogComponent } from './../upload-dialog/upload-dialog.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class UploadComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.#dialogService = inject(MatDialog);
|
|
10
|
+
this.uploadService = inject(UploadService);
|
|
11
|
+
this.dialogClosed = output();
|
|
12
|
+
}
|
|
13
|
+
#dialogService;
|
|
14
|
+
openUploadDialog() {
|
|
15
|
+
this.#dialogService.open(UploadDialogComponent, { width: '50%' })
|
|
16
|
+
.afterClosed().subscribe(() => this.dialogClosed.emit());
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: UploadComponent, isStandalone: true, selector: "cp-upload", outputs: { dialogClosed: "dialogClosed" }, ngImport: i0, template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadService.options.uploadButtonText }}</button>', isInline: true, dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: 'cp-upload',
|
|
25
|
+
imports: [
|
|
26
|
+
MatButton
|
|
27
|
+
],
|
|
28
|
+
standalone: true,
|
|
29
|
+
template: '<button mat-raised-button (click)="openUploadDialog()">{{ uploadService.options.uploadButtonText }}</button>'
|
|
30
|
+
}]
|
|
31
|
+
}] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBVW5GLE1BQU0sT0FBTyxlQUFlO0lBUjVCO1FBU0ksbUJBQWMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsaUJBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQztLQU0zQjtJQVRHLGNBQWMsQ0FBcUI7SUFLbkMsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDNUQsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzhHQVRRLGVBQWU7a0dBQWYsZUFBZSxnSEFGZCw4R0FBOEcsNERBSHBILFNBQVM7OzJGQUtKLGVBQWU7a0JBUjNCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDTCxTQUFTO3FCQUNaO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsOEdBQThHO2lCQUMzSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXBsb2FkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi8uLi91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjcC11cGxvYWQnLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIE1hdEJ1dHRvblxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZTogJzxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIm9wZW5VcGxvYWREaWFsb2coKVwiPnt7IHVwbG9hZFNlcnZpY2Uub3B0aW9ucy51cGxvYWRCdXR0b25UZXh0IH19PC9idXR0b24+J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkQ29tcG9uZW50IHtcclxuICAgICNkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcbiAgICB1cGxvYWRTZXJ2aWNlID0gaW5qZWN0KFVwbG9hZFNlcnZpY2UpO1xyXG5cclxuICAgIGRpYWxvZ0Nsb3NlZCA9IG91dHB1dCgpO1xyXG5cclxuICAgIG9wZW5VcGxvYWREaWFsb2coKSB7XHJcbiAgICAgICAgdGhpcy4jZGlhbG9nU2VydmljZS5vcGVuKFVwbG9hZERpYWxvZ0NvbXBvbmVudCwgeyB3aWR0aDogJzUwJScgfSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGlhbG9nQ2xvc2VkLmVtaXQoKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { AsyncPipe } from '@angular/common';
|
|
2
|
+
import { Component, inject, viewChild } from '@angular/core';
|
|
3
|
+
import { MatButton } from '@angular/material/button';
|
|
4
|
+
import { MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef } from '@angular/material/dialog';
|
|
5
|
+
import { MatList, MatListItem } from '@angular/material/list';
|
|
6
|
+
import { MatProgressBar } from '@angular/material/progress-bar';
|
|
7
|
+
import { forkJoin } from 'rxjs';
|
|
8
|
+
import { UploadService } from './../../services/upload.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class UploadDialogComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.services = {
|
|
13
|
+
dialogRef: inject((MatDialogRef)),
|
|
14
|
+
upload: inject(UploadService)
|
|
15
|
+
};
|
|
16
|
+
this.file = viewChild.required('file');
|
|
17
|
+
this.files = new Set();
|
|
18
|
+
this.canBeClosed = true;
|
|
19
|
+
this.primaryButtonText = this.services.upload.options.uploadDialogUploadButtonText;
|
|
20
|
+
this.showCancelButton = true;
|
|
21
|
+
this.uploading = false;
|
|
22
|
+
this.uploadSuccessful = false;
|
|
23
|
+
}
|
|
24
|
+
addFiles() {
|
|
25
|
+
this.file().nativeElement.click();
|
|
26
|
+
}
|
|
27
|
+
onFilesAdded() {
|
|
28
|
+
const files = this.file().nativeElement.files;
|
|
29
|
+
for (const key in files) {
|
|
30
|
+
if (!isNaN(parseInt(key))) {
|
|
31
|
+
// See if the file already exists
|
|
32
|
+
this.services.upload.exists(files[key].name)
|
|
33
|
+
.subscribe(exists => {
|
|
34
|
+
if (exists) {
|
|
35
|
+
this.existingFileConflict = files[key].name;
|
|
36
|
+
}
|
|
37
|
+
if (!exists) {
|
|
38
|
+
this.files.add(files[key]);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
closeDialog() {
|
|
45
|
+
// if everything was uploaded already, just close the dialog
|
|
46
|
+
if (this.uploadSuccessful) {
|
|
47
|
+
return this.services.dialogRef.close();
|
|
48
|
+
}
|
|
49
|
+
// set the component state to "uploading"
|
|
50
|
+
this.uploading = true;
|
|
51
|
+
// start the upload and save the progress map
|
|
52
|
+
this.progress = this.services.upload.upload(this.files);
|
|
53
|
+
// convert the progress map into an array
|
|
54
|
+
const allProgressObservables$ = [];
|
|
55
|
+
for (let key in this.progress) {
|
|
56
|
+
allProgressObservables$.push(this.progress[key].progress);
|
|
57
|
+
}
|
|
58
|
+
// Adjust the state variables
|
|
59
|
+
// The OK-button should have the text "Finish" now
|
|
60
|
+
this.primaryButtonText = this.services.upload.options.uploadDialogFinishButtonText;
|
|
61
|
+
// The dialog should not be closed while uploading
|
|
62
|
+
this.canBeClosed = false;
|
|
63
|
+
this.services.dialogRef.disableClose = true;
|
|
64
|
+
// Hide the cancel-button
|
|
65
|
+
this.showCancelButton = false;
|
|
66
|
+
// When all progress-observables are completed...
|
|
67
|
+
forkJoin(allProgressObservables$)
|
|
68
|
+
.subscribe({
|
|
69
|
+
complete: () => {
|
|
70
|
+
// ... the dialog can be closed again...
|
|
71
|
+
this.canBeClosed = true;
|
|
72
|
+
this.services.dialogRef.disableClose = false;
|
|
73
|
+
// ... the upload was successful...
|
|
74
|
+
this.uploadSuccessful = true;
|
|
75
|
+
// ... and the component is no longer uploading
|
|
76
|
+
this.uploading = false;
|
|
77
|
+
console.log('Upload complete', this.files);
|
|
78
|
+
this.services.dialogRef.close();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: UploadDialogComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, isSignal: true }], ngImport: i0, template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\r\n\r\n<div mat-dialog-title id=\"title\">\r\n <div>{{ services.upload.options.uploadDialogTitle }}</div>\r\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\r\n {{ services.upload.options.uploadDialogAddFilesButtonText }}\r\n </button>\r\n</div>\r\n\r\n@if (existingFileConflict) {\r\n <div id=\"conflict\">\r\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\r\n </div>\r\n}\r\n\r\n<mat-dialog-content>\r\n <mat-list>\r\n @for (file of files; track file) {\r\n <mat-list-item>\r\n <h4 mat-line>{{file.name}}</h4>\r\n @if (progress) {\r\n <mat-progress-bar mode=\"determinate\" [value]=\"progress[file.name].progress | async\"/>\r\n }\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions id=\"actions\">\r\n @if (showCancelButton) {\r\n <button mat-button mat-dialog-close>{{ services.upload.options.uploadDialogCancelButtonText }}</button>\r\n }\r\n @if (files.size > 0) {\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\r\n }\r\n</mat-dialog-actions>\r\n", styles: ["#title{display:flex;justify-content:space-between}#actions{display:flex;justify-content:flex-end}#conflict{font-size:.8em;color:red;margin-top:.5em}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
|
|
84
|
+
}
|
|
85
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UploadDialogComponent, decorators: [{
|
|
86
|
+
type: Component,
|
|
87
|
+
args: [{ imports: [
|
|
88
|
+
AsyncPipe,
|
|
89
|
+
MatButton,
|
|
90
|
+
MatDialogActions,
|
|
91
|
+
MatDialogClose,
|
|
92
|
+
MatDialogContent,
|
|
93
|
+
MatList,
|
|
94
|
+
MatListItem,
|
|
95
|
+
MatProgressBar
|
|
96
|
+
], standalone: true, template: "<input type=\"file\" #file style=\"display: none\" (change)=\"onFilesAdded()\" multiple />\r\n\r\n<div mat-dialog-title id=\"title\">\r\n <div>{{ services.upload.options.uploadDialogTitle }}</div>\r\n <button [disabled]=\"uploading || uploadSuccessful\" mat-raised-button color=\"primary\" class=\"add-files-btn\" (click)=\"addFiles()\">\r\n {{ services.upload.options.uploadDialogAddFilesButtonText }}\r\n </button>\r\n</div>\r\n\r\n@if (existingFileConflict) {\r\n <div id=\"conflict\">\r\n {{ existingFileConflict }} already exists on the server and cannot be overwritten\r\n </div>\r\n}\r\n\r\n<mat-dialog-content>\r\n <mat-list>\r\n @for (file of files; track file) {\r\n <mat-list-item>\r\n <h4 mat-line>{{file.name}}</h4>\r\n @if (progress) {\r\n <mat-progress-bar mode=\"determinate\" [value]=\"progress[file.name].progress | async\"/>\r\n }\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions id=\"actions\">\r\n @if (showCancelButton) {\r\n <button mat-button mat-dialog-close>{{ services.upload.options.uploadDialogCancelButtonText }}</button>\r\n }\r\n @if (files.size > 0) {\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!canBeClosed\" (click)=\"closeDialog()\">{{ primaryButtonText }}</button>\r\n }\r\n</mat-dialog-actions>\r\n", styles: ["#title{display:flex;justify-content:space-between}#actions{display:flex;justify-content:flex-end}#conflict{font-size:.8em;color:red;margin-top:.5em}\n"] }]
|
|
97
|
+
}] });
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL2NvbXBvbmVudHMvdXBsb2FkLWRpYWxvZy91cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvY29tcG9uZW50cy91cGxvYWQtZGlhbG9nL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQWMsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFpQmhFLE1BQU0sT0FBTyxxQkFBcUI7SUFmbEM7UUFnQkUsYUFBUSxHQUFHO1lBQ1QsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBLFlBQW1DLENBQUEsQ0FBQztZQUN0RCxNQUFNLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQztTQUM5QixDQUFDO1FBRUYsU0FBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsTUFBTSxDQUFDLENBQUM7UUFFOUMsVUFBSyxHQUFjLElBQUksR0FBRyxFQUFFLENBQUM7UUFLN0IsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDO1FBQzlFLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQTRFMUI7SUExRUMsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLEtBQUssR0FBNEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDdkUsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLGlDQUFpQztnQkFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7cUJBQ3pDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDbEIsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDWCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDOUMsQ0FBQztvQkFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzdCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsNERBQTREO1FBQzVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEQseUNBQXlDO1FBQ3pDLE1BQU0sdUJBQXVCLEdBQXlCLEVBQUUsQ0FBQztRQUV6RCxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5Qix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsNkJBQTZCO1FBRTdCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDO1FBRW5GLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRTVDLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLGlEQUFpRDtRQUNqRCxRQUFRLENBQUMsdUJBQXVCLENBQUM7YUFDaEMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYix3Q0FBd0M7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUU3QyxtQ0FBbUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBRTdCLCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1RlUscUJBQXFCO2tHQUFyQixxQkFBcUIsc0xDekJsQywyMUNBb0NBLDJNRHZCUSxTQUFTLDhDQUNULFNBQVMsaUxBQ1QsZ0JBQWdCLDRIQUNoQixjQUFjLHFMQUNkLGdCQUFnQix5R0FDaEIsT0FBTyw0RUFDUCxXQUFXLHFKQUNYLGNBQWM7OzJGQUtULHFCQUFxQjtrQkFmakMsU0FBUzs4QkFFRzt3QkFDTCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGNBQWM7cUJBQ2pCLGNBQ1csSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdExpc3QsIE1hdExpc3RJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWwvdXBsb2FkLXN0YXR1cyc7XHJcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3VwbG9hZC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEFzeW5jUGlwZSxcclxuICAgICAgICBNYXRCdXR0b24sXHJcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcclxuICAgICAgICBNYXREaWFsb2dDbG9zZSxcclxuICAgICAgICBNYXREaWFsb2dDb250ZW50LFxyXG4gICAgICAgIE1hdExpc3QsXHJcbiAgICAgICAgTWF0TGlzdEl0ZW0sXHJcbiAgICAgICAgTWF0UHJvZ3Jlc3NCYXJcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgc3R5bGVVcmw6ICcuL3VwbG9hZC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWREaWFsb2dDb21wb25lbnQge1xyXG4gIHNlcnZpY2VzID0ge1xyXG4gICAgZGlhbG9nUmVmOiBpbmplY3QoTWF0RGlhbG9nUmVmPFVwbG9hZERpYWxvZ0NvbXBvbmVudD4pLFxyXG4gICAgdXBsb2FkOiBpbmplY3QoVXBsb2FkU2VydmljZSlcclxuICB9O1xyXG5cclxuICBmaWxlID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdmaWxlJyk7XHJcblxyXG4gIGZpbGVzOiBTZXQ8RmlsZT4gPSBuZXcgU2V0KCk7XHJcbiAgZXhpc3RpbmdGaWxlQ29uZmxpY3Q/OiBzdHJpbmc7XHJcblxyXG4gIC8vIFN0YXRlXHJcbiAgcHJvZ3Jlc3M/OiBVcGxvYWRTdGF0dXM7XHJcbiAgY2FuQmVDbG9zZWQgPSB0cnVlO1xyXG4gIHByaW1hcnlCdXR0b25UZXh0ID0gdGhpcy5zZXJ2aWNlcy51cGxvYWQub3B0aW9ucy51cGxvYWREaWFsb2dVcGxvYWRCdXR0b25UZXh0O1xyXG4gIHNob3dDYW5jZWxCdXR0b24gPSB0cnVlO1xyXG4gIHVwbG9hZGluZyA9IGZhbHNlO1xyXG4gIHVwbG9hZFN1Y2Nlc3NmdWwgPSBmYWxzZTtcclxuXHJcbiAgYWRkRmlsZXMoKSB7XHJcbiAgICB0aGlzLmZpbGUoKS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVzQWRkZWQoKSB7XHJcbiAgICBjb25zdCBmaWxlczogeyBba2V5OiBzdHJpbmddOiBGaWxlIH0gPSB0aGlzLmZpbGUoKS5uYXRpdmVFbGVtZW50LmZpbGVzO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZmlsZXMpIHtcclxuICAgICAgaWYgKCFpc05hTihwYXJzZUludChrZXkpKSkge1xyXG4gICAgICAgIC8vIFNlZSBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0c1xyXG4gICAgICAgIHRoaXMuc2VydmljZXMudXBsb2FkLmV4aXN0cyhmaWxlc1trZXldLm5hbWUpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKGV4aXN0cyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4aXN0aW5nRmlsZUNvbmZsaWN0ID0gZmlsZXNba2V5XS5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMuYWRkKGZpbGVzW2tleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICAvLyBpZiBldmVyeXRoaW5nIHdhcyB1cGxvYWRlZCBhbHJlYWR5LCBqdXN0IGNsb3NlIHRoZSBkaWFsb2dcclxuICAgIGlmICh0aGlzLnVwbG9hZFN1Y2Nlc3NmdWwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHRoZSBjb21wb25lbnQgc3RhdGUgdG8gXCJ1cGxvYWRpbmdcIlxyXG4gICAgdGhpcy51cGxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIHN0YXJ0IHRoZSB1cGxvYWQgYW5kIHNhdmUgdGhlIHByb2dyZXNzIG1hcFxyXG4gICAgdGhpcy5wcm9ncmVzcyA9IHRoaXMuc2VydmljZXMudXBsb2FkLnVwbG9hZCh0aGlzLmZpbGVzKTtcclxuXHJcbiAgICAvLyBjb252ZXJ0IHRoZSBwcm9ncmVzcyBtYXAgaW50byBhbiBhcnJheVxyXG4gICAgY29uc3QgYWxsUHJvZ3Jlc3NPYnNlcnZhYmxlcyQ6IE9ic2VydmFibGU8bnVtYmVyPltdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMucHJvZ3Jlc3MpIHtcclxuICAgICAgYWxsUHJvZ3Jlc3NPYnNlcnZhYmxlcyQucHVzaCh0aGlzLnByb2dyZXNzW2tleV0ucHJvZ3Jlc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkanVzdCB0aGUgc3RhdGUgdmFyaWFibGVzXHJcblxyXG4gICAgLy8gVGhlIE9LLWJ1dHRvbiBzaG91bGQgaGF2ZSB0aGUgdGV4dCBcIkZpbmlzaFwiIG5vd1xyXG4gICAgdGhpcy5wcmltYXJ5QnV0dG9uVGV4dCA9IHRoaXMuc2VydmljZXMudXBsb2FkLm9wdGlvbnMudXBsb2FkRGlhbG9nRmluaXNoQnV0dG9uVGV4dDtcclxuXHJcbiAgICAvLyBUaGUgZGlhbG9nIHNob3VsZCBub3QgYmUgY2xvc2VkIHdoaWxlIHVwbG9hZGluZ1xyXG4gICAgdGhpcy5jYW5CZUNsb3NlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZXJ2aWNlcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSBjYW5jZWwtYnV0dG9uXHJcbiAgICB0aGlzLnNob3dDYW5jZWxCdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBXaGVuIGFsbCBwcm9ncmVzcy1vYnNlcnZhYmxlcyBhcmUgY29tcGxldGVkLi4uXHJcbiAgICBmb3JrSm9pbihhbGxQcm9ncmVzc09ic2VydmFibGVzJClcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIC8vIC4uLiB0aGUgZGlhbG9nIGNhbiBiZSBjbG9zZWQgYWdhaW4uLi5cclxuICAgICAgICB0aGlzLmNhbkJlQ2xvc2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlcnZpY2VzLmRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy8gLi4uIHRoZSB1cGxvYWQgd2FzIHN1Y2Nlc3NmdWwuLi5cclxuICAgICAgICB0aGlzLnVwbG9hZFN1Y2Nlc3NmdWwgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyAuLi4gYW5kIHRoZSBjb21wb25lbnQgaXMgbm8gbG9uZ2VyIHVwbG9hZGluZ1xyXG4gICAgICAgIHRoaXMudXBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdVcGxvYWQgY29tcGxldGUnLCB0aGlzLmZpbGVzKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxpbnB1dCB0eXBlPVwiZmlsZVwiICNmaWxlIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIChjaGFuZ2UpPVwib25GaWxlc0FkZGVkKClcIiBtdWx0aXBsZSAvPlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLXRpdGxlIGlkPVwidGl0bGVcIj5cclxuICA8ZGl2Pnt7IHNlcnZpY2VzLnVwbG9hZC5vcHRpb25zLnVwbG9hZERpYWxvZ1RpdGxlIH19PC9kaXY+XHJcbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwidXBsb2FkaW5nIHx8IHVwbG9hZFN1Y2Nlc3NmdWxcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImFkZC1maWxlcy1idG5cIiAoY2xpY2spPVwiYWRkRmlsZXMoKVwiPlxyXG4gICAge3sgc2VydmljZXMudXBsb2FkLm9wdGlvbnMudXBsb2FkRGlhbG9nQWRkRmlsZXNCdXR0b25UZXh0IH19XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG5cclxuQGlmIChleGlzdGluZ0ZpbGVDb25mbGljdCkge1xyXG4gIDxkaXYgaWQ9XCJjb25mbGljdFwiPlxyXG4gICAge3sgZXhpc3RpbmdGaWxlQ29uZmxpY3QgfX0gYWxyZWFkeSBleGlzdHMgb24gdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIG92ZXJ3cml0dGVuXHJcbiAgPC9kaXY+XHJcbn1cclxuXHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPG1hdC1saXN0PlxyXG4gICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZSkge1xyXG4gICAgICA8bWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8aDQgbWF0LWxpbmU+e3tmaWxlLm5hbWV9fTwvaDQ+XHJcbiAgICAgICAgQGlmIChwcm9ncmVzcykge1xyXG4gICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cInByb2dyZXNzW2ZpbGUubmFtZV0ucHJvZ3Jlc3MgfCBhc3luY1wiLz5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgIH1cclxuICA8L21hdC1saXN0PlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbjxtYXQtZGlhbG9nLWFjdGlvbnMgaWQ9XCJhY3Rpb25zXCI+XHJcbiAgQGlmIChzaG93Q2FuY2VsQnV0dG9uKSB7XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT57eyBzZXJ2aWNlcy51cGxvYWQub3B0aW9ucy51cGxvYWREaWFsb2dDYW5jZWxCdXR0b25UZXh0IH19PC9idXR0b24+XHJcbiAgfVxyXG4gIEBpZiAoZmlsZXMuc2l6ZSA+IDApIHtcclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFjYW5CZUNsb3NlZFwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+e3sgcHJpbWFyeUJ1dHRvblRleHQgfX08L2J1dHRvbj5cclxuICB9XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZmlsZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xlYXZlbGFuZHByaWNlL25neC1saWIvdXBsb2FkL3NyYy9tb2RlbC9kYXRhYmFzZS1maWxlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0aW1lc3RhbXA6IHN0cmluZzsgLy9EYXRlO1xyXG4gICAgZGJBcHBJZDogc3RyaW5nO1xyXG4gICAgZXh0ZXJuYWxSZWZlcmVuY2VJZD86IG51bWJlcjtcclxuICAgIGNvbW1lbnQ/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtcmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvZmlsZS11cGxvYWQtcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlVXBsb2FkUmVxdWVzdCB7XHJcbiAgICBhcHBJZD86IHN0cmluZztcclxuICAgIG5hbWU/OiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbFJlZmVyZW5jZUlkPzogbnVtYmVyO1xyXG4gICAgZm9sZGVyPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXN5c3RlbS1maWxlLWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGVhdmVsYW5kcHJpY2Uvbmd4LWxpYi91cGxvYWQvc3JjL21vZGVsL2ZpbGVzeXN0ZW0tZmlsZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbGVzeXN0ZW1GaWxlSW5mbyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBhdHRyaWJ1dGVzPzogbnVtYmVyO1xyXG4gICAgY3JlYXRpb25UaW1lOiBzdHJpbmc7IC8vRGF0ZTtcclxuICAgIGRpcmVjdG9yeTogc3RyaW5nO1xyXG4gICAgZXh0ZW5zaW9uOiBzdHJpbmc7XHJcbiAgICBmdWxsbmFtZTogc3RyaW5nO1xyXG4gICAgbGFzdEFjY2Vzc1RpbWU6IHN0cmluZzsgLy9EYXRlO1xyXG4gICAgbGFzdFdyaXRlVGltZTogc3RyaW5nOyAvL0RhdGU7XHJcbiAgICByZWFkT25seTogYm9vbGVhbjtcclxuICAgIHNpemU6IG51bWJlcjtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
;
|
|
2
|
+
;
|
|
3
|
+
;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNnLWZpbGUtY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvbXNnLWZpbGUtY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQyxDQUFDO0FBSUQsQ0FBQztBQWFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgTXNnRmlsZUNvbnRhY3Qge1xyXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICByYXc6IHN0cmluZztcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXNnRmlsZVJlY2lwaWVudCBleHRlbmRzIE1zZ0ZpbGVDb250YWN0IHtcclxuICAgIHR5cGU6IHN0cmluZztcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXNnRmlsZUNvbnRlbnQge1xyXG4gICAgYXR0YWNobWVudHM6IHN0cmluZ1tdO1xyXG4gICAgYm9keUh0bWw6IHN0cmluZztcclxuICAgIGJvZHlUZXh0OiBzdHJpbmc7XHJcbiAgICBjcmVhdGlvblRpbWU6IHN0cmluZztcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBpbXBvcnRhbmNlOiBzdHJpbmc7XHJcbiAgICByZWNpcGllbnRzOiBNc2dGaWxlUmVjaXBpZW50W11cclxuICAgIHNlbmRlcjogTXNnRmlsZUNvbnRhY3Q7XHJcbiAgICBzZW50T246IHN0cmluZztcclxuICAgIHN1YmplY3Q6IHN0cmluZztcclxufTsiXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const UploadServiceOptionsToken = new InjectionToken('');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXNlcnZpY2Utb3B0aW9ucy10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvdXBsb2FkLXNlcnZpY2Utb3B0aW9ucy10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUF1QixFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVXBsb2FkU2VydmljZU9wdGlvbnMgfSBmcm9tIFwiLi91cGxvYWQtc2VydmljZS1vcHRpb25zXCI7XHJcblxyXG5leHBvcnQgY29uc3QgVXBsb2FkU2VydmljZU9wdGlvbnNUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVcGxvYWRTZXJ2aWNlT3B0aW9ucz4oJycpOyJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
;
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXNlcnZpY2Utb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvdXBsb2FkLXNlcnZpY2Utb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmd4TGliU2VydmljZU9wdGlvbnMgfSBmcm9tIFwiQGNsZWF2ZWxhbmRwcmljZS9uZ3gtbGliXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFNlcnZpY2VPcHRpb25zIGV4dGVuZHMgTmd4TGliU2VydmljZU9wdGlvbnMge1xyXG4gICAgZGF0YWJhc2VFbmRwb2ludD86IHN0cmluZztcclxuICAgIHVwbG9hZFBhdGg/OiBzdHJpbmc7XHJcbiAgICBjb21tZW50Pzogc3RyaW5nO1xyXG4gICAgZGJBcHBJZD86IHN0cmluZztcclxuICAgIGV4dGVybmFsUmVmZXJlbmNlSWQ/OiBzdHJpbmc7XHJcbiAgICAvLyBVSSBjb25maWd1cmF0aW9uXHJcbiAgICB1cGxvYWREaWFsb2dUaXRsZT86IHN0cmluZztcclxuICAgIHVwbG9hZEJ1dHRvblRleHQ/OiBzdHJpbmc7XHJcbiAgICB1cGxvYWREaWFsb2dDYW5jZWxCdXR0b25UZXh0Pzogc3RyaW5nO1xyXG4gICAgdXBsb2FkRGlhbG9nRmluaXNoQnV0dG9uVGV4dD86IHN0cmluZztcclxuICAgIHVwbG9hZERpYWxvZ1VwbG9hZEJ1dHRvblRleHQ/OiBzdHJpbmc7XHJcbiAgICB1cGxvYWREaWFsb2dBZGRGaWxlc0J1dHRvblRleHQ/OiBzdHJpbmc7XHJcbn07Il19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsZWF2ZWxhbmRwcmljZS9uZ3gtbGliL3VwbG9hZC9zcmMvbW9kZWwvdXBsb2FkLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFN0YXR1cyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgICAgcHJvZ3Jlc3M6IE9ic2VydmFibGU8bnVtYmVyPlxyXG4gICAgfVxyXG59Il19
|