@igo2/geo 1.9.0 → 1.10.0

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 (387) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/bundles/igo2-geo.umd.js +3651 -2762
  7. package/bundles/igo2-geo.umd.js.map +1 -1
  8. package/esm2015/lib/catalog/catalog-browser/catalog-browser-group.component.js +2 -2
  9. package/esm2015/lib/catalog/catalog-browser/catalog-browser-layer.component.js +2 -2
  10. package/esm2015/lib/catalog/catalog-browser/catalog-browser.module.js +1 -1
  11. package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +72 -53
  12. package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +2 -1
  13. package/esm2015/lib/catalog/catalog.module.js +1 -1
  14. package/esm2015/lib/catalog/shared/catalog.abstract.js +1 -1
  15. package/esm2015/lib/catalog/shared/catalog.interface.js +1 -1
  16. package/esm2015/lib/catalog/shared/catalog.service.js +13 -3
  17. package/esm2015/lib/catalog/shared/index.js +1 -1
  18. package/esm2015/lib/datasource/datasource.module.js +1 -1
  19. package/esm2015/lib/datasource/index.js +1 -1
  20. package/esm2015/lib/datasource/shared/capabilities.service.js +4 -4
  21. package/esm2015/lib/datasource/shared/datasources/carto-datasource.interface.js +1 -1
  22. package/esm2015/lib/datasource/shared/datasources/carto-datasource.js +2 -2
  23. package/esm2015/lib/datasource/shared/datasources/cluster-datasource.js +1 -1
  24. package/esm2015/lib/datasource/shared/datasources/data.service.js +1 -1
  25. package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +1 -1
  26. package/esm2015/lib/datasource/shared/datasources/datasource.js +1 -1
  27. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.interface.js +1 -1
  28. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +2 -2
  29. package/esm2015/lib/datasource/shared/datasources/osm-datasource.interface.js +1 -1
  30. package/esm2015/lib/datasource/shared/datasources/websocket-datasource.interface.js +1 -1
  31. package/esm2015/lib/datasource/shared/datasources/websocket-datasource.js +1 -1
  32. package/esm2015/lib/datasource/shared/datasources/wfs-datasource.interface.js +1 -1
  33. package/esm2015/lib/datasource/shared/datasources/wfs.service.js +1 -1
  34. package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +1 -1
  35. package/esm2015/lib/datasource/shared/datasources/wmts-datasource.interface.js +1 -1
  36. package/esm2015/lib/datasource/shared/datasources/xyz-datasource.interface.js +1 -1
  37. package/esm2015/lib/datasource/shared/datasources/xyz-datasource.js +1 -1
  38. package/esm2015/lib/datasource/shared/index.js +1 -1
  39. package/esm2015/lib/datasource/shared/options/index.js +1 -1
  40. package/esm2015/lib/datasource/shared/options/options-api.interface.js +1 -1
  41. package/esm2015/lib/datasource/shared/options/options-api.providers.js +1 -1
  42. package/esm2015/lib/datasource/shared/options/options-api.service.js +1 -1
  43. package/esm2015/lib/datasource/shared/options/options.service.js +1 -1
  44. package/esm2015/lib/datasource/utils/esri-style-generator.js +1 -1
  45. package/esm2015/lib/datasource/utils/index.js +1 -1
  46. package/esm2015/lib/datasource/utils/tilegrid.js +1 -1
  47. package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +223 -0
  48. package/esm2015/lib/directions/directions-buttons/index.js +2 -0
  49. package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +300 -0
  50. package/esm2015/lib/directions/directions-inputs/index.js +2 -0
  51. package/esm2015/lib/directions/directions-results/directions-results.component.js +204 -0
  52. package/esm2015/lib/directions/directions-results/index.js +2 -0
  53. package/esm2015/lib/directions/directions-sources/directions-source.interface.js +1 -1
  54. package/esm2015/lib/directions/directions-sources/directions-source.js +1 -1
  55. package/esm2015/lib/directions/directions-sources/directions-source.provider.js +1 -1
  56. package/esm2015/lib/directions/directions-sources/index.js +1 -1
  57. package/esm2015/lib/directions/directions-sources/osrm-directions-source.js +11 -2
  58. package/esm2015/lib/directions/directions.component.js +314 -0
  59. package/esm2015/lib/directions/directions.module.js +31 -10
  60. package/esm2015/lib/directions/index.js +5 -2
  61. package/esm2015/lib/directions/shared/directions-source.service.js +1 -1
  62. package/esm2015/lib/directions/shared/directions.enum.js +20 -3
  63. package/esm2015/lib/directions/shared/directions.interface.js +1 -1
  64. package/esm2015/lib/directions/shared/directions.service.js +1 -1
  65. package/esm2015/lib/directions/shared/directions.utils.js +507 -0
  66. package/esm2015/lib/directions/shared/index.js +3 -1
  67. package/esm2015/lib/directions/shared/store.js +24 -0
  68. package/esm2015/lib/download/download-button/download-button.component.js +1 -1
  69. package/esm2015/lib/download/download-button/index.js +1 -1
  70. package/esm2015/lib/download/download.module.js +1 -1
  71. package/esm2015/lib/download/index.js +1 -1
  72. package/esm2015/lib/download/shared/download.interface.js +1 -1
  73. package/esm2015/lib/download/shared/download.service.js +1 -1
  74. package/esm2015/lib/download/shared/index.js +1 -1
  75. package/esm2015/lib/draw/draw/draw-popup.component.js +6 -5
  76. package/esm2015/lib/draw/draw/draw.component.js +22 -17
  77. package/esm2015/lib/draw/shared/draw.utils.js +1 -1
  78. package/esm2015/lib/feature/feature-details/feature-details.directive.js +1 -1
  79. package/esm2015/lib/feature/feature-details/feature-details.module.js +1 -1
  80. package/esm2015/lib/feature/feature-form/feature-form.component.js +1 -1
  81. package/esm2015/lib/feature/feature-form/feature-form.module.js +1 -1
  82. package/esm2015/lib/feature/feature.module.js +1 -1
  83. package/esm2015/lib/feature/index.js +1 -1
  84. package/esm2015/lib/feature/shared/feature.enums.js +1 -1
  85. package/esm2015/lib/feature/shared/feature.interfaces.js +1 -1
  86. package/esm2015/lib/feature/shared/index.js +1 -1
  87. package/esm2015/lib/feature/shared/strategies/in-map-extent.js +1 -1
  88. package/esm2015/lib/feature/shared/strategies/in-map-resolution.js +1 -1
  89. package/esm2015/lib/feature/shared/strategies/index.js +1 -1
  90. package/esm2015/lib/feature/shared/strategies/loading-layer.js +1 -1
  91. package/esm2015/lib/feature/shared/strategies/loading.js +1 -1
  92. package/esm2015/lib/feature/shared/strategies/selection.js +5 -9
  93. package/esm2015/lib/feature/shared/strategies.utils.js +1 -1
  94. package/esm2015/lib/filter/filter.module.js +7 -4
  95. package/esm2015/lib/filter/ogc-filter-button/index.js +1 -1
  96. package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +1 -1
  97. package/esm2015/lib/filter/ogc-filter-form/index.js +1 -1
  98. package/esm2015/lib/filter/ogc-filter-form/ogc-filter-form.component.js +3 -3
  99. package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +1 -1
  100. package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +240 -121
  101. package/esm2015/lib/filter/ogc-filterable-form/index.js +1 -1
  102. package/esm2015/lib/filter/ogc-filterable-item/index.js +1 -1
  103. package/esm2015/lib/filter/ogc-filterable-item/ogc-filterable-item.component.js +2 -2
  104. package/esm2015/lib/filter/ogc-filterable-list/index.js +1 -1
  105. package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.js +1 -1
  106. package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list.component.js +1 -1
  107. package/esm2015/lib/filter/shared/filterable-datasource.pipe.js +1 -1
  108. package/esm2015/lib/filter/shared/index.js +1 -1
  109. package/esm2015/lib/filter/shared/ogc-filter.enum.js +1 -1
  110. package/esm2015/lib/filter/shared/ogc-filter.interface.js +1 -1
  111. package/esm2015/lib/filter/shared/ogc-filter.js +1 -1
  112. package/esm2015/lib/filter/shared/ogc-filter.service.js +1 -1
  113. package/esm2015/lib/filter/shared/spatial-filter.enum.js +1 -1
  114. package/esm2015/lib/filter/shared/spatial-filter.interface.js +1 -1
  115. package/esm2015/lib/filter/shared/time-filter.enum.js +1 -1
  116. package/esm2015/lib/filter/shared/time-filter.interface.js +1 -1
  117. package/esm2015/lib/filter/shared/time-filter.service.js +1 -1
  118. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/index.js +1 -1
  119. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +185 -95
  120. package/esm2015/lib/filter/spatial-filter/spatial-filter-list/index.js +1 -1
  121. package/esm2015/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.js +1 -1
  122. package/esm2015/lib/filter/spatial-filter/spatial-filter-type/index.js +1 -1
  123. package/esm2015/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.js +1 -1
  124. package/esm2015/lib/filter/time-filter-button/index.js +1 -1
  125. package/esm2015/lib/filter/time-filter-button/time-filter-button.component.js +1 -1
  126. package/esm2015/lib/filter/time-filter-form/index.js +1 -1
  127. package/esm2015/lib/filter/time-filter-form/time-filter-form.component.js +1 -1
  128. package/esm2015/lib/filter/time-filter-item/index.js +1 -1
  129. package/esm2015/lib/filter/time-filter-item/time-filter-item.component.js +2 -2
  130. package/esm2015/lib/filter/time-filter-list/index.js +1 -1
  131. package/esm2015/lib/filter/time-filter-list/time-filter-list-binding.directive.js +1 -1
  132. package/esm2015/lib/filter/time-filter-list/time-filter-list.component.js +1 -1
  133. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field-input.component.js +3 -3
  134. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.component.js +1 -1
  135. package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.module.js +1 -1
  136. package/esm2015/lib/geometry/geometry.module.js +1 -1
  137. package/esm2015/lib/geometry/index.js +1 -1
  138. package/esm2015/lib/geometry/shared/controls/draw.js +1 -1
  139. package/esm2015/lib/geometry/shared/controls/index.js +1 -1
  140. package/esm2015/lib/geometry/shared/geometry.errors.js +3 -3
  141. package/esm2015/lib/geometry/shared/index.js +1 -1
  142. package/esm2015/lib/import-export/export-button/export-button.component.js +1 -1
  143. package/esm2015/lib/import-export/export-button/index.js +1 -1
  144. package/esm2015/lib/import-export/import-export/import-export.component.js +179 -66
  145. package/esm2015/lib/import-export/import-export.module.js +1 -1
  146. package/esm2015/lib/import-export/index.js +1 -1
  147. package/esm2015/lib/import-export/shared/drop-geo-file.directive.js +1 -1
  148. package/esm2015/lib/import-export/shared/export.errors.js +1 -1
  149. package/esm2015/lib/import-export/shared/export.interface.js +1 -1
  150. package/esm2015/lib/import-export/shared/export.type.js +1 -1
  151. package/esm2015/lib/import-export/shared/export.utils.js +1 -1
  152. package/esm2015/lib/import-export/shared/import.interface.js +1 -1
  153. package/esm2015/lib/import-export/shared/import.service.js +1 -1
  154. package/esm2015/lib/import-export/shared/import.utils.js +1 -1
  155. package/esm2015/lib/import-export/shared/index.js +1 -1
  156. package/esm2015/lib/import-export/style-list/index.js +1 -1
  157. package/esm2015/lib/import-export/style-list/style-list.interface.js +1 -1
  158. package/esm2015/lib/import-export/style-list/style-list.module.js +1 -1
  159. package/esm2015/lib/import-export/style-list/style-list.provider.js +1 -1
  160. package/esm2015/lib/import-export/style-list/style-list.service.js +1 -1
  161. package/esm2015/lib/layer/index.js +1 -1
  162. package/esm2015/lib/layer/layer-item/index.js +1 -1
  163. package/esm2015/lib/layer/layer-item/layer-item.component.js +3 -3
  164. package/esm2015/lib/layer/layer-legend/index.js +1 -1
  165. package/esm2015/lib/layer/layer-legend/layer-legend.component.js +23 -16
  166. package/esm2015/lib/layer/layer-legend-item/index.js +1 -1
  167. package/esm2015/lib/layer/layer-legend-item/layer-legend-item.component.js +1 -1
  168. package/esm2015/lib/layer/layer-legend-list/index.js +1 -1
  169. package/esm2015/lib/layer/layer-legend-list/layer-legend-list-binding.directive.js +1 -1
  170. package/esm2015/lib/layer/layer-legend-list/layer-legend-list.component.js +5 -5
  171. package/esm2015/lib/layer/layer-list/index.js +1 -1
  172. package/esm2015/lib/layer/layer-list/layer-list-binding.directive.js +1 -1
  173. package/esm2015/lib/layer/layer-list/layer-list.component.js +44 -44
  174. package/esm2015/lib/layer/layer-list/layer-list.enum.js +1 -1
  175. package/esm2015/lib/layer/layer-list-tool/index.js +1 -1
  176. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.component.js +2 -2
  177. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.enum.js +1 -1
  178. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.interface.js +1 -1
  179. package/esm2015/lib/layer/layer-list-tool/layer-list-tool.service.js +1 -1
  180. package/esm2015/lib/layer/layer.module.js +8 -5
  181. package/esm2015/lib/layer/shared/clusterParam.js +1 -1
  182. package/esm2015/lib/layer/shared/index.js +1 -1
  183. package/esm2015/lib/layer/shared/layer.enums.js +1 -1
  184. package/esm2015/lib/layer/shared/layer.service.js +20 -17
  185. package/esm2015/lib/layer/shared/layers/any-layer.interface.js +1 -1
  186. package/esm2015/lib/layer/shared/layers/any-layer.js +1 -1
  187. package/esm2015/lib/layer/shared/layers/image-layer.js +9 -4
  188. package/esm2015/lib/layer/shared/layers/index.js +1 -1
  189. package/esm2015/lib/layer/shared/layers/layer.js +15 -5
  190. package/esm2015/lib/layer/shared/layers/tile-layer.js +23 -3
  191. package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +1 -1
  192. package/esm2015/lib/layer/shared/layers/vector-layer.js +20 -10
  193. package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +1 -1
  194. package/esm2015/lib/layer/shared/layers/vectortile-layer.js +13 -3
  195. package/esm2015/lib/layer/shared/style.service.js +21 -16
  196. package/esm2015/lib/layer/shared/vector-style.interface.js +1 -1
  197. package/esm2015/lib/layer/track-feature-button/index.js +1 -1
  198. package/esm2015/lib/layer/track-feature-button/track-feature-button.component.js +1 -1
  199. package/esm2015/lib/layer/utils/index.js +2 -1
  200. package/esm2015/lib/layer/utils/layer.utils.js +11 -0
  201. package/esm2015/lib/layer/utils/layerSync-watcher.js +1 -1
  202. package/esm2015/lib/layer/utils/tile-watcher.js +1 -1
  203. package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.animation.js +1 -1
  204. package/esm2015/lib/map/baselayers-switcher/index.js +1 -1
  205. package/esm2015/lib/map/baselayers-switcher/mini-basemap.component.js +1 -1
  206. package/esm2015/lib/map/geolocate-button/geolocate-button.component.js +1 -1
  207. package/esm2015/lib/map/geolocate-button/index.js +1 -1
  208. package/esm2015/lib/map/index.js +2 -1
  209. package/esm2015/lib/map/map-browser/index.js +1 -1
  210. package/esm2015/lib/map/map-browser/map-browser.component.js +1 -1
  211. package/esm2015/lib/map/map.module.js +10 -5
  212. package/esm2015/lib/map/menu-button/index.js +2 -0
  213. package/esm2015/lib/map/menu-button/menu-button.component.js +66 -0
  214. package/esm2015/lib/map/offline-button/index.js +1 -1
  215. package/esm2015/lib/map/offline-button/offline-button.component.js +1 -1
  216. package/esm2015/lib/map/rotation-button/index.js +1 -1
  217. package/esm2015/lib/map/rotation-button/rotation-button.component.js +1 -1
  218. package/esm2015/lib/map/shared/controllers/index.js +1 -1
  219. package/esm2015/lib/map/shared/hover-feature.directive.js +231 -80
  220. package/esm2015/lib/map/shared/map-pointer-position.directive.js +3 -1
  221. package/esm2015/lib/map/shared/map.enums.js +1 -1
  222. package/esm2015/lib/map/shared/map.interface.js +1 -1
  223. package/esm2015/lib/map/shared/map.js +38 -16
  224. package/esm2015/lib/map/shared/map.service.js +1 -1
  225. package/esm2015/lib/map/shared/map.utils.js +7 -3
  226. package/esm2015/lib/map/shared/projection.service.js +1 -1
  227. package/esm2015/lib/map/shared/projection.utils.js +1 -1
  228. package/esm2015/lib/map/swipe-control/swipe-control.component.js +1 -1
  229. package/esm2015/lib/map/zoom-button/index.js +1 -1
  230. package/esm2015/lib/map/zoom-button/zoom-button.component.js +1 -1
  231. package/esm2015/lib/measure/index.js +1 -1
  232. package/esm2015/lib/measure/measure.module.js +1 -1
  233. package/esm2015/lib/measure/measurer/measure-format.pipe.js +1 -1
  234. package/esm2015/lib/measure/measurer/measurer-dialog.component.js +188 -176
  235. package/esm2015/lib/measure/measurer/measurer-item.component.js +17 -12
  236. package/esm2015/lib/measure/measurer/measurer.component.js +170 -69
  237. package/esm2015/lib/measure/measurer/measurer.module.js +13 -8
  238. package/esm2015/lib/measure/shared/index.js +1 -1
  239. package/esm2015/lib/measure/shared/measure.enum.js +1 -1
  240. package/esm2015/lib/measure/shared/measure.interfaces.js +1 -1
  241. package/esm2015/lib/measure/shared/measure.utils.js +1 -1
  242. package/esm2015/lib/metadata/index.js +1 -1
  243. package/esm2015/lib/metadata/metadata-button/index.js +1 -1
  244. package/esm2015/lib/metadata/shared/index.js +1 -1
  245. package/esm2015/lib/metadata/shared/metadata.service.js +1 -1
  246. package/esm2015/lib/overlay/index.js +1 -1
  247. package/esm2015/lib/overlay/overlay.module.js +1 -1
  248. package/esm2015/lib/overlay/shared/index.js +1 -1
  249. package/esm2015/lib/overlay/shared/overlay-marker-style.utils.js +2 -2
  250. package/esm2015/lib/overlay/shared/overlay.directive.js +1 -1
  251. package/esm2015/lib/overlay/shared/overlay.enum.js +1 -1
  252. package/esm2015/lib/overlay/shared/overlay.service.js +1 -1
  253. package/esm2015/lib/print/index.js +1 -1
  254. package/esm2015/lib/print/print-form/index.js +1 -1
  255. package/esm2015/lib/print/print.module.js +1 -1
  256. package/esm2015/lib/print/shared/index.js +1 -1
  257. package/esm2015/lib/print/shared/print.service.js +1 -1
  258. package/esm2015/lib/query/index.js +1 -1
  259. package/esm2015/lib/query/query.module.js +1 -1
  260. package/esm2015/lib/query/shared/index.js +1 -1
  261. package/esm2015/lib/query/shared/query-search-source.js +1 -1
  262. package/esm2015/lib/query/shared/query-search-source.providers.js +1 -1
  263. package/esm2015/lib/query/shared/query.directive.js +4 -4
  264. package/esm2015/lib/query/shared/query.enums.js +1 -1
  265. package/esm2015/lib/query/shared/query.interfaces.js +1 -1
  266. package/esm2015/lib/query/shared/query.service.js +24 -3
  267. package/esm2015/lib/query/shared/query.utils.js +19 -1
  268. package/esm2015/lib/search/index.js +1 -1
  269. package/esm2015/lib/search/search-bar/search-bar.component.js +2 -2
  270. package/esm2015/lib/search/search-bar/search-bar.module.js +1 -1
  271. package/esm2015/lib/search/search-bar/search-url-param.directive.js +1 -1
  272. package/esm2015/lib/search/search-results/search-results-add-button.component.js +2 -2
  273. package/esm2015/lib/search/search-results/search-results-item.component.js +1 -1
  274. package/esm2015/lib/search/search-results/search-results.component.js +1 -1
  275. package/esm2015/lib/search/search-results/search-results.module.js +1 -1
  276. package/esm2015/lib/search/search-selector/search-selector.component.js +1 -1
  277. package/esm2015/lib/search/search-selector/search-selector.module.js +1 -1
  278. package/esm2015/lib/search/search-settings/search-settings.module.js +1 -1
  279. package/esm2015/lib/search/shared/index.js +1 -1
  280. package/esm2015/lib/search/shared/search-pointer-summary.directive.js +17 -6
  281. package/esm2015/lib/search/shared/search-source-service.providers.js +1 -1
  282. package/esm2015/lib/search/shared/search-source.service.js +1 -1
  283. package/esm2015/lib/search/shared/search.enums.js +1 -1
  284. package/esm2015/lib/search/shared/search.interfaces.js +1 -1
  285. package/esm2015/lib/search/shared/search.utils.js +1 -1
  286. package/esm2015/lib/search/shared/sources/cadastre.js +9 -2
  287. package/esm2015/lib/search/shared/sources/coordinates.interfaces.js +1 -1
  288. package/esm2015/lib/search/shared/sources/coordinates.js +9 -2
  289. package/esm2015/lib/search/shared/sources/icherche.js +17 -4
  290. package/esm2015/lib/search/shared/sources/ilayer.interfaces.js +1 -1
  291. package/esm2015/lib/search/shared/sources/ilayer.js +9 -2
  292. package/esm2015/lib/search/shared/sources/index.js +1 -1
  293. package/esm2015/lib/search/shared/sources/nominatim.interfaces.js +1 -1
  294. package/esm2015/lib/search/shared/sources/nominatim.js +9 -2
  295. package/esm2015/lib/search/shared/sources/storedqueries.interfaces.js +1 -1
  296. package/esm2015/lib/search/shared/sources/storedqueries.js +20 -12
  297. package/esm2015/lib/toast/index.js +1 -1
  298. package/esm2015/lib/toast/toast.component.js +1 -1
  299. package/esm2015/lib/toast/toast.module.js +1 -1
  300. package/esm2015/lib/utils/commonVectorStyle.interface.js +1 -1
  301. package/esm2015/lib/utils/googleLinks.js +1 -1
  302. package/esm2015/lib/utils/osmLinks.js +1 -1
  303. package/esm2015/lib/wkt/index.js +1 -1
  304. package/esm2015/lib/wkt/shared/index.js +1 -1
  305. package/esm2015/lib/wkt/shared/wkt.service.js +15 -15
  306. package/esm2015/lib/wkt/wkt.module.js +1 -1
  307. package/esm2015/lib/workspace/index.js +1 -1
  308. package/esm2015/lib/workspace/shared/feature-workspace.js +1 -1
  309. package/esm2015/lib/workspace/shared/feature-workspace.service.js +1 -1
  310. package/esm2015/lib/workspace/shared/index.js +1 -1
  311. package/esm2015/lib/workspace/shared/wfs-workspace.js +1 -1
  312. package/esm2015/lib/workspace/shared/wfs-workspace.service.js +1 -1
  313. package/esm2015/lib/workspace/shared/wms-workspace.service.js +1 -1
  314. package/esm2015/lib/workspace/widgets/index.js +1 -1
  315. package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.component.js +1 -1
  316. package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.module.js +1 -1
  317. package/esm2015/lib/workspace/widgets/widgets.js +1 -1
  318. package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +1 -1
  319. package/esm2015/lib/workspace/workspace-selector/workspace-selector.module.js +1 -1
  320. package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +1 -1
  321. package/esm2015/lib/workspace/workspace-updator/workspace-updator.module.js +1 -1
  322. package/esm2015/lib/workspace/workspace.module.js +1 -1
  323. package/fesm2015/igo2-geo.js +3221 -2431
  324. package/fesm2015/igo2-geo.js.map +1 -1
  325. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +1 -1
  326. package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -0
  327. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +29 -0
  328. package/lib/directions/directions-buttons/index.d.ts +1 -0
  329. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +45 -0
  330. package/lib/directions/directions-inputs/index.d.ts +1 -0
  331. package/lib/directions/directions-results/directions-results.component.d.ts +30 -0
  332. package/lib/directions/directions-results/index.d.ts +1 -0
  333. package/lib/directions/directions-sources/directions-source.d.ts +2 -2
  334. package/lib/directions/directions-sources/osrm-directions-source.d.ts +2 -2
  335. package/lib/directions/directions.component.d.ts +55 -0
  336. package/lib/directions/directions.module.d.ts +19 -16
  337. package/lib/directions/index.d.ts +4 -1
  338. package/lib/directions/shared/directions.enum.d.ts +16 -2
  339. package/lib/directions/shared/directions.interface.d.ts +53 -3
  340. package/lib/directions/shared/directions.service.d.ts +3 -3
  341. package/lib/directions/shared/directions.utils.d.ts +42 -0
  342. package/lib/directions/shared/index.d.ts +2 -0
  343. package/lib/directions/shared/store.d.ts +18 -0
  344. package/lib/draw/draw/draw-popup.component.d.ts +6 -2
  345. package/lib/feature/shared/strategies/selection.d.ts +1 -0
  346. package/lib/filter/filter.module.d.ts +1 -1
  347. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +6 -1
  348. package/lib/filter/shared/ogc-filter.interface.d.ts +1 -0
  349. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +7 -2
  350. package/lib/import-export/import-export/import-export.component.d.ts +2 -0
  351. package/lib/import-export/shared/export.interface.d.ts +2 -1
  352. package/lib/layer/layer-legend/layer-legend.component.d.ts +0 -1
  353. package/lib/layer/layer.module.d.ts +1 -1
  354. package/lib/layer/shared/layer.service.d.ts +1 -1
  355. package/lib/layer/shared/layers/layer.d.ts +1 -0
  356. package/lib/layer/shared/layers/tile-layer.d.ts +10 -1
  357. package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -0
  358. package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +1 -0
  359. package/lib/layer/shared/style.service.d.ts +4 -1
  360. package/lib/layer/shared/vector-style.interface.d.ts +9 -5
  361. package/lib/layer/utils/index.d.ts +1 -0
  362. package/lib/layer/utils/layer.utils.d.ts +2 -0
  363. package/lib/map/index.d.ts +1 -0
  364. package/lib/map/map.module.d.ts +8 -7
  365. package/lib/map/menu-button/index.d.ts +1 -0
  366. package/lib/map/menu-button/menu-button.component.d.ts +17 -0
  367. package/lib/map/shared/hover-feature.directive.d.ts +14 -5
  368. package/lib/map/shared/map.d.ts +2 -1
  369. package/lib/map/shared/map.interface.d.ts +1 -0
  370. package/lib/map/shared/map.utils.d.ts +1 -1
  371. package/lib/measure/measurer/measurer.component.d.ts +10 -0
  372. package/lib/measure/measurer/measurer.module.d.ts +4 -3
  373. package/lib/query/shared/query.interfaces.d.ts +2 -0
  374. package/lib/query/shared/query.service.d.ts +9 -1
  375. package/lib/query/shared/query.utils.d.ts +12 -0
  376. package/lib/search/shared/search-pointer-summary.directive.d.ts +6 -0
  377. package/lib/search/shared/search.interfaces.d.ts +1 -0
  378. package/ngcc.config.js +3 -3
  379. package/package.json +14 -13
  380. package/esm2015/lib/directions/directions-form/directions-form-binding.directive.js +0 -99
  381. package/esm2015/lib/directions/directions-form/directions-form.component.js +0 -1537
  382. package/esm2015/lib/directions/directions-form/directions-form.service.js +0 -26
  383. package/esm2015/lib/directions/directions-form/index.js +0 -4
  384. package/lib/directions/directions-form/directions-form-binding.directive.d.ts +0 -18
  385. package/lib/directions/directions-form/directions-form.component.d.ts +0 -137
  386. package/lib/directions/directions-form/directions-form.service.d.ts +0 -11
  387. package/lib/directions/directions-form/index.d.ts +0 -3
@@ -0,0 +1,223 @@
1
+ import { Component, Input, Optional } from '@angular/core';
2
+ import { Clipboard } from '@igo2/utils';
3
+ import { Subject } from 'rxjs';
4
+ import { roundCoordTo } from '../../map/shared/map.utils';
5
+ import { addStopToStore, formatDistance, formatDuration, formatInstruction } from '../shared/directions.utils';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@igo2/core";
8
+ import * as i2 from "@angular/material/button";
9
+ import * as i3 from "@angular/material/tooltip";
10
+ import * as i4 from "@angular/material/icon";
11
+ import * as i5 from "@angular/common";
12
+ import * as i6 from "@ngx-translate/core";
13
+ function DirectionsButtonsComponent_button_4_Template(rf, ctx) { if (rf & 1) {
14
+ const _r5 = i0.ɵɵgetCurrentView();
15
+ i0.ɵɵelementStart(0, "button", 5);
16
+ i0.ɵɵlistener("click", function DirectionsButtonsComponent_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(); return ctx_r4.resetStops(); });
17
+ i0.ɵɵpipe(1, "translate");
18
+ i0.ɵɵelement(2, "mat-icon", 6);
19
+ i0.ɵɵelementEnd();
20
+ } if (rf & 2) {
21
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.directionsForm.resetDirectionsBtn"));
22
+ } }
23
+ function DirectionsButtonsComponent_button_7_Template(rf, ctx) { if (rf & 1) {
24
+ const _r7 = i0.ɵɵgetCurrentView();
25
+ i0.ɵɵelementStart(0, "button", 1);
26
+ i0.ɵɵlistener("click", function DirectionsButtonsComponent_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.zoomRoute(); });
27
+ i0.ɵɵpipe(1, "translate");
28
+ i0.ɵɵelement(2, "mat-icon", 7);
29
+ i0.ɵɵelementEnd();
30
+ } if (rf & 2) {
31
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.directionsForm.zoomRoute"));
32
+ } }
33
+ function DirectionsButtonsComponent_button_9_Template(rf, ctx) { if (rf & 1) {
34
+ const _r9 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "button", 1);
36
+ i0.ɵɵlistener("click", function DirectionsButtonsComponent_button_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return ctx_r8.copyDirectionsToClipboard(); });
37
+ i0.ɵɵpipe(1, "translate");
38
+ i0.ɵɵelement(2, "mat-icon", 8);
39
+ i0.ɵɵelementEnd();
40
+ } if (rf & 2) {
41
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.directionsForm.copy"));
42
+ } }
43
+ function DirectionsButtonsComponent_button_11_Template(rf, ctx) { if (rf & 1) {
44
+ const _r11 = i0.ɵɵgetCurrentView();
45
+ i0.ɵɵelementStart(0, "button", 1);
46
+ i0.ɵɵlistener("click", function DirectionsButtonsComponent_button_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return ctx_r10.copyLinkToClipboard(); });
47
+ i0.ɵɵpipe(1, "translate");
48
+ i0.ɵɵelement(2, "mat-icon", 9);
49
+ i0.ɵɵelementEnd();
50
+ } if (rf & 2) {
51
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.directionsForm.link"));
52
+ } }
53
+ export class DirectionsButtonsComponent {
54
+ constructor(languageService, messageService, route) {
55
+ this.languageService = languageService;
56
+ this.messageService = messageService;
57
+ this.route = route;
58
+ this.zoomToActiveRoute$ = new Subject();
59
+ }
60
+ get activeRoute() {
61
+ return this.routesFeatureStore.all().find(route => route.properties.active);
62
+ }
63
+ resetStops() {
64
+ this.stopsStore.clearStops();
65
+ }
66
+ // stop are always added before the last stop.
67
+ addStop() {
68
+ addStopToStore(this.stopsStore);
69
+ }
70
+ copyLinkToClipboard() {
71
+ const successful = Clipboard.copy(this.getUrl());
72
+ if (successful) {
73
+ const translate = this.languageService.translate;
74
+ const title = translate.instant('igo.geo.directionsForm.dialog.copyTitle');
75
+ const msg = translate.instant('igo.geo.directionsForm.dialog.copyMsgLink');
76
+ this.messageService.success(msg, title);
77
+ }
78
+ }
79
+ zoomRoute() {
80
+ this.zoomToActiveRoute$.next();
81
+ }
82
+ copyDirectionsToClipboard() {
83
+ const directionsBody = this.directionsToText();
84
+ const successful = Clipboard.copy(directionsBody);
85
+ if (successful) {
86
+ const translate = this.languageService.translate;
87
+ const title = translate.instant('igo.geo.directionsForm.dialog.copyTitle');
88
+ const msg = translate.instant('igo.geo.directionsForm.dialog.copyMsg');
89
+ this.messageService.success(msg, title);
90
+ }
91
+ }
92
+ directionsToText() {
93
+ const indent = '\t';
94
+ let activeRouteDirective = this.languageService.translate.instant('igo.geo.directionsForm.instructions') + ':\n';
95
+ let wayPointList = '';
96
+ const summary = this.languageService.translate.instant('igo.geo.directionsForm.summary') +
97
+ ': \n' +
98
+ indent +
99
+ this.activeRoute.properties.direction.title +
100
+ '\n' +
101
+ indent +
102
+ formatDistance(this.activeRoute.properties.direction.distance) +
103
+ '\n' +
104
+ indent +
105
+ formatDuration(this.activeRoute.properties.direction.duration) +
106
+ '\n\n' +
107
+ this.languageService.translate.instant('igo.geo.directionsForm.stopsList') +
108
+ ':\n';
109
+ const url = this.languageService.translate.instant('igo.geo.directionsForm.link') +
110
+ ':\n' +
111
+ indent +
112
+ this.getUrl();
113
+ let wayPointsCnt = 1;
114
+ this.stopsStore.view.all().forEach(stop => {
115
+ let coord = '';
116
+ let stopText = '';
117
+ if (stop.text !== roundCoordTo(stop.coordinates).join(',')) {
118
+ stopText = stop.text;
119
+ coord = ` ( ${roundCoordTo(stop.coordinates).join(',')} )`;
120
+ }
121
+ else {
122
+ stopText = roundCoordTo(stop.coordinates).join(',');
123
+ }
124
+ wayPointList =
125
+ wayPointList +
126
+ indent +
127
+ wayPointsCnt.toLocaleString() +
128
+ '. ' +
129
+ stopText +
130
+ coord +
131
+ '\n';
132
+ wayPointsCnt++;
133
+ });
134
+ let localCnt = 0;
135
+ this.activeRoute.properties.direction.steps.forEach(step => {
136
+ const instruction = this.formatStep(step, localCnt).instruction;
137
+ const distance = formatDistance(step.distance) === undefined
138
+ ? ''
139
+ : ' (' + formatDistance(step.distance) + ')';
140
+ activeRouteDirective =
141
+ activeRouteDirective +
142
+ indent +
143
+ (localCnt + 1).toLocaleString() +
144
+ '. ' +
145
+ instruction +
146
+ distance +
147
+ '\n';
148
+ localCnt++;
149
+ });
150
+ const directionsBody = summary + wayPointList + '\n' + url + '\n\n' + activeRouteDirective;
151
+ return directionsBody;
152
+ }
153
+ formatStep(step, cnt) {
154
+ return formatInstruction(step.maneuver.type, step.maneuver.modifier, step.name, step.maneuver.bearing_after, cnt, step.maneuver.exit, this.languageService, cnt === this.activeRoute.properties.direction.steps.length - 1);
155
+ }
156
+ getUrl() {
157
+ if (!this.route) {
158
+ return;
159
+ }
160
+ const pos = this.routesFeatureStore.all()
161
+ .map((direction) => direction.properties.id).indexOf(this.activeRoute.properties.id);
162
+ let routingOptions = '';
163
+ if (pos !== 0) {
164
+ const routingOptionsKey = this.route.options.directionsOptionsKey;
165
+ routingOptions = `&${routingOptionsKey}=result:${pos}`;
166
+ }
167
+ const directionsKey = this.route.options.directionsCoordKey;
168
+ const stopsCoordinates = this.stopsStore.view.all().map(stop => roundCoordTo(stop.coordinates, 6));
169
+ let directionsUrl = '';
170
+ if (stopsCoordinates.length >= 2) {
171
+ directionsUrl = `${directionsKey}=${stopsCoordinates.join(';')}`;
172
+ return `${location.origin}${location.pathname}?tool=directions&sidenav=1&${directionsUrl}${routingOptions}`;
173
+ }
174
+ return;
175
+ }
176
+ }
177
+ DirectionsButtonsComponent.ɵfac = function DirectionsButtonsComponent_Factory(t) { return new (t || DirectionsButtonsComponent)(i0.ɵɵdirectiveInject(i1.LanguageService), i0.ɵɵdirectiveInject(i1.MessageService), i0.ɵɵdirectiveInject(i1.RouteService, 8)); };
178
+ DirectionsButtonsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsButtonsComponent, selectors: [["igo-directions-buttons"]], inputs: { zoomToActiveRoute$: "zoomToActiveRoute$", stopsStore: "stopsStore", routesFeatureStore: "routesFeatureStore" }, decls: 13, vars: 17, consts: [[1, "igo-form-button-group"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "map-marker-plus"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click"], ["svgIcon", "file-restore"], ["svgIcon", "magnify-plus-outline"], ["svgIcon", "content-copy"], ["svgIcon", "link"]], template: function DirectionsButtonsComponent_Template(rf, ctx) { if (rf & 1) {
179
+ i0.ɵɵelementStart(0, "div", 0);
180
+ i0.ɵɵelementStart(1, "button", 1);
181
+ i0.ɵɵlistener("click", function DirectionsButtonsComponent_Template_button_click_1_listener() { return ctx.addStop(); });
182
+ i0.ɵɵpipe(2, "translate");
183
+ i0.ɵɵelement(3, "mat-icon", 2);
184
+ i0.ɵɵelementEnd();
185
+ i0.ɵɵtemplate(4, DirectionsButtonsComponent_button_4_Template, 3, 3, "button", 3);
186
+ i0.ɵɵpipe(5, "async");
187
+ i0.ɵɵpipe(6, "async");
188
+ i0.ɵɵtemplate(7, DirectionsButtonsComponent_button_7_Template, 3, 3, "button", 4);
189
+ i0.ɵɵpipe(8, "async");
190
+ i0.ɵɵtemplate(9, DirectionsButtonsComponent_button_9_Template, 3, 3, "button", 4);
191
+ i0.ɵɵpipe(10, "async");
192
+ i0.ɵɵtemplate(11, DirectionsButtonsComponent_button_11_Template, 3, 3, "button", 4);
193
+ i0.ɵɵpipe(12, "async");
194
+ i0.ɵɵelementEnd();
195
+ } if (rf & 2) {
196
+ i0.ɵɵadvance(1);
197
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(2, 5, "igo.geo.directionsForm.addStop"));
198
+ i0.ɵɵadvance(3);
199
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(5, 7, ctx.routesFeatureStore.count$) >= 1 || i0.ɵɵpipeBind1(6, 9, ctx.stopsStore.count$) >= 1);
200
+ i0.ɵɵadvance(3);
201
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(8, 11, ctx.routesFeatureStore.count$) >= 1);
202
+ i0.ɵɵadvance(2);
203
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(10, 13, ctx.routesFeatureStore.count$) >= 1);
204
+ i0.ɵɵadvance(2);
205
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(12, 15, ctx.routesFeatureStore.count$) >= 1);
206
+ } }, directives: [i2.MatButton, i3.MatTooltip, i4.MatIcon, i5.NgIf], pipes: [i6.TranslatePipe, i5.AsyncPipe], styles: [""] });
207
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsButtonsComponent, [{
208
+ type: Component,
209
+ args: [{
210
+ selector: 'igo-directions-buttons',
211
+ templateUrl: './directions-buttons.component.html',
212
+ styleUrls: ['./directions-buttons.component.scss']
213
+ }]
214
+ }], function () { return [{ type: i1.LanguageService }, { type: i1.MessageService }, { type: i1.RouteService, decorators: [{
215
+ type: Optional
216
+ }] }]; }, { zoomToActiveRoute$: [{
217
+ type: Input
218
+ }], stopsStore: [{
219
+ type: Input
220
+ }], routesFeatureStore: [{
221
+ type: Input
222
+ }] }); })();
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2RpcmVjdGlvbnMvZGlyZWN0aW9ucy1idXR0b25zL2RpcmVjdGlvbnMtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMtYnV0dG9ucy9kaXJlY3Rpb25zLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7SUNGN0csaUNBRTZHO0lBQXZCLGlNQUFzQjs7SUFDMUcsOEJBQTRDO0lBQzlDLGlCQUFTOztJQUZQLDhGQUFzRTs7OztJQUd4RSxpQ0FFZ0Y7SUFEL0IsZ01BQXFCOztJQUVwRSw4QkFBb0Q7SUFDdEQsaUJBQVM7O0lBRlAscUZBQTZEOzs7O0lBRy9ELGlDQUUyRTtJQUQxQixnTkFBcUM7O0lBRXBGLDhCQUE0QztJQUM5QyxpQkFBUzs7SUFGUCxnRkFBd0Q7Ozs7SUFHMUQsaUNBRTJFO0lBRDFCLDhNQUErQjs7SUFFOUUsOEJBQW9DO0lBQ3RDLGlCQUFTOztJQUZQLGdGQUF3RDs7QURQNUQsTUFBTSxPQUFPLDBCQUEwQjtJQVNyQyxZQUNVLGVBQWdDLEVBQ2hDLGNB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SVM7O1FBQ1QsaUZBSVM7O1FBQ1QsbUZBSVM7O1FBQ1gsaUJBQU07O1FBdkJGLGVBQTJEO1FBQTNELG1GQUEyRDtRQUkxRCxlQUE4RTtRQUE5RSxtSUFBOEU7UUFLOUUsZUFBNEM7UUFBNUMsZ0ZBQTRDO1FBSzVDLGVBQTRDO1FBQTVDLGlGQUE0QztRQUs1QyxlQUE0QztRQUE1QyxpRkFBNEM7O3VGRE5wQywwQkFBMEI7Y0FMdEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFdBQVcsRUFBRSxxQ0FBcUM7Z0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2FBQ25EOztzQkFhSSxRQUFRO3dCQU5GLGtCQUFrQjtrQkFBMUIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxrQkFBa0I7a0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlLCBNZXNzYWdlU2VydmljZSwgUm91dGVTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmQgfSBmcm9tICdAaWdvMi91dGlscyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyByb3VuZENvb3JkVG8gfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC51dGlscyc7XG5pbXBvcnQgeyBGZWF0dXJlV2l0aERpcmVjdGlvbiB9IGZyb20gJy4uL3NoYXJlZC9kaXJlY3Rpb25zLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IGFkZFN0b3BUb1N0b3JlLCBmb3JtYXREaXN0YW5jZSwgZm9ybWF0RHVyYXRpb24sIGZvcm1hdEluc3RydWN0aW9uIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMudXRpbHMnO1xuaW1wb3J0IHsgUm91dGVzRmVhdHVyZVN0b3JlLCBTdG9wc1N0b3JlIH0gZnJvbSAnLi4vc2hhcmVkL3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMtYnV0dG9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXJlY3Rpb25zLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaXJlY3Rpb25zLWJ1dHRvbnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCB7XG5cbiAgZ2V0IGFjdGl2ZVJvdXRlKCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5hbGwoKS5maW5kKHJvdXRlID0+IHJvdXRlLnByb3BlcnRpZXMuYWN0aXZlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHpvb21Ub0FjdGl2ZVJvdXRlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIEBJbnB1dCgpIHN0b3BzU3RvcmU6IFN0b3BzU3RvcmU7XG4gIEBJbnB1dCgpIHJvdXRlc0ZlYXR1cmVTdG9yZTogUm91dGVzRmVhdHVyZVN0b3JlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGU6IFJvdXRlU2VydmljZSkgeyB9XG5cbiAgcmVzZXRTdG9wcygpIHtcbiAgICB0aGlzLnN0b3BzU3RvcmUuY2xlYXJTdG9wcygpO1xuICB9XG5cbiAgLy8gc3RvcCBhcmUgYWx3YXlzIGFkZGVkIGJlZm9yZSB0aGUgbGFzdCBzdG9wLlxuICBhZGRTdG9wKCk6IHZvaWQge1xuICAgIGFkZFN0b3BUb1N0b3JlKHRoaXMuc3RvcHNTdG9yZSk7XG4gIH1cblxuXG4gIGNvcHlMaW5rVG9DbGlwYm9hcmQoKSB7XG4gICAgY29uc3Qgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5KHRoaXMuZ2V0VXJsKCkpO1xuICAgIGlmIChzdWNjZXNzZnVsKSB7XG4gICAgICBjb25zdCB0cmFuc2xhdGUgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGU7XG4gICAgICBjb25zdCB0aXRsZSA9IHRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5kaWFsb2cuY29weVRpdGxlJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IG1zZyA9IHRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5kaWFsb2cuY29weU1zZ0xpbmsnXG4gICAgICApO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKG1zZywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIHpvb21Sb3V0ZSgpIHtcbiAgICB0aGlzLnpvb21Ub0FjdGl2ZVJvdXRlJC5uZXh0KCk7XG4gIH1cblxuICBjb3B5RGlyZWN0aW9uc1RvQ2xpcGJvYXJkKCkge1xuICAgIGNvbnN0IGRpcmVjdGlvbnNCb2R5ID0gdGhpcy5kaXJlY3Rpb25zVG9UZXh0KCk7XG4gICAgY29uc3Qgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5KGRpcmVjdGlvbnNCb2R5KTtcbiAgICBpZiAoc3VjY2Vzc2Z1bCkge1xuICAgICAgY29uc3QgdHJhbnNsYXRlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlO1xuICAgICAgY29uc3QgdGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uZGlhbG9nLmNvcHlUaXRsZSdcbiAgICAgICk7XG4gICAgICBjb25zdCBtc2cgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5kaWFsb2cuY29weU1zZycpO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKG1zZywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlyZWN0aW9uc1RvVGV4dCgpIHtcbiAgICBjb25zdCBpbmRlbnQgPSAnXFx0JztcbiAgICBsZXQgYWN0aXZlUm91dGVEaXJlY3RpdmUgPVxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLmluc3RydWN0aW9ucydcbiAgICAgICkgKyAnOlxcbic7XG4gICAgbGV0IHdheVBvaW50TGlzdCA9ICcnO1xuICAgIGNvbnN0IHN1bW1hcnkgPVxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uc3VtbWFyeScpICtcbiAgICAgICc6IFxcbicgK1xuICAgICAgaW5kZW50ICtcbiAgICAgIHRoaXMuYWN0aXZlUm91dGUucHJvcGVydGllcy5kaXJlY3Rpb24udGl0bGUgK1xuICAgICAgJ1xcbicgK1xuICAgICAgaW5kZW50ICtcbiAgICAgIGZvcm1hdERpc3RhbmNlKHRoaXMuYWN0aXZlUm91dGUucHJvcGVydGllcy5kaXJlY3Rpb24uZGlzdGFuY2UpICtcbiAgICAgICdcXG4nICtcbiAgICAgIGluZGVudCArXG4gICAgICBmb3JtYXREdXJhdGlvbih0aGlzLmFjdGl2ZVJvdXRlLnByb3BlcnRpZXMuZGlyZWN0aW9uLmR1cmF0aW9uKSArXG4gICAgICAnXFxuXFxuJyArXG4gICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uc3RvcHNMaXN0J1xuICAgICAgKSArXG4gICAgICAnOlxcbic7XG5cbiAgICBjb25zdCB1cmwgPVxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0ubGluaycpICtcbiAgICAgICc6XFxuJyArXG4gICAgICBpbmRlbnQgK1xuICAgICAgdGhpcy5nZXRVcmwoKTtcblxuICAgIGxldCB3YXlQb2ludHNDbnQgPSAxO1xuICAgIHRoaXMuc3RvcHNTdG9yZS52aWV3LmFsbCgpLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICBsZXQgY29vcmQgPSAnJztcbiAgICAgIGxldCBzdG9wVGV4dCA9ICcnO1xuICAgICAgaWYgKHN0b3AudGV4dCAhPT0gcm91bmRDb29yZFRvKHN0b3AuY29vcmRpbmF0ZXMpLmpvaW4oJywnKSkge1xuICAgICAgICBzdG9wVGV4dCA9IHN0b3AudGV4dDtcbiAgICAgICAgY29vcmQgPSBgICggJHtyb3VuZENvb3JkVG8oc3RvcC5jb29yZGluYXRlcykuam9pbignLCcpfSApYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0b3BUZXh0ID0gcm91bmRDb29yZFRvKHN0b3AuY29vcmRpbmF0ZXMpLmpvaW4oXG4gICAgICAgICAgJywnXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHdheVBvaW50TGlzdCA9XG4gICAgICAgIHdheVBvaW50TGlzdCArXG4gICAgICAgIGluZGVudCArXG4gICAgICAgIHdheVBvaW50c0NudC50b0xvY2FsZVN0cmluZygpICtcbiAgICAgICAgJy4gJyArXG4gICAgICAgIHN0b3BUZXh0ICtcbiAgICAgICAgY29vcmQgK1xuICAgICAgICAnXFxuJztcbiAgICAgIHdheVBvaW50c0NudCsrO1xuICAgIH0pO1xuXG4gICAgbGV0IGxvY2FsQ250ID0gMDtcbiAgICB0aGlzLmFjdGl2ZVJvdXRlLnByb3BlcnRpZXMuZGlyZWN0aW9uLnN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbiA9IHRoaXMuZm9ybWF0U3RlcChzdGVwLCBsb2NhbENudCkuaW5zdHJ1Y3Rpb247XG4gICAgICBjb25zdCBkaXN0YW5jZSA9XG4gICAgICAgIGZvcm1hdERpc3RhbmNlKHN0ZXAuZGlzdGFuY2UpID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/ICcnXG4gICAgICAgICAgOiAnICgnICsgZm9ybWF0RGlzdGFuY2Uoc3RlcC5kaXN0YW5jZSkgKyAnKSc7XG4gICAgICBhY3RpdmVSb3V0ZURpcmVjdGl2ZSA9XG4gICAgICAgIGFjdGl2ZVJvdXRlRGlyZWN0aXZlICtcbiAgICAgICAgaW5kZW50ICtcbiAgICAgICAgKGxvY2FsQ250ICsgMSkudG9Mb2NhbGVTdHJpbmcoKSArXG4gICAgICAgICcuICcgK1xuICAgICAgICBpbnN0cnVjdGlvbiArXG4gICAgICAgIGRpc3RhbmNlICtcbiAgICAgICAgJ1xcbic7XG4gICAgICBsb2NhbENudCsrO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGlyZWN0aW9uc0JvZHkgPVxuICAgICAgc3VtbWFyeSArIHdheVBvaW50TGlzdCArICdcXG4nICsgdXJsICsgJ1xcblxcbicgKyBhY3RpdmVSb3V0ZURpcmVjdGl2ZTtcblxuICAgIHJldHVybiBkaXJlY3Rpb25zQm9keTtcbiAgfVxuXG4gIGZvcm1hdFN0ZXAoc3RlcCwgY250KSB7XG4gICAgcmV0dXJuIGZvcm1hdEluc3RydWN0aW9uKFxuICAgICAgc3RlcC5tYW5ldXZlci50eXBlLFxuICAgICAgc3RlcC5tYW5ldXZlci5tb2RpZmllcixcbiAgICAgIHN0ZXAubmFtZSxcbiAgICAgIHN0ZXAubWFuZXV2ZXIuYmVhcmluZ19hZnRlcixcbiAgICAgIGNudCxcbiAgICAgIHN0ZXAubWFuZXV2ZXIuZXhpdCxcbiAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLFxuICAgICAgY250ID09PSB0aGlzLmFjdGl2ZVJvdXRlLnByb3BlcnRpZXMuZGlyZWN0aW9uLnN0ZXBzLmxlbmd0aCAtIDFcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVcmwoKSB7XG4gICAgaWYgKCF0aGlzLnJvdXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9zID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKClcbiAgICAubWFwKChkaXJlY3Rpb246IEZlYXR1cmVXaXRoRGlyZWN0aW9uKSA9PiBkaXJlY3Rpb24ucHJvcGVydGllcy5pZCkuaW5kZXhPZih0aGlzLmFjdGl2ZVJvdXRlLnByb3BlcnRpZXMuaWQpO1xuICAgIGxldCByb3V0aW5nT3B0aW9ucyA9ICcnO1xuICAgIGlmIChwb3MgIT09IDApIHtcbiAgICAgIGNvbnN0IHJvdXRpbmdPcHRpb25zS2V5ID0gdGhpcy5yb3V0ZS5vcHRpb25zLmRpcmVjdGlvbnNPcHRpb25zS2V5O1xuICAgICAgcm91dGluZ09wdGlvbnMgPSBgJiR7cm91dGluZ09wdGlvbnNLZXl9PXJlc3VsdDoke3Bvc31gO1xuICAgIH1cbiAgICBjb25zdCBkaXJlY3Rpb25zS2V5ID0gdGhpcy5yb3V0ZS5vcHRpb25zLmRpcmVjdGlvbnNDb29yZEtleTtcbiAgICBjb25zdCBzdG9wc0Nvb3JkaW5hdGVzID0gdGhpcy5zdG9wc1N0b3JlLnZpZXcuYWxsKCkubWFwKHN0b3AgPT4gcm91bmRDb29yZFRvKHN0b3AuY29vcmRpbmF0ZXMsIDYpKTtcbiAgICBsZXQgZGlyZWN0aW9uc1VybCA9ICcnO1xuICAgIGlmIChzdG9wc0Nvb3JkaW5hdGVzLmxlbmd0aCA+PSAyKSB7XG4gICAgICBkaXJlY3Rpb25zVXJsID0gYCR7ZGlyZWN0aW9uc0tleX09JHtzdG9wc0Nvb3JkaW5hdGVzLmpvaW4oJzsnKX1gO1xuICAgICAgcmV0dXJuIGAke2xvY2F0aW9uLm9yaWdpbn0ke2xvY2F0aW9uLnBhdGhuYW1lfT90b29sPWRpcmVjdGlvbnMmc2lkZW5hdj0xJiR7ZGlyZWN0aW9uc1VybH0ke3JvdXRpbmdPcHRpb25zfWA7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlnby1mb3JtLWJ1dHRvbi1ncm91cFwiPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5hZGRTdG9wJyB8IHRyYW5zbGF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJhZGRTdG9wKClcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm1hcC1tYXJrZXItcGx1c1wiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAqbmdJZj1cIihyb3V0ZXNGZWF0dXJlU3RvcmUuY291bnQkIHwgYXN5bmMpPj0xIHx8IChzdG9wc1N0b3JlLmNvdW50JCB8IGFzeW5jKT49MVwiXG4gICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0ucmVzZXREaXJlY3Rpb25zQnRuJyB8IHRyYW5zbGF0ZVwiIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJyZXNldFN0b3BzKClcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImZpbGUtcmVzdG9yZVwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAqbmdJZj1cIihyb3V0ZXNGZWF0dXJlU3RvcmUuY291bnQkIHwgYXN5bmMpPj0xXCIgKGNsaWNrKT1cInpvb21Sb3V0ZSgpXCJcbiAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5kaXJlY3Rpb25zRm9ybS56b29tUm91dGUnIHwgdHJhbnNsYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJtYWduaWZ5LXBsdXMtb3V0bGluZVwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAqbmdJZj1cIihyb3V0ZXNGZWF0dXJlU3RvcmUuY291bnQkIHwgYXN5bmMpPj0xXCIgKGNsaWNrKT1cImNvcHlEaXJlY3Rpb25zVG9DbGlwYm9hcmQoKVwiXG4gICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uY29weScgfCB0cmFuc2xhdGVcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNvbnRlbnQtY29weVwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAqbmdJZj1cIihyb3V0ZXNGZWF0dXJlU3RvcmUuY291bnQkIHwgYXN5bmMpPj0xXCIgKGNsaWNrKT1cImNvcHlMaW5rVG9DbGlwYm9hcmQoKVwiIFxuICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLmxpbmsnIHwgdHJhbnNsYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJsaW5rXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './directions-buttons.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMtYnV0dG9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb25zLWJ1dHRvbnMuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,300 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
3
+ import * as olProj from 'ol/proj';
4
+ import * as olObservable from 'ol/Observable';
5
+ import pointOnFeature from '@turf/point-on-feature';
6
+ import { computeRelativePosition, removeStopFromStore, updateStoreSorting } from '../shared/directions.utils';
7
+ import { roundCoordTo } from '../../map/shared/map.utils';
8
+ import { DirectionRelativePositionType } from '../shared/directions.enum';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@igo2/core";
11
+ import * as i2 from "@angular/cdk/drag-drop";
12
+ import * as i3 from "@angular/common";
13
+ import * as i4 from "@angular/material/form-field";
14
+ import * as i5 from "@angular/material/input";
15
+ import * as i6 from "@angular/forms";
16
+ import * as i7 from "@angular/material/autocomplete";
17
+ import * as i8 from "@angular/material/tooltip";
18
+ import * as i9 from "@angular/material/button";
19
+ import * as i10 from "@angular/material/icon";
20
+ import * as i11 from "@angular/material/core";
21
+ import * as i12 from "@ngx-translate/core";
22
+ function DirectionsInputsComponent_div_1_button_4_Template(rf, ctx) { if (rf & 1) {
23
+ const _r9 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "button", 10);
25
+ i0.ɵɵlistener("click", function DirectionsInputsComponent_div_1_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const stop_r1 = i0.ɵɵnextContext().$implicit; const ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.clearStop(stop_r1); });
26
+ i0.ɵɵpipe(1, "translate");
27
+ i0.ɵɵelement(2, "mat-icon", 11);
28
+ i0.ɵɵelementEnd();
29
+ } if (rf & 2) {
30
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.directionsForm.clearStop"));
31
+ } }
32
+ function DirectionsInputsComponent_div_1_mat_optgroup_7_mat_option_1_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "mat-option", 14);
34
+ i0.ɵɵtext(1);
35
+ i0.ɵɵelementEnd();
36
+ } if (rf & 2) {
37
+ const result_r12 = ctx.$implicit;
38
+ i0.ɵɵproperty("value", result_r12)("matTooltip", result_r12.meta ? result_r12.meta.title : "");
39
+ i0.ɵɵadvance(1);
40
+ i0.ɵɵtextInterpolate1(" ", result_r12.meta ? result_r12.meta.title : "", " ");
41
+ } }
42
+ function DirectionsInputsComponent_div_1_mat_optgroup_7_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "mat-optgroup", 12);
44
+ i0.ɵɵtemplate(1, DirectionsInputsComponent_div_1_mat_optgroup_7_mat_option_1_Template, 2, 3, "mat-option", 13);
45
+ i0.ɵɵelementEnd();
46
+ } if (rf & 2) {
47
+ const source_r10 = ctx.$implicit;
48
+ i0.ɵɵproperty("label", source_r10.source.title)("disabled", source_r10.source.enabled === false);
49
+ i0.ɵɵadvance(1);
50
+ i0.ɵɵproperty("ngForOf", source_r10.results);
51
+ } }
52
+ function DirectionsInputsComponent_div_1_div_8_button_4_Template(rf, ctx) { if (rf & 1) {
53
+ const _r17 = i0.ɵɵgetCurrentView();
54
+ i0.ɵɵelementStart(0, "button", 20);
55
+ i0.ɵɵlistener("click", function DirectionsInputsComponent_div_1_div_8_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const stop_r1 = i0.ɵɵnextContext(2).$implicit; const ctx_r15 = i0.ɵɵnextContext(); return ctx_r15.removeStop(stop_r1); });
56
+ i0.ɵɵpipe(1, "translate");
57
+ i0.ɵɵelement(2, "mat-icon", 21);
58
+ i0.ɵɵelementEnd();
59
+ } if (rf & 2) {
60
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.directionsForm.removeStop"));
61
+ } }
62
+ function DirectionsInputsComponent_div_1_div_8_button_6_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelementStart(0, "button", 22);
64
+ i0.ɵɵpipe(1, "translate");
65
+ i0.ɵɵelement(2, "mat-icon", 23);
66
+ i0.ɵɵelementEnd();
67
+ } if (rf & 2) {
68
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.directionsForm.removeStop"));
69
+ } }
70
+ function DirectionsInputsComponent_div_1_div_8_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "div", 15);
72
+ i0.ɵɵelementStart(1, "button", 16);
73
+ i0.ɵɵpipe(2, "translate");
74
+ i0.ɵɵelement(3, "mat-icon", 17);
75
+ i0.ɵɵelementEnd();
76
+ i0.ɵɵtemplate(4, DirectionsInputsComponent_div_1_div_8_button_4_Template, 3, 3, "button", 18);
77
+ i0.ɵɵpipe(5, "async");
78
+ i0.ɵɵtemplate(6, DirectionsInputsComponent_div_1_div_8_button_6_Template, 3, 3, "button", 19);
79
+ i0.ɵɵpipe(7, "async");
80
+ i0.ɵɵelementEnd();
81
+ } if (rf & 2) {
82
+ const ctx_r6 = i0.ɵɵnextContext(2);
83
+ i0.ɵɵadvance(1);
84
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(2, 3, "igo.geo.directionsForm.moveStop"));
85
+ i0.ɵɵadvance(3);
86
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(5, 5, ctx_r6.stopsStore.count$) > 2);
87
+ i0.ɵɵadvance(2);
88
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(7, 7, ctx_r6.stopsStore.count$) <= 2);
89
+ } }
90
+ function DirectionsInputsComponent_div_1_Template(rf, ctx) { if (rf & 1) {
91
+ const _r19 = i0.ɵɵgetCurrentView();
92
+ i0.ɵɵelementStart(0, "div", 2);
93
+ i0.ɵɵlistener("touchenter", function DirectionsInputsComponent_div_1_Template_div_touchenter_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r19); const stop_r1 = restoredCtx.$implicit; const ctx_r18 = i0.ɵɵnextContext(); return ctx_r18.onStopEnter(stop_r1); })("touchleave", function DirectionsInputsComponent_div_1_Template_div_touchleave_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r20 = i0.ɵɵnextContext(); return ctx_r20.onStopLeave(); })("mouseover", function DirectionsInputsComponent_div_1_Template_div_mouseover_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r19); const stop_r1 = restoredCtx.$implicit; const ctx_r21 = i0.ɵɵnextContext(); return ctx_r21.onStopEnter(stop_r1); })("mouseleave", function DirectionsInputsComponent_div_1_Template_div_mouseleave_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r22 = i0.ɵɵnextContext(); return ctx_r22.onStopLeave(); })("cdkDragStarted", function DirectionsInputsComponent_div_1_Template_div_cdkDragStarted_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r23 = i0.ɵɵnextContext(); return ctx_r23.stopIsDragged = true; })("cdkDragEnded", function DirectionsInputsComponent_div_1_Template_div_cdkDragEnded_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r24 = i0.ɵɵnextContext(); return ctx_r24.stopIsDragged = false; });
94
+ i0.ɵɵelementStart(1, "div", 3);
95
+ i0.ɵɵelementStart(2, "mat-form-field");
96
+ i0.ɵɵelementStart(3, "input", 4);
97
+ i0.ɵɵlistener("focus", function DirectionsInputsComponent_div_1_Template_input_focus_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r19); const stop_r1 = restoredCtx.$implicit; const ctx_r25 = i0.ɵɵnextContext(); return ctx_r25.onInputFocus(stop_r1); })("ngModelChange", function DirectionsInputsComponent_div_1_Template_input_ngModelChange_3_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r19); const stop_r1 = restoredCtx.$implicit; return stop_r1.text = $event; })("keyup", function DirectionsInputsComponent_div_1_Template_input_keyup_3_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r19); const stop_r1 = restoredCtx.$implicit; const ctx_r27 = i0.ɵɵnextContext(); return ctx_r27.setStopText($event, stop_r1); })("keydown.enter", function DirectionsInputsComponent_div_1_Template_input_keydown_enter_3_listener($event) { return $event.preventDefault(); });
98
+ i0.ɵɵelementEnd();
99
+ i0.ɵɵtemplate(4, DirectionsInputsComponent_div_1_button_4_Template, 3, 3, "button", 5);
100
+ i0.ɵɵelementStart(5, "mat-autocomplete", 6, 7);
101
+ i0.ɵɵlistener("optionSelected", function DirectionsInputsComponent_div_1_Template_mat_autocomplete_optionSelected_5_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r19); const stop_r1 = restoredCtx.$implicit; const ctx_r29 = i0.ɵɵnextContext(); return ctx_r29.chooseProposal($event, stop_r1); });
102
+ i0.ɵɵtemplate(7, DirectionsInputsComponent_div_1_mat_optgroup_7_Template, 2, 3, "mat-optgroup", 8);
103
+ i0.ɵɵelementEnd();
104
+ i0.ɵɵelementEnd();
105
+ i0.ɵɵelementEnd();
106
+ i0.ɵɵtemplate(8, DirectionsInputsComponent_div_1_div_8_Template, 8, 9, "div", 9);
107
+ i0.ɵɵelementEnd();
108
+ } if (rf & 2) {
109
+ const stop_r1 = ctx.$implicit;
110
+ const _r4 = i0.ɵɵreference(6);
111
+ const ctx_r0 = i0.ɵɵnextContext();
112
+ i0.ɵɵadvance(1);
113
+ i0.ɵɵproperty("ngClass", ctx_r0.getNgClass(stop_r1));
114
+ i0.ɵɵadvance(2);
115
+ i0.ɵɵpropertyInterpolate("id", stop_r1.id);
116
+ i0.ɵɵproperty("placeholder", ctx_r0.getPlaceholder(stop_r1))("matTooltip", stop_r1.text)("ngModel", stop_r1.text)("matAutocomplete", _r4);
117
+ i0.ɵɵadvance(1);
118
+ i0.ɵɵproperty("ngIf", (stop_r1.text || stop_r1.coordinates) && ctx_r0.stopWithHover && stop_r1.id === ctx_r0.stopWithHover.id);
119
+ i0.ɵɵadvance(1);
120
+ i0.ɵɵproperty("displayWith", ctx_r0.getOptionText);
121
+ i0.ɵɵadvance(2);
122
+ i0.ɵɵproperty("ngForOf", stop_r1.searchProposals);
123
+ i0.ɵɵadvance(1);
124
+ i0.ɵɵproperty("ngIf", !ctx_r0.stopIsDragged && ctx_r0.stopWithHover && stop_r1.id === ctx_r0.stopWithHover.id);
125
+ } }
126
+ export class DirectionsInputsComponent {
127
+ constructor(languageService) {
128
+ this.languageService = languageService;
129
+ this.invalidKeys = ['Control', 'Shift', 'Alt'];
130
+ this.onMapClickEventKeys = [];
131
+ this.stopIsDragged = false;
132
+ this.coordRoundedDecimals = 6;
133
+ this.debounce = 200;
134
+ this.length = 2;
135
+ this.stopInputHasFocus = new EventEmitter(false);
136
+ }
137
+ ngOnDestroy() {
138
+ this.unlistenMapSingleClick();
139
+ }
140
+ onStopEnter(stop) {
141
+ this.stopWithHover = stop;
142
+ }
143
+ onStopLeave() {
144
+ this.stopWithHover = undefined;
145
+ }
146
+ getOptionText(option) {
147
+ if (option instanceof Object) {
148
+ return (option === null || option === void 0 ? void 0 : option.meta) ? option.meta.title : '';
149
+ }
150
+ return option;
151
+ }
152
+ chooseProposal(event, stop) {
153
+ const result = event.option.value;
154
+ if (result) {
155
+ let geomCoord;
156
+ const geom = result.geometry;
157
+ if (geom.type === 'Point') {
158
+ geomCoord = geom.coordinates;
159
+ }
160
+ else {
161
+ const point = pointOnFeature(result.geometry);
162
+ geomCoord = [
163
+ point.geometry.coordinates[0],
164
+ point.geometry.coordinates[1]
165
+ ];
166
+ }
167
+ if (geomCoord) {
168
+ stop.coordinates = geomCoord;
169
+ stop.text = result.meta.title;
170
+ this.stopsStore.update(stop);
171
+ }
172
+ }
173
+ }
174
+ setStopText(event, stop) {
175
+ this.unlistenMapSingleClick();
176
+ const term = event.target.value;
177
+ if (term.length === 0) {
178
+ this.clearStop(stop);
179
+ }
180
+ else if (this.validateTerm(term)) {
181
+ stop.text = term;
182
+ this.stopsStore.update(stop);
183
+ }
184
+ }
185
+ validateTerm(term) {
186
+ if (this.keyIsValid(term) &&
187
+ (term.length >= this.length || term.length === 0)) {
188
+ return true;
189
+ }
190
+ return false;
191
+ }
192
+ keyIsValid(key) {
193
+ return this.invalidKeys.find(value => value === key) === undefined;
194
+ }
195
+ getNgClass(stop) {
196
+ if (!this.stopWithHover) {
197
+ return 'igo-input-container';
198
+ }
199
+ else if (stop.id === this.stopWithHover.id) {
200
+ return 'igo-input-container reduce';
201
+ }
202
+ else {
203
+ return 'igo-input-container';
204
+ }
205
+ }
206
+ getPlaceholder(stop) {
207
+ let extra = '';
208
+ if (stop.relativePosition) {
209
+ if (stop.relativePosition === DirectionRelativePositionType.Intermediate) {
210
+ extra = ' #' + stop.position;
211
+ }
212
+ return this.languageService.translate.instant('igo.geo.directionsForm.' + stop.relativePosition) + extra;
213
+ }
214
+ else {
215
+ return '';
216
+ }
217
+ }
218
+ removeStop(stop) {
219
+ removeStopFromStore(this.stopsStore, stop);
220
+ }
221
+ clearStop(stop) {
222
+ this.stopsStore.update({ id: stop.id, relativePosition: stop.relativePosition, position: stop.position });
223
+ }
224
+ drop(event) {
225
+ this.moveStops(event.previousIndex, event.currentIndex);
226
+ }
227
+ moveStops(fromIndex, toIndex) {
228
+ if (fromIndex !== toIndex) {
229
+ const stops = [...this.stopsStore.view.all()];
230
+ moveItemInArray(stops, fromIndex, toIndex);
231
+ stops.map((stop, i) => {
232
+ stop.relativePosition = computeRelativePosition(i, stops.length);
233
+ stop.position = i;
234
+ });
235
+ this.stopsStore.updateMany(stops);
236
+ updateStoreSorting(this.stopsStore);
237
+ }
238
+ }
239
+ onInputFocus(stop) {
240
+ var _a;
241
+ if (!stop.text || ((_a = stop.text) === null || _a === void 0 ? void 0 : _a.length) === 0) {
242
+ this.unlistenMapSingleClick();
243
+ this.stopInputHasFocus.emit(true);
244
+ this.listenMapSingleClick(stop);
245
+ }
246
+ }
247
+ listenMapSingleClick(stop) {
248
+ const key = this.stopsFeatureStore.layer.map.ol.once('singleclick', event => {
249
+ const clickCoordinates = olProj.transform(event.coordinate, this.stopsFeatureStore.layer.map.projection, this.projection);
250
+ const roundedCoord = roundCoordTo(clickCoordinates, this.coordRoundedDecimals);
251
+ stop.text = roundedCoord.join(',');
252
+ stop.coordinates = roundedCoord;
253
+ this.stopsStore.update(stop);
254
+ setTimeout(() => {
255
+ this.stopInputHasFocus.emit(false);
256
+ }, 500);
257
+ });
258
+ this.onMapClickEventKeys.push(key);
259
+ }
260
+ unlistenMapSingleClick() {
261
+ this.onMapClickEventKeys.map(key => {
262
+ olObservable.unByKey(key);
263
+ });
264
+ this.onMapClickEventKeys = [];
265
+ }
266
+ }
267
+ DirectionsInputsComponent.ɵfac = function DirectionsInputsComponent_Factory(t) { return new (t || DirectionsInputsComponent)(i0.ɵɵdirectiveInject(i1.LanguageService)); };
268
+ DirectionsInputsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DirectionsInputsComponent, selectors: [["igo-directions-inputs"]], inputs: { stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", projection: "projection", coordRoundedDecimals: "coordRoundedDecimals", debounce: "debounce", length: "length" }, outputs: { stopInputHasFocus: "stopInputHasFocus" }, decls: 3, vars: 3, consts: [["cdkDropList", "", 1, "stops-list", 3, "cdkDropListDropped"], ["touchleave", "", "cdkDragLockAxis", "y", "class", "stop-box mat-typography", "cdkDrag", "", 3, "touchenter", "touchleave", "mouseover", "mouseleave", "cdkDragStarted", "cdkDragEnded", 4, "ngFor", "ngForOf"], ["touchleave", "", "cdkDragLockAxis", "y", "cdkDrag", "", 1, "stop-box", "mat-typography", 3, "touchenter", "touchleave", "mouseover", "mouseleave", "cdkDragStarted", "cdkDragEnded"], [3, "ngClass"], ["type", "text", "matTooltipShowDelay", "500", "aria-label", "Number", "matInput", "", 3, "id", "placeholder", "matTooltip", "ngModel", "matAutocomplete", "focus", "ngModelChange", "keyup", "keydown.enter"], ["mat-button", "", "matTooltipShowDelay", "500", "matSuffix", "", "mat-icon-button", "", "color", "warn", "aria-label", "Clear", 3, "matTooltip", "click", 4, "ngIf"], [3, "displayWith", "optionSelected"], ["auto", "matAutocomplete"], [3, "label", "disabled", 4, "ngFor", "ngForOf"], ["class", "igo-form-button-group", 4, "ngIf"], ["mat-button", "", "matTooltipShowDelay", "500", "matSuffix", "", "mat-icon-button", "", "color", "warn", "aria-label", "Clear", 3, "matTooltip", "click"], ["svgIcon", "close"], [3, "label", "disabled"], ["matTooltipShowDelay", "500", 3, "value", "matTooltip", 4, "ngFor", "ngForOf"], ["matTooltipShowDelay", "500", 3, "value", "matTooltip"], [1, "igo-form-button-group"], ["cdkDragHandle", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", 1, "swipe-vertical", 3, "matTooltip"], ["svgIcon", "gesture-swipe-vertical"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click", 4, "ngIf"], ["disabled", "true", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "click"], ["svgIcon", "delete"], ["disabled", "true", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip"], ["svgIcon", "blank"]], template: function DirectionsInputsComponent_Template(rf, ctx) { if (rf & 1) {
269
+ i0.ɵɵelementStart(0, "div", 0);
270
+ i0.ɵɵlistener("cdkDropListDropped", function DirectionsInputsComponent_Template_div_cdkDropListDropped_0_listener($event) { return ctx.drop($event); });
271
+ i0.ɵɵtemplate(1, DirectionsInputsComponent_div_1_Template, 9, 10, "div", 1);
272
+ i0.ɵɵpipe(2, "async");
273
+ i0.ɵɵelementEnd();
274
+ } if (rf & 2) {
275
+ i0.ɵɵadvance(1);
276
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, ctx.stopsStore.view.all$()));
277
+ } }, directives: [i2.CdkDropList, i3.NgForOf, i2.CdkDrag, i3.NgClass, i4.MatFormField, i5.MatInput, i6.DefaultValueAccessor, i7.MatAutocompleteTrigger, i8.MatTooltip, i6.NgControlStatus, i6.NgModel, i3.NgIf, i7.MatAutocomplete, i9.MatButton, i4.MatSuffix, i10.MatIcon, i11.MatOptgroup, i11.MatOption, i2.CdkDragHandle], pipes: [i3.AsyncPipe, i12.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-input-container.reduce[_ngcontent-%COMP%]{width:70%}.igo-input-container.reduce[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.stops-list[_ngcontent-%COMP%]{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical[_ngcontent-%COMP%]{cursor:move}.stop-box[_ngcontent-%COMP%]{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview[_ngcontent-%COMP%]{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%]{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging[_ngcontent-%COMP%] .stop-box[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
278
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsInputsComponent, [{
279
+ type: Component,
280
+ args: [{
281
+ selector: 'igo-directions-inputs',
282
+ templateUrl: './directions-inputs.component.html',
283
+ styleUrls: ['./directions-inputs.component.scss']
284
+ }]
285
+ }], function () { return [{ type: i1.LanguageService }]; }, { stopsStore: [{
286
+ type: Input
287
+ }], stopsFeatureStore: [{
288
+ type: Input
289
+ }], projection: [{
290
+ type: Input
291
+ }], coordRoundedDecimals: [{
292
+ type: Input
293
+ }], debounce: [{
294
+ type: Input
295
+ }], length: [{
296
+ type: Input
297
+ }], stopInputHasFocus: [{
298
+ type: Output
299
+ }] }); })();
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLWlucHV0cy9kaXJlY3Rpb25zLWlucHV0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMtaW5wdXRzL2RpcmVjdGlvbnMtaW5wdXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBSzlDLE9BQU8sY0FBYyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSTlHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztJQ01sRSxrQ0FLd0Y7SUFBMUIsMFBBQXlCOztJQUNuRiwrQkFBcUM7SUFDekMsaUJBQVM7O0lBSEwscUZBQTZEOzs7SUFPL0Qsc0NBQzhFO0lBQzVFLFlBQ0Y7SUFBQSxpQkFBYTs7O0lBSHFDLGtDQUFnQiw0REFBQTtJQUVoRSxlQUNGO0lBREUsNkVBQ0Y7OztJQUpBLHdDQUFxSTtJQUNySSw4R0FHYTtJQUNiLGlCQUFlOzs7SUFMMkMsK0NBQTZCLGlEQUFB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QU07O1FBckRpRSxlQUFtQztRQUFuQywwRUFBbUM7O3VGRGU3Rix5QkFBeUI7Y0FMckMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLFdBQVcsRUFBRSxvQ0FBb0M7Z0JBQ2pELFNBQVMsRUFBRSxDQUFDLG9DQUFvQyxDQUFDO2FBQ2xEO2tFQU9VLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csb0JBQW9CO2tCQUE1QixLQUFLO1lBRUcsUUFBUTtrQkFBaEIsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUVJLGlCQUFpQjtrQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0ICogYXMgb2xPYnNlcnZhYmxlIGZyb20gJ29sL09ic2VydmFibGUnO1xuXG5pbXBvcnQgeyBTdG9wIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgcG9pbnRPbkZlYXR1cmUgZnJvbSAnQHR1cmYvcG9pbnQtb24tZmVhdHVyZSc7XG5pbXBvcnQgeyBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbiwgcmVtb3ZlU3RvcEZyb21TdG9yZSwgdXBkYXRlU3RvcmVTb3J0aW5nIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMudXRpbHMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgU3RvcHNGZWF0dXJlU3RvcmUsIFN0b3BzU3RvcmUgfSBmcm9tICcuLi9zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgcm91bmRDb29yZFRvIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAudXRpbHMnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25SZWxhdGl2ZVBvc2l0aW9uVHlwZSB9IGZyb20gJy4uL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZGlyZWN0aW9ucy1pbnB1dHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlyZWN0aW9ucy1pbnB1dHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaXJlY3Rpb25zLWlucHV0cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNJbnB1dHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW52YWxpZEtleXMgPSBbJ0NvbnRyb2wnLCAnU2hpZnQnLCAnQWx0J107XG4gIHByaXZhdGUgb25NYXBDbGlja0V2ZW50S2V5cyA9IFtdO1xuICBwdWJsaWMgc3RvcFdpdGhIb3ZlcjogU3RvcDtcbiAgcHVibGljIHN0b3BJc0RyYWdnZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcbiAgQElucHV0KCkgc3RvcHNGZWF0dXJlU3RvcmU6IFN0b3BzRmVhdHVyZVN0b3JlO1xuICBASW5wdXQoKSBwcm9qZWN0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvb3JkUm91bmRlZERlY2ltYWxzOiBudW1iZXIgPSA2O1xuXG4gIEBJbnB1dCgpIGRlYm91bmNlOiBudW1iZXIgPSAyMDA7XG4gIEBJbnB1dCgpIGxlbmd0aDogbnVtYmVyID0gMjtcblxuICBAT3V0cHV0KCkgc3RvcElucHV0SGFzRm9jdXM6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlKSB7IH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVubGlzdGVuTWFwU2luZ2xlQ2xpY2soKTtcbiAgfVxuICBvblN0b3BFbnRlcihzdG9wOiBTdG9wKSB7XG4gICAgdGhpcy5zdG9wV2l0aEhvdmVyID0gc3RvcDtcbiAgfVxuICBvblN0b3BMZWF2ZSgpIHtcbiAgICB0aGlzLnN0b3BXaXRoSG92ZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRPcHRpb25UZXh0KG9wdGlvbikge1xuICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHJldHVybiBvcHRpb24/Lm1ldGEgPyBvcHRpb24ubWV0YS50aXRsZSA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uO1xuICB9XG5cbiAgY2hvb3NlUHJvcG9zYWwoZXZlbnQ6IHsgc291cmNlOiBNYXRBdXRvY29tcGxldGUsIG9wdGlvbjogTWF0T3B0aW9uIH0sIHN0b3A6IFN0b3ApIHtcbiAgICBjb25zdCByZXN1bHQ6IEZlYXR1cmUgPSBldmVudC5vcHRpb24udmFsdWU7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgbGV0IGdlb21Db29yZDtcbiAgICAgIGNvbnN0IGdlb20gPSByZXN1bHQuZ2VvbWV0cnk7XG4gICAgICBpZiAoZ2VvbS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgIGdlb21Db29yZCA9IGdlb20uY29vcmRpbmF0ZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwb2ludCA9IHBvaW50T25GZWF0dXJlKHJlc3VsdC5nZW9tZXRyeSk7XG4gICAgICAgIGdlb21Db29yZCA9IFtcbiAgICAgICAgICBwb2ludC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcbiAgICAgICAgICBwb2ludC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxuICAgICAgICBdO1xuICAgICAgfVxuICAgICAgaWYgKGdlb21Db29yZCkge1xuICAgICAgICBzdG9wLmNvb3JkaW5hdGVzID0gZ2VvbUNvb3JkO1xuICAgICAgICBzdG9wLnRleHQgPSByZXN1bHQubWV0YS50aXRsZTtcbiAgICAgICAgdGhpcy5zdG9wc1N0b3JlLnVwZGF0ZShzdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRTdG9wVGV4dChldmVudDogS2V5Ym9hcmRFdmVudCwgc3RvcDogU3RvcCkge1xuICAgIHRoaXMudW5saXN0ZW5NYXBTaW5nbGVDbGljaygpO1xuICAgIGNvbnN0IHRlcm0gPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGlmICh0ZXJtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhclN0b3Aoc3RvcCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZhbGlkYXRlVGVybSh0ZXJtKSkge1xuICAgICAgc3RvcC50ZXh0ID0gdGVybTtcbiAgICAgIHRoaXMuc3RvcHNTdG9yZS51cGRhdGUoc3RvcCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHRlcm06IHN0cmluZykge1xuICAgIGlmIChcbiAgICAgIHRoaXMua2V5SXNWYWxpZCh0ZXJtKSAmJlxuICAgICAgKHRlcm0ubGVuZ3RoID49IHRoaXMubGVuZ3RoIHx8IHRlcm0ubGVuZ3RoID09PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUga2V5SXNWYWxpZChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmludmFsaWRLZXlzLmZpbmQodmFsdWUgPT4gdmFsdWUgPT09IGtleSkgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldE5nQ2xhc3Moc3RvcDogU3RvcCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnN0b3BXaXRoSG92ZXIpIHtcbiAgICAgIHJldHVybiAnaWdvLWlucHV0LWNvbnRhaW5lcic7XG4gICAgfSBlbHNlIGlmIChzdG9wLmlkID09PSB0aGlzLnN0b3BXaXRoSG92ZXIuaWQpIHtcbiAgICAgIHJldHVybiAnaWdvLWlucHV0LWNvbnRhaW5lciByZWR1Y2UnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2lnby1pbnB1dC1jb250YWluZXInO1xuICAgIH1cbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKHN0b3A6IFN0b3ApOiBzdHJpbmcge1xuICAgIGxldCBleHRyYSA9ICcnO1xuICAgIGlmIChzdG9wLnJlbGF0aXZlUG9zaXRpb24pIHtcbiAgICAgIGlmIChzdG9wLnJlbGF0aXZlUG9zaXRpb24gPT09IERpcmVjdGlvblJlbGF0aXZlUG9zaXRpb25UeXBlLkludGVybWVkaWF0ZSkge1xuICAgICAgICBleHRyYSA9ICcgIycgKyBzdG9wLnBvc2l0aW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLicgKyBzdG9wLnJlbGF0aXZlUG9zaXRpb24pICsgZXh0cmE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICByZW1vdmVTdG9wKHN0b3A6IFN0b3ApIHtcbiAgICByZW1vdmVTdG9wRnJvbVN0b3JlKHRoaXMuc3RvcHNTdG9yZSwgc3RvcCk7XG4gIH1cblxuICBjbGVhclN0b3Aoc3RvcDogU3RvcCkge1xuICAgIHRoaXMuc3RvcHNTdG9yZS51cGRhdGUoeyBpZDogc3RvcC5pZCwgcmVsYXRpdmVQb3NpdGlvbjogc3RvcC5yZWxhdGl2ZVBvc2l0aW9uLCBwb3NpdGlvbjogc3RvcC5wb3NpdGlvbiB9KTtcbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xuICAgIHRoaXMubW92ZVN0b3BzKGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVTdG9wcyhmcm9tSW5kZXgsIHRvSW5kZXgpIHtcbiAgICBpZiAoZnJvbUluZGV4ICE9PSB0b0luZGV4KSB7XG4gICAgICBjb25zdCBzdG9wcyA9IFsuLi50aGlzLnN0b3BzU3RvcmUudmlldy5hbGwoKV07XG4gICAgICBtb3ZlSXRlbUluQXJyYXkoc3RvcHMsIGZyb21JbmRleCwgdG9JbmRleCk7XG4gICAgICBzdG9wcy5tYXAoKHN0b3AsIGkpID0+IHtcbiAgICAgICAgc3RvcC5yZWxhdGl2ZVBvc2l0aW9uID0gY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oaSwgc3RvcHMubGVuZ3RoKTtcbiAgICAgICAgc3RvcC5wb3NpdGlvbiA9IGk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc3RvcHNTdG9yZS51cGRhdGVNYW55KHN0b3BzKTtcbiAgICAgIHVwZGF0ZVN0b3JlU29ydGluZyh0aGlzLnN0b3BzU3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRGb2N1cyhzdG9wOiBTdG9wKSB7XG4gICAgaWYgKCFzdG9wLnRleHQgfHwgc3RvcC50ZXh0Py5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudW5saXN0ZW5NYXBTaW5nbGVDbGljaygpO1xuICAgICAgdGhpcy5zdG9wSW5wdXRIYXNGb2N1cy5lbWl0KHRydWUpO1xuICAgICAgdGhpcy5saXN0ZW5NYXBTaW5nbGVDbGljayhzdG9wKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3Rlbk1hcFNpbmdsZUNsaWNrKHN0b3A6IFN0b3ApIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5vbmNlKCdzaW5nbGVjbGljaycsIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGNsaWNrQ29vcmRpbmF0ZXMgPSBvbFByb2oudHJhbnNmb3JtKFxuICAgICAgICBldmVudC5jb29yZGluYXRlLFxuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5wcm9qZWN0aW9uLFxuICAgICAgICB0aGlzLnByb2plY3Rpb25cbiAgICAgICk7XG4gICAgICBjb25zdCByb3VuZGVkQ29vcmQgPSByb3VuZENvb3JkVG8oY2xpY2tDb29yZGluYXRlcyBhcyBbbnVtYmVyLCBudW1iZXJdLCB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzKTtcbiAgICAgIHN0b3AudGV4dCA9IHJvdW5kZWRDb29yZC5qb2luKCcsJyk7XG4gICAgICBzdG9wLmNvb3JkaW5hdGVzID0gcm91bmRlZENvb3JkO1xuICAgICAgdGhpcy5zdG9wc1N0b3JlLnVwZGF0ZShzdG9wKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3BJbnB1dEhhc0ZvY3VzLmVtaXQoZmFsc2UpO1xuICAgICAgfSwgNTAwKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uTWFwQ2xpY2tFdmVudEtleXMucHVzaChrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmxpc3Rlbk1hcFNpbmdsZUNsaWNrKCkge1xuICAgIHRoaXMub25NYXBDbGlja0V2ZW50S2V5cy5tYXAoa2V5ID0+IHtcbiAgICAgIG9sT2JzZXJ2YWJsZS51bkJ5S2V5KGtleSk7XG4gICAgfSk7XG4gICAgdGhpcy5vbk1hcENsaWNrRXZlbnRLZXlzID0gW107XG4gIH1cbn1cbiIsIjxkaXYgY2RrRHJvcExpc3QgY2xhc3M9XCJzdG9wcy1saXN0XCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgPGRpdiB0b3VjaGxlYXZlICBcbiAgKHRvdWNoZW50ZXIpPVwib25TdG9wRW50ZXIoc3RvcClcIlxuICAodG91Y2hsZWF2ZSk9XCJvblN0b3BMZWF2ZSgpXCJcbiAgKG1vdXNlb3Zlcik9XCJvblN0b3BFbnRlcihzdG9wKVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uU3RvcExlYXZlKClcIlxuICAoY2RrRHJhZ1N0YXJ0ZWQpPVwic3RvcElzRHJhZ2dlZD10cnVlXCJcbiAgKGNka0RyYWdFbmRlZCk9XCJzdG9wSXNEcmFnZ2VkPWZhbHNlXCJcbiAgY2RrRHJhZ0xvY2tBeGlzPVwieVwiIGNsYXNzPVwic3RvcC1ib3ggbWF0LXR5cG9ncmFwaHlcIiAqbmdGb3I9XCJsZXQgc3RvcCBvZiBzdG9wc1N0b3JlLnZpZXcuYWxsJCgpIHwgYXN5bmM7IGxldCBpID0gaW5kZXg7XCIgY2RrRHJhZz5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImdldE5nQ2xhc3Moc3RvcClcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGlucHV0IGlkPVwie3tzdG9wLmlkfX1cIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoc3RvcClcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJzdG9wLnRleHRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk51bWJlclwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cyhzdG9wKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN0b3AudGV4dFwiXG4gICAgICAgICAgICAoa2V5dXApPVwic2V0U3RvcFRleHQoJGV2ZW50LHN0b3ApXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiPlxuICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgICAgbWF0LWJ1dHRvbiBcbiAgICAgICAgICAgICpuZ0lmPVwiKHN0b3AudGV4dCB8fCBzdG9wLmNvb3JkaW5hdGVzKSAmJiBzdG9wV2l0aEhvdmVyICYmIHN0b3AuaWQ9PT1zdG9wV2l0aEhvdmVyLmlkXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uY2xlYXJTdG9wJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGNvbG9yPVwid2FyblwiIGFyaWEtbGFiZWw9XCJDbGVhclwiIChjbGljayk9XCJjbGVhclN0b3Aoc3RvcClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiY2xvc2VcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIFxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBbZGlzcGxheVdpdGhdPVwiZ2V0T3B0aW9uVGV4dFwiICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cImNob29zZVByb3Bvc2FsKCRldmVudCxzdG9wKVwiPlxuICAgICAgICAgIDxtYXQtb3B0Z3JvdXAgKm5nRm9yPVwibGV0IHNvdXJjZSBvZiBzdG9wLnNlYXJjaFByb3Bvc2Fsc1wiIFtsYWJlbF09XCJzb3VyY2Uuc291cmNlLnRpdGxlXCIgW2Rpc2FibGVkXT1cInNvdXJjZS5zb3VyY2UuZW5hYmxlZCA9PT0gZmFsc2VcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgcmVzdWx0IG9mIHNvdXJjZS5yZXN1bHRzXCIgW3ZhbHVlXT1cInJlc3VsdFwiIFxuICAgICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIiBbbWF0VG9vbHRpcF09XCJyZXN1bHQubWV0YSA/IHJlc3VsdC5tZXRhLnRpdGxlIDogJydcIj5cbiAgICAgICAgICAgIHt7IHJlc3VsdC5tZXRhID8gcmVzdWx0Lm1ldGEudGl0bGUgOiAnJyB9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuXG5cblxuICAgIDxkaXYgY2xhc3M9XCJpZ28tZm9ybS1idXR0b24tZ3JvdXBcIiAqbmdJZj1cIiFzdG9wSXNEcmFnZ2VkICYmIHN0b3BXaXRoSG92ZXIgJiYgc3RvcC5pZCA9PT0gc3RvcFdpdGhIb3Zlci5pZFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInN3aXBlLXZlcnRpY2FsXCIgY2RrRHJhZ0hhbmRsZSBtYXQtaWNvbi1idXR0b24gdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLm1vdmVTdG9wJyB8IHRyYW5zbGF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdlc3R1cmUtc3dpcGUtdmVydGljYWxcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b24gKm5nSWY9XCIoc3RvcHNTdG9yZS5jb3VudCQgfCBhc3luYyk+IDJcIiBtYXQtaWNvbi1idXR0b24gdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnJlbW92ZVN0b3AnIHwgdHJhbnNsYXRlXCIgY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cInJlbW92ZVN0b3Aoc3RvcClcIj5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJkZWxldGVcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiKHN0b3BzU3RvcmUuY291bnQkIHwgYXN5bmMpPD0gMlwiIGRpc2FibGVkPVwidHJ1ZVwiIG1hdC1pY29uLWJ1dHRvbiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0ucmVtb3ZlU3RvcCcgfCB0cmFuc2xhdGVcIiBjb2xvcj1cIndhcm5cIj5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJibGFua1wiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './directions-inputs.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMtaW5wdXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbnMtaW5wdXRzLmNvbXBvbmVudCc7XG4iXX0=