@igo2/context 1.15.4 → 16.0.0-rc.1

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 (168) hide show
  1. package/context-theme.scss +5 -0
  2. package/{esm2020 → esm2022}/igo2-context.mjs +4 -4
  3. package/esm2022/lib/context-import-export/context-import-export/context-import-export.component.mjs +258 -0
  4. package/esm2022/lib/context-import-export/context-import-export.module.mjs +81 -0
  5. package/{esm2020 → esm2022}/lib/context-import-export/index.mjs +3 -3
  6. package/{esm2020 → esm2022}/lib/context-import-export/shared/context-export.errors.mjs +15 -15
  7. package/{esm2020 → esm2022}/lib/context-import-export/shared/context-export.interface.mjs +2 -2
  8. package/esm2022/lib/context-import-export/shared/context-export.service.mjs +38 -0
  9. package/esm2022/lib/context-import-export/shared/context-export.utils.mjs +15 -0
  10. package/esm2022/lib/context-import-export/shared/context-import.errors.mjs +33 -0
  11. package/esm2022/lib/context-import-export/shared/context-import.service.mjs +82 -0
  12. package/esm2022/lib/context-import-export/shared/context-import.utils.mjs +148 -0
  13. package/{esm2020 → esm2022}/lib/context-import-export/shared/index.mjs +8 -8
  14. package/esm2022/lib/context-manager/context-edit/context-edit-binding.directive.mjs +57 -0
  15. package/esm2022/lib/context-manager/context-edit/context-edit.component.mjs +48 -0
  16. package/{esm2020 → esm2022}/lib/context-manager/context-edit/index.mjs +3 -3
  17. package/esm2022/lib/context-manager/context-form/context-form.component.mjs +151 -0
  18. package/{esm2020 → esm2022}/lib/context-manager/context-form/index.mjs +2 -2
  19. package/esm2022/lib/context-manager/context-item/context-item.component.mjs +251 -0
  20. package/{esm2020 → esm2022}/lib/context-manager/context-item/index.mjs +2 -2
  21. package/esm2022/lib/context-manager/context-list/context-list-binding.directive.mjs +259 -0
  22. package/esm2022/lib/context-manager/context-list/context-list.component.mjs +616 -0
  23. package/{esm2020 → esm2022}/lib/context-manager/context-list/context-list.enum.mjs +7 -7
  24. package/{esm2020 → esm2022}/lib/context-manager/context-list/index.mjs +3 -3
  25. package/esm2022/lib/context-manager/context-manager.module.mjs +157 -0
  26. package/esm2022/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +108 -0
  27. package/esm2022/lib/context-manager/context-permissions/context-permissions.component.mjs +331 -0
  28. package/{esm2020 → esm2022}/lib/context-manager/context-permissions/index.mjs +3 -3
  29. package/{esm2020 → esm2022}/lib/context-manager/index.mjs +7 -7
  30. package/{esm2020 → esm2022}/lib/context-manager/shared/context.enum.mjs +13 -13
  31. package/esm2022/lib/context-manager/shared/context.interface.mjs +2 -0
  32. package/esm2022/lib/context-manager/shared/context.service.mjs +662 -0
  33. package/{esm2020 → esm2022}/lib/context-manager/shared/index.mjs +6 -6
  34. package/esm2022/lib/context-manager/shared/layer-context.directive.mjs +172 -0
  35. package/esm2022/lib/context-manager/shared/map-context.directive.mjs +79 -0
  36. package/esm2022/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +74 -0
  37. package/esm2022/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +53 -0
  38. package/{esm2020 → esm2022}/lib/context-map-button/bookmark-button/index.mjs +3 -3
  39. package/esm2022/lib/context-map-button/context-map-button.module.mjs +104 -0
  40. package/{esm2020 → esm2022}/lib/context-map-button/index.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/context-map-button/poi-button/index.mjs +4 -4
  42. package/esm2022/lib/context-map-button/poi-button/poi-button.component.mjs +179 -0
  43. package/esm2022/lib/context-map-button/poi-button/poi-dialog.component.mjs +53 -0
  44. package/{esm2020 → esm2022}/lib/context-map-button/poi-button/shared/index.mjs +3 -3
  45. package/{esm2020 → esm2022}/lib/context-map-button/poi-button/shared/poi.interface.mjs +2 -2
  46. package/esm2022/lib/context-map-button/poi-button/shared/poi.service.mjs +38 -0
  47. package/{esm2020 → esm2022}/lib/context-map-button/user-button/index.mjs +3 -3
  48. package/{esm2020 → esm2022}/lib/context-map-button/user-button/user-button.animation.mjs +17 -17
  49. package/esm2022/lib/context-map-button/user-button/user-button.component.mjs +112 -0
  50. package/esm2022/lib/context-map-button/user-button/user-dialog.component.mjs +74 -0
  51. package/{esm2020 → esm2022}/lib/context.module.mjs +45 -45
  52. package/{esm2020 → esm2022}/lib/share-map/index.mjs +5 -5
  53. package/esm2022/lib/share-map/share-map/share-map-api.component.mjs +186 -0
  54. package/esm2022/lib/share-map/share-map/share-map-url.component.mjs +251 -0
  55. package/esm2022/lib/share-map/share-map/share-map.component.mjs +60 -0
  56. package/{esm2020 → esm2022}/lib/share-map/share-map.module.mjs +67 -67
  57. package/{esm2020 → esm2022}/lib/share-map/shared/index.mjs +2 -2
  58. package/esm2022/lib/share-map/shared/share-map.service.mjs +221 -0
  59. package/{esm2020 → esm2022}/lib/sidenav/index.mjs +2 -2
  60. package/esm2022/lib/sidenav/sidenav.component.mjs +178 -0
  61. package/{esm2020 → esm2022}/lib/sidenav/sidenav.module.mjs +61 -61
  62. package/{esm2020 → esm2022}/public_api.mjs +15 -15
  63. package/{fesm2020 → fesm2022}/igo2-context.mjs +4844 -4614
  64. package/fesm2022/igo2-context.mjs.map +1 -0
  65. package/index.d.ts +5 -5
  66. package/lib/context-import-export/context-import-export/context-import-export.component.d.ts +46 -44
  67. package/lib/context-import-export/context-import-export.module.d.ts +23 -23
  68. package/lib/context-import-export/index.d.ts +2 -2
  69. package/lib/context-import-export/shared/context-export.errors.d.ts +8 -8
  70. package/lib/context-import-export/shared/context-export.interface.d.ts +5 -5
  71. package/lib/context-import-export/shared/context-export.service.d.ts +10 -10
  72. package/lib/context-import-export/shared/context-export.utils.d.ts +4 -4
  73. package/lib/context-import-export/shared/context-import.errors.d.ts +17 -17
  74. package/lib/context-import-export/shared/context-import.service.d.ts +18 -18
  75. package/lib/context-import-export/shared/context-import.utils.d.ts +15 -17
  76. package/lib/context-import-export/shared/index.d.ts +7 -7
  77. package/lib/context-manager/context-edit/context-edit-binding.directive.d.ts +20 -20
  78. package/lib/context-manager/context-edit/context-edit.component.d.ts +14 -14
  79. package/lib/context-manager/context-edit/index.d.ts +2 -2
  80. package/lib/context-manager/context-form/context-form.component.d.ts +30 -30
  81. package/lib/context-manager/context-form/index.d.ts +1 -1
  82. package/lib/context-manager/context-item/context-item.component.d.ts +32 -32
  83. package/lib/context-manager/context-item/context-item.theming.scss +21 -0
  84. package/lib/context-manager/context-item/index.d.ts +1 -1
  85. package/lib/context-manager/context-list/context-list-binding.directive.d.ts +46 -46
  86. package/lib/context-manager/context-list/context-list.component.d.ts +93 -93
  87. package/lib/context-manager/context-list/context-list.enum.d.ts +5 -5
  88. package/lib/context-manager/context-list/context-list.theming.scss +23 -0
  89. package/lib/context-manager/context-list/index.d.ts +2 -2
  90. package/lib/context-manager/context-manager.module.d.ts +37 -37
  91. package/lib/context-manager/context-manager.theming.scss +7 -0
  92. package/lib/context-manager/context-permissions/context-permissions-binding.directive.d.ts +23 -23
  93. package/lib/context-manager/context-permissions/context-permissions.component.d.ts +40 -40
  94. package/lib/context-manager/context-permissions/index.d.ts +2 -2
  95. package/lib/context-manager/index.d.ts +6 -6
  96. package/lib/context-manager/shared/context.enum.d.ts +10 -10
  97. package/lib/context-manager/shared/context.interface.d.ts +81 -75
  98. package/lib/context-manager/shared/context.service.d.ts +76 -75
  99. package/lib/context-manager/shared/index.d.ts +5 -5
  100. package/lib/context-manager/shared/layer-context.directive.d.ts +28 -28
  101. package/lib/context-manager/shared/map-context.directive.d.ts +19 -19
  102. package/lib/context-map-button/bookmark-button/bookmark-button.component.d.ts +20 -20
  103. package/lib/context-map-button/bookmark-button/bookmark-dialog.component.d.ts +9 -9
  104. package/lib/context-map-button/bookmark-button/index.d.ts +2 -2
  105. package/lib/context-map-button/context-map-button.module.d.ts +27 -27
  106. package/lib/context-map-button/index.d.ts +3 -3
  107. package/lib/context-map-button/poi-button/index.d.ts +3 -3
  108. package/lib/context-map-button/poi-button/poi-button.component.d.ts +34 -34
  109. package/lib/context-map-button/poi-button/poi-dialog.component.d.ts +9 -9
  110. package/lib/context-map-button/poi-button/shared/index.d.ts +2 -2
  111. package/lib/context-map-button/poi-button/shared/poi.interface.d.ts +7 -7
  112. package/lib/context-map-button/poi-button/shared/poi.service.d.ts +16 -16
  113. package/lib/context-map-button/user-button/index.d.ts +2 -2
  114. package/lib/context-map-button/user-button/user-button.animation.d.ts +2 -2
  115. package/lib/context-map-button/user-button/user-button.component.d.ts +25 -25
  116. package/lib/context-map-button/user-button/user-dialog.component.d.ts +15 -15
  117. package/lib/context.module.d.ts +16 -16
  118. package/lib/share-map/index.d.ts +4 -4
  119. package/lib/share-map/share-map/share-map-api.component.d.ts +27 -27
  120. package/lib/share-map/share-map/share-map-url.component.d.ts +26 -26
  121. package/lib/share-map/share-map/share-map.component.d.ts +11 -11
  122. package/lib/share-map/share-map.module.d.ts +21 -21
  123. package/lib/share-map/shared/index.d.ts +1 -1
  124. package/lib/share-map/shared/share-map.service.d.ts +17 -17
  125. package/lib/sidenav/index.d.ts +1 -1
  126. package/lib/sidenav/sidenav.component.d.ts +35 -35
  127. package/lib/sidenav/sidenav.module.d.ts +18 -18
  128. package/locale/en.context.json +199 -0
  129. package/locale/fr.context.json +199 -0
  130. package/package.json +20 -26
  131. package/public_api.d.ts +11 -11
  132. package/esm2020/lib/context-import-export/context-import-export/context-import-export.component.mjs +0 -228
  133. package/esm2020/lib/context-import-export/context-import-export.module.mjs +0 -85
  134. package/esm2020/lib/context-import-export/shared/context-export.service.mjs +0 -38
  135. package/esm2020/lib/context-import-export/shared/context-export.utils.mjs +0 -15
  136. package/esm2020/lib/context-import-export/shared/context-import.errors.mjs +0 -33
  137. package/esm2020/lib/context-import-export/shared/context-import.service.mjs +0 -79
  138. package/esm2020/lib/context-import-export/shared/context-import.utils.mjs +0 -133
  139. package/esm2020/lib/context-manager/context-edit/context-edit-binding.directive.mjs +0 -50
  140. package/esm2020/lib/context-manager/context-edit/context-edit.component.mjs +0 -46
  141. package/esm2020/lib/context-manager/context-form/context-form.component.mjs +0 -143
  142. package/esm2020/lib/context-manager/context-item/context-item.component.mjs +0 -245
  143. package/esm2020/lib/context-manager/context-list/context-list-binding.directive.mjs +0 -240
  144. package/esm2020/lib/context-manager/context-list/context-list.component.mjs +0 -592
  145. package/esm2020/lib/context-manager/context-manager.module.mjs +0 -162
  146. package/esm2020/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +0 -99
  147. package/esm2020/lib/context-manager/context-permissions/context-permissions.component.mjs +0 -306
  148. package/esm2020/lib/context-manager/shared/context.interface.mjs +0 -2
  149. package/esm2020/lib/context-manager/shared/context.service.mjs +0 -632
  150. package/esm2020/lib/context-manager/shared/layer-context.directive.mjs +0 -162
  151. package/esm2020/lib/context-manager/shared/map-context.directive.mjs +0 -70
  152. package/esm2020/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +0 -66
  153. package/esm2020/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +0 -50
  154. package/esm2020/lib/context-map-button/context-map-button.module.mjs +0 -96
  155. package/esm2020/lib/context-map-button/poi-button/poi-button.component.mjs +0 -161
  156. package/esm2020/lib/context-map-button/poi-button/poi-dialog.component.mjs +0 -50
  157. package/esm2020/lib/context-map-button/poi-button/shared/poi.service.mjs +0 -33
  158. package/esm2020/lib/context-map-button/user-button/user-button.component.mjs +0 -104
  159. package/esm2020/lib/context-map-button/user-button/user-dialog.component.mjs +0 -66
  160. package/esm2020/lib/share-map/share-map/share-map-api.component.mjs +0 -170
  161. package/esm2020/lib/share-map/share-map/share-map-url.component.mjs +0 -243
  162. package/esm2020/lib/share-map/share-map/share-map.component.mjs +0 -57
  163. package/esm2020/lib/share-map/shared/share-map.service.mjs +0 -210
  164. package/esm2020/lib/sidenav/sidenav.component.mjs +0 -170
  165. package/fesm2015/igo2-context.mjs +0 -5094
  166. package/fesm2015/igo2-context.mjs.map +0 -1
  167. package/fesm2020/igo2-context.mjs.map +0 -1
  168. package/ngcc.config.js +0 -3
@@ -0,0 +1,5 @@
1
+ @use './lib/context-manager/context-manager.theming.scss' as context-manager;
2
+
3
+ @mixin context-component-themes($theme) {
4
+ @include context-manager.themes($theme);
5
+ }
@@ -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=
@@ -0,0 +1,258 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { UntypedFormBuilder, Validators } from '@angular/forms';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { take } from 'rxjs/operators';
5
+ import { MessageService, ConfigService } from '@igo2/core';
6
+ import { handleFileExportError } from '../shared/context-export.utils';
7
+ import { handleFileImportSuccess, handleFileImportError } from '../shared/context-import.utils';
8
+ import { handleFileExportSuccess } from '../shared/context-export.utils';
9
+ import { ContextService } from '../../context-manager/shared/context.service';
10
+ import { ContextImportService } from '../shared/context-import.service';
11
+ import { ContextExportService } from '../shared/context-export.service';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../shared/context-import.service";
14
+ import * as i2 from "../shared/context-export.service";
15
+ import * as i3 from "@igo2/core";
16
+ import * as i4 from "@angular/forms";
17
+ import * as i5 from "../../context-manager/shared/context.service";
18
+ import * as i6 from "@angular/common";
19
+ import * as i7 from "@angular/material/button";
20
+ import * as i8 from "@angular/material/button-toggle";
21
+ import * as i9 from "@angular/material/divider";
22
+ import * as i10 from "@angular/material/form-field";
23
+ import * as i11 from "@angular/material/select";
24
+ import * as i12 from "@angular/material/core";
25
+ import * as i13 from "@angular/material/input";
26
+ import * as i14 from "@igo2/common";
27
+ import * as i15 from "@ngx-translate/core";
28
+ const _c0 = function (a0) { return { size: a0 }; };
29
+ function ContextImportExportComponent_div_8_Template(rf, ctx) { if (rf & 1) {
30
+ const _r4 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "div")(1, "form", 5)(2, "div", 6)(3, "button", 7);
32
+ 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()); });
33
+ i0.ɵɵpipe(4, "async");
34
+ i0.ɵɵtext(5);
35
+ i0.ɵɵpipe(6, "translate");
36
+ i0.ɵɵelementEnd();
37
+ i0.ɵɵelement(7, "igo-spinner", 8);
38
+ i0.ɵɵpipe(8, "async");
39
+ i0.ɵɵelementStart(9, "input", 9, 10);
40
+ 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)); });
41
+ i0.ɵɵelementEnd()()();
42
+ i0.ɵɵelementStart(11, "section", 11)(12, "h4");
43
+ i0.ɵɵtext(13);
44
+ i0.ɵɵpipe(14, "translate");
45
+ i0.ɵɵelementEnd();
46
+ i0.ɵɵelementStart(15, "ul")(16, "li");
47
+ i0.ɵɵtext(17);
48
+ i0.ɵɵpipe(18, "translate");
49
+ i0.ɵɵelementEnd()()()();
50
+ } if (rf & 2) {
51
+ const ctx_r0 = i0.ɵɵnextContext();
52
+ i0.ɵɵadvance(3);
53
+ i0.ɵɵproperty("disabled", i0.ɵɵpipeBind1(4, 7, ctx_r0.loading$));
54
+ i0.ɵɵadvance(2);
55
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 9, "igo.geo.importExportForm.importButton"), " ");
56
+ i0.ɵɵadvance(2);
57
+ i0.ɵɵproperty("shown", i0.ɵɵpipeBind1(8, 11, ctx_r0.loading$));
58
+ i0.ɵɵadvance(2);
59
+ i0.ɵɵstyleProp("display", "none");
60
+ i0.ɵɵadvance(4);
61
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 13, "igo.geo.importExportForm.importClarifications"));
62
+ i0.ɵɵadvance(4);
63
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(18, 15, "igo.geo.importExportForm.importSizeMax", i0.ɵɵpureFunction1(18, _c0, ctx_r0.fileSizeMb)), " ");
64
+ } }
65
+ function ContextImportExportComponent_form_9_mat_option_18_Template(rf, ctx) { if (rf & 1) {
66
+ i0.ɵɵelementStart(0, "mat-option", 2);
67
+ i0.ɵɵtext(1);
68
+ i0.ɵɵelementEnd();
69
+ } if (rf & 2) {
70
+ const layer_r9 = ctx.$implicit;
71
+ i0.ɵɵproperty("value", layer_r9);
72
+ i0.ɵɵadvance(1);
73
+ i0.ɵɵtextInterpolate(layer_r9.title);
74
+ } }
75
+ function ContextImportExportComponent_form_9_Template(rf, ctx) { if (rf & 1) {
76
+ const _r11 = i0.ɵɵgetCurrentView();
77
+ i0.ɵɵelementStart(0, "form", 12)(1, "div", 13)(2, "mat-form-field", 14)(3, "mat-label");
78
+ i0.ɵɵtext(4);
79
+ i0.ɵɵpipe(5, "translate");
80
+ i0.ɵɵelementEnd();
81
+ i0.ɵɵelement(6, "input", 15);
82
+ i0.ɵɵelementEnd()();
83
+ i0.ɵɵelementStart(7, "div", 13)(8, "mat-form-field")(9, "mat-label");
84
+ i0.ɵɵtext(10);
85
+ i0.ɵɵpipe(11, "translate");
86
+ i0.ɵɵelementEnd();
87
+ i0.ɵɵelementStart(12, "mat-select", 16)(13, "mat-option", 17, 18);
88
+ 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)); });
89
+ i0.ɵɵtext(15);
90
+ i0.ɵɵpipe(16, "translate");
91
+ i0.ɵɵelementEnd();
92
+ i0.ɵɵelement(17, "mat-divider");
93
+ i0.ɵɵtemplate(18, ContextImportExportComponent_form_9_mat_option_18_Template, 2, 2, "mat-option", 19);
94
+ i0.ɵɵelementEnd()()();
95
+ i0.ɵɵelementStart(19, "div", 6)(20, "button", 7);
96
+ 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)); });
97
+ i0.ɵɵpipe(21, "async");
98
+ i0.ɵɵtext(22);
99
+ i0.ɵɵpipe(23, "translate");
100
+ i0.ɵɵelementEnd();
101
+ i0.ɵɵelement(24, "igo-spinner", 8);
102
+ i0.ɵɵpipe(25, "async");
103
+ i0.ɵɵelementEnd()();
104
+ } if (rf & 2) {
105
+ const ctx_r1 = i0.ɵɵnextContext();
106
+ i0.ɵɵproperty("formGroup", ctx_r1.form);
107
+ i0.ɵɵadvance(4);
108
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 9, "igo.context.contextImportExport.export.exportContextName"));
109
+ i0.ɵɵadvance(6);
110
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 11, "igo.context.contextImportExport.export.exportPlaceHolder"));
111
+ i0.ɵɵadvance(3);
112
+ i0.ɵɵproperty("value", 1);
113
+ i0.ɵɵadvance(2);
114
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(16, 13, "igo.context.contextImportExport.export.exportSelectAll"), " ");
115
+ i0.ɵɵadvance(3);
116
+ i0.ɵɵproperty("ngForOf", ctx_r1.userControlledLayerList);
117
+ i0.ɵɵadvance(2);
118
+ i0.ɵɵproperty("disabled", !ctx_r1.form.valid || i0.ɵɵpipeBind1(21, 15, ctx_r1.loading$));
119
+ i0.ɵɵadvance(2);
120
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 17, "igo.geo.importExportForm.exportButton"), " ");
121
+ i0.ɵɵadvance(2);
122
+ i0.ɵɵproperty("shown", i0.ɵɵpipeBind1(25, 19, ctx_r1.loading$));
123
+ } }
124
+ export class ContextImportExportComponent {
125
+ contextImportService;
126
+ contextExportService;
127
+ messageService;
128
+ formBuilder;
129
+ config;
130
+ contextService;
131
+ form;
132
+ layers;
133
+ inputProj = 'EPSG:4326';
134
+ loading$ = new BehaviorSubject(false);
135
+ forceNaming = false;
136
+ layerList;
137
+ userControlledLayerList;
138
+ res;
139
+ clientSideFileSizeMax;
140
+ fileSizeMb;
141
+ activeImportExport = 'import';
142
+ layers$$;
143
+ map;
144
+ constructor(contextImportService, contextExportService, messageService, formBuilder, config, contextService) {
145
+ this.contextImportService = contextImportService;
146
+ this.contextExportService = contextExportService;
147
+ this.messageService = messageService;
148
+ this.formBuilder = formBuilder;
149
+ this.config = config;
150
+ this.contextService = contextService;
151
+ this.buildForm();
152
+ }
153
+ ngOnInit() {
154
+ const configFileSizeMb = this.config.getConfig('importExport.clientSideFileSizeMaxMb');
155
+ this.clientSideFileSizeMax =
156
+ (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);
157
+ this.fileSizeMb = this.clientSideFileSizeMax / Math.pow(1024, 2);
158
+ this.layers$$ = this.map.layers$.subscribe(() => {
159
+ this.layerList = this.contextService.getContextLayers(this.map);
160
+ this.userControlledLayerList = this.layerList.filter((layer) => layer.showInLayerList);
161
+ });
162
+ }
163
+ importFiles(files) {
164
+ this.loading$.next(true);
165
+ for (const file of files) {
166
+ this.contextImportService
167
+ .import(file)
168
+ .pipe(take(1))
169
+ .subscribe((context) => this.onFileImportSuccess(file, context), (error) => this.onFileImportError(file, error), () => {
170
+ this.loading$.next(false);
171
+ });
172
+ }
173
+ }
174
+ handleExportFormSubmit(contextOptions) {
175
+ this.loading$.next(true);
176
+ this.res = this.contextService.getContextFromLayers(this.map, contextOptions.layers, contextOptions.name, false);
177
+ this.res.imported = true;
178
+ this.contextExportService
179
+ .export(this.res)
180
+ .pipe(take(1))
181
+ .subscribe(() => { }, (error) => this.onFileExportError(error), () => {
182
+ this.onFileExportSuccess();
183
+ this.loading$.next(false);
184
+ });
185
+ }
186
+ buildForm() {
187
+ this.form = this.formBuilder.group({
188
+ layers: ['', [Validators.required]],
189
+ name: ['', [Validators.required]]
190
+ });
191
+ }
192
+ onFileImportSuccess(file, context) {
193
+ handleFileImportSuccess(file, context, this.messageService, this.contextService);
194
+ }
195
+ onFileImportError(file, error) {
196
+ this.loading$.next(false);
197
+ handleFileImportError(file, error, this.messageService, this.fileSizeMb);
198
+ }
199
+ onFileExportError(error) {
200
+ this.loading$.next(false);
201
+ handleFileExportError(error, this.messageService);
202
+ }
203
+ onFileExportSuccess() {
204
+ handleFileExportSuccess(this.messageService);
205
+ }
206
+ selectAll(e) {
207
+ if (e._selected) {
208
+ this.form.controls.layers.setValue(this.userControlledLayerList);
209
+ e._selected = true;
210
+ }
211
+ if (e._selected === false) {
212
+ this.form.controls.layers.setValue([]);
213
+ }
214
+ }
215
+ onImportExportChange(event) {
216
+ this.activeImportExport = event.value;
217
+ }
218
+ ngOnDestroy() {
219
+ this.layers$$.unsubscribe();
220
+ }
221
+ static ɵfac = function ContextImportExportComponent_Factory(t) { return new (t || ContextImportExportComponent)(i0.ɵɵdirectiveInject(i1.ContextImportService), i0.ɵɵdirectiveInject(i2.ContextExportService), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i4.UntypedFormBuilder), i0.ɵɵdirectiveInject(i3.ConfigService), i0.ɵɵdirectiveInject(i5.ContextService)); };
222
+ static ɵ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) {
223
+ i0.ɵɵelementStart(0, "div", 0)(1, "mat-button-toggle-group", 1);
224
+ i0.ɵɵlistener("change", function ContextImportExportComponent_Template_mat_button_toggle_group_change_1_listener($event) { return ctx.onImportExportChange($event); });
225
+ i0.ɵɵelementStart(2, "mat-button-toggle", 2);
226
+ i0.ɵɵtext(3);
227
+ i0.ɵɵpipe(4, "translate");
228
+ i0.ɵɵelementEnd();
229
+ i0.ɵɵelementStart(5, "mat-button-toggle", 2);
230
+ i0.ɵɵtext(6);
231
+ i0.ɵɵpipe(7, "translate");
232
+ i0.ɵɵelementEnd()()();
233
+ i0.ɵɵtemplate(8, ContextImportExportComponent_div_8_Template, 19, 20, "div", 3);
234
+ i0.ɵɵtemplate(9, ContextImportExportComponent_form_9_Template, 26, 21, "form", 4);
235
+ } if (rf & 2) {
236
+ i0.ɵɵadvance(1);
237
+ i0.ɵɵproperty("value", ctx.activeImportExport);
238
+ i0.ɵɵadvance(1);
239
+ i0.ɵɵproperty("value", "import");
240
+ i0.ɵɵadvance(1);
241
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, "igo.geo.importExportForm.importTabTitle"), " ");
242
+ i0.ɵɵadvance(2);
243
+ i0.ɵɵproperty("value", "export");
244
+ i0.ɵɵadvance(1);
245
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 9, "igo.geo.importExportForm.exportTabTitle"), " ");
246
+ i0.ɵɵadvance(2);
247
+ i0.ɵɵproperty("ngIf", ctx.activeImportExport === "import");
248
+ i0.ɵɵadvance(1);
249
+ i0.ɵɵproperty("ngIf", ctx.activeImportExport === "export");
250
+ } }, 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}"] });
251
+ }
252
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextImportExportComponent, [{
253
+ type: Component,
254
+ 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 >\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\n mat-raised-button\n type=\"button\"\n (click)=\"fileInput.click()\"\n [disabled]=\"loading$ | async\"\n >\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 />\n </div>\n </form>\n <section class=\"mat-typography\">\n <h4>{{ 'igo.geo.importExportForm.importClarifications' | translate }}</h4>\n <ul>\n <li>\n {{\n 'igo.geo.importExportForm.importSizeMax'\n | translate: { size: fileSizeMb }\n }}\n </li>\n </ul>\n </section>\n</div>\n\n<form\n class=\"igo-form\"\n *ngIf=\"activeImportExport === 'export'\"\n [formGroup]=\"form\"\n>\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportContextName' | translate\n }}</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>{{\n 'igo.context.contextImportExport.export.exportPlaceHolder' | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.context.contextImportExport.export.exportSelectAll' | translate\n }}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option\n *ngFor=\"let layer of userControlledLayerList\"\n [value]=\"layer\"\n >{{ layer.title }}</mat-option\n >\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 >\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"] }]
255
+ }], function () { return [{ type: i1.ContextImportService }, { type: i2.ContextExportService }, { type: i3.MessageService }, { type: i4.UntypedFormBuilder }, { type: i3.ConfigService }, { type: i5.ContextService }]; }, { map: [{
256
+ type: Input
257
+ }] }); })();
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LWltcG9ydC1leHBvcnQvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC9jb250ZXh0LWltcG9ydC1leHBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSTNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3RCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM5QixDQUFDO3NGQS9IVSw0QkFBNEI7NkRBQTVCLDRCQUE0QjtZQzdCekMsOEJBQWlELGlDQUFBO1lBRzdDLGtJQUFVLGdDQUE0QixJQUFDO1lBRXZDLDRDQUFzQztZQUNwQyxZQUNGOztZQUFBLGlCQUFvQjtZQUNwQiw0Q0FBc0M7WUFDcEMsWUFDRjs7WUFBQSxpQkFBb0IsRUFBQSxFQUFBO1lBSXhCLCtFQWdDTTtZQUVOLGlGQTRDTzs7WUExRkgsZUFBNEI7WUFBNUIsOENBQTRCO1lBR1QsZUFBa0I7WUFBbEIsZ0NBQWtCO1lBQ25DLGVBQ0Y7WUFERSxnR0FDRjtZQUNtQixlQUFrQjtZQUFsQixnQ0FBa0I7WUFDbkMsZUFDRjtZQURFLGdHQUNGO1lBSUUsZUFBcUM7WUFBckMsMERBQXFDO1lBb0N4QyxlQUFxQztZQUFyQywwREFBcUM7Ozt1RkRyQjNCLDRCQUE0QjtjQUx4QyxTQUFTOzJCQUNFLDJCQUEyQjtpT0FtQjVCLEdBQUc7a0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBVbnR5cGVkRm9ybUdyb3VwLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlLCBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgeyBoYW5kbGVGaWxlRXhwb3J0RXJyb3IgfSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC1leHBvcnQudXRpbHMnO1xuaW1wb3J0IHtcbiAgaGFuZGxlRmlsZUltcG9ydFN1Y2Nlc3MsXG4gIGhhbmRsZUZpbGVJbXBvcnRFcnJvclxufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC1pbXBvcnQudXRpbHMnO1xuaW1wb3J0IHsgaGFuZGxlRmlsZUV4cG9ydFN1Y2Nlc3MgfSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC1leHBvcnQudXRpbHMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb250ZXh0LW1hbmFnZXIvc2hhcmVkL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0SW1wb3J0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LWltcG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGV0YWlsZWRDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC1tYW5hZ2VyL3NoYXJlZC9jb250ZXh0LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1jb250ZXh0LWltcG9ydC1leHBvcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29udGV4dC1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dEltcG9ydEV4cG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIHB1YmxpYyBsYXllcnM6IFZlY3RvckxheWVyW107XG4gIHB1YmxpYyBpbnB1dFByb2o6IHN0cmluZyA9ICdFUFNHOjQzMjYnO1xuICBwdWJsaWMgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGZvcmNlTmFtaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBsYXllckxpc3Q6IExheWVyW107XG4gIHB1YmxpYyB1c2VyQ29udHJvbGxlZExheWVyTGlzdDogTGF5ZXJbXTtcbiAgcHVibGljIHJlczogRGV0YWlsZWRDb250ZXh0O1xuICBwcml2YXRlIGNsaWVudFNpZGVGaWxlU2l6ZU1heDogbnVtYmVyO1xuICBwdWJsaWMgZmlsZVNpemVNYjogbnVtYmVyO1xuICBwdWJsaWMgYWN0aXZlSW1wb3J0RXhwb3J0OiBzdHJpbmcgPSAnaW1wb3J0JztcblxuICBwcml2YXRlIGxheWVycyQkOiBTdWJzY3JpcHRpb247XG5cbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0SW1wb3J0U2VydmljZTogQ29udGV4dEltcG9ydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0RXhwb3J0U2VydmljZTogQ29udGV4dEV4cG9ydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYnVpbGRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb25maWdGaWxlU2l6ZU1iID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKFxuICAgICAgJ2ltcG9ydEV4cG9ydC5jbGllbnRTaWRlRmlsZVNpemVNYXhNYidcbiAgICApO1xuICAgIHRoaXMuY2xpZW50U2lkZUZpbGVTaXplTWF4ID1cbiAgICAgIChjb25maWdGaWxlU2l6ZU1iID8gY29uZmlnRmlsZVNpemVNYiA6IDMwKSAqIE1hdGgucG93KDEwMjQsIDIpO1xuICAgIHRoaXMuZmlsZVNpemVNYiA9IHRoaXMuY2xpZW50U2lkZUZpbGVTaXplTWF4IC8gTWF0aC5wb3coMTAyNCwgMik7XG4gICAgdGhpcy5sYXllcnMkJCA9IHRoaXMubWFwLmxheWVycyQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubGF5ZXJMaXN0ID0gdGhpcy5jb250ZXh0U2VydmljZS5nZXRDb250ZXh0TGF5ZXJzKHRoaXMubWFwKTtcbiAgICAgIHRoaXMudXNlckNvbnRyb2xsZWRMYXllckxpc3QgPSB0aGlzLmxheWVyTGlzdC5maWx0ZXIoXG4gICAgICAgIChsYXllcikgPT4gbGF5ZXIuc2hvd0luTGF5ZXJMaXN0XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgaW1wb3J0RmlsZXMoZmlsZXM6IEZpbGVbXSkge1xuICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dEltcG9ydFNlcnZpY2VcbiAgICAgICAgLmltcG9ydChmaWxlKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpID0+IHRoaXMub25GaWxlSW1wb3J0U3VjY2VzcyhmaWxlLCBjb250ZXh0KSxcbiAgICAgICAgICAoZXJyb3I6IEVycm9yKSA9PiB0aGlzLm9uRmlsZUltcG9ydEVycm9yKGZpbGUsIGVycm9yKSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVFeHBvcnRGb3JtU3VibWl0KGNvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgIHRoaXMucmVzID0gdGhpcy5jb250ZXh0U2VydmljZS5nZXRDb250ZXh0RnJvbUxheWVycyhcbiAgICAgIHRoaXMubWFwLFxuICAgICAgY29udGV4dE9wdGlvbnMubGF5ZXJzLFxuICAgICAgY29udGV4dE9wdGlvbnMubmFtZSxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgICB0aGlzLnJlcy5pbXBvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5jb250ZXh0RXhwb3J0U2VydmljZVxuICAgICAgLmV4cG9ydCh0aGlzLnJlcylcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgKGVycm9yOiBFcnJvcikgPT4gdGhpcy5vbkZpbGVFeHBvcnRFcnJvcihlcnJvciksXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLm9uRmlsZUV4cG9ydFN1Y2Nlc3MoKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0oKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBsYXllcnM6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIG5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVJbXBvcnRTdWNjZXNzKGZpbGU6IEZpbGUsIGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIGhhbmRsZUZpbGVJbXBvcnRTdWNjZXNzKFxuICAgICAgZmlsZSxcbiAgICAgIGNvbnRleHQsXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLFxuICAgICAgdGhpcy5jb250ZXh0U2VydmljZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uRmlsZUltcG9ydEVycm9yKGZpbGU6IEZpbGUsIGVycm9yOiBFcnJvcikge1xuICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgaGFuZGxlRmlsZUltcG9ydEVycm9yKGZpbGUsIGVycm9yLCB0aGlzLm1lc3NhZ2VTZXJ2aWNlLCB0aGlzLmZpbGVTaXplTWIpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkZpbGVFeHBvcnRFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIGhhbmRsZUZpbGVFeHBvcnRFcnJvcihlcnJvciwgdGhpcy5tZXNzYWdlU2VydmljZSk7XG4gIH1cblxuICBwcml2YXRlIG9uRmlsZUV4cG9ydFN1Y2Nlc3MoKSB7XG4gICAgaGFuZGxlRmlsZUV4cG9ydFN1Y2Nlc3ModGhpcy5tZXNzYWdlU2VydmljZSk7XG4gIH1cblxuICBzZWxlY3RBbGwoZSkge1xuICAgIGlmIChlLl9zZWxlY3RlZCkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmxheWVycy5zZXRWYWx1ZSh0aGlzLnVzZXJDb250cm9sbGVkTGF5ZXJMaXN0KTtcbiAgICAgIGUuX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGUuX3NlbGVjdGVkID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmxheWVycy5zZXRWYWx1ZShbXSk7XG4gICAgfVxuICB9XG5cbiAgb25JbXBvcnRFeHBvcnRDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLmFjdGl2ZUltcG9ydEV4cG9ydCA9IGV2ZW50LnZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5sYXllcnMkJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW1wb3J0LWV4cG9ydC10b2dnbGUgbWF0LXR5cG9ncmFwaHlcIj5cbiAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gICAgW3ZhbHVlXT1cImFjdGl2ZUltcG9ydEV4cG9ydFwiXG4gICAgKGNoYW5nZSk9XCJvbkltcG9ydEV4cG9ydENoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwiJ2ltcG9ydCdcIj5cbiAgICAgIHt7ICdpZ28uZ2VvLmltcG9ydEV4cG9ydEZvcm0uaW1wb3J0VGFiVGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIidleHBvcnQnXCI+XG4gICAgICB7eyAnaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmV4cG9ydFRhYlRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImFjdGl2ZUltcG9ydEV4cG9ydCA9PT0gJ2ltcG9ydCdcIj5cbiAgPGZvcm0gY2xhc3M9XCJpZ28tZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJpZ28tZm9ybS1idXR0b24tZ3JvdXBcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5pbXBvcnRCdXR0b24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxpZ28tc3Bpbm5lciBbc2hvd25dPVwibG9hZGluZyQgfCBhc3luY1wiPjwvaWdvLXNwaW5uZXI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQudmFsdWUgPSBudWxsXCJcbiAgICAgICAgKGNoYW5nZSk9XCJpbXBvcnRGaWxlcygkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG4gIDxzZWN0aW9uIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8aDQ+e3sgJ2lnby5nZW8uaW1wb3J0RXhwb3J0Rm9ybS5pbXBvcnRDbGFyaWZpY2F0aW9ucycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgIDx1bD5cbiAgICAgIDxsaT5cbiAgICAgICAge3tcbiAgICAgICAgICAnaWdvLmdlby5pbXBvcnRFeHBvcnRGb3JtLmltcG9ydFNpemVNYXgnXG4gICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBzaXplOiBmaWxlU2l6ZU1iIH1cbiAgICAgICAgfX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG5cbjxmb3JtXG4gIGNsYXNzPVwiaWdvLWZvcm1cIlxuICAqbmdJZj1cImFjdGl2ZUltcG9ydEV4cG9ydCA9PT0gJ2V4cG9ydCdcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuPlxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImV4YW1wbGUtZnVsbC13aWR0aFwiPlxuICAgICAgPG1hdC1sYWJlbD57e1xuICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5leHBvcnQuZXhwb3J0Q29udGV4dE5hbWUnIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBtYXRJbnB1dCBbdmFsdWVdPVwiXCIgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPnt7XG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0SW1wb3J0RXhwb3J0LmV4cG9ydC5leHBvcnRQbGFjZUhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJsYXllcnNcIiBtdWx0aXBsZT5cbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjFcIiAoY2xpY2spPVwic2VsZWN0QWxsKGUpXCIgI2U+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0SW1wb3J0RXhwb3J0LmV4cG9ydC5leHBvcnRTZWxlY3RBbGwnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGF5ZXIgb2YgdXNlckNvbnRyb2xsZWRMYXllckxpc3RcIlxuICAgICAgICAgIFt2YWx1ZV09XCJsYXllclwiXG4gICAgICAgICAgPnt7IGxheWVyLnRpdGxlIH19PC9tYXQtb3B0aW9uXG4gICAgICAgID5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImlnby1mb3JtLWJ1dHRvbi1ncm91cFwiPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCAobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUV4cG9ydEZvcm1TdWJtaXQoZm9ybS52YWx1ZSlcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uZ2VvLmltcG9ydEV4cG9ydEZvcm0uZXhwb3J0QnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxpZ28tc3Bpbm5lciBbc2hvd25dPVwibG9hZGluZyQgfCBhc3luY1wiPjwvaWdvLXNwaW5uZXI+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
@@ -0,0 +1,81 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
5
+ import { MatOptionModule } from '@angular/material/core';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatDividerModule } from '@angular/material/divider';
8
+ import { MatInputModule } from '@angular/material/input';
9
+ import { MatSelectModule } from '@angular/material/select';
10
+ import { MatCheckboxModule } from '@angular/material/checkbox';
11
+ import { MatTabsModule } from '@angular/material/tabs';
12
+ import { MatTooltipModule } from '@angular/material/tooltip';
13
+ import { IgoLanguageModule } from '@igo2/core';
14
+ import { ContextImportExportComponent } from './context-import-export/context-import-export.component';
15
+ import { IgoSpinnerModule } from '@igo2/common';
16
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
17
+ import * as i0 from "@angular/core";
18
+ export class IgoContextImportExportModule {
19
+ static forRoot() {
20
+ return {
21
+ ngModule: IgoContextImportExportModule
22
+ };
23
+ }
24
+ static ɵfac = function IgoContextImportExportModule_Factory(t) { return new (t || IgoContextImportExportModule)(); };
25
+ static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoContextImportExportModule });
26
+ static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModule,
27
+ ReactiveFormsModule,
28
+ CommonModule,
29
+ MatButtonModule,
30
+ MatButtonToggleModule,
31
+ MatDividerModule,
32
+ MatTabsModule,
33
+ MatSelectModule,
34
+ MatOptionModule,
35
+ MatFormFieldModule,
36
+ MatInputModule,
37
+ MatCheckboxModule,
38
+ IgoLanguageModule,
39
+ IgoSpinnerModule,
40
+ MatTooltipModule] });
41
+ }
42
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoContextImportExportModule, [{
43
+ type: NgModule,
44
+ args: [{
45
+ imports: [
46
+ FormsModule,
47
+ ReactiveFormsModule,
48
+ CommonModule,
49
+ MatButtonModule,
50
+ MatButtonToggleModule,
51
+ MatDividerModule,
52
+ MatTabsModule,
53
+ MatSelectModule,
54
+ MatOptionModule,
55
+ MatFormFieldModule,
56
+ MatInputModule,
57
+ MatCheckboxModule,
58
+ IgoLanguageModule,
59
+ IgoSpinnerModule,
60
+ MatTooltipModule
61
+ ],
62
+ exports: [ContextImportExportComponent],
63
+ declarations: [ContextImportExportComponent]
64
+ }]
65
+ }], null, null); })();
66
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoContextImportExportModule, { declarations: [ContextImportExportComponent], imports: [FormsModule,
67
+ ReactiveFormsModule,
68
+ CommonModule,
69
+ MatButtonModule,
70
+ MatButtonToggleModule,
71
+ MatDividerModule,
72
+ MatTabsModule,
73
+ MatSelectModule,
74
+ MatOptionModule,
75
+ MatFormFieldModule,
76
+ MatInputModule,
77
+ MatCheckboxModule,
78
+ IgoLanguageModule,
79
+ IgoSpinnerModule,
80
+ MatTooltipModule], exports: [ContextImportExportComponent] }); })();
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1pbXBvcnQtZXhwb3J0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LWltcG9ydC1leHBvcnQvY29udGV4dC1pbXBvcnQtZXhwb3J0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUF1QmxFLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLDRCQUE0QjtTQUN2QyxDQUFDO0lBQ0osQ0FBQztzRkFMVSw0QkFBNEI7NERBQTVCLDRCQUE0QjtnRUFuQnJDLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsWUFBWTtZQUNaLGVBQWU7WUFDZixxQkFBcUI7WUFDckIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsZ0JBQWdCOzt1RkFLUCw0QkFBNEI7Y0FyQnhDLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLFlBQVk7b0JBQ1osZUFBZTtvQkFDZixxQkFBcUI7b0JBQ3JCLGdCQUFnQjtvQkFDaEIsYUFBYTtvQkFDYixlQUFlO29CQUNmLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixjQUFjO29CQUNkLGlCQUFpQjtvQkFDakIsaUJBQWlCO29CQUNqQixnQkFBZ0I7b0JBQ2hCLGdCQUFnQjtpQkFDakI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQ3ZDLFlBQVksRUFBRSxDQUFDLDRCQUE0QixDQUFDO2FBQzdDOzt3RkFDWSw0QkFBNEIsbUJBRnhCLDRCQUE0QixhQWpCekMsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixZQUFZO1FBQ1osZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixnQkFBZ0I7UUFDaEIsYUFBYTtRQUNiLGVBQWU7UUFDZixlQUFlO1FBQ2Ysa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQixnQkFBZ0IsYUFFUiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dEltcG9ydEV4cG9ydENvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWdvU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlLFxuICAgIElnb1NwaW5uZXJNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbQ29udGV4dEltcG9ydEV4cG9ydENvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW0NvbnRleHRJbXBvcnRFeHBvcnRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElnb0NvbnRleHRJbXBvcnRFeHBvcnRNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPElnb0NvbnRleHRJbXBvcnRFeHBvcnRNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IElnb0NvbnRleHRJbXBvcnRFeHBvcnRNb2R1bGVcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
- export * from './shared';
2
- export * from './context-import-export/context-import-export.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMseURBQXlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NoYXJlZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dC1pbXBvcnQtZXhwb3J0L2NvbnRleHQtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQnO1xyXG4iXX0=
1
+ export * from './shared';
2
+ export * from './context-import-export/context-import-export.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMseURBQXlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NoYXJlZCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQtaW1wb3J0LWV4cG9ydC9jb250ZXh0LWltcG9ydC1leHBvcnQuY29tcG9uZW50JztcbiJdfQ==
@@ -1,15 +1,15 @@
1
- export class ExportError extends Error {
2
- }
3
- export class ExportInvalidFileError extends ExportError {
4
- constructor() {
5
- super('Invalid context');
6
- Object.setPrototypeOf(this, ExportInvalidFileError.prototype);
7
- }
8
- }
9
- export class ExportNothingToExportError extends ExportError {
10
- constructor() {
11
- super('Nothing to export');
12
- Object.setPrototypeOf(this, ExportNothingToExportError.prototype);
13
- }
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1leHBvcnQuZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtaW1wb3J0LWV4cG9ydC9zaGFyZWQvY29udGV4dC1leHBvcnQuZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFZLFNBQVEsS0FBSztDQUFHO0FBRXpDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUFXO0lBQ3JEO1FBQ0UsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLFdBQVc7SUFDekQ7UUFDRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRXhwb3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxyXG5cclxuZXhwb3J0IGNsYXNzIEV4cG9ydEludmFsaWRGaWxlRXJyb3IgZXh0ZW5kcyBFeHBvcnRFcnJvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcignSW52YWxpZCBjb250ZXh0Jyk7XHJcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgRXhwb3J0SW52YWxpZEZpbGVFcnJvci5wcm90b3R5cGUpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEV4cG9ydE5vdGhpbmdUb0V4cG9ydEVycm9yIGV4dGVuZHMgRXhwb3J0RXJyb3Ige1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoJ05vdGhpbmcgdG8gZXhwb3J0Jyk7XHJcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgRXhwb3J0Tm90aGluZ1RvRXhwb3J0RXJyb3IucHJvdG90eXBlKTtcclxuICB9XHJcbn1cclxuIl19
1
+ export class ExportError extends Error {
2
+ }
3
+ export class ExportInvalidFileError extends ExportError {
4
+ constructor() {
5
+ super('Invalid context');
6
+ Object.setPrototypeOf(this, ExportInvalidFileError.prototype);
7
+ }
8
+ }
9
+ export class ExportNothingToExportError extends ExportError {
10
+ constructor() {
11
+ super('Nothing to export');
12
+ Object.setPrototypeOf(this, ExportNothingToExportError.prototype);
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1leHBvcnQuZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtaW1wb3J0LWV4cG9ydC9zaGFyZWQvY29udGV4dC1leHBvcnQuZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFZLFNBQVEsS0FBSztDQUFHO0FBRXpDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUFXO0lBQ3JEO1FBQ0UsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLFdBQVc7SUFDekQ7UUFDRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRXhwb3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQgY2xhc3MgRXhwb3J0SW52YWxpZEZpbGVFcnJvciBleHRlbmRzIEV4cG9ydEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ0ludmFsaWQgY29udGV4dCcpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBFeHBvcnRJbnZhbGlkRmlsZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4cG9ydE5vdGhpbmdUb0V4cG9ydEVycm9yIGV4dGVuZHMgRXhwb3J0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignTm90aGluZyB0byBleHBvcnQnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgRXhwb3J0Tm90aGluZ1RvRXhwb3J0RXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1leHBvcnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtaW1wb3J0LWV4cG9ydC9zaGFyZWQvY29udGV4dC1leHBvcnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXllciB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRFeHBvcnRPcHRpb25zIHtcclxuICBsYXllcjogTGF5ZXJbXTtcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuIl19
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1leHBvcnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtaW1wb3J0LWV4cG9ydC9zaGFyZWQvY29udGV4dC1leHBvcnQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYXllciB9IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dEV4cG9ydE9wdGlvbnMge1xuICBsYXllcjogTGF5ZXJbXTtcbiAgbmFtZTogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { downloadContent } from '@igo2/utils';
3
+ import { ExportNothingToExportError } from './context-export.errors';
4
+ import { Observable } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class ContextExportService {
7
+ export(res) {
8
+ return this.exportAsync(res);
9
+ }
10
+ exportAsync(res) {
11
+ const doExport = (observer) => {
12
+ const nothingToExport = this.nothingToExport(res);
13
+ if (nothingToExport === true) {
14
+ observer.error(new ExportNothingToExportError());
15
+ return;
16
+ }
17
+ const contextJSON = JSON.stringify(res);
18
+ downloadContent(contextJSON, 'text/json;charset=utf-8', `${res.uri}.json`);
19
+ observer.complete();
20
+ };
21
+ return new Observable(doExport);
22
+ }
23
+ nothingToExport(res) {
24
+ if (res.map === undefined) {
25
+ return true;
26
+ }
27
+ return false;
28
+ }
29
+ static ɵfac = function ContextExportService_Factory(t) { return new (t || ContextExportService)(); };
30
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ContextExportService, factory: ContextExportService.ɵfac, providedIn: 'root' });
31
+ }
32
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextExportService, [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }], null, null); })();
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1leHBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LWltcG9ydC1leHBvcnQvc2hhcmVkL2NvbnRleHQtZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sRUFBWSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSzVDLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsTUFBTSxDQUFDLEdBQW9CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsV0FBVyxDQUFDLEdBQW9CO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBd0IsRUFBRSxFQUFFO1lBQzVDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEQsSUFBSSxlQUFlLEtBQUssSUFBSSxFQUFFO2dCQUM1QixRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxPQUFPO2FBQ1I7WUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLGVBQWUsQ0FDYixXQUFXLEVBQ1gseUJBQXlCLEVBQ3pCLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUNsQixDQUFDO1lBQ0YsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGVBQWUsQ0FBQyxHQUFvQjtRQUM1QyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEVBNUJVLG9CQUFvQjtnRUFBcEIsb0JBQW9CLFdBQXBCLG9CQUFvQixtQkFGbkIsTUFBTTs7dUZBRVAsb0JBQW9CO2NBSGhDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZG93bmxvYWRDb250ZW50IH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBEZXRhaWxlZENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0LW1hbmFnZXIvc2hhcmVkL2NvbnRleHQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEV4cG9ydE5vdGhpbmdUb0V4cG9ydEVycm9yIH0gZnJvbSAnLi9jb250ZXh0LWV4cG9ydC5lcnJvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2ZXIsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dEV4cG9ydFNlcnZpY2Uge1xuICBleHBvcnQocmVzOiBEZXRhaWxlZENvbnRleHQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5leHBvcnRBc3luYyhyZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4cG9ydEFzeW5jKHJlczogRGV0YWlsZWRDb250ZXh0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZG9FeHBvcnQgPSAob2JzZXJ2ZXI6IE9ic2VydmVyPHZvaWQ+KSA9PiB7XG4gICAgICBjb25zdCBub3RoaW5nVG9FeHBvcnQgPSB0aGlzLm5vdGhpbmdUb0V4cG9ydChyZXMpO1xuICAgICAgaWYgKG5vdGhpbmdUb0V4cG9ydCA9PT0gdHJ1ZSkge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgRXhwb3J0Tm90aGluZ1RvRXhwb3J0RXJyb3IoKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHRKU09OID0gSlNPTi5zdHJpbmdpZnkocmVzKTtcbiAgICAgIGRvd25sb2FkQ29udGVudChcbiAgICAgICAgY29udGV4dEpTT04sXG4gICAgICAgICd0ZXh0L2pzb247Y2hhcnNldD11dGYtOCcsXG4gICAgICAgIGAke3Jlcy51cml9Lmpzb25gXG4gICAgICApO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9O1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShkb0V4cG9ydCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbm90aGluZ1RvRXhwb3J0KHJlczogRGV0YWlsZWRDb250ZXh0KTogYm9vbGVhbiB7XG4gICAgaWYgKHJlcy5tYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ import { ExportNothingToExportError } from './context-export.errors';
2
+ export function handleFileExportError(error, messageService) {
3
+ if (error instanceof ExportNothingToExportError) {
4
+ this.handleNothingToExportError(messageService);
5
+ return;
6
+ }
7
+ messageService.error('igo.context.contextImportExport.export.failed.text', 'igo.context.contextImportExport.export.failed.title');
8
+ }
9
+ export function handleFileExportSuccess(messageService) {
10
+ messageService.success('igo.context.contextImportExport.export.success.text', 'igo.context.contextImportExport.export.success.title');
11
+ }
12
+ export function handleNothingToExportError(messageService) {
13
+ messageService.error('igo.context.contextImportExport.export.nothing.text', 'igo.context.contextImportExport.export.nothing.title');
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1leHBvcnQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1pbXBvcnQtZXhwb3J0L3NoYXJlZC9jb250ZXh0LWV4cG9ydC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVyRSxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEtBQVksRUFDWixjQUE4QjtJQUU5QixJQUFJLEtBQUssWUFBWSwwQkFBMEIsRUFBRTtRQUMvQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsT0FBTztLQUNSO0lBQ0QsY0FBYyxDQUFDLEtBQUssQ0FDbEIsb0RBQW9ELEVBQ3BELHFEQUFxRCxDQUN0RCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxjQUE4QjtJQUNwRSxjQUFjLENBQUMsT0FBTyxDQUNwQixxREFBcUQsRUFDckQsc0RBQXNELENBQ3ZELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLGNBQThCO0lBQ3ZFLGNBQWMsQ0FBQyxLQUFLLENBQ2xCLHFEQUFxRCxFQUNyRCxzREFBc0QsQ0FDdkQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgRXhwb3J0Tm90aGluZ1RvRXhwb3J0RXJyb3IgfSBmcm9tICcuL2NvbnRleHQtZXhwb3J0LmVycm9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVGaWxlRXhwb3J0RXJyb3IoXG4gIGVycm9yOiBFcnJvcixcbiAgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4pIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXhwb3J0Tm90aGluZ1RvRXhwb3J0RXJyb3IpIHtcbiAgICB0aGlzLmhhbmRsZU5vdGhpbmdUb0V4cG9ydEVycm9yKG1lc3NhZ2VTZXJ2aWNlKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0LmZhaWxlZC50ZXh0JyxcbiAgICAnaWdvLmNvbnRleHQuY29udGV4dEltcG9ydEV4cG9ydC5leHBvcnQuZmFpbGVkLnRpdGxlJ1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlRmlsZUV4cG9ydFN1Y2Nlc3MobWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlKSB7XG4gIG1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0LnN1Y2Nlc3MudGV4dCcsXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0LnN1Y2Nlc3MudGl0bGUnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVOb3RoaW5nVG9FeHBvcnRFcnJvcihtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHtcbiAgbWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0Lm5vdGhpbmcudGV4dCcsXG4gICAgJ2lnby5jb250ZXh0LmNvbnRleHRJbXBvcnRFeHBvcnQuZXhwb3J0Lm5vdGhpbmcudGl0bGUnXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,33 @@
1
+ export class ImportError extends Error {
2
+ }
3
+ export class ImportInvalidFileError extends ImportError {
4
+ constructor() {
5
+ super('Invalid file');
6
+ Object.setPrototypeOf(this, ImportInvalidFileError.prototype);
7
+ }
8
+ }
9
+ export class ImportUnreadableFileError extends ImportError {
10
+ constructor() {
11
+ super('Failed to read file');
12
+ Object.setPrototypeOf(this, ImportUnreadableFileError.prototype);
13
+ }
14
+ }
15
+ export class ImportNothingToImportError extends ImportError {
16
+ constructor() {
17
+ super('Nothing to import');
18
+ Object.setPrototypeOf(this, ImportNothingToImportError.prototype);
19
+ }
20
+ }
21
+ export class ImportSizeError extends ImportError {
22
+ constructor() {
23
+ super('File is too large');
24
+ Object.setPrototypeOf(this, ImportNothingToImportError.prototype);
25
+ }
26
+ }
27
+ export class ImportSRSError extends ImportError {
28
+ constructor() {
29
+ super('Invalid SRS definition');
30
+ Object.setPrototypeOf(this, ImportNothingToImportError.prototype);
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1pbXBvcnQuZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtaW1wb3J0LWV4cG9ydC9zaGFyZWQvY29udGV4dC1pbXBvcnQuZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFZLFNBQVEsS0FBSztDQUFHO0FBRXpDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUFXO0lBQ3JEO1FBQ0UsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxXQUFXO0lBQ3hEO1FBQ0UsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLFdBQVc7SUFDekQ7UUFDRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBQzlDO1FBQ0UsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxXQUFXO0lBQzdDO1FBQ0UsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEltcG9ydEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IGNsYXNzIEltcG9ydEludmFsaWRGaWxlRXJyb3IgZXh0ZW5kcyBJbXBvcnRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdJbnZhbGlkIGZpbGUnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW1wb3J0SW52YWxpZEZpbGVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRVbnJlYWRhYmxlRmlsZUVycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignRmFpbGVkIHRvIHJlYWQgZmlsZScpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbXBvcnRVbnJlYWRhYmxlRmlsZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltcG9ydE5vdGhpbmdUb0ltcG9ydEVycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignTm90aGluZyB0byBpbXBvcnQnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW1wb3J0Tm90aGluZ1RvSW1wb3J0RXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0U2l6ZUVycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignRmlsZSBpcyB0b28gbGFyZ2UnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW1wb3J0Tm90aGluZ1RvSW1wb3J0RXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0U1JTRXJyb3IgZXh0ZW5kcyBJbXBvcnRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdJbnZhbGlkIFNSUyBkZWZpbml0aW9uJyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEltcG9ydE5vdGhpbmdUb0ltcG9ydEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cbiJdfQ==