@igo2/integration 18.0.1-next.2 → 18.0.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 (114) hide show
  1. package/esm2022/igo2-integration.mjs +5 -0
  2. package/esm2022/lib/about/about-tool/about-tool.component.mjs +152 -0
  3. package/esm2022/lib/about/about-tool/index.mjs +2 -0
  4. package/esm2022/lib/about/about.module.mjs +26 -0
  5. package/esm2022/lib/about/index.mjs +2 -0
  6. package/esm2022/lib/analytics/analytics-listener.service.mjs +149 -0
  7. package/esm2022/lib/analytics/index.mjs +2 -0
  8. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +117 -0
  9. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +19 -0
  10. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +110 -0
  11. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +19 -0
  12. package/esm2022/lib/catalog/catalog.module.mjs +19 -0
  13. package/esm2022/lib/catalog/catalog.state.mjs +58 -0
  14. package/esm2022/lib/catalog/index.mjs +6 -0
  15. package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +33 -0
  16. package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +46 -0
  17. package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +23 -0
  18. package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +40 -0
  19. package/esm2022/lib/context/context.directive.mjs +11 -0
  20. package/esm2022/lib/context/context.module.mjs +23 -0
  21. package/esm2022/lib/context/context.state.mjs +96 -0
  22. package/esm2022/lib/context/index.mjs +7 -0
  23. package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +121 -0
  24. package/esm2022/lib/directions/directions-tool/index.mjs +2 -0
  25. package/esm2022/lib/directions/directions.module.mjs +25 -0
  26. package/esm2022/lib/directions/directions.state.mjs +57 -0
  27. package/esm2022/lib/directions/index.mjs +3 -0
  28. package/esm2022/lib/draw/draw.module.mjs +18 -0
  29. package/esm2022/lib/draw/draw.state.mjs +43 -0
  30. package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +72 -0
  31. package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +19 -0
  32. package/esm2022/lib/draw/index.mjs +4 -0
  33. package/esm2022/lib/environment/environment.interface.mjs +2 -0
  34. package/esm2022/lib/environment/index.mjs +2 -0
  35. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +10 -0
  36. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +43 -0
  37. package/esm2022/lib/filter/active-ogc-filter-tool/index.mjs +2 -0
  38. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +10 -0
  39. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +43 -0
  40. package/esm2022/lib/filter/active-time-filter-tool/index.mjs +2 -0
  41. package/esm2022/lib/filter/filter.module.mjs +53 -0
  42. package/esm2022/lib/filter/index.mjs +18 -0
  43. package/esm2022/lib/filter/ogc-filter-tool/index.mjs +2 -0
  44. package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +22 -0
  45. package/esm2022/lib/filter/spatial-filter-tool/index.mjs +2 -0
  46. package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +589 -0
  47. package/esm2022/lib/filter/time-filter-tool/index.mjs +2 -0
  48. package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +22 -0
  49. package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +188 -0
  50. package/esm2022/lib/geometry-form/data-issue-reporter-tool/index.mjs +2 -0
  51. package/esm2022/lib/geometry-form/geometry-form.module.mjs +37 -0
  52. package/esm2022/lib/geometry-form/index.mjs +2 -0
  53. package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +113 -0
  54. package/esm2022/lib/import-export/import-export-tool/index.mjs +2 -0
  55. package/esm2022/lib/import-export/import-export.module.mjs +25 -0
  56. package/esm2022/lib/import-export/import-export.state.mjs +39 -0
  57. package/esm2022/lib/import-export/index.mjs +3 -0
  58. package/esm2022/lib/integration.module.mjs +70 -0
  59. package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +446 -0
  60. package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +66 -0
  61. package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +157 -0
  62. package/esm2022/lib/map/advanced-map-tool/index.mjs +2 -0
  63. package/esm2022/lib/map/index.mjs +10 -0
  64. package/esm2022/lib/map/layer-list-tool.state.mjs +40 -0
  65. package/esm2022/lib/map/map-details-tool/index.mjs +2 -0
  66. package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +190 -0
  67. package/esm2022/lib/map/map-legend/index.mjs +2 -0
  68. package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +165 -0
  69. package/esm2022/lib/map/map-proximity-tool/index.mjs +2 -0
  70. package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +152 -0
  71. package/esm2022/lib/map/map-proximity.state.mjs +179 -0
  72. package/esm2022/lib/map/map-tool/index.mjs +2 -0
  73. package/esm2022/lib/map/map-tool/map-tool.component.mjs +152 -0
  74. package/esm2022/lib/map/map-tools/index.mjs +2 -0
  75. package/esm2022/lib/map/map-tools/map-tools.component.mjs +350 -0
  76. package/esm2022/lib/map/map.directive.mjs +15 -0
  77. package/esm2022/lib/map/map.module.mjs +59 -0
  78. package/esm2022/lib/map/map.state.mjs +56 -0
  79. package/esm2022/lib/measure/index.mjs +4 -0
  80. package/esm2022/lib/measure/measure.module.mjs +18 -0
  81. package/esm2022/lib/measure/measure.state.mjs +41 -0
  82. package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +51 -0
  83. package/esm2022/lib/measure/measurer-tool/measurer-tool.module.mjs +19 -0
  84. package/esm2022/lib/print/index.mjs +2 -0
  85. package/esm2022/lib/print/print-tool/index.mjs +2 -0
  86. package/esm2022/lib/print/print-tool/print-tool.component.mjs +32 -0
  87. package/esm2022/lib/print/print.module.mjs +25 -0
  88. package/esm2022/lib/search/index.mjs +7 -0
  89. package/esm2022/lib/search/query.state.mjs +48 -0
  90. package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +71 -0
  91. package/esm2022/lib/search/search-bar/search-bar.module.mjs +19 -0
  92. package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +557 -0
  93. package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +19 -0
  94. package/esm2022/lib/search/search.module.mjs +20 -0
  95. package/esm2022/lib/search/search.state.mjs +155 -0
  96. package/esm2022/lib/storage/index.mjs +2 -0
  97. package/esm2022/lib/storage/storage.state.mjs +25 -0
  98. package/esm2022/lib/tool/index.mjs +2 -0
  99. package/esm2022/lib/tool/tool.state.mjs +56 -0
  100. package/esm2022/lib/workspace/index.mjs +4 -0
  101. package/esm2022/lib/workspace/shared/edition-actions.service.mjs +75 -0
  102. package/esm2022/lib/workspace/shared/feature-actions.service.mjs +65 -0
  103. package/esm2022/lib/workspace/shared/index.mjs +3 -0
  104. package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +77 -0
  105. package/esm2022/lib/workspace/shared/workspace.utils.mjs +168 -0
  106. package/esm2022/lib/workspace/workspace-button/index.mjs +2 -0
  107. package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +72 -0
  108. package/esm2022/lib/workspace/workspace.module.mjs +19 -0
  109. package/esm2022/lib/workspace/workspace.state.mjs +205 -0
  110. package/esm2022/public_api.mjs +35 -0
  111. package/fesm2022/igo2-integration.mjs +261 -257
  112. package/fesm2022/igo2-integration.mjs.map +1 -1
  113. package/lib/workspace/shared/workspace.utils.d.ts +0 -1
  114. package/package.json +9 -7
@@ -0,0 +1,168 @@
1
+ import { EntityStoreFilterCustomFuncStrategy, EntityStoreFilterSelectionStrategy } from '@igo2/common/entity';
2
+ import { FeatureMotion, FeatureStoreSelectionStrategy, mapExtentStrategyActiveToolTip, noElementSelected } from '@igo2/geo';
3
+ import { jsPDF } from 'jspdf';
4
+ import { autoTable } from 'jspdf-autotable';
5
+ import moment from 'moment';
6
+ import { map } from 'rxjs';
7
+ export function handleZoomAuto(workspace, storageService) {
8
+ const zoomStrategy = workspace.entityStore.getStrategyOfType(FeatureStoreSelectionStrategy);
9
+ zoomStrategy.setMotion(storageService.get('zoomAuto')
10
+ ? FeatureMotion.Default
11
+ : FeatureMotion.None);
12
+ }
13
+ export function getWorkspaceActions(workspace, rowsInMapExtentCheckCondition$, selectOnlyCheckCondition$, ogcFilterWidget, zoomAuto$, maximize$, storageService, languageService, mediaService, toolState) {
14
+ const actions = [
15
+ {
16
+ id: 'zoomAuto',
17
+ checkbox: true,
18
+ title: 'igo.integration.workspace.zoomAuto.title',
19
+ tooltip: 'igo.integration.workspace.zoomAuto.tooltip',
20
+ checkCondition: zoomAuto$,
21
+ handler: () => {
22
+ handleZoomAuto(workspace, storageService);
23
+ storageService.set('zoomAuto', !storageService.get('zoomAuto'));
24
+ }
25
+ },
26
+ {
27
+ id: 'filterInMapExtent',
28
+ checkbox: true,
29
+ title: 'igo.integration.workspace.inMapExtent.title',
30
+ tooltip: mapExtentStrategyActiveToolTip(workspace),
31
+ checkCondition: rowsInMapExtentCheckCondition$,
32
+ handler: () => rowsInMapExtentCheckCondition$.next(!rowsInMapExtentCheckCondition$.value)
33
+ },
34
+ {
35
+ id: 'selectedOnly',
36
+ checkbox: true,
37
+ title: 'igo.integration.workspace.selected.title',
38
+ tooltip: 'igo.integration.workspace.selected.tooltip',
39
+ checkCondition: selectOnlyCheckCondition$,
40
+ handler: () => selectOnlyCheckCondition$.next(!selectOnlyCheckCondition$.value)
41
+ },
42
+ {
43
+ id: 'clearselection',
44
+ icon: 'deselect',
45
+ title: 'igo.integration.workspace.clearSelection.title',
46
+ tooltip: 'igo.integration.workspace.clearSelection.tooltip',
47
+ handler: (ws) => {
48
+ ws.entityStore.state.updateMany(ws.entityStore.view.all(), {
49
+ selected: false
50
+ });
51
+ },
52
+ args: [workspace],
53
+ availability: (ws) => noElementSelected(ws)
54
+ },
55
+ {
56
+ id: 'featureDownload',
57
+ icon: 'file_save',
58
+ title: 'igo.integration.workspace.download.title',
59
+ tooltip: 'igo.integration.workspace.download.tooltip',
60
+ handler: (ws) => {
61
+ const filterStrategy = ws.entityStore.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
62
+ const filterSelectionStrategy = ws.entityStore.getStrategyOfType(EntityStoreFilterSelectionStrategy);
63
+ const layersWithSelection = filterSelectionStrategy.active
64
+ ? [ws.layer.id]
65
+ : [];
66
+ toolState.toolToActivateFromOptions({
67
+ tool: 'importExport',
68
+ options: {
69
+ layers: [ws.layer.id],
70
+ featureInMapExtent: filterStrategy.active,
71
+ layersWithSelection
72
+ }
73
+ });
74
+ },
75
+ args: [workspace]
76
+ },
77
+ {
78
+ id: 'ogcFilter',
79
+ icon: 'filter_alt',
80
+ title: 'igo.integration.workspace.ogcFilter.title',
81
+ tooltip: 'igo.integration.workspace.ogcFilter.tooltip',
82
+ handler: (widget, ws) => {
83
+ ws.activateWidget(widget, {
84
+ map: ws.map,
85
+ layer: ws.layer
86
+ });
87
+ },
88
+ args: [ogcFilterWidget, workspace]
89
+ },
90
+ {
91
+ id: 'maximize',
92
+ title: languageService.translate.instant('igo.integration.workspace.maximize'),
93
+ tooltip: languageService.translate.instant('igo.integration.workspace.maximizeTooltip'),
94
+ icon: 'resize',
95
+ display: () => {
96
+ return maximize$.pipe(map((v) => !v && !mediaService.isMobile()));
97
+ },
98
+ handler: () => {
99
+ if (!mediaService.isMobile()) {
100
+ maximize$.next(true);
101
+ }
102
+ }
103
+ },
104
+ {
105
+ id: 'standardExtent',
106
+ title: languageService.translate.instant('igo.integration.workspace.standardExtent'),
107
+ tooltip: languageService.translate.instant('igo.integration.workspace.standardExtentTooltip'),
108
+ icon: 'resize',
109
+ display: () => {
110
+ return maximize$.pipe(map((v) => v && !mediaService.isMobile()));
111
+ },
112
+ handler: () => {
113
+ maximize$.next(false);
114
+ }
115
+ },
116
+ {
117
+ id: 'print',
118
+ icon: 'print',
119
+ title: 'igo.integration.workspace.print.title',
120
+ tooltip: 'igo.integration.workspace.print.tooltip',
121
+ handler: (ws) => {
122
+ const title = `${ws.layer.title} (${dateTransform(new Date(), 'YYYY-MM-DD-HH_mm')})`;
123
+ const doc = new jsPDF({
124
+ orientation: 'landscape'
125
+ });
126
+ const totalPagesExp = '{total_pages_count_string}';
127
+ doc.text(title, 14, 20);
128
+ autoTable(doc, {
129
+ startY: 25,
130
+ tableWidth: 'wrap',
131
+ html: '#currentWorkspaceTable',
132
+ horizontalPageBreak: true,
133
+ styles: { cellPadding: 0.5, minCellWidth: 20, fontSize: 6 },
134
+ didDrawPage: (data) => {
135
+ let str = 'Page ' + doc.getNumberOfPages();
136
+ if (typeof doc.putTotalPages === 'function') {
137
+ str = str + ' / ' + totalPagesExp;
138
+ }
139
+ doc.setFontSize(6);
140
+ const pageSize = doc.internal.pageSize;
141
+ const pageHeight = pageSize.height
142
+ ? pageSize.height
143
+ : pageSize.getHeight();
144
+ doc.text(str, data.settings.margin.left, pageHeight - 10);
145
+ }
146
+ });
147
+ if (typeof doc.putTotalPages === 'function') {
148
+ doc.putTotalPages(totalPagesExp);
149
+ }
150
+ doc.save(`${title}.pdf`);
151
+ },
152
+ args: [workspace]
153
+ }
154
+ ];
155
+ let returnActions = workspace.layer.dataSource
156
+ .options.ogcFilters?.enabled
157
+ ? actions
158
+ : actions.filter((action) => action.id !== 'ogcFilter');
159
+ returnActions =
160
+ workspace.layer.options.workspace.printable !== false
161
+ ? actions
162
+ : actions.filter((action) => action.id !== 'print');
163
+ return returnActions;
164
+ }
165
+ function dateTransform(date, format) {
166
+ return moment(date).format(format);
167
+ }
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi93b3Jrc3BhY2Uvc2hhcmVkL3dvcmtzcGFjZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsbUNBQW1DLEVBQ25DLGtDQUFrQyxFQUNuQyxNQUFNLHFCQUFxQixDQUFDO0FBSzdCLE9BQU8sRUFFTCxhQUFhLEVBQ2IsNkJBQTZCLEVBSTdCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDbEIsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBbUIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTVDLE1BQU0sVUFBVSxjQUFjLENBQzVCLFNBQTZELEVBQzdELGNBQWM7SUFFZCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUMxRCw2QkFBNkIsQ0FDRyxDQUFDO0lBQ25DLFlBQVksQ0FBQyxTQUFTLENBQ25CLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFhO1FBQ3pDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTztRQUN2QixDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDdkIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLFNBQTZELEVBQzdELDhCQUF3RCxFQUN4RCx5QkFBbUQsRUFDbkQsZUFBdUIsRUFDdkIsU0FBbUMsRUFDbkMsU0FBbUMsRUFDbkMsY0FBOEIsRUFDOUIsZUFBZ0MsRUFDaEMsWUFBMEIsRUFDMUIsU0FBb0I7SUFFcEIsTUFBTSxPQUFPLEdBQUc7UUFDZDtZQUNFLEVBQUUsRUFBRSxVQUFVO1lBQ2QsUUFBUSxFQUFFLElBQUk7WUFDZCxLQUFLLEVBQUUsMENBQTBDO1lBQ2pELE9BQU8sRUFBRSw0Q0FBNEM7WUFDckQsY0FBYyxFQUFFLFNBQVM7WUFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWixjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUMxQyxjQUFjLENBQUMsR0FBRyxDQUNoQixVQUFVLEVBQ1YsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBWSxDQUMzQyxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsbUJBQW1CO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLDZDQUE2QztZQUNwRCxPQUFPLEVBQUUsOEJBQThCLENBQUMsU0FBUyxDQUFDO1lBQ2xELGNBQWMsRUFBRSw4QkFBOEI7WUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLDhCQUE4QixDQUFDLElBQUksQ0FDakMsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQ3RDO1NBQ0o7UUFDRDtZQUNFLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsS0FBSyxFQUFFLDBDQUEwQztZQUNqRCxPQUFPLEVBQUUsNENBQTRDO1lBQ3JELGNBQWMsRUFBRSx5QkFBeUI7WUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQztTQUNuRTtRQUNEO1lBQ0UsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixJQUFJLEVBQUUsVUFBVTtZQUNoQixLQUFLLEVBQUUsZ0RBQWdEO1lBQ3ZELE9BQU8sRUFBRSxrREFBa0Q7WUFDM0QsT0FBTyxFQUFFLENBQUMsRUFBc0QsRUFBRSxFQUFFO2dCQUNsRSxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ3pELFFBQVEsRUFBRSxLQUFLO2lCQUNoQixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ2pCLFlBQVksRUFBRSxDQUFDLEVBQXNELEVBQUUsRUFBRSxDQUN2RSxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7U0FDeEI7UUFDRDtZQUNFLEVBQUUsRUFBRSxpQkFBaUI7WUFDckIsSUFBSSxFQUFFLFdBQVc7WUFDakIsS0FBSyxFQUFFLDBDQUEwQztZQUNqRCxPQUFPLEVBQUUsNENBQTRDO1lBQ3JELE9BQU8sRUFBRSxDQUFDLEVBQXNELEVBQUUsRUFBRTtnQkFDbEUsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FDckQsbUNBQW1DLENBQ3BDLENBQUM7Z0JBQ0YsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUM5RCxrQ0FBa0MsQ0FDbkMsQ0FBQztnQkFDRixNQUFNLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDLE1BQU07b0JBQ3hELENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNmLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1AsU0FBUyxDQUFDLHlCQUF5QixDQUFDO29CQUNsQyxJQUFJLEVBQUUsY0FBYztvQkFDcEIsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNyQixrQkFBa0IsRUFBRSxjQUFjLENBQUMsTUFBTTt3QkFDekMsbUJBQW1CO3FCQUNwQjtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ2xCO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsV0FBVztZQUNmLElBQUksRUFBRSxZQUFZO1lBQ2xCLEtBQUssRUFBRSwyQ0FBMkM7WUFDbEQsT0FBTyxFQUFFLDZDQUE2QztZQUN0RCxPQUFPLEVBQUUsQ0FDUCxNQUFjLEVBQ2QsRUFBc0QsRUFDdEQsRUFBRTtnQkFDRixFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtvQkFDeEIsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHO29CQUNYLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztpQkFDaEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUM7U0FDbkM7UUFDRDtZQUNFLEVBQUUsRUFBRSxVQUFVO1lBQ2QsS0FBSyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN0QyxvQ0FBb0MsQ0FDckM7WUFDRCxPQUFPLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3hDLDJDQUEyQyxDQUM1QztZQUNELElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUNELE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO29CQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixDQUFDO1lBQ0gsQ0FBQztTQUNGO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsZ0JBQWdCO1lBQ3BCLEtBQUssRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDdEMsMENBQTBDLENBQzNDO1lBQ0QsT0FBTyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUN4QyxpREFBaUQsQ0FDbEQ7WUFDRCxJQUFJLEVBQUUsUUFBUTtZQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ1osT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLENBQUM7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLE9BQU87WUFDWCxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSx1Q0FBdUM7WUFDOUMsT0FBTyxFQUFFLHlDQUF5QztZQUNsRCxPQUFPLEVBQUUsQ0FBQyxFQUFzRCxFQUFFLEVBQUU7Z0JBQ2xFLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUMvQyxJQUFJLElBQUksRUFBRSxFQUNWLGtCQUFrQixDQUNuQixHQUFHLENBQUM7Z0JBQ0wsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUM7b0JBQ3BCLFdBQVcsRUFBRSxXQUFXO2lCQUN6QixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxhQUFhLEdBQUcsNEJBQTRCLENBQUM7Z0JBQ25ELEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDYixNQUFNLEVBQUUsRUFBRTtvQkFDVixVQUFVLEVBQUUsTUFBTTtvQkFDbEIsSUFBSSxFQUFFLHdCQUF3QjtvQkFDOUIsbUJBQW1CLEVBQUUsSUFBSTtvQkFDekIsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUU7b0JBQzNELFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNwQixJQUFJLEdBQUcsR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQzNDLElBQUksT0FBTyxHQUFHLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUM1QyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxhQUFhLENBQUM7d0JBQ3BDLENBQUM7d0JBQ0QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7d0JBQ3ZDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNOzRCQUNoQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07NEJBQ2pCLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQzVELENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksT0FBTyxHQUFHLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUM1QyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUM7U0FDbEI7S0FDRixDQUFDO0lBQ0YsSUFBSSxhQUFhLEdBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFzQztTQUN4RSxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU87UUFDNUIsQ0FBQyxDQUFDLE9BQU87UUFDVCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQztJQUMxRCxhQUFhO1FBQ1gsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQ25ELENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDeEQsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQVUsRUFBRSxNQUFjO0lBQy9DLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQGlnbzIvY29tbW9uL2FjdGlvbic7XG5pbXBvcnQge1xuICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSxcbiAgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneVxufSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IFdpZGdldCB9IGZyb20gJ0BpZ28yL2NvbW1vbi93aWRnZXQnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBNZWRpYVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lZGlhJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcbmltcG9ydCB7XG4gIEVkaXRpb25Xb3Jrc3BhY2UsXG4gIEZlYXR1cmVNb3Rpb24sXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxuICBGZWF0dXJlV29ya3NwYWNlLFxuICBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSxcbiAgV2ZzV29ya3NwYWNlLFxuICBtYXBFeHRlbnRTdHJhdGVneUFjdGl2ZVRvb2xUaXAsXG4gIG5vRWxlbWVudFNlbGVjdGVkXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IGpzUERGIH0gZnJvbSAnanNwZGYnO1xuaW1wb3J0IHsgYXV0b1RhYmxlIH0gZnJvbSAnanNwZGYtYXV0b3RhYmxlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2wnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlWm9vbUF1dG8oXG4gIHdvcmtzcGFjZTogRmVhdHVyZVdvcmtzcGFjZSB8IFdmc1dvcmtzcGFjZSB8IEVkaXRpb25Xb3Jrc3BhY2UsXG4gIHN0b3JhZ2VTZXJ2aWNlXG4pIHtcbiAgY29uc3Qgem9vbVN0cmF0ZWd5ID0gd29ya3NwYWNlLmVudGl0eVN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKFxuICAgIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5XG4gICkgYXMgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3k7XG4gIHpvb21TdHJhdGVneS5zZXRNb3Rpb24oXG4gICAgKHN0b3JhZ2VTZXJ2aWNlLmdldCgnem9vbUF1dG8nKSBhcyBib29sZWFuKVxuICAgICAgPyBGZWF0dXJlTW90aW9uLkRlZmF1bHRcbiAgICAgIDogRmVhdHVyZU1vdGlvbi5Ob25lXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VBY3Rpb25zKFxuICB3b3Jrc3BhY2U6IEZlYXR1cmVXb3Jrc3BhY2UgfCBXZnNXb3Jrc3BhY2UgfCBFZGl0aW9uV29ya3NwYWNlLFxuICByb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPixcbiAgc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+LFxuICBvZ2NGaWx0ZXJXaWRnZXQ6IFdpZGdldCxcbiAgem9vbUF1dG8kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4sXG4gIG1heGltaXplJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+LFxuICBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZSxcbiAgdG9vbFN0YXRlOiBUb29sU3RhdGVcbik6IEFjdGlvbltdIHtcbiAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICB7XG4gICAgICBpZDogJ3pvb21BdXRvJyxcbiAgICAgIGNoZWNrYm94OiB0cnVlLFxuICAgICAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24ud29ya3NwYWNlLnpvb21BdXRvLnRpdGxlJyxcbiAgICAgIHRvb2x0aXA6ICdpZ28uaW50ZWdyYXRpb24ud29ya3NwYWNlLnpvb21BdXRvLnRvb2x0aXAnLFxuICAgICAgY2hlY2tDb25kaXRpb246IHpvb21BdXRvJCxcbiAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgaGFuZGxlWm9vbUF1dG8od29ya3NwYWNlLCBzdG9yYWdlU2VydmljZSk7XG4gICAgICAgIHN0b3JhZ2VTZXJ2aWNlLnNldChcbiAgICAgICAgICAnem9vbUF1dG8nLFxuICAgICAgICAgICFzdG9yYWdlU2VydmljZS5nZXQoJ3pvb21BdXRvJykgYXMgYm9vbGVhblxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdmaWx0ZXJJbk1hcEV4dGVudCcsXG4gICAgICBjaGVja2JveDogdHJ1ZSxcbiAgICAgIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLndvcmtzcGFjZS5pbk1hcEV4dGVudC50aXRsZScsXG4gICAgICB0b29sdGlwOiBtYXBFeHRlbnRTdHJhdGVneUFjdGl2ZVRvb2xUaXAod29ya3NwYWNlKSxcbiAgICAgIGNoZWNrQ29uZGl0aW9uOiByb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQsXG4gICAgICBoYW5kbGVyOiAoKSA9PlxuICAgICAgICByb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dChcbiAgICAgICAgICAhcm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLnZhbHVlXG4gICAgICAgIClcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnc2VsZWN0ZWRPbmx5JyxcbiAgICAgIGNoZWNrYm94OiB0cnVlLFxuICAgICAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24ud29ya3NwYWNlLnNlbGVjdGVkLnRpdGxlJyxcbiAgICAgIHRvb2x0aXA6ICdpZ28uaW50ZWdyYXRpb24ud29ya3NwYWNlLnNlbGVjdGVkLnRvb2x0aXAnLFxuICAgICAgY2hlY2tDb25kaXRpb246IHNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQsXG4gICAgICBoYW5kbGVyOiAoKSA9PlxuICAgICAgICBzZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kLm5leHQoIXNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQudmFsdWUpXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ2NsZWFyc2VsZWN0aW9uJyxcbiAgICAgIGljb246ICdkZXNlbGVjdCcsXG4gICAgICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi53b3Jrc3BhY2UuY2xlYXJTZWxlY3Rpb24udGl0bGUnLFxuICAgICAgdG9vbHRpcDogJ2lnby5pbnRlZ3JhdGlvbi53b3Jrc3BhY2UuY2xlYXJTZWxlY3Rpb24udG9vbHRpcCcsXG4gICAgICBoYW5kbGVyOiAod3M6IEZlYXR1cmVXb3Jrc3BhY2UgfCBXZnNXb3Jrc3BhY2UgfCBFZGl0aW9uV29ya3NwYWNlKSA9PiB7XG4gICAgICAgIHdzLmVudGl0eVN0b3JlLnN0YXRlLnVwZGF0ZU1hbnkod3MuZW50aXR5U3RvcmUudmlldy5hbGwoKSwge1xuICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBhcmdzOiBbd29ya3NwYWNlXSxcbiAgICAgIGF2YWlsYWJpbGl0eTogKHdzOiBGZWF0dXJlV29ya3NwYWNlIHwgV2ZzV29ya3NwYWNlIHwgRWRpdGlvbldvcmtzcGFjZSkgPT5cbiAgICAgICAgbm9FbGVtZW50U2VsZWN0ZWQod3MpXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ2ZlYXR1cmVEb3dubG9hZCcsXG4gICAgICBpY29uOiAnZmlsZV9zYXZlJyxcbiAgICAgIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLndvcmtzcGFjZS5kb3dubG9hZC50aXRsZScsXG4gICAgICB0b29sdGlwOiAnaWdvLmludGVncmF0aW9uLndvcmtzcGFjZS5kb3dubG9hZC50b29sdGlwJyxcbiAgICAgIGhhbmRsZXI6ICh3czogRmVhdHVyZVdvcmtzcGFjZSB8IFdmc1dvcmtzcGFjZSB8IEVkaXRpb25Xb3Jrc3BhY2UpID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyU3RyYXRlZ3kgPSB3cy5lbnRpdHlTdG9yZS5nZXRTdHJhdGVneU9mVHlwZShcbiAgICAgICAgICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSA9IHdzLmVudGl0eVN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKFxuICAgICAgICAgIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3lcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbGF5ZXJzV2l0aFNlbGVjdGlvbiA9IGZpbHRlclNlbGVjdGlvblN0cmF0ZWd5LmFjdGl2ZVxuICAgICAgICAgID8gW3dzLmxheWVyLmlkXVxuICAgICAgICAgIDogW107XG4gICAgICAgIHRvb2xTdGF0ZS50b29sVG9BY3RpdmF0ZUZyb21PcHRpb25zKHtcbiAgICAgICAgICB0b29sOiAnaW1wb3J0RXhwb3J0JyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBsYXllcnM6IFt3cy5sYXllci5pZF0sXG4gICAgICAgICAgICBmZWF0dXJlSW5NYXBFeHRlbnQ6IGZpbHRlclN0cmF0ZWd5LmFjdGl2ZSxcbiAgICAgICAgICAgIGxheWVyc1dpdGhTZWxlY3Rpb25cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGFyZ3M6IFt3b3Jrc3BhY2VdXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ29nY0ZpbHRlcicsXG4gICAgICBpY29uOiAnZmlsdGVyX2FsdCcsXG4gICAgICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi53b3Jrc3BhY2Uub2djRmlsdGVyLnRpdGxlJyxcbiAgICAgIHRvb2x0aXA6ICdpZ28uaW50ZWdyYXRpb24ud29ya3NwYWNlLm9nY0ZpbHRlci50b29sdGlwJyxcbiAgICAgIGhhbmRsZXI6IChcbiAgICAgICAgd2lkZ2V0OiBXaWRnZXQsXG4gICAgICAgIHdzOiBGZWF0dXJlV29ya3NwYWNlIHwgV2ZzV29ya3NwYWNlIHwgRWRpdGlvbldvcmtzcGFjZVxuICAgICAgKSA9PiB7XG4gICAgICAgIHdzLmFjdGl2YXRlV2lkZ2V0KHdpZGdldCwge1xuICAgICAgICAgIG1hcDogd3MubWFwLFxuICAgICAgICAgIGxheWVyOiB3cy5sYXllclxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBhcmdzOiBbb2djRmlsdGVyV2lkZ2V0LCB3b3Jrc3BhY2VdXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ21heGltaXplJyxcbiAgICAgIHRpdGxlOiBsYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ud29ya3NwYWNlLm1heGltaXplJ1xuICAgICAgKSxcbiAgICAgIHRvb2x0aXA6IGxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi53b3Jrc3BhY2UubWF4aW1pemVUb29sdGlwJ1xuICAgICAgKSxcbiAgICAgIGljb246ICdyZXNpemUnLFxuICAgICAgZGlzcGxheTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbWF4aW1pemUkLnBpcGUobWFwKCh2KSA9PiAhdiAmJiAhbWVkaWFTZXJ2aWNlLmlzTW9iaWxlKCkpKTtcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgIGlmICghbWVkaWFTZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICBtYXhpbWl6ZSQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdzdGFuZGFyZEV4dGVudCcsXG4gICAgICB0aXRsZTogbGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmludGVncmF0aW9uLndvcmtzcGFjZS5zdGFuZGFyZEV4dGVudCdcbiAgICAgICksXG4gICAgICB0b29sdGlwOiBsYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ud29ya3NwYWNlLnN0YW5kYXJkRXh0ZW50VG9vbHRpcCdcbiAgICAgICksXG4gICAgICBpY29uOiAncmVzaXplJyxcbiAgICAgIGRpc3BsYXk6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG1heGltaXplJC5waXBlKG1hcCgodikgPT4gdiAmJiAhbWVkaWFTZXJ2aWNlLmlzTW9iaWxlKCkpKTtcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgIG1heGltaXplJC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAncHJpbnQnLFxuICAgICAgaWNvbjogJ3ByaW50JyxcbiAgICAgIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLndvcmtzcGFjZS5wcmludC50aXRsZScsXG4gICAgICB0b29sdGlwOiAnaWdvLmludGVncmF0aW9uLndvcmtzcGFjZS5wcmludC50b29sdGlwJyxcbiAgICAgIGhhbmRsZXI6ICh3czogRmVhdHVyZVdvcmtzcGFjZSB8IFdmc1dvcmtzcGFjZSB8IEVkaXRpb25Xb3Jrc3BhY2UpID0+IHtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBgJHt3cy5sYXllci50aXRsZX0gKCR7ZGF0ZVRyYW5zZm9ybShcbiAgICAgICAgICBuZXcgRGF0ZSgpLFxuICAgICAgICAgICdZWVlZLU1NLURELUhIX21tJ1xuICAgICAgICApfSlgO1xuICAgICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoe1xuICAgICAgICAgIG9yaWVudGF0aW9uOiAnbGFuZHNjYXBlJ1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdG90YWxQYWdlc0V4cCA9ICd7dG90YWxfcGFnZXNfY291bnRfc3RyaW5nfSc7XG4gICAgICAgIGRvYy50ZXh0KHRpdGxlLCAxNCwgMjApO1xuICAgICAgICBhdXRvVGFibGUoZG9jLCB7XG4gICAgICAgICAgc3RhcnRZOiAyNSxcbiAgICAgICAgICB0YWJsZVdpZHRoOiAnd3JhcCcsXG4gICAgICAgICAgaHRtbDogJyNjdXJyZW50V29ya3NwYWNlVGFibGUnLFxuICAgICAgICAgIGhvcml6b250YWxQYWdlQnJlYWs6IHRydWUsXG4gICAgICAgICAgc3R5bGVzOiB7IGNlbGxQYWRkaW5nOiAwLjUsIG1pbkNlbGxXaWR0aDogMjAsIGZvbnRTaXplOiA2IH0sXG4gICAgICAgICAgZGlkRHJhd1BhZ2U6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RyID0gJ1BhZ2UgJyArIGRvYy5nZXROdW1iZXJPZlBhZ2VzKCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvYy5wdXRUb3RhbFBhZ2VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHN0ciA9IHN0ciArICcgLyAnICsgdG90YWxQYWdlc0V4cDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvYy5zZXRGb250U2l6ZSg2KTtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2VTaXplID0gZG9jLmludGVybmFsLnBhZ2VTaXplO1xuICAgICAgICAgICAgY29uc3QgcGFnZUhlaWdodCA9IHBhZ2VTaXplLmhlaWdodFxuICAgICAgICAgICAgICA/IHBhZ2VTaXplLmhlaWdodFxuICAgICAgICAgICAgICA6IHBhZ2VTaXplLmdldEhlaWdodCgpO1xuICAgICAgICAgICAgZG9jLnRleHQoc3RyLCBkYXRhLnNldHRpbmdzLm1hcmdpbi5sZWZ0LCBwYWdlSGVpZ2h0IC0gMTApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgZG9jLnB1dFRvdGFsUGFnZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkb2MucHV0VG90YWxQYWdlcyh0b3RhbFBhZ2VzRXhwKTtcbiAgICAgICAgfVxuICAgICAgICBkb2Muc2F2ZShgJHt0aXRsZX0ucGRmYCk7XG4gICAgICB9LFxuICAgICAgYXJnczogW3dvcmtzcGFjZV1cbiAgICB9XG4gIF07XG4gIGxldCByZXR1cm5BY3Rpb25zID0gKHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKVxuICAgIC5vcHRpb25zLm9nY0ZpbHRlcnM/LmVuYWJsZWRcbiAgICA/IGFjdGlvbnNcbiAgICA6IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5pZCAhPT0gJ29nY0ZpbHRlcicpO1xuICByZXR1cm5BY3Rpb25zID1cbiAgICB3b3Jrc3BhY2UubGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UucHJpbnRhYmxlICE9PSBmYWxzZVxuICAgICAgPyBhY3Rpb25zXG4gICAgICA6IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5pZCAhPT0gJ3ByaW50Jyk7XG4gIHJldHVybiByZXR1cm5BY3Rpb25zO1xufVxuXG5mdW5jdGlvbiBkYXRlVHJhbnNmb3JtKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG1vbWVudChkYXRlKS5mb3JtYXQoZm9ybWF0KTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './workspace-button.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3dvcmtzcGFjZS93b3Jrc3BhY2UtYnV0dG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dvcmtzcGFjZS1idXR0b24uY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { AsyncPipe, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatTooltipModule } from '@angular/material/tooltip';
6
+ import { IgoLanguageModule } from '@igo2/core/language';
7
+ import { isLayerItem } from '@igo2/geo';
8
+ import { BehaviorSubject, combineLatest } from 'rxjs';
9
+ import { WorkspaceState } from '../workspace.state';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../workspace.state";
12
+ import * as i2 from "@angular/material/button";
13
+ import * as i3 from "@angular/material/tooltip";
14
+ import * as i4 from "@angular/material/icon";
15
+ import * as i5 from "@ngx-translate/core";
16
+ export class WorkspaceButtonComponent {
17
+ workspaceState;
18
+ hasWorkspace$ = new BehaviorSubject(false);
19
+ hasWorkspace$$;
20
+ layer$ = new BehaviorSubject(undefined);
21
+ set layer(value) {
22
+ this._layer = value;
23
+ this.layer$.next(this._layer);
24
+ }
25
+ get layer() {
26
+ return this._layer;
27
+ }
28
+ _layer;
29
+ color = 'primary';
30
+ constructor(workspaceState) {
31
+ this.workspaceState = workspaceState;
32
+ }
33
+ ngOnInit() {
34
+ this.hasWorkspace$$ = combineLatest([
35
+ this.workspaceState.workspaceEnabled$,
36
+ this.layer$
37
+ ]).subscribe(([enabled, layer]) => this.hasWorkspace$.next(enabled && isLayerItem(layer) && layer.options.workspace?.enabled));
38
+ }
39
+ ngOnDestroy() {
40
+ this.hasWorkspace$$.unsubscribe();
41
+ }
42
+ activateWorkspace() {
43
+ if (this.workspaceState.workspace$.value &&
44
+ this.workspaceState.workspace$.value.layer.id ===
45
+ this.layer.id &&
46
+ this.workspaceState.workspacePanelExpanded) {
47
+ this.workspaceState.workspacePanelExpanded = false;
48
+ }
49
+ else {
50
+ this.workspaceState.workspacePanelExpanded = true;
51
+ this.workspaceState.setActiveWorkspaceById(this.layer.id);
52
+ }
53
+ }
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkspaceButtonComponent, deps: [{ token: i1.WorkspaceState }], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WorkspaceButtonComponent, isStandalone: true, selector: "igo-workspace-button", inputs: { layer: "layer", color: "color" }, ngImport: i0, template: "<button\n *ngIf=\"hasWorkspace$ | async\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color\"\n (click)=\"activateWorkspace()\"\n>\n <mat-icon>table</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkspaceButtonComponent, decorators: [{
58
+ type: Component,
59
+ args: [{ selector: 'igo-workspace-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
60
+ NgIf,
61
+ MatButtonModule,
62
+ MatTooltipModule,
63
+ MatIconModule,
64
+ AsyncPipe,
65
+ IgoLanguageModule
66
+ ], template: "<button\n *ngIf=\"hasWorkspace$ | async\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.integration.workspace.toggleWorkspace' | translate\"\n [color]=\"color\"\n (click)=\"activateWorkspace()\"\n>\n <mat-icon>table</mat-icon>\n</button>\n" }]
67
+ }], ctorParameters: () => [{ type: i1.WorkspaceState }], propDecorators: { layer: [{
68
+ type: Input
69
+ }], color: [{
70
+ type: Input
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL3dvcmtzcGFjZS93b3Jrc3BhY2UtYnV0dG9uL3dvcmtzcGFjZS1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi93b3Jrc3BhY2Uvd29ya3NwYWNlLWJ1dHRvbi93b3Jrc3BhY2UtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7OztBQWlCcEQsTUFBTSxPQUFPLHdCQUF3QjtJQWlCZjtJQWhCYixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbkQsY0FBYyxDQUFlO0lBRTdCLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVyxTQUFTLENBQUMsQ0FBQztJQUMxRCxJQUNJLEtBQUssQ0FBQyxLQUFlO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDTyxNQUFNLENBQVc7SUFFaEIsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUUzQixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFBRyxDQUFDO0lBRXRELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQjtZQUNyQyxJQUFJLENBQUMsTUFBTTtTQUNaLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixPQUFPLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FDbEUsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUNFLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUs7WUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUMxQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7d0dBOUNVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDRIQ2xDckMsOFNBV0EsMEREZUksSUFBSSw0RkFDSixlQUFlLDJJQUNmLGdCQUFnQiw0VEFDaEIsYUFBYSwrS0FDYixTQUFTLDZDQUNULGlCQUFpQjs7NEZBR1Isd0JBQXdCO2tCQWZwQyxTQUFTOytCQUNFLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLFNBQVM7d0JBQ1QsaUJBQWlCO3FCQUNsQjttRkFRRyxLQUFLO3NCQURSLEtBQUs7Z0JBVUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyB0eXBlIEFueUxheWVyLCBpc0xheWVySXRlbSB9IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFdvcmtzcGFjZVN0YXRlIH0gZnJvbSAnLi4vd29ya3NwYWNlLnN0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLXdvcmtzcGFjZS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZS1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgaGFzV29ya3NwYWNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGhhc1dvcmtzcGFjZSQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBsYXllciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFueUxheWVyPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBzZXQgbGF5ZXIodmFsdWU6IEFueUxheWVyKSB7XG4gICAgdGhpcy5fbGF5ZXIgPSB2YWx1ZTtcbiAgICB0aGlzLmxheWVyJC5uZXh0KHRoaXMuX2xheWVyKTtcbiAgfVxuICBnZXQgbGF5ZXIoKTogQW55TGF5ZXIge1xuICAgIHJldHVybiB0aGlzLl9sYXllcjtcbiAgfVxuICBwcml2YXRlIF9sYXllcjogQW55TGF5ZXI7XG5cbiAgQElucHV0KCkgY29sb3IgPSAncHJpbWFyeSc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3b3Jrc3BhY2VTdGF0ZTogV29ya3NwYWNlU3RhdGUpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNXb3Jrc3BhY2UkJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS53b3Jrc3BhY2VFbmFibGVkJCxcbiAgICAgIHRoaXMubGF5ZXIkXG4gICAgXSkuc3Vic2NyaWJlKChbZW5hYmxlZCwgbGF5ZXJdKSA9PlxuICAgICAgdGhpcy5oYXNXb3Jrc3BhY2UkLm5leHQoXG4gICAgICAgIGVuYWJsZWQgJiYgaXNMYXllckl0ZW0obGF5ZXIpICYmIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5lbmFibGVkXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzV29ya3NwYWNlJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGFjdGl2YXRlV29ya3NwYWNlKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMud29ya3NwYWNlU3RhdGUud29ya3NwYWNlJC52YWx1ZSAmJlxuICAgICAgKHRoaXMud29ya3NwYWNlU3RhdGUud29ya3NwYWNlJC52YWx1ZSBhcyBhbnkpLmxheWVyLmlkID09PVxuICAgICAgICB0aGlzLmxheWVyLmlkICYmXG4gICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLndvcmtzcGFjZVBhbmVsRXhwYW5kZWRcbiAgICApIHtcbiAgICAgIHRoaXMud29ya3NwYWNlU3RhdGUud29ya3NwYWNlUGFuZWxFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmtzcGFjZVN0YXRlLndvcmtzcGFjZVBhbmVsRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgdGhpcy53b3Jrc3BhY2VTdGF0ZS5zZXRBY3RpdmVXb3Jrc3BhY2VCeUlkKHRoaXMubGF5ZXIuaWQpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICAqbmdJZj1cImhhc1dvcmtzcGFjZSQgfCBhc3luY1wiXG4gIG1hdC1pY29uLWJ1dHRvblxuICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgW21hdFRvb2x0aXBdPVwiJ2lnby5pbnRlZ3JhdGlvbi53b3Jrc3BhY2UudG9nZ2xlV29ya3NwYWNlJyB8IHRyYW5zbGF0ZVwiXG4gIFtjb2xvcl09XCJjb2xvclwiXG4gIChjbGljayk9XCJhY3RpdmF0ZVdvcmtzcGFjZSgpXCJcbj5cbiAgPG1hdC1pY29uPnRhYmxlPC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuIl19
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { WorkspaceButtonComponent } from './workspace-button/workspace-button.component';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @deprecated import the WorkspaceButtonComponent directly
6
+ */
7
+ export class IgoAppWorkspaceModule {
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppWorkspaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent], exports: [WorkspaceButtonComponent] });
10
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppWorkspaceModule, imports: [WorkspaceButtonComponent] });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppWorkspaceModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ imports: [WorkspaceButtonComponent],
16
+ exports: [WorkspaceButtonComponent]
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvd29ya3NwYWNlL3dvcmtzcGFjZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFFekY7O0dBRUc7QUFLSCxNQUFNLE9BQU8scUJBQXFCO3dHQUFyQixxQkFBcUI7eUdBQXJCLHFCQUFxQixZQUh0Qix3QkFBd0IsYUFDeEIsd0JBQXdCO3lHQUV2QixxQkFBcUIsWUFIdEIsd0JBQXdCOzs0RkFHdkIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBXb3Jrc3BhY2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3dvcmtzcGFjZS1idXR0b24vd29ya3NwYWNlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIGltcG9ydCB0aGUgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50IGRpcmVjdGx5XG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtXb3Jrc3BhY2VCdXR0b25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJZ29BcHBXb3Jrc3BhY2VNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,205 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { EntityStoreFilterCustomFuncStrategy, EntityStoreFilterSelectionStrategy } from '@igo2/common/entity';
3
+ import { WorkspaceStore } from '@igo2/common/workspace';
4
+ import { StorageService } from '@igo2/core/storage';
5
+ import { EditionWorkspace, FeatureWorkspace, WfsWorkspace } from '@igo2/geo';
6
+ import { BehaviorSubject, of } from 'rxjs';
7
+ import { EditionActionsService } from './shared/edition-actions.service';
8
+ import { FeatureActionsService } from './shared/feature-actions.service';
9
+ import { WfsActionsService } from './shared/wfs-actions.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "./shared/feature-actions.service";
12
+ import * as i2 from "./shared/wfs-actions.service";
13
+ import * as i3 from "./shared/edition-actions.service";
14
+ import * as i4 from "@igo2/core/storage";
15
+ /**
16
+ * Service that holds the state of the workspace module
17
+ */
18
+ export class WorkspaceState {
19
+ featureActionsService;
20
+ wfsActionsService;
21
+ editionActionsService;
22
+ storageService;
23
+ workspacePanelExpanded = false;
24
+ workspaceEnabled$ = new BehaviorSubject(false);
25
+ rowsInMapExtentCheckCondition$ = new BehaviorSubject(true);
26
+ selectOnlyCheckCondition$ = new BehaviorSubject(false);
27
+ workspaceMaximize$;
28
+ actionMaximize$$ = [];
29
+ rowsInMapExtentCheckCondition$$;
30
+ selectOnlyCheckCondition$$;
31
+ /** Subscription to the active workspace */
32
+ activeWorkspace$$;
33
+ /** Subscription to the active workspace widget */
34
+ activeWorkspaceWidget$$;
35
+ /** Active widget observable. Only one may be active for all available workspaces */
36
+ activeWorkspaceWidget$ = new BehaviorSubject(undefined);
37
+ /**
38
+ * Observable of the active workspace
39
+ */
40
+ workspace$ = new BehaviorSubject(undefined);
41
+ /**
42
+ * Store that holds all the available workspaces
43
+ */
44
+ get store() {
45
+ return this._store;
46
+ }
47
+ _store;
48
+ get workspaceSelection() {
49
+ if (this.workspace$.value) {
50
+ return this.workspace$.value?.entityStore.stateView.manyBy((r) => r.state.selected === true);
51
+ }
52
+ else {
53
+ return [];
54
+ }
55
+ }
56
+ get workspaceSelection$() {
57
+ if (this.workspace$.value) {
58
+ return this.workspace$.value?.entityStore?.stateView.manyBy$((r) => r.state.selected === true);
59
+ }
60
+ else {
61
+ return of([]);
62
+ }
63
+ }
64
+ constructor(featureActionsService, wfsActionsService, editionActionsService, storageService) {
65
+ this.featureActionsService = featureActionsService;
66
+ this.wfsActionsService = wfsActionsService;
67
+ this.editionActionsService = editionActionsService;
68
+ this.storageService = storageService;
69
+ this.workspaceMaximize$ = new BehaviorSubject(this.storageService.get('workspaceMaximize'));
70
+ this.initWorkspaces();
71
+ }
72
+ /**
73
+ * Initialize the workspace store. Each time a workspace is activated,
74
+ * subscribe to it's active widget. Tracking the active widget is useful
75
+ * to make sure only one widget is active at a time.
76
+ */
77
+ initWorkspaces() {
78
+ this._store = new WorkspaceStore([]);
79
+ this._store.stateView
80
+ .firstBy$((record) => record.state.active === true)
81
+ .subscribe((record) => {
82
+ const workspace = record ? record.entity : undefined;
83
+ this.workspace$.next(workspace);
84
+ });
85
+ this._store.stateView
86
+ .all$()
87
+ .subscribe((workspaces) => {
88
+ workspaces.map((wks) => {
89
+ if (wks.entity.actionStore.empty) {
90
+ if (wks.entity instanceof WfsWorkspace) {
91
+ this.wfsActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
92
+ }
93
+ else if (wks.entity instanceof FeatureWorkspace) {
94
+ this.featureActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
95
+ }
96
+ else if (wks.entity instanceof EditionWorkspace) {
97
+ this.editionActionsService.loadActions(wks.entity, this.rowsInMapExtentCheckCondition$, this.selectOnlyCheckCondition$);
98
+ }
99
+ }
100
+ });
101
+ });
102
+ this.actionMaximize$$.push(this.featureActionsService.maximize$.subscribe((maximized) => {
103
+ this.setWorkspaceIsMaximized(maximized);
104
+ }));
105
+ this.actionMaximize$$.push(this.wfsActionsService.maximize$.subscribe((maximized) => {
106
+ this.setWorkspaceIsMaximized(maximized);
107
+ }));
108
+ this.actionMaximize$$.push(this.editionActionsService.maximize$.subscribe((maximized) => {
109
+ this.setWorkspaceIsMaximized(maximized);
110
+ }));
111
+ this.activeWorkspace$$ = this.workspace$.subscribe((workspace) => {
112
+ if (this.activeWorkspaceWidget$$ !== undefined) {
113
+ this.activeWorkspaceWidget$$.unsubscribe();
114
+ this.activeWorkspaceWidget$$ = undefined;
115
+ }
116
+ if (workspace !== undefined) {
117
+ this.activeWorkspaceWidget$$ = workspace.widget$.subscribe((widget) => this.activeWorkspaceWidget$.next(widget));
118
+ }
119
+ });
120
+ this.rowsInMapExtentCheckCondition$$ =
121
+ this.rowsInMapExtentCheckCondition$.subscribe((rowsInMapExtent) => {
122
+ this._store.stateView.all().map((wks) => {
123
+ if (!wks.entity.actionStore.empty) {
124
+ const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterCustomFuncStrategy);
125
+ if (filterStrategy) {
126
+ if (rowsInMapExtent) {
127
+ filterStrategy.activate();
128
+ }
129
+ else {
130
+ filterStrategy.deactivate();
131
+ }
132
+ }
133
+ }
134
+ });
135
+ });
136
+ this.selectOnlyCheckCondition$$ = this.selectOnlyCheckCondition$.subscribe((selectOnly) => {
137
+ this._store.stateView.all().map((wks) => {
138
+ if (!wks.entity.actionStore.empty) {
139
+ const filterStrategy = wks.entity.entityStore.getStrategyOfType(EntityStoreFilterSelectionStrategy);
140
+ if (filterStrategy) {
141
+ if (selectOnly) {
142
+ filterStrategy.activate();
143
+ }
144
+ else {
145
+ filterStrategy.deactivate();
146
+ }
147
+ }
148
+ }
149
+ });
150
+ });
151
+ }
152
+ setWorkspaceIsMaximized(maximized) {
153
+ this.storageService.set('workspaceMaximize', maximized);
154
+ this.workspaceMaximize$.next(maximized);
155
+ }
156
+ setActiveWorkspaceById(id) {
157
+ const wksFromId = this.store.all().find((workspace) => workspace.id === id);
158
+ if (wksFromId) {
159
+ this.store.activateWorkspace(wksFromId);
160
+ }
161
+ }
162
+ setActiveWorkspaceByTitle(title) {
163
+ const wksFromTitle = this.store
164
+ .all()
165
+ .find((workspace) => workspace.title === title);
166
+ if (wksFromTitle) {
167
+ this.store.activateWorkspace(wksFromTitle);
168
+ }
169
+ }
170
+ /**
171
+ * Teardown all the workspaces
172
+ * @internal
173
+ */
174
+ ngOnDestroy() {
175
+ this.teardownWorkspaces();
176
+ this.actionMaximize$$.map((a) => a.unsubscribe());
177
+ if (this.rowsInMapExtentCheckCondition$$) {
178
+ this.selectOnlyCheckCondition$$.unsubscribe();
179
+ }
180
+ if (this.selectOnlyCheckCondition$$) {
181
+ this.selectOnlyCheckCondition$$.unsubscribe();
182
+ }
183
+ }
184
+ /**
185
+ * Teardown the workspace store and any subscribers
186
+ */
187
+ teardownWorkspaces() {
188
+ this.store.clear();
189
+ if (this.activeWorkspaceWidget$$ !== undefined) {
190
+ this.activeWorkspaceWidget$$.unsubscribe();
191
+ }
192
+ if (this.activeWorkspace$$ !== undefined) {
193
+ this.activeWorkspace$$.unsubscribe();
194
+ }
195
+ }
196
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkspaceState, deps: [{ token: i1.FeatureActionsService }, { token: i2.WfsActionsService }, { token: i3.EditionActionsService }, { token: i4.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
197
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkspaceState, providedIn: 'root' });
198
+ }
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WorkspaceState, decorators: [{
200
+ type: Injectable,
201
+ args: [{
202
+ providedIn: 'root'
203
+ }]
204
+ }], ctorParameters: () => [{ type: i1.FeatureActionsService }, { type: i2.WfsActionsService }, { type: i3.EditionActionsService }, { type: i4.StorageService }] });
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi93b3Jrc3BhY2Uvd29ya3NwYWNlLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUdMLG1DQUFtQyxFQUNuQyxrQ0FBa0MsRUFDbkMsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0UsT0FBTyxFQUFFLGVBQWUsRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFFakU7O0dBRUc7QUFJSCxNQUFNLE9BQU8sY0FBYztJQTREZjtJQUNBO0lBQ0E7SUFDQTtJQTlESCxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFFN0IsaUJBQWlCLEdBQ3hCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzdCLDhCQUE4QixHQUNyQyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUM1Qix5QkFBeUIsR0FDaEMsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFN0Isa0JBQWtCLENBQTJCO0lBQzlDLGdCQUFnQixHQUFtQixFQUFFLENBQUM7SUFFdEMsK0JBQStCLENB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QztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO3dHQXpPVSxjQUFjOzRHQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBFbnRpdHlSZWNvcmQsXG4gIEVudGl0eVN0YXRlLFxuICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneSxcbiAgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneVxufSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IFdpZGdldCB9IGZyb20gJ0BpZ28yL2NvbW1vbi93aWRnZXQnO1xuaW1wb3J0IHsgV29ya3NwYWNlLCBXb3Jrc3BhY2VTdG9yZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi93b3Jrc3BhY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgRWRpdGlvbldvcmtzcGFjZSwgRmVhdHVyZVdvcmtzcGFjZSwgV2ZzV29ya3NwYWNlIH0gZnJvbSAnQGlnbzIvZ2VvJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEVkaXRpb25BY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2VkaXRpb24tYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEZlYXR1cmVBY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2ZlYXR1cmUtYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFdmc0FjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvd2ZzLWFjdGlvbnMuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgd29ya3NwYWNlIG1vZHVsZVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VTdGF0ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyB3b3Jrc3BhY2VQYW5lbEV4cGFuZGVkID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgd29ya3NwYWNlRW5hYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHdvcmtzcGFjZU1heGltaXplJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIGFjdGlvbk1heGltaXplJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSByb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIHRoZSBhY3RpdmUgd29ya3NwYWNlICovXG4gIHByaXZhdGUgYWN0aXZlV29ya3NwYWNlJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIHRoZSBhY3RpdmUgd29ya3NwYWNlIHdpZGdldCAqL1xuICBwcml2YXRlIGFjdGl2ZVdvcmtzcGFjZVdpZGdldCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqIEFjdGl2ZSB3aWRnZXQgb2JzZXJ2YWJsZS4gT25seSBvbmUgbWF5IGJlIGFjdGl2ZSBmb3IgYWxsIGF2YWlsYWJsZSB3b3Jrc3BhY2VzICovXG4gIHJlYWRvbmx5IGFjdGl2ZVdvcmtzcGFjZVdpZGdldCQ6IEJlaGF2aW9yU3ViamVjdDxXaWRnZXQ+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFdpZGdldD4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgYWN0aXZlIHdvcmtzcGFjZVxuICAgKi9cbiAgcHVibGljIHdvcmtzcGFjZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdvcmtzcGFjZT4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogU3RvcmUgdGhhdCBob2xkcyBhbGwgdGhlIGF2YWlsYWJsZSB3b3Jrc3BhY2VzXG4gICAqL1xuICBnZXQgc3RvcmUoKTogV29ya3NwYWNlU3RvcmUge1xuICAgIHJldHVybiB0aGlzLl9zdG9yZTtcbiAgfVxuICBwcml2YXRlIF9zdG9yZTogV29ya3NwYWNlU3RvcmU7XG5cbiAgZ2V0IHdvcmtzcGFjZVNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy53b3Jrc3BhY2UkLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2UkLnZhbHVlPy5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcubWFueUJ5KFxuICAgICAgICAocikgPT4gci5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCB3b3Jrc3BhY2VTZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8RW50aXR5UmVjb3JkPG9iamVjdCwgRW50aXR5U3RhdGU+W10+IHtcbiAgICBpZiAodGhpcy53b3Jrc3BhY2UkLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2UkLnZhbHVlPy5lbnRpdHlTdG9yZT8uc3RhdGVWaWV3Lm1hbnlCeSQoXG4gICAgICAgIChyKSA9PiByLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmVhdHVyZUFjdGlvbnNTZXJ2aWNlOiBGZWF0dXJlQWN0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB3ZnNBY3Rpb25zU2VydmljZTogV2ZzQWN0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBlZGl0aW9uQWN0aW9uc1NlcnZpY2U6IEVkaXRpb25BY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLndvcmtzcGFjZU1heGltaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnd29ya3NwYWNlTWF4aW1pemUnKSBhcyBib29sZWFuXG4gICAgKTtcbiAgICB0aGlzLmluaXRXb3Jrc3BhY2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgd29ya3NwYWNlIHN0b3JlLiBFYWNoIHRpbWUgYSB3b3Jrc3BhY2UgaXMgYWN0aXZhdGVkLFxuICAgKiBzdWJzY3JpYmUgdG8gaXQncyBhY3RpdmUgd2lkZ2V0LiBUcmFja2luZyB0aGUgYWN0aXZlIHdpZGdldCBpcyB1c2VmdWxcbiAgICogdG8gbWFrZSBzdXJlIG9ubHkgb25lIHdpZGdldCBpcyBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0V29ya3NwYWNlcygpIHtcbiAgICB0aGlzLl9zdG9yZSA9IG5ldyBXb3Jrc3BhY2VTdG9yZShbXSk7XG4gICAgdGhpcy5fc3RvcmUuc3RhdGVWaWV3XG4gICAgICAuZmlyc3RCeSQoXG4gICAgICAgIChyZWNvcmQ6IEVudGl0eVJlY29yZDxXb3Jrc3BhY2U+KSA9PiByZWNvcmQuc3RhdGUuYWN0aXZlID09PSB0cnVlXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZWNvcmQ6IEVudGl0eVJlY29yZDxXb3Jrc3BhY2U+KSA9PiB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHJlY29yZCA/IHJlY29yZC5lbnRpdHkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMud29ya3NwYWNlJC5uZXh0KHdvcmtzcGFjZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N0b3JlLnN0YXRlVmlld1xuICAgICAgLmFsbCQoKVxuICAgICAgLnN1YnNjcmliZSgod29ya3NwYWNlczogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT5bXSkgPT4ge1xuICAgICAgICB3b3Jrc3BhY2VzLm1hcCgod2tzOiBFbnRpdHlSZWNvcmQ8V29ya3NwYWNlPikgPT4ge1xuICAgICAgICAgIGlmICh3a3MuZW50aXR5LmFjdGlvblN0b3JlLmVtcHR5KSB7XG4gICAgICAgICAgICBpZiAod2tzLmVudGl0eSBpbnN0YW5jZW9mIFdmc1dvcmtzcGFjZSkge1xuICAgICAgICAgICAgICB0aGlzLndmc0FjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHdrcy5lbnRpdHksXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdrcy5lbnRpdHkgaW5zdGFuY2VvZiBGZWF0dXJlV29ya3NwYWNlKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHdrcy5lbnRpdHksXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdrcy5lbnRpdHkgaW5zdGFuY2VvZiBFZGl0aW9uV29ya3NwYWNlKSB7XG4gICAgICAgICAgICAgIHRoaXMuZWRpdGlvbkFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25zKFxuICAgICAgICAgICAgICAgIHdrcy5lbnRpdHksXG4gICAgICAgICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hY3Rpb25NYXhpbWl6ZSQkLnB1c2goXG4gICAgICB0aGlzLmZlYXR1cmVBY3Rpb25zU2VydmljZS5tYXhpbWl6ZSQuc3Vic2NyaWJlKChtYXhpbWl6ZWQpID0+IHtcbiAgICAgICAgdGhpcy5zZXRXb3Jrc3BhY2VJc01heGltaXplZChtYXhpbWl6ZWQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5hY3Rpb25NYXhpbWl6ZSQkLnB1c2goXG4gICAgICB0aGlzLndmc0FjdGlvbnNTZXJ2aWNlLm1heGltaXplJC5zdWJzY3JpYmUoKG1heGltaXplZCkgPT4ge1xuICAgICAgICB0aGlzLnNldFdvcmtzcGFjZUlzTWF4aW1pemVkKG1heGltaXplZCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmFjdGlvbk1heGltaXplJCQucHVzaChcbiAgICAgIHRoaXMuZWRpdGlvbkFjdGlvbnNTZXJ2aWNlLm1heGltaXplJC5zdWJzY3JpYmUoKG1heGltaXplZCkgPT4ge1xuICAgICAgICB0aGlzLnNldFdvcmtzcGFjZUlzTWF4aW1pemVkKG1heGltaXplZCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZSQkID0gdGhpcy53b3Jrc3BhY2UkLnN1YnNjcmliZShcbiAgICAgICh3b3Jrc3BhY2U6IFdvcmtzcGFjZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMuYWN0aXZlV29ya3NwYWNlV2lkZ2V0JCQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod29ya3NwYWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZVdpZGdldCQkID0gd29ya3NwYWNlLndpZGdldCQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHdpZGdldDogV2lkZ2V0KSA9PiB0aGlzLmFjdGl2ZVdvcmtzcGFjZVdpZGdldCQubmV4dCh3aWRnZXQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLnJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCQgPVxuICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQuc3Vic2NyaWJlKChyb3dzSW5NYXBFeHRlbnQpID0+IHtcbiAgICAgICAgdGhpcy5fc3RvcmUuc3RhdGVWaWV3LmFsbCgpLm1hcCgod2tzOiBFbnRpdHlSZWNvcmQ8V29ya3NwYWNlPikgPT4ge1xuICAgICAgICAgIGlmICghd2tzLmVudGl0eS5hY3Rpb25TdG9yZS5lbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyU3RyYXRlZ3kgPSB3a3MuZW50aXR5LmVudGl0eVN0b3JlLmdldFN0cmF0ZWd5T2ZUeXBlKFxuICAgICAgICAgICAgICBFbnRpdHlTdG9yZUZpbHRlckN1c3RvbUZ1bmNTdHJhdGVneVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJTdHJhdGVneSkge1xuICAgICAgICAgICAgICBpZiAocm93c0luTWFwRXh0ZW50KSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyU3RyYXRlZ3kuYWN0aXZhdGUoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJTdHJhdGVneS5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdE9ubHlDaGVja0NvbmRpdGlvbiQkID0gdGhpcy5zZWxlY3RPbmx5Q2hlY2tDb25kaXRpb24kLnN1YnNjcmliZShcbiAgICAgIChzZWxlY3RPbmx5KSA9PiB7XG4gICAgICAgIHRoaXMuX3N0b3JlLnN0YXRlVmlldy5hbGwoKS5tYXAoKHdrczogRW50aXR5UmVjb3JkPFdvcmtzcGFjZT4pID0+IHtcbiAgICAgICAgICBpZiAoIXdrcy5lbnRpdHkuYWN0aW9uU3RvcmUuZW1wdHkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclN0cmF0ZWd5ID0gd2tzLmVudGl0eS5lbnRpdHlTdG9yZS5nZXRTdHJhdGVneU9mVHlwZShcbiAgICAgICAgICAgICAgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJTdHJhdGVneSkge1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0T25seSkge1xuICAgICAgICAgICAgICAgIGZpbHRlclN0cmF0ZWd5LmFjdGl2YXRlKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyU3RyYXRlZ3kuZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRXb3Jrc3BhY2VJc01heGltaXplZChtYXhpbWl6ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnd29ya3NwYWNlTWF4aW1pemUnLCBtYXhpbWl6ZWQpO1xuICAgIHRoaXMud29ya3NwYWNlTWF4aW1pemUkLm5leHQobWF4aW1pemVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVXb3Jrc3BhY2VCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB3a3NGcm9tSWQgPSB0aGlzLnN0b3JlLmFsbCgpLmZpbmQoKHdvcmtzcGFjZSkgPT4gd29ya3NwYWNlLmlkID09PSBpZCk7XG4gICAgaWYgKHdrc0Zyb21JZCkge1xuICAgICAgdGhpcy5zdG9yZS5hY3RpdmF0ZVdvcmtzcGFjZSh3a3NGcm9tSWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3RpdmVXb3Jrc3BhY2VCeVRpdGxlKHRpdGxlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB3a3NGcm9tVGl0bGUgPSB0aGlzLnN0b3JlXG4gICAgICAuYWxsKClcbiAgICAgIC5maW5kKCh3b3Jrc3BhY2UpID0+IHdvcmtzcGFjZS50aXRsZSA9PT0gdGl0bGUpO1xuICAgIGlmICh3a3NGcm9tVGl0bGUpIHtcbiAgICAgIHRoaXMuc3RvcmUuYWN0aXZhdGVXb3Jrc3BhY2Uod2tzRnJvbVRpdGxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGVhcmRvd24gYWxsIHRoZSB3b3Jrc3BhY2VzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50ZWFyZG93bldvcmtzcGFjZXMoKTtcbiAgICB0aGlzLmFjdGlvbk1heGltaXplJCQubWFwKChhKSA9PiBhLnVuc3Vic2NyaWJlKCkpO1xuICAgIGlmICh0aGlzLnJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCQpIHtcbiAgICAgIHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCQpIHtcbiAgICAgIHRoaXMuc2VsZWN0T25seUNoZWNrQ29uZGl0aW9uJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGVhcmRvd24gdGhlIHdvcmtzcGFjZSBzdG9yZSBhbmQgYW55IHN1YnNjcmliZXJzXG4gICAqL1xuICBwcml2YXRlIHRlYXJkb3duV29ya3NwYWNlcygpIHtcbiAgICB0aGlzLnN0b3JlLmNsZWFyKCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlV29ya3NwYWNlV2lkZ2V0JCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hY3RpdmVXb3Jrc3BhY2VXaWRnZXQkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5hY3RpdmVXb3Jrc3BhY2UkJCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFjdGl2ZVdvcmtzcGFjZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Public API Surface of tools
3
+ */
4
+ export * from './lib/integration.module';
5
+ export * from './lib/about/about.module';
6
+ export * from './lib/geometry-form/geometry-form.module';
7
+ export * from './lib/context/context.module';
8
+ export * from './lib/catalog/catalog.module';
9
+ export * from './lib/directions/directions.module';
10
+ export * from './lib/draw/draw.module';
11
+ export * from './lib/workspace/workspace.module';
12
+ export * from './lib/filter/filter.module';
13
+ export * from './lib/import-export/import-export.module';
14
+ export * from './lib/map/map.module';
15
+ export * from './lib/measure/measure.module';
16
+ export * from './lib/print/print.module';
17
+ export * from './lib/search/search.module';
18
+ export * from './lib/about';
19
+ export * from './lib/geometry-form';
20
+ export * from './lib/analytics';
21
+ export * from './lib/context';
22
+ export * from './lib/catalog';
23
+ export * from './lib/directions';
24
+ export * from './lib/draw';
25
+ export * from './lib/environment';
26
+ export * from './lib/workspace';
27
+ export * from './lib/filter';
28
+ export * from './lib/import-export';
29
+ export * from './lib/map';
30
+ export * from './lib/measure';
31
+ export * from './lib/print';
32
+ export * from './lib/search';
33
+ export * from './lib/tool';
34
+ export * from './lib/storage';
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0b29sc1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVncmF0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hYm91dC9hYm91dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2VvbWV0cnktZm9ybS9nZW9tZXRyeS1mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250ZXh0L2NvbnRleHQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhdGFsb2cvY2F0YWxvZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RyYXcvZHJhdy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd29ya3NwYWNlL3dvcmtzcGFjZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVyL2ZpbHRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXAvbWFwLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZWFzdXJlL21lYXN1cmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByaW50L3ByaW50Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWFyY2gvc2VhcmNoLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fib3V0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dlb21ldHJ5LWZvcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYW5hbHl0aWNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F0YWxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RyYXcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd29ya3NwYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbXBvcnQtZXhwb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hcCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZWFzdXJlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ByaW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlYXJjaCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b29sJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3JhZ2UnO1xuIl19