@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,99 +0,0 @@
1
- import { EntityStoreStrategy } from '@igo2/common/entity';
2
- import { debounceTime } from 'rxjs';
3
- /**
4
- * This strategy maintain the store features updated while the map is scrolled.
5
- * The features's state inside the map's resolution are tagged inMapResolution = true;
6
- */
7
- export class FeatureStoreInMapResolutionStrategy extends EntityStoreStrategy {
8
- options;
9
- /**
10
- * Subscription to the store's OL source changes
11
- */
12
- stores$$ = new Map();
13
- resolution$$ = [];
14
- empty$$;
15
- constructor(options) {
16
- super(options);
17
- this.options = options;
18
- }
19
- /**
20
- * Bind this strategy to a store and start watching for Ol source changes
21
- * @param store Feature store
22
- */
23
- bindStore(store) {
24
- super.bindStore(store);
25
- if (this.active === true) {
26
- this.watchStore(store);
27
- }
28
- this.empty$$ = store.empty$.subscribe(() => this.updateEntitiesInResolution(store, store.layer.map.viewController.getResolution()));
29
- }
30
- /**
31
- * Unbind this strategy from a store and stop watching for Ol source changes
32
- * @param store Feature store
33
- */
34
- unbindStore(store) {
35
- super.unbindStore(store);
36
- if (this.active === true) {
37
- this.unwatchStore(store);
38
- }
39
- }
40
- /**
41
- * Start watching all stores already bound to that strategy at once.
42
- * @internal
43
- */
44
- doActivate() {
45
- this.stores.forEach((store) => this.watchStore(store));
46
- }
47
- /**
48
- * Stop watching all stores bound to that strategy
49
- * @internal
50
- */
51
- doDeactivate() {
52
- this.unwatchAll();
53
- }
54
- /**
55
- * Watch for a store's OL source changes
56
- * @param store Feature store
57
- */
58
- watchStore(store) {
59
- if (this.stores$$.has(store)) {
60
- return;
61
- }
62
- this.updateEntitiesInResolution(store, store.layer.map.viewController.getResolution());
63
- this.resolution$$.push(store.layer.map.viewController.resolution$
64
- .pipe(debounceTime(250))
65
- .subscribe((res) => {
66
- this.updateEntitiesInResolution(store, res);
67
- }));
68
- }
69
- updateEntitiesInResolution(store, mapResolution) {
70
- if (mapResolution > store.layer.minResolution &&
71
- mapResolution < store.layer.maxResolution) {
72
- store.state.updateAll({ inMapResolution: true });
73
- }
74
- else {
75
- store.state.updateAll({ inMapResolution: false });
76
- }
77
- }
78
- /**
79
- * Stop watching for a store's OL source changes
80
- * @param store Feature store
81
- */
82
- unwatchStore(store) {
83
- const key = this.stores$$.get(store);
84
- if (key !== undefined) {
85
- this.stores$$.delete(store);
86
- }
87
- }
88
- /**
89
- * Stop watching for OL source changes in all stores.
90
- */
91
- unwatchAll() {
92
- this.stores$$.clear();
93
- this.resolution$$.map((state) => state.unsubscribe());
94
- if (this.empty$$) {
95
- this.empty$$.unsubscribe();
96
- }
97
- }
98
- }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbWFwLXJlc29sdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9mZWF0dXJlL3NoYXJlZC9zdHJhdGVnaWVzL2luLW1hcC1yZXNvbHV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS2xEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSxtQkFBbUI7SUFRcEQ7SUFQdEI7O09BRUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFDM0MsWUFBWSxHQUFtQixFQUFFLENBQUM7SUFDbEMsT0FBTyxDQUFlO0lBRTlCLFlBQXNCLE9BQW1EO1FBQ3ZFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURLLFlBQU8sR0FBUCxPQUFPLENBQTRDO0lBRXpFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsS0FBbUI7UUFDM0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDekMsSUFBSSxDQUFDLDBCQUEwQixDQUM3QixLQUFLLEVBQ0wsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUMvQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEtBQW1CO1FBQzdCLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDTyxVQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDTyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssVUFBVSxDQUFDLEtBQW1CO1FBQ3BDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQywwQkFBMEIsQ0FDN0IsS0FBSyxFQUNMLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FDL0MsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVzthQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsYUFBcUI7UUFDN0QsSUFDRSxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3pDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFDekMsQ0FBQztZQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWSxDQUFDLEtBQW1CO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVN0b3JlU3RyYXRlZ3kgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnLi4vZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcblxuLyoqXG4gKiBUaGlzIHN0cmF0ZWd5IG1haW50YWluIHRoZSBzdG9yZSBmZWF0dXJlcyB1cGRhdGVkIHdoaWxlIHRoZSBtYXAgaXMgc2Nyb2xsZWQuXG4gKiBUaGUgZmVhdHVyZXMncyBzdGF0ZSBpbnNpZGUgdGhlIG1hcCdzIHJlc29sdXRpb24gYXJlIHRhZ2dlZCBpbk1hcFJlc29sdXRpb24gPSB0cnVlO1xuICovXG5leHBvcnQgY2xhc3MgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBFbnRpdHlTdG9yZVN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgc3RvcmUncyBPTCBzb3VyY2UgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSBzdG9yZXMkJCA9IG5ldyBNYXA8RmVhdHVyZVN0b3JlLCBzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGVtcHR5JCQ6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3lPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGlzIHN0cmF0ZWd5IHRvIGEgc3RvcmUgYW5kIHN0YXJ0IHdhdGNoaW5nIGZvciBPbCBzb3VyY2UgY2hhbmdlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgYmluZFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBzdXBlci5iaW5kU3RvcmUoc3RvcmUpO1xuICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy53YXRjaFN0b3JlKHN0b3JlKTtcbiAgICB9XG4gICAgdGhpcy5lbXB0eSQkID0gc3RvcmUuZW1wdHkkLnN1YnNjcmliZSgoKSA9PlxuICAgICAgdGhpcy51cGRhdGVFbnRpdGllc0luUmVzb2x1dGlvbihcbiAgICAgICAgc3RvcmUsXG4gICAgICAgIHN0b3JlLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRSZXNvbHV0aW9uKClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYmluZCB0aGlzIHN0cmF0ZWd5IGZyb20gYSBzdG9yZSBhbmQgc3RvcCB3YXRjaGluZyBmb3IgT2wgc291cmNlIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHVuYmluZFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBzdXBlci51bmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnVud2F0Y2hTdG9yZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHdhdGNoaW5nIGFsbCBzdG9yZXMgYWxyZWFkeSBib3VuZCB0byB0aGF0IHN0cmF0ZWd5IGF0IG9uY2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGRvQWN0aXZhdGUoKSB7XG4gICAgdGhpcy5zdG9yZXMuZm9yRWFjaCgoc3RvcmU6IEZlYXR1cmVTdG9yZSkgPT4gdGhpcy53YXRjaFN0b3JlKHN0b3JlKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBhbGwgc3RvcmVzIGJvdW5kIHRvIHRoYXQgc3RyYXRlZ3lcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9EZWFjdGl2YXRlKCkge1xuICAgIHRoaXMudW53YXRjaEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoIGZvciBhIHN0b3JlJ3MgIE9MIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHdhdGNoU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIGlmICh0aGlzLnN0b3JlcyQkLmhhcyhzdG9yZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUVudGl0aWVzSW5SZXNvbHV0aW9uKFxuICAgICAgc3RvcmUsXG4gICAgICBzdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpXG4gICAgKTtcbiAgICB0aGlzLnJlc29sdXRpb24kJC5wdXNoKFxuICAgICAgc3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUVudGl0aWVzSW5SZXNvbHV0aW9uKHN0b3JlLCByZXMpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUVudGl0aWVzSW5SZXNvbHV0aW9uKHN0b3JlLCBtYXBSZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICBpZiAoXG4gICAgICBtYXBSZXNvbHV0aW9uID4gc3RvcmUubGF5ZXIubWluUmVzb2x1dGlvbiAmJlxuICAgICAgbWFwUmVzb2x1dGlvbiA8IHN0b3JlLmxheWVyLm1heFJlc29sdXRpb25cbiAgICApIHtcbiAgICAgIHN0b3JlLnN0YXRlLnVwZGF0ZUFsbCh7IGluTWFwUmVzb2x1dGlvbjogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcmUuc3RhdGUudXBkYXRlQWxsKHsgaW5NYXBSZXNvbHV0aW9uOiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBmb3IgYSBzdG9yZSdzIE9MIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHVud2F0Y2hTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5zdG9yZXMkJC5nZXQoc3RvcmUpO1xuICAgIGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdG9yZXMkJC5kZWxldGUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGZvciBPTCBzb3VyY2UgY2hhbmdlcyBpbiBhbGwgc3RvcmVzLlxuICAgKi9cbiAgcHJpdmF0ZSB1bndhdGNoQWxsKCkge1xuICAgIHRoaXMuc3RvcmVzJCQuY2xlYXIoKTtcbiAgICB0aGlzLnJlc29sdXRpb24kJC5tYXAoKHN0YXRlKSA9PiBzdGF0ZS51bnN1YnNjcmliZSgpKTtcbiAgICBpZiAodGhpcy5lbXB0eSQkKSB7XG4gICAgICB0aGlzLmVtcHR5JCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- export * from './in-map-extent';
2
- export * from './in-map-resolution';
3
- export * from './geo-properties';
4
- export * from './loading';
5
- export * from './loading-layer';
6
- export * from './selection';
7
- export * from './search';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9mZWF0dXJlL3NoYXJlZC9zdHJhdGVnaWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2luLW1hcC1leHRlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbi1tYXAtcmVzb2x1dGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2dlby1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmctbGF5ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gnO1xuIl19
@@ -1,103 +0,0 @@
1
- import { EntityStoreStrategy } from '@igo2/common/entity';
2
- import { ClusterDataSource } from '../../../datasource/shared/datasources/cluster-datasource';
3
- /**
4
- * This strategy loads a layer's features into it's store counterpart.
5
- * The layer -> store binding is a one-way binding. That means any OL feature
6
- * added to the layer will be added to the store but the opposite is false.
7
- *
8
- * Important: In it's current state, this strategy is to meant to be combined
9
- * with a standard Loading strategy and it would probably cause recursion issues.
10
- */
11
- export class FeatureStoreLoadingLayerStrategy extends EntityStoreStrategy {
12
- options;
13
- /**
14
- * Subscription to the store's OL source changes
15
- */
16
- stores$$ = new Map();
17
- constructor(options) {
18
- super(options);
19
- this.options = options;
20
- }
21
- /**
22
- * Bind this strategy to a store and start watching for Ol source changes
23
- * @param store Feature store
24
- */
25
- bindStore(store) {
26
- super.bindStore(store);
27
- if (this.active === true) {
28
- this.watchStore(store);
29
- }
30
- }
31
- /**
32
- * Unbind this strategy from a store and stop watching for Ol source changes
33
- * @param store Feature store
34
- */
35
- unbindStore(store) {
36
- super.unbindStore(store);
37
- if (this.active === true) {
38
- this.unwatchStore(store);
39
- }
40
- }
41
- /**
42
- * Start watching all stores already bound to that strategy at once.
43
- * @internal
44
- */
45
- doActivate() {
46
- this.stores.forEach((store) => this.watchStore(store));
47
- }
48
- /**
49
- * Stop watching all stores bound to that strategy
50
- * @internal
51
- */
52
- doDeactivate() {
53
- this.unwatchAll();
54
- }
55
- /**
56
- * Watch for a store's OL source changes
57
- * @param store Feature store
58
- */
59
- watchStore(store) {
60
- if (this.stores$$.has(store)) {
61
- return;
62
- }
63
- this.onSourceChanges(store);
64
- const olSource = store.layer.ol.getSource();
65
- olSource.on('change', () => {
66
- this.onSourceChanges(store);
67
- });
68
- }
69
- /**
70
- * Stop watching for a store's OL source changes
71
- * @param store Feature store
72
- */
73
- unwatchStore(store) {
74
- const key = this.stores$$.get(store);
75
- if (key !== undefined) {
76
- this.stores$$.delete(store);
77
- }
78
- }
79
- /**
80
- * Stop watching for OL source changes in all stores.
81
- */
82
- unwatchAll() {
83
- this.stores$$.clear();
84
- }
85
- /**
86
- * Load features from an OL source into a store or clear the store if the source is empty
87
- * @param features Store filtered features
88
- * @param store Feature store
89
- */
90
- onSourceChanges(store) {
91
- let olFeatures = store.layer.ol.getSource().getFeatures();
92
- if (store.layer.dataSource instanceof ClusterDataSource) {
93
- olFeatures = olFeatures.flatMap((cluster) => cluster.get('features'));
94
- }
95
- if (olFeatures.length === 0) {
96
- store.clear();
97
- }
98
- else {
99
- store.setStoreOlFeatures(olFeatures);
100
- }
101
- }
102
- }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1sYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZy1sYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUk5Rjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG1CQUFtQjtJQU1qRDtJQUx0Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJQUVuRCxZQUFzQixPQUFnRDtRQUNwRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUF5QztJQUV0RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQW1CO1FBQzNCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBbUI7UUFDN0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVU7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFlBQVk7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxVQUFVLENBQUMsS0FBbUI7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZLENBQUMsS0FBbUI7UUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGVBQWUsQ0FBQyxLQUFtQjtRQUN6QyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUxRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDeEQsVUFBVSxHQUFJLFVBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDeEIsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTdG9yZVN0cmF0ZWd5IH0gZnJvbSAnQGlnbzIvY29tbW9uL2VudGl0eSc7XG5cbmltcG9ydCB7IENsdXN0ZXJEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvY2x1c3Rlci1kYXRhc291cmNlJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJy4uL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi9zdG9yZSc7XG5cbi8qKlxuICogVGhpcyBzdHJhdGVneSBsb2FkcyBhIGxheWVyJ3MgZmVhdHVyZXMgaW50byBpdCdzIHN0b3JlIGNvdW50ZXJwYXJ0LlxuICogVGhlIGxheWVyIC0+IHN0b3JlIGJpbmRpbmcgaXMgYSBvbmUtd2F5IGJpbmRpbmcuIFRoYXQgbWVhbnMgYW55IE9MIGZlYXR1cmVcbiAqIGFkZGVkIHRvIHRoZSBsYXllciB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzdG9yZSBidXQgdGhlIG9wcG9zaXRlIGlzIGZhbHNlLlxuICpcbiAqIEltcG9ydGFudDogSW4gaXQncyBjdXJyZW50IHN0YXRlLCB0aGlzIHN0cmF0ZWd5IGlzIHRvIG1lYW50IHRvIGJlIGNvbWJpbmVkXG4gKiB3aXRoIGEgc3RhbmRhcmQgTG9hZGluZyBzdHJhdGVneSBhbmQgaXQgd291bGQgcHJvYmFibHkgY2F1c2UgcmVjdXJzaW9uIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5IGV4dGVuZHMgRW50aXR5U3RvcmVTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdGhlIHN0b3JlJ3MgT0wgc291cmNlIGNoYW5nZXNcbiAgICovXG4gIHByaXZhdGUgc3RvcmVzJCQgPSBuZXcgTWFwPEZlYXR1cmVTdG9yZSwgc3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvcHRpb25zOiBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgc3RyYXRlZ3kgdG8gYSBzdG9yZSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIE9sIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBiaW5kU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIHN1cGVyLmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLndhdGNoU3RvcmUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdGhpcyBzdHJhdGVneSBmcm9tIGEgc3RvcmUgYW5kIHN0b3Agd2F0Y2hpbmcgZm9yIE9sIHNvdXJjZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICB1bmJpbmRTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgc3VwZXIudW5iaW5kU3RvcmUoc3RvcmUpO1xuICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy51bndhdGNoU3RvcmUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCB3YXRjaGluZyBhbGwgc3RvcmVzIGFscmVhZHkgYm91bmQgdG8gdGhhdCBzdHJhdGVneSBhdCBvbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBkb0FjdGl2YXRlKCkge1xuICAgIHRoaXMuc3RvcmVzLmZvckVhY2goKHN0b3JlOiBGZWF0dXJlU3RvcmUpID0+IHRoaXMud2F0Y2hTdG9yZShzdG9yZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agd2F0Y2hpbmcgYWxsIHN0b3JlcyBib3VuZCB0byB0aGF0IHN0cmF0ZWd5XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGRvRGVhY3RpdmF0ZSgpIHtcbiAgICB0aGlzLnVud2F0Y2hBbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaCBmb3IgYSBzdG9yZSdzICBPTCBzb3VyY2UgY2hhbmdlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgcHJpdmF0ZSB3YXRjaFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBpZiAodGhpcy5zdG9yZXMkJC5oYXMoc3RvcmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vblNvdXJjZUNoYW5nZXMoc3RvcmUpO1xuICAgIGNvbnN0IG9sU291cmNlID0gc3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCk7XG4gICAgb2xTb3VyY2Uub24oJ2NoYW5nZScsICgpID0+IHtcbiAgICAgIHRoaXMub25Tb3VyY2VDaGFuZ2VzKHN0b3JlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGZvciBhIHN0b3JlJ3MgT0wgc291cmNlIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgdW53YXRjaFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JlcyQkLmdldChzdG9yZSk7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnN0b3JlcyQkLmRlbGV0ZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agd2F0Y2hpbmcgZm9yIE9MIHNvdXJjZSBjaGFuZ2VzIGluIGFsbCBzdG9yZXMuXG4gICAqL1xuICBwcml2YXRlIHVud2F0Y2hBbGwoKSB7XG4gICAgdGhpcy5zdG9yZXMkJC5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZmVhdHVyZXMgZnJvbSBhbiBPTCBzb3VyY2UgaW50byBhICBzdG9yZSBvciBjbGVhciB0aGUgc3RvcmUgaWYgdGhlIHNvdXJjZSBpcyBlbXB0eVxuICAgKiBAcGFyYW0gZmVhdHVyZXMgU3RvcmUgZmlsdGVyZWQgZmVhdHVyZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgb25Tb3VyY2VDaGFuZ2VzKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBsZXQgb2xGZWF0dXJlcyA9IHN0b3JlLmxheWVyLm9sLmdldFNvdXJjZSgpLmdldEZlYXR1cmVzKCk7XG5cbiAgICBpZiAoc3RvcmUubGF5ZXIuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIENsdXN0ZXJEYXRhU291cmNlKSB7XG4gICAgICBvbEZlYXR1cmVzID0gKG9sRmVhdHVyZXMgYXMgYW55KS5mbGF0TWFwKChjbHVzdGVyOiBhbnkpID0+XG4gICAgICAgIGNsdXN0ZXIuZ2V0KCdmZWF0dXJlcycpXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob2xGZWF0dXJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHN0b3JlLmNsZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JlLnNldFN0b3JlT2xGZWF0dXJlcyhvbEZlYXR1cmVzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,136 +0,0 @@
1
- import { EntityStoreStrategy } from '@igo2/common/entity';
2
- import { FeatureMotion } from '../feature.enums';
3
- /**
4
- * This strategy loads a store's features into it's layer counterpart.
5
- * The store -> layer binding is a one-way binding. That means any entity
6
- * added to the store will be added to the layer but the opposite is false.
7
- *
8
- * Important: This strategy observes filtered entities, not raw entities. This
9
- * is not configurable yet.
10
- */
11
- export class FeatureStoreLoadingStrategy extends EntityStoreStrategy {
12
- options;
13
- /**
14
- * Subscription to the store's features
15
- */
16
- stores$$ = new Map();
17
- motion;
18
- constructor(options) {
19
- super(options);
20
- this.options = options;
21
- this.setMotion(options.motion);
22
- }
23
- /**
24
- * Bind this strategy to a store and start watching for entities changes
25
- * @param store Feature store
26
- */
27
- bindStore(store) {
28
- super.bindStore(store);
29
- if (this.active === true) {
30
- this.watchStore(store);
31
- }
32
- }
33
- /**
34
- * Unbind this strategy from a store and stop watching for entities changes
35
- * @param store Feature store
36
- */
37
- unbindStore(store) {
38
- super.unbindStore(store);
39
- if (this.active === true) {
40
- this.unwatchStore(store);
41
- }
42
- }
43
- /**
44
- * Define the motion to apply on load
45
- * @param motion Feature motion
46
- */
47
- setMotion(motion) {
48
- this.motion = motion;
49
- }
50
- /**
51
- * Start watching all stores already bound to that strategy at once.
52
- * @internal
53
- */
54
- doActivate() {
55
- this.stores.forEach((store) => this.watchStore(store));
56
- }
57
- /**
58
- * Stop watching all stores bound to that strategy
59
- * @internal
60
- */
61
- doDeactivate() {
62
- this.unwatchAll();
63
- }
64
- /**
65
- * Watch for entities changes in a store.
66
- * Important: Never observe a store's sorted entities. It makes no sense
67
- * to display sorted entities (instead of unsorted) on a layer and it
68
- * would potentially result in a lot of useless computation.
69
- * @param store Feature store
70
- */
71
- watchStore(store) {
72
- if (this.stores$$.has(store)) {
73
- return;
74
- }
75
- const subscription = store.view
76
- .all$()
77
- .subscribe((features) => this.onFeaturesChange(features, store));
78
- this.stores$$.set(store, subscription);
79
- }
80
- /**
81
- * Stop watching for entities changes in a store.
82
- * @param store Feature store
83
- */
84
- unwatchStore(store) {
85
- const subscription = this.stores$$.get(store);
86
- if (subscription !== undefined) {
87
- subscription.unsubscribe();
88
- this.stores$$.delete(store);
89
- }
90
- }
91
- /**
92
- * Stop watching for entities changes in all stores.
93
- */
94
- unwatchAll() {
95
- Array.from(this.stores$$.entries()).forEach((entries) => {
96
- entries[1].unsubscribe();
97
- });
98
- this.stores$$.clear();
99
- }
100
- /**
101
- * Load features into a layer or clear the layer if the array of features is empty.
102
- * @param features Store filtered features
103
- * @param store Feature store
104
- */
105
- onFeaturesChange(features, store) {
106
- if (features.length === 0) {
107
- store.clearLayer();
108
- }
109
- else {
110
- store.setLayerFeatures(features, this.selectMotion(store), this.options.viewScale, this.options.areaRatio, this.options.getFeatureId);
111
- }
112
- }
113
- /**
114
- * Selects the best motion
115
- * @param store A FeatureStore to apply the motion
116
- * @returns The motion selected
117
- */
118
- selectMotion(store) {
119
- if (this.motion !== undefined) {
120
- return this.motion;
121
- }
122
- if (store.pristine === true) {
123
- // If features have just been loaded into the store, move/zoom on them
124
- return FeatureMotion.Default;
125
- }
126
- else if (store.count > store.view.count) {
127
- // If features have been filtered, move/zoom on the remaining ones
128
- return FeatureMotion.Default;
129
- }
130
- else {
131
- // On insert, update or delete, do nothing
132
- return FeatureMotion.None;
133
- }
134
- }
135
- }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPakQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFRNUM7SUFQdEI7O09BRUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7SUFFakQsTUFBTSxDQUFnQjtJQUU5QixZQUFzQixPQUEyQztRQUMvRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUFvQztRQUUvRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQW1CO1FBQzNCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBbUI7UUFDN0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FB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QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RvcmVTdHJhdGVneSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiB9IGZyb20gJy4uL2ZlYXR1cmUuZW51bXMnO1xuaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5T3B0aW9uc1xufSBmcm9tICcuLi9mZWF0dXJlLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRmVhdHVyZVN0b3JlIH0gZnJvbSAnLi4vc3RvcmUnO1xuXG4vKipcbiAqIFRoaXMgc3RyYXRlZ3kgbG9hZHMgYSBzdG9yZSdzIGZlYXR1cmVzIGludG8gaXQncyBsYXllciBjb3VudGVycGFydC5cbiAqIFRoZSBzdG9yZSAtPiBsYXllciBiaW5kaW5nIGlzIGEgb25lLXdheSBiaW5kaW5nLiBUaGF0IG1lYW5zIGFueSBlbnRpdHlcbiAqIGFkZGVkIHRvIHRoZSBzdG9yZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBsYXllciBidXQgdGhlIG9wcG9zaXRlIGlzIGZhbHNlLlxuICpcbiAqIEltcG9ydGFudDogVGhpcyBzdHJhdGVneSBvYnNlcnZlcyBmaWx0ZXJlZCBlbnRpdGllcywgbm90IHJhdyBlbnRpdGllcy4gVGhpc1xuICogaXMgbm90IGNvbmZpZ3VyYWJsZSB5ZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kgZXh0ZW5kcyBFbnRpdHlTdG9yZVN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgc3RvcmUncyBmZWF0dXJlc1xuICAgKi9cbiAgcHJpdmF0ZSBzdG9yZXMkJCA9IG5ldyBNYXA8RmVhdHVyZVN0b3JlLCBTdWJzY3JpcHRpb24+KCk7XG5cbiAgcHJpdmF0ZSBtb3Rpb246IEZlYXR1cmVNb3Rpb247XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLnNldE1vdGlvbihvcHRpb25zLm1vdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGlzIHN0cmF0ZWd5IHRvIGEgc3RvcmUgYW5kIHN0YXJ0IHdhdGNoaW5nIGZvciBlbnRpdGllcyBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBiaW5kU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIHN1cGVyLmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLndhdGNoU3RvcmUoc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdGhpcyBzdHJhdGVneSBmcm9tIGEgc3RvcmUgYW5kIHN0b3Agd2F0Y2hpbmcgZm9yIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHVuYmluZFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBzdXBlci51bmJpbmRTdG9yZShzdG9yZSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnVud2F0Y2hTdG9yZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbW90aW9uIHRvIGFwcGx5IG9uIGxvYWRcbiAgICogQHBhcmFtIG1vdGlvbiBGZWF0dXJlIG1vdGlvblxuICAgKi9cbiAgc2V0TW90aW9uKG1vdGlvbjogRmVhdHVyZU1vdGlvbikge1xuICAgIHRoaXMubW90aW9uID0gbW90aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHdhdGNoaW5nIGFsbCBzdG9yZXMgYWxyZWFkeSBib3VuZCB0byB0aGF0IHN0cmF0ZWd5IGF0IG9uY2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGRvQWN0aXZhdGUoKSB7XG4gICAgdGhpcy5zdG9yZXMuZm9yRWFjaCgoc3RvcmU6IEZlYXR1cmVTdG9yZSkgPT4gdGhpcy53YXRjaFN0b3JlKHN0b3JlKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBhbGwgc3RvcmVzIGJvdW5kIHRvIHRoYXQgc3RyYXRlZ3lcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9EZWFjdGl2YXRlKCkge1xuICAgIHRoaXMudW53YXRjaEFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoIGZvciBlbnRpdGllcyBjaGFuZ2VzIGluIGEgc3RvcmUuXG4gICAqIEltcG9ydGFudDogTmV2ZXIgb2JzZXJ2ZSBhIHN0b3JlJ3Mgc29ydGVkIGVudGl0aWVzLiBJdCBtYWtlcyBubyBzZW5zZVxuICAgKiB0byBkaXNwbGF5IHNvcnRlZCBlbnRpdGllcyAoaW5zdGVhZCBvZiB1bnNvcnRlZCkgb24gYSBsYXllciBhbmQgaXRcbiAgICogd291bGQgcG90ZW50aWFsbHkgcmVzdWx0IGluIGEgbG90IG9mIHVzZWxlc3MgY29tcHV0YXRpb24uXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHdhdGNoU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIGlmICh0aGlzLnN0b3JlcyQkLmhhcyhzdG9yZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBzdG9yZS52aWV3XG4gICAgICAuYWxsJCgpXG4gICAgICAuc3Vic2NyaWJlKChmZWF0dXJlczogRmVhdHVyZVtdKSA9PlxuICAgICAgICB0aGlzLm9uRmVhdHVyZXNDaGFuZ2UoZmVhdHVyZXMsIHN0b3JlKVxuICAgICAgKTtcbiAgICB0aGlzLnN0b3JlcyQkLnNldChzdG9yZSwgc3Vic2NyaXB0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGZvciBlbnRpdGllcyBjaGFuZ2VzIGluIGEgc3RvcmUuXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHVud2F0Y2hTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5zdG9yZXMkJC5nZXQoc3RvcmUpO1xuICAgIGlmIChzdWJzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnN0b3JlcyQkLmRlbGV0ZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agd2F0Y2hpbmcgZm9yIGVudGl0aWVzIGNoYW5nZXMgaW4gYWxsIHN0b3Jlcy5cbiAgICovXG4gIHByaXZhdGUgdW53YXRjaEFsbCgpIHtcbiAgICBBcnJheS5mcm9tKHRoaXMuc3RvcmVzJCQuZW50cmllcygpKS5mb3JFYWNoKFxuICAgICAgKGVudHJpZXM6IFtGZWF0dXJlU3RvcmUsIFN1YnNjcmlwdGlvbl0pID0+IHtcbiAgICAgICAgZW50cmllc1sxXS51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5zdG9yZXMkJC5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZmVhdHVyZXMgaW50byBhIGxheWVyIG9yIGNsZWFyIHRoZSBsYXllciBpZiB0aGUgYXJyYXkgb2YgZmVhdHVyZXMgaXMgZW1wdHkuXG4gICAqIEBwYXJhbSBmZWF0dXJlcyBTdG9yZSBmaWx0ZXJlZCBmZWF0dXJlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgcHJpdmF0ZSBvbkZlYXR1cmVzQ2hhbmdlKGZlYXR1cmVzOiBGZWF0dXJlW10sIHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdG9yZS5jbGVhckxheWVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JlLnNldExheWVyRmVhdHVyZXMoXG4gICAgICAgIGZlYXR1cmVzLFxuICAgICAgICB0aGlzLnNlbGVjdE1vdGlvbihzdG9yZSksXG4gICAgICAgIHRoaXMub3B0aW9ucy52aWV3U2NhbGUsXG4gICAgICAgIHRoaXMub3B0aW9ucy5hcmVhUmF0aW8sXG4gICAgICAgIHRoaXMub3B0aW9ucy5nZXRGZWF0dXJlSWRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIGJlc3QgbW90aW9uXG4gICAqIEBwYXJhbSBzdG9yZSBBIEZlYXR1cmVTdG9yZSB0byBhcHBseSB0aGUgbW90aW9uXG4gICAqIEByZXR1cm5zIFRoZSBtb3Rpb24gc2VsZWN0ZWRcbiAgICovXG4gIHByaXZhdGUgc2VsZWN0TW90aW9uKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBpZiAodGhpcy5tb3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubW90aW9uO1xuICAgIH1cblxuICAgIGlmIChzdG9yZS5wcmlzdGluZSA9PT0gdHJ1ZSkge1xuICAgICAgLy8gSWYgZmVhdHVyZXMgaGF2ZSBqdXN0IGJlZW4gbG9hZGVkIGludG8gdGhlIHN0b3JlLCBtb3ZlL3pvb20gb24gdGhlbVxuICAgICAgcmV0dXJuIEZlYXR1cmVNb3Rpb24uRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKHN0b3JlLmNvdW50ID4gc3RvcmUudmlldy5jb3VudCkge1xuICAgICAgLy8gSWYgZmVhdHVyZXMgaGF2ZSBiZWVuIGZpbHRlcmVkLCBtb3ZlL3pvb20gb24gdGhlIHJlbWFpbmluZyBvbmVzXG4gICAgICByZXR1cm4gRmVhdHVyZU1vdGlvbi5EZWZhdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPbiBpbnNlcnQsIHVwZGF0ZSBvciBkZWxldGUsIGRvIG5vdGhpbmdcbiAgICAgIHJldHVybiBGZWF0dXJlTW90aW9uLk5vbmU7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,158 +0,0 @@
1
- import { EntityStoreStrategy } from '@igo2/common/entity';
2
- import { Document as FlexSearchDocument } from 'flexsearch';
3
- import { skipWhile } from 'rxjs/operators';
4
- /**
5
- *
6
- * This strategy loads a layer's features's properties into a searchable index.
7
- */
8
- export class FeatureStoreSearchIndexStrategy extends EntityStoreStrategy {
9
- options;
10
- /**
11
- * Subscription to the store's OL source changes
12
- */
13
- stores$$ = new Map();
14
- constructor(options) {
15
- super(options);
16
- this.options = options;
17
- }
18
- /**
19
- * Bind this strategy to a store and start watching for entities changes
20
- * @param store Feature store
21
- */
22
- bindStore(store) {
23
- super.bindStore(store);
24
- if (this.active === true) {
25
- this.watchStore(store);
26
- }
27
- }
28
- /**
29
- * Unbind this strategy from a store and stop watching for entities changes
30
- * @param store Feature store
31
- */
32
- unbindStore(store) {
33
- super.unbindStore(store);
34
- if (this.active === true) {
35
- this.unwatchStore(store);
36
- }
37
- }
38
- /**
39
- * Start watching all stores already bound to that strategy at once.
40
- * @internal
41
- */
42
- doActivate() {
43
- this.stores.forEach((store) => this.watchStore(store));
44
- }
45
- /**
46
- * Stop watching all stores bound to that strategy
47
- * @internal
48
- */
49
- doDeactivate() {
50
- this.unwatchAll();
51
- }
52
- initStoreSearchIndex(store) {
53
- store.searchDocument = new FlexSearchDocument({ tokenize: 'full' });
54
- }
55
- /**
56
- * Watch for a store's entities changes
57
- * @param store Feature store
58
- */
59
- watchStore(store) {
60
- if (this.stores$$.has(store)) {
61
- return;
62
- }
63
- this.initStoreSearchIndex(store);
64
- store.entities$
65
- .pipe(skipWhile((e) => !e.length))
66
- .subscribe(() => this.onEntitiesChanges(store));
67
- }
68
- /**
69
- * Stop watching for a store's entities changes
70
- * @param store Feature store
71
- */
72
- unwatchStore(store) {
73
- const key = this.stores$$.get(store);
74
- if (key !== undefined) {
75
- store.searchDocument = undefined;
76
- this.stores$$.delete(store);
77
- }
78
- }
79
- /**
80
- * Stop watching for OL source changes in all stores.
81
- */
82
- unwatchAll() {
83
- this.stores$$.clear();
84
- }
85
- /**
86
- * Maintain searcahble index for every loaded entities
87
- * @param store Feature store
88
- */
89
- onEntitiesChanges(store) {
90
- const ratio = this.options.percentDistinctValueRatio || 2;
91
- const featuresProperties = [];
92
- store.index.forEach((value, key) => {
93
- const fp = value.properties;
94
- fp.igoSearchID = key;
95
- featuresProperties.push(fp);
96
- });
97
- const toIndex = [];
98
- let columnsToNotIndex = [];
99
- let contentToIndex = [];
100
- if (this.options.sourceFields) {
101
- columnsToNotIndex = this.options.sourceFields.filter((sf) => !sf.searchIndex?.enabled);
102
- contentToIndex = this.options.sourceFields
103
- .filter((sf) => sf.searchIndex?.enabled)
104
- .map((sf2) => {
105
- return Object.assign({}, { field: sf2.name, tokenize: 'full' }, sf2.searchIndex);
106
- });
107
- }
108
- else {
109
- if (featuresProperties.length) {
110
- // THIS METHOD COMPUTE COLUMN DISTINCT VALUE TO FILTER WHICH COLUMN TO INDEX BASED ON A RATIO or discard float columns
111
- const columns = Object.keys(featuresProperties[0]);
112
- const columnsToIndex = [];
113
- columnsToNotIndex = columns
114
- .map((column) => {
115
- const distinctValues = [
116
- ...new Set(featuresProperties.map((item) => item[column]))
117
- ];
118
- // identify column to not index based on a ratio distinctValues/nb of features OR discart exclusive float column (ex: lat, long)
119
- if ((distinctValues.length / featuresProperties.length) * 100 <=
120
- ratio ||
121
- distinctValues.every((n) => Number(n) === n && n % 1 !== 0)) {
122
- columnsToNotIndex.push(column);
123
- }
124
- else {
125
- columnsToIndex.push(column);
126
- }
127
- })
128
- .filter((f) => f);
129
- const keysToIndex = columnsToIndex.filter((f) => f !== 'igoSearchID');
130
- contentToIndex = keysToIndex.map((key) => {
131
- return { field: key, tokenize: 'full' };
132
- });
133
- }
134
- }
135
- store.index.forEach((value) => {
136
- const propertiesToIndex = JSON.parse(JSON.stringify(value.properties));
137
- columnsToNotIndex.map((c) => delete propertiesToIndex[c]);
138
- if (Object.keys(propertiesToIndex).length) {
139
- toIndex.push(propertiesToIndex);
140
- }
141
- });
142
- if (toIndex.length === 0) {
143
- this.initStoreSearchIndex(store);
144
- }
145
- else {
146
- store.searchDocument = new FlexSearchDocument({
147
- document: {
148
- id: 'igoSearchID',
149
- index: contentToIndex
150
- }
151
- });
152
- toIndex.map((i) => {
153
- store.searchDocument.add(i.igoSearchID, i);
154
- });
155
- }
156
- }
157
- }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmVhdHVyZS9zaGFyZWQvc3RyYXRlZ2llcy9zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsT0FBTyxFQUFtQixRQUFRLElBQUksa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzNDOzs7R0FHRztBQUNILE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxtQkFBbUI7SUFNaEQ7SUFMdEI7O09BRUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFFbkQsWUFBc0IsT0FBK0M7UUFDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREssWUFBTyxHQUFQLE9BQU8sQ0FBd0M7SUFFckUsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxLQUFtQjtRQUMzQixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEtBQW1CO1FBQzdCLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDTyxVQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENB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LENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTdG9yZVN0cmF0ZWd5IH0gZnJvbSAnQGlnbzIvY29tbW9uL2VudGl0eSc7XG5cbmltcG9ydCB7IERvY3VtZW50T3B0aW9ucywgRG9jdW1lbnQgYXMgRmxleFNlYXJjaERvY3VtZW50IH0gZnJvbSAnZmxleHNlYXJjaCc7XG5pbXBvcnQgeyBza2lwV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZlYXR1cmVTdG9yZVNlYXJjaEluZGV4U3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnLi4vZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcblxuLyoqXG4gKlxuICogVGhpcyBzdHJhdGVneSBsb2FkcyBhIGxheWVyJ3MgZmVhdHVyZXMncyBwcm9wZXJ0aWVzIGludG8gYSBzZWFyY2hhYmxlIGluZGV4LlxuICovXG5leHBvcnQgY2xhc3MgRmVhdHVyZVN0b3JlU2VhcmNoSW5kZXhTdHJhdGVneSBleHRlbmRzIEVudGl0eVN0b3JlU3RyYXRlZ3kge1xuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBzdG9yZSdzIE9MIHNvdXJjZSBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIHN0b3JlcyQkID0gbmV3IE1hcDxGZWF0dXJlU3RvcmUsIHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogRmVhdHVyZVN0b3JlU2VhcmNoSW5kZXhTdHJhdGVneU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgc3RyYXRlZ3kgdG8gYSBzdG9yZSBhbmQgc3RhcnQgd2F0Y2hpbmcgZm9yIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIGJpbmRTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgc3VwZXIuYmluZFN0b3JlKHN0b3JlKTtcbiAgICBpZiAodGhpcy5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMud2F0Y2hTdG9yZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuYmluZCB0aGlzIHN0cmF0ZWd5IGZyb20gYSBzdG9yZSBhbmQgc3RvcCB3YXRjaGluZyBmb3IgZW50aXRpZXMgY2hhbmdlc1xuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgdW5iaW5kU3RvcmUoc3RvcmU6IEZlYXR1cmVTdG9yZSkge1xuICAgIHN1cGVyLnVuYmluZFN0b3JlKHN0b3JlKTtcbiAgICBpZiAodGhpcy5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMudW53YXRjaFN0b3JlKHN0b3JlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgd2F0Y2hpbmcgYWxsIHN0b3JlcyBhbHJlYWR5IGJvdW5kIHRvIHRoYXQgc3RyYXRlZ3kgYXQgb25jZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9BY3RpdmF0ZSgpIHtcbiAgICB0aGlzLnN0b3Jlcy5mb3JFYWNoKChzdG9yZTogRmVhdHVyZVN0b3JlKSA9PiB0aGlzLndhdGNoU3RvcmUoc3RvcmUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHdhdGNoaW5nIGFsbCBzdG9yZXMgYm91bmQgdG8gdGhhdCBzdHJhdGVneVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBkb0RlYWN0aXZhdGUoKSB7XG4gICAgdGhpcy51bndhdGNoQWxsKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdG9yZVNlYXJjaEluZGV4KHN0b3JlKSB7XG4gICAgc3RvcmUuc2VhcmNoRG9jdW1lbnQgPSBuZXcgRmxleFNlYXJjaERvY3VtZW50KHsgdG9rZW5pemU6ICdmdWxsJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaCBmb3IgYSBzdG9yZSdzIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgd2F0Y2hTdG9yZShzdG9yZTogRmVhdHVyZVN0b3JlKSB7XG4gICAgaWYgKHRoaXMuc3RvcmVzJCQuaGFzKHN0b3JlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmluaXRTdG9yZVNlYXJjaEluZGV4KHN0b3JlKTtcblxuICAgIHN0b3JlLmVudGl0aWVzJFxuICAgICAgLnBpcGUoc2tpcFdoaWxlKChlKSA9PiAhZS5sZW5ndGgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uRW50aXRpZXNDaGFuZ2VzKHN0b3JlKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBmb3IgYSBzdG9yZSdzIGVudGl0aWVzIGNoYW5nZXNcbiAgICogQHBhcmFtIHN0b3JlIEZlYXR1cmUgc3RvcmVcbiAgICovXG4gIHByaXZhdGUgdW53YXRjaFN0b3JlKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JlcyQkLmdldChzdG9yZSk7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdG9yZS5zZWFyY2hEb2N1bWVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmVzJCQuZGVsZXRlKHN0b3JlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyBmb3IgT0wgc291cmNlIGNoYW5nZXMgaW4gYWxsIHN0b3Jlcy5cbiAgICovXG4gIHByaXZhdGUgdW53YXRjaEFsbCgpIHtcbiAgICB0aGlzLnN0b3JlcyQkLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFpbnRhaW4gc2VhcmNhaGJsZSBpbmRleCBmb3IgZXZlcnkgbG9hZGVkIGVudGl0aWVzXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICBwcml2YXRlIG9uRW50aXRpZXNDaGFuZ2VzKHN0b3JlOiBGZWF0dXJlU3RvcmUpIHtcbiAgICBjb25zdCByYXRpbyA9IHRoaXMub3B0aW9ucy5wZXJjZW50RGlzdGluY3RWYWx1ZVJhdGlvIHx8IDI7XG4gICAgY29uc3QgZmVhdHVyZXNQcm9wZXJ0aWVzID0gW107XG4gICAgc3RvcmUuaW5kZXguZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgY29uc3QgZnAgPSB2YWx1ZS5wcm9wZXJ0aWVzO1xuICAgICAgZnAuaWdvU2VhcmNoSUQgPSBrZXk7XG4gICAgICBmZWF0dXJlc1Byb3BlcnRpZXMucHVzaChmcCk7XG4gICAgfSk7XG4gICAgY29uc3QgdG9JbmRleCA9IFtdO1xuICAgIGxldCBjb2x1bW5zVG9Ob3RJbmRleCA9IFtdO1xuICAgIGxldCBjb250ZW50VG9JbmRleCA9IFtdO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlRmllbGRzKSB7XG4gICAgICBjb2x1bW5zVG9Ob3RJbmRleCA9IHRoaXMub3B0aW9ucy5zb3VyY2VGaWVsZHMuZmlsdGVyKFxuICAgICAgICAoc2YpID0+ICFzZi5zZWFyY2hJbmRleD8uZW5hYmxlZFxuICAgICAgKTtcbiAgICAgIGNvbnRlbnRUb0luZGV4ID0gdGhpcy5vcHRpb25zLnNvdXJjZUZpZWxkc1xuICAgICAgICAuZmlsdGVyKChzZikgPT4gc2Yuc2VhcmNoSW5kZXg/LmVuYWJsZWQpXG4gICAgICAgIC5tYXAoKHNmMikgPT4ge1xuICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICB7IGZpZWxkOiBzZjIubmFtZSwgdG9rZW5pemU6ICdmdWxsJyB9LFxuICAgICAgICAgICAgc2YyLnNlYXJjaEluZGV4XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmZWF0dXJlc1Byb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIFRISVMgTUVUSE9EIENPTVBVVEUgQ09MVU1OIERJU1RJTkNUIFZBTFVFIFRPIEZJTFRFUiBXSElDSCBDT0xVTU4gVE8gSU5ERVggQkFTRUQgT04gQSBSQVRJTyBvciBkaXNjYXJkIGZsb2F0IGNvbHVtbnNcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IE9iamVjdC5rZXlzKGZlYXR1cmVzUHJvcGVydGllc1swXSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNUb0luZGV4ID0gW107XG4gICAgICAgIGNvbHVtbnNUb05vdEluZGV4ID0gY29sdW1uc1xuICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlzdGluY3RWYWx1ZXMgPSBbXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoZmVhdHVyZXNQcm9wZXJ0aWVzLm1hcCgoaXRlbSkgPT4gaXRlbVtjb2x1bW5dKSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICAvLyBpZGVudGlmeSBjb2x1bW4gdG8gbm90IGluZGV4IGJhc2VkIG9uIGEgcmF0aW8gZGlzdGluY3RWYWx1ZXMvbmIgb2YgZmVhdHVyZXMgT1IgZGlzY2FydCBleGNsdXNpdmUgZmxvYXQgY29sdW1uIChleDogbGF0LCBsb25nKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoZGlzdGluY3RWYWx1ZXMubGVuZ3RoIC8gZmVhdHVyZXNQcm9wZXJ0aWVzLmxlbmd0aCkgKiAxMDAgPD1cbiAgICAgICAgICAgICAgICByYXRpbyB8fFxuICAgICAgICAgICAgICBkaXN0aW5jdFZhbHVlcy5ldmVyeSgobikgPT4gTnVtYmVyKG4pID09PSBuICYmIG4gJSAxICE9PSAwKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbHVtbnNUb05vdEluZGV4LnB1c2goY29sdW1uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbHVtbnNUb0luZGV4LnB1c2goY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIoKGYpID0+IGYpO1xuICAgICAgICBjb25zdCBrZXlzVG9JbmRleCA9IGNvbHVtbnNUb0luZGV4LmZpbHRlcigoZikgPT4gZiAhPT0gJ2lnb1NlYXJjaElEJyk7XG4gICAgICAgIGNvbnRlbnRUb0luZGV4ID0ga2V5c1RvSW5kZXgubWFwKChrZXkpID0+IHtcbiAgICAgICAgICByZXR1cm4geyBmaWVsZDoga2V5LCB0b2tlbml6ZTogJ2Z1bGwnIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBzdG9yZS5pbmRleC5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllc1RvSW5kZXggPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlLnByb3BlcnRpZXMpKTtcbiAgICAgIGNvbHVtbnNUb05vdEluZGV4Lm1hcCgoYykgPT4gZGVsZXRlIHByb3BlcnRpZXNUb0luZGV4W2NdKTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhwcm9wZXJ0aWVzVG9JbmRleCkubGVuZ3RoKSB7XG4gICAgICAgIHRvSW5kZXgucHVzaChwcm9wZXJ0aWVzVG9JbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodG9JbmRleC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaW5pdFN0b3JlU2VhcmNoSW5kZXgoc3RvcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdG9yZS5zZWFyY2hEb2N1bWVudCA9IG5ldyBGbGV4U2VhcmNoRG9jdW1lbnQoe1xuICAgICAgICBkb2N1bWVudDoge1xuICAgICAgICAgIGlkOiAnaWdvU2VhcmNoSUQnLFxuICAgICAgICAgIGluZGV4OiBjb250ZW50VG9JbmRleFxuICAgICAgICB9IGFzIERvY3VtZW50T3B0aW9uczxhbnk+XG4gICAgICB9KTtcbiAgICAgIHRvSW5kZXgubWFwKChpKSA9PiB7XG4gICAgICAgIHN0b3JlLnNlYXJjaERvY3VtZW50LmFkZChpLmlnb1NlYXJjaElELCBpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19