@igo2/geo 18.0.0 → 18.0.1-next.2

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 (510) hide show
  1. package/fesm2022/igo2-geo.mjs +684 -709
  2. package/fesm2022/igo2-geo.mjs.map +1 -1
  3. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  4. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  5. package/lib/style/style-list/style-list.provider.d.ts +1 -8
  6. package/lib/style/style-list/style-list.service.d.ts +1 -1
  7. package/package.json +15 -17
  8. package/src/lib/layer/layer-list/layer-list.theme.scss +2 -1
  9. package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
  10. package/src/style/style.scss +1 -1
  11. package/esm2022/igo2-geo.mjs +0 -5
  12. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +0 -234
  13. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +0 -272
  14. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +0 -246
  15. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +0 -19
  16. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +0 -136
  17. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +0 -60
  18. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +0 -232
  19. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +0 -24
  20. package/esm2022/lib/catalog/catalog-library/index.mjs +0 -4
  21. package/esm2022/lib/catalog/catalog.module.mjs +0 -26
  22. package/esm2022/lib/catalog/index.mjs +0 -6
  23. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +0 -32
  24. package/esm2022/lib/catalog/shared/catalog.enum.mjs +0 -16
  25. package/esm2022/lib/catalog/shared/catalog.interface.mjs +0 -2
  26. package/esm2022/lib/catalog/shared/catalog.service.mjs +0 -706
  27. package/esm2022/lib/catalog/shared/catalogs.mjs +0 -75
  28. package/esm2022/lib/catalog/shared/index.mjs +0 -5
  29. package/esm2022/lib/datasource/index.mjs +0 -3
  30. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +0 -17
  31. package/esm2022/lib/datasource/shared/capabilities.service.mjs +0 -441
  32. package/esm2022/lib/datasource/shared/datasource.service.mjs +0 -258
  33. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +0 -2
  34. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +0 -2
  35. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +0 -2
  36. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +0 -222
  37. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +0 -2
  38. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +0 -118
  39. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +0 -2
  40. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +0 -24
  41. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +0 -3
  42. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +0 -2
  43. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +0 -41
  44. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +0 -2
  45. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +0 -52
  46. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +0 -2
  47. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +0 -70
  48. package/esm2022/lib/datasource/shared/datasources/index.mjs +0 -36
  49. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +0 -2
  50. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +0 -33
  51. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +0 -2
  52. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +0 -14
  53. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +0 -2
  54. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +0 -60
  55. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +0 -2
  56. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +0 -17
  57. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +0 -2
  58. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +0 -56
  59. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +0 -2
  60. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +0 -137
  61. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +0 -170
  62. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +0 -2
  63. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +0 -227
  64. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +0 -224
  65. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +0 -2
  66. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +0 -18
  67. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +0 -2
  68. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +0 -11
  69. package/esm2022/lib/datasource/shared/index.mjs +0 -6
  70. package/esm2022/lib/datasource/shared/options/index.mjs +0 -5
  71. package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +0 -2
  72. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +0 -15
  73. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +0 -85
  74. package/esm2022/lib/datasource/shared/options/options.service.mjs +0 -3
  75. package/esm2022/lib/datasource/utils/index.mjs +0 -2
  76. package/esm2022/lib/datasource/utils/tilegrid.mjs +0 -20
  77. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +0 -246
  78. package/esm2022/lib/directions/directions-buttons/index.mjs +0 -2
  79. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +0 -312
  80. package/esm2022/lib/directions/directions-inputs/index.mjs +0 -2
  81. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +0 -192
  82. package/esm2022/lib/directions/directions-results/index.mjs +0 -2
  83. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +0 -5
  84. package/esm2022/lib/directions/directions-sources/directions-source.mjs +0 -3
  85. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +0 -23
  86. package/esm2022/lib/directions/directions-sources/index.mjs +0 -5
  87. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +0 -159
  88. package/esm2022/lib/directions/directions.component.mjs +0 -437
  89. package/esm2022/lib/directions/directions.module.mjs +0 -46
  90. package/esm2022/lib/directions/directions.provider.mjs +0 -16
  91. package/esm2022/lib/directions/index.mjs +0 -8
  92. package/esm2022/lib/directions/shared/directions-source.service.mjs +0 -18
  93. package/esm2022/lib/directions/shared/directions.enum.mjs +0 -72
  94. package/esm2022/lib/directions/shared/directions.interface.mjs +0 -2
  95. package/esm2022/lib/directions/shared/directions.service.mjs +0 -239
  96. package/esm2022/lib/directions/shared/directions.utils.mjs +0 -522
  97. package/esm2022/lib/directions/shared/index.mjs +0 -6
  98. package/esm2022/lib/directions/shared/store.mjs +0 -21
  99. package/esm2022/lib/download/download-button/download-button.component.mjs +0 -48
  100. package/esm2022/lib/download/download-button/index.mjs +0 -2
  101. package/esm2022/lib/download/download.module.mjs +0 -24
  102. package/esm2022/lib/download/index.mjs +0 -3
  103. package/esm2022/lib/download/shared/download.interface.mjs +0 -2
  104. package/esm2022/lib/download/shared/download.service.mjs +0 -67
  105. package/esm2022/lib/download/shared/index.mjs +0 -3
  106. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +0 -42
  107. package/esm2022/lib/draw/draw/draw-popup.component.mjs +0 -421
  108. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +0 -28
  109. package/esm2022/lib/draw/draw/draw.component.mjs +0 -1136
  110. package/esm2022/lib/draw/draw/draw.module.mjs +0 -19
  111. package/esm2022/lib/draw/drawingTool.module.mjs +0 -18
  112. package/esm2022/lib/draw/index.mjs +0 -3
  113. package/esm2022/lib/draw/shared/draw-icon.service.mjs +0 -30
  114. package/esm2022/lib/draw/shared/draw.enum.mjs +0 -21
  115. package/esm2022/lib/draw/shared/draw.interface.mjs +0 -2
  116. package/esm2022/lib/draw/shared/draw.utils.mjs +0 -125
  117. package/esm2022/lib/draw/shared/index.mjs +0 -5
  118. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  119. package/esm2022/lib/environment/index.mjs +0 -2
  120. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +0 -306
  121. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +0 -56
  122. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +0 -26
  123. package/esm2022/lib/feature/feature-details/index.mjs +0 -4
  124. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +0 -101
  125. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +0 -19
  126. package/esm2022/lib/feature/feature.module.mjs +0 -26
  127. package/esm2022/lib/feature/index.mjs +0 -5
  128. package/esm2022/lib/feature/shared/feature-store.utils.mjs +0 -28
  129. package/esm2022/lib/feature/shared/feature.enums.mjs +0 -9
  130. package/esm2022/lib/feature/shared/feature.interfaces.mjs +0 -2
  131. package/esm2022/lib/feature/shared/feature.utils.mjs +0 -332
  132. package/esm2022/lib/feature/shared/index.mjs +0 -8
  133. package/esm2022/lib/feature/shared/store.mjs +0 -143
  134. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +0 -216
  135. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +0 -119
  136. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +0 -99
  137. package/esm2022/lib/feature/shared/strategies/index.mjs +0 -8
  138. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +0 -103
  139. package/esm2022/lib/feature/shared/strategies/loading.mjs +0 -136
  140. package/esm2022/lib/feature/shared/strategies/search.mjs +0 -158
  141. package/esm2022/lib/feature/shared/strategies/selection.mjs +0 -385
  142. package/esm2022/lib/feature/shared/strategies.utils.mjs +0 -37
  143. package/esm2022/lib/filter/filter.module.mjs +0 -131
  144. package/esm2022/lib/filter/index.mjs +0 -17
  145. package/esm2022/lib/filter/ogc-filter-button/index.mjs +0 -2
  146. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +0 -141
  147. package/esm2022/lib/filter/ogc-filter-form/index.mjs +0 -2
  148. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +0 -325
  149. package/esm2022/lib/filter/ogc-filter-selection/index.mjs +0 -2
  150. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +0 -787
  151. package/esm2022/lib/filter/ogc-filter-time/index.mjs +0 -3
  152. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +0 -201
  153. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +0 -665
  154. package/esm2022/lib/filter/ogc-filterable-form/index.mjs +0 -2
  155. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +0 -66
  156. package/esm2022/lib/filter/ogc-filterable-item/index.mjs +0 -2
  157. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +0 -244
  158. package/esm2022/lib/filter/ogc-filterable-list/index.mjs +0 -3
  159. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +0 -39
  160. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +0 -32
  161. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +0 -63
  162. package/esm2022/lib/filter/shared/index.mjs +0 -12
  163. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +0 -72
  164. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +0 -30
  165. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +0 -2
  166. package/esm2022/lib/filter/shared/ogc-filter.mjs +0 -756
  167. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +0 -47
  168. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +0 -23
  169. package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +0 -2
  170. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +0 -282
  171. package/esm2022/lib/filter/shared/time-filter.enum.mjs +0 -13
  172. package/esm2022/lib/filter/shared/time-filter.interface.mjs +0 -2
  173. package/esm2022/lib/filter/shared/time-filter.service.mjs +0 -107
  174. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +0 -2
  175. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +0 -875
  176. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +0 -2
  177. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +0 -191
  178. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +0 -2
  179. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +0 -120
  180. package/esm2022/lib/filter/time-filter-button/index.mjs +0 -2
  181. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +0 -70
  182. package/esm2022/lib/filter/time-filter-form/index.mjs +0 -2
  183. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +0 -537
  184. package/esm2022/lib/filter/time-filter-item/index.mjs +0 -2
  185. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +0 -90
  186. package/esm2022/lib/filter/time-filter-list/index.mjs +0 -3
  187. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +0 -39
  188. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +0 -24
  189. package/esm2022/lib/geo.module.mjs +0 -63
  190. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +0 -559
  191. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +0 -170
  192. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +0 -24
  193. package/esm2022/lib/geometry/geometry-form-field/index.mjs +0 -4
  194. package/esm2022/lib/geometry/geometry.module.mjs +0 -18
  195. package/esm2022/lib/geometry/index.mjs +0 -3
  196. package/esm2022/lib/geometry/shared/controls/draw.mjs +0 -340
  197. package/esm2022/lib/geometry/shared/controls/index.mjs +0 -4
  198. package/esm2022/lib/geometry/shared/controls/modify.mjs +0 -538
  199. package/esm2022/lib/geometry/shared/controls/slice.mjs +0 -190
  200. package/esm2022/lib/geometry/shared/geometry.errors.mjs +0 -24
  201. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +0 -2
  202. package/esm2022/lib/geometry/shared/geometry.utils.mjs +0 -113
  203. package/esm2022/lib/geometry/shared/index.mjs +0 -5
  204. package/esm2022/lib/import-export/export-button/export-button.component.mjs +0 -49
  205. package/esm2022/lib/import-export/export-button/index.mjs +0 -2
  206. package/esm2022/lib/import-export/import-export/import-export.component.mjs +0 -876
  207. package/esm2022/lib/import-export/import-export/index.mjs +0 -2
  208. package/esm2022/lib/import-export/import-export.module.mjs +0 -31
  209. package/esm2022/lib/import-export/index.mjs +0 -5
  210. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +0 -114
  211. package/esm2022/lib/import-export/shared/export.errors.mjs +0 -15
  212. package/esm2022/lib/import-export/shared/export.interface.mjs +0 -2
  213. package/esm2022/lib/import-export/shared/export.service.mjs +0 -378
  214. package/esm2022/lib/import-export/shared/export.type.mjs +0 -13
  215. package/esm2022/lib/import-export/shared/export.utils.mjs +0 -51
  216. package/esm2022/lib/import-export/shared/import.errors.mjs +0 -39
  217. package/esm2022/lib/import-export/shared/import.interface.mjs +0 -2
  218. package/esm2022/lib/import-export/shared/import.service.mjs +0 -221
  219. package/esm2022/lib/import-export/shared/import.utils.mjs +0 -203
  220. package/esm2022/lib/import-export/shared/index.mjs +0 -11
  221. package/esm2022/lib/layer/index.mjs +0 -16
  222. package/esm2022/lib/layer/layer-group/index.mjs +0 -2
  223. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +0 -103
  224. package/esm2022/lib/layer/layer-item/index.mjs +0 -2
  225. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +0 -196
  226. package/esm2022/lib/layer/layer-legend/index.mjs +0 -2
  227. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +0 -287
  228. package/esm2022/lib/layer/layer-legend-item/index.mjs +0 -2
  229. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +0 -85
  230. package/esm2022/lib/layer/layer-legend-list/index.mjs +0 -3
  231. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +0 -54
  232. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +0 -104
  233. package/esm2022/lib/layer/layer-list/index.mjs +0 -2
  234. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +0 -232
  235. package/esm2022/lib/layer/layer-list-tool/index.mjs +0 -4
  236. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +0 -92
  237. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +0 -7
  238. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +0 -61
  239. package/esm2022/lib/layer/layer-search/index.mjs +0 -2
  240. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +0 -65
  241. package/esm2022/lib/layer/layer-unavailable/index.mjs +0 -3
  242. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +0 -25
  243. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +0 -35
  244. package/esm2022/lib/layer/layer-viewer/index.mjs +0 -3
  245. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +0 -226
  246. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +0 -2
  247. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +0 -2
  248. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +0 -207
  249. package/esm2022/lib/layer/layer-visibility-button/index.mjs +0 -2
  250. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +0 -83
  251. package/esm2022/lib/layer/layer.module.mjs +0 -107
  252. package/esm2022/lib/layer/shared/clusterParam.mjs +0 -2
  253. package/esm2022/lib/layer/shared/index.mjs +0 -6
  254. package/esm2022/lib/layer/shared/layer-controller.mjs +0 -316
  255. package/esm2022/lib/layer/shared/layer-selection.mjs +0 -38
  256. package/esm2022/lib/layer/shared/layer.enums.mjs +0 -2
  257. package/esm2022/lib/layer/shared/layer.service.mjs +0 -315
  258. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +0 -2
  259. package/esm2022/lib/layer/shared/layers/any-layer.mjs +0 -2
  260. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +0 -2
  261. package/esm2022/lib/layer/shared/layers/image-layer.mjs +0 -75
  262. package/esm2022/lib/layer/shared/layers/index.mjs +0 -18
  263. package/esm2022/lib/layer/shared/layers/layer-base.mjs +0 -199
  264. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +0 -2
  265. package/esm2022/lib/layer/shared/layers/layer-group.mjs +0 -120
  266. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +0 -7
  267. package/esm2022/lib/layer/shared/layers/layer.mjs +0 -178
  268. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +0 -2
  269. package/esm2022/lib/layer/shared/layers/linked/index.mjs +0 -4
  270. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +0 -12
  271. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +0 -242
  272. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +0 -70
  273. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +0 -2
  274. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +0 -55
  275. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +0 -2
  276. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +0 -576
  277. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +0 -2
  278. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +0 -112
  279. package/esm2022/lib/layer/track-feature-button/index.mjs +0 -2
  280. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +0 -54
  281. package/esm2022/lib/layer/utils/image-watcher.mjs +0 -62
  282. package/esm2022/lib/layer/utils/index.mjs +0 -6
  283. package/esm2022/lib/layer/utils/layer.utils.mjs +0 -57
  284. package/esm2022/lib/layer/utils/outputLegend.mjs +0 -32
  285. package/esm2022/lib/layer/utils/tile-watcher.mjs +0 -52
  286. package/esm2022/lib/layer/utils/vector-watcher.mjs +0 -50
  287. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +0 -20
  288. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +0 -87
  289. package/esm2022/lib/map/baselayers-switcher/index.mjs +0 -3
  290. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +0 -122
  291. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +0 -78
  292. package/esm2022/lib/map/geolocate-button/index.mjs +0 -2
  293. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +0 -73
  294. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +0 -2
  295. package/esm2022/lib/map/home-extent-button/index.mjs +0 -3
  296. package/esm2022/lib/map/index.mjs +0 -14
  297. package/esm2022/lib/map/info-section/index.mjs +0 -2
  298. package/esm2022/lib/map/info-section/info-section.component.mjs +0 -15
  299. package/esm2022/lib/map/map-browser/index.mjs +0 -2
  300. package/esm2022/lib/map/map-browser/map-browser.component.mjs +0 -67
  301. package/esm2022/lib/map/map-center/index.mjs +0 -2
  302. package/esm2022/lib/map/map-center/map-center.component.mjs +0 -56
  303. package/esm2022/lib/map/map.module.mjs +0 -89
  304. package/esm2022/lib/map/menu-button/index.mjs +0 -2
  305. package/esm2022/lib/map/menu-button/menu-button.component.mjs +0 -57
  306. package/esm2022/lib/map/offline-button/index.mjs +0 -2
  307. package/esm2022/lib/map/offline-button/offline-button.component.mjs +0 -53
  308. package/esm2022/lib/map/rotation-button/index.mjs +0 -2
  309. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +0 -58
  310. package/esm2022/lib/map/shared/controllers/controller.mjs +0 -44
  311. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +0 -8
  312. package/esm2022/lib/map/shared/controllers/geolocation.mjs +0 -431
  313. package/esm2022/lib/map/shared/controllers/index.mjs +0 -5
  314. package/esm2022/lib/map/shared/controllers/view.mjs +0 -361
  315. package/esm2022/lib/map/shared/hover-feature.directive.mjs +0 -481
  316. package/esm2022/lib/map/shared/index.mjs +0 -15
  317. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +0 -238
  318. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +0 -122
  319. package/esm2022/lib/map/shared/map.abstract.mjs +0 -24
  320. package/esm2022/lib/map/shared/map.enums.mjs +0 -6
  321. package/esm2022/lib/map/shared/map.interface.mjs +0 -2
  322. package/esm2022/lib/map/shared/map.mjs +0 -201
  323. package/esm2022/lib/map/shared/map.service.mjs +0 -29
  324. package/esm2022/lib/map/shared/map.utils.mjs +0 -455
  325. package/esm2022/lib/map/shared/mapOffline.directive.mjs +0 -114
  326. package/esm2022/lib/map/shared/projection.interfaces.mjs +0 -2
  327. package/esm2022/lib/map/shared/projection.service.mjs +0 -67
  328. package/esm2022/lib/map/shared/projection.utils.mjs +0 -122
  329. package/esm2022/lib/map/swipe-control/index.mjs +0 -2
  330. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +0 -211
  331. package/esm2022/lib/map/utils/index.mjs +0 -2
  332. package/esm2022/lib/map/utils/layer-watcher.mjs +0 -112
  333. package/esm2022/lib/map/wake-lock-button/index.mjs +0 -2
  334. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +0 -103
  335. package/esm2022/lib/map/zoom-button/index.mjs +0 -2
  336. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +0 -35
  337. package/esm2022/lib/measure/index.mjs +0 -3
  338. package/esm2022/lib/measure/measure.module.mjs +0 -20
  339. package/esm2022/lib/measure/measurer/index.mjs +0 -6
  340. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +0 -40
  341. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +0 -38
  342. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +0 -143
  343. package/esm2022/lib/measure/measurer/measurer.component.mjs +0 -948
  344. package/esm2022/lib/measure/measurer/measurer.module.mjs +0 -20
  345. package/esm2022/lib/measure/shared/index.mjs +0 -4
  346. package/esm2022/lib/measure/shared/measure.enum.mjs +0 -37
  347. package/esm2022/lib/measure/shared/measure.interfaces.mjs +0 -2
  348. package/esm2022/lib/measure/shared/measure.utils.mjs +0 -497
  349. package/esm2022/lib/metadata/index.mjs +0 -4
  350. package/esm2022/lib/metadata/metadata-button/index.mjs +0 -2
  351. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +0 -96
  352. package/esm2022/lib/metadata/metadata.module.mjs +0 -29
  353. package/esm2022/lib/metadata/shared/index.mjs +0 -3
  354. package/esm2022/lib/metadata/shared/metadata.interface.mjs +0 -2
  355. package/esm2022/lib/metadata/shared/metadata.service.mjs +0 -18
  356. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +0 -130
  357. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +0 -6
  358. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +0 -2
  359. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +0 -172
  360. package/esm2022/lib/offline/geoDB/index.mjs +0 -5
  361. package/esm2022/lib/offline/index.mjs +0 -6
  362. package/esm2022/lib/offline/layerDB/index.mjs +0 -3
  363. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +0 -2
  364. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +0 -83
  365. package/esm2022/lib/offline/offline.interface.mjs +0 -2
  366. package/esm2022/lib/offline/offline.provider.mjs +0 -50
  367. package/esm2022/lib/offline/shared/geo-network.service.mjs +0 -79
  368. package/esm2022/lib/offline/shared/index.mjs +0 -2
  369. package/esm2022/lib/overlay/index.mjs +0 -2
  370. package/esm2022/lib/overlay/shared/index.mjs +0 -4
  371. package/esm2022/lib/overlay/shared/overlay.enum.mjs +0 -8
  372. package/esm2022/lib/overlay/shared/overlay.mjs +0 -139
  373. package/esm2022/lib/overlay/shared/overlay.utils.mjs +0 -17
  374. package/esm2022/lib/print/index.mjs +0 -4
  375. package/esm2022/lib/print/print/print.component.mjs +0 -116
  376. package/esm2022/lib/print/print-form/index.mjs +0 -2
  377. package/esm2022/lib/print/print-form/print-form.component.mjs +0 -320
  378. package/esm2022/lib/print/print.module.mjs +0 -20
  379. package/esm2022/lib/print/shared/geopdf.mjs +0 -68
  380. package/esm2022/lib/print/shared/index.mjs +0 -5
  381. package/esm2022/lib/print/shared/print.interface.mjs +0 -2
  382. package/esm2022/lib/print/shared/print.service.mjs +0 -1136
  383. package/esm2022/lib/print/shared/print.type.mjs +0 -30
  384. package/esm2022/lib/query/index.mjs +0 -2
  385. package/esm2022/lib/query/query.module.mjs +0 -27
  386. package/esm2022/lib/query/shared/index.mjs +0 -8
  387. package/esm2022/lib/query/shared/query-search-source.mjs +0 -35
  388. package/esm2022/lib/query/shared/query-search-source.providers.mjs +0 -22
  389. package/esm2022/lib/query/shared/query.directive.mjs +0 -290
  390. package/esm2022/lib/query/shared/query.enums.mjs +0 -32
  391. package/esm2022/lib/query/shared/query.interfaces.mjs +0 -2
  392. package/esm2022/lib/query/shared/query.service.mjs +0 -753
  393. package/esm2022/lib/query/shared/query.utils.mjs +0 -45
  394. package/esm2022/lib/search/index.mjs +0 -10
  395. package/esm2022/lib/search/search-bar/search-bar.component.mjs +0 -483
  396. package/esm2022/lib/search/search-bar/search-bar.module.mjs +0 -19
  397. package/esm2022/lib/search/search-results/index.mjs +0 -5
  398. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +0 -101
  399. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +0 -433
  400. package/esm2022/lib/search/search-results/search-results-item.component.mjs +0 -119
  401. package/esm2022/lib/search/search-results/search-results.component.mjs +0 -297
  402. package/esm2022/lib/search/search-results/search-results.directive.mjs +0 -7
  403. package/esm2022/lib/search/search-results/search-results.module.mjs +0 -20
  404. package/esm2022/lib/search/search-selector/search-selector.component.mjs +0 -118
  405. package/esm2022/lib/search/search-selector/search-selector.module.mjs +0 -19
  406. package/esm2022/lib/search/search-settings/search-settings.component.mjs +0 -264
  407. package/esm2022/lib/search/search-settings/search-settings.module.mjs +0 -19
  408. package/esm2022/lib/search/search.module.mjs +0 -77
  409. package/esm2022/lib/search/shared/index.mjs +0 -10
  410. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +0 -328
  411. package/esm2022/lib/search/shared/search-source-service.providers.mjs +0 -20
  412. package/esm2022/lib/search/shared/search-source.service.mjs +0 -56
  413. package/esm2022/lib/search/shared/search.enums.mjs +0 -4
  414. package/esm2022/lib/search/shared/search.interfaces.mjs +0 -2
  415. package/esm2022/lib/search/shared/search.provider.mjs +0 -20
  416. package/esm2022/lib/search/shared/search.service.mjs +0 -149
  417. package/esm2022/lib/search/shared/search.utils.mjs +0 -92
  418. package/esm2022/lib/search/shared/sources/cadastre.mjs +0 -142
  419. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +0 -32
  420. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +0 -2
  421. package/esm2022/lib/search/shared/sources/coordinates.mjs +0 -168
  422. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +0 -52
  423. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +0 -32
  424. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +0 -2
  425. package/esm2022/lib/search/shared/sources/icherche.mjs +0 -816
  426. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +0 -87
  427. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +0 -2
  428. package/esm2022/lib/search/shared/sources/ilayer.mjs +0 -339
  429. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +0 -58
  430. package/esm2022/lib/search/shared/sources/index.mjs +0 -23
  431. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +0 -2
  432. package/esm2022/lib/search/shared/sources/nominatim.mjs +0 -263
  433. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +0 -31
  434. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +0 -13
  435. package/esm2022/lib/search/shared/sources/source.mjs +0 -221
  436. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +0 -2
  437. package/esm2022/lib/search/shared/sources/storedqueries.mjs +0 -454
  438. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +0 -56
  439. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +0 -2
  440. package/esm2022/lib/search/shared/sources/workspace.mjs +0 -192
  441. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +0 -31
  442. package/esm2022/lib/style/index.mjs +0 -5
  443. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +0 -360
  444. package/esm2022/lib/style/shared/datasource/index.mjs +0 -2
  445. package/esm2022/lib/style/shared/feature/feature-style.mjs +0 -162
  446. package/esm2022/lib/style/shared/feature/index.mjs +0 -2
  447. package/esm2022/lib/style/shared/font.enum.mjs +0 -17
  448. package/esm2022/lib/style/shared/index.mjs +0 -5
  449. package/esm2022/lib/style/shared/overlay/index.mjs +0 -3
  450. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +0 -39
  451. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +0 -88
  452. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +0 -78
  453. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +0 -27
  454. package/esm2022/lib/style/shared/vector/index.mjs +0 -4
  455. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +0 -2
  456. package/esm2022/lib/style/style-list/index.mjs +0 -5
  457. package/esm2022/lib/style/style-list/style-list.interface.mjs +0 -2
  458. package/esm2022/lib/style/style-list/style-list.module.mjs +0 -23
  459. package/esm2022/lib/style/style-list/style-list.provider.mjs +0 -21
  460. package/esm2022/lib/style/style-list/style-list.service.mjs +0 -52
  461. package/esm2022/lib/style/style-modal/drawing/index.mjs +0 -2
  462. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +0 -193
  463. package/esm2022/lib/style/style-modal/index.mjs +0 -5
  464. package/esm2022/lib/style/style-modal/layer/index.mjs +0 -2
  465. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +0 -142
  466. package/esm2022/lib/style/style-modal/layer-button/index.mjs +0 -2
  467. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +0 -44
  468. package/esm2022/lib/style/style-modal/shared/index.mjs +0 -2
  469. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +0 -2
  470. package/esm2022/lib/style/style-service/draw-style.service.mjs +0 -255
  471. package/esm2022/lib/style/style-service/index.mjs +0 -3
  472. package/esm2022/lib/style/style-service/style.service.mjs +0 -393
  473. package/esm2022/lib/style/style.module.mjs +0 -46
  474. package/esm2022/lib/toast/index.mjs +0 -2
  475. package/esm2022/lib/toast/toast.component.mjs +0 -99
  476. package/esm2022/lib/toast/toast.module.mjs +0 -24
  477. package/esm2022/lib/utils/googleLinks.mjs +0 -13
  478. package/esm2022/lib/utils/id-generator.mjs +0 -112
  479. package/esm2022/lib/utils/index.mjs +0 -5
  480. package/esm2022/lib/utils/osmLinks.mjs +0 -9
  481. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +0 -3
  482. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +0 -2
  483. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +0 -64
  484. package/esm2022/lib/wkt/index.mjs +0 -2
  485. package/esm2022/lib/wkt/shared/index.mjs +0 -2
  486. package/esm2022/lib/wkt/shared/wkt.service.mjs +0 -235
  487. package/esm2022/lib/wkt/wkt.module.mjs +0 -25
  488. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +0 -36
  489. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +0 -19
  490. package/esm2022/lib/workspace/confirmation-popup/index.mjs +0 -3
  491. package/esm2022/lib/workspace/index.mjs +0 -8
  492. package/esm2022/lib/workspace/shared/edition-workspace.mjs +0 -301
  493. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +0 -720
  494. package/esm2022/lib/workspace/shared/feature-workspace.mjs +0 -41
  495. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +0 -113
  496. package/esm2022/lib/workspace/shared/index.mjs +0 -8
  497. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +0 -41
  498. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +0 -121
  499. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +0 -248
  500. package/esm2022/lib/workspace/shared/workspace.utils.mjs +0 -188
  501. package/esm2022/lib/workspace/widgets/index.mjs +0 -4
  502. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +0 -48
  503. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +0 -19
  504. package/esm2022/lib/workspace/widgets/widgets.mjs +0 -15
  505. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +0 -172
  506. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +0 -19
  507. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +0 -137
  508. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +0 -19
  509. package/esm2022/lib/workspace/workspace.module.mjs +0 -32
  510. package/esm2022/public_api.mjs +0 -56
@@ -1,378 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { Injectable } from '@angular/core';
3
- import { ConfigService } from '@igo2/core/config';
4
- import { addExcelSheetToWorkBook, createExcelWorkBook, downloadBlob, downloadContent, isIsoDate, writeExcelFile } from '@igo2/utils';
5
- import OlFeature from 'ol/Feature';
6
- import * as olformat from 'ol/format';
7
- import { circular } from 'ol/geom/Polygon';
8
- import { Observable, catchError, lastValueFrom, of, tap } from 'rxjs';
9
- import { ClusterDataSource, WFSDataSource } from '../../datasource';
10
- import { VectorLayer, isLayerGroup } from '../../layer';
11
- import { ExportInvalidFileError, ExportNothingToExportError } from './export.errors';
12
- import { isCsvExport } from './export.utils';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@igo2/core/config";
15
- import * as i2 from "@angular/common/http";
16
- const SHAPEFILE_FIELD_MAX_LENGHT = 255;
17
- export class ExportService {
18
- config;
19
- httpClient;
20
- static ogreFormats = {
21
- GML: 'gml',
22
- GPX: 'gpx',
23
- KML: 'kml',
24
- Shapefile: 'ESRI Shapefile',
25
- CSV: 'CSV',
26
- /** @deprecated use CSV */
27
- CSVcomma: 'CSVcomma',
28
- /** @deprecated use CSV */
29
- CSVsemicolon: 'CSVsemicolon'
30
- };
31
- static noOgreFallbacks = ['GML', 'GPX', 'KML'];
32
- ogreUrl;
33
- aggregateInComment = true;
34
- constructor(config, httpClient) {
35
- this.config = config;
36
- this.httpClient = httpClient;
37
- this.ogreUrl = this.config.getConfig('importExport.url');
38
- const gpxAggregateInComment = this.config.getConfig('importExport.gpxAggregateInComment');
39
- if (gpxAggregateInComment !== undefined) {
40
- this.aggregateInComment = gpxAggregateInComment;
41
- }
42
- }
43
- export(olFeatures, options, title, projectionIn = 'EPSG:4326', projectionOut = 'EPSG:4326') {
44
- const exportOlFeatures = this.cleanFeatures(olFeatures, options.format, '_featureStore');
45
- return this.exportAsync(exportOlFeatures, options, title, projectionIn, projectionOut);
46
- }
47
- cleanFeatures(olFeatures, format, excludePrefix = '_') {
48
- if (format === 'GPX' && this.aggregateInComment) {
49
- return this.generateAggregatedFeature(olFeatures);
50
- }
51
- return olFeatures.map((olFeature) => {
52
- let keys = olFeature
53
- .getKeys()
54
- .filter((key) => !key.startsWith(excludePrefix));
55
- if (format === 'Shapefile' && olFeature.get('_style')) {
56
- const style = JSON.stringify(olFeature.get('_style'));
57
- if (style.length > SHAPEFILE_FIELD_MAX_LENGHT)
58
- keys = keys.filter((key) => key !== '_style');
59
- }
60
- const properties = keys.reduce((acc, key) => {
61
- acc[key] = olFeature.get(key);
62
- return acc;
63
- }, { geometry: olFeature.getGeometry() });
64
- return new OlFeature(properties);
65
- });
66
- }
67
- generateAggregatedFeature(olFeatures) {
68
- return olFeatures.map((olFeature) => {
69
- const keys = olFeature
70
- .getKeys()
71
- .filter((key) => !key.startsWith('_'));
72
- let comment = '';
73
- const properties = keys.reduce((acc, key) => {
74
- if (key && key !== 'geometry') {
75
- key === 'id' && olFeature.get('draw')
76
- ? (comment += key + ':' + olFeature.get('draw') + ' \r\n')
77
- : (comment += key + ':' + olFeature.get(key) + ' \r\n');
78
- }
79
- acc[key] = olFeature.get(key);
80
- return acc;
81
- }, {
82
- geometry: olFeature.getGeometry()
83
- });
84
- const newFeature = new OlFeature(properties);
85
- newFeature.set('name', olFeature.getId());
86
- newFeature.set('cmt', comment);
87
- return newFeature;
88
- });
89
- }
90
- exportAsync(olFeatures, options, title, projectionIn, projectionOut) {
91
- const { format } = options;
92
- return new Observable((observer) => {
93
- const nothingToExport = this.nothingToExport(olFeatures, format);
94
- if (nothingToExport) {
95
- observer.error(new ExportNothingToExportError());
96
- return;
97
- }
98
- const ogreFormats = Object.keys(ExportService.ogreFormats);
99
- if (ogreFormats.indexOf(format) >= 0) {
100
- if (!this.ogreUrl) {
101
- if (ExportService.noOgreFallbacks.indexOf(format) >= 0) {
102
- this.exportToFile(olFeatures, format, title, projectionIn, projectionOut);
103
- observer.complete();
104
- }
105
- else {
106
- observer.error(new ExportInvalidFileError());
107
- }
108
- return;
109
- }
110
- this.exportWithOgre(olFeatures, options, title, projectionIn, projectionOut).subscribe({
111
- complete: () => observer.complete(),
112
- error: (error) => observer.error(error)
113
- });
114
- }
115
- else {
116
- this.exportToFile(olFeatures, format, title, projectionIn, projectionOut);
117
- observer.complete();
118
- }
119
- });
120
- }
121
- async exportToFile(olFeatures, format, title, projectionIn, projectionOut) {
122
- const features = this.formatFeatures(olFeatures, format, projectionIn, projectionOut);
123
- const fileName = `${title}.${format.toLowerCase()}`;
124
- downloadContent(features, 'attachment/plain;charset=utf-8', fileName);
125
- }
126
- formatFeatures(features, format, projectionIn = 'EPSG:4326', projectionOut = 'EPSG:4326') {
127
- const formatter = this.getFormatter(format);
128
- const cleanFeatures = this.cleanFeatures(features, format, '_featureStore');
129
- return formatter.writeFeatures(cleanFeatures, {
130
- dataProjection: projectionOut,
131
- featureProjection: projectionIn
132
- });
133
- }
134
- getFormatter(format) {
135
- switch (format) {
136
- case 'GPX':
137
- return new olformat.GPX();
138
- case 'GML':
139
- return new olformat.GML();
140
- case 'KML':
141
- return new olformat.KML();
142
- default:
143
- return new olformat.GeoJSON();
144
- }
145
- }
146
- async exportExcel(map, store, data) {
147
- const workBook = await createExcelWorkBook();
148
- for (const layerName of data.layers) {
149
- const layer = map.layerController.getById(layerName);
150
- if (isLayerGroup(layer)) {
151
- continue;
152
- }
153
- const features = await lastValueFrom(this.getFeatures(map, layer, data, store));
154
- const formattedFeatures = features?.length
155
- ? this.formatFeatures(features, 'GeoJSON')
156
- : null;
157
- const collection = features
158
- ? JSON.parse(formattedFeatures)
159
- : {
160
- features: []
161
- };
162
- const rows = collection.features.map((feature) => this.formatRecord(feature.properties));
163
- await addExcelSheetToWorkBook(layer.title, rows, workBook);
164
- }
165
- const title = this.getTitleFromLayers(data.layers, map);
166
- writeExcelFile(workBook, title, { compression: true });
167
- }
168
- getTitleFromLayers(layers, map) {
169
- return layers.length === 1
170
- ? this.getLayerTitleFromId(layers[0], map)
171
- : 'igo';
172
- }
173
- getLayerTitleFromId(id, map) {
174
- const layer = map.layerController.getById(id);
175
- return layer.title;
176
- }
177
- formatRecord(record) {
178
- return Object.entries(record).reduce((formatted, [key, value]) => {
179
- formatted[key] = this.formatDataType(value);
180
- return formatted;
181
- }, {});
182
- }
183
- formatDataType(value) {
184
- switch (true) {
185
- case typeof value === 'string': {
186
- if (isIsoDate(value)) {
187
- return new Date(value).toLocaleString();
188
- }
189
- return value;
190
- }
191
- case typeof value === 'object':
192
- case value instanceof Array: {
193
- return JSON.stringify(value);
194
- }
195
- default:
196
- return value;
197
- }
198
- }
199
- exportWithOgre(olFeatures, { format, csvSeparator = null }, title, projectionIn, projectionOut) {
200
- const featuresText = new olformat.GeoJSON().writeFeatures(olFeatures, {
201
- dataProjection: projectionOut,
202
- featureProjection: projectionIn
203
- });
204
- const url = `${this.ogreUrl}/convertJson`;
205
- const formData = new FormData();
206
- formData.append('json', featuresText);
207
- let outputName = format === 'Shapefile'
208
- ? `${title}.zip`
209
- : `${title}.${format.toLowerCase()}`;
210
- let ogreFormat = ExportService.ogreFormats[format];
211
- if (isCsvExport(format)) {
212
- outputName = `${title}.csv`;
213
- if (format === 'CSVcomma' || format === 'CSVsemicolon') {
214
- ogreFormat = 'CSV';
215
- }
216
- formData.append('lco', `SEPARATOR=${csvSeparator}`);
217
- if (format === 'CSVsemicolon') {
218
- formData.append('lco', `SEPARATOR=${csvSeparator}`);
219
- }
220
- }
221
- formData.append('outputName', this.formatFilename(outputName));
222
- formData.append('format', ogreFormat);
223
- return this.httpClient
224
- .post(url, formData, {
225
- responseType: 'blob'
226
- })
227
- .pipe(tap((value) => {
228
- downloadBlob(value, outputName);
229
- }));
230
- }
231
- formatFilename(name) {
232
- return name
233
- .replaceAll(' ', '_')
234
- .normalize('NFD')
235
- .replace(/[\u0300-\u036f]/g, '')
236
- .replace(/’/g, "'");
237
- }
238
- nothingToExport(olFeatures, format) {
239
- if (olFeatures.length === 0) {
240
- return true;
241
- }
242
- if (format === 'GPX') {
243
- const pointOrLine = olFeatures.find((olFeature) => {
244
- return (['Point', 'LineString', 'MultiLineString'].indexOf(olFeature.getGeometry().getType()) >= 0);
245
- });
246
- return pointOrLine === undefined;
247
- }
248
- return false;
249
- }
250
- getFeaturesFromMap(layer, options) {
251
- const dataSource = layer.dataSource.ol;
252
- const extent = layer.map.viewController.getExtent();
253
- let features = options.featureInMapExtent
254
- ? dataSource.getFeaturesInExtent(extent)
255
- : dataSource.getFeatures();
256
- if (layer.dataSource instanceof ClusterDataSource) {
257
- features = features.flatMap((cluster) => cluster.get('features'));
258
- }
259
- return features;
260
- }
261
- getFeaturesFromWorkspace(wks, layerName, data) {
262
- const hasSelection = data.layersWithSelection.indexOf(layerName) !== -1;
263
- const isInMapExtent = data.featureInMapExtent;
264
- if (hasSelection && isInMapExtent) {
265
- // Only export selected feature && into map extent
266
- return wks.entityStore.stateView
267
- .all()
268
- .filter((e) => e.state.inMapExtent && e.state.selected)
269
- .map((e) => e.entity.ol);
270
- }
271
- else if (hasSelection && !isInMapExtent) {
272
- // Only export selected feature && (into map extent OR not)
273
- return wks.entityStore.stateView
274
- .all()
275
- .filter((e) => e.state.selected)
276
- .map((e) => e.entity.ol);
277
- }
278
- else if (isInMapExtent) {
279
- // Only into map extent
280
- return wks.entityStore.stateView
281
- .all()
282
- .filter((e) => e.state.inMapExtent)
283
- .map((e) => e.entity.ol);
284
- }
285
- else {
286
- // All features
287
- return wks.entityStore.stateView
288
- .all()
289
- .map((e) => e.entity.ol);
290
- }
291
- }
292
- getFeatures(map, layer, data, store) {
293
- const projection = map.viewController.getOlProjection();
294
- const extent = data.featureInMapExtent
295
- ? map.viewController.getExtent()
296
- : undefined;
297
- if (layer.dataSource instanceof WFSDataSource) {
298
- return layer.dataSource
299
- .fetchFeatures({
300
- extent,
301
- projection,
302
- httpClient: this.httpClient
303
- })
304
- .pipe(catchError((e) => {
305
- throw e;
306
- }));
307
- }
308
- // Filter spatial use external API to make query and use Workspace to store data
309
- else if (layer.options.workspace?.enabled) {
310
- const wks = this.getWorkspaceByLayerId(layer.id, store);
311
- if (wks?.entityStore?.stateView.all().length) {
312
- const features = this.getFeaturesFromWorkspace(wks, layer.id, data);
313
- return of(features).pipe(catchError((e) => {
314
- throw e;
315
- }));
316
- }
317
- }
318
- else if (layer instanceof VectorLayer) {
319
- return of(this.getFeaturesFromMap(layer, data));
320
- }
321
- return of([]);
322
- }
323
- getWorkspaceByLayerId(id, store) {
324
- const wksFromLayerId = store
325
- .all()
326
- .find((workspace) => workspace
327
- .layer.id === id);
328
- if (wksFromLayerId) {
329
- return wksFromLayerId;
330
- }
331
- return;
332
- }
333
- getGeomTypes(features, format) {
334
- let geomTypes = [];
335
- if (format === 'Shapefile' || format === 'GPX') {
336
- features.forEach((olFeature) => {
337
- const featureGeomType = olFeature.getGeometry().getType();
338
- const currentGeomType = geomTypes.find((geomType) => geomType.type === featureGeomType);
339
- if (currentGeomType) {
340
- currentGeomType.features.push(olFeature);
341
- }
342
- else {
343
- geomTypes.push({
344
- type: featureGeomType,
345
- features: [olFeature]
346
- });
347
- }
348
- });
349
- }
350
- else {
351
- geomTypes = [{ type: null, features: features }];
352
- }
353
- geomTypes.forEach((geomType) => {
354
- geomType.features.forEach((feature) => {
355
- const radius = feature.get('rad');
356
- if (radius) {
357
- const center4326 = [
358
- feature.get('longitude'),
359
- feature.get('latitude')
360
- ];
361
- const circle = circular(center4326, radius, 500);
362
- circle.transform('EPSG:4326', feature.get('_projection'));
363
- feature.setGeometry(circle);
364
- }
365
- });
366
- });
367
- return geomTypes;
368
- }
369
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
370
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportService, providedIn: 'root' });
371
- }
372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportService, decorators: [{
373
- type: Injectable,
374
- args: [{
375
- providedIn: 'root'
376
- }]
377
- }], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.HttpClient }] });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9pbXBvcnQtZXhwb3J0L3NoYXJlZC9leHBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNmLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHM0MsT0FBTyxFQUFFLFVBQVUsRUFBWSxVQUFVLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBFLE9BQU8sRUFBUyxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTy9ELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzNCLE1BQU0saUJBQWlCLENBQUM7QUFHekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTdDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBS3ZDLE1BQU0sT0FBTyxhQUFhO0lBbUJkO0lBQ0E7SUFuQlYsTUFBTSxDQUFDLFdBQVcsR0FBcUM7UUFDckQsR0FBRyxF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QUFXLENBQUM7d0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO3FCQUN4QixDQUFDO29CQUNGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNqRCxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7b0JBQzFELE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzt3R0EvZlUsYUFBYTs0R0FBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFbnRpdHlSZWNvcmQgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IFdvcmtzcGFjZSwgV29ya3NwYWNlU3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24vd29ya3NwYWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQge1xuICBhZGRFeGNlbFNoZWV0VG9Xb3JrQm9vayxcbiAgY3JlYXRlRXhjZWxXb3JrQm9vayxcbiAgZG93bmxvYWRCbG9iLFxuICBkb3dubG9hZENvbnRlbnQsXG4gIGlzSXNvRGF0ZSxcbiAgd3JpdGVFeGNlbEZpbGVcbn0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0ICogYXMgb2xmb3JtYXQgZnJvbSAnb2wvZm9ybWF0JztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgeyBjaXJjdWxhciB9IGZyb20gJ29sL2dlb20vUG9seWdvbic7XG5cbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciwgY2F0Y2hFcnJvciwgbGFzdFZhbHVlRnJvbSwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDbHVzdGVyRGF0YVNvdXJjZSwgV0ZTRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2UnO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgTGF5ZXIsIFZlY3RvckxheWVyLCBpc0xheWVyR3JvdXAgfSBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAnO1xuaW1wb3J0IHtcbiAgRWRpdGlvbldvcmtzcGFjZSxcbiAgRmVhdHVyZVdvcmtzcGFjZSxcbiAgV2ZzV29ya3NwYWNlXG59IGZyb20gJy4uLy4uL3dvcmtzcGFjZSc7XG5pbXBvcnQge1xuICBFeHBvcnRJbnZhbGlkRmlsZUVycm9yLFxuICBFeHBvcnROb3RoaW5nVG9FeHBvcnRFcnJvclxufSBmcm9tICcuL2V4cG9ydC5lcnJvcnMnO1xuaW1wb3J0IHsgRXhwb3J0T3B0aW9ucywgR2VvbWV0cnlDb2xsZWN0aW9uIH0gZnJvbSAnLi9leHBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFueUV4cG9ydEZvcm1hdCwgRXhwb3J0T2dyZUZvcm1hdCB9IGZyb20gJy4vZXhwb3J0LnR5cGUnO1xuaW1wb3J0IHsgaXNDc3ZFeHBvcnQgfSBmcm9tICcuL2V4cG9ydC51dGlscyc7XG5cbmNvbnN0IFNIQVBFRklMRV9GSUVMRF9NQVhfTEVOR0hUID0gMjU1O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnRTZXJ2aWNlIHtcbiAgc3RhdGljIG9ncmVGb3JtYXRzOiBSZWNvcmQ8RXhwb3J0T2dyZUZvcm1hdCwgc3RyaW5nPiA9IHtcbiAgICBHTUw6ICdnbWwnLFxuICAgIEdQWDogJ2dweCcsXG4gICAgS01MOiAna21sJyxcbiAgICBTaGFwZWZpbGU6ICdFU1JJIFNoYXBlZmlsZScsXG4gICAgQ1NWOiAnQ1NWJyxcbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlIENTViAqL1xuICAgIENTVmNvbW1hOiAnQ1NWY29tbWEnLFxuICAgIC8qKiBAZGVwcmVjYXRlZCB1c2UgQ1NWICovXG4gICAgQ1NWc2VtaWNvbG9uOiAnQ1NWc2VtaWNvbG9uJ1xuICB9O1xuXG4gIHN0YXRpYyBub09ncmVGYWxsYmFja3M6IFBhcnRpYWw8QW55RXhwb3J0Rm9ybWF0W10+ID0gWydHTUwnLCAnR1BYJywgJ0tNTCddO1xuXG4gIHByaXZhdGUgb2dyZVVybDogc3RyaW5nO1xuICBwcml2YXRlIGFnZ3JlZ2F0ZUluQ29tbWVudCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50XG4gICkge1xuICAgIHRoaXMub2dyZVVybCA9IHRoaXMuY29uZmlnLmdldENvbmZpZygnaW1wb3J0RXhwb3J0LnVybCcpO1xuICAgIGNvbnN0IGdweEFnZ3JlZ2F0ZUluQ29tbWVudCA9IHRoaXMuY29uZmlnLmdldENvbmZpZyhcbiAgICAgICdpbXBvcnRFeHBvcnQuZ3B4QWdncmVnYXRlSW5Db21tZW50J1xuICAgICk7XG4gICAgaWYgKGdweEFnZ3JlZ2F0ZUluQ29tbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFnZ3JlZ2F0ZUluQ29tbWVudCA9IGdweEFnZ3JlZ2F0ZUluQ29tbWVudDtcbiAgICB9XG4gIH1cblxuICBleHBvcnQoXG4gICAgb2xGZWF0dXJlczogT2xGZWF0dXJlPE9sR2VvbWV0cnk+W10sXG4gICAgb3B0aW9uczogRXhwb3J0T3B0aW9ucyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHByb2plY3Rpb25JbiA9ICdFUFNHOjQzMjYnLFxuICAgIHByb2plY3Rpb25PdXQgPSAnRVBTRzo0MzI2J1xuICApOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBleHBvcnRPbEZlYXR1cmVzID0gdGhpcy5jbGVhbkZlYXR1cmVzKFxuICAgICAgb2xGZWF0dXJlcyxcbiAgICAgIG9wdGlvbnMuZm9ybWF0LFxuICAgICAgJ19mZWF0dXJlU3RvcmUnXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmV4cG9ydEFzeW5jKFxuICAgICAgZXhwb3J0T2xGZWF0dXJlcyxcbiAgICAgIG9wdGlvbnMsXG4gICAgICB0aXRsZSxcbiAgICAgIHByb2plY3Rpb25JbixcbiAgICAgIHByb2plY3Rpb25PdXRcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFuRmVhdHVyZXMoXG4gICAgb2xGZWF0dXJlczogT2xGZWF0dXJlPE9sR2VvbWV0cnk+W10sXG4gICAgZm9ybWF0OiBBbnlFeHBvcnRGb3JtYXQsXG4gICAgZXhjbHVkZVByZWZpeCA9ICdfJ1xuICApOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gJ0dQWCcgJiYgdGhpcy5hZ2dyZWdhdGVJbkNvbW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQWdncmVnYXRlZEZlYXR1cmUob2xGZWF0dXJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9sRmVhdHVyZXMubWFwKChvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgbGV0IGtleXMgPSBvbEZlYXR1cmVcbiAgICAgICAgLmdldEtleXMoKVxuICAgICAgICAuZmlsdGVyKChrZXk6IHN0cmluZykgPT4gIWtleS5zdGFydHNXaXRoKGV4Y2x1ZGVQcmVmaXgpKTtcblxuICAgICAgaWYgKGZvcm1hdCA9PT0gJ1NoYXBlZmlsZScgJiYgb2xGZWF0dXJlLmdldCgnX3N0eWxlJykpIHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBKU09OLnN0cmluZ2lmeShvbEZlYXR1cmUuZ2V0KCdfc3R5bGUnKSk7XG4gICAgICAgIGlmIChzdHlsZS5sZW5ndGggPiBTSEFQRUZJTEVfRklFTERfTUFYX0xFTkdIVClcbiAgICAgICAgICBrZXlzID0ga2V5cy5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSAnX3N0eWxlJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBrZXlzLnJlZHVjZShcbiAgICAgICAgKGFjYzogb2JqZWN0LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gb2xGZWF0dXJlLmdldChrZXkpO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHsgZ2VvbWV0cnk6IG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gbmV3IE9sRmVhdHVyZShwcm9wZXJ0aWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVBZ2dyZWdhdGVkRmVhdHVyZShcbiAgICBvbEZlYXR1cmVzOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXVxuICApOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSB7XG4gICAgcmV0dXJuIG9sRmVhdHVyZXMubWFwKChvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgY29uc3Qga2V5cyA9IG9sRmVhdHVyZVxuICAgICAgICAuZ2V0S2V5cygpXG4gICAgICAgIC5maWx0ZXIoKGtleTogc3RyaW5nKSA9PiAha2V5LnN0YXJ0c1dpdGgoJ18nKSk7XG4gICAgICBsZXQgY29tbWVudCA9ICcnO1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IGtleXMucmVkdWNlKFxuICAgICAgICAoYWNjOiBvYmplY3QsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGtleSAmJiBrZXkgIT09ICdnZW9tZXRyeScpIHtcbiAgICAgICAgICAgIGtleSA9PT0gJ2lkJyAmJiBvbEZlYXR1cmUuZ2V0KCdkcmF3JylcbiAgICAgICAgICAgICAgPyAoY29tbWVudCArPSBrZXkgKyAnOicgKyBvbEZlYXR1cmUuZ2V0KCdkcmF3JykgKyAnICAgXFxyXFxuJylcbiAgICAgICAgICAgICAgOiAoY29tbWVudCArPSBrZXkgKyAnOicgKyBvbEZlYXR1cmUuZ2V0KGtleSkgKyAnICAgXFxyXFxuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjY1trZXldID0gb2xGZWF0dXJlLmdldChrZXkpO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBnZW9tZXRyeTogb2xGZWF0dXJlLmdldEdlb21ldHJ5KClcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IG5ld0ZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHByb3BlcnRpZXMpO1xuICAgICAgbmV3RmVhdHVyZS5zZXQoJ25hbWUnLCBvbEZlYXR1cmUuZ2V0SWQoKSk7XG4gICAgICBuZXdGZWF0dXJlLnNldCgnY210JywgY29tbWVudCk7XG5cbiAgICAgIHJldHVybiBuZXdGZWF0dXJlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBvcnRBc3luYyhcbiAgICBvbEZlYXR1cmVzOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSxcbiAgICBvcHRpb25zOiBFeHBvcnRPcHRpb25zLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgcHJvamVjdGlvbkluOiBzdHJpbmcsXG4gICAgcHJvamVjdGlvbk91dDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBvcHRpb25zO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXI6IE9ic2VydmVyPHZvaWQ+KSA9PiB7XG4gICAgICBjb25zdCBub3RoaW5nVG9FeHBvcnQgPSB0aGlzLm5vdGhpbmdUb0V4cG9ydChvbEZlYXR1cmVzLCBmb3JtYXQpO1xuICAgICAgaWYgKG5vdGhpbmdUb0V4cG9ydCkge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihuZXcgRXhwb3J0Tm90aGluZ1RvRXhwb3J0RXJyb3IoKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2dyZUZvcm1hdHMgPSBPYmplY3Qua2V5cyhFeHBvcnRTZXJ2aWNlLm9ncmVGb3JtYXRzKTtcbiAgICAgIGlmIChvZ3JlRm9ybWF0cy5pbmRleE9mKGZvcm1hdCkgPj0gMCkge1xuICAgICAgICBpZiAoIXRoaXMub2dyZVVybCkge1xuICAgICAgICAgIGlmIChFeHBvcnRTZXJ2aWNlLm5vT2dyZUZhbGxiYWNrcy5pbmRleE9mKGZvcm1hdCkgPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5leHBvcnRUb0ZpbGUoXG4gICAgICAgICAgICAgIG9sRmVhdHVyZXMsXG4gICAgICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgIHByb2plY3Rpb25JbixcbiAgICAgICAgICAgICAgcHJvamVjdGlvbk91dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKG5ldyBFeHBvcnRJbnZhbGlkRmlsZUVycm9yKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leHBvcnRXaXRoT2dyZShcbiAgICAgICAgICBvbEZlYXR1cmVzLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgcHJvamVjdGlvbkluLFxuICAgICAgICAgIHByb2plY3Rpb25PdXRcbiAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpLFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IG9ic2VydmVyLmVycm9yKGVycm9yKVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXhwb3J0VG9GaWxlKFxuICAgICAgICAgIG9sRmVhdHVyZXMsXG4gICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgIHByb2plY3Rpb25JbixcbiAgICAgICAgICBwcm9qZWN0aW9uT3V0XG4gICAgICAgICk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZXhwb3J0VG9GaWxlKFxuICAgIG9sRmVhdHVyZXM6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdLFxuICAgIGZvcm1hdDogQW55RXhwb3J0Rm9ybWF0LFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgcHJvamVjdGlvbkluOiBzdHJpbmcsXG4gICAgcHJvamVjdGlvbk91dDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5mb3JtYXRGZWF0dXJlcyhcbiAgICAgIG9sRmVhdHVyZXMsXG4gICAgICBmb3JtYXQsXG4gICAgICBwcm9qZWN0aW9uSW4sXG4gICAgICBwcm9qZWN0aW9uT3V0XG4gICAgKTtcblxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7dGl0bGV9LiR7Zm9ybWF0LnRvTG93ZXJDYXNlKCl9YDtcbiAgICBkb3dubG9hZENvbnRlbnQoZmVhdHVyZXMsICdhdHRhY2htZW50L3BsYWluO2NoYXJzZXQ9dXRmLTgnLCBmaWxlTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEZlYXR1cmVzKFxuICAgIGZlYXR1cmVzOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSxcbiAgICBmb3JtYXQ6IEFueUV4cG9ydEZvcm1hdCxcbiAgICBwcm9qZWN0aW9uSW4gPSAnRVBTRzo0MzI2JyxcbiAgICBwcm9qZWN0aW9uT3V0ID0gJ0VQU0c6NDMyNidcbiAgKSB7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gdGhpcy5nZXRGb3JtYXR0ZXIoZm9ybWF0KTtcbiAgICBjb25zdCBjbGVhbkZlYXR1cmVzID0gdGhpcy5jbGVhbkZlYXR1cmVzKGZlYXR1cmVzLCBmb3JtYXQsICdfZmVhdHVyZVN0b3JlJyk7XG4gICAgcmV0dXJuIGZvcm1hdHRlci53cml0ZUZlYXR1cmVzKGNsZWFuRmVhdHVyZXMsIHtcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uT3V0LFxuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb25JblxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVyKGZvcm1hdDogQW55RXhwb3J0Rm9ybWF0KSB7XG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ0dQWCc6XG4gICAgICAgIHJldHVybiBuZXcgb2xmb3JtYXQuR1BYKCk7XG4gICAgICBjYXNlICdHTUwnOlxuICAgICAgICByZXR1cm4gbmV3IG9sZm9ybWF0LkdNTCgpO1xuICAgICAgY2FzZSAnS01MJzpcbiAgICAgICAgcmV0dXJuIG5ldyBvbGZvcm1hdC5LTUwoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBuZXcgb2xmb3JtYXQuR2VvSlNPTigpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGV4cG9ydEV4Y2VsKG1hcDogSWdvTWFwLCBzdG9yZTogV29ya3NwYWNlU3RvcmUsIGRhdGE6IEV4cG9ydE9wdGlvbnMpIHtcbiAgICBjb25zdCB3b3JrQm9vayA9IGF3YWl0IGNyZWF0ZUV4Y2VsV29ya0Jvb2soKTtcblxuICAgIGZvciAoY29uc3QgbGF5ZXJOYW1lIG9mIGRhdGEubGF5ZXJzKSB7XG4gICAgICBjb25zdCBsYXllciA9IG1hcC5sYXllckNvbnRyb2xsZXIuZ2V0QnlJZChsYXllck5hbWUpO1xuICAgICAgaWYgKGlzTGF5ZXJHcm91cChsYXllcikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuZ2V0RmVhdHVyZXMobWFwLCBsYXllciwgZGF0YSwgc3RvcmUpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBmb3JtYXR0ZWRGZWF0dXJlcyA9IGZlYXR1cmVzPy5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmZvcm1hdEZlYXR1cmVzKGZlYXR1cmVzLCAnR2VvSlNPTicpXG4gICAgICAgIDogbnVsbDtcblxuICAgICAgY29uc3QgY29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlc1xuICAgICAgICA/IEpTT04ucGFyc2UoZm9ybWF0dGVkRmVhdHVyZXMpXG4gICAgICAgIDoge1xuICAgICAgICAgICAgZmVhdHVyZXM6IFtdXG4gICAgICAgICAgfTtcbiAgICAgIGNvbnN0IHJvd3MgPSBjb2xsZWN0aW9uLmZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT5cbiAgICAgICAgdGhpcy5mb3JtYXRSZWNvcmQoZmVhdHVyZS5wcm9wZXJ0aWVzKVxuICAgICAgKTtcblxuICAgICAgYXdhaXQgYWRkRXhjZWxTaGVldFRvV29ya0Jvb2sobGF5ZXIudGl0bGUsIHJvd3MsIHdvcmtCb29rKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuZ2V0VGl0bGVGcm9tTGF5ZXJzKGRhdGEubGF5ZXJzLCBtYXApO1xuICAgIHdyaXRlRXhjZWxGaWxlKHdvcmtCb29rLCB0aXRsZSwgeyBjb21wcmVzc2lvbjogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGl0bGVGcm9tTGF5ZXJzKGxheWVyczogc3RyaW5nW10sIG1hcDogSWdvTWFwKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbGF5ZXJzLmxlbmd0aCA9PT0gMVxuICAgICAgPyB0aGlzLmdldExheWVyVGl0bGVGcm9tSWQobGF5ZXJzWzBdLCBtYXApXG4gICAgICA6ICdpZ28nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXllclRpdGxlRnJvbUlkKGlkOiBzdHJpbmcsIG1hcDogSWdvTWFwKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXllciA9IG1hcC5sYXllckNvbnRyb2xsZXIuZ2V0QnlJZChpZCk7XG4gICAgcmV0dXJuIGxheWVyLnRpdGxlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRSZWNvcmQoXG4gICAgcmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlY29yZCkucmVkdWNlKChmb3JtYXR0ZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZm9ybWF0dGVkW2tleV0gPSB0aGlzLmZvcm1hdERhdGFUeXBlKHZhbHVlKTtcbiAgICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXREYXRhVHlwZSh2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnOiB7XG4gICAgICAgIGlmIChpc0lzb0RhdGUodmFsdWUgYXMgc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSBhcyBzdHJpbmcpLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBjYXNlIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCc6XG4gICAgICBjYXNlIHZhbHVlIGluc3RhbmNlb2YgQXJyYXk6IHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4cG9ydFdpdGhPZ3JlKFxuICAgIG9sRmVhdHVyZXM6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdLFxuICAgIHsgZm9ybWF0LCBjc3ZTZXBhcmF0b3IgPSBudWxsIH06IEV4cG9ydE9wdGlvbnMsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBwcm9qZWN0aW9uSW46IHN0cmluZyxcbiAgICBwcm9qZWN0aW9uT3V0OiBzdHJpbmdcbiAgKSB7XG4gICAgY29uc3QgZmVhdHVyZXNUZXh0ID0gbmV3IG9sZm9ybWF0Lkdlb0pTT04oKS53cml0ZUZlYXR1cmVzKG9sRmVhdHVyZXMsIHtcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uT3V0LFxuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb25JblxuICAgIH0pO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMub2dyZVVybH0vY29udmVydEpzb25gO1xuXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbicsIGZlYXR1cmVzVGV4dCk7XG5cbiAgICBsZXQgb3V0cHV0TmFtZSA9XG4gICAgICBmb3JtYXQgPT09ICdTaGFwZWZpbGUnXG4gICAgICAgID8gYCR7dGl0bGV9LnppcGBcbiAgICAgICAgOiBgJHt0aXRsZX0uJHtmb3JtYXQudG9Mb3dlckNhc2UoKX1gO1xuICAgIGxldCBvZ3JlRm9ybWF0ID0gRXhwb3J0U2VydmljZS5vZ3JlRm9ybWF0c1tmb3JtYXRdO1xuXG4gICAgaWYgKGlzQ3N2RXhwb3J0KGZvcm1hdCkpIHtcbiAgICAgIG91dHB1dE5hbWUgPSBgJHt0aXRsZX0uY3N2YDtcblxuICAgICAgaWYgKGZvcm1hdCA9PT0gJ0NTVmNvbW1hJyB8fCBmb3JtYXQgPT09ICdDU1ZzZW1pY29sb24nKSB7XG4gICAgICAgIG9ncmVGb3JtYXQgPSAnQ1NWJztcbiAgICAgIH1cblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdsY28nLCBgU0VQQVJBVE9SPSR7Y3N2U2VwYXJhdG9yfWApO1xuXG4gICAgICBpZiAoZm9ybWF0ID09PSAnQ1NWc2VtaWNvbG9uJykge1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2xjbycsIGBTRVBBUkFUT1I9JHtjc3ZTZXBhcmF0b3J9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdvdXRwdXROYW1lJywgdGhpcy5mb3JtYXRGaWxlbmFtZShvdXRwdXROYW1lKSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmb3JtYXQnLCBvZ3JlRm9ybWF0KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5wb3N0KHVybCwgZm9ybURhdGEsIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGRvd25sb2FkQmxvYih2YWx1ZSwgb3V0cHV0TmFtZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRGaWxlbmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lXG4gICAgICAucmVwbGFjZUFsbCgnICcsICdfJylcbiAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpXG4gICAgICAucmVwbGFjZSgv4oCZL2csIFwiJ1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgbm90aGluZ1RvRXhwb3J0KFxuICAgIG9sRmVhdHVyZXM6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdLFxuICAgIGZvcm1hdDogc3RyaW5nXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChvbEZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChmb3JtYXQgPT09ICdHUFgnKSB7XG4gICAgICBjb25zdCBwb2ludE9yTGluZSA9IG9sRmVhdHVyZXMuZmluZCgob2xGZWF0dXJlKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgWydQb2ludCcsICdMaW5lU3RyaW5nJywgJ011bHRpTGluZVN0cmluZyddLmluZGV4T2YoXG4gICAgICAgICAgICBvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRUeXBlKClcbiAgICAgICAgICApID49IDBcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHBvaW50T3JMaW5lID09PSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmVhdHVyZXNGcm9tTWFwKFxuICAgIGxheWVyOiBWZWN0b3JMYXllcixcbiAgICBvcHRpb25zOiBFeHBvcnRPcHRpb25zXG4gICk6IE9sRmVhdHVyZVtdIHtcbiAgICBjb25zdCBkYXRhU291cmNlID0gbGF5ZXIuZGF0YVNvdXJjZS5vbDtcbiAgICBjb25zdCBleHRlbnQgPSBsYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0RXh0ZW50KCk7XG5cbiAgICBsZXQgZmVhdHVyZXM6IE9sRmVhdHVyZVtdID0gb3B0aW9ucy5mZWF0dXJlSW5NYXBFeHRlbnRcbiAgICAgID8gZGF0YVNvdXJjZS5nZXRGZWF0dXJlc0luRXh0ZW50KGV4dGVudClcbiAgICAgIDogZGF0YVNvdXJjZS5nZXRGZWF0dXJlcygpO1xuXG4gICAgaWYgKGxheWVyLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBDbHVzdGVyRGF0YVNvdXJjZSkge1xuICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5mbGF0TWFwKChjbHVzdGVyKSA9PiBjbHVzdGVyLmdldCgnZmVhdHVyZXMnKSk7XG4gICAgfVxuICAgIHJldHVybiBmZWF0dXJlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmVhdHVyZXNGcm9tV29ya3NwYWNlKFxuICAgIHdrczogV29ya3NwYWNlLFxuICAgIGxheWVyTmFtZTogc3RyaW5nLFxuICAgIGRhdGE6IEV4cG9ydE9wdGlvbnNcbiAgKTogT2xGZWF0dXJlW10ge1xuICAgIGNvbnN0IGhhc1NlbGVjdGlvbiA9IGRhdGEubGF5ZXJzV2l0aFNlbGVjdGlvbi5pbmRleE9mKGxheWVyTmFtZSkgIT09IC0xO1xuICAgIGNvbnN0IGlzSW5NYXBFeHRlbnQgPSBkYXRhLmZlYXR1cmVJbk1hcEV4dGVudDtcbiAgICBpZiAoaGFzU2VsZWN0aW9uICYmIGlzSW5NYXBFeHRlbnQpIHtcbiAgICAgIC8vIE9ubHkgZXhwb3J0IHNlbGVjdGVkIGZlYXR1cmUgJiYgaW50byBtYXAgZXh0ZW50XG4gICAgICByZXR1cm4gd2tzLmVudGl0eVN0b3JlLnN0YXRlVmlld1xuICAgICAgICAuYWxsKClcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAoZTogRW50aXR5UmVjb3JkPG9iamVjdD4pID0+IGUuc3RhdGUuaW5NYXBFeHRlbnQgJiYgZS5zdGF0ZS5zZWxlY3RlZFxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGUpID0+IChlLmVudGl0eSBhcyBGZWF0dXJlKS5vbCBhcyBPbEZlYXR1cmUpO1xuICAgIH0gZWxzZSBpZiAoaGFzU2VsZWN0aW9uICYmICFpc0luTWFwRXh0ZW50KSB7XG4gICAgICAvLyBPbmx5IGV4cG9ydCBzZWxlY3RlZCBmZWF0dXJlICYmICAoaW50byBtYXAgZXh0ZW50IE9SIG5vdClcbiAgICAgIHJldHVybiB3a3MuZW50aXR5U3RvcmUuc3RhdGVWaWV3XG4gICAgICAgIC5hbGwoKVxuICAgICAgICAuZmlsdGVyKChlOiBFbnRpdHlSZWNvcmQ8b2JqZWN0PikgPT4gZS5zdGF0ZS5zZWxlY3RlZClcbiAgICAgICAgLm1hcCgoZSkgPT4gKGUuZW50aXR5IGFzIEZlYXR1cmUpLm9sIGFzIE9sRmVhdHVyZSk7XG4gICAgfSBlbHNlIGlmIChpc0luTWFwRXh0ZW50KSB7XG4gICAgICAvLyBPbmx5IGludG8gbWFwIGV4dGVudFxuICAgICAgcmV0dXJuIHdrcy5lbnRpdHlTdG9yZS5zdGF0ZVZpZXdcbiAgICAgICAgLmFsbCgpXG4gICAgICAgIC5maWx0ZXIoKGU6IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiBlLnN0YXRlLmluTWFwRXh0ZW50KVxuICAgICAgICAubWFwKChlKSA9PiAoZS5lbnRpdHkgYXMgRmVhdHVyZSkub2wgYXMgT2xGZWF0dXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWxsIGZlYXR1cmVzXG4gICAgICByZXR1cm4gd2tzLmVudGl0eVN0b3JlLnN0YXRlVmlld1xuICAgICAgICAuYWxsKClcbiAgICAgICAgLm1hcCgoZSkgPT4gKGUuZW50aXR5IGFzIEZlYXR1cmUpLm9sIGFzIE9sRmVhdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmVhdHVyZXMoXG4gICAgbWFwOiBJZ29NYXAsXG4gICAgbGF5ZXI6IExheWVyLFxuICAgIGRhdGE6IEV4cG9ydE9wdGlvbnMsXG4gICAgc3RvcmU6IFdvcmtzcGFjZVN0b3JlXG4gICk6IE9ic2VydmFibGU8T2xGZWF0dXJlW10+IHtcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gbWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpO1xuICAgIGNvbnN0IGV4dGVudCA9IGRhdGEuZmVhdHVyZUluTWFwRXh0ZW50XG4gICAgICA/IG1hcC52aWV3Q29udHJvbGxlci5nZXRFeHRlbnQoKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobGF5ZXIuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdGU0RhdGFTb3VyY2UpIHtcbiAgICAgIHJldHVybiBsYXllci5kYXRhU291cmNlXG4gICAgICAgIC5mZXRjaEZlYXR1cmVzKHtcbiAgICAgICAgICBleHRlbnQsXG4gICAgICAgICAgcHJvamVjdGlvbixcbiAgICAgICAgICBodHRwQ2xpZW50OiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICAvLyBGaWx0ZXIgc3BhdGlhbCB1c2UgZXh0ZXJuYWwgQVBJIHRvIG1ha2UgcXVlcnkgYW5kIHVzZSBXb3Jrc3BhY2UgdG8gc3RvcmUgZGF0YVxuICAgIGVsc2UgaWYgKGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5lbmFibGVkKSB7XG4gICAgICBjb25zdCB3a3MgPSB0aGlzLmdldFdvcmtzcGFjZUJ5TGF5ZXJJZChsYXllci5pZCwgc3RvcmUpO1xuICAgICAgaWYgKHdrcz8uZW50aXR5U3RvcmU/LnN0YXRlVmlldy5hbGwoKS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLmdldEZlYXR1cmVzRnJvbVdvcmtzcGFjZSh3a3MsIGxheWVyLmlkLCBkYXRhKTtcbiAgICAgICAgcmV0dXJuIG9mKGZlYXR1cmVzKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmdldEZlYXR1cmVzRnJvbU1hcChsYXllciwgZGF0YSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvZihbXSk7XG4gIH1cblxuICBnZXRXb3Jrc3BhY2VCeUxheWVySWQoaWQ6IHN0cmluZywgc3RvcmU6IFdvcmtzcGFjZVN0b3JlKTogV29ya3NwYWNlIHtcbiAgICBjb25zdCB3a3NGcm9tTGF5ZXJJZCA9IHN0b3JlXG4gICAgICAuYWxsKClcbiAgICAgIC5maW5kKFxuICAgICAgICAod29ya3NwYWNlKSA9PlxuICAgICAgICAgICh3b3Jrc3BhY2UgYXMgV2ZzV29ya3NwYWNlIHwgRmVhdHVyZVdvcmtzcGFjZSB8IEVkaXRpb25Xb3Jrc3BhY2UpXG4gICAgICAgICAgICAubGF5ZXIuaWQgPT09IGlkXG4gICAgICApO1xuICAgIGlmICh3a3NGcm9tTGF5ZXJJZCkge1xuICAgICAgcmV0dXJuIHdrc0Zyb21MYXllcklkO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBnZXRHZW9tVHlwZXMoXG4gICAgZmVhdHVyZXM6IE9sRmVhdHVyZVtdLFxuICAgIGZvcm1hdD86IEFueUV4cG9ydEZvcm1hdFxuICApOiBHZW9tZXRyeUNvbGxlY3Rpb25bXSB7XG4gICAgbGV0IGdlb21UeXBlczogR2VvbWV0cnlDb2xsZWN0aW9uW10gPSBbXTtcbiAgICBpZiAoZm9ybWF0ID09PSAnU2hhcGVmaWxlJyB8fCBmb3JtYXQgPT09ICdHUFgnKSB7XG4gICAgICBmZWF0dXJlcy5mb3JFYWNoKChvbEZlYXR1cmUpID0+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZUdlb21UeXBlID0gb2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpO1xuICAgICAgICBjb25zdCBjdXJyZW50R2VvbVR5cGUgPSBnZW9tVHlwZXMuZmluZChcbiAgICAgICAgICAoZ2VvbVR5cGUpID0+IGdlb21UeXBlLnR5cGUgPT09IGZlYXR1cmVHZW9tVHlwZVxuICAgICAgICApO1xuICAgICAgICBpZiAoY3VycmVudEdlb21UeXBlKSB7XG4gICAgICAgICAgY3VycmVudEdlb21UeXBlLmZlYXR1cmVzLnB1c2gob2xGZWF0dXJlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnZW9tVHlwZXMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBmZWF0dXJlR2VvbVR5cGUsXG4gICAgICAgICAgICBmZWF0dXJlczogW29sRmVhdHVyZV1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlb21UeXBlcyA9IFt7IHR5cGU6IG51bGwsIGZlYXR1cmVzOiBmZWF0dXJlcyB9XTtcbiAgICB9XG5cbiAgICBnZW9tVHlwZXMuZm9yRWFjaCgoZ2VvbVR5cGUpID0+IHtcbiAgICAgIGdlb21UeXBlLmZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmUpID0+IHtcbiAgICAgICAgY29uc3QgcmFkaXVzOiBudW1iZXIgPSBmZWF0dXJlLmdldCgncmFkJyk7XG4gICAgICAgIGlmIChyYWRpdXMpIHtcbiAgICAgICAgICBjb25zdCBjZW50ZXI0MzI2OiBudW1iZXJbXSA9IFtcbiAgICAgICAgICAgIGZlYXR1cmUuZ2V0KCdsb25naXR1ZGUnKSxcbiAgICAgICAgICAgIGZlYXR1cmUuZ2V0KCdsYXRpdHVkZScpXG4gICAgICAgICAgXTtcbiAgICAgICAgICBjb25zdCBjaXJjbGUgPSBjaXJjdWxhcihjZW50ZXI0MzI2LCByYWRpdXMsIDUwMCk7XG4gICAgICAgICAgY2lyY2xlLnRyYW5zZm9ybSgnRVBTRzo0MzI2JywgZmVhdHVyZS5nZXQoJ19wcm9qZWN0aW9uJykpO1xuICAgICAgICAgIGZlYXR1cmUuc2V0R2VvbWV0cnkoY2lyY2xlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ2VvbVR5cGVzO1xuICB9XG59XG4iXX0=
@@ -1,13 +0,0 @@
1
- export const ExportFormat = [
2
- 'GeoJSON',
3
- 'Excel',
4
- 'Shapefile',
5
- 'GML',
6
- 'GPX',
7
- 'KML',
8
- 'CSV',
9
- 'URL'
10
- ];
11
- export const ExportFormatLegacy = ['CSVcomma', 'CSVsemicolon'];
12
- export const CsvSeparator = ['auto', 'comma', 'semicolon'];
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9pbXBvcnQtZXhwb3J0L3NoYXJlZC9leHBvcnQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsU0FBUztJQUNULE9BQU87SUFDUCxXQUFXO0lBQ1gsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7Q0FDRyxDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFVLENBQUM7QUFHeEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFueUV4cG9ydEZvcm1hdCA9IEV4cG9ydEZvcm1hdCB8IEV4cG9ydEZvcm1hdExlZ2FjeTtcblxuZXhwb3J0IGNvbnN0IEV4cG9ydEZvcm1hdCA9IFtcbiAgJ0dlb0pTT04nLFxuICAnRXhjZWwnLFxuICAnU2hhcGVmaWxlJyxcbiAgJ0dNTCcsXG4gICdHUFgnLFxuICAnS01MJyxcbiAgJ0NTVicsXG4gICdVUkwnXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRXhwb3J0Rm9ybWF0ID0gKHR5cGVvZiBFeHBvcnRGb3JtYXQpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBFeHBvcnRGb3JtYXRMZWdhY3kgPSBbJ0NTVmNvbW1hJywgJ0NTVnNlbWljb2xvbiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRXhwb3J0Rm9ybWF0TGVnYWN5ID0gKHR5cGVvZiBFeHBvcnRGb3JtYXRMZWdhY3kpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBDc3ZTZXBhcmF0b3IgPSBbJ2F1dG8nLCAnY29tbWEnLCAnc2VtaWNvbG9uJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBDc3ZTZXBhcmF0b3IgPSAodHlwZW9mIENzdlNlcGFyYXRvcilbbnVtYmVyXTtcblxuZXhwb3J0IHR5cGUgRXhwb3J0T2dyZUZvcm1hdCA9IEV4dHJhY3Q8XG4gIEFueUV4cG9ydEZvcm1hdCxcbiAgJ0dNTCcgfCAnR1BYJyB8ICdLTUwnIHwgJ1NoYXBlZmlsZScgfCAnQ1NWY29tbWEnIHwgJ0NTVnNlbWljb2xvbicgfCAnQ1NWJ1xuPjtcbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { EntityTableColumnRenderer, getEntityProperty } from '@igo2/common/entity';
2
- import { downloadContent } from '@igo2/utils';
3
- import { ExportNothingToExportError } from './export.errors';
4
- export function handleFileExportError(error, messageService) {
5
- if (error instanceof ExportNothingToExportError) {
6
- handleNothingToExportError(messageService);
7
- return;
8
- }
9
- messageService.error('igo.geo.export.failed.text', 'igo.geo.export.failed.title');
10
- }
11
- export function handleFileExportSuccess(messageService) {
12
- messageService.success('igo.geo.export.success.text', 'igo.geo.export.success.title');
13
- }
14
- export function handleNothingToExportError(messageService) {
15
- messageService.error('igo.geo.export.nothing.text', 'igo.geo.export.nothing.title');
16
- }
17
- /**
18
- * Export array to CSV
19
- *
20
- * @param rows Array of arrays to export as CSV
21
- * @param separator Cell separator
22
- */
23
- export function exportToCSV(rows, fileName, separator = ';') {
24
- const lines = rows.map((row) => row.join(separator));
25
- const csvContent = lines.join('\n');
26
- downloadContent(csvContent, 'text/csv;charset=utf-8', fileName);
27
- }
28
- /**
29
- * Return an array of values from an array of entities.
30
- *
31
- * @param entities Array of entities
32
- * @param scolumns Columns definition of the output data
33
- */
34
- export function entitiesToRowData(entities, columns) {
35
- return entities.map((entity) => {
36
- return columns.map((column) => {
37
- let valueAccessor;
38
- if (column.renderer === undefined ||
39
- column.renderer === EntityTableColumnRenderer.Default) {
40
- valueAccessor = column.valueAccessor;
41
- }
42
- valueAccessor = valueAccessor ? valueAccessor : getEntityProperty;
43
- return valueAccessor(entity, column.name);
44
- });
45
- });
46
- }
47
- export function isCsvExport(format) {
48
- const legacyCsv = ['CSVsemicolon', 'CSVcomma'];
49
- return format === 'CSV' || legacyCsv.includes(format);
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvaW1wb3J0LWV4cG9ydC9zaGFyZWQvZXhwb3J0LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc3RCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEtBQVksRUFDWixjQUE4QjtJQUU5QixJQUFJLEtBQUssWUFBWSwwQkFBMEIsRUFBRSxDQUFDO1FBQ2hELDBCQUEwQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLE9BQU87SUFDVCxDQUFDO0lBQ0QsY0FBYyxDQUFDLEtBQUssQ0FDbEIsNEJBQTRCLEVBQzVCLDZCQUE2QixDQUM5QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxjQUE4QjtJQUNwRSxjQUFjLENBQUMsT0FBTyxDQUNwQiw2QkFBNkIsRUFDN0IsOEJBQThCLENBQy9CLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLGNBQThCO0lBQ3ZFLGNBQWMsQ0FBQyxLQUFLLENBQ2xCLDZCQUE2QixFQUM3Qiw4QkFBOEIsQ0FDL0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBYSxFQUFFLFFBQWdCLEVBQUUsU0FBUyxHQUFHLEdBQUc7SUFDMUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsZUFBZSxDQUFDLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFFBQWtCLEVBQ2xCLE9BQTRCO0lBRTVCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO1FBQ3JDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRTtZQUMvQyxJQUFJLGFBQWEsQ0FBQztZQUNsQixJQUNFLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUztnQkFDN0IsTUFBTSxDQUFDLFFBQVEsS0FBSyx5QkFBeUIsQ0FBQyxPQUFPLEVBQ3JELENBQUM7Z0JBQ0QsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDdkMsQ0FBQztZQUNELGFBQWEsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7WUFDbEUsT0FBTyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBdUI7SUFDakQsTUFBTSxTQUFTLEdBQWtDLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sTUFBTSxLQUFLLEtBQUssSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQTRCLENBQUMsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW50aXR5VGFibGVDb2x1bW4sXG4gIEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIsXG4gIGdldEVudGl0eVByb3BlcnR5XG59IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgZG93bmxvYWRDb250ZW50IH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBFeHBvcnROb3RoaW5nVG9FeHBvcnRFcnJvciB9IGZyb20gJy4vZXhwb3J0LmVycm9ycyc7XG5pbXBvcnQgeyBBbnlFeHBvcnRGb3JtYXQsIEV4cG9ydEZvcm1hdExlZ2FjeSB9IGZyb20gJy4vZXhwb3J0LnR5cGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlRmlsZUV4cG9ydEVycm9yKFxuICBlcnJvcjogRXJyb3IsXG4gIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuKSB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEV4cG9ydE5vdGhpbmdUb0V4cG9ydEVycm9yKSB7XG4gICAgaGFuZGxlTm90aGluZ1RvRXhwb3J0RXJyb3IobWVzc2FnZVNlcnZpY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBtZXNzYWdlU2VydmljZS5lcnJvcihcbiAgICAnaWdvLmdlby5leHBvcnQuZmFpbGVkLnRleHQnLFxuICAgICdpZ28uZ2VvLmV4cG9ydC5mYWlsZWQudGl0bGUnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVGaWxlRXhwb3J0U3VjY2VzcyhtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHtcbiAgbWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcbiAgICAnaWdvLmdlby5leHBvcnQuc3VjY2Vzcy50ZXh0JyxcbiAgICAnaWdvLmdlby5leHBvcnQuc3VjY2Vzcy50aXRsZSdcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU5vdGhpbmdUb0V4cG9ydEVycm9yKG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSkge1xuICBtZXNzYWdlU2VydmljZS5lcnJvcihcbiAgICAnaWdvLmdlby5leHBvcnQubm90aGluZy50ZXh0JyxcbiAgICAnaWdvLmdlby5leHBvcnQubm90aGluZy50aXRsZSdcbiAgKTtcbn1cblxuLyoqXG4gKiBFeHBvcnQgYXJyYXkgdG8gQ1NWXG4gKlxuICogQHBhcmFtIHJvd3MgQXJyYXkgb2YgYXJyYXlzIHRvIGV4cG9ydCBhcyBDU1ZcbiAqIEBwYXJhbSBzZXBhcmF0b3IgQ2VsbCBzZXBhcmF0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydFRvQ1NWKHJvd3M6IGFueVtdW10sIGZpbGVOYW1lOiBzdHJpbmcsIHNlcGFyYXRvciA9ICc7Jykge1xuICBjb25zdCBsaW5lcyA9IHJvd3MubWFwKChyb3c6IGFueVtdW10pID0+IHJvdy5qb2luKHNlcGFyYXRvcikpO1xuICBjb25zdCBjc3ZDb250ZW50ID0gbGluZXMuam9pbignXFxuJyk7XG4gIGRvd25sb2FkQ29udGVudChjc3ZDb250ZW50LCAndGV4dC9jc3Y7Y2hhcnNldD11dGYtOCcsIGZpbGVOYW1lKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYW4gYXJyYXkgb2YgdmFsdWVzIGZyb20gYW4gYXJyYXkgb2YgZW50aXRpZXMuXG4gKlxuICogQHBhcmFtIGVudGl0aWVzIEFycmF5IG9mIGVudGl0aWVzXG4gKiBAcGFyYW0gc2NvbHVtbnMgQ29sdW1ucyBkZWZpbml0aW9uIG9mIHRoZSBvdXRwdXQgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW50aXRpZXNUb1Jvd0RhdGEoXG4gIGVudGl0aWVzOiBvYmplY3RbXSxcbiAgY29sdW1uczogRW50aXR5VGFibGVDb2x1bW5bXVxuKSB7XG4gIHJldHVybiBlbnRpdGllcy5tYXAoKGVudGl0eTogb2JqZWN0KSA9PiB7XG4gICAgcmV0dXJuIGNvbHVtbnMubWFwKChjb2x1bW46IEVudGl0eVRhYmxlQ29sdW1uKSA9PiB7XG4gICAgICBsZXQgdmFsdWVBY2Nlc3NvcjtcbiAgICAgIGlmIChcbiAgICAgICAgY29sdW1uLnJlbmRlcmVyID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgY29sdW1uLnJlbmRlcmVyID09PSBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkRlZmF1bHRcbiAgICAgICkge1xuICAgICAgICB2YWx1ZUFjY2Vzc29yID0gY29sdW1uLnZhbHVlQWNjZXNzb3I7XG4gICAgICB9XG4gICAgICB2YWx1ZUFjY2Vzc29yID0gdmFsdWVBY2Nlc3NvciA/IHZhbHVlQWNjZXNzb3IgOiBnZXRFbnRpdHlQcm9wZXJ0eTtcbiAgICAgIHJldHVybiB2YWx1ZUFjY2Vzc29yKGVudGl0eSwgY29sdW1uLm5hbWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3N2RXhwb3J0KGZvcm1hdDogQW55RXhwb3J0Rm9ybWF0KTogYm9vbGVhbiB7XG4gIGNvbnN0IGxlZ2FjeUNzdjogUGFydGlhbDxFeHBvcnRGb3JtYXRMZWdhY3k+W10gPSBbJ0NTVnNlbWljb2xvbicsICdDU1Zjb21tYSddO1xuICByZXR1cm4gZm9ybWF0ID09PSAnQ1NWJyB8fCBsZWdhY3lDc3YuaW5jbHVkZXMoZm9ybWF0IGFzIEV4cG9ydEZvcm1hdExlZ2FjeSk7XG59XG4iXX0=
@@ -1,39 +0,0 @@
1
- export class ImportError extends Error {
2
- }
3
- export class ImportInvalidFileError extends ImportError {
4
- constructor() {
5
- super('Invalid file');
6
- Object.setPrototypeOf(this, ImportInvalidFileError.prototype);
7
- }
8
- }
9
- export class ImportUnreadableFileError extends ImportError {
10
- constructor() {
11
- super('Failed to read file');
12
- Object.setPrototypeOf(this, ImportUnreadableFileError.prototype);
13
- }
14
- }
15
- export class ImportNothingToImportError extends ImportError {
16
- constructor() {
17
- super('Nothing to import');
18
- Object.setPrototypeOf(this, ImportNothingToImportError.prototype);
19
- }
20
- }
21
- export class ImportSizeError extends ImportError {
22
- constructor() {
23
- super('File is too large');
24
- Object.setPrototypeOf(this, ImportNothingToImportError.prototype);
25
- }
26
- }
27
- export class ImportSRSError extends ImportError {
28
- constructor() {
29
- super('Invalid SRS definition');
30
- Object.setPrototypeOf(this, ImportNothingToImportError.prototype);
31
- }
32
- }
33
- export class ImportOgreServerError extends ImportError {
34
- constructor() {
35
- super('Error 500 with OGRE');
36
- Object.setPrototypeOf(this, ImportOgreServerError.prototype);
37
- }
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ltcG9ydC1leHBvcnQvc2hhcmVkL2ltcG9ydC5lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVksU0FBUSxLQUFLO0NBQUc7QUFFekMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQVc7SUFDckQ7UUFDRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLFdBQVc7SUFDeEQ7UUFDRSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsV0FBVztJQUN6RDtRQUNFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7SUFDOUM7UUFDRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFdBQVc7SUFDN0M7UUFDRSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsV0FBVztJQUNwRDtRQUNFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBJbXBvcnRFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRJbnZhbGlkRmlsZUVycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignSW52YWxpZCBmaWxlJyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEltcG9ydEludmFsaWRGaWxlRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW1wb3J0VW5yZWFkYWJsZUZpbGVFcnJvciBleHRlbmRzIEltcG9ydEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ0ZhaWxlZCB0byByZWFkIGZpbGUnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW1wb3J0VW5yZWFkYWJsZUZpbGVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnROb3RoaW5nVG9JbXBvcnRFcnJvciBleHRlbmRzIEltcG9ydEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ05vdGhpbmcgdG8gaW1wb3J0Jyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEltcG9ydE5vdGhpbmdUb0ltcG9ydEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltcG9ydFNpemVFcnJvciBleHRlbmRzIEltcG9ydEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ0ZpbGUgaXMgdG9vIGxhcmdlJyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEltcG9ydE5vdGhpbmdUb0ltcG9ydEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltcG9ydFNSU0Vycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignSW52YWxpZCBTUlMgZGVmaW5pdGlvbicpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbXBvcnROb3RoaW5nVG9JbXBvcnRFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRPZ3JlU2VydmVyRXJyb3IgZXh0ZW5kcyBJbXBvcnRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdFcnJvciA1MDAgd2l0aCBPR1JFJyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEltcG9ydE9ncmVTZXJ2ZXJFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ltcG9ydC1leHBvcnQvc2hhcmVkL2ltcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cG9ydEZvcm1hdCB9IGZyb20gJy4vZXhwb3J0LnR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydEV4cG9ydFNlcnZpY2VPcHRpb25zIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGNsaWVudFNpZGVGaWxlU2l6ZU1heE1iPzogbnVtYmVyO1xuICBmb3JjZU5hbWluZz86IGJvb2xlYW47XG4gIGZvcm1hdHM/OiBFeHBvcnRGb3JtYXRbXTtcbiAgZ3B4QWdncmVnYXRlSW5Db21tZW50PzogYm9vbGVhbjtcbiAgY29uZmlnRmlsZVRvR2VvREJTZXJ2aWNlPzogc3RyaW5nO1xuICBhbGxvd1RvU3RvcmVMYXllcj86IGJvb2xlYW47XG4gIGltcG9ydFdpdGhTdHlsZT86IGJvb2xlYW47XG59XG4iXX0=