@igo2/integration 1.15.4 → 1.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/esm2020/igo2-integration.mjs +4 -4
  2. package/esm2020/lib/about/about-tool/about-tool.component.mjs +185 -185
  3. package/esm2020/lib/about/about-tool/index.mjs +2 -2
  4. package/esm2020/lib/about/about.module.mjs +55 -55
  5. package/esm2020/lib/about/index.mjs +2 -2
  6. package/esm2020/lib/analytics/analytics-listener.service.mjs +127 -127
  7. package/esm2020/lib/analytics/analytics.module.mjs +16 -16
  8. package/esm2020/lib/analytics/index.mjs +2 -2
  9. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +113 -113
  10. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +29 -29
  11. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +89 -89
  12. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +29 -29
  13. package/esm2020/lib/catalog/catalog.module.mjs +24 -24
  14. package/esm2020/lib/catalog/catalog.state.mjs +54 -54
  15. package/esm2020/lib/catalog/index.mjs +6 -6
  16. package/esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs +34 -34
  17. package/esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs +44 -44
  18. package/esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +25 -25
  19. package/esm2020/lib/context/context-share-tool/context-share-tool.component.mjs +34 -34
  20. package/esm2020/lib/context/context.module.mjs +39 -39
  21. package/esm2020/lib/context/context.state.mjs +88 -88
  22. package/esm2020/lib/context/index.mjs +6 -6
  23. package/esm2020/lib/directions/directions-tool/directions-tool.component.mjs +84 -84
  24. package/esm2020/lib/directions/directions-tool/index.mjs +2 -2
  25. package/esm2020/lib/directions/directions.module.mjs +26 -26
  26. package/esm2020/lib/directions/directions.state.mjs +64 -64
  27. package/esm2020/lib/directions/index.mjs +3 -3
  28. package/esm2020/lib/draw/draw.module.mjs +21 -21
  29. package/esm2020/lib/draw/draw.state.mjs +39 -39
  30. package/esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs +72 -72
  31. package/esm2020/lib/draw/index.mjs +3 -3
  32. package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +10 -10
  33. package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +44 -44
  34. package/esm2020/lib/filter/active-ogc-filter-tool/index.mjs +2 -2
  35. package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +10 -10
  36. package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +44 -44
  37. package/esm2020/lib/filter/active-time-filter-tool/index.mjs +2 -2
  38. package/esm2020/lib/filter/filter.module.mjs +51 -51
  39. package/esm2020/lib/filter/index.mjs +6 -6
  40. package/esm2020/lib/filter/ogc-filter-tool/index.mjs +2 -2
  41. package/esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +25 -25
  42. package/esm2020/lib/filter/spatial-filter-tool/index.mjs +2 -2
  43. package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +535 -535
  44. package/esm2020/lib/filter/time-filter-tool/index.mjs +2 -2
  45. package/esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs +25 -25
  46. package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +141 -141
  47. package/esm2020/lib/import-export/import-export-tool/index.mjs +2 -2
  48. package/esm2020/lib/import-export/import-export.module.mjs +51 -51
  49. package/esm2020/lib/import-export/import-export.state.mjs +41 -41
  50. package/esm2020/lib/import-export/index.mjs +3 -3
  51. package/esm2020/lib/integration.module.mjs +72 -72
  52. package/esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +472 -472
  53. package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +89 -89
  54. package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +218 -218
  55. package/esm2020/lib/map/advanced-map-tool/index.mjs +2 -2
  56. package/esm2020/lib/map/index.mjs +9 -9
  57. package/esm2020/lib/map/layer-list-tool.state.mjs +42 -42
  58. package/esm2020/lib/map/map-details-tool/index.mjs +2 -2
  59. package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +256 -256
  60. package/esm2020/lib/map/map-legend/index.mjs +2 -2
  61. package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +275 -275
  62. package/esm2020/lib/map/map-proximity-tool/index.mjs +2 -2
  63. package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +203 -203
  64. package/esm2020/lib/map/map-proximity.state.mjs +167 -167
  65. package/esm2020/lib/map/map-tool/index.mjs +2 -2
  66. package/esm2020/lib/map/map-tool/map-tool.component.mjs +130 -130
  67. package/esm2020/lib/map/map-tools/index.mjs +2 -2
  68. package/esm2020/lib/map/map-tools/map-tools.component.mjs +495 -495
  69. package/esm2020/lib/map/map.module.mjs +144 -144
  70. package/esm2020/lib/map/map.state.mjs +47 -47
  71. package/esm2020/lib/measure/index.mjs +4 -4
  72. package/esm2020/lib/measure/measure.module.mjs +20 -20
  73. package/esm2020/lib/measure/measure.state.mjs +35 -35
  74. package/esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs +45 -45
  75. package/esm2020/lib/measure/measurer-tool/measurer-tool.module.mjs +25 -25
  76. package/esm2020/lib/print/index.mjs +2 -2
  77. package/esm2020/lib/print/print-tool/index.mjs +2 -2
  78. package/esm2020/lib/print/print-tool/print-tool.component.mjs +33 -33
  79. package/esm2020/lib/print/print.module.mjs +26 -26
  80. package/esm2020/lib/search/index.mjs +7 -7
  81. package/esm2020/lib/search/query.state.mjs +42 -34
  82. package/esm2020/lib/search/search-bar/search-bar-binding.directive.mjs +61 -61
  83. package/esm2020/lib/search/search-bar/search-bar.module.mjs +22 -22
  84. package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +593 -593
  85. package/esm2020/lib/search/search-results-tool/search-results-tool.module.mjs +65 -65
  86. package/esm2020/lib/search/search.module.mjs +24 -24
  87. package/esm2020/lib/search/search.state.mjs +132 -132
  88. package/esm2020/lib/storage/index.mjs +2 -2
  89. package/esm2020/lib/storage/storage.module.mjs +16 -16
  90. package/esm2020/lib/storage/storage.state.mjs +23 -23
  91. package/esm2020/lib/tool/index.mjs +2 -2
  92. package/esm2020/lib/tool/tool.module.mjs +16 -16
  93. package/esm2020/lib/tool/tool.state.mjs +52 -52
  94. package/esm2020/lib/workspace/index.mjs +4 -4
  95. package/esm2020/lib/workspace/shared/edition-actions.service.mjs +156 -156
  96. package/esm2020/lib/workspace/shared/feature-actions.service.mjs +144 -144
  97. package/esm2020/lib/workspace/shared/index.mjs +3 -3
  98. package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +158 -158
  99. package/esm2020/lib/workspace/shared/workspace.utils.mjs +7 -7
  100. package/esm2020/lib/workspace/workspace-button/index.mjs +2 -2
  101. package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +69 -69
  102. package/esm2020/lib/workspace/workspace.module.mjs +37 -37
  103. package/esm2020/lib/workspace/workspace.state.mjs +188 -188
  104. package/esm2020/public_api.mjs +35 -35
  105. package/fesm2015/igo2-integration.mjs +6558 -6553
  106. package/fesm2015/igo2-integration.mjs.map +1 -1
  107. package/fesm2020/igo2-integration.mjs +6114 -6109
  108. package/fesm2020/igo2-integration.mjs.map +1 -1
  109. package/index.d.ts +5 -5
  110. package/lib/about/about-tool/about-tool.component.d.ts +34 -34
  111. package/lib/about/about-tool/index.d.ts +1 -1
  112. package/lib/about/about.module.d.ts +16 -16
  113. package/lib/about/index.d.ts +1 -1
  114. package/lib/analytics/analytics-listener.service.d.ts +33 -33
  115. package/lib/analytics/analytics.module.d.ts +6 -6
  116. package/lib/analytics/index.d.ts +1 -1
  117. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +57 -57
  118. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.d.ts +12 -12
  119. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +50 -50
  120. package/lib/catalog/catalog-library-tool/catalog-library-tool.module.d.ts +12 -12
  121. package/lib/catalog/catalog.module.d.ts +8 -8
  122. package/lib/catalog/catalog.state.d.ts +37 -37
  123. package/lib/catalog/index.d.ts +5 -5
  124. package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +9 -9
  125. package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +15 -15
  126. package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +5 -5
  127. package/lib/context/context-share-tool/context-share-tool.component.d.ts +13 -13
  128. package/lib/context/context.module.d.ts +11 -11
  129. package/lib/context/context.state.d.ts +37 -37
  130. package/lib/context/index.d.ts +5 -5
  131. package/lib/directions/directions-tool/directions-tool.component.d.ts +54 -54
  132. package/lib/directions/directions-tool/index.d.ts +1 -1
  133. package/lib/directions/directions.module.d.ts +10 -10
  134. package/lib/directions/directions.state.d.ts +28 -28
  135. package/lib/directions/index.d.ts +2 -2
  136. package/lib/draw/draw.module.d.ts +8 -8
  137. package/lib/draw/draw.state.d.ts +16 -16
  138. package/lib/draw/drawing-tool/drawing-tool.component.d.ts +31 -31
  139. package/lib/draw/index.d.ts +2 -2
  140. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.d.ts +2 -2
  141. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +12 -12
  142. package/lib/filter/active-ogc-filter-tool/index.d.ts +1 -1
  143. package/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.d.ts +2 -2
  144. package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +12 -12
  145. package/lib/filter/active-time-filter-tool/index.d.ts +1 -1
  146. package/lib/filter/filter.module.d.ts +15 -15
  147. package/lib/filter/index.d.ts +5 -5
  148. package/lib/filter/ogc-filter-tool/index.d.ts +1 -1
  149. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +6 -6
  150. package/lib/filter/spatial-filter-tool/index.d.ts +1 -1
  151. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +82 -82
  152. package/lib/filter/time-filter-tool/index.d.ts +1 -1
  153. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +6 -6
  154. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +33 -33
  155. package/lib/import-export/import-export-tool/index.d.ts +1 -1
  156. package/lib/import-export/import-export.module.d.ts +15 -15
  157. package/lib/import-export/import-export.state.d.ts +24 -24
  158. package/lib/import-export/index.d.ts +2 -2
  159. package/lib/integration.module.d.ts +20 -20
  160. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +97 -97
  161. package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +12 -12
  162. package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +65 -65
  163. package/lib/map/advanced-map-tool/index.d.ts +1 -1
  164. package/lib/map/index.d.ts +8 -8
  165. package/lib/map/layer-list-tool.state.d.ts +19 -19
  166. package/lib/map/map-details-tool/index.d.ts +1 -1
  167. package/lib/map/map-details-tool/map-details-tool.component.d.ts +38 -38
  168. package/lib/map/map-legend/index.d.ts +1 -1
  169. package/lib/map/map-legend/map-legend-tool.component.d.ts +40 -40
  170. package/lib/map/map-proximity-tool/index.d.ts +1 -1
  171. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +36 -36
  172. package/lib/map/map-proximity.state.d.ts +31 -31
  173. package/lib/map/map-tool/index.d.ts +1 -1
  174. package/lib/map/map-tool/map-tool.component.d.ts +27 -27
  175. package/lib/map/map-tools/index.d.ts +1 -1
  176. package/lib/map/map-tools/map-tools.component.d.ts +66 -66
  177. package/lib/map/map.module.d.ts +38 -38
  178. package/lib/map/map.state.d.ts +24 -24
  179. package/lib/measure/index.d.ts +3 -3
  180. package/lib/measure/measure.module.d.ts +7 -7
  181. package/lib/measure/measure.state.d.ts +16 -16
  182. package/lib/measure/measurer-tool/measurer-tool.component.d.ts +24 -24
  183. package/lib/measure/measurer-tool/measurer-tool.module.d.ts +11 -11
  184. package/lib/print/index.d.ts +1 -1
  185. package/lib/print/print-tool/index.d.ts +1 -1
  186. package/lib/print/print-tool/print-tool.component.d.ts +10 -10
  187. package/lib/print/print.module.d.ts +10 -10
  188. package/lib/search/index.d.ts +6 -6
  189. package/lib/search/query.state.d.ts +24 -20
  190. package/lib/search/search-bar/search-bar-binding.directive.d.ts +20 -20
  191. package/lib/search/search-bar/search-bar.module.d.ts +11 -11
  192. package/lib/search/search-results-tool/search-results-tool.component.d.ts +100 -100
  193. package/lib/search/search-results-tool/search-results-tool.module.d.ts +18 -18
  194. package/lib/search/search.module.d.ts +8 -8
  195. package/lib/search/search.state.d.ts +60 -60
  196. package/lib/storage/index.d.ts +1 -1
  197. package/lib/storage/storage.module.d.ts +6 -6
  198. package/lib/storage/storage.state.d.ts +12 -12
  199. package/lib/tool/index.d.ts +1 -1
  200. package/lib/tool/tool.module.d.ts +6 -6
  201. package/lib/tool/tool.state.d.ts +22 -22
  202. package/lib/workspace/index.d.ts +3 -3
  203. package/lib/workspace/shared/edition-actions.service.d.ts +26 -26
  204. package/lib/workspace/shared/feature-actions.service.d.ts +25 -25
  205. package/lib/workspace/shared/index.d.ts +2 -2
  206. package/lib/workspace/shared/wfs-actions.service.d.ts +27 -27
  207. package/lib/workspace/shared/workspace.utils.d.ts +2 -2
  208. package/lib/workspace/workspace-button/index.d.ts +1 -1
  209. package/lib/workspace/workspace-button/workspace-button.component.d.ts +21 -21
  210. package/lib/workspace/workspace.module.d.ts +12 -12
  211. package/lib/workspace/workspace.state.d.ts +63 -63
  212. package/ngcc.config.js +3 -3
  213. package/package.json +3 -3
  214. package/public_api.d.ts +31 -31
@@ -1,127 +1,127 @@
1
- import { Injectable } from '@angular/core';
2
- import { skip } from 'rxjs/operators';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@igo2/core";
5
- import * as i2 from "@igo2/auth";
6
- import * as i3 from "../context/context.state";
7
- import * as i4 from "../search/search.state";
8
- import * as i5 from "../tool/tool.state";
9
- import * as i6 from "../map/map.state";
10
- /**
11
- * Service that holds the state of the search module
12
- */
13
- export class AnalyticsListenerService {
14
- /**
15
- * Toolbox that holds main tools
16
- */
17
- constructor(analyticsService, authService, contextState, searchState, toolState, mapState) {
18
- this.analyticsService = analyticsService;
19
- this.authService = authService;
20
- this.contextState = contextState;
21
- this.searchState = searchState;
22
- this.toolState = toolState;
23
- this.mapState = mapState;
24
- }
25
- listen() {
26
- this.listenUser();
27
- this.listenContext();
28
- this.listenTool();
29
- this.listenSearch();
30
- this.listenLayer();
31
- }
32
- listenUser() {
33
- this.authService.authenticate$.subscribe(() => {
34
- const tokenDecoded = this.authService.decodeToken() || {};
35
- if (tokenDecoded.user) {
36
- this.authService
37
- .getProfils()
38
- .subscribe(profils => this.analyticsService.setUser(tokenDecoded.user, profils.profils));
39
- }
40
- else {
41
- this.analyticsService.setUser();
42
- }
43
- });
44
- }
45
- listenContext() {
46
- this.contextState.context$.subscribe(context => {
47
- if (context) {
48
- this.analyticsService.trackEvent('context', 'activateContext', context.id || context.uri);
49
- }
50
- });
51
- }
52
- listenTool() {
53
- this.toolState.toolbox.activeTool$.pipe(skip(1)).subscribe(tool => {
54
- if (tool) {
55
- this.analyticsService.trackEvent('tool', 'activateTool', tool.name);
56
- }
57
- });
58
- }
59
- listenSearch() {
60
- this.searchState.searchTerm$.pipe(skip(1)).subscribe((searchTerm) => {
61
- if (searchTerm !== undefined && searchTerm !== null) {
62
- this.analyticsService.trackSearch(searchTerm, this.searchState.store.count);
63
- }
64
- });
65
- }
66
- /**
67
- * Listener for adding layers to the map
68
- */
69
- listenLayer() {
70
- this.mapState.map.layersAddedByClick$.subscribe((layers) => {
71
- if (!layers) {
72
- return;
73
- }
74
- layers.map(layer => {
75
- let wmsParams;
76
- let wmtsParams;
77
- let xyzParams;
78
- let restParams;
79
- switch (layer.dataSource.options.type) {
80
- case 'wms':
81
- const wmsDataSource = layer.dataSource.options;
82
- const wmsLayerName = wmsDataSource.params.LAYERS;
83
- const wmsUrl = wmsDataSource.url;
84
- const wmsType = wmsDataSource.type;
85
- wmsParams = JSON.stringify({ layer: wmsLayerName, type: wmsType, url: wmsUrl });
86
- break;
87
- case 'wmts':
88
- const wmtsDataSource = layer.dataSource.options;
89
- const wmtsLayerName = wmtsDataSource.layer;
90
- const wmtsUrl = wmtsDataSource.url;
91
- const matrixSet = wmtsDataSource.matrixSet;
92
- const wmtsType = wmtsDataSource.type;
93
- wmtsParams = JSON.stringify({ layer: wmtsLayerName, type: wmtsType, url: wmtsUrl, matrixSet });
94
- break;
95
- case 'arcgisrest':
96
- case 'tilearcgisrest':
97
- case 'imagearcgisrest':
98
- const restDataSource = layer.options.sourceOptions;
99
- const restName = restDataSource.layer;
100
- const restUrl = restDataSource.url;
101
- const restType = restDataSource.type;
102
- restParams = JSON.stringify({ layer: restName, type: restType, url: restUrl });
103
- break;
104
- case 'xyz':
105
- /* const xyzDataSource = layer.dataSource.options as XYZDataSourceOptions;
106
- const xyzName: string = layer.title;
107
- const xyzUrl: string = xyzDataSource.url;
108
- const xyzType: string = layer.dataSource.options.type;
109
- xyzParams = JSON.stringify({layer: xyzName, type: xyzType, url: xyzUrl});
110
- */
111
- // todo
112
- break;
113
- }
114
- this.analyticsService.trackLayer('layer', 'addLayer', wmsParams || wmtsParams || xyzParams || restParams);
115
- });
116
- });
117
- }
118
- }
119
- AnalyticsListenerService.ɵfac = function AnalyticsListenerService_Factory(t) { return new (t || AnalyticsListenerService)(i0.ɵɵinject(i1.AnalyticsService), i0.ɵɵinject(i2.AuthService), i0.ɵɵinject(i3.ContextState), i0.ɵɵinject(i4.SearchState), i0.ɵɵinject(i5.ToolState), i0.ɵɵinject(i6.MapState)); };
120
- AnalyticsListenerService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AnalyticsListenerService, factory: AnalyticsListenerService.ɵfac, providedIn: 'root' });
121
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsListenerService, [{
122
- type: Injectable,
123
- args: [{
124
- providedIn: 'root'
125
- }]
126
- }], function () { return [{ type: i1.AnalyticsService }, { type: i2.AuthService }, { type: i3.ContextState }, { type: i4.SearchState }, { type: i5.ToolState }, { type: i6.MapState }]; }, null); })();
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLWxpc3RlbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2FuYWx5dGljcy9hbmFseXRpY3MtbGlzdGVuZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFvQnRDOztHQUVHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQzs7T0FFRztJQUVILFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCO1FBTGxCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3pCLENBQUM7SUFFSixNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDMUQsSUFBSSxZQUFZ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QUZ2QixNQUFNO3VGQUVQLHdCQUF3QjtjQUhwQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvYXV0aCc7XHJcblxyXG5pbXBvcnQgeyBDb250ZXh0U3RhdGUgfSBmcm9tICcuLi9jb250ZXh0L2NvbnRleHQuc3RhdGUnO1xyXG5pbXBvcnQgeyBTZWFyY2hTdGF0ZSB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2guc3RhdGUnO1xyXG5pbXBvcnQgeyBUb29sU3RhdGUgfSBmcm9tICcuLi90b29sL3Rvb2wuc3RhdGUnO1xyXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC9tYXAuc3RhdGUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBMYXllcixcclxuICBXTVRTRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgV01TRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zLFxyXG4gIFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgQXJjR0lTUmVzdEltYWdlRGF0YVNvdXJjZU9wdGlvbnNcclxufSBmcm9tICdAaWdvMi9nZW8nO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBzZWFyY2ggbW9kdWxlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NMaXN0ZW5lclNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIFRvb2xib3ggdGhhdCBob2xkcyBtYWluIHRvb2xzXHJcbiAgICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRleHRTdGF0ZTogQ29udGV4dFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTdGF0ZTogU2VhcmNoU3RhdGUsXHJcbiAgICBwcml2YXRlIHRvb2xTdGF0ZTogVG9vbFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGVcclxuICApIHt9XHJcblxyXG4gIGxpc3RlbigpIHtcclxuICAgIHRoaXMubGlzdGVuVXNlcigpO1xyXG4gICAgdGhpcy5saXN0ZW5Db250ZXh0KCk7XHJcbiAgICB0aGlzLmxpc3RlblRvb2woKTtcclxuICAgIHRoaXMubGlzdGVuU2VhcmNoKCk7XHJcbiAgICB0aGlzLmxpc3RlbkxheWVyKCk7XHJcbiAgfVxyXG5cclxuICBsaXN0ZW5Vc2VyKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRva2VuRGVjb2RlZCA9IHRoaXMuYXV0aFNlcnZpY2UuZGVjb2RlVG9rZW4oKSB8fCB7fTtcclxuICAgICAgaWYgKHRva2VuRGVjb2RlZC51c2VyKSB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZVxyXG4gICAgICAgICAgLmdldFByb2ZpbHMoKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShwcm9maWxzID0+XHJcbiAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZXRVc2VyKHRva2VuRGVjb2RlZC51c2VyLCBwcm9maWxzLnByb2ZpbHMpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZXRVc2VyKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbGlzdGVuQ29udGV4dCgpIHtcclxuICAgIHRoaXMuY29udGV4dFN0YXRlLmNvbnRleHQkLnN1YnNjcmliZShjb250ZXh0ID0+IHtcclxuICAgICAgaWYgKGNvbnRleHQpIHtcclxuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tFdmVudCgnY29udGV4dCcsICdhY3RpdmF0ZUNvbnRleHQnLCBjb250ZXh0LmlkIHx8IGNvbnRleHQudXJpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsaXN0ZW5Ub29sKCkge1xyXG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmVUb29sJC5waXBlKHNraXAoMSkpLnN1YnNjcmliZSh0b29sID0+IHtcclxuICAgICAgaWYgKHRvb2wpIHtcclxuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tFdmVudCgndG9vbCcsICdhY3RpdmF0ZVRvb2wnLCB0b29sLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxpc3RlblNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoVGVybSQucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoc2VhcmNoVGVybSAhPT0gdW5kZWZpbmVkICYmIHNlYXJjaFRlcm0gIT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tTZWFyY2goc2VhcmNoVGVybSwgdGhpcy5zZWFyY2hTdGF0ZS5zdG9yZS5jb3VudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIExpc3RlbmVyIGZvciBhZGRpbmcgbGF5ZXJzIHRvIHRoZSBtYXBcclxuICAgICovXHJcbiAgbGlzdGVuTGF5ZXIoKXtcclxuICAgIHRoaXMubWFwU3RhdGUubWFwLmxheWVyc0FkZGVkQnlDbGljayQuc3Vic2NyaWJlKChsYXllcnM6IExheWVyW10pID0+IHtcclxuICAgICAgaWYoIWxheWVycyl7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsYXllcnMubWFwKGxheWVyID0+IHtcclxuICAgICAgICBsZXQgd21zUGFyYW1zOiBzdHJpbmc7XHJcbiAgICAgICAgbGV0IHdtdHNQYXJhbXM6IHN0cmluZztcclxuICAgICAgICBsZXQgeHl6UGFyYW1zOiBzdHJpbmc7XHJcbiAgICAgICAgbGV0IHJlc3RQYXJhbXM6IHN0cmluZztcclxuXHJcbiAgICAgICAgc3dpdGNoIChsYXllci5kYXRhU291cmNlLm9wdGlvbnMudHlwZSl7XHJcbiAgICAgICAgICBjYXNlICd3bXMnOlxyXG4gICAgICAgICAgICBjb25zdCB3bXNEYXRhU291cmNlID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFdNU0RhdGFTb3VyY2VPcHRpb25zO1xyXG4gICAgICAgICAgICBjb25zdCB3bXNMYXllck5hbWU6IHN0cmluZyA9IHdtc0RhdGFTb3VyY2UucGFyYW1zLkxBWUVSUztcclxuICAgICAgICAgICAgY29uc3Qgd21zVXJsOiBzdHJpbmcgPSB3bXNEYXRhU291cmNlLnVybDtcclxuICAgICAgICAgICAgY29uc3Qgd21zVHlwZTogc3RyaW5nID0gd21zRGF0YVNvdXJjZS50eXBlO1xyXG4gICAgICAgICAgICB3bXNQYXJhbXMgPSBKU09OLnN0cmluZ2lmeSh7bGF5ZXI6IHdtc0xheWVyTmFtZSwgdHlwZTogd21zVHlwZSwgdXJsOiB3bXNVcmx9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgIGNhc2UgJ3dtdHMnOlxyXG4gICAgICAgICAgICBjb25zdCB3bXRzRGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBXTVRTRGF0YVNvdXJjZU9wdGlvbnM7XHJcbiAgICAgICAgICAgIGNvbnN0IHdtdHNMYXllck5hbWU6IHN0cmluZyA9IHdtdHNEYXRhU291cmNlLmxheWVyO1xyXG4gICAgICAgICAgICBjb25zdCB3bXRzVXJsOiBzdHJpbmcgPSB3bXRzRGF0YVNvdXJjZS51cmw7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdHJpeFNldDogc3RyaW5nID0gd210c0RhdGFTb3VyY2UubWF0cml4U2V0O1xyXG4gICAgICAgICAgICBjb25zdCB3bXRzVHlwZTogc3RyaW5nID0gd210c0RhdGFTb3VyY2UudHlwZTtcclxuICAgICAgICAgICAgd210c1BhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHtsYXllcjogd210c0xheWVyTmFtZSwgdHlwZTogd210c1R5cGUsIHVybDogd210c1VybCwgbWF0cml4U2V0fSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdhcmNnaXNyZXN0JzpcclxuICAgICAgICAgICAgY2FzZSAndGlsZWFyY2dpc3Jlc3QnOlxyXG4gICAgICAgICAgICBjYXNlICdpbWFnZWFyY2dpc3Jlc3QnOlxyXG4gICAgICAgICAgICBjb25zdCByZXN0RGF0YVNvdXJjZSA9IGxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucyBhcyBBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnMgfCBUaWxlQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zXHJcbiAgICAgICAgICAgICB8IEFyY0dJU1Jlc3RJbWFnZURhdGFTb3VyY2VPcHRpb25zO1xyXG4gICAgICAgICAgICBjb25zdCByZXN0TmFtZTogc3RyaW5nID0gcmVzdERhdGFTb3VyY2UubGF5ZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3RVcmw6IHN0cmluZyA9IHJlc3REYXRhU291cmNlLnVybDtcclxuICAgICAgICAgICAgY29uc3QgcmVzdFR5cGU6IHN0cmluZyA9IHJlc3REYXRhU291cmNlLnR5cGU7XHJcbiAgICAgICAgICAgIHJlc3RQYXJhbXMgPSBKU09OLnN0cmluZ2lmeSh7bGF5ZXI6IHJlc3ROYW1lLCB0eXBlOiByZXN0VHlwZSwgdXJsOiByZXN0VXJsfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAneHl6JzpcclxuICAgICAgICAgICAvKiBjb25zdCB4eXpEYXRhU291cmNlID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFhZWkRhdGFTb3VyY2VPcHRpb25zO1xyXG4gICAgICAgICAgICBjb25zdCB4eXpOYW1lOiBzdHJpbmcgPSBsYXllci50aXRsZTtcclxuICAgICAgICAgICAgY29uc3QgeHl6VXJsOiBzdHJpbmcgPSB4eXpEYXRhU291cmNlLnVybDtcclxuICAgICAgICAgICAgY29uc3QgeHl6VHlwZTogc3RyaW5nID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnR5cGU7XHJcbiAgICAgICAgICAgIHh5elBhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHtsYXllcjogeHl6TmFtZSwgdHlwZTogeHl6VHlwZSwgdXJsOiB4eXpVcmx9KTtcclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAvLyB0b2RvXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tMYXllcignbGF5ZXInLCAnYWRkTGF5ZXInLCB3bXNQYXJhbXMgfHwgd210c1BhcmFtcyB8fCB4eXpQYXJhbXMgfHwgcmVzdFBhcmFtcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Injectable } from '@angular/core';
2
+ import { skip } from 'rxjs/operators';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@igo2/core";
5
+ import * as i2 from "@igo2/auth";
6
+ import * as i3 from "../context/context.state";
7
+ import * as i4 from "../search/search.state";
8
+ import * as i5 from "../tool/tool.state";
9
+ import * as i6 from "../map/map.state";
10
+ /**
11
+ * Service that holds the state of the search module
12
+ */
13
+ export class AnalyticsListenerService {
14
+ /**
15
+ * Toolbox that holds main tools
16
+ */
17
+ constructor(analyticsService, authService, contextState, searchState, toolState, mapState) {
18
+ this.analyticsService = analyticsService;
19
+ this.authService = authService;
20
+ this.contextState = contextState;
21
+ this.searchState = searchState;
22
+ this.toolState = toolState;
23
+ this.mapState = mapState;
24
+ }
25
+ listen() {
26
+ this.listenUser();
27
+ this.listenContext();
28
+ this.listenTool();
29
+ this.listenSearch();
30
+ this.listenLayer();
31
+ }
32
+ listenUser() {
33
+ this.authService.authenticate$.subscribe(() => {
34
+ const tokenDecoded = this.authService.decodeToken() || {};
35
+ if (tokenDecoded.user) {
36
+ this.authService
37
+ .getProfils()
38
+ .subscribe(profils => this.analyticsService.setUser(tokenDecoded.user, profils.profils));
39
+ }
40
+ else {
41
+ this.analyticsService.setUser();
42
+ }
43
+ });
44
+ }
45
+ listenContext() {
46
+ this.contextState.context$.subscribe(context => {
47
+ if (context) {
48
+ this.analyticsService.trackEvent('context', 'activateContext', context.id || context.uri);
49
+ }
50
+ });
51
+ }
52
+ listenTool() {
53
+ this.toolState.toolbox.activeTool$.pipe(skip(1)).subscribe(tool => {
54
+ if (tool) {
55
+ this.analyticsService.trackEvent('tool', 'activateTool', tool.name);
56
+ }
57
+ });
58
+ }
59
+ listenSearch() {
60
+ this.searchState.searchTerm$.pipe(skip(1)).subscribe((searchTerm) => {
61
+ if (searchTerm !== undefined && searchTerm !== null) {
62
+ this.analyticsService.trackSearch(searchTerm, this.searchState.store.count);
63
+ }
64
+ });
65
+ }
66
+ /**
67
+ * Listener for adding layers to the map
68
+ */
69
+ listenLayer() {
70
+ this.mapState.map.layersAddedByClick$.subscribe((layers) => {
71
+ if (!layers) {
72
+ return;
73
+ }
74
+ layers.map(layer => {
75
+ let wmsParams;
76
+ let wmtsParams;
77
+ let xyzParams;
78
+ let restParams;
79
+ switch (layer.dataSource.options.type) {
80
+ case 'wms':
81
+ const wmsDataSource = layer.dataSource.options;
82
+ const wmsLayerName = wmsDataSource.params.LAYERS;
83
+ const wmsUrl = wmsDataSource.url;
84
+ const wmsType = wmsDataSource.type;
85
+ wmsParams = JSON.stringify({ layer: wmsLayerName, type: wmsType, url: wmsUrl });
86
+ break;
87
+ case 'wmts':
88
+ const wmtsDataSource = layer.dataSource.options;
89
+ const wmtsLayerName = wmtsDataSource.layer;
90
+ const wmtsUrl = wmtsDataSource.url;
91
+ const matrixSet = wmtsDataSource.matrixSet;
92
+ const wmtsType = wmtsDataSource.type;
93
+ wmtsParams = JSON.stringify({ layer: wmtsLayerName, type: wmtsType, url: wmtsUrl, matrixSet });
94
+ break;
95
+ case 'arcgisrest':
96
+ case 'tilearcgisrest':
97
+ case 'imagearcgisrest':
98
+ const restDataSource = layer.options.sourceOptions;
99
+ const restName = restDataSource.layer;
100
+ const restUrl = restDataSource.url;
101
+ const restType = restDataSource.type;
102
+ restParams = JSON.stringify({ layer: restName, type: restType, url: restUrl });
103
+ break;
104
+ case 'xyz':
105
+ /* const xyzDataSource = layer.dataSource.options as XYZDataSourceOptions;
106
+ const xyzName: string = layer.title;
107
+ const xyzUrl: string = xyzDataSource.url;
108
+ const xyzType: string = layer.dataSource.options.type;
109
+ xyzParams = JSON.stringify({layer: xyzName, type: xyzType, url: xyzUrl});
110
+ */
111
+ // todo
112
+ break;
113
+ }
114
+ this.analyticsService.trackLayer('layer', 'addLayer', wmsParams || wmtsParams || xyzParams || restParams);
115
+ });
116
+ });
117
+ }
118
+ }
119
+ AnalyticsListenerService.ɵfac = function AnalyticsListenerService_Factory(t) { return new (t || AnalyticsListenerService)(i0.ɵɵinject(i1.AnalyticsService), i0.ɵɵinject(i2.AuthService), i0.ɵɵinject(i3.ContextState), i0.ɵɵinject(i4.SearchState), i0.ɵɵinject(i5.ToolState), i0.ɵɵinject(i6.MapState)); };
120
+ AnalyticsListenerService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AnalyticsListenerService, factory: AnalyticsListenerService.ɵfac, providedIn: 'root' });
121
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsListenerService, [{
122
+ type: Injectable,
123
+ args: [{
124
+ providedIn: 'root'
125
+ }]
126
+ }], function () { return [{ type: i1.AnalyticsService }, { type: i2.AuthService }, { type: i3.ContextState }, { type: i4.SearchState }, { type: i5.ToolState }, { type: i6.MapState }]; }, null); })();
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLWxpc3RlbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2FuYWx5dGljcy9hbmFseXRpY3MtbGlzdGVuZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFvQnRDOztHQUVHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQzs7T0FFRztJQUVILFlBQ1UsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCO1FBTGxCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3pCLENBQUM7SUFFSixNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDMUQsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO2dCQUNyQixJQUFJLENBQUMsV0FBVztxQkFDYixVQUFVLEVBQUU7cUJBQ1osU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQ2xFLENBQUM7YUFDTDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdDLElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hFLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtZQUMxRSxJQUFJLFVBQVUsS0FBSyxTQUFTLElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtnQkFDbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0U7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7UUFFSTtJQUNKLFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUNsRSxJQUFHLENBQUMsTUFBTSxFQUFDO2dCQUNULE9BQU87YUFDUjtZQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksU0FBaUIsQ0FBQztnQkFDdEIsSUFBSSxVQUFrQixDQUFDO2dCQUN2QixJQUFJLFNBQWlCLENBQUM7Z0JBQ3RCLElBQUksVUFBa0IsQ0FBQztnQkFFdkIsUUFBUSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUM7b0JBQ3BDLEtBQUssS0FBSzt3QkFDUixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQStCLENBQUM7d0JBQ3ZFLE1BQU0sWUFBWSxHQUFXLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO3dCQUN6RCxNQUFNLE1BQU0sR0FBVyxhQUFhLENBQUMsR0FBRyxDQUFDO3dCQUN6QyxNQUFNLE9BQU8sR0FBVyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUMzQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQzt3QkFDOUUsTUFBTTtvQkFDVCxLQUFLLE1BQU07d0JBQ1IsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFnQyxDQUFDO3dCQUN6RSxNQUFNLGFBQWEsR0FBVyxjQUFjLENBQUMsS0FBSyxDQUFDO3dCQUNuRCxNQUFNLE9BQU8sR0FBVyxjQUFjLENBQUMsR0FBRyxDQUFDO3dCQUMzQyxNQUFNLFNBQVMsR0FBVyxjQUFjLENBQUMsU0FBUyxDQUFDO3dCQUNuRCxNQUFNLFFBQVEsR0FBVyxjQUFjLENBQUMsSUFBSSxDQUFDO3dCQUM3QyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUM7d0JBQzdGLE1BQU07b0JBQ04sS0FBSyxZQUFZLENBQUM7b0JBQ2xCLEtBQUssZ0JBQWdCLENBQUM7b0JBQ3RCLEtBQUssaUJBQWlCO3dCQUN0QixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQ0YsQ0FBQzt3QkFDcEMsTUFBTSxRQUFRLEdBQVcsY0FBYyxDQUFDLEtBQUssQ0FBQzt3QkFDOUMsTUFBTSxPQUFPLEdBQVcsY0FBYyxDQUFDLEdBQUcsQ0FBQzt3QkFDM0MsTUFBTSxRQUFRLEdBQVcsY0FBYyxDQUFDLElBQUksQ0FBQzt3QkFDN0MsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7d0JBQzdFLE1BQU07b0JBQ1IsS0FBSyxLQUFLO3dCQUNUOzs7OzsyQkFLRzt3QkFDSCxPQUFPO3dCQUNOLE1BQU07aUJBR1Q7Z0JBQ0csSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsSUFBSSxVQUFVLElBQUksU0FBUyxJQUFJLFVBQVUsQ0FBQyxDQUFDO1lBQ2hILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztnR0FySFUsd0JBQXdCOzhFQUF4Qix3QkFBd0IsV0FBeEIsd0JBQXdCLG1CQUZ2QixNQUFNO3VGQUVQLHdCQUF3QjtjQUhwQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuXG5pbXBvcnQgeyBDb250ZXh0U3RhdGUgfSBmcm9tICcuLi9jb250ZXh0L2NvbnRleHQuc3RhdGUnO1xuaW1wb3J0IHsgU2VhcmNoU3RhdGUgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLnN0YXRlJztcbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4uL3Rvb2wvdG9vbC5zdGF0ZSc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC9tYXAuc3RhdGUnO1xuXG5pbXBvcnQge1xuICBMYXllcixcbiAgV01UU0RhdGFTb3VyY2VPcHRpb25zLFxuICBXTVNEYXRhU291cmNlT3B0aW9ucyxcbiAgQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zLFxuICBUaWxlQXJjR0lTUmVzdERhdGFTb3VyY2VPcHRpb25zLFxuICBBcmNHSVNSZXN0SW1hZ2VEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5cbi8qKlxuICogU2VydmljZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgc2VhcmNoIG1vZHVsZVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NMaXN0ZW5lclNlcnZpY2Uge1xuICAvKipcbiAgICogVG9vbGJveCB0aGF0IGhvbGRzIG1haW4gdG9vbHNcbiAgICovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFN0YXRlOiBDb250ZXh0U3RhdGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTdGF0ZTogU2VhcmNoU3RhdGUsXG4gICAgcHJpdmF0ZSB0b29sU3RhdGU6IFRvb2xTdGF0ZSxcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZVxuICApIHt9XG5cbiAgbGlzdGVuKCkge1xuICAgIHRoaXMubGlzdGVuVXNlcigpO1xuICAgIHRoaXMubGlzdGVuQ29udGV4dCgpO1xuICAgIHRoaXMubGlzdGVuVG9vbCgpO1xuICAgIHRoaXMubGlzdGVuU2VhcmNoKCk7XG4gICAgdGhpcy5saXN0ZW5MYXllcigpO1xuICB9XG5cbiAgbGlzdGVuVXNlcigpIHtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHRva2VuRGVjb2RlZCA9IHRoaXMuYXV0aFNlcnZpY2UuZGVjb2RlVG9rZW4oKSB8fCB7fTtcbiAgICAgIGlmICh0b2tlbkRlY29kZWQudXNlcikge1xuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlXG4gICAgICAgICAgLmdldFByb2ZpbHMoKVxuICAgICAgICAgIC5zdWJzY3JpYmUocHJvZmlscyA9PlxuICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNldFVzZXIodG9rZW5EZWNvZGVkLnVzZXIsIHByb2ZpbHMucHJvZmlscylcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNldFVzZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGxpc3RlbkNvbnRleHQoKSB7XG4gICAgdGhpcy5jb250ZXh0U3RhdGUuY29udGV4dCQuc3Vic2NyaWJlKGNvbnRleHQgPT4ge1xuICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnRyYWNrRXZlbnQoJ2NvbnRleHQnLCAnYWN0aXZhdGVDb250ZXh0JywgY29udGV4dC5pZCB8fCBjb250ZXh0LnVyaSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsaXN0ZW5Ub29sKCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZlVG9vbCQucGlwZShza2lwKDEpKS5zdWJzY3JpYmUodG9vbCA9PiB7XG4gICAgICBpZiAodG9vbCkge1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tFdmVudCgndG9vbCcsICdhY3RpdmF0ZVRvb2wnLCB0b29sLm5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbGlzdGVuU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoU3RhdGUuc2VhcmNoVGVybSQucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHNlYXJjaFRlcm0gIT09IHVuZGVmaW5lZCAmJiBzZWFyY2hUZXJtICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS50cmFja1NlYXJjaChzZWFyY2hUZXJtLCB0aGlzLnNlYXJjaFN0YXRlLnN0b3JlLmNvdW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgICogTGlzdGVuZXIgZm9yIGFkZGluZyBsYXllcnMgdG8gdGhlIG1hcFxuICAgICovXG4gIGxpc3RlbkxheWVyKCl7XG4gICAgdGhpcy5tYXBTdGF0ZS5tYXAubGF5ZXJzQWRkZWRCeUNsaWNrJC5zdWJzY3JpYmUoKGxheWVyczogTGF5ZXJbXSkgPT4ge1xuICAgICAgaWYoIWxheWVycyl7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICAgIGxldCB3bXNQYXJhbXM6IHN0cmluZztcbiAgICAgICAgbGV0IHdtdHNQYXJhbXM6IHN0cmluZztcbiAgICAgICAgbGV0IHh5elBhcmFtczogc3RyaW5nO1xuICAgICAgICBsZXQgcmVzdFBhcmFtczogc3RyaW5nO1xuXG4gICAgICAgIHN3aXRjaCAobGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnR5cGUpe1xuICAgICAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgICAgICBjb25zdCB3bXNEYXRhU291cmNlID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFdNU0RhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgICAgICAgY29uc3Qgd21zTGF5ZXJOYW1lOiBzdHJpbmcgPSB3bXNEYXRhU291cmNlLnBhcmFtcy5MQVlFUlM7XG4gICAgICAgICAgICBjb25zdCB3bXNVcmw6IHN0cmluZyA9IHdtc0RhdGFTb3VyY2UudXJsO1xuICAgICAgICAgICAgY29uc3Qgd21zVHlwZTogc3RyaW5nID0gd21zRGF0YVNvdXJjZS50eXBlO1xuICAgICAgICAgICAgd21zUGFyYW1zID0gSlNPTi5zdHJpbmdpZnkoe2xheWVyOiB3bXNMYXllck5hbWUsIHR5cGU6IHdtc1R5cGUsIHVybDogd21zVXJsfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgIGNhc2UgJ3dtdHMnOlxuICAgICAgICAgICAgY29uc3Qgd210c0RhdGFTb3VyY2UgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgV01UU0RhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgICAgICAgY29uc3Qgd210c0xheWVyTmFtZTogc3RyaW5nID0gd210c0RhdGFTb3VyY2UubGF5ZXI7XG4gICAgICAgICAgICBjb25zdCB3bXRzVXJsOiBzdHJpbmcgPSB3bXRzRGF0YVNvdXJjZS51cmw7XG4gICAgICAgICAgICBjb25zdCBtYXRyaXhTZXQ6IHN0cmluZyA9IHdtdHNEYXRhU291cmNlLm1hdHJpeFNldDtcbiAgICAgICAgICAgIGNvbnN0IHdtdHNUeXBlOiBzdHJpbmcgPSB3bXRzRGF0YVNvdXJjZS50eXBlO1xuICAgICAgICAgICAgd210c1BhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHtsYXllcjogd210c0xheWVyTmFtZSwgdHlwZTogd210c1R5cGUsIHVybDogd210c1VybCwgbWF0cml4U2V0fSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FyY2dpc3Jlc3QnOlxuICAgICAgICAgICAgY2FzZSAndGlsZWFyY2dpc3Jlc3QnOlxuICAgICAgICAgICAgY2FzZSAnaW1hZ2VhcmNnaXNyZXN0JzpcbiAgICAgICAgICAgIGNvbnN0IHJlc3REYXRhU291cmNlID0gbGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zIGFzIEFyY0dJU1Jlc3REYXRhU291cmNlT3B0aW9ucyB8IFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZU9wdGlvbnNcbiAgICAgICAgICAgICB8IEFyY0dJU1Jlc3RJbWFnZURhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgcmVzdE5hbWU6IHN0cmluZyA9IHJlc3REYXRhU291cmNlLmxheWVyO1xuICAgICAgICAgICAgY29uc3QgcmVzdFVybDogc3RyaW5nID0gcmVzdERhdGFTb3VyY2UudXJsO1xuICAgICAgICAgICAgY29uc3QgcmVzdFR5cGU6IHN0cmluZyA9IHJlc3REYXRhU291cmNlLnR5cGU7XG4gICAgICAgICAgICByZXN0UGFyYW1zID0gSlNPTi5zdHJpbmdpZnkoe2xheWVyOiByZXN0TmFtZSwgdHlwZTogcmVzdFR5cGUsIHVybDogcmVzdFVybH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAneHl6JzpcbiAgICAgICAgICAgLyogY29uc3QgeHl6RGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBYWVpEYXRhU291cmNlT3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IHh5ek5hbWU6IHN0cmluZyA9IGxheWVyLnRpdGxlO1xuICAgICAgICAgICAgY29uc3QgeHl6VXJsOiBzdHJpbmcgPSB4eXpEYXRhU291cmNlLnVybDtcbiAgICAgICAgICAgIGNvbnN0IHh5elR5cGU6IHN0cmluZyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy50eXBlO1xuICAgICAgICAgICAgeHl6UGFyYW1zID0gSlNPTi5zdHJpbmdpZnkoe2xheWVyOiB4eXpOYW1lLCB0eXBlOiB4eXpUeXBlLCB1cmw6IHh5elVybH0pO1xuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgLy8gdG9kb1xuICAgICAgICAgICAgYnJlYWs7XG5cblxuICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tMYXllcignbGF5ZXInLCAnYWRkTGF5ZXInLCB3bXNQYXJhbXMgfHwgd210c1BhcmFtcyB8fCB4eXpQYXJhbXMgfHwgcmVzdFBhcmFtcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,16 +1,16 @@
1
- import { NgModule } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class IgoAppAnalyticsModule {
4
- }
5
- IgoAppAnalyticsModule.ɵfac = function IgoAppAnalyticsModule_Factory(t) { return new (t || IgoAppAnalyticsModule)(); };
6
- IgoAppAnalyticsModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoAppAnalyticsModule });
7
- IgoAppAnalyticsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
8
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoAppAnalyticsModule, [{
9
- type: NgModule,
10
- args: [{
11
- imports: [],
12
- declarations: [],
13
- exports: []
14
- }]
15
- }], null, null); })();
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvYW5hbHl0aWNzL2FuYWx5dGljcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekMsTUFBTSxPQUFPLHFCQUFxQjs7MEZBQXJCLHFCQUFxQjt1RUFBckIscUJBQXFCOzt1RkFBckIscUJBQXFCO2NBTGpDLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsRUFBRTtnQkFDWCxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLEVBQUU7YUFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtdLFxyXG4gIGRlY2xhcmF0aW9uczogW10sXHJcbiAgZXhwb3J0czogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIElnb0FwcEFuYWx5dGljc01vZHVsZSB7fVxyXG4iXX0=
1
+ import { NgModule } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class IgoAppAnalyticsModule {
4
+ }
5
+ IgoAppAnalyticsModule.ɵfac = function IgoAppAnalyticsModule_Factory(t) { return new (t || IgoAppAnalyticsModule)(); };
6
+ IgoAppAnalyticsModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: IgoAppAnalyticsModule });
7
+ IgoAppAnalyticsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
8
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoAppAnalyticsModule, [{
9
+ type: NgModule,
10
+ args: [{
11
+ imports: [],
12
+ declarations: [],
13
+ exports: []
14
+ }]
15
+ }], null, null); })();
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvYW5hbHl0aWNzL2FuYWx5dGljcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPekMsTUFBTSxPQUFPLHFCQUFxQjs7MEZBQXJCLHFCQUFxQjt1RUFBckIscUJBQXFCOzt1RkFBckIscUJBQXFCO2NBTGpDLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsRUFBRTtnQkFDWCxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLEVBQUU7YUFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBJZ29BcHBBbmFseXRpY3NNb2R1bGUge31cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export * from './analytics-listener.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2FuYWx5dGljcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmFseXRpY3MtbGlzdGVuZXIuc2VydmljZSc7XHJcbiJdfQ==
1
+ export * from './analytics-listener.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL2FuYWx5dGljcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmFseXRpY3MtbGlzdGVuZXIuc2VydmljZSc7XG4iXX0=
@@ -1,113 +1,113 @@
1
- import { __decorate } from "tslib";
2
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
3
- import { BehaviorSubject } from 'rxjs';
4
- import { take } from 'rxjs/operators';
5
- import { EntityStore, ToolComponent } from '@igo2/common';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@igo2/geo";
8
- import * as i2 from "../catalog.state";
9
- import * as i3 from "../../map/map.state";
10
- import * as i4 from "@igo2/auth";
11
- import * as i5 from "@angular/common";
12
- function CatalogBrowserToolComponent_igo_catalog_browser_0_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelement(0, "igo-catalog-browser", 1);
14
- } if (rf & 2) {
15
- const store_r1 = ctx.ngIf;
16
- const ctx_r0 = i0.ɵɵnextContext();
17
- i0.ɵɵproperty("catalog", ctx_r0.catalog)("store", store_r1)("map", ctx_r0.map)("toggleCollapsedGroup", ctx_r0.toggleCollapsedGroup);
18
- } }
19
- /**
20
- * Tool to browse a catalog's groups and layers and display them to a map.
21
- */
22
- let CatalogBrowserToolComponent = class CatalogBrowserToolComponent {
23
- constructor(catalogService, catalogState, mapState, authService) {
24
- this.catalogService = catalogService;
25
- this.catalogState = catalogState;
26
- this.mapState = mapState;
27
- this.authService = authService;
28
- /**
29
- * Store that contains the catalog items
30
- * @internal
31
- */
32
- this.store$ = new BehaviorSubject(undefined);
33
- /**
34
- * Whether a group can be toggled when it's collapsed
35
- */
36
- this.toggleCollapsedGroup = true;
37
- }
38
- /**
39
- * Map to add layers to
40
- * @internal
41
- */
42
- get map() {
43
- return this.mapState.map;
44
- }
45
- /**
46
- * @internal
47
- */
48
- ngOnInit() {
49
- const catalogStore = this.catalogState.catalogStore;
50
- this.catalog$$ = catalogStore.stateView
51
- .firstBy$((record) => record.state.selected === true)
52
- .subscribe((record) => {
53
- if (record && record.entity) {
54
- const catalog = record.entity;
55
- this.catalog = catalog;
56
- }
57
- });
58
- this.authenticate$$ = this.authService.authenticate$.subscribe(() => {
59
- this.loadCatalogItems(this.catalog);
60
- });
61
- }
62
- /**
63
- * @internal
64
- */
65
- ngOnDestroy() {
66
- this.catalog$$.unsubscribe();
67
- this.authenticate$$.unsubscribe();
68
- }
69
- /**
70
- * Get the selected catalog's items from the CatalogService and
71
- * load them into the store.
72
- * @param catalog Selected catalog
73
- */
74
- loadCatalogItems(catalog) {
75
- let store = this.catalogState.getCatalogItemsStore(catalog);
76
- if (store !== undefined) {
77
- this.store$.next(store);
78
- return;
79
- }
80
- store = new EntityStore([]);
81
- this.catalogState.setCatalogItemsStore(catalog, store);
82
- this.catalogService
83
- .loadCatalogItems(catalog)
84
- .pipe(take(1))
85
- .subscribe((items) => {
86
- store.load(items);
87
- this.store$.next(store);
88
- });
89
- }
90
- };
91
- CatalogBrowserToolComponent.ɵfac = function CatalogBrowserToolComponent_Factory(t) { return new (t || CatalogBrowserToolComponent)(i0.ɵɵdirectiveInject(i1.CatalogService), i0.ɵɵdirectiveInject(i2.CatalogState), i0.ɵɵdirectiveInject(i3.MapState), i0.ɵɵdirectiveInject(i4.AuthService)); };
92
- CatalogBrowserToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserToolComponent, selectors: [["igo-catalog-browser-tool"]], inputs: { toggleCollapsedGroup: "toggleCollapsedGroup" }, decls: 2, vars: 3, consts: [[3, "catalog", "store", "map", "toggleCollapsedGroup", 4, "ngIf"], [3, "catalog", "store", "map", "toggleCollapsedGroup"]], template: function CatalogBrowserToolComponent_Template(rf, ctx) { if (rf & 1) {
93
- i0.ɵɵtemplate(0, CatalogBrowserToolComponent_igo_catalog_browser_0_Template, 1, 4, "igo-catalog-browser", 0);
94
- i0.ɵɵpipe(1, "async");
95
- } if (rf & 2) {
96
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.store$));
97
- } }, dependencies: [i5.NgIf, i1.CatalogBrowserComponent, i5.AsyncPipe], encapsulation: 2, changeDetection: 0 });
98
- CatalogBrowserToolComponent = __decorate([
99
- ToolComponent({
100
- name: 'catalogBrowser',
101
- title: 'igo.integration.tools.catalog',
102
- icon: 'photo-browser',
103
- parent: 'catalog'
104
- })
105
- ], CatalogBrowserToolComponent);
106
- export { CatalogBrowserToolComponent };
107
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserToolComponent, [{
108
- type: Component,
109
- args: [{ selector: 'igo-catalog-browser-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-catalog-browser\r\n *ngIf=\"store$ | async as store\"\r\n [catalog]=\"catalog\"\r\n [store]=\"store\"\r\n [map]=\"map\"\r\n [toggleCollapsedGroup]=\"toggleCollapsedGroup\">\r\n</igo-catalog-browser>\r\n" }]
110
- }], function () { return [{ type: i1.CatalogService }, { type: i2.CatalogState }, { type: i3.MapState }, { type: i4.AuthService }]; }, { toggleCollapsedGroup: [{
111
- type: Input
112
- }] }); })();
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1icm93c2VyLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9jYXRhbG9nL2NhdGFsb2ctYnJvd3Nlci10b29sL2NhdGFsb2ctYnJvd3Nlci10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvY2F0YWxvZy9jYXRhbG9nLWJyb3dzZXItdG9vbC9jYXRhbG9nLWJyb3dzZXItdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsdUJBQXVCLEVBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQWdCLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0lDWHhFLHlDQU1zQjs7OztJQUpwQix3Q0FBbUIsbUJBQUEsbUJBQUEscURBQUE7O0FEdUJyQjs7R0FFRztJQVlVLDJCQUEyQixTQUEzQiwyQkFBMkI7SUFrQ3RDLFlBQ1UsY0FBOEIsRUFDOUIsWUFBMEIsRUFDMUIsUUFBa0IsRUFDbEIsV0FBd0I7UUFIeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFuQ2xDOzs7V0FHRztRQUNILFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FDMUIsU0FBUyxDQUNWLENBQUM7UUFZRjs7V0FFRztRQUNNLHlCQUFvQixHQUFZLElBQUksQ0FBQztJQWUzQyxDQUFDO0lBYko7OztPQUdHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBU0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUzthQUNwQyxRQUFRLENBQ1AsQ0FBQyxNQUE2QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQ2xFO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBNkIsRUFBRSxFQUFFO1lBQzNDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQzNCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixPQUFPO1NBQ1I7UUFFRCxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWM7YUFDaEIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRixDQUFBO3NHQTVGWSwyQkFBMkI7OEVBQTNCLDJCQUEyQjtRQ3ZDeEMsNEdBTXNCOzs7UUFMbkIsdURBQXFCOztBRHNDWCwyQkFBMkI7SUFYdkMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixLQUFLLEVBQUUsK0JBQStCO1FBQ3RDLElBQUksRUFBRSxlQUFlO1FBQ3JCLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLENBQUM7R0FNVywyQkFBMkIsQ0E0RnZDO1NBNUZZLDJCQUEyQjt1RkFBM0IsMkJBQTJCO2NBTHZDLFNBQVM7MkJBQ0UsMEJBQTBCLG1CQUVuQix1QkFBdUIsQ0FBQyxNQUFNOzZJQTBCdEMsb0JBQW9CO2tCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVudGl0eVJlY29yZCwgRW50aXR5U3RvcmUsIFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpZ28yL2F1dGgnO1xyXG5cclxuaW1wb3J0IHtcclxuICBJZ29NYXAsXHJcbiAgQ2F0YWxvZyxcclxuICBDYXRhbG9nSXRlbSxcclxuICBDYXRhbG9nSXRlbVN0YXRlLFxyXG4gIENhdGFsb2dTZXJ2aWNlXHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuXHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vLi4vbWFwL21hcC5zdGF0ZSc7XHJcbmltcG9ydCB7IENhdGFsb2dTdGF0ZSB9IGZyb20gJy4uL2NhdGFsb2cuc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFRvb2wgdG8gYnJvd3NlIGEgY2F0YWxvZydzIGdyb3VwcyBhbmQgbGF5ZXJzIGFuZCBkaXNwbGF5IHRoZW0gdG8gYSBtYXAuXHJcbiAqL1xyXG5AVG9vbENvbXBvbmVudCh7XHJcbiAgbmFtZTogJ2NhdGFsb2dCcm93c2VyJyxcclxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5jYXRhbG9nJyxcclxuICBpY29uOiAncGhvdG8tYnJvd3NlcicsXHJcbiAgcGFyZW50OiAnY2F0YWxvZydcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tY2F0YWxvZy1icm93c2VyLXRvb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXRhbG9nLWJyb3dzZXItdG9vbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIENhdGFsb2dCcm93c2VyVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjYXRhbG9nOiBDYXRhbG9nO1xyXG5cclxuICAvKipcclxuICAgKiBTdG9yZSB0aGF0IGNvbnRhaW5zIHRoZSBjYXRhbG9nIGl0ZW1zXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgc3RvcmUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFbnRpdHlTdG9yZTxDYXRhbG9nSXRlbSwgQ2F0YWxvZ0l0ZW1TdGF0ZT4+KFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBzZWxlY3RlZCBjYXRhbG9nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjYXRhbG9nJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIGZvciBhdXRoZW50aWNhdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXV0aGVudGljYXRlJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBhIGdyb3VwIGNhbiBiZSB0b2dnbGVkIHdoZW4gaXQncyBjb2xsYXBzZWRcclxuICAgKi9cclxuICBASW5wdXQoKSB0b2dnbGVDb2xsYXBzZWRHcm91cDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcCB0byBhZGQgbGF5ZXJzIHRvXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhdGFsb2dTZXJ2aWNlOiBDYXRhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgY2F0YWxvZ1N0YXRlOiBDYXRhbG9nU3RhdGUsXHJcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IGNhdGFsb2dTdG9yZSA9IHRoaXMuY2F0YWxvZ1N0YXRlLmNhdGFsb2dTdG9yZTtcclxuICAgIHRoaXMuY2F0YWxvZyQkID0gY2F0YWxvZ1N0b3JlLnN0YXRlVmlld1xyXG4gICAgICAuZmlyc3RCeSQoXHJcbiAgICAgICAgKHJlY29yZDogRW50aXR5UmVjb3JkPENhdGFsb2c+KSA9PiByZWNvcmQuc3RhdGUuc2VsZWN0ZWQgPT09IHRydWVcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZWNvcmQ6IEVudGl0eVJlY29yZDxDYXRhbG9nPikgPT4ge1xyXG4gICAgICAgIGlmIChyZWNvcmQgJiYgcmVjb3JkLmVudGl0eSkge1xyXG4gICAgICAgICAgY29uc3QgY2F0YWxvZyA9IHJlY29yZC5lbnRpdHk7XHJcbiAgICAgICAgICB0aGlzLmNhdGFsb2cgPSBjYXRhbG9nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGUkJCA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRDYXRhbG9nSXRlbXModGhpcy5jYXRhbG9nKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNhdGFsb2ckJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGUkJC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBzZWxlY3RlZCBjYXRhbG9nJ3MgaXRlbXMgZnJvbSB0aGUgQ2F0YWxvZ1NlcnZpY2UgYW5kXHJcbiAgICogbG9hZCB0aGVtIGludG8gdGhlIHN0b3JlLlxyXG4gICAqIEBwYXJhbSBjYXRhbG9nIFNlbGVjdGVkIGNhdGFsb2dcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRDYXRhbG9nSXRlbXMoY2F0YWxvZzogQ2F0YWxvZykge1xyXG4gICAgbGV0IHN0b3JlID0gdGhpcy5jYXRhbG9nU3RhdGUuZ2V0Q2F0YWxvZ0l0ZW1zU3RvcmUoY2F0YWxvZyk7XHJcbiAgICBpZiAoc3RvcmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnN0b3JlJC5uZXh0KHN0b3JlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3JlID0gbmV3IEVudGl0eVN0b3JlPENhdGFsb2dJdGVtPihbXSk7XHJcbiAgICB0aGlzLmNhdGFsb2dTdGF0ZS5zZXRDYXRhbG9nSXRlbXNTdG9yZShjYXRhbG9nLCBzdG9yZSk7XHJcbiAgICB0aGlzLmNhdGFsb2dTZXJ2aWNlXHJcbiAgICAgIC5sb2FkQ2F0YWxvZ0l0ZW1zKGNhdGFsb2cpXHJcbiAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBDYXRhbG9nSXRlbVtdKSA9PiB7XHJcbiAgICAgICAgc3RvcmUubG9hZChpdGVtcyk7XHJcbiAgICAgICAgdGhpcy5zdG9yZSQubmV4dChzdG9yZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8aWdvLWNhdGFsb2ctYnJvd3NlclxyXG4gICpuZ0lmPVwic3RvcmUkIHwgYXN5bmMgYXMgc3RvcmVcIlxyXG4gIFtjYXRhbG9nXT1cImNhdGFsb2dcIlxyXG4gIFtzdG9yZV09XCJzdG9yZVwiXHJcbiAgW21hcF09XCJtYXBcIlxyXG4gIFt0b2dnbGVDb2xsYXBzZWRHcm91cF09XCJ0b2dnbGVDb2xsYXBzZWRHcm91cFwiPlxyXG48L2lnby1jYXRhbG9nLWJyb3dzZXI+XHJcbiJdfQ==
1
+ import { __decorate } from "tslib";
2
+ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { take } from 'rxjs/operators';
5
+ import { EntityStore, ToolComponent } from '@igo2/common';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@igo2/geo";
8
+ import * as i2 from "../catalog.state";
9
+ import * as i3 from "../../map/map.state";
10
+ import * as i4 from "@igo2/auth";
11
+ import * as i5 from "@angular/common";
12
+ function CatalogBrowserToolComponent_igo_catalog_browser_0_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelement(0, "igo-catalog-browser", 1);
14
+ } if (rf & 2) {
15
+ const store_r1 = ctx.ngIf;
16
+ const ctx_r0 = i0.ɵɵnextContext();
17
+ i0.ɵɵproperty("catalog", ctx_r0.catalog)("store", store_r1)("map", ctx_r0.map)("toggleCollapsedGroup", ctx_r0.toggleCollapsedGroup);
18
+ } }
19
+ /**
20
+ * Tool to browse a catalog's groups and layers and display them to a map.
21
+ */
22
+ let CatalogBrowserToolComponent = class CatalogBrowserToolComponent {
23
+ constructor(catalogService, catalogState, mapState, authService) {
24
+ this.catalogService = catalogService;
25
+ this.catalogState = catalogState;
26
+ this.mapState = mapState;
27
+ this.authService = authService;
28
+ /**
29
+ * Store that contains the catalog items
30
+ * @internal
31
+ */
32
+ this.store$ = new BehaviorSubject(undefined);
33
+ /**
34
+ * Whether a group can be toggled when it's collapsed
35
+ */
36
+ this.toggleCollapsedGroup = true;
37
+ }
38
+ /**
39
+ * Map to add layers to
40
+ * @internal
41
+ */
42
+ get map() {
43
+ return this.mapState.map;
44
+ }
45
+ /**
46
+ * @internal
47
+ */
48
+ ngOnInit() {
49
+ const catalogStore = this.catalogState.catalogStore;
50
+ this.catalog$$ = catalogStore.stateView
51
+ .firstBy$((record) => record.state.selected === true)
52
+ .subscribe((record) => {
53
+ if (record && record.entity) {
54
+ const catalog = record.entity;
55
+ this.catalog = catalog;
56
+ }
57
+ });
58
+ this.authenticate$$ = this.authService.authenticate$.subscribe(() => {
59
+ this.loadCatalogItems(this.catalog);
60
+ });
61
+ }
62
+ /**
63
+ * @internal
64
+ */
65
+ ngOnDestroy() {
66
+ this.catalog$$.unsubscribe();
67
+ this.authenticate$$.unsubscribe();
68
+ }
69
+ /**
70
+ * Get the selected catalog's items from the CatalogService and
71
+ * load them into the store.
72
+ * @param catalog Selected catalog
73
+ */
74
+ loadCatalogItems(catalog) {
75
+ let store = this.catalogState.getCatalogItemsStore(catalog);
76
+ if (store !== undefined) {
77
+ this.store$.next(store);
78
+ return;
79
+ }
80
+ store = new EntityStore([]);
81
+ this.catalogState.setCatalogItemsStore(catalog, store);
82
+ this.catalogService
83
+ .loadCatalogItems(catalog)
84
+ .pipe(take(1))
85
+ .subscribe((items) => {
86
+ store.load(items);
87
+ this.store$.next(store);
88
+ });
89
+ }
90
+ };
91
+ CatalogBrowserToolComponent.ɵfac = function CatalogBrowserToolComponent_Factory(t) { return new (t || CatalogBrowserToolComponent)(i0.ɵɵdirectiveInject(i1.CatalogService), i0.ɵɵdirectiveInject(i2.CatalogState), i0.ɵɵdirectiveInject(i3.MapState), i0.ɵɵdirectiveInject(i4.AuthService)); };
92
+ CatalogBrowserToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserToolComponent, selectors: [["igo-catalog-browser-tool"]], inputs: { toggleCollapsedGroup: "toggleCollapsedGroup" }, decls: 2, vars: 3, consts: [[3, "catalog", "store", "map", "toggleCollapsedGroup", 4, "ngIf"], [3, "catalog", "store", "map", "toggleCollapsedGroup"]], template: function CatalogBrowserToolComponent_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵtemplate(0, CatalogBrowserToolComponent_igo_catalog_browser_0_Template, 1, 4, "igo-catalog-browser", 0);
94
+ i0.ɵɵpipe(1, "async");
95
+ } if (rf & 2) {
96
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.store$));
97
+ } }, dependencies: [i5.NgIf, i1.CatalogBrowserComponent, i5.AsyncPipe], encapsulation: 2, changeDetection: 0 });
98
+ CatalogBrowserToolComponent = __decorate([
99
+ ToolComponent({
100
+ name: 'catalogBrowser',
101
+ title: 'igo.integration.tools.catalog',
102
+ icon: 'photo-browser',
103
+ parent: 'catalog'
104
+ })
105
+ ], CatalogBrowserToolComponent);
106
+ export { CatalogBrowserToolComponent };
107
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserToolComponent, [{
108
+ type: Component,
109
+ args: [{ selector: 'igo-catalog-browser-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-catalog-browser\n *ngIf=\"store$ | async as store\"\n [catalog]=\"catalog\"\n [store]=\"store\"\n [map]=\"map\"\n [toggleCollapsedGroup]=\"toggleCollapsedGroup\">\n</igo-catalog-browser>\n" }]
110
+ }], function () { return [{ type: i1.CatalogService }, { type: i2.CatalogState }, { type: i3.MapState }, { type: i4.AuthService }]; }, { toggleCollapsedGroup: [{
111
+ type: Input
112
+ }] }); })();
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1icm93c2VyLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9jYXRhbG9nL2NhdGFsb2ctYnJvd3Nlci10b29sL2NhdGFsb2ctYnJvd3Nlci10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvY2F0YWxvZy9jYXRhbG9nLWJyb3dzZXItdG9vbC9jYXRhbG9nLWJyb3dzZXItdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsdUJBQXVCLEVBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQWdCLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0lDWHhFLHlDQU1zQjs7OztJQUpwQix3Q0FBbUIsbUJBQUEsbUJBQUEscURBQUE7O0FEdUJyQjs7R0FFRztJQVlVLDJCQUEyQixTQUEzQiwyQkFBMkI7SUFrQ3RDLFlBQ1UsY0FBOEIsRUFDOUIsWUFBMEIsRUFDMUIsUUFBa0IsRUFDbEIsV0FBd0I7UUFIeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFuQ2xDOzs7V0FHRztRQUNILFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FDMUIsU0FBUyxDQUNWLENBQUM7UUFZRjs7V0FFRztRQUNNLHlCQUFvQixHQUFZLElBQUksQ0FBQztJQWUzQyxDQUFDO0lBYko7OztPQUdHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBU0Q7O09BRUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUzthQUNwQyxRQUFRLENBQ1AsQ0FBQyxNQUE2QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQ2xFO2FBQ0EsU0FBUyxDQUFDLENBQUMsTUFBNkIsRUFBRSxFQUFFO1lBQzNDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQzNCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixPQUFPO1NBQ1I7UUFFRCxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWM7YUFDaEIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRixDQUFBO3NHQTVGWSwyQkFBMkI7OEVBQTNCLDJCQUEyQjtRQ3ZDeEMsNEdBTXNCOzs7UUFMbkIsdURBQXFCOztBRHNDWCwyQkFBMkI7SUFYdkMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixLQUFLLEVBQUUsK0JBQStCO1FBQ3RDLElBQUksRUFBRSxlQUFlO1FBQ3JCLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLENBQUM7R0FNVywyQkFBMkIsQ0E0RnZDO1NBNUZZLDJCQUEyQjt1RkFBM0IsMkJBQTJCO2NBTHZDLFNBQVM7MkJBQ0UsMEJBQTBCLG1CQUVuQix1QkFBdUIsQ0FBQyxNQUFNOzZJQTBCdEMsb0JBQW9CO2tCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRW50aXR5UmVjb3JkLCBFbnRpdHlTdG9yZSwgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuXG5pbXBvcnQge1xuICBJZ29NYXAsXG4gIENhdGFsb2csXG4gIENhdGFsb2dJdGVtLFxuICBDYXRhbG9nSXRlbVN0YXRlLFxuICBDYXRhbG9nU2VydmljZVxufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uLy4uL21hcC9tYXAuc3RhdGUnO1xuaW1wb3J0IHsgQ2F0YWxvZ1N0YXRlIH0gZnJvbSAnLi4vY2F0YWxvZy5zdGF0ZSc7XG5cbi8qKlxuICogVG9vbCB0byBicm93c2UgYSBjYXRhbG9nJ3MgZ3JvdXBzIGFuZCBsYXllcnMgYW5kIGRpc3BsYXkgdGhlbSB0byBhIG1hcC5cbiAqL1xuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnY2F0YWxvZ0Jyb3dzZXInLFxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5jYXRhbG9nJyxcbiAgaWNvbjogJ3Bob3RvLWJyb3dzZXInLFxuICBwYXJlbnQ6ICdjYXRhbG9nJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1jYXRhbG9nLWJyb3dzZXItdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXRhbG9nLWJyb3dzZXItdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dCcm93c2VyVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY2F0YWxvZzogQ2F0YWxvZztcblxuICAvKipcbiAgICogU3RvcmUgdGhhdCBjb250YWlucyB0aGUgY2F0YWxvZyBpdGVtc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHN0b3JlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RW50aXR5U3RvcmU8Q2F0YWxvZ0l0ZW0sIENhdGFsb2dJdGVtU3RhdGU+PihcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBzZWxlY3RlZCBjYXRhbG9nXG4gICAqL1xuICBwcml2YXRlIGNhdGFsb2ckJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwcml2YXRlIGF1dGhlbnRpY2F0ZSQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBncm91cCBjYW4gYmUgdG9nZ2xlZCB3aGVuIGl0J3MgY29sbGFwc2VkXG4gICAqL1xuICBASW5wdXQoKSB0b2dnbGVDb2xsYXBzZWRHcm91cDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIE1hcCB0byBhZGQgbGF5ZXJzIHRvXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2F0YWxvZ1NlcnZpY2U6IENhdGFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2F0YWxvZ1N0YXRlOiBDYXRhbG9nU3RhdGUsXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNhdGFsb2dTdG9yZSA9IHRoaXMuY2F0YWxvZ1N0YXRlLmNhdGFsb2dTdG9yZTtcbiAgICB0aGlzLmNhdGFsb2ckJCA9IGNhdGFsb2dTdG9yZS5zdGF0ZVZpZXdcbiAgICAgIC5maXJzdEJ5JChcbiAgICAgICAgKHJlY29yZDogRW50aXR5UmVjb3JkPENhdGFsb2c+KSA9PiByZWNvcmQuc3RhdGUuc2VsZWN0ZWQgPT09IHRydWVcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlY29yZDogRW50aXR5UmVjb3JkPENhdGFsb2c+KSA9PiB7XG4gICAgICAgIGlmIChyZWNvcmQgJiYgcmVjb3JkLmVudGl0eSkge1xuICAgICAgICAgIGNvbnN0IGNhdGFsb2cgPSByZWNvcmQuZW50aXR5O1xuICAgICAgICAgIHRoaXMuY2F0YWxvZyA9IGNhdGFsb2c7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hdXRoZW50aWNhdGUkJCA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkQ2F0YWxvZ0l0ZW1zKHRoaXMuY2F0YWxvZyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNhdGFsb2ckJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYXV0aGVudGljYXRlJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlbGVjdGVkIGNhdGFsb2cncyBpdGVtcyBmcm9tIHRoZSBDYXRhbG9nU2VydmljZSBhbmRcbiAgICogbG9hZCB0aGVtIGludG8gdGhlIHN0b3JlLlxuICAgKiBAcGFyYW0gY2F0YWxvZyBTZWxlY3RlZCBjYXRhbG9nXG4gICAqL1xuICBwcml2YXRlIGxvYWRDYXRhbG9nSXRlbXMoY2F0YWxvZzogQ2F0YWxvZykge1xuICAgIGxldCBzdG9yZSA9IHRoaXMuY2F0YWxvZ1N0YXRlLmdldENhdGFsb2dJdGVtc1N0b3JlKGNhdGFsb2cpO1xuICAgIGlmIChzdG9yZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0b3JlJC5uZXh0KHN0b3JlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdG9yZSA9IG5ldyBFbnRpdHlTdG9yZTxDYXRhbG9nSXRlbT4oW10pO1xuICAgIHRoaXMuY2F0YWxvZ1N0YXRlLnNldENhdGFsb2dJdGVtc1N0b3JlKGNhdGFsb2csIHN0b3JlKTtcbiAgICB0aGlzLmNhdGFsb2dTZXJ2aWNlXG4gICAgICAubG9hZENhdGFsb2dJdGVtcyhjYXRhbG9nKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW1zOiBDYXRhbG9nSXRlbVtdKSA9PiB7XG4gICAgICAgIHN0b3JlLmxvYWQoaXRlbXMpO1xuICAgICAgICB0aGlzLnN0b3JlJC5uZXh0KHN0b3JlKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8aWdvLWNhdGFsb2ctYnJvd3NlclxuICAqbmdJZj1cInN0b3JlJCB8IGFzeW5jIGFzIHN0b3JlXCJcbiAgW2NhdGFsb2ddPVwiY2F0YWxvZ1wiXG4gIFtzdG9yZV09XCJzdG9yZVwiXG4gIFttYXBdPVwibWFwXCJcbiAgW3RvZ2dsZUNvbGxhcHNlZEdyb3VwXT1cInRvZ2dsZUNvbGxhcHNlZEdyb3VwXCI+XG48L2lnby1jYXRhbG9nLWJyb3dzZXI+XG4iXX0=