@igo2/geo 18.0.1-next.2 → 18.0.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 (512) hide show
  1. package/esm2022/igo2-geo.mjs +5 -0
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +234 -0
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +272 -0
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -0
  5. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +19 -0
  6. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +136 -0
  7. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +60 -0
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +232 -0
  9. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +24 -0
  10. package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
  11. package/esm2022/lib/catalog/catalog.module.mjs +26 -0
  12. package/esm2022/lib/catalog/index.mjs +6 -0
  13. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +32 -0
  14. package/esm2022/lib/catalog/shared/catalog.enum.mjs +16 -0
  15. package/esm2022/lib/catalog/shared/catalog.interface.mjs +2 -0
  16. package/esm2022/lib/catalog/shared/catalog.service.mjs +706 -0
  17. package/esm2022/lib/catalog/shared/catalogs.mjs +75 -0
  18. package/esm2022/lib/catalog/shared/index.mjs +5 -0
  19. package/esm2022/lib/datasource/index.mjs +3 -0
  20. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +17 -0
  21. package/esm2022/lib/datasource/shared/capabilities.service.mjs +441 -0
  22. package/esm2022/lib/datasource/shared/datasource.service.mjs +258 -0
  23. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +2 -0
  24. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +2 -0
  25. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +2 -0
  26. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +222 -0
  27. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +2 -0
  28. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +118 -0
  29. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +2 -0
  30. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +24 -0
  31. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +3 -0
  32. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +2 -0
  33. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +42 -0
  34. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +2 -0
  35. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +52 -0
  36. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +2 -0
  37. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +70 -0
  38. package/esm2022/lib/datasource/shared/datasources/index.mjs +36 -0
  39. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +2 -0
  40. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +33 -0
  41. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +2 -0
  42. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +14 -0
  43. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +2 -0
  44. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +60 -0
  45. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +2 -0
  46. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +17 -0
  47. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +2 -0
  48. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +56 -0
  49. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +2 -0
  50. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +137 -0
  51. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +170 -0
  52. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +2 -0
  53. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +227 -0
  54. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +224 -0
  55. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +2 -0
  56. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +18 -0
  57. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +2 -0
  58. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +11 -0
  59. package/esm2022/lib/datasource/shared/index.mjs +6 -0
  60. package/esm2022/lib/datasource/shared/options/index.mjs +5 -0
  61. package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +2 -0
  62. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +15 -0
  63. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +85 -0
  64. package/esm2022/lib/datasource/shared/options/options.service.mjs +3 -0
  65. package/esm2022/lib/datasource/utils/index.mjs +2 -0
  66. package/esm2022/lib/datasource/utils/tilegrid.mjs +20 -0
  67. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +246 -0
  68. package/esm2022/lib/directions/directions-buttons/index.mjs +2 -0
  69. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +312 -0
  70. package/esm2022/lib/directions/directions-inputs/index.mjs +2 -0
  71. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +192 -0
  72. package/esm2022/lib/directions/directions-results/index.mjs +2 -0
  73. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -0
  74. package/esm2022/lib/directions/directions-sources/directions-source.mjs +3 -0
  75. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +23 -0
  76. package/esm2022/lib/directions/directions-sources/index.mjs +5 -0
  77. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +159 -0
  78. package/esm2022/lib/directions/directions.component.mjs +437 -0
  79. package/esm2022/lib/directions/directions.module.mjs +46 -0
  80. package/esm2022/lib/directions/directions.provider.mjs +16 -0
  81. package/esm2022/lib/directions/index.mjs +8 -0
  82. package/esm2022/lib/directions/shared/directions-source.service.mjs +18 -0
  83. package/esm2022/lib/directions/shared/directions.enum.mjs +72 -0
  84. package/esm2022/lib/directions/shared/directions.interface.mjs +2 -0
  85. package/esm2022/lib/directions/shared/directions.service.mjs +239 -0
  86. package/esm2022/lib/directions/shared/directions.utils.mjs +522 -0
  87. package/esm2022/lib/directions/shared/index.mjs +6 -0
  88. package/esm2022/lib/directions/shared/store.mjs +21 -0
  89. package/esm2022/lib/download/download-button/download-button.component.mjs +48 -0
  90. package/esm2022/lib/download/download-button/index.mjs +2 -0
  91. package/esm2022/lib/download/download.module.mjs +24 -0
  92. package/esm2022/lib/download/index.mjs +3 -0
  93. package/esm2022/lib/download/shared/download.interface.mjs +2 -0
  94. package/esm2022/lib/download/shared/download.service.mjs +67 -0
  95. package/esm2022/lib/download/shared/index.mjs +3 -0
  96. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +42 -0
  97. package/esm2022/lib/draw/draw/draw-popup.component.mjs +421 -0
  98. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +28 -0
  99. package/esm2022/lib/draw/draw/draw.component.mjs +1136 -0
  100. package/esm2022/lib/draw/draw/draw.module.mjs +19 -0
  101. package/esm2022/lib/draw/drawingTool.module.mjs +18 -0
  102. package/esm2022/lib/draw/index.mjs +3 -0
  103. package/esm2022/lib/draw/shared/draw-icon.service.mjs +30 -0
  104. package/esm2022/lib/draw/shared/draw.enum.mjs +21 -0
  105. package/esm2022/lib/draw/shared/draw.interface.mjs +2 -0
  106. package/esm2022/lib/draw/shared/draw.utils.mjs +125 -0
  107. package/esm2022/lib/draw/shared/index.mjs +5 -0
  108. package/esm2022/lib/environment/environment.interface.mjs +2 -0
  109. package/esm2022/lib/environment/index.mjs +2 -0
  110. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +306 -0
  111. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +56 -0
  112. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +26 -0
  113. package/esm2022/lib/feature/feature-details/index.mjs +4 -0
  114. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +101 -0
  115. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +19 -0
  116. package/esm2022/lib/feature/feature.module.mjs +26 -0
  117. package/esm2022/lib/feature/index.mjs +5 -0
  118. package/esm2022/lib/feature/shared/feature-store.utils.mjs +28 -0
  119. package/esm2022/lib/feature/shared/feature.enums.mjs +9 -0
  120. package/esm2022/lib/feature/shared/feature.interfaces.mjs +2 -0
  121. package/esm2022/lib/feature/shared/feature.utils.mjs +332 -0
  122. package/esm2022/lib/feature/shared/index.mjs +8 -0
  123. package/esm2022/lib/feature/shared/store.mjs +143 -0
  124. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +216 -0
  125. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +119 -0
  126. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +99 -0
  127. package/esm2022/lib/feature/shared/strategies/index.mjs +8 -0
  128. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +103 -0
  129. package/esm2022/lib/feature/shared/strategies/loading.mjs +136 -0
  130. package/esm2022/lib/feature/shared/strategies/search.mjs +158 -0
  131. package/esm2022/lib/feature/shared/strategies/selection.mjs +385 -0
  132. package/esm2022/lib/feature/shared/strategies.utils.mjs +37 -0
  133. package/esm2022/lib/filter/filter.module.mjs +131 -0
  134. package/esm2022/lib/filter/index.mjs +17 -0
  135. package/esm2022/lib/filter/ogc-filter-button/index.mjs +2 -0
  136. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +141 -0
  137. package/esm2022/lib/filter/ogc-filter-form/index.mjs +2 -0
  138. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +325 -0
  139. package/esm2022/lib/filter/ogc-filter-selection/index.mjs +2 -0
  140. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +787 -0
  141. package/esm2022/lib/filter/ogc-filter-time/index.mjs +3 -0
  142. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +201 -0
  143. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +665 -0
  144. package/esm2022/lib/filter/ogc-filterable-form/index.mjs +2 -0
  145. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +66 -0
  146. package/esm2022/lib/filter/ogc-filterable-item/index.mjs +2 -0
  147. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +244 -0
  148. package/esm2022/lib/filter/ogc-filterable-list/index.mjs +3 -0
  149. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +39 -0
  150. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +32 -0
  151. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +63 -0
  152. package/esm2022/lib/filter/shared/index.mjs +12 -0
  153. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +72 -0
  154. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +30 -0
  155. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +2 -0
  156. package/esm2022/lib/filter/shared/ogc-filter.mjs +756 -0
  157. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +47 -0
  158. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +23 -0
  159. package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +2 -0
  160. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +282 -0
  161. package/esm2022/lib/filter/shared/time-filter.enum.mjs +13 -0
  162. package/esm2022/lib/filter/shared/time-filter.interface.mjs +2 -0
  163. package/esm2022/lib/filter/shared/time-filter.service.mjs +107 -0
  164. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +2 -0
  165. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +875 -0
  166. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +2 -0
  167. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +191 -0
  168. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +2 -0
  169. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +120 -0
  170. package/esm2022/lib/filter/time-filter-button/index.mjs +2 -0
  171. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +70 -0
  172. package/esm2022/lib/filter/time-filter-form/index.mjs +2 -0
  173. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +537 -0
  174. package/esm2022/lib/filter/time-filter-item/index.mjs +2 -0
  175. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +90 -0
  176. package/esm2022/lib/filter/time-filter-list/index.mjs +3 -0
  177. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +39 -0
  178. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +24 -0
  179. package/esm2022/lib/geo.module.mjs +63 -0
  180. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +559 -0
  181. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +170 -0
  182. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +24 -0
  183. package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
  184. package/esm2022/lib/geometry/geometry.module.mjs +18 -0
  185. package/esm2022/lib/geometry/index.mjs +3 -0
  186. package/esm2022/lib/geometry/shared/controls/draw.mjs +340 -0
  187. package/esm2022/lib/geometry/shared/controls/index.mjs +4 -0
  188. package/esm2022/lib/geometry/shared/controls/modify.mjs +538 -0
  189. package/esm2022/lib/geometry/shared/controls/slice.mjs +190 -0
  190. package/esm2022/lib/geometry/shared/geometry.errors.mjs +24 -0
  191. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +2 -0
  192. package/esm2022/lib/geometry/shared/geometry.utils.mjs +113 -0
  193. package/esm2022/lib/geometry/shared/index.mjs +5 -0
  194. package/esm2022/lib/import-export/export-button/export-button.component.mjs +49 -0
  195. package/esm2022/lib/import-export/export-button/index.mjs +2 -0
  196. package/esm2022/lib/import-export/import-export/import-export.component.mjs +876 -0
  197. package/esm2022/lib/import-export/import-export/index.mjs +2 -0
  198. package/esm2022/lib/import-export/import-export.module.mjs +31 -0
  199. package/esm2022/lib/import-export/index.mjs +5 -0
  200. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +114 -0
  201. package/esm2022/lib/import-export/shared/export.errors.mjs +15 -0
  202. package/esm2022/lib/import-export/shared/export.interface.mjs +2 -0
  203. package/esm2022/lib/import-export/shared/export.service.mjs +378 -0
  204. package/esm2022/lib/import-export/shared/export.type.mjs +13 -0
  205. package/esm2022/lib/import-export/shared/export.utils.mjs +51 -0
  206. package/esm2022/lib/import-export/shared/import.errors.mjs +39 -0
  207. package/esm2022/lib/import-export/shared/import.interface.mjs +2 -0
  208. package/esm2022/lib/import-export/shared/import.service.mjs +221 -0
  209. package/esm2022/lib/import-export/shared/import.utils.mjs +203 -0
  210. package/esm2022/lib/import-export/shared/index.mjs +11 -0
  211. package/esm2022/lib/layer/index.mjs +16 -0
  212. package/esm2022/lib/layer/layer-group/index.mjs +2 -0
  213. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
  214. package/esm2022/lib/layer/layer-item/index.mjs +2 -0
  215. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +196 -0
  216. package/esm2022/lib/layer/layer-legend/index.mjs +2 -0
  217. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +287 -0
  218. package/esm2022/lib/layer/layer-legend-item/index.mjs +2 -0
  219. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +85 -0
  220. package/esm2022/lib/layer/layer-legend-list/index.mjs +3 -0
  221. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +54 -0
  222. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +104 -0
  223. package/esm2022/lib/layer/layer-list/index.mjs +2 -0
  224. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +232 -0
  225. package/esm2022/lib/layer/layer-list-tool/index.mjs +4 -0
  226. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +92 -0
  227. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -0
  228. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +61 -0
  229. package/esm2022/lib/layer/layer-search/index.mjs +2 -0
  230. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
  231. package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
  232. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +26 -0
  233. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
  234. package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
  235. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
  236. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
  237. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
  238. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
  239. package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
  240. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
  241. package/esm2022/lib/layer/layer.module.mjs +107 -0
  242. package/esm2022/lib/layer/shared/clusterParam.mjs +2 -0
  243. package/esm2022/lib/layer/shared/index.mjs +6 -0
  244. package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
  245. package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
  246. package/esm2022/lib/layer/shared/layer.enums.mjs +2 -0
  247. package/esm2022/lib/layer/shared/layer.service.mjs +315 -0
  248. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +2 -0
  249. package/esm2022/lib/layer/shared/layers/any-layer.mjs +2 -0
  250. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +2 -0
  251. package/esm2022/lib/layer/shared/layers/image-layer.mjs +75 -0
  252. package/esm2022/lib/layer/shared/layers/index.mjs +18 -0
  253. package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
  254. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
  255. package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
  256. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +7 -0
  257. package/esm2022/lib/layer/shared/layers/layer.mjs +178 -0
  258. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +2 -0
  259. package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
  260. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
  261. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
  262. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
  263. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +2 -0
  264. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +55 -0
  265. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +2 -0
  266. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +576 -0
  267. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +2 -0
  268. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +112 -0
  269. package/esm2022/lib/layer/track-feature-button/index.mjs +2 -0
  270. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +54 -0
  271. package/esm2022/lib/layer/utils/image-watcher.mjs +62 -0
  272. package/esm2022/lib/layer/utils/index.mjs +6 -0
  273. package/esm2022/lib/layer/utils/layer.utils.mjs +57 -0
  274. package/esm2022/lib/layer/utils/outputLegend.mjs +32 -0
  275. package/esm2022/lib/layer/utils/tile-watcher.mjs +52 -0
  276. package/esm2022/lib/layer/utils/vector-watcher.mjs +50 -0
  277. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +20 -0
  278. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +87 -0
  279. package/esm2022/lib/map/baselayers-switcher/index.mjs +3 -0
  280. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +122 -0
  281. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +78 -0
  282. package/esm2022/lib/map/geolocate-button/index.mjs +2 -0
  283. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +73 -0
  284. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +2 -0
  285. package/esm2022/lib/map/home-extent-button/index.mjs +3 -0
  286. package/esm2022/lib/map/index.mjs +14 -0
  287. package/esm2022/lib/map/info-section/index.mjs +2 -0
  288. package/esm2022/lib/map/info-section/info-section.component.mjs +15 -0
  289. package/esm2022/lib/map/map-browser/index.mjs +2 -0
  290. package/esm2022/lib/map/map-browser/map-browser.component.mjs +67 -0
  291. package/esm2022/lib/map/map-center/index.mjs +2 -0
  292. package/esm2022/lib/map/map-center/map-center.component.mjs +56 -0
  293. package/esm2022/lib/map/map.module.mjs +89 -0
  294. package/esm2022/lib/map/menu-button/index.mjs +2 -0
  295. package/esm2022/lib/map/menu-button/menu-button.component.mjs +57 -0
  296. package/esm2022/lib/map/offline-button/index.mjs +2 -0
  297. package/esm2022/lib/map/offline-button/offline-button.component.mjs +53 -0
  298. package/esm2022/lib/map/rotation-button/index.mjs +2 -0
  299. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +58 -0
  300. package/esm2022/lib/map/shared/controllers/controller.mjs +44 -0
  301. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +8 -0
  302. package/esm2022/lib/map/shared/controllers/geolocation.mjs +431 -0
  303. package/esm2022/lib/map/shared/controllers/index.mjs +5 -0
  304. package/esm2022/lib/map/shared/controllers/view.mjs +361 -0
  305. package/esm2022/lib/map/shared/hover-feature.directive.mjs +481 -0
  306. package/esm2022/lib/map/shared/index.mjs +15 -0
  307. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +238 -0
  308. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +122 -0
  309. package/esm2022/lib/map/shared/map.abstract.mjs +24 -0
  310. package/esm2022/lib/map/shared/map.enums.mjs +6 -0
  311. package/esm2022/lib/map/shared/map.interface.mjs +2 -0
  312. package/esm2022/lib/map/shared/map.mjs +201 -0
  313. package/esm2022/lib/map/shared/map.service.mjs +29 -0
  314. package/esm2022/lib/map/shared/map.utils.mjs +455 -0
  315. package/esm2022/lib/map/shared/mapOffline.directive.mjs +114 -0
  316. package/esm2022/lib/map/shared/projection.interfaces.mjs +2 -0
  317. package/esm2022/lib/map/shared/projection.service.mjs +67 -0
  318. package/esm2022/lib/map/shared/projection.utils.mjs +122 -0
  319. package/esm2022/lib/map/swipe-control/index.mjs +2 -0
  320. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +211 -0
  321. package/esm2022/lib/map/utils/index.mjs +2 -0
  322. package/esm2022/lib/map/utils/layer-watcher.mjs +112 -0
  323. package/esm2022/lib/map/wake-lock-button/index.mjs +2 -0
  324. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +103 -0
  325. package/esm2022/lib/map/zoom-button/index.mjs +2 -0
  326. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +35 -0
  327. package/esm2022/lib/measure/index.mjs +3 -0
  328. package/esm2022/lib/measure/measure.module.mjs +20 -0
  329. package/esm2022/lib/measure/measurer/index.mjs +6 -0
  330. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +40 -0
  331. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +38 -0
  332. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +143 -0
  333. package/esm2022/lib/measure/measurer/measurer.component.mjs +948 -0
  334. package/esm2022/lib/measure/measurer/measurer.module.mjs +20 -0
  335. package/esm2022/lib/measure/shared/index.mjs +4 -0
  336. package/esm2022/lib/measure/shared/measure.enum.mjs +37 -0
  337. package/esm2022/lib/measure/shared/measure.interfaces.mjs +2 -0
  338. package/esm2022/lib/measure/shared/measure.utils.mjs +497 -0
  339. package/esm2022/lib/metadata/index.mjs +4 -0
  340. package/esm2022/lib/metadata/metadata-button/index.mjs +2 -0
  341. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +96 -0
  342. package/esm2022/lib/metadata/metadata.module.mjs +29 -0
  343. package/esm2022/lib/metadata/shared/index.mjs +3 -0
  344. package/esm2022/lib/metadata/shared/metadata.interface.mjs +2 -0
  345. package/esm2022/lib/metadata/shared/metadata.service.mjs +18 -0
  346. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +130 -0
  347. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +6 -0
  348. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +2 -0
  349. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +172 -0
  350. package/esm2022/lib/offline/geoDB/index.mjs +5 -0
  351. package/esm2022/lib/offline/index.mjs +6 -0
  352. package/esm2022/lib/offline/layerDB/index.mjs +3 -0
  353. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +2 -0
  354. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +83 -0
  355. package/esm2022/lib/offline/offline.interface.mjs +2 -0
  356. package/esm2022/lib/offline/offline.provider.mjs +50 -0
  357. package/esm2022/lib/offline/shared/geo-network.service.mjs +79 -0
  358. package/esm2022/lib/offline/shared/index.mjs +2 -0
  359. package/esm2022/lib/overlay/index.mjs +2 -0
  360. package/esm2022/lib/overlay/shared/index.mjs +4 -0
  361. package/esm2022/lib/overlay/shared/overlay.enum.mjs +8 -0
  362. package/esm2022/lib/overlay/shared/overlay.mjs +139 -0
  363. package/esm2022/lib/overlay/shared/overlay.utils.mjs +17 -0
  364. package/esm2022/lib/print/index.mjs +4 -0
  365. package/esm2022/lib/print/print/print.component.mjs +116 -0
  366. package/esm2022/lib/print/print-form/index.mjs +2 -0
  367. package/esm2022/lib/print/print-form/print-form.component.mjs +320 -0
  368. package/esm2022/lib/print/print.module.mjs +20 -0
  369. package/esm2022/lib/print/shared/geopdf.mjs +68 -0
  370. package/esm2022/lib/print/shared/index.mjs +5 -0
  371. package/esm2022/lib/print/shared/print.interface.mjs +2 -0
  372. package/esm2022/lib/print/shared/print.service.mjs +1136 -0
  373. package/esm2022/lib/print/shared/print.type.mjs +30 -0
  374. package/esm2022/lib/query/index.mjs +2 -0
  375. package/esm2022/lib/query/query.module.mjs +27 -0
  376. package/esm2022/lib/query/shared/index.mjs +8 -0
  377. package/esm2022/lib/query/shared/query-search-source.mjs +35 -0
  378. package/esm2022/lib/query/shared/query-search-source.providers.mjs +22 -0
  379. package/esm2022/lib/query/shared/query.directive.mjs +290 -0
  380. package/esm2022/lib/query/shared/query.enums.mjs +32 -0
  381. package/esm2022/lib/query/shared/query.interfaces.mjs +2 -0
  382. package/esm2022/lib/query/shared/query.service.mjs +753 -0
  383. package/esm2022/lib/query/shared/query.utils.mjs +45 -0
  384. package/esm2022/lib/search/index.mjs +10 -0
  385. package/esm2022/lib/search/search-bar/search-bar.component.mjs +483 -0
  386. package/esm2022/lib/search/search-bar/search-bar.module.mjs +19 -0
  387. package/esm2022/lib/search/search-results/index.mjs +5 -0
  388. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +101 -0
  389. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +433 -0
  390. package/esm2022/lib/search/search-results/search-results-item.component.mjs +119 -0
  391. package/esm2022/lib/search/search-results/search-results.component.mjs +297 -0
  392. package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
  393. package/esm2022/lib/search/search-results/search-results.module.mjs +20 -0
  394. package/esm2022/lib/search/search-selector/search-selector.component.mjs +118 -0
  395. package/esm2022/lib/search/search-selector/search-selector.module.mjs +19 -0
  396. package/esm2022/lib/search/search-settings/search-settings.component.mjs +264 -0
  397. package/esm2022/lib/search/search-settings/search-settings.module.mjs +19 -0
  398. package/esm2022/lib/search/search.module.mjs +77 -0
  399. package/esm2022/lib/search/shared/index.mjs +10 -0
  400. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +328 -0
  401. package/esm2022/lib/search/shared/search-source-service.providers.mjs +20 -0
  402. package/esm2022/lib/search/shared/search-source.service.mjs +56 -0
  403. package/esm2022/lib/search/shared/search.enums.mjs +4 -0
  404. package/esm2022/lib/search/shared/search.interfaces.mjs +2 -0
  405. package/esm2022/lib/search/shared/search.provider.mjs +20 -0
  406. package/esm2022/lib/search/shared/search.service.mjs +149 -0
  407. package/esm2022/lib/search/shared/search.utils.mjs +92 -0
  408. package/esm2022/lib/search/shared/sources/cadastre.mjs +142 -0
  409. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +32 -0
  410. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +2 -0
  411. package/esm2022/lib/search/shared/sources/coordinates.mjs +168 -0
  412. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +52 -0
  413. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
  414. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +2 -0
  415. package/esm2022/lib/search/shared/sources/icherche.mjs +816 -0
  416. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +87 -0
  417. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +2 -0
  418. package/esm2022/lib/search/shared/sources/ilayer.mjs +339 -0
  419. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +58 -0
  420. package/esm2022/lib/search/shared/sources/index.mjs +23 -0
  421. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +2 -0
  422. package/esm2022/lib/search/shared/sources/nominatim.mjs +263 -0
  423. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +31 -0
  424. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -0
  425. package/esm2022/lib/search/shared/sources/source.mjs +221 -0
  426. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +2 -0
  427. package/esm2022/lib/search/shared/sources/storedqueries.mjs +454 -0
  428. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +56 -0
  429. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
  430. package/esm2022/lib/search/shared/sources/workspace.mjs +192 -0
  431. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +31 -0
  432. package/esm2022/lib/style/index.mjs +5 -0
  433. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +360 -0
  434. package/esm2022/lib/style/shared/datasource/index.mjs +2 -0
  435. package/esm2022/lib/style/shared/feature/feature-style.mjs +162 -0
  436. package/esm2022/lib/style/shared/feature/index.mjs +2 -0
  437. package/esm2022/lib/style/shared/font.enum.mjs +17 -0
  438. package/esm2022/lib/style/shared/index.mjs +5 -0
  439. package/esm2022/lib/style/shared/overlay/index.mjs +3 -0
  440. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +39 -0
  441. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
  442. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +78 -0
  443. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +27 -0
  444. package/esm2022/lib/style/shared/vector/index.mjs +4 -0
  445. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +2 -0
  446. package/esm2022/lib/style/style-list/index.mjs +5 -0
  447. package/esm2022/lib/style/style-list/style-list.interface.mjs +2 -0
  448. package/esm2022/lib/style/style-list/style-list.module.mjs +23 -0
  449. package/esm2022/lib/style/style-list/style-list.provider.mjs +21 -0
  450. package/esm2022/lib/style/style-list/style-list.service.mjs +52 -0
  451. package/esm2022/lib/style/style-modal/drawing/index.mjs +2 -0
  452. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +193 -0
  453. package/esm2022/lib/style/style-modal/index.mjs +5 -0
  454. package/esm2022/lib/style/style-modal/layer/index.mjs +2 -0
  455. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +142 -0
  456. package/esm2022/lib/style/style-modal/layer-button/index.mjs +2 -0
  457. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
  458. package/esm2022/lib/style/style-modal/shared/index.mjs +2 -0
  459. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
  460. package/esm2022/lib/style/style-service/draw-style.service.mjs +255 -0
  461. package/esm2022/lib/style/style-service/index.mjs +3 -0
  462. package/esm2022/lib/style/style-service/style.service.mjs +393 -0
  463. package/esm2022/lib/style/style.module.mjs +46 -0
  464. package/esm2022/lib/toast/index.mjs +2 -0
  465. package/esm2022/lib/toast/toast.component.mjs +99 -0
  466. package/esm2022/lib/toast/toast.module.mjs +24 -0
  467. package/esm2022/lib/utils/googleLinks.mjs +13 -0
  468. package/esm2022/lib/utils/id-generator.mjs +112 -0
  469. package/esm2022/lib/utils/index.mjs +5 -0
  470. package/esm2022/lib/utils/osmLinks.mjs +9 -0
  471. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +3 -0
  472. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +2 -0
  473. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +64 -0
  474. package/esm2022/lib/wkt/index.mjs +2 -0
  475. package/esm2022/lib/wkt/shared/index.mjs +2 -0
  476. package/esm2022/lib/wkt/shared/wkt.service.mjs +235 -0
  477. package/esm2022/lib/wkt/wkt.module.mjs +25 -0
  478. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +36 -0
  479. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +19 -0
  480. package/esm2022/lib/workspace/confirmation-popup/index.mjs +3 -0
  481. package/esm2022/lib/workspace/index.mjs +8 -0
  482. package/esm2022/lib/workspace/shared/edition-workspace.mjs +301 -0
  483. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +720 -0
  484. package/esm2022/lib/workspace/shared/feature-workspace.mjs +41 -0
  485. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +113 -0
  486. package/esm2022/lib/workspace/shared/index.mjs +8 -0
  487. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +41 -0
  488. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +121 -0
  489. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +248 -0
  490. package/esm2022/lib/workspace/shared/workspace.utils.mjs +188 -0
  491. package/esm2022/lib/workspace/widgets/index.mjs +4 -0
  492. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +48 -0
  493. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +19 -0
  494. package/esm2022/lib/workspace/widgets/widgets.mjs +15 -0
  495. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +172 -0
  496. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +19 -0
  497. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +137 -0
  498. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +19 -0
  499. package/esm2022/lib/workspace/workspace.module.mjs +32 -0
  500. package/esm2022/public_api.mjs +56 -0
  501. package/fesm2022/igo2-geo.mjs +717 -691
  502. package/fesm2022/igo2-geo.mjs.map +1 -1
  503. package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
  504. package/lib/directions/shared/directions.service.d.ts +0 -1
  505. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  506. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  507. package/lib/style/style-list/style-list.provider.d.ts +8 -1
  508. package/lib/style/style-list/style-list.service.d.ts +1 -1
  509. package/package.json +16 -14
  510. package/src/lib/layer/layer-list/layer-list.theme.scss +1 -2
  511. package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
  512. package/src/style/style.scss +1 -1
@@ -0,0 +1,56 @@
1
+ import { FeatureDataSource } from './feature-datasource';
2
+ export class WebSocketDataSource extends FeatureDataSource {
3
+ ws;
4
+ createOlSource() {
5
+ this.createWebSocket();
6
+ this.options.format = this.getSourceFormatFromOptions(this.options);
7
+ return super.createOlSource();
8
+ }
9
+ createWebSocket() {
10
+ this.ws = new WebSocket(this.options.url);
11
+ this.ws.onmessage = this.onMessage.bind(this);
12
+ if (this.options.onclose) {
13
+ this.ws.onclose = this.onClose.bind(this);
14
+ }
15
+ if (this.options.onerror) {
16
+ this.ws.onerror = this.onError.bind(this);
17
+ }
18
+ if (this.options.onopen) {
19
+ this.ws.onopen = this.onOpen.bind(this);
20
+ }
21
+ }
22
+ onMessage(event) {
23
+ const featureAdded = this.options.format.readFeature(event.data);
24
+ switch (this.options.onmessage) {
25
+ case 'update': {
26
+ // ol don't add if same ID
27
+ const featureToRemove = this.ol.getFeatureById(featureAdded.getId());
28
+ if (featureToRemove) {
29
+ this.ol.removeFeature(featureToRemove);
30
+ }
31
+ this.ol.addFeature(featureAdded);
32
+ break;
33
+ }
34
+ case 'delete':
35
+ this.ol.clear(true);
36
+ this.ol.addFeature(featureAdded);
37
+ break;
38
+ case 'add':
39
+ default:
40
+ this.ol.addFeature(featureAdded);
41
+ }
42
+ }
43
+ onClose() {
44
+ // thrown message to user
45
+ }
46
+ onError() {
47
+ // thrown message to user
48
+ }
49
+ onOpen() {
50
+ // thrown message to user ?
51
+ }
52
+ onUnwatch() {
53
+ this.ws.close();
54
+ }
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93ZWJzb2NrZXQtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBQ2pELEVBQUUsQ0FBWTtJQUdYLGNBQWM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSztRQUNiLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDbEQsS0FBSyxDQUFDLElBQUksQ0FDRSxDQUFDO1FBRWYsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQy9CLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCwwQkFBMEI7Z0JBQzFCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakMsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1IsS0FBSyxLQUFLLENBQUM7WUFDWDtnQkFDRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCx5QkFBeUI7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCx5QkFBeUI7SUFDM0IsQ0FBQztJQUVELE1BQU07UUFDSiwyQkFBMkI7SUFDN0IsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgb2xTb3VyY2VWZWN0b3IgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5cbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi9mZWF0dXJlLWRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgV2ViU29ja2V0RGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3dlYnNvY2tldC1kYXRhc291cmNlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXREYXRhU291cmNlIGV4dGVuZHMgRmVhdHVyZURhdGFTb3VyY2Uge1xuICBwdWJsaWMgd3M6IFdlYlNvY2tldDtcbiAgZGVjbGFyZSBwdWJsaWMgb3B0aW9uczogV2ViU29ja2V0RGF0YVNvdXJjZU9wdGlvbnM7XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU9sU291cmNlKCk6IG9sU291cmNlVmVjdG9yIHtcbiAgICB0aGlzLmNyZWF0ZVdlYlNvY2tldCgpO1xuICAgIHRoaXMub3B0aW9ucy5mb3JtYXQgPSB0aGlzLmdldFNvdXJjZUZvcm1hdEZyb21PcHRpb25zKHRoaXMub3B0aW9ucyk7XG4gICAgcmV0dXJuIHN1cGVyLmNyZWF0ZU9sU291cmNlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdlYlNvY2tldCgpIHtcbiAgICB0aGlzLndzID0gbmV3IFdlYlNvY2tldCh0aGlzLm9wdGlvbnMudXJsKTtcbiAgICB0aGlzLndzLm9ubWVzc2FnZSA9IHRoaXMub25NZXNzYWdlLmJpbmQodGhpcyk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm9uY2xvc2UpIHtcbiAgICAgIHRoaXMud3Mub25jbG9zZSA9IHRoaXMub25DbG9zZS5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMub25lcnJvcikge1xuICAgICAgdGhpcy53cy5vbmVycm9yID0gdGhpcy5vbkVycm9yLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vbm9wZW4pIHtcbiAgICAgIHRoaXMud3Mub25vcGVuID0gdGhpcy5vbk9wZW4uYmluZCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBjb25zdCBmZWF0dXJlQWRkZWQgPSB0aGlzLm9wdGlvbnMuZm9ybWF0LnJlYWRGZWF0dXJlKFxuICAgICAgZXZlbnQuZGF0YVxuICAgICkgYXMgb2xGZWF0dXJlO1xuXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMub25tZXNzYWdlKSB7XG4gICAgICBjYXNlICd1cGRhdGUnOiB7XG4gICAgICAgIC8vIG9sIGRvbid0IGFkZCBpZiBzYW1lIElEXG4gICAgICAgIGNvbnN0IGZlYXR1cmVUb1JlbW92ZSA9IHRoaXMub2wuZ2V0RmVhdHVyZUJ5SWQoZmVhdHVyZUFkZGVkLmdldElkKCkpO1xuICAgICAgICBpZiAoZmVhdHVyZVRvUmVtb3ZlKSB7XG4gICAgICAgICAgdGhpcy5vbC5yZW1vdmVGZWF0dXJlKGZlYXR1cmVUb1JlbW92ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbC5hZGRGZWF0dXJlKGZlYXR1cmVBZGRlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5vbC5jbGVhcih0cnVlKTtcbiAgICAgICAgdGhpcy5vbC5hZGRGZWF0dXJlKGZlYXR1cmVBZGRlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMub2wuYWRkRmVhdHVyZShmZWF0dXJlQWRkZWQpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgLy8gdGhyb3duIG1lc3NhZ2UgdG8gdXNlclxuICB9XG5cbiAgb25FcnJvcigpIHtcbiAgICAvLyB0aHJvd24gbWVzc2FnZSB0byB1c2VyXG4gIH1cblxuICBvbk9wZW4oKSB7XG4gICAgLy8gdGhyb3duIG1lc3NhZ2UgdG8gdXNlciA/XG4gIH1cblxuICBwdWJsaWMgb25VbndhdGNoKCkge1xuICAgIHRoaXMud3MuY2xvc2UoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9nY0ZpbHRlcnNPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi9mZWF0dXJlLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBXRlNEYXRhU291cmNlT3B0aW9ucyBleHRlbmRzIEZlYXR1cmVEYXRhU291cmNlT3B0aW9ucyB7XG4gIC8vIHR5cGU/OiAnd2ZzJztcbiAgcGFyYW1zOiBXRlNEYXRhU291cmNlT3B0aW9uc1BhcmFtczsgLy8gVXNlZCBieSB1c2VyXG4gIHBhcmFtc1dGUz86IFdGU0RhdGFTb3VyY2VPcHRpb25zUGFyYW1zOyAvLyBVc2VkIGJ5IGNvZGVcbiAgdXJsV2ZzPzogc3RyaW5nOyAvLyBVc2VkIGJ5IGNvZGVcbiAgb2djRmlsdGVycz86IE9nY0ZpbHRlcnNPcHRpb25zO1xufVxuXG4vLyBUT0RPOiBBcmUgdGhvc2UgV0ZTIHByb3RvY29sIHBhcmFtcyBvciBzb21ldGhpbmcgZWxzZT8gVGhpcyBpcyBub3QgY2xlYXJcbmV4cG9ydCBpbnRlcmZhY2UgV0ZTRGF0YVNvdXJjZU9wdGlvbnNQYXJhbXMge1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBmZWF0dXJlVHlwZXM6IHN0cmluZztcbiAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZztcbiAgbWF4RmVhdHVyZXM/OiBudW1iZXI7XG4gIG91dHB1dEZvcm1hdDogc3RyaW5nO1xuICBvdXRwdXRGb3JtYXREb3dubG9hZD86IHN0cmluZztcbiAgc3JzTmFtZT86IHN0cmluZztcbiAgeG1sRmlsdGVyPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,137 @@
1
+ import * as OlLoadingStrategy from 'ol/loadingstrategy';
2
+ import * as OlProj from 'ol/proj';
3
+ import olProjection from 'ol/proj/Projection';
4
+ import olSourceVector from 'ol/source/Vector';
5
+ import { catchError, map } from 'rxjs';
6
+ import { OgcFilterWriter } from '../../../filter/shared/ogc-filter';
7
+ import { DataSource } from './datasource';
8
+ import { buildUrl, checkWfsParams, defaultFieldNameGeometry, defaultMaxFeatures, getFormatFromOptions } from './wms-wfs.utils';
9
+ export class WFSDataSource extends DataSource {
10
+ options;
11
+ wfsService;
12
+ authInterceptor;
13
+ set ogcFilters(value) {
14
+ this.options.ogcFilters = value;
15
+ }
16
+ get ogcFilters() {
17
+ return this.options.ogcFilters;
18
+ }
19
+ get saveableOptions() {
20
+ const baseOptions = super.saveableOptions;
21
+ return {
22
+ ...baseOptions,
23
+ params: this.options.params
24
+ };
25
+ }
26
+ constructor(options, wfsService, authInterceptor) {
27
+ super(checkWfsParams(options, 'wfs'));
28
+ this.options = options;
29
+ this.wfsService = wfsService;
30
+ this.authInterceptor = authInterceptor;
31
+ const ogcFilters = this.options
32
+ .ogcFilters;
33
+ const fieldNameGeometry = this.options.paramsWFS.fieldNameGeometry || defaultFieldNameGeometry;
34
+ const ogcFilterWriter = new OgcFilterWriter();
35
+ this.options.ogcFilters =
36
+ ogcFilterWriter.defineOgcFiltersDefaultOptions(ogcFilters, fieldNameGeometry);
37
+ if (this.options.ogcFilters.enabled &&
38
+ this.options.ogcFilters.editable &&
39
+ (options.sourceFields || []).filter((sf) => !sf.values).length > 0) {
40
+ this.wfsService.getSourceFieldsFromWFS(this.options);
41
+ }
42
+ if (ogcFilters?.pushButtons) {
43
+ ogcFilters.pushButtons.selectorType = 'pushButton';
44
+ }
45
+ if (ogcFilters?.checkboxes) {
46
+ ogcFilters.checkboxes.selectorType = 'checkbox';
47
+ }
48
+ if (ogcFilters?.radioButtons) {
49
+ ogcFilters.radioButtons.selectorType = 'radioButton';
50
+ }
51
+ if (ogcFilters?.select) {
52
+ ogcFilters.select.selectorType = 'select';
53
+ }
54
+ if (ogcFilters?.autocomplete) {
55
+ ogcFilters.autocomplete.selectorType = 'autocomplete';
56
+ }
57
+ this.setOgcFilters(this.options.ogcFilters, true);
58
+ }
59
+ createOlSource() {
60
+ const vectorSource = new olSourceVector({
61
+ format: getFormatFromOptions(this.options),
62
+ strategy: OlLoadingStrategy.bbox
63
+ });
64
+ return vectorSource;
65
+ }
66
+ setOgcFilters(ogcFilters, triggerEvent = false) {
67
+ this.ogcFilters = ogcFilters;
68
+ if (triggerEvent) {
69
+ this.ol.notify('ogcFilters', this.ogcFilters);
70
+ }
71
+ }
72
+ onUnwatch() {
73
+ // empty
74
+ }
75
+ fetchFeatures({ extent, projection, httpClient }) {
76
+ const paramsWFS = this.options.paramsWFS;
77
+ const wfsProj = paramsWFS.srsName
78
+ ? new olProjection({ code: paramsWFS.srsName })
79
+ : projection;
80
+ const currentExtent = extent
81
+ ? OlProj.transformExtent(extent, projection, wfsProj)
82
+ : undefined;
83
+ const ogcFilters = this.ogcFilters;
84
+ paramsWFS.srsName = paramsWFS.srsName || projection.getCode();
85
+ let url = buildUrl(this.options, currentExtent, wfsProj, ogcFilters);
86
+ // Exportation want to fetch without extent/bbox restrictions
87
+ if (!extent && url.includes('bbox')) {
88
+ const [baseUrl, params] = url.split('?');
89
+ const paramSegments = params.split('&');
90
+ const paramsWithoutBbox = paramSegments.filter((segment) => !segment.includes('bbox'));
91
+ url = `${baseUrl}?${paramsWithoutBbox.join('&')}`;
92
+ }
93
+ let startIndex = 0;
94
+ if (paramsWFS.version === '2.0.0' &&
95
+ paramsWFS.maxFeatures > defaultMaxFeatures) {
96
+ const nbOfFeature = 1000;
97
+ while (startIndex < paramsWFS.maxFeatures) {
98
+ let alteredUrl = url.replace('count=' + paramsWFS.maxFeatures, 'count=' + nbOfFeature);
99
+ alteredUrl = alteredUrl.replace('startIndex=0', '0');
100
+ alteredUrl += '&startIndex=' + startIndex;
101
+ alteredUrl.replace(/&&/g, '&');
102
+ return this._fetchFeatures(wfsProj, alteredUrl, {
103
+ extent: currentExtent,
104
+ projection,
105
+ httpClient
106
+ }).pipe(map((res) => {
107
+ startIndex += nbOfFeature;
108
+ return res;
109
+ }));
110
+ }
111
+ }
112
+ else {
113
+ return this._fetchFeatures(wfsProj, url, {
114
+ extent: currentExtent,
115
+ projection,
116
+ httpClient
117
+ });
118
+ }
119
+ }
120
+ _fetchFeatures(featureProjection, url, { extent, projection, httpClient }) {
121
+ return httpClient.get(url, { responseType: 'text' }).pipe(map((response) => {
122
+ return this._parseXmlFeatures(response, projection, featureProjection);
123
+ }), catchError((e) => {
124
+ if (extent)
125
+ this.ol.removeLoadedExtent(extent);
126
+ throw e;
127
+ }));
128
+ }
129
+ _parseXmlFeatures(xml, dataProjection, featureProjection) {
130
+ const features = this.ol.getFormat().readFeatures(xml, {
131
+ dataProjection,
132
+ featureProjection
133
+ });
134
+ return features;
135
+ }
136
+ }
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLWRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93ZnMtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEtBQUssaUJBQWlCLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxFQUFjLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBS3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHMUMsT0FBTyxFQUNMLFFBQVEsRUFDUixjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDckIsTUFBTSxpQkFBaUIsQ0FBQztBQVF6QixNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFtQmxDO0lBQ0c7SUFDRjtJQWxCVixJQUFJLFVBQVUsQ0FBQyxLQUF3QjtRQUNwQyxJQUFJLENBQUMsT0FBMEMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFRLElBQUksQ0FBQyxPQUEwQyxDQUFDLFVBQVUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDMUMsT0FBTztZQUNMLEdBQUcsV0FBVztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxZ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LElBQUksQ0FDdkQsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLE1BQU07Z0JBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQ3ZCLEdBQVcsRUFDWCxjQUE0QixFQUM1QixpQkFBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1lBQ3JELGNBQWM7WUFDZCxpQkFBaUI7U0FDbEIsQ0FBNEIsQ0FBQztRQUM5QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHsgRXh0ZW50IH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgKiBhcyBPbExvYWRpbmdTdHJhdGVneSBmcm9tICdvbC9sb2FkaW5nc3RyYXRlZ3knO1xuaW1wb3J0ICogYXMgT2xQcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuaW1wb3J0IG9sU291cmNlVmVjdG9yIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT2djRmlsdGVyV3JpdGVyIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyJztcbmltcG9ydCB7XG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgT2djRmlsdGVyc09wdGlvbnNcbn0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi9kYXRhc291cmNlJztcbmltcG9ydCB7IFdGU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi93ZnMtZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV0ZTU2VydmljZSB9IGZyb20gJy4vd2ZzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgYnVpbGRVcmwsXG4gIGNoZWNrV2ZzUGFyYW1zLFxuICBkZWZhdWx0RmllbGROYW1lR2VvbWV0cnksXG4gIGRlZmF1bHRNYXhGZWF0dXJlcyxcbiAgZ2V0Rm9ybWF0RnJvbU9wdGlvbnNcbn0gZnJvbSAnLi93bXMtd2ZzLnV0aWxzJztcblxuaW50ZXJmYWNlIEZldGNoRmVhdHVyZU9wdGlvbnMge1xuICBleHRlbnQ6IEV4dGVudDtcbiAgcHJvamVjdGlvbjogb2xQcm9qZWN0aW9uO1xuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xufVxuXG5leHBvcnQgY2xhc3MgV0ZTRGF0YVNvdXJjZSBleHRlbmRzIERhdGFTb3VyY2Uge1xuICBkZWNsYXJlIHB1YmxpYyBvbDogb2xTb3VyY2VWZWN0b3I7XG5cbiAgc2V0IG9nY0ZpbHRlcnModmFsdWU6IE9nY0ZpbHRlcnNPcHRpb25zKSB7XG4gICAgKHRoaXMub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnMgPSB2YWx1ZTtcbiAgfVxuICBnZXQgb2djRmlsdGVycygpOiBPZ2NGaWx0ZXJzT3B0aW9ucyB7XG4gICAgcmV0dXJuICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzO1xuICB9XG5cbiAgZ2V0IHNhdmVhYmxlT3B0aW9ucygpOiBQYXJ0aWFsPFdGU0RhdGFTb3VyY2VPcHRpb25zPiB7XG4gICAgY29uc3QgYmFzZU9wdGlvbnMgPSBzdXBlci5zYXZlYWJsZU9wdGlvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2VPcHRpb25zLFxuICAgICAgcGFyYW1zOiB0aGlzLm9wdGlvbnMucGFyYW1zXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyxcbiAgICBwcm90ZWN0ZWQgd2ZzU2VydmljZTogV0ZTU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhJbnRlcmNlcHRvcj86IEF1dGhJbnRlcmNlcHRvclxuICApIHtcbiAgICBzdXBlcihjaGVja1dmc1BhcmFtcyhvcHRpb25zLCAnd2ZzJykpO1xuXG4gICAgY29uc3Qgb2djRmlsdGVycyA9ICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKVxuICAgICAgLm9nY0ZpbHRlcnM7XG4gICAgY29uc3QgZmllbGROYW1lR2VvbWV0cnkgPVxuICAgICAgdGhpcy5vcHRpb25zLnBhcmFtc1dGUy5maWVsZE5hbWVHZW9tZXRyeSB8fCBkZWZhdWx0RmllbGROYW1lR2VvbWV0cnk7XG4gICAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xuICAgICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzID1cbiAgICAgIG9nY0ZpbHRlcldyaXRlci5kZWZpbmVPZ2NGaWx0ZXJzRGVmYXVsdE9wdGlvbnMoXG4gICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5XG4gICAgICApO1xuICAgIGlmIChcbiAgICAgICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzLmVuYWJsZWQgJiZcbiAgICAgICh0aGlzLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzLmVkaXRhYmxlICYmXG4gICAgICAob3B0aW9ucy5zb3VyY2VGaWVsZHMgfHwgW10pLmZpbHRlcigoc2YpID0+ICFzZi52YWx1ZXMpLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMud2ZzU2VydmljZS5nZXRTb3VyY2VGaWVsZHNGcm9tV0ZTKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKG9nY0ZpbHRlcnM/LnB1c2hCdXR0b25zKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zLnNlbGVjdG9yVHlwZSA9ICdwdXNoQnV0dG9uJztcbiAgICB9XG4gICAgaWYgKG9nY0ZpbHRlcnM/LmNoZWNrYm94ZXMpIHtcbiAgICAgIG9nY0ZpbHRlcnMuY2hlY2tib3hlcy5zZWxlY3RvclR5cGUgPSAnY2hlY2tib3gnO1xuICAgIH1cbiAgICBpZiAob2djRmlsdGVycz8ucmFkaW9CdXR0b25zKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucy5zZWxlY3RvclR5cGUgPSAncmFkaW9CdXR0b24nO1xuICAgIH1cbiAgICBpZiAob2djRmlsdGVycz8uc2VsZWN0KSB7XG4gICAgICBvZ2NGaWx0ZXJzLnNlbGVjdC5zZWxlY3RvclR5cGUgPSAnc2VsZWN0JztcbiAgICB9XG4gICAgaWYgKG9nY0ZpbHRlcnM/LmF1dG9jb21wbGV0ZSkge1xuICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUuc2VsZWN0b3JUeXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRPZ2NGaWx0ZXJzKFxuICAgICAgKHRoaXMub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnMsXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVPbFNvdXJjZSgpOiBvbFNvdXJjZVZlY3RvciB7XG4gICAgY29uc3QgdmVjdG9yU291cmNlID0gbmV3IG9sU291cmNlVmVjdG9yKHtcbiAgICAgIGZvcm1hdDogZ2V0Rm9ybWF0RnJvbU9wdGlvbnModGhpcy5vcHRpb25zKSxcbiAgICAgIHN0cmF0ZWd5OiBPbExvYWRpbmdTdHJhdGVneS5iYm94XG4gICAgfSk7XG4gICAgcmV0dXJuIHZlY3RvclNvdXJjZTtcbiAgfVxuXG4gIHNldE9nY0ZpbHRlcnMob2djRmlsdGVyczogT2djRmlsdGVyc09wdGlvbnMsIHRyaWdnZXJFdmVudCA9IGZhbHNlKSB7XG4gICAgdGhpcy5vZ2NGaWx0ZXJzID0gb2djRmlsdGVycztcbiAgICBpZiAodHJpZ2dlckV2ZW50KSB7XG4gICAgICB0aGlzLm9sLm5vdGlmeSgnb2djRmlsdGVycycsIHRoaXMub2djRmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVW53YXRjaCgpIHtcbiAgICAvLyBlbXB0eVxuICB9XG5cbiAgZmV0Y2hGZWF0dXJlcyh7XG4gICAgZXh0ZW50LFxuICAgIHByb2plY3Rpb24sXG4gICAgaHR0cENsaWVudFxuICB9OiBGZXRjaEZlYXR1cmVPcHRpb25zKTogT2JzZXJ2YWJsZTxPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXT4ge1xuICAgIGNvbnN0IHBhcmFtc1dGUyA9IHRoaXMub3B0aW9ucy5wYXJhbXNXRlM7XG4gICAgY29uc3Qgd2ZzUHJvaiA9IHBhcmFtc1dGUy5zcnNOYW1lXG4gICAgICA/IG5ldyBvbFByb2plY3Rpb24oeyBjb2RlOiBwYXJhbXNXRlMuc3JzTmFtZSB9KVxuICAgICAgOiBwcm9qZWN0aW9uO1xuXG4gICAgY29uc3QgY3VycmVudEV4dGVudCA9IGV4dGVudFxuICAgICAgPyBPbFByb2oudHJhbnNmb3JtRXh0ZW50KGV4dGVudCwgcHJvamVjdGlvbiwgd2ZzUHJvailcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9nY0ZpbHRlcnMgPSB0aGlzLm9nY0ZpbHRlcnM7XG5cbiAgICBwYXJhbXNXRlMuc3JzTmFtZSA9IHBhcmFtc1dGUy5zcnNOYW1lIHx8IHByb2plY3Rpb24uZ2V0Q29kZSgpO1xuICAgIGxldCB1cmwgPSBidWlsZFVybCh0aGlzLm9wdGlvbnMsIGN1cnJlbnRFeHRlbnQsIHdmc1Byb2osIG9nY0ZpbHRlcnMpO1xuXG4gICAgLy8gRXhwb3J0YXRpb24gd2FudCB0byBmZXRjaCB3aXRob3V0IGV4dGVudC9iYm94IHJlc3RyaWN0aW9uc1xuICAgIGlmICghZXh0ZW50ICYmIHVybC5pbmNsdWRlcygnYmJveCcpKSB7XG4gICAgICBjb25zdCBbYmFzZVVybCwgcGFyYW1zXSA9IHVybC5zcGxpdCgnPycpO1xuICAgICAgY29uc3QgcGFyYW1TZWdtZW50cyA9IHBhcmFtcy5zcGxpdCgnJicpO1xuICAgICAgY29uc3QgcGFyYW1zV2l0aG91dEJib3ggPSBwYXJhbVNlZ21lbnRzLmZpbHRlcihcbiAgICAgICAgKHNlZ21lbnQpID0+ICFzZWdtZW50LmluY2x1ZGVzKCdiYm94JylcbiAgICAgICk7XG4gICAgICB1cmwgPSBgJHtiYXNlVXJsfT8ke3BhcmFtc1dpdGhvdXRCYm94LmpvaW4oJyYnKX1gO1xuICAgIH1cblxuICAgIGxldCBzdGFydEluZGV4ID0gMDtcbiAgICBpZiAoXG4gICAgICBwYXJhbXNXRlMudmVyc2lvbiA9PT0gJzIuMC4wJyAmJlxuICAgICAgcGFyYW1zV0ZTLm1heEZlYXR1cmVzID4gZGVmYXVsdE1heEZlYXR1cmVzXG4gICAgKSB7XG4gICAgICBjb25zdCBuYk9mRmVhdHVyZSA9IDEwMDA7XG4gICAgICB3aGlsZSAoc3RhcnRJbmRleCA8IHBhcmFtc1dGUy5tYXhGZWF0dXJlcykge1xuICAgICAgICBsZXQgYWx0ZXJlZFVybCA9IHVybC5yZXBsYWNlKFxuICAgICAgICAgICdjb3VudD0nICsgcGFyYW1zV0ZTLm1heEZlYXR1cmVzLFxuICAgICAgICAgICdjb3VudD0nICsgbmJPZkZlYXR1cmVcbiAgICAgICAgKTtcbiAgICAgICAgYWx0ZXJlZFVybCA9IGFsdGVyZWRVcmwucmVwbGFjZSgnc3RhcnRJbmRleD0wJywgJzAnKTtcbiAgICAgICAgYWx0ZXJlZFVybCArPSAnJnN0YXJ0SW5kZXg9JyArIHN0YXJ0SW5kZXg7XG4gICAgICAgIGFsdGVyZWRVcmwucmVwbGFjZSgvJiYvZywgJyYnKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hGZWF0dXJlcyh3ZnNQcm9qLCBhbHRlcmVkVXJsLCB7XG4gICAgICAgICAgZXh0ZW50OiBjdXJyZW50RXh0ZW50LFxuICAgICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgICAgaHR0cENsaWVudFxuICAgICAgICB9KS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgICBzdGFydEluZGV4ICs9IG5iT2ZGZWF0dXJlO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmV0Y2hGZWF0dXJlcyh3ZnNQcm9qLCB1cmwsIHtcbiAgICAgICAgZXh0ZW50OiBjdXJyZW50RXh0ZW50LFxuICAgICAgICBwcm9qZWN0aW9uLFxuICAgICAgICBodHRwQ2xpZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9mZXRjaEZlYXR1cmVzKFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBvbFByb2plY3Rpb24sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBleHRlbnQsIHByb2plY3Rpb24sIGh0dHBDbGllbnQgfTogRmV0Y2hGZWF0dXJlT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdPiB7XG4gICAgcmV0dXJuIGh0dHBDbGllbnQuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VYbWxGZWF0dXJlcyhyZXNwb25zZSwgcHJvamVjdGlvbiwgZmVhdHVyZVByb2plY3Rpb24pO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgIGlmIChleHRlbnQpIHRoaXMub2wucmVtb3ZlTG9hZGVkRXh0ZW50KGV4dGVudCk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZVhtbEZlYXR1cmVzKFxuICAgIHhtbDogc3RyaW5nLFxuICAgIGRhdGFQcm9qZWN0aW9uOiBvbFByb2plY3Rpb24sXG4gICAgZmVhdHVyZVByb2plY3Rpb246IG9sUHJvamVjdGlvblxuICApOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLm9sLmdldEZvcm1hdCgpLnJlYWRGZWF0dXJlcyh4bWwsIHtcbiAgICAgIGRhdGFQcm9qZWN0aW9uLFxuICAgICAgZmVhdHVyZVByb2plY3Rpb25cbiAgICB9KSBhcyBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXTtcbiAgICByZXR1cm4gZmVhdHVyZXM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,170 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { Observable, combineLatest, of } from 'rxjs';
4
+ import { concatMap } from 'rxjs/operators';
5
+ import { DataService } from './data.service';
6
+ import { defaultEpsg, defaultMaxFeatures, formatWFSQueryString, getFormatFromOptions, gmlRegex } from './wms-wfs.utils';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common/http";
9
+ export class WFSService extends DataService {
10
+ http;
11
+ constructor(http) {
12
+ super();
13
+ this.http = http;
14
+ }
15
+ getData() {
16
+ console.log('This is defining a data service.');
17
+ return 'This is defining a data service.';
18
+ }
19
+ getSourceFieldsFromWFS(dataSourceOptions) {
20
+ if (!dataSourceOptions.sourceFields ||
21
+ dataSourceOptions.sourceFields.length === 0) {
22
+ dataSourceOptions.sourceFields = [];
23
+ this.defineFieldAndValuefromWFS(dataSourceOptions).subscribe((getfeatureSourceField) => {
24
+ dataSourceOptions.sourceFields = getfeatureSourceField;
25
+ });
26
+ }
27
+ else {
28
+ this.defineFieldAndValuefromWFS(dataSourceOptions).subscribe((getfeatureSourceField) => {
29
+ dataSourceOptions.sourceFields.forEach((sourcefield) => {
30
+ if (sourcefield.alias === undefined) {
31
+ sourcefield.alias = sourcefield.name; // to allow only a list of sourcefield with names
32
+ }
33
+ if (sourcefield.values === undefined ||
34
+ sourcefield.values.length === 0) {
35
+ sourcefield.values = getfeatureSourceField.find((sf) => sf.name === sourcefield.name).values;
36
+ }
37
+ });
38
+ });
39
+ }
40
+ }
41
+ wfsGetFeature(dataSourceOptions, nb = defaultMaxFeatures, epsgCode = defaultEpsg, propertyName, startIndex = 0, forceDefaultOutputFormat = false) {
42
+ const queryStringValues = formatWFSQueryString(dataSourceOptions, nb, epsgCode, propertyName, startIndex, forceDefaultOutputFormat);
43
+ const baseUrl = queryStringValues.find((f) => f.name === 'getfeature').value;
44
+ const outputFormat = dataSourceOptions.paramsWFS.outputFormat;
45
+ if (forceDefaultOutputFormat ||
46
+ gmlRegex.test(outputFormat) ||
47
+ !outputFormat) {
48
+ return this.http.get(baseUrl, { responseType: 'text' });
49
+ }
50
+ else {
51
+ return this.http.get(baseUrl);
52
+ }
53
+ }
54
+ defineFieldAndValuefromWFS(dataSourceOptions) {
55
+ return new Observable((d) => {
56
+ const sourceFields = [];
57
+ let fieldList;
58
+ let fieldListWoGeom;
59
+ let fieldListWoGeomStr;
60
+ let effectiveOlFormats;
61
+ const olFormats = getFormatFromOptions(dataSourceOptions);
62
+ const gmlDataSourceOptions = JSON.parse(JSON.stringify(dataSourceOptions));
63
+ delete gmlDataSourceOptions.paramsWFS.outputFormat;
64
+ delete gmlDataSourceOptions.formatOptions;
65
+ effectiveOlFormats = getFormatFromOptions(gmlDataSourceOptions);
66
+ let sourceFieldsToRetrieveValues = dataSourceOptions.sourceFields
67
+ ?.filter((f) => !f.values)
68
+ .map((f) => f.name);
69
+ // Validate if the service manage no outputformat (wfs 1.0.0 and GML is the default return)
70
+ this.wfsGetFeature(dataSourceOptions, 1, undefined, undefined, 0, true)
71
+ .pipe(concatMap((res) => String(res).toLowerCase().includes('exception')
72
+ ? of(false)
73
+ : of(true)), concatMap((allowGml) => {
74
+ // If the service return GML (return no exception)
75
+ return this.wfsGetFeature(dataSourceOptions, 1).pipe(concatMap((firstFeature) => {
76
+ const features = olFormats.readFeatures(firstFeature);
77
+ fieldList = features[0].getKeys();
78
+ if (dataSourceOptions.sourceFields ||
79
+ dataSourceOptions.sourceFields.length === 0) {
80
+ sourceFieldsToRetrieveValues = fieldList;
81
+ }
82
+ fieldListWoGeom = fieldList.filter((field) => sourceFieldsToRetrieveValues.includes(field) &&
83
+ field !== features[0].getGeometryName() &&
84
+ !field.match(/boundedby/gi));
85
+ fieldListWoGeomStr = fieldListWoGeom.join(',');
86
+ const processingArray = [];
87
+ let startIndex = 0;
88
+ // If the service do not allow gml return, dice the call in multiple
89
+ // calls by increment of chunkSize with the original outputFormat
90
+ if (!allowGml &&
91
+ dataSourceOptions.paramsWFS.version === '2.0.0' &&
92
+ dataSourceOptions.paramsWFS.maxFeatures > defaultMaxFeatures) {
93
+ const chunkSize = 1000;
94
+ while (startIndex < dataSourceOptions.paramsWFS.maxFeatures) {
95
+ processingArray.push(this.wfsGetFeature(dataSourceOptions, chunkSize, dataSourceOptions.paramsWFS.srsName, fieldListWoGeomStr, startIndex));
96
+ startIndex += chunkSize;
97
+ }
98
+ effectiveOlFormats = olFormats;
99
+ }
100
+ else {
101
+ processingArray.push(this.wfsGetFeature(dataSourceOptions, dataSourceOptions.paramsWFS.maxFeatures ||
102
+ defaultMaxFeatures, dataSourceOptions.paramsWFS.srsName, fieldListWoGeomStr, 0, true));
103
+ }
104
+ return combineLatest(processingArray);
105
+ }));
106
+ }))
107
+ .subscribe((results) => {
108
+ let mfeatures = [];
109
+ results.map((result) => {
110
+ const loopFeatures = effectiveOlFormats.readFeatures(result);
111
+ mfeatures = mfeatures.concat(loopFeatures);
112
+ });
113
+ this.built_properties_value(mfeatures).forEach((element) => {
114
+ sourceFields.push(element);
115
+ });
116
+ d.next(sourceFields);
117
+ d.complete();
118
+ });
119
+ });
120
+ }
121
+ built_properties_value(features) {
122
+ if (features.length === 0) {
123
+ return [];
124
+ }
125
+ const kv = Object.assign({}, features[0].getProperties());
126
+ delete kv[features[0].getGeometryName()];
127
+ delete kv.boundedBy;
128
+ const sourceFields = [];
129
+ for (const property in kv) {
130
+ // eslint-disable-next-line no-prototype-builtins
131
+ if (kv.hasOwnProperty(property)) {
132
+ const fieldType = typeof features[0].get(property) === 'object'
133
+ ? undefined
134
+ : typeof features[0].get(property);
135
+ sourceFields.push({
136
+ name: property,
137
+ alias: property,
138
+ type: fieldType,
139
+ values: [kv[property]]
140
+ });
141
+ }
142
+ }
143
+ features.every((element) => {
144
+ const featureProperties = element.getProperties();
145
+ for (const key in featureProperties) {
146
+ // eslint-disable-next-line no-prototype-builtins
147
+ if (featureProperties.hasOwnProperty(key) && key in kv) {
148
+ sourceFields
149
+ .filter((f) => f.name === key)
150
+ .forEach((v) => {
151
+ if (v.values.indexOf(featureProperties[key]) === -1) {
152
+ v.values.push(featureProperties[key]);
153
+ }
154
+ });
155
+ }
156
+ }
157
+ return true;
158
+ });
159
+ return sourceFields;
160
+ }
161
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFSService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
162
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFSService, providedIn: 'root' });
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WFSService, decorators: [{
165
+ type: Injectable,
166
+ args: [{
167
+ providedIn: 'root'
168
+ }]
169
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93ZnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDVCxNQUFNLGlCQUFpQixDQUFDOzs7QUFLekIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBQ3JCO0lBQXBCLFlBQW9CLElBQWdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUVwQyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNoRCxPQUFPLGtDQUFrQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxzQkFBc0IsQ0FDM0IsaUJBQThEO1FBRTlELElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZO1lBQy9CLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUMzQyxDQUFDO1lBQ0QsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLENB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QUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ3hDLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQzt3R0EzTlUsVUFBVTs0R0FBVixVQUFVLGNBRlQsTUFBTTs7NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBXRlNEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4vd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi93bXMtZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEVwc2csXG4gIGRlZmF1bHRNYXhGZWF0dXJlcyxcbiAgZm9ybWF0V0ZTUXVlcnlTdHJpbmcsXG4gIGdldEZvcm1hdEZyb21PcHRpb25zLFxuICBnbWxSZWdleFxufSBmcm9tICcuL3dtcy13ZnMudXRpbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXRlNTZXJ2aWNlIGV4dGVuZHMgRGF0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0RGF0YSgpIHtcbiAgICBjb25zb2xlLmxvZygnVGhpcyBpcyBkZWZpbmluZyBhIGRhdGEgc2VydmljZS4nKTtcbiAgICByZXR1cm4gJ1RoaXMgaXMgZGVmaW5pbmcgYSBkYXRhIHNlcnZpY2UuJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRTb3VyY2VGaWVsZHNGcm9tV0ZTKFxuICAgIGRhdGFTb3VyY2VPcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyB8IFdNU0RhdGFTb3VyY2VPcHRpb25zXG4gICkge1xuICAgIGlmIChcbiAgICAgICFkYXRhU291cmNlT3B0aW9ucy5zb3VyY2VGaWVsZHMgfHxcbiAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkcy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkcyA9IFtdO1xuICAgICAgdGhpcy5kZWZpbmVGaWVsZEFuZFZhbHVlZnJvbVdGUyhkYXRhU291cmNlT3B0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgICAoZ2V0ZmVhdHVyZVNvdXJjZUZpZWxkKSA9PiB7XG4gICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMuc291cmNlRmllbGRzID0gZ2V0ZmVhdHVyZVNvdXJjZUZpZWxkO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmluZUZpZWxkQW5kVmFsdWVmcm9tV0ZTKGRhdGFTb3VyY2VPcHRpb25zKS5zdWJzY3JpYmUoXG4gICAgICAgIChnZXRmZWF0dXJlU291cmNlRmllbGQpID0+IHtcbiAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucy5zb3VyY2VGaWVsZHMuZm9yRWFjaCgoc291cmNlZmllbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChzb3VyY2VmaWVsZC5hbGlhcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHNvdXJjZWZpZWxkLmFsaWFzID0gc291cmNlZmllbGQubmFtZTsgLy8gdG8gYWxsb3cgb25seSBhIGxpc3Qgb2Ygc291cmNlZmllbGQgd2l0aCBuYW1lc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBzb3VyY2VmaWVsZC52YWx1ZXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICBzb3VyY2VmaWVsZC52YWx1ZXMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgc291cmNlZmllbGQudmFsdWVzID0gZ2V0ZmVhdHVyZVNvdXJjZUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgKHNmKSA9PiBzZi5uYW1lID09PSBzb3VyY2VmaWVsZC5uYW1lXG4gICAgICAgICAgICAgICkudmFsdWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2ZzR2V0RmVhdHVyZShcbiAgICBkYXRhU291cmNlT3B0aW9uczogV0ZTRGF0YVNvdXJjZU9wdGlvbnMgfCBXTVNEYXRhU291cmNlT3B0aW9ucyxcbiAgICBuYjogbnVtYmVyID0gZGVmYXVsdE1heEZlYXR1cmVzLFxuICAgIGVwc2dDb2RlOiBzdHJpbmcgPSBkZWZhdWx0RXBzZyxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgc3RhcnRJbmRleCA9IDAsXG4gICAgZm9yY2VEZWZhdWx0T3V0cHV0Rm9ybWF0ID0gZmFsc2VcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBxdWVyeVN0cmluZ1ZhbHVlcyA9IGZvcm1hdFdGU1F1ZXJ5U3RyaW5nKFxuICAgICAgZGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICBuYixcbiAgICAgIGVwc2dDb2RlLFxuICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgc3RhcnRJbmRleCxcbiAgICAgIGZvcmNlRGVmYXVsdE91dHB1dEZvcm1hdFxuICAgICk7XG4gICAgY29uc3QgYmFzZVVybCA9IHF1ZXJ5U3RyaW5nVmFsdWVzLmZpbmQoXG4gICAgICAoZikgPT4gZi5uYW1lID09PSAnZ2V0ZmVhdHVyZSdcbiAgICApLnZhbHVlO1xuICAgIGNvbnN0IG91dHB1dEZvcm1hdCA9IGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5vdXRwdXRGb3JtYXQ7XG4gICAgaWYgKFxuICAgICAgZm9yY2VEZWZhdWx0T3V0cHV0Rm9ybWF0IHx8XG4gICAgICBnbWxSZWdleC50ZXN0KG91dHB1dEZvcm1hdCkgfHxcbiAgICAgICFvdXRwdXRGb3JtYXRcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGJhc2VVcmwpO1xuICAgIH1cbiAgfVxuXG4gIGRlZmluZUZpZWxkQW5kVmFsdWVmcm9tV0ZTKFxuICAgIGRhdGFTb3VyY2VPcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyB8IFdNU0RhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChkKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VGaWVsZHMgPSBbXTtcbiAgICAgIGxldCBmaWVsZExpc3Q7XG4gICAgICBsZXQgZmllbGRMaXN0V29HZW9tO1xuICAgICAgbGV0IGZpZWxkTGlzdFdvR2VvbVN0cjtcbiAgICAgIGxldCBlZmZlY3RpdmVPbEZvcm1hdHM7XG5cbiAgICAgIGNvbnN0IG9sRm9ybWF0cyA9IGdldEZvcm1hdEZyb21PcHRpb25zKGRhdGFTb3VyY2VPcHRpb25zKTtcbiAgICAgIGNvbnN0IGdtbERhdGFTb3VyY2VPcHRpb25zOiBXRlNEYXRhU291cmNlT3B0aW9ucyB8IFdNU0RhdGFTb3VyY2VPcHRpb25zID1cbiAgICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhU291cmNlT3B0aW9ucykpO1xuICAgICAgZGVsZXRlIGdtbERhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5vdXRwdXRGb3JtYXQ7XG4gICAgICBkZWxldGUgKGdtbERhdGFTb3VyY2VPcHRpb25zIGFzIFdGU0RhdGFTb3VyY2VPcHRpb25zKS5mb3JtYXRPcHRpb25zO1xuXG4gICAgICBlZmZlY3RpdmVPbEZvcm1hdHMgPSBnZXRGb3JtYXRGcm9tT3B0aW9ucyhnbWxEYXRhU291cmNlT3B0aW9ucyk7XG4gICAgICBsZXQgc291cmNlRmllbGRzVG9SZXRyaWV2ZVZhbHVlcyA9IGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkc1xuICAgICAgICA/LmZpbHRlcigoZikgPT4gIWYudmFsdWVzKVxuICAgICAgICAubWFwKChmKSA9PiBmLm5hbWUpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBpZiB0aGUgc2VydmljZSBtYW5hZ2Ugbm8gb3V0cHV0Zm9ybWF0ICh3ZnMgMS4wLjAgYW5kIEdNTCBpcyB0aGUgZGVmYXVsdCByZXR1cm4pXG4gICAgICB0aGlzLndmc0dldEZlYXR1cmUoZGF0YVNvdXJjZU9wdGlvbnMsIDEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAwLCB0cnVlKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjb25jYXRNYXAoKHJlcykgPT5cbiAgICAgICAgICAgIFN0cmluZyhyZXMpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2V4Y2VwdGlvbicpXG4gICAgICAgICAgICAgID8gb2YoZmFsc2UpXG4gICAgICAgICAgICAgIDogb2YodHJ1ZSlcbiAgICAgICAgICApLFxuICAgICAgICAgIGNvbmNhdE1hcCgoYWxsb3dHbWwpID0+IHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBzZXJ2aWNlIHJldHVybiBHTUwgKHJldHVybiBubyBleGNlcHRpb24pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy53ZnNHZXRGZWF0dXJlKGRhdGFTb3VyY2VPcHRpb25zLCAxKS5waXBlKFxuICAgICAgICAgICAgICBjb25jYXRNYXAoKGZpcnN0RmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gb2xGb3JtYXRzLnJlYWRGZWF0dXJlcyhmaXJzdEZlYXR1cmUpO1xuICAgICAgICAgICAgICAgIGZpZWxkTGlzdCA9IGZlYXR1cmVzWzBdLmdldEtleXMoKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucy5zb3VyY2VGaWVsZHMgfHxcbiAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnNvdXJjZUZpZWxkcy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZUZpZWxkc1RvUmV0cmlldmVWYWx1ZXMgPSBmaWVsZExpc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpZWxkTGlzdFdvR2VvbSA9IGZpZWxkTGlzdC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAoZmllbGQpID0+XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUZpZWxkc1RvUmV0cmlldmVWYWx1ZXMuaW5jbHVkZXMoZmllbGQpICYmXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkICE9PSBmZWF0dXJlc1swXS5nZXRHZW9tZXRyeU5hbWUoKSAmJlxuICAgICAgICAgICAgICAgICAgICAhZmllbGQubWF0Y2goL2JvdW5kZWRieS9naSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGZpZWxkTGlzdFdvR2VvbVN0ciA9IGZpZWxkTGlzdFdvR2VvbS5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2luZ0FycmF5ID0gW107XG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzZXJ2aWNlIGRvIG5vdCBhbGxvdyBnbWwgcmV0dXJuLCBkaWNlIHRoZSBjYWxsIGluIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgLy8gY2FsbHMgYnkgaW5jcmVtZW50IG9mIGNodW5rU2l6ZSB3aXRoIHRoZSBvcmlnaW5hbCBvdXRwdXRGb3JtYXRcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhYWxsb3dHbWwgJiZcbiAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy52ZXJzaW9uID09PSAnMi4wLjAnICYmXG4gICAgICAgICAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucy5wYXJhbXNXRlMubWF4RmVhdHVyZXMgPiBkZWZhdWx0TWF4RmVhdHVyZXNcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IDEwMDA7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhcnRJbmRleCA8IGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5tYXhGZWF0dXJlcykge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nQXJyYXkucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndmc0dldEZlYXR1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VPcHRpb25zLnBhcmFtc1dGUy5zcnNOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRMaXN0V29HZW9tU3RyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSBjaHVua1NpemU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBlZmZlY3RpdmVPbEZvcm1hdHMgPSBvbEZvcm1hdHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmdBcnJheS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLndmc0dldEZlYXR1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMucGFyYW1zV0ZTLm1heEZlYXR1cmVzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWF4RmVhdHVyZXMsXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZU9wdGlvbnMucGFyYW1zV0ZTLnNyc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGRMaXN0V29HZW9tU3RyLFxuICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwcm9jZXNzaW5nQXJyYXkpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICBsZXQgbWZlYXR1cmVzOiBvbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSA9IFtdO1xuICAgICAgICAgIHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvb3BGZWF0dXJlcyA9IGVmZmVjdGl2ZU9sRm9ybWF0cy5yZWFkRmVhdHVyZXMocmVzdWx0KTtcbiAgICAgICAgICAgIG1mZWF0dXJlcyA9IG1mZWF0dXJlcy5jb25jYXQobG9vcEZlYXR1cmVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmJ1aWx0X3Byb3BlcnRpZXNfdmFsdWUobWZlYXR1cmVzKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBzb3VyY2VGaWVsZHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkLm5leHQoc291cmNlRmllbGRzKTtcbiAgICAgICAgICBkLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsdF9wcm9wZXJ0aWVzX3ZhbHVlKGZlYXR1cmVzOiBvbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGt2ID0gT2JqZWN0LmFzc2lnbih7fSwgZmVhdHVyZXNbMF0uZ2V0UHJvcGVydGllcygpKTtcbiAgICBkZWxldGUga3ZbZmVhdHVyZXNbMF0uZ2V0R2VvbWV0cnlOYW1lKCldO1xuICAgIGRlbGV0ZSBrdi5ib3VuZGVkQnk7XG4gICAgY29uc3Qgc291cmNlRmllbGRzID0gW107XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBrdikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgaWYgKGt2Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPVxuICAgICAgICAgIHR5cGVvZiBmZWF0dXJlc1swXS5nZXQocHJvcGVydHkpID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdHlwZW9mIGZlYXR1cmVzWzBdLmdldChwcm9wZXJ0eSk7XG4gICAgICAgIHNvdXJjZUZpZWxkcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBwcm9wZXJ0eSxcbiAgICAgICAgICBhbGlhczogcHJvcGVydHksXG4gICAgICAgICAgdHlwZTogZmllbGRUeXBlLFxuICAgICAgICAgIHZhbHVlczogW2t2W3Byb3BlcnR5XV1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZlYXR1cmVzLmV2ZXJ5KChlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBmZWF0dXJlUHJvcGVydGllcyA9IGVsZW1lbnQuZ2V0UHJvcGVydGllcygpO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZmVhdHVyZVByb3BlcnRpZXMpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICBpZiAoZmVhdHVyZVByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkgaW4ga3YpIHtcbiAgICAgICAgICBzb3VyY2VGaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYubmFtZSA9PT0ga2V5KVxuICAgICAgICAgICAgLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHYudmFsdWVzLmluZGV4T2YoZmVhdHVyZVByb3BlcnRpZXNba2V5XSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdi52YWx1ZXMucHVzaChmZWF0dXJlUHJvcGVydGllc1trZXldKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiBzb3VyY2VGaWVsZHM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlcnZlclR5cGUgfSBmcm9tICdvbC9zb3VyY2Uvd21zJztcblxuaW1wb3J0IHR5cGUgeyBPZ2NGaWx0ZXJzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQgdHlwZSB7IFRpbWVGaWx0ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZmlsdGVyL3NoYXJlZC90aW1lLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4vZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBXRlNEYXRhU291cmNlT3B0aW9uc1BhcmFtcyB9IGZyb20gJy4vd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBXTVNEYXRhU291cmNlT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VPcHRpb25zIHtcbiAgLy8gdHlwZT86ICd3bXMnO1xuICBwYXJhbXNXRlM/OiBXRlNEYXRhU291cmNlT3B0aW9uc1BhcmFtczsgLy8gZm9yIHdtcyBsaW5rZWQgd2l0aCB3ZnNcbiAgdXJsV2ZzPzogc3RyaW5nOyAvLyBpZiB1cmwgZm9yIGxpbmtlZCB3ZnMgZGlmZmVyIGZyb20gdGhlIHVybCBmb3Igd21zLlxuICB1cmw6IHN0cmluZztcbiAgcGFyYW1zOiBXTVNEYXRhU291cmNlT3B0aW9uc1BhcmFtcztcbiAgY3Jvc3NPcmlnaW4/OiBzdHJpbmc7XG4gIHByb2plY3Rpb24/OiBzdHJpbmc7XG4gIHJlc29sdXRpb25zPzogbnVtYmVyW107XG4gIHNlcnZlclR5cGU/OiBTZXJ2ZXJUeXBlO1xuICByYXRpbz86IG51bWJlcjtcbiAgcmVmcmVzaEludGVydmFsU2VjPzogbnVtYmVyO1xuICBjb250ZW50RGVwZW5kZW50TGVnZW5kPzogYm9vbGVhbjtcbiAgZXhjbHVkZUF0dHJpYnV0ZT86IHN0cmluZ1tdO1xuICBvZ2NGaWx0ZXJzPzogT2djRmlsdGVyc09wdGlvbnM7XG4gIHRpbWVGaWx0ZXI/OiBUaW1lRmlsdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXTVNEYXRhU291cmNlT3B0aW9uc1BhcmFtcyB7XG4gIExBWUVSUzogc3RyaW5nO1xuICBWRVJTSU9OPzogc3RyaW5nO1xuICBUSU1FPzogc3RyaW5nO1xuICBGRUFUVVJFX0NPVU5UPzogbnVtYmVyO1xuICBGSUxURVI/OiBzdHJpbmc7XG4gIElORk9fRk9STUFUPzogc3RyaW5nO1xuICBEUEk/OiBudW1iZXI7XG4gIE1BUF9SRVNPTFVUSU9OPzogbnVtYmVyO1xuICBGT1JNQVRfT1BUSU9OUz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zIGV4dGVuZHMgV01TRGF0YVNvdXJjZU9wdGlvbnMge1xuICB0aW1lRmlsdGVyYWJsZT86IGJvb2xlYW47XG4gIHRpbWVGaWx0ZXI/OiBUaW1lRmlsdGVyT3B0aW9ucztcbn1cbiJdfQ==