@sumaris-net/ngx-components 1.10.9 → 1.11.0-rc3
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/bundles/sumaris-net.ngx-components.umd.js +5489 -4218
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +10 -0
- package/esm2015/public_api.js +36 -10
- package/esm2015/src/app/core/core.module.js +13 -5
- package/esm2015/src/app/core/core.testing.module.js +51 -0
- package/esm2015/src/app/core/form/entity-editor.class.js +1 -1
- package/esm2015/src/app/core/form/form.utils.js +58 -393
- package/esm2015/src/app/core/services/validator/base.validator.class.js +1 -1
- package/esm2015/src/app/core/table/table.class.js +2 -1
- package/esm2015/src/app/core/table/testing/table.testing.js +246 -0
- package/esm2015/src/app/core/table/testing/table.testing.module.js +26 -0
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.js +37 -0
- package/esm2015/src/app/core/text-popover/testing/text-popover.testing.module.js +33 -0
- package/esm2015/src/app/core/text-popover/text-form.component.js +72 -0
- package/esm2015/src/app/core/text-popover/text-popover.component.js +90 -0
- package/esm2015/src/app/shared/directives/directives.module.js +6 -3
- package/esm2015/src/app/shared/directives/drag-and-drop.directive.js +43 -0
- package/esm2015/src/app/shared/forms.js +339 -0
- package/esm2015/src/app/shared/material/chips/chips.module.js +3 -3
- package/esm2015/src/app/shared/material/material.module.js +3 -3
- package/esm2015/src/app/shared/material/material.testing.module.js +102 -0
- package/esm2015/src/app/shared/material/numpad/testing/numpad.test.js +44 -0
- package/esm2015/src/app/shared/shared.module.js +13 -3
- package/esm2015/src/app/shared/shared.testing.module.js +13 -5
- package/esm2015/src/app/shared/testing/tests.page.js +34 -0
- package/esm2015/src/app/shared/toast/toast.testing.js +1 -1
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.js +69 -0
- package/esm2015/src/app/shared/upload-file/testing/upload-file.testing.module.js +33 -0
- package/esm2015/src/app/shared/upload-file/upload-file-popover.component.js +100 -0
- package/esm2015/src/app/shared/upload-file/upload-file.component.js +189 -0
- package/esm2015/src/app/shared/upload-file/upload-file.model.js +3 -0
- package/esm2015/src/app/shared/validator/form-error-adapter.class.js +1 -1
- package/esm2015/sumaris-net.ngx-components.js +12 -13
- package/fesm2015/sumaris-net.ngx-components.js +3755 -2696
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +3 -3
- package/public_api.d.ts +26 -8
- package/src/app/core/core.testing.module.d.ts +4 -0
- package/src/app/core/form/entity-editor.class.d.ts +1 -1
- package/src/app/core/form/form.utils.d.ts +39 -114
- package/src/app/core/services/validator/base.validator.class.d.ts +1 -1
- package/src/app/core/table/testing/table.testing.d.ts +51 -0
- package/src/app/core/table/testing/table.testing.module.d.ts +2 -0
- package/src/app/core/text-popover/testing/text-popover.testing.d.ts +7 -0
- package/src/app/core/text-popover/testing/text-popover.testing.module.d.ts +2 -0
- package/src/app/core/text-popover/text-form.component.d.ts +28 -0
- package/src/app/core/text-popover/text-popover.component.d.ts +37 -0
- package/src/app/shared/directives/drag-and-drop.directive.d.ts +14 -0
- package/src/app/shared/forms.d.ts +78 -0
- package/src/app/shared/material/chips/chips.module.d.ts +1 -1
- package/src/app/shared/material/material.testing.module.d.ts +4 -0
- package/src/app/shared/material/numpad/testing/numpad.test.d.ts +10 -0
- package/src/app/shared/shared.testing.module.d.ts +1 -1
- package/src/app/shared/{material/testing/material.testing.page.d.ts → testing/tests.page.d.ts} +3 -2
- package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +15 -0
- package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +2 -0
- package/src/app/shared/upload-file/upload-file-popover.component.d.ts +36 -0
- package/src/app/shared/upload-file/upload-file.component.d.ts +45 -0
- package/src/app/shared/upload-file/upload-file.model.d.ts +10 -0
- package/src/app/shared/validator/form-error-adapter.class.d.ts +1 -1
- package/src/assets/i18n/en-US.json +11 -1
- package/src/assets/i18n/en.json +11 -1
- package/src/assets/i18n/fr.json +11 -1
- package/src/theme/_ngx-components.scss +8 -0
- package/sumaris-net.ngx-components.d.ts +11 -12
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/esm2015/src/app/shared/material/testing/material.testing.module.js +0 -92
- package/esm2015/src/app/shared/material/testing/material.testing.page.js +0 -34
- package/src/app/shared/material/testing/material.testing.module.d.ts +0 -2
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { AutocompleteTestPage } from './autocomplete/testing/autocomplete.test';
|
|
4
|
+
import { LatLongTestPage } from './latlong/testing/latlong.test';
|
|
5
|
+
import { SharedTestsPage } from '../testing/tests.page';
|
|
6
|
+
import { SharedMaterialModule } from './material.module';
|
|
7
|
+
import { IonicModule } from '@ionic/angular';
|
|
8
|
+
import { CommonModule } from '@angular/common';
|
|
9
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
10
|
+
import { SwipeTestPage } from './swipe/testing/swipe.test';
|
|
11
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
12
|
+
import { DateTimeTestPage } from './datetime/testing/mat-date-time.test';
|
|
13
|
+
import { ChipsTestPage } from './chips/testing/chips.test';
|
|
14
|
+
import { MatBadgeIconTestPage } from './badge/badge-icon.test';
|
|
15
|
+
import { NumpadTestPage } from './numpad/testing/numpad.test';
|
|
16
|
+
export const SHARED_MATERIAL_TESTING_PAGES = [
|
|
17
|
+
{ label: 'Shared Material components', divider: true },
|
|
18
|
+
{ label: 'Date/Time field', page: '/testing/shared/datetime' },
|
|
19
|
+
{ label: 'Autocomplete field', page: '/testing/shared/autocomplete' },
|
|
20
|
+
{ label: 'Lat/Long field', page: '/testing/shared/latlong' },
|
|
21
|
+
{ label: 'Numeric pad component', page: '/testing/shared/numpad' },
|
|
22
|
+
{ label: 'Swipe component', page: '/testing/shared/swipe' },
|
|
23
|
+
{ label: 'Chips component', page: '/testing/shared/chips' },
|
|
24
|
+
{ label: 'Shared directives', divider: true },
|
|
25
|
+
{ label: 'Badge icon directive', page: '/testing/shared/badge-icon' }
|
|
26
|
+
];
|
|
27
|
+
const routes = [
|
|
28
|
+
{
|
|
29
|
+
path: '',
|
|
30
|
+
pathMatch: 'full',
|
|
31
|
+
component: SharedTestsPage
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
path: 'autocomplete',
|
|
35
|
+
pathMatch: 'full',
|
|
36
|
+
component: AutocompleteTestPage
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
path: 'datetime',
|
|
40
|
+
pathMatch: 'full',
|
|
41
|
+
component: DateTimeTestPage
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
path: 'latlong',
|
|
45
|
+
pathMatch: 'full',
|
|
46
|
+
component: LatLongTestPage
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
path: 'numpad',
|
|
50
|
+
pathMatch: 'full',
|
|
51
|
+
component: NumpadTestPage
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
path: 'swipe',
|
|
55
|
+
pathMatch: 'full',
|
|
56
|
+
component: SwipeTestPage
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
path: 'chips',
|
|
60
|
+
pathMatch: 'full',
|
|
61
|
+
component: ChipsTestPage
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
path: 'badge-icon',
|
|
65
|
+
pathMatch: 'full',
|
|
66
|
+
component: MatBadgeIconTestPage
|
|
67
|
+
}
|
|
68
|
+
];
|
|
69
|
+
export class MaterialTestingModule {
|
|
70
|
+
}
|
|
71
|
+
MaterialTestingModule.decorators = [
|
|
72
|
+
{ type: NgModule, args: [{
|
|
73
|
+
imports: [
|
|
74
|
+
CommonModule,
|
|
75
|
+
IonicModule,
|
|
76
|
+
ReactiveFormsModule,
|
|
77
|
+
SharedMaterialModule,
|
|
78
|
+
TranslateModule.forChild(),
|
|
79
|
+
RouterModule.forChild(routes)
|
|
80
|
+
],
|
|
81
|
+
declarations: [
|
|
82
|
+
DateTimeTestPage,
|
|
83
|
+
AutocompleteTestPage,
|
|
84
|
+
LatLongTestPage,
|
|
85
|
+
NumpadTestPage,
|
|
86
|
+
SwipeTestPage,
|
|
87
|
+
ChipsTestPage,
|
|
88
|
+
MatBadgeIconTestPage
|
|
89
|
+
],
|
|
90
|
+
exports: [
|
|
91
|
+
SharedMaterialModule,
|
|
92
|
+
RouterModule,
|
|
93
|
+
DateTimeTestPage,
|
|
94
|
+
AutocompleteTestPage,
|
|
95
|
+
LatLongTestPage,
|
|
96
|
+
NumpadTestPage,
|
|
97
|
+
SwipeTestPage,
|
|
98
|
+
ChipsTestPage
|
|
99
|
+
]
|
|
100
|
+
},] }
|
|
101
|
+
];
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwudGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC50ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFDLGVBQWUsRUFBYyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFrQjtJQUMxRCxFQUFDLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDO0lBQ3BELEVBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBQztJQUM1RCxFQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsOEJBQThCLEVBQUM7SUFDbkUsRUFBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFDO0lBQzFELEVBQUMsS0FBSyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBQztJQUVoRSxFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUM7SUFDekQsRUFBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFDO0lBR3pELEVBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUM7SUFDM0MsRUFBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFDO0NBQ3BFLENBQUM7QUFFRixNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGVBQWU7S0FDM0I7SUFDRDtRQUNFLElBQUksRUFBRSxjQUFjO1FBQ3BCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFNBQVMsRUFBRSxvQkFBb0I7S0FDaEM7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGVBQWU7S0FDM0I7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGFBQWE7S0FDekI7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLGFBQWE7S0FDekI7SUFDRDtRQUNFLElBQUksRUFBRSxZQUFZO1FBQ2xCLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFNBQVMsRUFBRSxvQkFBb0I7S0FDaEM7Q0FDRixDQUFDO0FBK0JGLE1BQU0sT0FBTyxxQkFBcUI7OztZQTdCakMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsbUJBQW1CO29CQUNuQixvQkFBb0I7b0JBQ3BCLGVBQWUsQ0FBQyxRQUFRLEVBQUU7b0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2lCQUM5QjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osZ0JBQWdCO29CQUNoQixvQkFBb0I7b0JBQ3BCLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxhQUFhO29CQUNiLGFBQWE7b0JBQ2Isb0JBQW9CO2lCQUNyQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1Asb0JBQW9CO29CQUNwQixZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsb0JBQW9CO29CQUNwQixlQUFlO29CQUNmLGNBQWM7b0JBQ2QsYUFBYTtvQkFDYixhQUFhO2lCQUNkO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyTW9kdWxlLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0F1dG9jb21wbGV0ZVRlc3RQYWdlfSBmcm9tICcuL2F1dG9jb21wbGV0ZS90ZXN0aW5nL2F1dG9jb21wbGV0ZS50ZXN0JztcbmltcG9ydCB7TGF0TG9uZ1Rlc3RQYWdlfSBmcm9tICcuL2xhdGxvbmcvdGVzdGluZy9sYXRsb25nLnRlc3QnO1xuaW1wb3J0IHtTaGFyZWRUZXN0c1BhZ2UsIFRlc3RpbmdQYWdlfSBmcm9tICcuLi90ZXN0aW5nL3Rlc3RzLnBhZ2UnO1xuaW1wb3J0IHtTaGFyZWRNYXRlcmlhbE1vZHVsZX0gZnJvbSAnLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHtJb25pY01vZHVsZX0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7U3dpcGVUZXN0UGFnZX0gZnJvbSAnLi9zd2lwZS90ZXN0aW5nL3N3aXBlLnRlc3QnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtEYXRlVGltZVRlc3RQYWdlfSBmcm9tICcuL2RhdGV0aW1lL3Rlc3RpbmcvbWF0LWRhdGUtdGltZS50ZXN0JztcbmltcG9ydCB7Q2hpcHNUZXN0UGFnZX0gZnJvbSAnLi9jaGlwcy90ZXN0aW5nL2NoaXBzLnRlc3QnO1xuaW1wb3J0IHtNYXRCYWRnZUljb25UZXN0UGFnZX0gZnJvbSAnLi9iYWRnZS9iYWRnZS1pY29uLnRlc3QnO1xuaW1wb3J0IHtOdW1wYWRUZXN0UGFnZX0gZnJvbSAnLi9udW1wYWQvdGVzdGluZy9udW1wYWQudGVzdCc7XG5cbmV4cG9ydCBjb25zdCBTSEFSRURfTUFURVJJQUxfVEVTVElOR19QQUdFUzogVGVzdGluZ1BhZ2VbXSA9IFtcbiAge2xhYmVsOiAnU2hhcmVkIE1hdGVyaWFsIGNvbXBvbmVudHMnLCBkaXZpZGVyOiB0cnVlfSxcbiAge2xhYmVsOiAnRGF0ZS9UaW1lIGZpZWxkJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9kYXRldGltZSd9LFxuICB7bGFiZWw6ICdBdXRvY29tcGxldGUgZmllbGQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2F1dG9jb21wbGV0ZSd9LFxuICB7bGFiZWw6ICdMYXQvTG9uZyBmaWVsZCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvbGF0bG9uZyd9LFxuICB7bGFiZWw6ICdOdW1lcmljIHBhZCBjb21wb25lbnQnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL251bXBhZCd9LFxuXG4gIHtsYWJlbDogJ1N3aXBlIGNvbXBvbmVudCcsIHBhZ2U6ICcvdGVzdGluZy9zaGFyZWQvc3dpcGUnfSxcbiAge2xhYmVsOiAnQ2hpcHMgY29tcG9uZW50JywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC9jaGlwcyd9LFxuXG5cbiAge2xhYmVsOiAnU2hhcmVkIGRpcmVjdGl2ZXMnLCBkaXZpZGVyOiB0cnVlfSxcbiAge2xhYmVsOiAnQmFkZ2UgaWNvbiBkaXJlY3RpdmUnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL2JhZGdlLWljb24nfVxuXTtcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFNoYXJlZFRlc3RzUGFnZVxuICB9LFxuICB7XG4gICAgcGF0aDogJ2F1dG9jb21wbGV0ZScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBBdXRvY29tcGxldGVUZXN0UGFnZVxuICB9LFxuICB7XG4gICAgcGF0aDogJ2RhdGV0aW1lJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IERhdGVUaW1lVGVzdFBhZ2VcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdsYXRsb25nJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IExhdExvbmdUZXN0UGFnZVxuICB9LFxuICB7XG4gICAgcGF0aDogJ251bXBhZCcsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBOdW1wYWRUZXN0UGFnZVxuICB9LFxuICB7XG4gICAgcGF0aDogJ3N3aXBlJyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFN3aXBlVGVzdFBhZ2VcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdjaGlwcycsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBDaGlwc1Rlc3RQYWdlXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnYmFkZ2UtaWNvbicsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBNYXRCYWRnZUljb25UZXN0UGFnZVxuICB9XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbmljTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgU2hhcmVkTWF0ZXJpYWxNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKCksXG4gICAgUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcylcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGF0ZVRpbWVUZXN0UGFnZSxcbiAgICBBdXRvY29tcGxldGVUZXN0UGFnZSxcbiAgICBMYXRMb25nVGVzdFBhZ2UsXG4gICAgTnVtcGFkVGVzdFBhZ2UsXG4gICAgU3dpcGVUZXN0UGFnZSxcbiAgICBDaGlwc1Rlc3RQYWdlLFxuICAgIE1hdEJhZGdlSWNvblRlc3RQYWdlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRGF0ZVRpbWVUZXN0UGFnZSxcbiAgICBBdXRvY29tcGxldGVUZXN0UGFnZSxcbiAgICBMYXRMb25nVGVzdFBhZ2UsXG4gICAgTnVtcGFkVGVzdFBhZ2UsXG4gICAgU3dpcGVUZXN0UGFnZSxcbiAgICBDaGlwc1Rlc3RQYWdlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxUZXN0aW5nTW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { FormBuilder, Validators } from '@angular/forms';
|
|
4
|
+
import { SharedValidators } from '../../../validator/validators';
|
|
5
|
+
export class NumpadTestPage {
|
|
6
|
+
constructor(formBuilder) {
|
|
7
|
+
this.formBuilder = formBuilder;
|
|
8
|
+
this.form = formBuilder.group({
|
|
9
|
+
empty: [null, Validators.required],
|
|
10
|
+
integer: [null, Validators.compose([Validators.required, SharedValidators.integer])],
|
|
11
|
+
disable: [null, Validators.required],
|
|
12
|
+
datetime: [null]
|
|
13
|
+
});
|
|
14
|
+
this.form.get('disable').disable();
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
this.loadData();
|
|
18
|
+
//setTimeout(() => this.loadData(), 1500);
|
|
19
|
+
}
|
|
20
|
+
// Load the form with data
|
|
21
|
+
loadData() {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
const data = {
|
|
24
|
+
empty: null,
|
|
25
|
+
integer: 99,
|
|
26
|
+
disable: -111.11
|
|
27
|
+
};
|
|
28
|
+
this.form.patchValue(data);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
doSubmit(event) {
|
|
32
|
+
console.debug('Validate form: ', this.form.value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
NumpadTestPage.decorators = [
|
|
36
|
+
{ type: Component, args: [{
|
|
37
|
+
selector: 'app-numpad-test',
|
|
38
|
+
template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Numeric pad test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <h1>Numpad test page:</h1>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Decimal field, readonly\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"text\" formControlName=\"empty\" placeholder=\"Empty decimal field\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadDecimal\"\n readonly>\n <mat-numpad [decimal]=\"true\" #numpadDecimal></mat-numpad>\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- filled -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Integer field\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"number\" formControlName=\"integer\" placeholder=\"Filled integer field\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadInteger\">\n <mat-numpad #numpadInteger [decimal]=\"false\"></mat-numpad>\n\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- append to input -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Attach to input, readonly\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"text\" formControlName=\"integer\" placeholder=\"A number\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadAppendToInput\"\n readonly>\n <mat-numpad #numpadAppendToInput [appendToInput]=\"true\"></mat-numpad>\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"number\" formControlName=\"disable\" placeholder=\"Disabled field\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadDisabled\">\n <mat-numpad #numpadDisabled></mat-numpad>\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n <!-- Other field (for comparision) -->\n <ion-row><ion-col><ion-text><h4>Other field type (for style comparision)</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Mat date time\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"datetime\" placeholder=\"Date/Time field (desktop)\">\n </mat-date-time-field>\n\n <mat-date-time-field formControlName=\"datetime\"\n placeholder=\"Date/Time field (mobile)\"\n mobile=\"true\">\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </form>\n\n</ion-content>\n"
|
|
39
|
+
},] }
|
|
40
|
+
];
|
|
41
|
+
NumpadTestPage.ctorParameters = () => [
|
|
42
|
+
{ type: FormBuilder }
|
|
43
|
+
];
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9udW1wYWQvdGVzdGluZy9udW1wYWQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFhLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBTy9ELE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQ1ksV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFbEMsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2xDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3BDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNqQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUdOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQiwwQ0FBMEM7SUFFNUMsQ0FBQztJQUVELDBCQUEwQjtJQUNwQixRQUFROztZQUNaLE1BQU0sSUFBSSxHQUFHO2dCQUNYLEtBQUssRUFBRSxJQUFJO2dCQUNYLE9BQU8sRUFBRSxFQUFFO2dCQUNYLE9BQU8sRUFBRSxDQUFDLE1BQU07YUFDakIsQ0FBQztZQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7S0FBQTtJQUVELFFBQVEsQ0FBQyxLQUFLO1FBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IseWhKQUFpQzthQUNsQzs7O1lBUE8sV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1NoYXJlZFZhbGlkYXRvcnN9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRvci92YWxpZGF0b3JzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbnVtcGFkLXRlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbnVtcGFkLnRlc3QuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTnVtcGFkVGVzdFBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZW1wdHk6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGludGVnZXI6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFNoYXJlZFZhbGlkYXRvcnMuaW50ZWdlcl0pXSxcbiAgICAgIGRpc2FibGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGRhdGV0aW1lOiBbbnVsbF1cbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ2Rpc2FibGUnKS5kaXNhYmxlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIC8vc2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWREYXRhKCksIDE1MDApO1xuXG4gIH1cblxuICAvLyBMb2FkIHRoZSBmb3JtIHdpdGggZGF0YVxuICBhc3luYyBsb2FkRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgZW1wdHk6IG51bGwsXG4gICAgICBpbnRlZ2VyOiA5OSxcbiAgICAgIGRpc2FibGU6IC0xMTEuMTFcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoZGF0YSk7XG4gIH1cblxuICBkb1N1Ym1pdChldmVudCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1ZhbGlkYXRlIGZvcm06ICcsIHRoaXMuZm9ybS52YWx1ZSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgbWV0aG9kcyAtLSAqL1xuXG5cbn1cblxuIl19
|
|
@@ -36,6 +36,9 @@ import { ENVIRONMENT } from '../../environments/environment.class';
|
|
|
36
36
|
import { TranslateContextService } from './services/translate-context.service';
|
|
37
37
|
import { MatStepperIntl } from '@angular/material/stepper';
|
|
38
38
|
import { MatStepperI18n } from './material/stepper/material.stepper-i18n';
|
|
39
|
+
import { UploadFileComponent } from './upload-file/upload-file.component';
|
|
40
|
+
import { UploadFilePopover } from './upload-file/upload-file-popover.component';
|
|
41
|
+
import { SharedTestsPage } from './testing/tests.page';
|
|
39
42
|
export function scrollFactory(overlay) {
|
|
40
43
|
return () => overlay.scrollStrategies.close();
|
|
41
44
|
}
|
|
@@ -93,11 +96,15 @@ SharedModule.decorators = [
|
|
|
93
96
|
SharedHotkeysModule
|
|
94
97
|
],
|
|
95
98
|
declarations: [
|
|
99
|
+
// Components
|
|
96
100
|
ToolbarComponent,
|
|
97
101
|
ModalToolbarComponent,
|
|
98
102
|
AppFormField,
|
|
99
103
|
AppLoadingSpinner,
|
|
100
|
-
AppHelpModal
|
|
104
|
+
AppHelpModal,
|
|
105
|
+
UploadFileComponent,
|
|
106
|
+
UploadFilePopover,
|
|
107
|
+
SharedTestsPage,
|
|
101
108
|
],
|
|
102
109
|
exports: [
|
|
103
110
|
CommonModule,
|
|
@@ -118,8 +125,11 @@ SharedModule.decorators = [
|
|
|
118
125
|
ModalToolbarComponent,
|
|
119
126
|
AppFormField,
|
|
120
127
|
AppLoadingSpinner,
|
|
121
|
-
AppHelpModal
|
|
128
|
+
AppHelpModal,
|
|
129
|
+
UploadFileComponent,
|
|
130
|
+
UploadFilePopover,
|
|
131
|
+
SharedTestsPage
|
|
122
132
|
]
|
|
123
133
|
},] }
|
|
124
134
|
];
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3NoYXJlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FB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QGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7U2hhcmVkTWF0ZXJpYWxNb2R1bGV9IGZyb20gJy4vbWF0ZXJpYWwvbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7UmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtJb25pY01vZHVsZX0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtEYXRlRm9ybWF0UGlwZX0gZnJvbSAnLi9waXBlcy9kYXRlLWZvcm1hdC5waXBlJztcbmltcG9ydCB7RGF0ZUZyb21Ob3dQaXBlfSBmcm9tICcuL3BpcGVzL2RhdGUtZnJvbS1ub3cucGlwZSc7XG5pbXBvcnQge1Rvb2xiYXJDb21wb25lbnR9IGZyb20gJy4vdG9vbGJhci90b29sYmFyJztcbmltcG9ydCB7VGV4dE1hc2tNb2R1bGV9IGZyb20gJ2FuZ3VsYXIyLXRleHQtbWFzayc7XG5pbXBvcnQge01hdFBhZ2luYXRvckludGx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQge01hdFBhZ2luYXRvckkxOG59IGZyb20gJy4vbWF0ZXJpYWwvcGFnaW5hdG9yL21hdGVyaWFsLnBhZ2luYXRvci1pMThuJztcbmltcG9ydCB7UHJvZ3Jlc3NCYXJTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL3Byb2dyZXNzLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7SFRUUF9JTlRFUkNFUFRPUlN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7UHJvZ3Jlc3NJbnRlcmNlcHRvcn0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvcHJvZ2Vzcy5pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NvbG9yUGlja2VyTW9kdWxlfSBmcm9tICduZ3gtY29sb3ItcGlja2VyJztcbmltcG9ydCB7QXBwRm9ybUZpZWxkfSBmcm9tICcuL2Zvcm0vZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7QXVkaW9Qcm92aWRlcn0gZnJvbSAnLi9hdWRpby9hdWRpbyc7XG5pbXBvcnQge0Nsb3NlU2Nyb2xsU3RyYXRlZ3ksIEZ1bGxzY3JlZW5PdmVybGF5Q29udGFpbmVyLCBPdmVybGF5LCBPdmVybGF5Q29udGFpbmVyfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1NoYXJlZEhvdGtleXNNb2R1bGV9IGZyb20gJy4vaG90a2V5cy9zaGFyZWQtaG90a2V5cy5tb2R1bGUnO1xuaW1wb3J0IHtGaWxlU2VydmljZX0gZnJvbSAnLi9maWxlL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge01vZGFsVG9vbGJhckNvbXBvbmVudH0gZnJvbSAnLi90b29sYmFyL21vZGFsLXRvb2xiYXInO1xuaW1wb3J0IHtEcmFnRHJvcE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge01BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLCBNQVRfQVVUT0NPTVBMRVRFX1NDUk9MTF9TVFJBVEVHWX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7TUFUX1NFTEVDVF9TQ1JPTExfU1RSQVRFR1l9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQge1NoYXJlZERpcmVjdGl2ZXNNb2R1bGV9IGZyb20gJy4vZGlyZWN0aXZlcy9kaXJlY3RpdmVzLm1vZHVsZSc7XG5pbXBvcnQge1NoYXJlZFBpcGVzTW9kdWxlfSBmcm9tICcuL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5pbXBvcnQge0FwcExvYWRpbmdTcGlubmVyfSBmcm9tICcuL2Zvcm0vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7RGF0ZURpZmZEdXJhdGlvblBpcGV9IGZyb20gJy4vcGlwZXMvZGF0ZS1kaWZmLWR1cmF0aW9uLnBpcGUnO1xuaW1wb3J0IHtMYXRpdHVkZUZvcm1hdFBpcGUsIExhdExvbmdGb3JtYXRQaXBlLCBMb25naXR1ZGVGb3JtYXRQaXBlfSBmcm9tICcuL3BpcGVzL2xhdGxvbmctZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHtIaWdobGlnaHRQaXBlfSBmcm9tICcuL3BpcGVzL2hpZ2hsaWdodC5waXBlJztcbmltcG9ydCB7TnVtYmVyRm9ybWF0UGlwZX0gZnJvbSAnLi9waXBlcy9udW1iZXItZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHtNYXJrZG93bk1vZHVsZX0gZnJvbSAnbmd4LW1hcmtkb3duJztcbmltcG9ydCB7QXBwSGVscE1vZGFsfSBmcm9tICcuL2hlbHAvaGVscC5tb2RhbCc7XG5pbXBvcnQge0Vudmlyb25tZW50LCBFTlZJUk9OTUVOVH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7VHJhbnNsYXRlQ29udGV4dFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvdHJhbnNsYXRlLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQge01hdFN0ZXBwZXJJbnRsfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcbmltcG9ydCB7TWF0U3RlcHBlckkxOG59IGZyb20gJy4vbWF0ZXJpYWwvc3RlcHBlci9tYXRlcmlhbC5zdGVwcGVyLWkxOG4nO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxGYWN0b3J5KG92ZXJsYXk6IE92ZXJsYXkpOiAoKSA9PiBDbG9zZVNjcm9sbFN0cmF0ZWd5IHtcbiAgcmV0dXJuICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpO1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbmljTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIFRleHRNYXNrTW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIE1hcmtkb3duTW9kdWxlLFxuXG4gICAgLy8gU3ViIG1vZHVsZXNcbiAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZSxcbiAgICBTaGFyZWREaXJlY3RpdmVzTW9kdWxlLFxuICAgIFNoYXJlZFBpcGVzTW9kdWxlLFxuICAgIFNoYXJlZEhvdGtleXNNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBNb2RhbFRvb2xiYXJDb21wb25lbnQsXG4gICAgQXBwRm9ybUZpZWxkLFxuICAgIEFwcExvYWRpbmdTcGlubmVyLFxuICAgIEFwcEhlbHBNb2RhbFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbmljTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIFRleHRNYXNrTW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIE1hcmtkb3duTW9kdWxlLFxuXG4gICAgLy8gU3ViLW1vZHVsZXNcbiAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZSxcbiAgICBTaGFyZWREaXJlY3RpdmVzTW9kdWxlLFxuICAgIFNoYXJlZFBpcGVzTW9kdWxlLFxuICAgIFNoYXJlZEhvdGtleXNNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRzXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBNb2RhbFRvb2xiYXJDb21wb25lbnQsXG4gICAgQXBwRm9ybUZpZWxkLFxuICAgIEFwcExvYWRpbmdTcGlubmVyLFxuICAgIEFwcEhlbHBNb2RhbFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZE1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoZW52aXJvbm1lbnQ6IEVudmlyb25tZW50KTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGFyZWRNb2R1bGU+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbc2hhcmVkXSBDcmVhdGluZyBtb2R1bGUgKHJvb3QpJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFNoYXJlZE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuXG4gICAgICAgIHsgcHJvdmlkZTogRU5WSVJPTk1FTlQsIHVzZVZhbHVlOiBlbnZpcm9ubWVudCB9LFxuXG4gICAgICAgIFByb2dyZXNzQmFyU2VydmljZSxcbiAgICAgICAgQXVkaW9Qcm92aWRlcixcbiAgICAgICAgRmlsZVNlcnZpY2UsXG4gICAgICAgIFRyYW5zbGF0ZUNvbnRleHRTZXJ2aWNlLFxuXG4gICAgICAgIC8vIEV4cG9ydCBQaXBlcyBhcyBwcm92aWRlcnNcbiAgICAgICAgRGF0ZUZvcm1hdFBpcGUsXG4gICAgICAgIERhdGVGcm9tTm93UGlwZSxcbiAgICAgICAgRGF0ZURpZmZEdXJhdGlvblBpcGUsXG4gICAgICAgIExhdExvbmdGb3JtYXRQaXBlLFxuICAgICAgICBMYXRpdHVkZUZvcm1hdFBpcGUsXG4gICAgICAgIExvbmdpdHVkZUZvcm1hdFBpcGUsXG4gICAgICAgIEhpZ2hsaWdodFBpcGUsXG4gICAgICAgIE51bWJlckZvcm1hdFBpcGUsXG5cbiAgICAgICAgeyBwcm92aWRlOiBPdmVybGF5Q29udGFpbmVyLCB1c2VDbGFzczogRnVsbHNjcmVlbk92ZXJsYXlDb250YWluZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFByb2dyZXNzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlLCBkZXBzOiBbUHJvZ3Jlc3NCYXJTZXJ2aWNlXSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1hdFBhZ2luYXRvckludGwsIHVzZUNsYXNzOiBNYXRQYWdpbmF0b3JJMThuLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcbiAgICAgICAgeyBwcm92aWRlOiBNYXRTdGVwcGVySW50bCwgdXNlQ2xhc3M6IE1hdFN0ZXBwZXJJMThuLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcblxuICAgICAgICAvLyBGSVhNRTogdHJ5IHRvIGZvcmNlIGEgY3VzdG9tIG92ZXJsYXkgZm9yIGF1dG9jb21wbGV0ZSwgYmVjYXVzZSBvZiB0aGVyZSBpcyBhIGJ1ZyB3aGVuIHVzaW5nIGluc2lkZSBhbiBpb25pYyBtb2RhbFxuICAgICAgICAvL3sgcHJvdmlkZTogT3ZlcmxheSwgdXNlQ2xhc3M6IE92ZXJsYXl9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9BVVRPQ09NUExFVEVfU0NST0xMX1NUUkFURUdZLCB1c2VGYWN0b3J5OiBzY3JvbGxGYWN0b3J5LCBkZXBzOiBbT3ZlcmxheV0gfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfU0VMRUNUX1NDUk9MTF9TVFJBVEVHWSwgdXNlRmFjdG9yeTogc2Nyb2xsRmFjdG9yeSwgZGVwczogW092ZXJsYXldIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3NoYXJlZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FB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QXNCO29CQUN0QixpQkFBaUI7b0JBQ2pCLG1CQUFtQjtvQkFFbkIsYUFBYTtvQkFDYixnQkFBZ0I7b0JBQ2hCLHFCQUFxQjtvQkFDckIsWUFBWTtvQkFDWixpQkFBaUI7b0JBQ2pCLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixpQkFBaUI7b0JBQ2pCLGVBQWU7aUJBQ2hCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtTaGFyZWRNYXRlcmlhbE1vZHVsZX0gZnJvbSAnLi9tYXRlcmlhbC9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0lvbmljTW9kdWxlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0RhdGVGb3JtYXRQaXBlfSBmcm9tICcuL3BpcGVzL2RhdGUtZm9ybWF0LnBpcGUnO1xuaW1wb3J0IHtEYXRlRnJvbU5vd1BpcGV9IGZyb20gJy4vcGlwZXMvZGF0ZS1mcm9tLW5vdy5waXBlJztcbmltcG9ydCB7VG9vbGJhckNvbXBvbmVudH0gZnJvbSAnLi90b29sYmFyL3Rvb2xiYXInO1xuaW1wb3J0IHtUZXh0TWFza01vZHVsZX0gZnJvbSAnYW5ndWxhcjItdGV4dC1tYXNrJztcbmltcG9ydCB7TWF0UGFnaW5hdG9ySW50bH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7TWF0UGFnaW5hdG9ySTE4bn0gZnJvbSAnLi9tYXRlcmlhbC9wYWdpbmF0b3IvbWF0ZXJpYWwucGFnaW5hdG9yLWkxOG4nO1xuaW1wb3J0IHtQcm9ncmVzc0JhclNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvcHJvZ3Jlc3MtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtIVFRQX0lOVEVSQ0VQVE9SU30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtQcm9ncmVzc0ludGVyY2VwdG9yfSBmcm9tICcuL2ludGVyY2VwdG9ycy9wcm9nZXNzLmludGVyY2VwdG9yJztcbmltcG9ydCB7Q29sb3JQaWNrZXJNb2R1bGV9IGZyb20gJ25neC1jb2xvci1waWNrZXInO1xuaW1wb3J0IHtBcHBGb3JtRmllbGR9IGZyb20gJy4vZm9ybS9maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHtBdWRpb1Byb3ZpZGVyfSBmcm9tICcuL2F1ZGlvL2F1ZGlvJztcbmltcG9ydCB7Q2xvc2VTY3JvbGxTdHJhdGVneSwgRnVsbHNjcmVlbk92ZXJsYXlDb250YWluZXIsIE92ZXJsYXksIE92ZXJsYXlDb250YWluZXJ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7U2hhcmVkSG90a2V5c01vZHVsZX0gZnJvbSAnLi9ob3RrZXlzL3NoYXJlZC1ob3RrZXlzLm1vZHVsZSc7XG5pbXBvcnQge0ZpbGVTZXJ2aWNlfSBmcm9tICcuL2ZpbGUvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7TW9kYWxUb29sYmFyQ29tcG9uZW50fSBmcm9tICcuL3Rvb2xiYXIvbW9kYWwtdG9vbGJhcic7XG5pbXBvcnQge0RyYWdEcm9wTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7TUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsIE1BVF9BVVRPQ09NUExFVEVfU0NST0xMX1NUUkFURUdZfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtNQVRfU0VMRUNUX1NDUk9MTF9TVFJBVEVHWX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7U2hhcmVkRGlyZWN0aXZlc01vZHVsZX0gZnJvbSAnLi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcbmltcG9ydCB7U2hhcmVkUGlwZXNNb2R1bGV9IGZyb20gJy4vcGlwZXMvcGlwZXMubW9kdWxlJztcbmltcG9ydCB7QXBwTG9hZGluZ1NwaW5uZXJ9IGZyb20gJy4vZm9ybS9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IHtEYXRlRGlmZkR1cmF0aW9uUGlwZX0gZnJvbSAnLi9waXBlcy9kYXRlLWRpZmYtZHVyYXRpb24ucGlwZSc7XG5pbXBvcnQge0xhdGl0dWRlRm9ybWF0UGlwZSwgTGF0TG9uZ0Zvcm1hdFBpcGUsIExvbmdpdHVkZUZvcm1hdFBpcGV9IGZyb20gJy4vcGlwZXMvbGF0bG9uZy1mb3JtYXQucGlwZSc7XG5pbXBvcnQge0hpZ2hsaWdodFBpcGV9IGZyb20gJy4vcGlwZXMvaGlnaGxpZ2h0LnBpcGUnO1xuaW1wb3J0IHtOdW1iZXJGb3JtYXRQaXBlfSBmcm9tICcuL3BpcGVzL251bWJlci1mb3JtYXQucGlwZSc7XG5pbXBvcnQge01hcmtkb3duTW9kdWxlfSBmcm9tICduZ3gtbWFya2Rvd24nO1xuaW1wb3J0IHtBcHBIZWxwTW9kYWx9IGZyb20gJy4vaGVscC9oZWxwLm1vZGFsJztcbmltcG9ydCB7RW52aXJvbm1lbnQsIEVOVklST05NRU5UfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtUcmFuc2xhdGVDb250ZXh0U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy90cmFuc2xhdGUtY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7TWF0U3RlcHBlckludGx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xuaW1wb3J0IHtNYXRTdGVwcGVySTE4bn0gZnJvbSAnLi9tYXRlcmlhbC9zdGVwcGVyL21hdGVyaWFsLnN0ZXBwZXItaTE4bic7XG5pbXBvcnQge1VwbG9hZEZpbGVDb21wb25lbnR9IGZyb20gJy4vdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUuY29tcG9uZW50JztcbmltcG9ydCB7VXBsb2FkRmlsZVBvcG92ZXJ9IGZyb20gJy4vdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUtcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHtTaGFyZWRUZXN0c1BhZ2V9IGZyb20gJy4vdGVzdGluZy90ZXN0cy5wYWdlJztcblxuXG5leHBvcnQgZnVuY3Rpb24gc2Nyb2xsRmFjdG9yeShvdmVybGF5OiBPdmVybGF5KTogKCkgPT4gQ2xvc2VTY3JvbGxTdHJhdGVneSB7XG4gIHJldHVybiAoKSA9PiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBDb2xvclBpY2tlck1vZHVsZSxcbiAgICBUZXh0TWFza01vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBNYXJrZG93bk1vZHVsZSxcblxuICAgIC8vIFN1YiBtb2R1bGVzXG4gICAgU2hhcmVkTWF0ZXJpYWxNb2R1bGUsXG4gICAgU2hhcmVkRGlyZWN0aXZlc01vZHVsZSxcbiAgICBTaGFyZWRQaXBlc01vZHVsZSxcbiAgICBTaGFyZWRIb3RrZXlzTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC8vIENvbXBvbmVudHNcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIE1vZGFsVG9vbGJhckNvbXBvbmVudCxcbiAgICBBcHBGb3JtRmllbGQsXG4gICAgQXBwTG9hZGluZ1NwaW5uZXIsXG4gICAgQXBwSGVscE1vZGFsLFxuICAgIFVwbG9hZEZpbGVDb21wb25lbnQsXG4gICAgVXBsb2FkRmlsZVBvcG92ZXIsXG4gICAgU2hhcmVkVGVzdHNQYWdlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbmljTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIFRleHRNYXNrTW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIE1hcmtkb3duTW9kdWxlLFxuXG4gICAgLy8gU3ViLW1vZHVsZXNcbiAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZSxcbiAgICBTaGFyZWREaXJlY3RpdmVzTW9kdWxlLFxuICAgIFNoYXJlZFBpcGVzTW9kdWxlLFxuICAgIFNoYXJlZEhvdGtleXNNb2R1bGUsXG5cbiAgICAvLyBDb21wb25lbnRzXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBNb2RhbFRvb2xiYXJDb21wb25lbnQsXG4gICAgQXBwRm9ybUZpZWxkLFxuICAgIEFwcExvYWRpbmdTcGlubmVyLFxuICAgIEFwcEhlbHBNb2RhbCxcbiAgICBVcGxvYWRGaWxlQ29tcG9uZW50LFxuICAgIFVwbG9hZEZpbGVQb3BvdmVyLFxuICAgIFNoYXJlZFRlc3RzUGFnZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZE1vZHVsZSB7XG5cbiAgc3RhdGljIGZvclJvb3QoZW52aXJvbm1lbnQ6IEVudmlyb25tZW50KTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGFyZWRNb2R1bGU+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbc2hhcmVkXSBDcmVhdGluZyBtb2R1bGUgKHJvb3QpJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFNoYXJlZE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuXG4gICAgICAgIHsgcHJvdmlkZTogRU5WSVJPTk1FTlQsIHVzZVZhbHVlOiBlbnZpcm9ubWVudCB9LFxuXG4gICAgICAgIFByb2dyZXNzQmFyU2VydmljZSxcbiAgICAgICAgQXVkaW9Qcm92aWRlcixcbiAgICAgICAgRmlsZVNlcnZpY2UsXG4gICAgICAgIFRyYW5zbGF0ZUNvbnRleHRTZXJ2aWNlLFxuXG4gICAgICAgIC8vIEV4cG9ydCBQaXBlcyBhcyBwcm92aWRlcnNcbiAgICAgICAgRGF0ZUZvcm1hdFBpcGUsXG4gICAgICAgIERhdGVGcm9tTm93UGlwZSxcbiAgICAgICAgRGF0ZURpZmZEdXJhdGlvblBpcGUsXG4gICAgICAgIExhdExvbmdGb3JtYXRQaXBlLFxuICAgICAgICBMYXRpdHVkZUZvcm1hdFBpcGUsXG4gICAgICAgIExvbmdpdHVkZUZvcm1hdFBpcGUsXG4gICAgICAgIEhpZ2hsaWdodFBpcGUsXG4gICAgICAgIE51bWJlckZvcm1hdFBpcGUsXG5cbiAgICAgICAgeyBwcm92aWRlOiBPdmVybGF5Q29udGFpbmVyLCB1c2VDbGFzczogRnVsbHNjcmVlbk92ZXJsYXlDb250YWluZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFByb2dyZXNzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlLCBkZXBzOiBbUHJvZ3Jlc3NCYXJTZXJ2aWNlXSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1hdFBhZ2luYXRvckludGwsIHVzZUNsYXNzOiBNYXRQYWdpbmF0b3JJMThuLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcbiAgICAgICAgeyBwcm92aWRlOiBNYXRTdGVwcGVySW50bCwgdXNlQ2xhc3M6IE1hdFN0ZXBwZXJJMThuLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcblxuICAgICAgICAvLyBGSVhNRTogdHJ5IHRvIGZvcmNlIGEgY3VzdG9tIG92ZXJsYXkgZm9yIGF1dG9jb21wbGV0ZSwgYmVjYXVzZSBvZiB0aGVyZSBpcyBhIGJ1ZyB3aGVuIHVzaW5nIGluc2lkZSBhbiBpb25pYyBtb2RhbFxuICAgICAgICAvL3sgcHJvdmlkZTogT3ZlcmxheSwgdXNlQ2xhc3M6IE92ZXJsYXl9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9BVVRPQ09NUExFVEVfU0NST0xMX1NUUkFURUdZLCB1c2VGYWN0b3J5OiBzY3JvbGxGYWN0b3J5LCBkZXBzOiBbT3ZlcmxheV0gfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfU0VMRUNUX1NDUk9MTF9TVFJBVEVHWSwgdXNlRmFjdG9yeTogc2Nyb2xsRmFjdG9yeSwgZGVwczogW092ZXJsYXldIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MaterialTestingModule } from './material/
|
|
3
|
+
import { MaterialTestingModule, SHARED_MATERIAL_TESTING_PAGES } from './material/material.testing.module';
|
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
|
5
5
|
import { ToastTestingModule } from './toast/toast.testing.module';
|
|
6
|
+
import { UploadFileTestingModule } from './upload-file/testing/upload-file.testing.module';
|
|
6
7
|
export const SHARED_TESTING_PAGES = [
|
|
7
|
-
|
|
8
|
+
...SHARED_MATERIAL_TESTING_PAGES,
|
|
9
|
+
{ label: 'Shared other components', divider: true },
|
|
10
|
+
{ label: 'Toast', page: '/testing/shared/toast' },
|
|
11
|
+
{ label: 'File upload', page: '/testing/shared/upload-file' }
|
|
8
12
|
];
|
|
9
13
|
export class SharedTestingModule {
|
|
10
14
|
}
|
|
@@ -13,13 +17,17 @@ SharedTestingModule.decorators = [
|
|
|
13
17
|
imports: [
|
|
14
18
|
CommonModule,
|
|
15
19
|
TranslateModule.forChild(),
|
|
20
|
+
// Testing sub-modules
|
|
16
21
|
MaterialTestingModule,
|
|
17
|
-
ToastTestingModule
|
|
22
|
+
ToastTestingModule,
|
|
23
|
+
UploadFileTestingModule
|
|
18
24
|
],
|
|
19
25
|
exports: [
|
|
26
|
+
// Testing sub-modules
|
|
20
27
|
MaterialTestingModule,
|
|
21
|
-
ToastTestingModule
|
|
28
|
+
ToastTestingModule,
|
|
29
|
+
UploadFileTestingModule
|
|
22
30
|
]
|
|
23
31
|
},] }
|
|
24
32
|
];
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLnRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvc2hhcmVkLnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUd6RixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBa0I7SUFDakQsR0FBRyw2QkFBNkI7SUFFaEMsRUFBQyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQztJQUNqRCxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFDO0lBQy9DLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUM7Q0FDNUQsQ0FBQztBQW1CRixNQUFNLE9BQU8sbUJBQW1COzs7WUFqQi9CLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixlQUFlLENBQUMsUUFBUSxFQUFFO29CQUUxQixzQkFBc0I7b0JBQ3RCLHFCQUFxQjtvQkFDckIsa0JBQWtCO29CQUNsQix1QkFBdUI7aUJBQ3hCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxzQkFBc0I7b0JBQ3RCLHFCQUFxQjtvQkFDckIsa0JBQWtCO29CQUNsQix1QkFBdUI7aUJBQ3hCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtNYXRlcmlhbFRlc3RpbmdNb2R1bGUsIFNIQVJFRF9NQVRFUklBTF9URVNUSU5HX1BBR0VTfSBmcm9tICcuL21hdGVyaWFsL21hdGVyaWFsLnRlc3RpbmcubW9kdWxlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7VG9hc3RUZXN0aW5nTW9kdWxlfSBmcm9tICcuL3RvYXN0L3RvYXN0LnRlc3RpbmcubW9kdWxlJztcbmltcG9ydCB7VXBsb2FkRmlsZVRlc3RpbmdNb2R1bGV9IGZyb20gJy4vdXBsb2FkLWZpbGUvdGVzdGluZy91cGxvYWQtZmlsZS50ZXN0aW5nLm1vZHVsZSc7XG5pbXBvcnQge1Rlc3RpbmdQYWdlfSBmcm9tICcuL3Rlc3RpbmcvdGVzdHMucGFnZSc7XG5cbmV4cG9ydCBjb25zdCBTSEFSRURfVEVTVElOR19QQUdFUzogVGVzdGluZ1BhZ2VbXSA9IFtcbiAgLi4uU0hBUkVEX01BVEVSSUFMX1RFU1RJTkdfUEFHRVMsXG5cbiAge2xhYmVsOiAnU2hhcmVkIG90aGVyIGNvbXBvbmVudHMnLCBkaXZpZGVyOiB0cnVlfSxcbiAge2xhYmVsOiAnVG9hc3QnLCBwYWdlOiAnL3Rlc3Rpbmcvc2hhcmVkL3RvYXN0J30sXG4gIHtsYWJlbDogJ0ZpbGUgdXBsb2FkJywgcGFnZTogJy90ZXN0aW5nL3NoYXJlZC91cGxvYWQtZmlsZSd9XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuXG4gICAgLy8gVGVzdGluZyBzdWItbW9kdWxlc1xuICAgIE1hdGVyaWFsVGVzdGluZ01vZHVsZSxcbiAgICBUb2FzdFRlc3RpbmdNb2R1bGUsXG4gICAgVXBsb2FkRmlsZVRlc3RpbmdNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIC8vIFRlc3Rpbmcgc3ViLW1vZHVsZXNcbiAgICBNYXRlcmlhbFRlc3RpbmdNb2R1bGUsXG4gICAgVG9hc3RUZXN0aW5nTW9kdWxlLFxuICAgIFVwbG9hZEZpbGVUZXN0aW5nTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkVGVzdGluZ01vZHVsZSB7XG59XG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, Inject, InjectionToken, Optional } from '@angular/core';
|
|
3
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
+
export const APP_TESTING_PAGES = new InjectionToken('testingPages');
|
|
6
|
+
export class SharedTestsPage {
|
|
7
|
+
constructor(route, router, translate, pages) {
|
|
8
|
+
this.route = route;
|
|
9
|
+
this.router = router;
|
|
10
|
+
this.translate = translate;
|
|
11
|
+
this.pages = pages;
|
|
12
|
+
console.info('[testing] Loaded tests pages:', pages);
|
|
13
|
+
}
|
|
14
|
+
openPage(page) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
return this.router.navigate([page], {
|
|
17
|
+
relativeTo: this.route
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
SharedTestsPage.decorators = [
|
|
23
|
+
{ type: Component, args: [{
|
|
24
|
+
selector: 'app-tests-page',
|
|
25
|
+
template: "\n<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Tests</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <ion-list *ngIf=\"pages?.length\">\n\n <ng-container *ngFor=\"let item of pages\">\n\n <ion-item-divider *ngIf=\"item.divider; else link\">{{item.label}}</ion-item-divider>\n\n <ng-template #link>\n <ion-item tappable class=\"text-1x\"\n (click)=\"openPage(item.page)\">{{item.label}}</ion-item>\n </ng-template>\n </ng-container>\n </ion-list>\n\n</ion-content>\n"
|
|
26
|
+
},] }
|
|
27
|
+
];
|
|
28
|
+
SharedTestsPage.ctorParameters = () => [
|
|
29
|
+
{ type: ActivatedRoute },
|
|
30
|
+
{ type: Router },
|
|
31
|
+
{ type: TranslateService },
|
|
32
|
+
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
|
|
33
|
+
];
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3Rlc3RpbmcvdGVzdHMucGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBUXJELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFnQixjQUFjLENBQUMsQ0FBQztBQU1uRixNQUFNLE9BQU8sZUFBZTtJQUUxQixZQUNjLEtBQXFCLEVBQ3JCLE1BQWMsRUFDZCxTQUEyQixFQUNTLEtBQW9CO1FBSHhELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNTLFVBQUssR0FBTCxLQUFLLENBQWU7UUFFcEUsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUssUUFBUSxDQUFDLElBQUk7O1lBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTs7O1lBbkJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixzcEJBQWdDO2FBQ2pDOzs7WUFkTyxjQUFjO1lBQUUsTUFBTTtZQUN0QixnQkFBZ0I7d0NBb0JqQixRQUFRLFlBQUksTUFBTSxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIEluamVjdGlvblRva2VuLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVGVzdGluZ1BhZ2Uge1xuICBsYWJlbDogc3RyaW5nO1xuICBwYWdlPzogc3RyaW5nO1xuICBkaXZpZGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IEFQUF9URVNUSU5HX1BBR0VTID0gbmV3IEluamVjdGlvblRva2VuPFRlc3RpbmdQYWdlW10+KCd0ZXN0aW5nUGFnZXMnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRlc3RzLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVzdHMucGFnZS5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRUZXN0c1BhZ2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9URVNUSU5HX1BBR0VTKSBwdWJsaWMgcGFnZXM6IFRlc3RpbmdQYWdlW11cbiAgICApIHtcbiAgICBjb25zb2xlLmluZm8oJ1t0ZXN0aW5nXSBMb2FkZWQgdGVzdHMgcGFnZXM6JywgcGFnZXMpO1xuICB9XG5cbiAgYXN5bmMgb3BlblBhZ2UocGFnZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGFnZV0sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGVcbiAgICB9KTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -36,4 +36,4 @@ ToastTestingPage.ctorParameters = () => [
|
|
|
36
36
|
{ type: ToastController },
|
|
37
37
|
{ type: TranslateService }
|
|
38
38
|
];
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QudGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3RvYXN0L3RvYXN0LnRlc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFtQixNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFNckQsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUNVLGVBQWdDLEVBQ2hDLFNBQTJCO1FBRDNCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQU41QixtQkFBYyxHQUFxQjtZQUMxQyxlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDO0lBTUYsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUF1QjtRQUMvQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxnREFDbEQsSUFBSSxDQUFDLGNBQWMsS0FDdEIsT0FBTyxFQUFFLG1CQUFtQixLQUN6QixJQUFJLEVBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBdUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxpQkFDbkIsSUFBSSxFQUFFLE1BQU0sRUFDWixPQUFPLEVBQUUsdUJBQXVCLElBQzdCLElBQUksRUFDUCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUF1QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxTQUFTLGlCQUNuQixJQUFJLEVBQUUsU0FBUyxFQUNmLE9BQU8sRUFBRSwwQkFBMEIsSUFDaEMsSUFBSSxFQUNQLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQXVCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsaUJBQ25CLElBQUksRUFBRSxPQUFPLEVBQ2IsT0FBTyxFQUFFLHdCQUF3QixJQUM5QixJQUFJLEVBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO0lBQzdFLENBQUM7OztZQWxERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLDB5QkFBaUM7YUFDbEM7OztZQVBPLGVBQWU7WUFFZixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RvYXN0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtTaG93VG9hc3RPcHRpb25zLCBUb2FzdHN9IGZyb20gJy4vdG9hc3RzJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvYXN0LXRlc3RpbmcnLFxuICB0ZW1wbGF0ZVVybDogJ3RvYXN0LnRlc3RpbmcuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RUZXN0aW5nUGFnZSAge1xuXG4gIHJlYWRvbmx5IGRlZmF1bHRPcHRpb25zOiBTaG93VG9hc3RPcHRpb25zID0ge1xuICAgIHNob3dDbG9zZUJ1dHRvbjogZmFsc2VcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgc2hvd1RvYXN0KG9wdHM/OiBTaG93VG9hc3RPcHRpb25zKSB7XG4gICAgcmV0dXJuIFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwge1xuICAgICAgLi4udGhpcy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGlzIGEgbWVzc2FnZScsXG4gICAgICAuLi5vcHRzXG4gICAgfSk7XG4gIH1cblxuICBzaG93SW5mbyhvcHRzPzogU2hvd1RvYXN0T3B0aW9ucykge1xuICAgcmV0dXJuIHRoaXMuc2hvd1RvYXN0KHtcbiAgICAgdHlwZTogJ2luZm8nLFxuICAgICBtZXNzYWdlOiAnVGhpcyBpcyBhIGluZm8gdGV4dCAhJyxcbiAgICAgLi4ub3B0c1xuICAgfSk7XG4gIH1cblxuICBzaG93V2FybmluZyhvcHRzPzogU2hvd1RvYXN0T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnNob3dUb2FzdCh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICBtZXNzYWdlOiAnVGhpcyBpcyBhIHdhcm5pbmcgdGV4dCAhJyxcbiAgICAgIC4uLm9wdHNcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dFcnJvcihvcHRzPzogU2hvd1RvYXN0T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnNob3dUb2FzdCh7XG4gICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ1RoaXMgaXMgYSBlcnJvciB0ZXh0ICEnLFxuICAgICAgLi4ub3B0c1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlQ2xvc2VCdXR0b24oKSB7XG4gICAgdGhpcy5kZWZhdWx0T3B0aW9ucy5zaG93Q2xvc2VCdXR0b24gPSAhdGhpcy5kZWZhdWx0T3B0aW9ucy5zaG93Q2xvc2VCdXR0b247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { PopoverController } from '@ionic/angular';
|
|
4
|
+
import { UploadFilePopover } from '../upload-file-popover.component';
|
|
5
|
+
import { Subject, timer } from 'rxjs';
|
|
6
|
+
import { HttpEventType, HttpResponse } from '@angular/common/http';
|
|
7
|
+
import { map, takeUntil } from 'rxjs/operators';
|
|
8
|
+
import { sleep } from '../../functions';
|
|
9
|
+
export class UploadFileTestingPage {
|
|
10
|
+
constructor(popoverController) {
|
|
11
|
+
this.popoverController = popoverController;
|
|
12
|
+
}
|
|
13
|
+
showPopover(event, opts) {
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
const modal = yield this.popoverController.create({
|
|
16
|
+
component: UploadFilePopover,
|
|
17
|
+
componentProps: Object.assign({ title: 'modalTitle', uploadFn: (file) => this.uploadFile(file), deleteFn: (file) => this.deleteFile(file) }, opts),
|
|
18
|
+
backdropDismiss: false,
|
|
19
|
+
keyboardClose: false,
|
|
20
|
+
event,
|
|
21
|
+
translucent: true,
|
|
22
|
+
cssClass: 'popover-large',
|
|
23
|
+
});
|
|
24
|
+
yield modal.present();
|
|
25
|
+
const { data } = yield modal.onDidDismiss();
|
|
26
|
+
if (data) {
|
|
27
|
+
console.info('Popover result: ', data);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Simulate a upload function, with progression
|
|
33
|
+
* @param file
|
|
34
|
+
*/
|
|
35
|
+
uploadFile(file) {
|
|
36
|
+
const $stop = new Subject();
|
|
37
|
+
const loadStep = file.size / 10;
|
|
38
|
+
let loaded = 0;
|
|
39
|
+
return timer(0, 250)
|
|
40
|
+
.pipe(takeUntil($stop), map(() => {
|
|
41
|
+
loaded += loadStep;
|
|
42
|
+
// Return progression
|
|
43
|
+
if (loaded < file.size) {
|
|
44
|
+
return { type: HttpEventType.UploadProgress, total: file.size, loaded };
|
|
45
|
+
}
|
|
46
|
+
// Stop the timer
|
|
47
|
+
setTimeout(() => $stop.next(), 100);
|
|
48
|
+
// Return final response
|
|
49
|
+
return new HttpResponse({ body: { finalName: file.name, message: 'Upload succeed' } });
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
deleteFile(file) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
console.info('[testing] Simulate remote deletion... (waiting 2s)');
|
|
55
|
+
yield sleep(2000);
|
|
56
|
+
return true;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
UploadFileTestingPage.decorators = [
|
|
61
|
+
{ type: Component, args: [{
|
|
62
|
+
selector: 'upload-file-testing',
|
|
63
|
+
template: "<ion-toolbar color=\"primary\">\n <ion-title>File upload</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <p>Popover examples:</p>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: true})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (unique file)\n </ion-button>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: false})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (many files)\n </ion-button>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: false, instantUpload: true})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (instant upload)\n </ion-button>\n\n <ion-button (click)=\"showPopover($event, {uniqueFile: false, instantUpload: true, maxParallelUpload: 3})\" color=\"tertiary\">\n <span translate>COMMON.BTN_IMPORT</span> (max parallel upload)\n </ion-button>\n\n</ion-content>\n"
|
|
64
|
+
},] }
|
|
65
|
+
];
|
|
66
|
+
UploadFileTestingPage.ctorParameters = () => [
|
|
67
|
+
{ type: PopoverController }
|
|
68
|
+
];
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUudGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3VwbG9hZC1maWxlL3Rlc3RpbmcvdXBsb2FkLWZpbGUudGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQTJCLE1BQU0sa0NBQWtDLENBQUM7QUFDN0YsT0FBTyxFQUFhLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFZLGFBQWEsRUFBRSxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQU10QyxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ1UsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFFOUMsQ0FBQztJQUVLLFdBQVcsQ0FBQyxLQUFjLEVBQUUsSUFBd0M7O1lBQ3hFLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztnQkFDaEQsU0FBUyxFQUFFLGlCQUFpQjtnQkFDNUIsY0FBYyxFQUFFLGdCQUNkLEtBQUssRUFBRSxZQUFZLEVBQ25CLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFDekMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUN0QyxJQUFJLENBQ1I7Z0JBQ0QsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixLQUFLO2dCQUNMLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixRQUFRLEVBQUUsZUFBZTthQUMxQixDQUFDLENBQUM7WUFFSCxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFNUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN4QztRQUNILENBQUM7S0FBQTtJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUFVO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQzthQUNqQixJQUFJLENBQ0gsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNoQixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxJQUFJLFFBQVEsQ0FBQztZQUVuQixxQkFBcUI7WUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDdEIsT0FBdUIsRUFBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUN4RjtZQUVELGlCQUFpQjtZQUNqQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXBDLHdCQUF3QjtZQUN4QixPQUFPLElBQUksWUFBWSxDQUFDLEVBQUMsSUFBSSxFQUFFLEVBQUMsU0FBUyxFQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3RGLENBQUMsQ0FBQyxDQUNILENBQUE7SUFFTCxDQUFDO0lBRUssVUFBVSxDQUFDLElBQVU7O1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUNuRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTs7O1lBcEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixtN0JBQXVDO2FBQ3hDOzs7WUFYTyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BvcG92ZXJDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtVcGxvYWRGaWxlUG9wb3ZlciwgVXBsb2FkRmlsZVBvcG92ZXJPcHRpb25zfSBmcm9tICcuLi91cGxvYWQtZmlsZS1wb3BvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7c2xlZXB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VwbG9hZC1maWxlLXRlc3RpbmcnLFxuICB0ZW1wbGF0ZVVybDogJ3VwbG9hZC1maWxlLnRlc3RpbmcuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkRmlsZVRlc3RpbmdQYWdlICB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb3BvdmVyQ29udHJvbGxlcjogUG9wb3ZlckNvbnRyb2xsZXJcbiAgKSB7XG4gIH1cblxuICBhc3luYyBzaG93UG9wb3ZlcihldmVudDogVUlFdmVudCwgb3B0cz86IFBhcnRpYWw8VXBsb2FkRmlsZVBvcG92ZXJPcHRpb25zPikge1xuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBVcGxvYWRGaWxlUG9wb3ZlcixcbiAgICAgIGNvbXBvbmVudFByb3BzOiA8VXBsb2FkRmlsZVBvcG92ZXJPcHRpb25zPntcbiAgICAgICAgdGl0bGU6ICdtb2RhbFRpdGxlJyxcbiAgICAgICAgdXBsb2FkRm46IChmaWxlKSA9PiB0aGlzLnVwbG9hZEZpbGUoZmlsZSksXG4gICAgICAgIGRlbGV0ZUZuOiAoZmlsZSkgPT4gdGhpcy5kZWxldGVGaWxlKGZpbGUpLFxuICAgICAgICAuLi5vcHRzXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcbiAgICAgIGtleWJvYXJkQ2xvc2U6IGZhbHNlLFxuICAgICAgZXZlbnQsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGNzc0NsYXNzOiAncG9wb3Zlci1sYXJnZScsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBtb2RhbC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1BvcG92ZXIgcmVzdWx0OiAnLCBkYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2ltdWxhdGUgYSB1cGxvYWQgZnVuY3Rpb24sIHdpdGggcHJvZ3Jlc3Npb25cbiAgICogQHBhcmFtIGZpbGVcbiAgICovXG4gIHVwbG9hZEZpbGUoZmlsZTogRmlsZSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCAkc3RvcCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgbG9hZFN0ZXAgPSBmaWxlLnNpemUgLyAxMDtcbiAgICBsZXQgbG9hZGVkID0gMDtcbiAgICByZXR1cm4gdGltZXIoMCwgMjUwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCgkc3RvcCksXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgbG9hZGVkICs9IGxvYWRTdGVwO1xuXG4gICAgICAgICAgLy8gUmV0dXJuIHByb2dyZXNzaW9uXG4gICAgICAgICAgaWYgKGxvYWRlZCA8IGZpbGUuc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDxIdHRwRXZlbnQ8YW55Pj57dHlwZTogSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcywgdG90YWw6IGZpbGUuc2l6ZSwgbG9hZGVkIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU3RvcCB0aGUgdGltZXJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICRzdG9wLm5leHQoKSwgMTAwKTtcblxuICAgICAgICAgIC8vIFJldHVybiBmaW5hbCByZXNwb25zZVxuICAgICAgICAgIHJldHVybiBuZXcgSHR0cFJlc3BvbnNlKHtib2R5OiB7ZmluYWxOYW1lIDogZmlsZS5uYW1lLCBtZXNzYWdlOiAnVXBsb2FkIHN1Y2NlZWQnfX0pO1xuICAgICAgICB9KVxuICAgICAgKVxuXG4gIH1cblxuICBhc3luYyBkZWxldGVGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zb2xlLmluZm8oJ1t0ZXN0aW5nXSBTaW11bGF0ZSByZW1vdGUgZGVsZXRpb24uLi4gKHdhaXRpbmcgMnMpJyk7XG4gICAgYXdhaXQgc2xlZXAoMjAwMCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { IonicModule } from '@ionic/angular';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
+
import { UploadFileTestingPage } from './upload-file.testing';
|
|
7
|
+
const routes = [
|
|
8
|
+
{
|
|
9
|
+
path: 'upload-file',
|
|
10
|
+
pathMatch: 'full',
|
|
11
|
+
component: UploadFileTestingPage
|
|
12
|
+
}
|
|
13
|
+
];
|
|
14
|
+
export class UploadFileTestingModule {
|
|
15
|
+
}
|
|
16
|
+
UploadFileTestingModule.decorators = [
|
|
17
|
+
{ type: NgModule, args: [{
|
|
18
|
+
imports: [
|
|
19
|
+
CommonModule,
|
|
20
|
+
IonicModule,
|
|
21
|
+
TranslateModule.forChild(),
|
|
22
|
+
RouterModule.forChild(routes)
|
|
23
|
+
],
|
|
24
|
+
declarations: [
|
|
25
|
+
UploadFileTestingPage
|
|
26
|
+
],
|
|
27
|
+
exports: [
|
|
28
|
+
RouterModule,
|
|
29
|
+
UploadFileTestingPage
|
|
30
|
+
]
|
|
31
|
+
},] }
|
|
32
|
+
];
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUudGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS90ZXN0aW5nL3VwbG9hZC1maWxlLnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE1BQU0sTUFBTSxHQUFXO0lBQ3JCO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLE1BQU07UUFDakIsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQztDQUNGLENBQUM7QUFpQkYsTUFBTSxPQUFPLHVCQUF1Qjs7O1lBZm5DLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLGVBQWUsQ0FBQyxRQUFRLEVBQUU7b0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2lCQUM5QjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1oscUJBQXFCO2lCQUN0QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixxQkFBcUI7aUJBQ3RCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyTW9kdWxlLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0lvbmljTW9kdWxlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7VXBsb2FkRmlsZVRlc3RpbmdQYWdlfSBmcm9tICcuL3VwbG9hZC1maWxlLnRlc3RpbmcnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICd1cGxvYWQtZmlsZScsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgY29tcG9uZW50OiBVcGxvYWRGaWxlVGVzdGluZ1BhZ2VcbiAgfVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25pY01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBVcGxvYWRGaWxlVGVzdGluZ1BhZ2VcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJvdXRlck1vZHVsZSxcbiAgICBVcGxvYWRGaWxlVGVzdGluZ1BhZ2VcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRGaWxlVGVzdGluZ01vZHVsZSB7XG59XG4iXX0=
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { PopoverController } from '@ionic/angular';
|
|
4
|
+
import { isEmptyArray, isNotEmptyArray, isNotNilOrBlank } from '../functions';
|
|
5
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
6
|
+
export class UploadFilePopover {
|
|
7
|
+
constructor(popoverController, translate, cd) {
|
|
8
|
+
this.popoverController = popoverController;
|
|
9
|
+
this.translate = translate;
|
|
10
|
+
this.cd = cd;
|
|
11
|
+
this.uniqueFile = false;
|
|
12
|
+
this.instantUpload = false;
|
|
13
|
+
this.importing = false;
|
|
14
|
+
}
|
|
15
|
+
get files() {
|
|
16
|
+
return this.uploader.files;
|
|
17
|
+
}
|
|
18
|
+
get disabled() {
|
|
19
|
+
return this.importing || isEmptyArray(this.files);
|
|
20
|
+
}
|
|
21
|
+
get valid() {
|
|
22
|
+
return isNotEmptyArray(this.files);
|
|
23
|
+
}
|
|
24
|
+
onValidate(event) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
27
|
+
// Avoid multiple call
|
|
28
|
+
if (this.importing)
|
|
29
|
+
return;
|
|
30
|
+
console.debug('[upload-file-popover] Validate form: will upload all files...');
|
|
31
|
+
try {
|
|
32
|
+
this.importing = true;
|
|
33
|
+
this.resetError();
|
|
34
|
+
try {
|
|
35
|
+
// Wait processing files finished
|
|
36
|
+
yield this.uploader.waitIdle();
|
|
37
|
+
// upload all files
|
|
38
|
+
yield this.uploader.uploadFiles();
|
|
39
|
+
const files = (this.uploader.processedFiles || [])
|
|
40
|
+
.filter(file => !file.deleting); // Remove deleting file (deletion in progress)
|
|
41
|
+
// Nothing to upload: close popover
|
|
42
|
+
if (isEmptyArray(files))
|
|
43
|
+
return this.cancel();
|
|
44
|
+
// check errors
|
|
45
|
+
const errors = files.map(file => file.error).filter(isNotNilOrBlank);
|
|
46
|
+
// If error: stop
|
|
47
|
+
if (errors.length) {
|
|
48
|
+
errors.forEach((error) => console.error(error));
|
|
49
|
+
throw { message: 'FILE.UPLOAD.ERROR' };
|
|
50
|
+
}
|
|
51
|
+
const filenames = files
|
|
52
|
+
.map(file => file.finalName || file.name);
|
|
53
|
+
// return filenames
|
|
54
|
+
yield this.popoverController.dismiss({ filenames });
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
this.error = (err && err.message) || err;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
this.importing = false;
|
|
62
|
+
this.cd.markForCheck();
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
cancel() {
|
|
67
|
+
return this.popoverController.dismiss();
|
|
68
|
+
}
|
|
69
|
+
resetError() {
|
|
70
|
+
if (this.error) {
|
|
71
|
+
this.error = null;
|
|
72
|
+
this.cd.markForCheck();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
UploadFilePopover.decorators = [
|
|
77
|
+
{ type: Component, args: [{
|
|
78
|
+
selector: 'app-upload-file-popover',
|
|
79
|
+
template: "\n<ion-content class=\"ion-no-padding\" scrollY=\"false\">\n <div class=\"modal-content\">\n <app-upload-file\n #uploader\n [uploadFn]=\"uploadFn\"\n [deleteFn]=\"deleteFn\"\n [fileExtension]=\"fileExtension\"\n [instantUpload]=\"instantUpload\"\n [uniqueFile]=\"uniqueFile\"\n [maxParallelUpload]=\"maxParallelUpload\"\n ></app-upload-file>\n </div>\n</ion-content>\n\n<ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col>\n <div *ngIf=\"importing\" class=\"importing-info\">\n <ion-text color=\"medium\"><small translate>FILE.UPLOAD.IMPORTING</small></ion-text>\n <ion-spinner name=\"dots\" color=\"accent\"></ion-spinner>\n </div>\n <ion-item *ngIf=\"error\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"ion-text-wrap\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n </ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n <ion-button\n [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onValidate($event)\"\n (keyup.enter)=\"onValidate($event)\"\n color=\"tertiary\"\n [disabled]=\"disabled\"\n >\n <ion-label translate>COMMON.BTN_IMPORT</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n",
|
|
80
|
+
encapsulation: ViewEncapsulation.None,
|
|
81
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
82
|
+
styles: [".importing-info{-webkit-padding-start:var(--ion-padding);padding-inline-start:var(--ion-padding);display:inline-flex;flex-wrap:nowrap;padding-top:8px}"]
|
|
83
|
+
},] }
|
|
84
|
+
];
|
|
85
|
+
UploadFilePopover.ctorParameters = () => [
|
|
86
|
+
{ type: PopoverController },
|
|
87
|
+
{ type: TranslateService },
|
|
88
|
+
{ type: ChangeDetectorRef }
|
|
89
|
+
];
|
|
90
|
+
UploadFilePopover.propDecorators = {
|
|
91
|
+
uploader: [{ type: ViewChild, args: ['uploader', { static: true },] }],
|
|
92
|
+
fileExtension: [{ type: Input }],
|
|
93
|
+
title: [{ type: Input }],
|
|
94
|
+
uniqueFile: [{ type: Input }],
|
|
95
|
+
instantUpload: [{ type: Input }],
|
|
96
|
+
uploadFn: [{ type: Input }],
|
|
97
|
+
deleteFn: [{ type: Input }],
|
|
98
|
+
maxParallelUpload: [{ type: Input }]
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUtcG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC91cGxvYWQtZmlsZS91cGxvYWQtZmlsZS1wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQXFCckQsTUFBTSxPQUFPLGlCQUFpQjtJQTJCNUIsWUFBc0IsaUJBQW9DLEVBQ3BDLFNBQTJCLEVBQzNCLEVBQXFCO1FBRnJCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF2QmxDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFLL0IsY0FBUyxHQUFHLEtBQUssQ0FBQztJQWtCbEIsQ0FBQztJQWZELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFD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LEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO2dDQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BvcG92ZXJDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1VwbG9hZEZpbGVDb21wb25lbnR9IGZyb20gJy4vdXBsb2FkLWZpbGUuY29tcG9uZW50JztcbmltcG9ydCB7RmlsZURlbGV0ZUZuLCBGaWxlVXBsb2FkRm4sIFVwbG9hZEZpbGV9IGZyb20gJy4vdXBsb2FkLWZpbGUubW9kZWwnO1xuaW1wb3J0IHtpc0VtcHR5QXJyYXksIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWxPckJsYW5rfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRGaWxlUG9wb3Zlck9wdGlvbnMge1xuICB0aXRsZT86IHN0cmluZztcblxuICB1cGxvYWRGbjogRmlsZVVwbG9hZEZuO1xuICBkZWxldGVGbj86IEZpbGVEZWxldGVGbjtcblxuICBpbnN0YW50VXBsb2FkPzogYm9vbGVhbjtcbiAgdW5pcXVlRmlsZT86IGJvb2xlYW47XG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmc7XG4gIG1heFBhcmFsbGVsVXBsb2FkPzogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdXBsb2FkLWZpbGUtcG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZmlsZS1wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWZpbGUtcG9wb3Zlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkRmlsZVBvcG92ZXIgaW1wbGVtZW50cyBVcGxvYWRGaWxlUG9wb3Zlck9wdGlvbnMge1xuXG4gIEBWaWV3Q2hpbGQoJ3VwbG9hZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgdXBsb2FkZXI6IFVwbG9hZEZpbGVDb21wb25lbnQ7XG5cbiAgQElucHV0KCkgZmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB1bmlxdWVGaWxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGluc3RhbnRVcGxvYWQgPSBmYWxzZTtcbiAgQElucHV0KCkgdXBsb2FkRm46IEZpbGVVcGxvYWRGbjtcbiAgQElucHV0KCkgZGVsZXRlRm46IEZpbGVEZWxldGVGbjtcbiAgQElucHV0KCkgbWF4UGFyYWxsZWxVcGxvYWQ6IG51bWJlcjtcblxuICBpbXBvcnRpbmcgPSBmYWxzZTtcbiAgZXJyb3I6IHN0cmluZztcblxuICBnZXQgZmlsZXMoKTogVXBsb2FkRmlsZVtdIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRlci5maWxlcztcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXBvcnRpbmcgfHwgaXNFbXB0eUFycmF5KHRoaXMuZmlsZXMpO1xuICB9XG5cbiAgZ2V0IHZhbGlkKCkge1xuICAgIHJldHVybiBpc05vdEVtcHR5QXJyYXkodGhpcy5maWxlcyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcG9wb3ZlckNvbnRyb2xsZXI6IFBvcG92ZXJDb250cm9sbGVyLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBhc3luYyBvblZhbGlkYXRlKGV2ZW50OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIEF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBpZiAodGhpcy5pbXBvcnRpbmcpIHJldHVybjtcblxuICAgIGNvbnNvbGUuZGVidWcoJ1t1cGxvYWQtZmlsZS1wb3BvdmVyXSBWYWxpZGF0ZSBmb3JtOiB3aWxsIHVwbG9hZCBhbGwgZmlsZXMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmltcG9ydGluZyA9IHRydWU7XG4gICAgICB0aGlzLnJlc2V0RXJyb3IoKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gV2FpdCBwcm9jZXNzaW5nIGZpbGVzIGZpbmlzaGVkXG4gICAgICAgIGF3YWl0IHRoaXMudXBsb2FkZXIud2FpdElkbGUoKTtcblxuICAgICAgICAvLyB1cGxvYWQgYWxsIGZpbGVzXG4gICAgICAgIGF3YWl0IHRoaXMudXBsb2FkZXIudXBsb2FkRmlsZXMoKTtcblxuICAgICAgICBjb25zdCBmaWxlczogVXBsb2FkRmlsZVtdID0gKHRoaXMudXBsb2FkZXIucHJvY2Vzc2VkRmlsZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcihmaWxlID0+ICFmaWxlLmRlbGV0aW5nKTsgLy8gUmVtb3ZlIGRlbGV0aW5nIGZpbGUgKGRlbGV0aW9uIGluIHByb2dyZXNzKVxuXG4gICAgICAgIC8vIE5vdGhpbmcgdG8gdXBsb2FkOiBjbG9zZSBwb3BvdmVyXG4gICAgICAgIGlmIChpc0VtcHR5QXJyYXkoZmlsZXMpKSByZXR1cm4gdGhpcy5jYW5jZWwoKTtcblxuICAgICAgICAvLyBjaGVjayBlcnJvcnNcbiAgICAgICAgY29uc3QgZXJyb3JzID0gZmlsZXMubWFwKGZpbGUgPT4gZmlsZS5lcnJvcikuZmlsdGVyKGlzTm90TmlsT3JCbGFuayk7XG5cbiAgICAgICAgLy8gSWYgZXJyb3I6IHN0b3BcbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBlcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoZXJyb3IpKTtcbiAgICAgICAgICB0aHJvdyB7bWVzc2FnZTogJ0ZJTEUuVVBMT0FELkVSUk9SJ307XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlbmFtZXMgPSBmaWxlc1xuICAgICAgICAgIC5tYXAoZmlsZSA9PiBmaWxlLmZpbmFsTmFtZSB8fCBmaWxlLm5hbWUpO1xuXG4gICAgICAgIC8vIHJldHVybiBmaWxlbmFtZXNcbiAgICAgICAgYXdhaXQgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5kaXNtaXNzKHsgZmlsZW5hbWVzIH0pO1xuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmVycm9yID0gKGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmltcG9ydGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuZGlzbWlzcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0RXJyb3IoKSB7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|