@igo2/context 1.14.3 → 1.14.4

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.
Files changed (125) hide show
  1. package/esm2020/igo2-context.mjs +4 -4
  2. package/esm2020/lib/context-import-export/context-import-export/context-import-export.component.mjs +228 -228
  3. package/esm2020/lib/context-import-export/context-import-export.module.mjs +84 -84
  4. package/esm2020/lib/context-import-export/index.mjs +2 -2
  5. package/esm2020/lib/context-import-export/shared/context-export.errors.mjs +14 -14
  6. package/esm2020/lib/context-import-export/shared/context-export.interface.mjs +1 -1
  7. package/esm2020/lib/context-import-export/shared/context-export.service.mjs +37 -37
  8. package/esm2020/lib/context-import-export/shared/context-export.utils.mjs +23 -23
  9. package/esm2020/lib/context-import-export/shared/context-import.errors.mjs +32 -32
  10. package/esm2020/lib/context-import-export/shared/context-import.service.mjs +78 -78
  11. package/esm2020/lib/context-import-export/shared/context-import.utils.mjs +157 -157
  12. package/esm2020/lib/context-import-export/shared/index.mjs +7 -7
  13. package/esm2020/lib/context-manager/context-edit/context-edit-binding.directive.mjs +53 -53
  14. package/esm2020/lib/context-manager/context-edit/context-edit.component.mjs +45 -45
  15. package/esm2020/lib/context-manager/context-edit/index.mjs +2 -2
  16. package/esm2020/lib/context-manager/context-form/context-form.component.mjs +146 -146
  17. package/esm2020/lib/context-manager/context-form/index.mjs +1 -1
  18. package/esm2020/lib/context-manager/context-item/context-item.component.mjs +244 -244
  19. package/esm2020/lib/context-manager/context-item/index.mjs +1 -1
  20. package/esm2020/lib/context-manager/context-list/context-list-binding.directive.mjs +259 -259
  21. package/esm2020/lib/context-manager/context-list/context-list.component.mjs +591 -591
  22. package/esm2020/lib/context-manager/context-list/context-list.enum.mjs +6 -6
  23. package/esm2020/lib/context-manager/context-list/index.mjs +2 -2
  24. package/esm2020/lib/context-manager/context-manager.module.mjs +161 -161
  25. package/esm2020/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +115 -115
  26. package/esm2020/lib/context-manager/context-permissions/context-permissions.component.mjs +305 -305
  27. package/esm2020/lib/context-manager/context-permissions/index.mjs +2 -2
  28. package/esm2020/lib/context-manager/index.mjs +6 -6
  29. package/esm2020/lib/context-manager/shared/context.enum.mjs +12 -12
  30. package/esm2020/lib/context-manager/shared/context.interface.mjs +1 -1
  31. package/esm2020/lib/context-manager/shared/context.service.mjs +628 -628
  32. package/esm2020/lib/context-manager/shared/index.mjs +5 -5
  33. package/esm2020/lib/context-manager/shared/layer-context.directive.mjs +145 -145
  34. package/esm2020/lib/context-manager/shared/map-context.directive.mjs +69 -69
  35. package/esm2020/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +71 -71
  36. package/esm2020/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +49 -49
  37. package/esm2020/lib/context-map-button/bookmark-button/index.mjs +2 -2
  38. package/esm2020/lib/context-map-button/context-map-button.module.mjs +95 -95
  39. package/esm2020/lib/context-map-button/index.mjs +3 -3
  40. package/esm2020/lib/context-map-button/poi-button/index.mjs +3 -3
  41. package/esm2020/lib/context-map-button/poi-button/poi-button.component.mjs +170 -170
  42. package/esm2020/lib/context-map-button/poi-button/poi-dialog.component.mjs +49 -49
  43. package/esm2020/lib/context-map-button/poi-button/shared/index.mjs +2 -2
  44. package/esm2020/lib/context-map-button/poi-button/shared/poi.interface.mjs +1 -1
  45. package/esm2020/lib/context-map-button/poi-button/shared/poi.service.mjs +32 -32
  46. package/esm2020/lib/context-map-button/user-button/index.mjs +2 -2
  47. package/esm2020/lib/context-map-button/user-button/user-button.animation.mjs +16 -16
  48. package/esm2020/lib/context-map-button/user-button/user-button.component.mjs +103 -103
  49. package/esm2020/lib/context-map-button/user-button/user-dialog.component.mjs +65 -65
  50. package/esm2020/lib/context.module.mjs +44 -44
  51. package/esm2020/lib/share-map/index.mjs +4 -4
  52. package/esm2020/lib/share-map/share-map/share-map-api.component.mjs +180 -180
  53. package/esm2020/lib/share-map/share-map/share-map-url.component.mjs +242 -242
  54. package/esm2020/lib/share-map/share-map/share-map.component.mjs +56 -56
  55. package/esm2020/lib/share-map/share-map.module.mjs +66 -66
  56. package/esm2020/lib/share-map/shared/index.mjs +1 -1
  57. package/esm2020/lib/share-map/shared/share-map.service.mjs +209 -209
  58. package/esm2020/lib/sidenav/index.mjs +1 -1
  59. package/esm2020/lib/sidenav/sidenav.component.mjs +169 -169
  60. package/esm2020/lib/sidenav/sidenav.module.mjs +60 -60
  61. package/esm2020/public_api.mjs +14 -14
  62. package/fesm2015/igo2-context.mjs +5035 -5035
  63. package/fesm2020/igo2-context.mjs +4684 -4684
  64. package/index.d.ts +5 -5
  65. package/lib/context-import-export/context-import-export/context-import-export.component.d.ts +45 -45
  66. package/lib/context-import-export/context-import-export.module.d.ts +23 -23
  67. package/lib/context-import-export/index.d.ts +2 -2
  68. package/lib/context-import-export/shared/context-export.errors.d.ts +8 -8
  69. package/lib/context-import-export/shared/context-export.interface.d.ts +5 -5
  70. package/lib/context-import-export/shared/context-export.service.d.ts +10 -10
  71. package/lib/context-import-export/shared/context-export.utils.d.ts +4 -4
  72. package/lib/context-import-export/shared/context-import.errors.d.ts +17 -17
  73. package/lib/context-import-export/shared/context-import.service.d.ts +18 -18
  74. package/lib/context-import-export/shared/context-import.utils.d.ts +17 -17
  75. package/lib/context-import-export/shared/index.d.ts +7 -7
  76. package/lib/context-manager/context-edit/context-edit-binding.directive.d.ts +21 -21
  77. package/lib/context-manager/context-edit/context-edit.component.d.ts +14 -14
  78. package/lib/context-manager/context-edit/index.d.ts +2 -2
  79. package/lib/context-manager/context-form/context-form.component.d.ts +31 -31
  80. package/lib/context-manager/context-form/index.d.ts +1 -1
  81. package/lib/context-manager/context-item/context-item.component.d.ts +32 -32
  82. package/lib/context-manager/context-item/index.d.ts +1 -1
  83. package/lib/context-manager/context-list/context-list-binding.directive.d.ts +46 -46
  84. package/lib/context-manager/context-list/context-list.component.d.ts +93 -93
  85. package/lib/context-manager/context-list/context-list.enum.d.ts +5 -5
  86. package/lib/context-manager/context-list/index.d.ts +2 -2
  87. package/lib/context-manager/context-manager.module.d.ts +37 -37
  88. package/lib/context-manager/context-permissions/context-permissions-binding.directive.d.ts +23 -23
  89. package/lib/context-manager/context-permissions/context-permissions.component.d.ts +40 -40
  90. package/lib/context-manager/context-permissions/index.d.ts +2 -2
  91. package/lib/context-manager/index.d.ts +6 -6
  92. package/lib/context-manager/shared/context.enum.d.ts +10 -10
  93. package/lib/context-manager/shared/context.interface.d.ts +75 -75
  94. package/lib/context-manager/shared/context.service.d.ts +75 -75
  95. package/lib/context-manager/shared/index.d.ts +5 -5
  96. package/lib/context-manager/shared/layer-context.directive.d.ts +27 -27
  97. package/lib/context-manager/shared/map-context.directive.d.ts +19 -19
  98. package/lib/context-map-button/bookmark-button/bookmark-button.component.d.ts +21 -21
  99. package/lib/context-map-button/bookmark-button/bookmark-dialog.component.d.ts +9 -9
  100. package/lib/context-map-button/bookmark-button/index.d.ts +2 -2
  101. package/lib/context-map-button/context-map-button.module.d.ts +27 -27
  102. package/lib/context-map-button/index.d.ts +3 -3
  103. package/lib/context-map-button/poi-button/index.d.ts +3 -3
  104. package/lib/context-map-button/poi-button/poi-button.component.d.ts +34 -34
  105. package/lib/context-map-button/poi-button/poi-dialog.component.d.ts +9 -9
  106. package/lib/context-map-button/poi-button/shared/index.d.ts +2 -2
  107. package/lib/context-map-button/poi-button/shared/poi.interface.d.ts +7 -7
  108. package/lib/context-map-button/poi-button/shared/poi.service.d.ts +16 -16
  109. package/lib/context-map-button/user-button/index.d.ts +2 -2
  110. package/lib/context-map-button/user-button/user-button.animation.d.ts +2 -2
  111. package/lib/context-map-button/user-button/user-button.component.d.ts +25 -25
  112. package/lib/context-map-button/user-button/user-dialog.component.d.ts +15 -15
  113. package/lib/context.module.d.ts +16 -16
  114. package/lib/share-map/index.d.ts +4 -4
  115. package/lib/share-map/share-map/share-map-api.component.d.ts +27 -27
  116. package/lib/share-map/share-map/share-map-url.component.d.ts +26 -26
  117. package/lib/share-map/share-map/share-map.component.d.ts +11 -11
  118. package/lib/share-map/share-map.module.d.ts +21 -21
  119. package/lib/share-map/shared/index.d.ts +1 -1
  120. package/lib/share-map/shared/share-map.service.d.ts +17 -17
  121. package/lib/sidenav/index.d.ts +1 -1
  122. package/lib/sidenav/sidenav.component.d.ts +35 -35
  123. package/lib/sidenav/sidenav.module.d.ts +18 -18
  124. package/package.json +6 -6
  125. package/public_api.d.ts +11 -11
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdvMi1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvaWdvMi1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -1,229 +1,229 @@
1
- import { Component, Input } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { BehaviorSubject } from 'rxjs';
4
- import { take } from 'rxjs/operators';
5
- import { handleFileExportError } from '../shared/context-export.utils';
6
- import { handleFileImportSuccess, handleFileImportError } from '../shared/context-import.utils';
7
- import { handleFileExportSuccess } from '../shared/context-export.utils';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../shared/context-import.service";
10
- import * as i2 from "../shared/context-export.service";
11
- import * as i3 from "@igo2/core";
12
- import * as i4 from "@angular/forms";
13
- import * as i5 from "../../context-manager/shared/context.service";
14
- import * as i6 from "@angular/common";
15
- import * as i7 from "@angular/material/button";
16
- import * as i8 from "@angular/material/button-toggle";
17
- import * as i9 from "@angular/material/divider";
18
- import * as i10 from "@angular/material/form-field";
19
- import * as i11 from "@angular/material/select";
20
- import * as i12 from "@angular/material/core";
21
- import * as i13 from "@angular/material/input";
22
- import * as i14 from "@igo2/common";
23
- import * as i15 from "@ngx-translate/core";
24
- const _c0 = function (a0) { return { size: a0 }; };
25
- function ContextImportExportComponent_div_8_Template(rf, ctx) { if (rf & 1) {
26
- const _r4 = i0.ɵɵgetCurrentView();
27
- i0.ɵɵelementStart(0, "div")(1, "form", 5)(2, "div", 6)(3, "button", 7);
28
- i0.ɵɵlistener("click", function ContextImportExportComponent_div_8_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r4); const _r2 = i0.ɵɵreference(10); return i0.ɵɵresetView(_r2.click()); });
29
- i0.ɵɵpipe(4, "async");
30
- i0.ɵɵtext(5);
31
- i0.ɵɵpipe(6, "translate");
32
- i0.ɵɵelementEnd();
33
- i0.ɵɵelement(7, "igo-spinner", 8);
34
- i0.ɵɵpipe(8, "async");
35
- i0.ɵɵelementStart(9, "input", 9, 10);
36
- i0.ɵɵlistener("click", function ContextImportExportComponent_div_8_Template_input_click_9_listener() { i0.ɵɵrestoreView(_r4); const _r2 = i0.ɵɵreference(10); return i0.ɵɵresetView(_r2.value = null); })("change", function ContextImportExportComponent_div_8_Template_input_change_9_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.importFiles($event.target.files)); });
37
- i0.ɵɵelementEnd()()();
38
- i0.ɵɵelementStart(11, "section", 11)(12, "h4");
39
- i0.ɵɵtext(13);
40
- i0.ɵɵpipe(14, "translate");
41
- i0.ɵɵelementEnd();
42
- i0.ɵɵelementStart(15, "ul")(16, "li");
43
- i0.ɵɵtext(17);
44
- i0.ɵɵpipe(18, "translate");
45
- i0.ɵɵelementEnd()()()();
46
- } if (rf & 2) {
47
- const ctx_r0 = i0.ɵɵnextContext();
48
- i0.ɵɵadvance(3);
49
- i0.ɵɵproperty("disabled", i0.ɵɵpipeBind1(4, 7, ctx_r0.loading$));
50
- i0.ɵɵadvance(2);
51
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 9, "igo.geo.importExportForm.importButton"), " ");
52
- i0.ɵɵadvance(2);
53
- i0.ɵɵproperty("shown", i0.ɵɵpipeBind1(8, 11, ctx_r0.loading$));
54
- i0.ɵɵadvance(2);
55
- i0.ɵɵstyleProp("display", "none");
56
- i0.ɵɵadvance(4);
57
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 13, "igo.geo.importExportForm.importClarifications"));
58
- i0.ɵɵadvance(4);
59
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(18, 15, "igo.geo.importExportForm.importSizeMax", i0.ɵɵpureFunction1(18, _c0, ctx_r0.fileSizeMb)));
60
- } }
61
- function ContextImportExportComponent_form_9_mat_option_18_Template(rf, ctx) { if (rf & 1) {
62
- i0.ɵɵelementStart(0, "mat-option", 2);
63
- i0.ɵɵtext(1);
64
- i0.ɵɵelementEnd();
65
- } if (rf & 2) {
66
- const layer_r9 = ctx.$implicit;
67
- i0.ɵɵproperty("value", layer_r9);
68
- i0.ɵɵadvance(1);
69
- i0.ɵɵtextInterpolate(layer_r9.title);
70
- } }
71
- function ContextImportExportComponent_form_9_Template(rf, ctx) { if (rf & 1) {
72
- const _r11 = i0.ɵɵgetCurrentView();
73
- i0.ɵɵelementStart(0, "form", 12)(1, "div", 13)(2, "mat-form-field", 14)(3, "mat-label");
74
- i0.ɵɵtext(4);
75
- i0.ɵɵpipe(5, "translate");
76
- i0.ɵɵelementEnd();
77
- i0.ɵɵelement(6, "input", 15);
78
- i0.ɵɵelementEnd()();
79
- i0.ɵɵelementStart(7, "div", 13)(8, "mat-form-field")(9, "mat-label");
80
- i0.ɵɵtext(10);
81
- i0.ɵɵpipe(11, "translate");
82
- i0.ɵɵelementEnd();
83
- i0.ɵɵelementStart(12, "mat-select", 16)(13, "mat-option", 17, 18);
84
- i0.ɵɵlistener("click", function ContextImportExportComponent_form_9_Template_mat_option_click_13_listener() { i0.ɵɵrestoreView(_r11); const _r7 = i0.ɵɵreference(14); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.selectAll(_r7)); });
85
- i0.ɵɵtext(15);
86
- i0.ɵɵpipe(16, "translate");
87
- i0.ɵɵelementEnd();
88
- i0.ɵɵelement(17, "mat-divider");
89
- i0.ɵɵtemplate(18, ContextImportExportComponent_form_9_mat_option_18_Template, 2, 2, "mat-option", 19);
90
- i0.ɵɵelementEnd()()();
91
- i0.ɵɵelementStart(19, "div", 6)(20, "button", 7);
92
- i0.ɵɵlistener("click", function ContextImportExportComponent_form_9_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.handleExportFormSubmit(ctx_r12.form.value)); });
93
- i0.ɵɵpipe(21, "async");
94
- i0.ɵɵtext(22);
95
- i0.ɵɵpipe(23, "translate");
96
- i0.ɵɵelementEnd();
97
- i0.ɵɵelement(24, "igo-spinner", 8);
98
- i0.ɵɵpipe(25, "async");
99
- i0.ɵɵelementEnd()();
100
- } if (rf & 2) {
101
- const ctx_r1 = i0.ɵɵnextContext();
102
- i0.ɵɵproperty("formGroup", ctx_r1.form);
103
- i0.ɵɵadvance(4);
104
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, "igo.context.contextImportExport.export.exportContextName"));
105
- i0.ɵɵadvance(6);
106
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 11, "igo.context.contextImportExport.export.exportPlaceHolder"));
107
- i0.ɵɵadvance(3);
108
- i0.ɵɵproperty("value", 1);
109
- i0.ɵɵadvance(2);
110
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(16, 13, "igo.context.contextImportExport.export.exportSelectAll"), " ");
111
- i0.ɵɵadvance(3);
112
- i0.ɵɵproperty("ngForOf", ctx_r1.userControlledLayerList);
113
- i0.ɵɵadvance(2);
114
- i0.ɵɵproperty("disabled", !ctx_r1.form.valid || i0.ɵɵpipeBind1(21, 15, ctx_r1.loading$));
115
- i0.ɵɵadvance(2);
116
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 17, "igo.geo.importExportForm.exportButton"), " ");
117
- i0.ɵɵadvance(2);
118
- i0.ɵɵproperty("shown", i0.ɵɵpipeBind1(25, 19, ctx_r1.loading$));
119
- } }
120
- export class ContextImportExportComponent {
121
- constructor(contextImportService, contextExportService, languageService, messageService, formBuilder, config, contextService) {
122
- this.contextImportService = contextImportService;
123
- this.contextExportService = contextExportService;
124
- this.languageService = languageService;
125
- this.messageService = messageService;
126
- this.formBuilder = formBuilder;
127
- this.config = config;
128
- this.contextService = contextService;
129
- this.inputProj = 'EPSG:4326';
130
- this.loading$ = new BehaviorSubject(false);
131
- this.forceNaming = false;
132
- this.activeImportExport = 'import';
133
- this.buildForm();
134
- }
135
- ngOnInit() {
136
- const configFileSizeMb = this.config.getConfig('importExport.clientSideFileSizeMaxMb');
137
- this.clientSideFileSizeMax =
138
- (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);
139
- this.fileSizeMb = this.clientSideFileSizeMax / Math.pow(1024, 2);
140
- this.layerList = this.contextService.getContextLayers(this.map);
141
- this.userControlledLayerList = this.layerList.filter(layer => layer.showInLayerList);
142
- }
143
- importFiles(files) {
144
- this.loading$.next(true);
145
- for (const file of files) {
146
- this.contextImportService.import(file).pipe(take(1)).subscribe((context) => this.onFileImportSuccess(file, context), (error) => this.onFileImportError(file, error), () => {
147
- this.loading$.next(false);
148
- });
149
- }
150
- }
151
- handleExportFormSubmit(contextOptions) {
152
- this.loading$.next(true);
153
- this.res = this.contextService.getContextFromLayers(this.map, contextOptions.layers, contextOptions.name);
154
- this.res.imported = true;
155
- this.contextExportService.export(this.res).pipe(take(1)).subscribe(() => { }, (error) => this.onFileExportError(error), () => {
156
- this.onFileExportSuccess();
157
- this.loading$.next(false);
158
- });
159
- }
160
- buildForm() {
161
- this.form = this.formBuilder.group({
162
- layers: ['', [Validators.required]],
163
- name: ['', [Validators.required]]
164
- });
165
- }
166
- onFileImportSuccess(file, context) {
167
- handleFileImportSuccess(file, context, this.messageService, this.languageService, this.contextService);
168
- }
169
- onFileImportError(file, error) {
170
- this.loading$.next(false);
171
- handleFileImportError(file, error, this.messageService, this.languageService, this.fileSizeMb);
172
- }
173
- onFileExportError(error) {
174
- this.loading$.next(false);
175
- handleFileExportError(error, this.messageService, this.languageService);
176
- }
177
- onFileExportSuccess() {
178
- handleFileExportSuccess(this.messageService, this.languageService);
179
- }
180
- selectAll(e) {
181
- if (e._selected) {
182
- this.form.controls.layers.setValue(this.userControlledLayerList);
183
- e._selected = true;
184
- }
185
- if (e._selected === false) {
186
- this.form.controls.layers.setValue([]);
187
- }
188
- }
189
- onImportExportChange(event) {
190
- this.activeImportExport = event.value;
191
- }
192
- }
193
- ContextImportExportComponent.ɵfac = function ContextImportExportComponent_Factory(t) { return new (t || ContextImportExportComponent)(i0.ɵɵdirectiveInject(i1.ContextImportService), i0.ɵɵdirectiveInject(i2.ContextExportService), i0.ɵɵdirectiveInject(i3.LanguageService), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i4.UntypedFormBuilder), i0.ɵɵdirectiveInject(i3.ConfigService), i0.ɵɵdirectiveInject(i5.ContextService)); };
194
- ContextImportExportComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContextImportExportComponent, selectors: [["igo-context-import-export"]], inputs: { map: "map" }, decls: 10, vars: 11, consts: [[1, "import-export-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [4, "ngIf"], ["class", "igo-form", 3, "formGroup", 4, "ngIf"], [1, "igo-form"], [1, "igo-form-button-group"], ["mat-raised-button", "", "type", "button", 3, "disabled", "click"], [3, "shown"], ["type", "file", 3, "click", "change"], ["fileInput", ""], [1, "mat-typography"], [1, "igo-form", 3, "formGroup"], [1, "igo-input-container"], [1, "example-full-width"], ["formControlName", "name", "matInput", "", 3, "value"], ["formControlName", "layers", "multiple", ""], [3, "value", "click"], ["e", ""], [3, "value", 4, "ngFor", "ngForOf"]], template: function ContextImportExportComponent_Template(rf, ctx) { if (rf & 1) {
195
- i0.ɵɵelementStart(0, "div", 0)(1, "mat-button-toggle-group", 1);
196
- i0.ɵɵlistener("change", function ContextImportExportComponent_Template_mat_button_toggle_group_change_1_listener($event) { return ctx.onImportExportChange($event); });
197
- i0.ɵɵelementStart(2, "mat-button-toggle", 2);
198
- i0.ɵɵtext(3);
199
- i0.ɵɵpipe(4, "translate");
200
- i0.ɵɵelementEnd();
201
- i0.ɵɵelementStart(5, "mat-button-toggle", 2);
202
- i0.ɵɵtext(6);
203
- i0.ɵɵpipe(7, "translate");
204
- i0.ɵɵelementEnd()()();
205
- i0.ɵɵtemplate(8, ContextImportExportComponent_div_8_Template, 19, 20, "div", 3);
206
- i0.ɵɵtemplate(9, ContextImportExportComponent_form_9_Template, 26, 21, "form", 4);
207
- } if (rf & 2) {
208
- i0.ɵɵadvance(1);
209
- i0.ɵɵproperty("value", ctx.activeImportExport);
210
- i0.ɵɵadvance(1);
211
- i0.ɵɵproperty("value", "import");
212
- i0.ɵɵadvance(1);
213
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, "igo.geo.importExportForm.importTabTitle"), " ");
214
- i0.ɵɵadvance(2);
215
- i0.ɵɵproperty("value", "export");
216
- i0.ɵɵadvance(1);
217
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 9, "igo.geo.importExportForm.exportTabTitle"), " ");
218
- i0.ɵɵadvance(2);
219
- i0.ɵɵproperty("ngIf", ctx.activeImportExport === "import");
220
- i0.ɵɵadvance(1);
221
- i0.ɵɵproperty("ngIf", ctx.activeImportExport === "export");
222
- } }, dependencies: [i4.ɵNgNoValidate, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.NgForm, i4.FormGroupDirective, i4.FormControlName, i6.NgForOf, i6.NgIf, i7.MatButton, i8.MatButtonToggleGroup, i8.MatButtonToggle, i9.MatDivider, i10.MatFormField, i10.MatLabel, i11.MatSelect, i12.MatOption, i13.MatInput, i14.SpinnerComponent, i6.AsyncPipe, i15.TranslatePipe], styles: [".import-export-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}.igo-input-container[_ngcontent-%COMP%]{padding:10px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}h4[_ngcontent-%COMP%]{padding:0 5px}.igo-form[_ngcontent-%COMP%]{padding:15px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center;padding-top:10px}igo-spinner[_ngcontent-%COMP%]{position:absolute;padding-left:10px}"] });
223
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextImportExportComponent, [{
224
- type: Component,
225
- args: [{ selector: 'igo-context-import-export', template: "<div class=\"import-export-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\">\n <mat-button-toggle [value]=\"'import'\">\n {{'igo.geo.importExportForm.importTabTitle' | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{'igo.geo.importExportForm.exportTabTitle' | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"activeImportExport === 'import'\">\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button mat-raised-button type=\"button\" (click)=\"fileInput.click()\" [disabled]=\"loading$ | async\">\n {{'igo.geo.importExportForm.importButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = null\"\n (change)=\"importFiles($event.target.files)\">\n </div>\n </form>\n <section class=\"mat-typography\">\n <h4>{{'igo.geo.importExportForm.importClarifications' | translate}}</h4>\n <ul>\n <li>{{'igo.geo.importExportForm.importSizeMax' | translate: {size: fileSizeMb} }}</li>\n </ul>\n </section>\n</div>\n\n\n<form class=\"igo-form\" *ngIf=\"activeImportExport === 'export'\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{'igo.context.contextImportExport.export.exportContextName' | translate}}</mat-label>\n <input formControlName=\"name\" matInput [value]=\"\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.context.contextImportExport.export.exportPlaceHolder' | translate}}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{'igo.context.contextImportExport.export.exportSelectAll' | translate}}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option *ngFor=\"let layer of userControlledLayerList\" [value]=\"layer\">{{layer.title}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\">\n {{'igo.geo.importExportForm.exportButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n </div>\n</form>\n", styles: [".import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}.igo-input-container{padding:10px}.igo-input-container mat-form-field{width:100%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}\n"] }]
226
- }], function () { return [{ type: i1.ContextImportService }, { type: i2.ContextExportService }, { type: i3.LanguageService }, { type: i3.MessageService }, { type: i4.UntypedFormBuilder }, { type: i3.ConfigService }, { type: i5.ContextService }]; }, { map: [{
227
- type: Input
228
- }] }); })();
1
+ import { Component, Input } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { take } from 'rxjs/operators';
5
+ import { handleFileExportError } from '../shared/context-export.utils';
6
+ import { handleFileImportSuccess, handleFileImportError } from '../shared/context-import.utils';
7
+ import { handleFileExportSuccess } from '../shared/context-export.utils';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../shared/context-import.service";
10
+ import * as i2 from "../shared/context-export.service";
11
+ import * as i3 from "@igo2/core";
12
+ import * as i4 from "@angular/forms";
13
+ import * as i5 from "../../context-manager/shared/context.service";
14
+ import * as i6 from "@angular/common";
15
+ import * as i7 from "@angular/material/button";
16
+ import * as i8 from "@angular/material/button-toggle";
17
+ import * as i9 from "@angular/material/divider";
18
+ import * as i10 from "@angular/material/form-field";
19
+ import * as i11 from "@angular/material/select";
20
+ import * as i12 from "@angular/material/core";
21
+ import * as i13 from "@angular/material/input";
22
+ import * as i14 from "@igo2/common";
23
+ import * as i15 from "@ngx-translate/core";
24
+ const _c0 = function (a0) { return { size: a0 }; };
25
+ function ContextImportExportComponent_div_8_Template(rf, ctx) { if (rf & 1) {
26
+ const _r4 = i0.ɵɵgetCurrentView();
27
+ i0.ɵɵelementStart(0, "div")(1, "form", 5)(2, "div", 6)(3, "button", 7);
28
+ i0.ɵɵlistener("click", function ContextImportExportComponent_div_8_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r4); const _r2 = i0.ɵɵreference(10); return i0.ɵɵresetView(_r2.click()); });
29
+ i0.ɵɵpipe(4, "async");
30
+ i0.ɵɵtext(5);
31
+ i0.ɵɵpipe(6, "translate");
32
+ i0.ɵɵelementEnd();
33
+ i0.ɵɵelement(7, "igo-spinner", 8);
34
+ i0.ɵɵpipe(8, "async");
35
+ i0.ɵɵelementStart(9, "input", 9, 10);
36
+ i0.ɵɵlistener("click", function ContextImportExportComponent_div_8_Template_input_click_9_listener() { i0.ɵɵrestoreView(_r4); const _r2 = i0.ɵɵreference(10); return i0.ɵɵresetView(_r2.value = null); })("change", function ContextImportExportComponent_div_8_Template_input_change_9_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.importFiles($event.target.files)); });
37
+ i0.ɵɵelementEnd()()();
38
+ i0.ɵɵelementStart(11, "section", 11)(12, "h4");
39
+ i0.ɵɵtext(13);
40
+ i0.ɵɵpipe(14, "translate");
41
+ i0.ɵɵelementEnd();
42
+ i0.ɵɵelementStart(15, "ul")(16, "li");
43
+ i0.ɵɵtext(17);
44
+ i0.ɵɵpipe(18, "translate");
45
+ i0.ɵɵelementEnd()()()();
46
+ } if (rf & 2) {
47
+ const ctx_r0 = i0.ɵɵnextContext();
48
+ i0.ɵɵadvance(3);
49
+ i0.ɵɵproperty("disabled", i0.ɵɵpipeBind1(4, 7, ctx_r0.loading$));
50
+ i0.ɵɵadvance(2);
51
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 9, "igo.geo.importExportForm.importButton"), " ");
52
+ i0.ɵɵadvance(2);
53
+ i0.ɵɵproperty("shown", i0.ɵɵpipeBind1(8, 11, ctx_r0.loading$));
54
+ i0.ɵɵadvance(2);
55
+ i0.ɵɵstyleProp("display", "none");
56
+ i0.ɵɵadvance(4);
57
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 13, "igo.geo.importExportForm.importClarifications"));
58
+ i0.ɵɵadvance(4);
59
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(18, 15, "igo.geo.importExportForm.importSizeMax", i0.ɵɵpureFunction1(18, _c0, ctx_r0.fileSizeMb)));
60
+ } }
61
+ function ContextImportExportComponent_form_9_mat_option_18_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "mat-option", 2);
63
+ i0.ɵɵtext(1);
64
+ i0.ɵɵelementEnd();
65
+ } if (rf & 2) {
66
+ const layer_r9 = ctx.$implicit;
67
+ i0.ɵɵproperty("value", layer_r9);
68
+ i0.ɵɵadvance(1);
69
+ i0.ɵɵtextInterpolate(layer_r9.title);
70
+ } }
71
+ function ContextImportExportComponent_form_9_Template(rf, ctx) { if (rf & 1) {
72
+ const _r11 = i0.ɵɵgetCurrentView();
73
+ i0.ɵɵelementStart(0, "form", 12)(1, "div", 13)(2, "mat-form-field", 14)(3, "mat-label");
74
+ i0.ɵɵtext(4);
75
+ i0.ɵɵpipe(5, "translate");
76
+ i0.ɵɵelementEnd();
77
+ i0.ɵɵelement(6, "input", 15);
78
+ i0.ɵɵelementEnd()();
79
+ i0.ɵɵelementStart(7, "div", 13)(8, "mat-form-field")(9, "mat-label");
80
+ i0.ɵɵtext(10);
81
+ i0.ɵɵpipe(11, "translate");
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵelementStart(12, "mat-select", 16)(13, "mat-option", 17, 18);
84
+ i0.ɵɵlistener("click", function ContextImportExportComponent_form_9_Template_mat_option_click_13_listener() { i0.ɵɵrestoreView(_r11); const _r7 = i0.ɵɵreference(14); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.selectAll(_r7)); });
85
+ i0.ɵɵtext(15);
86
+ i0.ɵɵpipe(16, "translate");
87
+ i0.ɵɵelementEnd();
88
+ i0.ɵɵelement(17, "mat-divider");
89
+ i0.ɵɵtemplate(18, ContextImportExportComponent_form_9_mat_option_18_Template, 2, 2, "mat-option", 19);
90
+ i0.ɵɵelementEnd()()();
91
+ i0.ɵɵelementStart(19, "div", 6)(20, "button", 7);
92
+ i0.ɵɵlistener("click", function ContextImportExportComponent_form_9_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.handleExportFormSubmit(ctx_r12.form.value)); });
93
+ i0.ɵɵpipe(21, "async");
94
+ i0.ɵɵtext(22);
95
+ i0.ɵɵpipe(23, "translate");
96
+ i0.ɵɵelementEnd();
97
+ i0.ɵɵelement(24, "igo-spinner", 8);
98
+ i0.ɵɵpipe(25, "async");
99
+ i0.ɵɵelementEnd()();
100
+ } if (rf & 2) {
101
+ const ctx_r1 = i0.ɵɵnextContext();
102
+ i0.ɵɵproperty("formGroup", ctx_r1.form);
103
+ i0.ɵɵadvance(4);
104
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, "igo.context.contextImportExport.export.exportContextName"));
105
+ i0.ɵɵadvance(6);
106
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 11, "igo.context.contextImportExport.export.exportPlaceHolder"));
107
+ i0.ɵɵadvance(3);
108
+ i0.ɵɵproperty("value", 1);
109
+ i0.ɵɵadvance(2);
110
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(16, 13, "igo.context.contextImportExport.export.exportSelectAll"), " ");
111
+ i0.ɵɵadvance(3);
112
+ i0.ɵɵproperty("ngForOf", ctx_r1.userControlledLayerList);
113
+ i0.ɵɵadvance(2);
114
+ i0.ɵɵproperty("disabled", !ctx_r1.form.valid || i0.ɵɵpipeBind1(21, 15, ctx_r1.loading$));
115
+ i0.ɵɵadvance(2);
116
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 17, "igo.geo.importExportForm.exportButton"), " ");
117
+ i0.ɵɵadvance(2);
118
+ i0.ɵɵproperty("shown", i0.ɵɵpipeBind1(25, 19, ctx_r1.loading$));
119
+ } }
120
+ export class ContextImportExportComponent {
121
+ constructor(contextImportService, contextExportService, languageService, messageService, formBuilder, config, contextService) {
122
+ this.contextImportService = contextImportService;
123
+ this.contextExportService = contextExportService;
124
+ this.languageService = languageService;
125
+ this.messageService = messageService;
126
+ this.formBuilder = formBuilder;
127
+ this.config = config;
128
+ this.contextService = contextService;
129
+ this.inputProj = 'EPSG:4326';
130
+ this.loading$ = new BehaviorSubject(false);
131
+ this.forceNaming = false;
132
+ this.activeImportExport = 'import';
133
+ this.buildForm();
134
+ }
135
+ ngOnInit() {
136
+ const configFileSizeMb = this.config.getConfig('importExport.clientSideFileSizeMaxMb');
137
+ this.clientSideFileSizeMax =
138
+ (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);
139
+ this.fileSizeMb = this.clientSideFileSizeMax / Math.pow(1024, 2);
140
+ this.layerList = this.contextService.getContextLayers(this.map);
141
+ this.userControlledLayerList = this.layerList.filter(layer => layer.showInLayerList);
142
+ }
143
+ importFiles(files) {
144
+ this.loading$.next(true);
145
+ for (const file of files) {
146
+ this.contextImportService.import(file).pipe(take(1)).subscribe((context) => this.onFileImportSuccess(file, context), (error) => this.onFileImportError(file, error), () => {
147
+ this.loading$.next(false);
148
+ });
149
+ }
150
+ }
151
+ handleExportFormSubmit(contextOptions) {
152
+ this.loading$.next(true);
153
+ this.res = this.contextService.getContextFromLayers(this.map, contextOptions.layers, contextOptions.name);
154
+ this.res.imported = true;
155
+ this.contextExportService.export(this.res).pipe(take(1)).subscribe(() => { }, (error) => this.onFileExportError(error), () => {
156
+ this.onFileExportSuccess();
157
+ this.loading$.next(false);
158
+ });
159
+ }
160
+ buildForm() {
161
+ this.form = this.formBuilder.group({
162
+ layers: ['', [Validators.required]],
163
+ name: ['', [Validators.required]]
164
+ });
165
+ }
166
+ onFileImportSuccess(file, context) {
167
+ handleFileImportSuccess(file, context, this.messageService, this.languageService, this.contextService);
168
+ }
169
+ onFileImportError(file, error) {
170
+ this.loading$.next(false);
171
+ handleFileImportError(file, error, this.messageService, this.languageService, this.fileSizeMb);
172
+ }
173
+ onFileExportError(error) {
174
+ this.loading$.next(false);
175
+ handleFileExportError(error, this.messageService, this.languageService);
176
+ }
177
+ onFileExportSuccess() {
178
+ handleFileExportSuccess(this.messageService, this.languageService);
179
+ }
180
+ selectAll(e) {
181
+ if (e._selected) {
182
+ this.form.controls.layers.setValue(this.userControlledLayerList);
183
+ e._selected = true;
184
+ }
185
+ if (e._selected === false) {
186
+ this.form.controls.layers.setValue([]);
187
+ }
188
+ }
189
+ onImportExportChange(event) {
190
+ this.activeImportExport = event.value;
191
+ }
192
+ }
193
+ ContextImportExportComponent.ɵfac = function ContextImportExportComponent_Factory(t) { return new (t || ContextImportExportComponent)(i0.ɵɵdirectiveInject(i1.ContextImportService), i0.ɵɵdirectiveInject(i2.ContextExportService), i0.ɵɵdirectiveInject(i3.LanguageService), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i4.UntypedFormBuilder), i0.ɵɵdirectiveInject(i3.ConfigService), i0.ɵɵdirectiveInject(i5.ContextService)); };
194
+ ContextImportExportComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContextImportExportComponent, selectors: [["igo-context-import-export"]], inputs: { map: "map" }, decls: 10, vars: 11, consts: [[1, "import-export-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [4, "ngIf"], ["class", "igo-form", 3, "formGroup", 4, "ngIf"], [1, "igo-form"], [1, "igo-form-button-group"], ["mat-raised-button", "", "type", "button", 3, "disabled", "click"], [3, "shown"], ["type", "file", 3, "click", "change"], ["fileInput", ""], [1, "mat-typography"], [1, "igo-form", 3, "formGroup"], [1, "igo-input-container"], [1, "example-full-width"], ["formControlName", "name", "matInput", "", 3, "value"], ["formControlName", "layers", "multiple", ""], [3, "value", "click"], ["e", ""], [3, "value", 4, "ngFor", "ngForOf"]], template: function ContextImportExportComponent_Template(rf, ctx) { if (rf & 1) {
195
+ i0.ɵɵelementStart(0, "div", 0)(1, "mat-button-toggle-group", 1);
196
+ i0.ɵɵlistener("change", function ContextImportExportComponent_Template_mat_button_toggle_group_change_1_listener($event) { return ctx.onImportExportChange($event); });
197
+ i0.ɵɵelementStart(2, "mat-button-toggle", 2);
198
+ i0.ɵɵtext(3);
199
+ i0.ɵɵpipe(4, "translate");
200
+ i0.ɵɵelementEnd();
201
+ i0.ɵɵelementStart(5, "mat-button-toggle", 2);
202
+ i0.ɵɵtext(6);
203
+ i0.ɵɵpipe(7, "translate");
204
+ i0.ɵɵelementEnd()()();
205
+ i0.ɵɵtemplate(8, ContextImportExportComponent_div_8_Template, 19, 20, "div", 3);
206
+ i0.ɵɵtemplate(9, ContextImportExportComponent_form_9_Template, 26, 21, "form", 4);
207
+ } if (rf & 2) {
208
+ i0.ɵɵadvance(1);
209
+ i0.ɵɵproperty("value", ctx.activeImportExport);
210
+ i0.ɵɵadvance(1);
211
+ i0.ɵɵproperty("value", "import");
212
+ i0.ɵɵadvance(1);
213
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, "igo.geo.importExportForm.importTabTitle"), " ");
214
+ i0.ɵɵadvance(2);
215
+ i0.ɵɵproperty("value", "export");
216
+ i0.ɵɵadvance(1);
217
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 9, "igo.geo.importExportForm.exportTabTitle"), " ");
218
+ i0.ɵɵadvance(2);
219
+ i0.ɵɵproperty("ngIf", ctx.activeImportExport === "import");
220
+ i0.ɵɵadvance(1);
221
+ i0.ɵɵproperty("ngIf", ctx.activeImportExport === "export");
222
+ } }, dependencies: [i4.ɵNgNoValidate, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.NgForm, i4.FormGroupDirective, i4.FormControlName, i6.NgForOf, i6.NgIf, i7.MatButton, i8.MatButtonToggleGroup, i8.MatButtonToggle, i9.MatDivider, i10.MatFormField, i10.MatLabel, i11.MatSelect, i12.MatOption, i13.MatInput, i14.SpinnerComponent, i6.AsyncPipe, i15.TranslatePipe], styles: [".import-export-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}.igo-input-container[_ngcontent-%COMP%]{padding:10px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}h4[_ngcontent-%COMP%]{padding:0 5px}.igo-form[_ngcontent-%COMP%]{padding:15px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center;padding-top:10px}igo-spinner[_ngcontent-%COMP%]{position:absolute;padding-left:10px}"] });
223
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextImportExportComponent, [{
224
+ type: Component,
225
+ args: [{ selector: 'igo-context-import-export', template: "<div class=\"import-export-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\">\n <mat-button-toggle [value]=\"'import'\">\n {{'igo.geo.importExportForm.importTabTitle' | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{'igo.geo.importExportForm.exportTabTitle' | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"activeImportExport === 'import'\">\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button mat-raised-button type=\"button\" (click)=\"fileInput.click()\" [disabled]=\"loading$ | async\">\n {{'igo.geo.importExportForm.importButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = null\"\n (change)=\"importFiles($event.target.files)\">\n </div>\n </form>\n <section class=\"mat-typography\">\n <h4>{{'igo.geo.importExportForm.importClarifications' | translate}}</h4>\n <ul>\n <li>{{'igo.geo.importExportForm.importSizeMax' | translate: {size: fileSizeMb} }}</li>\n </ul>\n </section>\n</div>\n\n\n<form class=\"igo-form\" *ngIf=\"activeImportExport === 'export'\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{'igo.context.contextImportExport.export.exportContextName' | translate}}</mat-label>\n <input formControlName=\"name\" matInput [value]=\"\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.context.contextImportExport.export.exportPlaceHolder' | translate}}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{'igo.context.contextImportExport.export.exportSelectAll' | translate}}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option *ngFor=\"let layer of userControlledLayerList\" [value]=\"layer\">{{layer.title}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\">\n {{'igo.geo.importExportForm.exportButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n </div>\n</form>\n", styles: [".import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}.igo-input-container{padding:10px}.igo-input-container mat-form-field{width:100%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}\n"] }]
226
+ }], function () { return [{ type: i1.ContextImportService }, { type: i2.ContextExportService }, { type: i3.LanguageService }, { type: i3.MessageService }, { type: i4.UntypedFormBuilder }, { type: i3.ConfigService }, { type: i5.ContextService }]; }, { map: [{
227
+ type: Input
228
+ }] }); })();
229
229
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LWltcG9ydC1leHBvcnQvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC9jb250ZXh0LWltcG9ydC1leHBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUF3QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU10QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUN0QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0R6RSwyQkFBNkMsY0FBQSxhQUFBLGdCQUFBO0lBR08sc0tBQVMsZUFBQSxXQUFpQixDQUFBLElBQUM7O0lBQy9ELFlBQ0o7O0lBQUEsaUJBQVM7SUFDVCxpQ0FBc0Q7O0lBQ3RELG9DQUtnRDtJQUQ1QyxxS0FBUywyQkFBa0IsSUFBSSxDQUFBLElBQUMsbUtBQ3RCLGVBQUEsdUNBQWdDLENBQUEsSUFEVjtJQUpwQyxpQkFLZ0QsRUFBQSxFQUFB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O2tCQUFYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIExhbmd1YWdlU2VydmljZSwgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgTGF5ZXIsIFZlY3RvckxheWVyIH0gZnJvbSAnQGlnbzIvZ2VvJztcbmltcG9ydCB0eXBlIHsgSWdvTWFwIH0gZnJvbSAnQGlnbzIvZ2VvJztcblxuaW1wb3J0IHsgaGFuZGxlRmlsZUV4cG9ydEVycm9yIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnV0aWxzJztcbmltcG9ydCB7XG4gIGhhbmRsZUZpbGVJbXBvcnRTdWNjZXNzLFxuICBoYW5kbGVGaWxlSW1wb3J0RXJyb3Jcbn0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtaW1wb3J0LnV0aWxzJztcbmltcG9ydCB7IGhhbmRsZUZpbGVFeHBvcnRTdWNjZXNzIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnV0aWxzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udGV4dC1tYW5hZ2VyL3NoYXJlZC9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dEltcG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC1pbXBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0RXhwb3J0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LWV4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IERldGFpbGVkQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tY29udGV4dC1pbXBvcnQtZXhwb3J0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRJbXBvcnRFeHBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHVibGljIGxheWVyczogVmVjdG9yTGF5ZXJbXTtcbiAgcHVibGljIGlucHV0UHJvajogc3RyaW5nID0gJ0VQU0c6NDMyNic7XG4gIHB1YmxpYyBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgZm9yY2VOYW1pbmcgPSBmYWxzZTtcbiAgcHVibGljIGxheWVyTGlzdDogTGF5ZXJbXTtcbiAgcHVibGljIHVzZXJDb250cm9sbGVkTGF5ZXJMaXN0OiBMYXllcltdO1xuICBwdWJsaWMgcmVzOiBEZXRhaWxlZENvbnRleHQ7XG4gIHByaXZhdGUgY2xpZW50U2lkZUZpbGVTaXplTWF4OiBudW1iZXI7XG4gIHB1YmxpYyBmaWxlU2l6ZU1iOiBudW1iZXI7XG4gIHB1YmxpYyBhY3RpdmVJbXBvcnRFeHBvcnQ6IHN0cmluZyA9ICdpbXBvcnQnO1xuXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dEltcG9ydFNlcnZpY2U6IENvbnRleHRJbXBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dEV4cG9ydFNlcnZpY2U6IENvbnRleHRFeHBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb25maWdGaWxlU2l6ZU1iID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKFxuICAgICAgJ2ltcG9ydEV4cG9ydC5jbGllbnRTaWRlRmlsZVNpemVNYXhNYidcbiAgICApO1xuICAgIHRoaXMuY2xpZW50U2lkZUZpbGVTaXplTWF4ID1cbiAgICAgIChjb25maWdGaWxlU2l6ZU1iID8gY29uZmlnRmlsZVNpemVNYiA6IDMwKSAqIE1hdGgucG93KDEwMjQsIDIpO1xuICAgIHRoaXMuZmlsZVNpemVNYiA9IHRoaXMuY2xpZW50U2lkZUZpbGVTaXplTWF4IC8gTWF0aC5wb3coMTAyNCwgMik7XG4gICAgdGhpcy5sYXllckxpc3QgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldENvbnRleHRMYXllcnModGhpcy5tYXApO1xuICAgIHRoaXMudXNlckNvbnRyb2xsZWRMYXllckxpc3QgPSB0aGlzLmxheWVyTGlzdC5maWx0ZXIobGF5ZXIgPT4gbGF5ZXIuc2hvd0luTGF5ZXJMaXN0KTtcbiAgfVxuXG4gIGltcG9ydEZpbGVzKGZpbGVzOiBGaWxlW10pIHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICB0aGlzLmNvbnRleHRJbXBvcnRTZXJ2aWNlLmltcG9ydChmaWxlKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcbiAgICAgICAgKGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkgPT4gdGhpcy5vbkZpbGVJbXBvcnRTdWNjZXNzKGZpbGUsIGNvbnRleHQpLFxuICAgICAgICAoZXJyb3I6IEVycm9yKSA9PiB0aGlzLm9uRmlsZUltcG9ydEVycm9yKGZpbGUsIGVycm9yKSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRXhwb3J0Rm9ybVN1Ym1pdChjb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnJlcyA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dEZyb21MYXllcnMoXG4gICAgICB0aGlzLm1hcCxcbiAgICAgIGNvbnRleHRPcHRpb25zLmxheWVycyxcbiAgICAgIGNvbnRleHRPcHRpb25zLm5hbWVcbiAgICApO1xuICAgIHRoaXMucmVzLmltcG9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNvbnRleHRFeHBvcnRTZXJ2aWNlLmV4cG9ydCh0aGlzLnJlcykucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7fSxcbiAgICAgIChlcnJvcjogRXJyb3IpID0+IHRoaXMub25GaWxlRXhwb3J0RXJyb3IoZXJyb3IpLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLm9uRmlsZUV4cG9ydFN1Y2Nlc3MoKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0oKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBsYXllcnM6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIG5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbXBvcnRTdWNjZXNzKGZpbGU6IEZpbGUsIGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIGhhbmRsZUZpbGVJbXBvcnRTdWNjZXNzKFxuICAgICAgZmlsZSxcbiAgICAgIGNvbnRleHQsXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UsXG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25GaWxlSW1wb3J0RXJyb3IoZmlsZTogRmlsZSwgZXJyb3I6IEVycm9yKSB7XG4gICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICBoYW5kbGVGaWxlSW1wb3J0RXJyb3IoXG4gICAgICBmaWxlLFxuICAgICAgZXJyb3IsXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UsXG4gICAgICB0aGlzLmZpbGVTaXplTWJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVFeHBvcnRFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIGhhbmRsZUZpbGVFeHBvcnRFcnJvcihlcnJvciwgdGhpcy5tZXNzYWdlU2VydmljZSwgdGhpcy5sYW5ndWFnZVNlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVFeHBvcnRTdWNjZXNzKCkge1xuICAgIGhhbmRsZUZpbGVFeHBvcnRTdWNjZXNzKHRoaXMubWVzc2FnZVNlcnZpY2UsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIHNlbGVjdEFsbChlKSB7XG4gICAgaWYgKGUuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubGF5ZXJzLnNldFZhbHVlKHRoaXMudXNlckNvbnRyb2xsZWRMYXllckxpc3QpO1xuICAgICAgZS5fc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZS5fc2VsZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubGF5ZXJzLnNldFZhbHVlKFtdKTtcbiAgICB9XG4gIH1cblxuICBvbkltcG9ydEV4cG9ydENoYW5nZShldmVudCkge1xuICAgIHRoaXMuYWN0aXZlSW1wb3J0RXhwb3J0ID0gZXZlbnQudmFsdWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbXBvcnQtZXhwb3J0LXRvZ2dsZSBtYXQtdHlwb2dyYXBoeVwiPlxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAgIFt2YWx1ZV09XCJhY3RpdmVJbXBvcnRFeHBvcnRcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25JbXBvcnRFeHBvcnRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwiJ2ltcG9ydCdcIj5cbiAgICAgICAgICAgIHt7J2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5pbXBvcnRUYWJUaXRsZScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCInZXhwb3J0J1wiPlxuICAgICAgICAgICAge3snaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmV4cG9ydFRhYlRpdGxlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJhY3RpdmVJbXBvcnRFeHBvcnQgPT09ICdpbXBvcnQnXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJpZ28tZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWdvLWZvcm0tYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBbZGlzYWJsZWRdPVwibG9hZGluZyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgICAgIHt7J2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5pbXBvcnRCdXR0b24nIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGlnby1zcGlubmVyIFtzaG93bl09XCJsb2FkaW5nJCB8IGFzeW5jXCI+PC9pZ28tc3Bpbm5lcj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LnZhbHVlID0gbnVsbFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJpbXBvcnRGaWxlcygkZXZlbnQudGFyZ2V0LmZpbGVzKVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgICA8aDQ+e3snaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmltcG9ydENsYXJpZmljYXRpb25zJyB8IHRyYW5zbGF0ZX19PC9oND5cbiAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICA8bGk+e3snaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmltcG9ydFNpemVNYXgnIHwgdHJhbnNsYXRlOiB7c2l6ZTogZmlsZVNpemVNYn0gfX08L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICA8L3NlY3Rpb24+XG48L2Rpdj5cblxuXG48Zm9ybSBjbGFzcz1cImlnby1mb3JtXCIgKm5nSWY9XCJhY3RpdmVJbXBvcnRFeHBvcnQgPT09ICdleHBvcnQnXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0LmV4cG9ydENvbnRleHROYW1lJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIG1hdElucHV0IFt2YWx1ZV09XCJcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0LmV4cG9ydFBsYWNlSG9sZGVyJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJsYXllcnNcIiBtdWx0aXBsZT5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMVwiIChjbGljayk9XCJzZWxlY3RBbGwoZSlcIiAjZT5cbiAgICAgICAgICAgICAgICAgICAge3snaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5leHBvcnQuZXhwb3J0U2VsZWN0QWxsJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBsYXllciBvZiB1c2VyQ29udHJvbGxlZExheWVyTGlzdFwiIFt2YWx1ZV09XCJsYXllclwiPnt7bGF5ZXIudGl0bGV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaWdvLWZvcm0tYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCAobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUV4cG9ydEZvcm1TdWJtaXQoZm9ybS52YWx1ZSlcIj5cbiAgICAgICAgICAgIHt7J2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5leHBvcnRCdXR0b24nIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxpZ28tc3Bpbm5lciBbc2hvd25dPVwibG9hZGluZyQgfCBhc3luY1wiPjwvaWdvLXNwaW5uZXI+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=