@geotrekce/geotrek-rando-widget 0.4.2 → 0.4.4
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.
- package/dist/cjs/geotrek-rando-widget.cjs.js +1 -1
- package/dist/cjs/geotrek-rando-widget.cjs.js.br +0 -0
- package/dist/cjs/geotrek-rando-widget.cjs.js.gz +0 -0
- package/dist/cjs/grw-app.cjs.entry.js +2 -2
- package/dist/cjs/grw-app.cjs.entry.js.br +0 -0
- package/dist/cjs/grw-app.cjs.entry.js.gz +0 -0
- package/dist/cjs/grw-app.cjs.entry.js.map +1 -1
- package/dist/cjs/grw-filters_12.cjs.entry.js +46 -38
- package/dist/cjs/grw-filters_12.cjs.entry.js.br +0 -0
- package/dist/cjs/grw-filters_12.cjs.entry.js.gz +0 -0
- package/dist/cjs/grw-filters_12.cjs.entry.js.map +1 -1
- package/dist/cjs/grw-touristic-event-card-provider.cjs.entry.js +6 -5
- package/dist/cjs/grw-touristic-event-card-provider.cjs.entry.js.br +0 -0
- package/dist/cjs/grw-touristic-event-card-provider.cjs.entry.js.gz +0 -0
- package/dist/cjs/grw-touristic-event-card-provider.cjs.entry.js.map +1 -1
- package/dist/cjs/{i18n-cfc000c9.js → i18n-a5ad3083.js} +15 -13
- package/dist/cjs/i18n-a5ad3083.js.br +0 -0
- package/dist/cjs/i18n-a5ad3083.js.gz +0 -0
- package/dist/cjs/i18n-a5ad3083.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js.br +0 -0
- package/dist/cjs/loader.cjs.js.gz +0 -0
- package/dist/cjs/utils-332e41b3.js.map +1 -1
- package/dist/collection/components/grw-app/grw-app.js +1 -1
- package/dist/collection/components/grw-app/grw-app.js.br +0 -0
- package/dist/collection/components/grw-app/grw-app.js.gz +0 -0
- package/dist/collection/components/grw-app/grw-app.js.map +1 -1
- package/dist/collection/components/grw-filters/grw-filters.js +1 -1
- package/dist/collection/components/grw-filters/grw-filters.js.br +0 -0
- package/dist/collection/components/grw-filters/grw-filters.js.gz +0 -0
- package/dist/collection/components/grw-filters/grw-filters.js.map +1 -1
- package/dist/collection/components/grw-map/grw-map.js +16 -20
- package/dist/collection/components/grw-map/grw-map.js.br +0 -0
- package/dist/collection/components/grw-map/grw-map.js.gz +0 -0
- package/dist/collection/components/grw-map/grw-map.js.map +1 -1
- package/dist/collection/components/grw-touristic-content-detail/grw-touristic-content-detail.js +1 -1
- package/dist/collection/components/grw-touristic-content-detail/grw-touristic-content-detail.js.br +0 -0
- package/dist/collection/components/grw-touristic-content-detail/grw-touristic-content-detail.js.gz +0 -0
- package/dist/collection/components/grw-touristic-content-detail/grw-touristic-content-detail.js.map +1 -1
- package/dist/collection/components/grw-touristic-event-detail/grw-touristic-event-detail.js +1 -1
- package/dist/collection/components/grw-touristic-event-detail/grw-touristic-event-detail.js.br +0 -0
- package/dist/collection/components/grw-touristic-event-detail/grw-touristic-event-detail.js.gz +0 -0
- package/dist/collection/components/grw-touristic-event-detail/grw-touristic-event-detail.js.map +1 -1
- package/dist/collection/components/grw-trek-detail/grw-trek-detail.js +1 -1
- package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.br +0 -0
- package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.gz +0 -0
- package/dist/collection/components/grw-trek-detail/grw-trek-detail.js.map +1 -1
- package/dist/collection/i18n/i18n.js +14 -12
- package/dist/collection/i18n/i18n.js.br +0 -0
- package/dist/collection/i18n/i18n.js.gz +0 -0
- package/dist/collection/i18n/i18n.js.map +1 -1
- package/dist/collection/store/grw-touristic-content-provider.js +19 -1
- package/dist/collection/store/grw-touristic-content-provider.js.br +0 -0
- package/dist/collection/store/grw-touristic-content-provider.js.gz +0 -0
- package/dist/collection/store/grw-touristic-content-provider.js.map +1 -1
- package/dist/collection/store/grw-touristic-contents-provider.js +1 -1
- package/dist/collection/store/grw-touristic-contents-provider.js.br +0 -0
- package/dist/collection/store/grw-touristic-contents-provider.js.gz +0 -0
- package/dist/collection/store/grw-touristic-contents-provider.js.map +1 -1
- package/dist/collection/store/grw-touristic-event-provider.js +23 -5
- package/dist/collection/store/grw-touristic-event-provider.js.br +0 -0
- package/dist/collection/store/grw-touristic-event-provider.js.gz +0 -0
- package/dist/collection/store/grw-touristic-event-provider.js.map +1 -1
- package/dist/collection/store/grw-trek-provider.js +33 -5
- package/dist/collection/store/grw-trek-provider.js.br +0 -0
- package/dist/collection/store/grw-trek-provider.js.gz +0 -0
- package/dist/collection/store/grw-trek-provider.js.map +1 -1
- package/dist/collection/store/grw-treks-provider.js +6 -6
- package/dist/collection/store/grw-treks-provider.js.br +0 -0
- package/dist/collection/store/grw-treks-provider.js.gz +0 -0
- package/dist/collection/store/grw-treks-provider.js.map +1 -1
- package/dist/collection/stories/App.js +6 -0
- package/dist/collection/stories/App.js.br +0 -0
- package/dist/collection/stories/App.js.gz +0 -0
- package/dist/collection/stories/App.stories.js +3 -0
- package/dist/collection/stories/App.stories.js.br +0 -0
- package/dist/collection/stories/App.stories.js.gz +0 -0
- package/dist/collection/utils/utils.js.map +1 -1
- package/dist/esm/geotrek-rando-widget.js +1 -1
- package/dist/esm/geotrek-rando-widget.js.br +0 -0
- package/dist/esm/geotrek-rando-widget.js.gz +0 -0
- package/dist/esm/grw-app.entry.js +2 -2
- package/dist/esm/grw-app.entry.js.br +0 -0
- package/dist/esm/grw-app.entry.js.gz +0 -0
- package/dist/esm/grw-app.entry.js.map +1 -1
- package/dist/esm/grw-filters_12.entry.js +46 -38
- package/dist/esm/grw-filters_12.entry.js.br +0 -0
- package/dist/esm/grw-filters_12.entry.js.gz +0 -0
- package/dist/esm/grw-filters_12.entry.js.map +1 -1
- package/dist/esm/grw-touristic-event-card-provider.entry.js +6 -5
- package/dist/esm/grw-touristic-event-card-provider.entry.js.br +0 -0
- package/dist/esm/grw-touristic-event-card-provider.entry.js.gz +0 -0
- package/dist/esm/grw-touristic-event-card-provider.entry.js.map +1 -1
- package/dist/esm/{i18n-60e9fdd3.js → i18n-e6325e81.js} +15 -13
- package/dist/esm/i18n-e6325e81.js.br +0 -0
- package/dist/esm/i18n-e6325e81.js.gz +0 -0
- package/dist/esm/i18n-e6325e81.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loader.js.br +0 -0
- package/dist/esm/loader.js.gz +0 -0
- package/dist/esm/utils-b09ac7c9.js.map +1 -1
- package/dist/esm-es5/geotrek-rando-widget.js +1 -1
- package/dist/esm-es5/geotrek-rando-widget.js.br +0 -0
- package/dist/esm-es5/geotrek-rando-widget.js.gz +0 -0
- package/dist/esm-es5/geotrek-rando-widget.js.map +1 -1
- package/dist/esm-es5/grw-app.entry.js +1 -1
- package/dist/esm-es5/grw-app.entry.js.br +0 -0
- package/dist/esm-es5/grw-app.entry.js.gz +0 -0
- package/dist/esm-es5/grw-app.entry.js.map +1 -1
- package/dist/esm-es5/grw-filters_12.entry.js +3 -3
- package/dist/esm-es5/grw-filters_12.entry.js.br +0 -0
- package/dist/esm-es5/grw-filters_12.entry.js.gz +0 -0
- package/dist/esm-es5/grw-filters_12.entry.js.map +1 -1
- package/dist/esm-es5/grw-touristic-event-card-provider.entry.js +1 -1
- package/dist/esm-es5/grw-touristic-event-card-provider.entry.js.br +0 -0
- package/dist/esm-es5/grw-touristic-event-card-provider.entry.js.gz +0 -0
- package/dist/esm-es5/grw-touristic-event-card-provider.entry.js.map +1 -1
- package/dist/esm-es5/i18n-e6325e81.js +2 -0
- package/dist/esm-es5/i18n-e6325e81.js.br +0 -0
- package/dist/esm-es5/i18n-e6325e81.js.gz +0 -0
- package/dist/esm-es5/i18n-e6325e81.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.br +0 -0
- package/dist/esm-es5/loader.js.gz +0 -0
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/utils-b09ac7c9.js.map +1 -1
- package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js +1 -1
- package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.br +0 -0
- package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.gz +0 -0
- package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.map +1 -1
- package/dist/geotrek-rando-widget/p-0f47847d.system.js +2 -0
- package/dist/geotrek-rando-widget/p-0f47847d.system.js.br +0 -0
- package/dist/geotrek-rando-widget/p-0f47847d.system.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-0f47847d.system.js.map +1 -0
- package/dist/geotrek-rando-widget/p-1f8e7e57.js.map +1 -1
- package/dist/geotrek-rando-widget/{p-3c32c109.system.entry.js → p-2c4abcd9.system.entry.js} +2 -2
- package/dist/geotrek-rando-widget/p-2c4abcd9.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-2c4abcd9.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/{p-3c32c109.system.entry.js.map → p-2c4abcd9.system.entry.js.map} +1 -1
- package/dist/geotrek-rando-widget/{p-bcd87b5c.entry.js → p-3bbe169c.entry.js} +3 -3
- package/dist/geotrek-rando-widget/p-3bbe169c.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-3bbe169c.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-3bbe169c.entry.js.map +1 -0
- package/dist/geotrek-rando-widget/p-42ee320d.entry.js +2 -0
- package/dist/geotrek-rando-widget/p-42ee320d.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-42ee320d.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-42ee320d.entry.js.map +1 -0
- package/dist/geotrek-rando-widget/p-5e7ed046.js +2 -0
- package/dist/geotrek-rando-widget/p-5e7ed046.js.br +0 -0
- package/dist/geotrek-rando-widget/p-5e7ed046.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-5e7ed046.js.map +1 -0
- package/dist/geotrek-rando-widget/{p-feeb03a9.system.entry.js → p-b40c2ea8.system.entry.js} +3 -3
- package/dist/geotrek-rando-widget/p-b40c2ea8.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-b40c2ea8.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-b40c2ea8.system.entry.js.map +1 -0
- package/dist/geotrek-rando-widget/p-ba971c93.entry.js +2 -0
- package/dist/geotrek-rando-widget/p-ba971c93.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-ba971c93.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/{p-d5584258.entry.js.map → p-ba971c93.entry.js.map} +1 -1
- package/dist/geotrek-rando-widget/p-c63228e8.system.js.map +1 -1
- package/dist/geotrek-rando-widget/p-cc8a7df2.system.js +1 -1
- package/dist/geotrek-rando-widget/p-cc8a7df2.system.js.br +0 -0
- package/dist/geotrek-rando-widget/p-cc8a7df2.system.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-cc8a7df2.system.js.map +1 -1
- package/dist/geotrek-rando-widget/p-ea78e5f0.system.entry.js +2 -0
- package/dist/geotrek-rando-widget/p-ea78e5f0.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-ea78e5f0.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-ea78e5f0.system.entry.js.map +1 -0
- package/dist/types/components/grw-map/grw-map.d.ts +2 -2
- package/dist/types/components.d.ts +6 -0
- package/dist/types/i18n/i18n.d.ts +1 -0
- package/dist/types/store/grw-touristic-content-provider.d.ts +1 -0
- package/dist/types/store/grw-touristic-event-provider.d.ts +1 -0
- package/dist/types/store/grw-trek-provider.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/i18n-cfc000c9.js.br +0 -0
- package/dist/cjs/i18n-cfc000c9.js.gz +0 -0
- package/dist/cjs/i18n-cfc000c9.js.map +0 -1
- package/dist/esm/i18n-60e9fdd3.js.br +0 -0
- package/dist/esm/i18n-60e9fdd3.js.gz +0 -0
- package/dist/esm/i18n-60e9fdd3.js.map +0 -1
- package/dist/esm-es5/i18n-60e9fdd3.js +0 -2
- package/dist/esm-es5/i18n-60e9fdd3.js.br +0 -0
- package/dist/esm-es5/i18n-60e9fdd3.js.gz +0 -0
- package/dist/esm-es5/i18n-60e9fdd3.js.map +0 -1
- package/dist/geotrek-rando-widget/p-3c32c109.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-3c32c109.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-7ce01b3c.entry.js +0 -2
- package/dist/geotrek-rando-widget/p-7ce01b3c.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-7ce01b3c.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-7ce01b3c.entry.js.map +0 -1
- package/dist/geotrek-rando-widget/p-7eca502d.js +0 -2
- package/dist/geotrek-rando-widget/p-7eca502d.js.br +0 -0
- package/dist/geotrek-rando-widget/p-7eca502d.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-7eca502d.js.map +0 -1
- package/dist/geotrek-rando-widget/p-9bc873ce.system.entry.js +0 -2
- package/dist/geotrek-rando-widget/p-9bc873ce.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-9bc873ce.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-9bc873ce.system.entry.js.map +0 -1
- package/dist/geotrek-rando-widget/p-b92fdd4e.system.js +0 -2
- package/dist/geotrek-rando-widget/p-b92fdd4e.system.js.br +0 -0
- package/dist/geotrek-rando-widget/p-b92fdd4e.system.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-b92fdd4e.system.js.map +0 -1
- package/dist/geotrek-rando-widget/p-bcd87b5c.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-bcd87b5c.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-bcd87b5c.entry.js.map +0 -1
- package/dist/geotrek-rando-widget/p-d5584258.entry.js +0 -2
- package/dist/geotrek-rando-widget/p-d5584258.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-d5584258.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-feeb03a9.system.entry.js.br +0 -0
- package/dist/geotrek-rando-widget/p-feeb03a9.system.entry.js.gz +0 -0
- package/dist/geotrek-rando-widget/p-feeb03a9.system.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grw-map.js","sourceRoot":"","sources":["../../../src/components/grw-map/grw-map.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, getAssetPath, Build, Listen } from '@stencil/core';\nimport { Feature, FeatureCollection } from 'geojson';\nimport L, { MarkerClusterGroup, TileLayer } from 'leaflet';\nimport 'leaflet-rotate';\nimport 'leaflet.locatecontrol';\nimport '@raruto/leaflet-elevation/dist/leaflet-elevation.min.js';\nimport 'leaflet.markercluster/dist/leaflet.markercluster.js';\nimport state, { onChange, reset } from 'store/store';\nimport { translate } from 'i18n/i18n';\nimport { getTrekGeometry } from 'services/treks.service';\n\n@Component({\n tag: 'grw-map',\n styleUrl: 'grw-map.scss',\n shadow: true,\n})\nexport class GrwMap {\n mapRef: HTMLElement;\n elevationRef: HTMLElement;\n maxZoom = 19;\n\n @Event() trekCardPress: EventEmitter<number>;\n @Event() touristicContentCardPress: EventEmitter<number>;\n\n @State() mapIsReady = false;\n @Prop() nameLayer: string;\n @Prop() urlLayer: string;\n @Prop() attributionLayer: string;\n @Prop() center = '1, 1';\n @Prop() zoom = 10;\n\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorBackground = '#fef7ff';\n\n @Prop() colorTrekLine = '#6b0030';\n @Prop() colorSensitiveArea = '\t#4974a5';\n @Prop() colorPoiIcon = '#974c6e';\n @Prop() useGradient = false;\n\n @Prop() resetStoreOnDisconnected = true;\n @Prop() isLargeView = false;\n map: L.Map;\n resizeObserver: ResizeObserver;\n bounds;\n treksLayer: L.GeoJSON<any>;\n toutisticContentsLayer: L.GeoJSON<any>;\n\n treksMarkerClusterGroup: MarkerClusterGroup;\n touristicContentsMarkerClusterGroup: MarkerClusterGroup;\n currentTrekLayer: L.GeoJSON<any>;\n currentStepsLayer: L.GeoJSON<any>;\n selectedCurrentTrekLayer: L.GeoJSON<any>;\n selectedCurrentStepLayer: L.GeoJSON<any>;\n selectedTouristicContentLayer: L.GeoJSON<any>;\n currentReferencePointsLayer: L.GeoJSON<any>;\n currentParkingLayer: L.GeoJSON<any>;\n currentSensitiveAreasLayer: L.GeoJSON<any>;\n currentPoisLayer: L.GeoJSON<any>;\n currentInformationDesksLayer: L.GeoJSON<any>;\n currentToutisticContentsLayer: L.GeoJSON<any>;\n currentToutisticEventsLayer: L.GeoJSON<any>;\n currentToutisticContentLayer: L.GeoJSON<any>;\n currentToutisticEventLayer: L.GeoJSON<any>;\n elevationControl: L.Control.Layers;\n layersControl: L.Control.Layers;\n userLayersState: {\n [key: number]: boolean;\n } = {};\n tileLayer: { key: string; value: TileLayer }[] = [];\n trekPopupIsOpen: boolean;\n stepPopupIsOpen: boolean;\n touristicContentPopupIsOpen: boolean;\n\n handleTreksWithinBoundsBind: (event: any) => void = this.handleTreksWithinBounds.bind(this);\n handleTouristicContentsWithinBoundsBind: (event: any) => void = this.handleTouristicContentsWithinBounds.bind(this);\n\n @Listen('centerOnMap', { target: 'window' })\n onCenterOnMap(event: CustomEvent<{ latitude: number; longitude: number }>) {\n this.map.setView(new L.LatLng(event.detail.latitude, event.detail.longitude), 17, { animate: false });\n }\n\n @Listen('stepsIsInViewport', { target: 'window' })\n stepsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentStepsLayer) {\n this.handleLayerVisibility(event.detail, this.currentStepsLayer);\n }\n }\n\n @Listen('descriptionIsInViewport', { target: 'window' })\n descriptionIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentReferencePointsLayer) {\n this.handleLayerVisibility(event.detail, this.currentReferencePointsLayer);\n }\n }\n\n @Listen('parkingIsInViewport', { target: 'window' })\n parkingIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentParkingLayer) {\n this.handleLayerVisibility(event.detail, this.currentParkingLayer);\n }\n }\n\n @Listen('informationDeskIsInViewport', { target: 'window' })\n onInformationDesksIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentInformationDesksLayer) {\n this.handleLayerVisibility(event.detail, this.currentInformationDesksLayer);\n }\n }\n\n @Listen('sensitiveAreaIsInViewport', { target: 'window' })\n sensitiveAreaIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentSensitiveAreasLayer) {\n this.handleLayerVisibility(event.detail, this.currentSensitiveAreasLayer);\n }\n }\n\n @Listen('poiIsInViewport', { target: 'window' })\n poiIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentPoisLayer) {\n this.handleLayerVisibility(event.detail, this.currentPoisLayer);\n }\n }\n\n @Listen('touristicContentsIsInViewport', { target: 'window' })\n touristicContentsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentToutisticContentsLayer) {\n this.handleLayerVisibility(event.detail, this.currentToutisticContentsLayer);\n }\n }\n\n @Listen('touristicEventsIsInViewport', { target: 'window' })\n touristicEventsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentToutisticEventsLayer) {\n this.handleLayerVisibility(event.detail, this.currentToutisticEventsLayer);\n }\n }\n\n @Listen('cardTrekMouseOver', { target: 'window' })\n onCardTrekMouseOver(event: CustomEvent<number>) {\n if (!state.parentTrek && (!state.selectedTrekId || state.selectedTrekId !== event.detail)) {\n state.selectedTrekId = event.detail;\n this.hideTrekLine();\n this.showTrekLine(event.detail);\n this.addSelectedCurrentTrek(event.detail);\n } else if (state.parentTrek) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.addSelectedCurrentStep(event.detail);\n }\n }\n\n @Listen('cardTrekMouseLeave', { target: 'window' })\n onCardTrekMouseLeave() {\n if (!this.trekPopupIsOpen && state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n } else if (this.currentStepsLayer) {\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n }\n\n @Listen('cardTouristicContentMouseOver', { target: 'window' })\n onTouristicContentMouseOver(event: CustomEvent<number>) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.addSelectedTouristicContent(event.detail);\n }\n\n @Listen('cardTouristicContentMouseLeave', { target: 'window' })\n onTouristicContentMouseLeave() {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n\n componentDidLoad() {\n this.map = L.map(this.mapRef, {\n center: this.center.split(',').map(Number) as L.LatLngExpression,\n zoom: this.zoom,\n });\n\n L.control.scale({ metric: true, imperial: false }).addTo(this.map);\n (L.control as any).locate({ showPopup: false }).addTo(this.map);\n\n const nameLayers = this.nameLayer ? this.nameLayer.split(',') : [];\n\n const urlLayers = this.urlLayer.split(',http').map((url, index) => (index === 0 ? url : 'http' + url));\n\n const attributionLayers = this.attributionLayer ? this.attributionLayer.split(',') : [];\n urlLayers.forEach((urlLayer, index) => {\n this.tileLayer.push({\n key: `${nameLayers[index]}`,\n value: L.tileLayer(urlLayer, {\n maxZoom: this.maxZoom,\n attribution: `${\n attributionLayers[index] && attributionLayers[index] !== '' ? attributionLayers[index].concat(' | ') : ''\n }Powered by <a target=\"_blank\" href=\"https://geotrek.fr/\">Geotrek</a>`,\n }),\n });\n });\n this.tileLayer[0].value.addTo(this.map);\n\n if (urlLayers.length > 1) {\n this.layersControl = L.control\n .layers(\n this.tileLayer.reduce((tileLayers, tileLayer) => Object.assign(tileLayers, { [tileLayer.key]: tileLayer.value }), {}),\n {},\n { collapsed: true },\n )\n .addTo(this.map);\n\n (L.Control as any).Contract = L.Control.extend({\n onAdd: () => {\n const contractContainer = L.DomUtil.create('div');\n contractContainer.className = 'leaflet-bar leaflet-control';\n const contract = contractContainer.appendChild(L.DomUtil.create('a'));\n contract.href = '#';\n contract.style.backgroundImage = `var(--contract-image-src)`;\n contractContainer.onclick = e => {\n this.bounds && this.map.fitBounds(this.bounds);\n e.preventDefault();\n };\n return contractContainer;\n },\n });\n\n (L.control as any).contract = opts => {\n return new (L.Control as any).Contract(opts);\n };\n\n (L.control as any).contract({ position: 'topleft' }).addTo(this.map);\n }\n\n if (state.currentTrek) {\n this.addTrek();\n } else if (state.currentTreks) {\n this.addTreks();\n } else if (state.currentTouristicContent) {\n this.addTouristicContent();\n } else if (state.currentTouristicEvent) {\n this.addTouristicEvent();\n } else if (state.touristicContents) {\n this.addTouristicContents();\n }\n\n onChange('currentTreks', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks();\n }\n });\n\n onChange('currentTrek', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks();\n }\n });\n\n onChange('currentTouristicContent', () => {\n if (state.currentTouristicContent) {\n this.removeTrek();\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.touristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents();\n } else if (state.currentTrek) {\n this.removeTouristicContent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicContent();\n this.addTreks();\n }\n });\n\n onChange('currentTouristicEvent', () => {\n if (state.currentTouristicEvent) {\n this.removeTrek();\n this.addTouristicEvent();\n } else if (state.currentTrek) {\n this.removeTouristicEvent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicEvent();\n this.addTreks();\n }\n });\n\n onChange('currentTouristicContents', () => {\n if (state.currentTouristicContent) {\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.currentTouristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents();\n }\n });\n\n onChange('mode', () => {\n if (state.mode === 'treks') {\n this.removeTouristicContents();\n this.addTreks();\n } else if (state.mode === 'touristicContents') {\n this.removeTreks();\n this.addTouristicContents();\n }\n });\n }\n\n handleLayerVisibility(visible: boolean, layer: L.GeoJSON) {\n if (visible && !this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n } else if (this.map.hasLayer(layer) && !this.userLayersState[(layer as any)._leaflet_id]) {\n this.map.removeLayer(layer);\n }\n this.handleLayersControlEvent();\n }\n\n addTreks() {\n state.treksWithinBounds = state.currentTreks;\n\n const treksCurrentDepartureCoordinates = [];\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n for (const trek of state.currentTreks) {\n treksCurrentDepartureCoordinates.push(trek.departure_geom);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc: trek.attachments && trek.attachments.length > 0 && trek.attachments[0].thumbnail,\n },\n });\n }\n }\n\n if (!this.treksLayer) {\n if (treksCurrentDepartureCoordinates.length > 0 && !state.currentMapBounds) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n this.treksLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"trek-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"trek-marker-container\"></div>`,\n className: 'trek-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.hideTrekLine();\n this.showTrekLine(geoJsonPoint.properties.id);\n this.addSelectedCurrentTrek(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.treksMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({ html: '<div>' + cluster.getChildCount() + '</div>', className: 'treks-marker-cluster-group-icon', iconSize: 48, iconAnchor: [24, 24] } as any);\n },\n });\n\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n this.map.addLayer(this.treksMarkerClusterGroup);\n } else {\n if (treksCurrentDepartureCoordinates.length > 0) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.treksLayer.clearLayers();\n this.treksLayer.addData(treksFeatureCollection);\n this.treksMarkerClusterGroup.clearLayers();\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n }\n\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n this.map.on('moveend', this.handleTreksWithinBoundsBind);\n }\n\n removeTreks() {\n if (this.treksLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.treksMarkerClusterGroup);\n this.treksLayer = null;\n this.treksMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTreksWithinBoundsBind);\n }\n }\n\n handleTreksWithinBounds() {\n if (\n (state.currentTreks && !state.currentMapBounds) ||\n (state.currentTreks && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.treksWithinBounds = state.currentTreks.filter(trek => this.map.getBounds().contains(L.latLng(trek.departure_geom[1], trek.departure_geom[0])));\n }\n }\n\n handleTouristicContentsWithinBounds() {\n if (\n (state.currentTouristicContents && !state.currentMapBounds) ||\n (state.currentTouristicContents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicContentsWithinBounds = state.currentTouristicContents.filter(touristicContent =>\n this.map.getBounds().contains(L.latLng(touristicContent.geometry.coordinates[1], touristicContent.geometry.coordinates[0])),\n );\n }\n }\n\n addTrek() {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: state.currentTrek.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: 'transparent',\n }),\n interactive: false,\n }).addTo(this.map);\n\n if (state.currentTrek.parking_location) {\n const currentParking: Feature = {\n type: 'Feature',\n properties: {},\n geometry: { type: 'Point', coordinates: state.currentTrek.parking_location },\n };\n this.currentParkingLayer = L.geoJSON(currentParking, {\n pointToLayer: (_geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: '<div>P</div>',\n className: 'parking-icon',\n iconSize: 48,\n iconAnchor: [0, 48],\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any),\n });\n }\n\n if (state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0) {\n const currentSensitiveAreasFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const sensitiveArea of state.currentSensitiveAreas) {\n currentSensitiveAreasFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: sensitiveArea.name },\n geometry: sensitiveArea.geometry,\n });\n }\n\n this.currentSensitiveAreasLayer = L.geoJSON(currentSensitiveAreasFeatureCollection, {\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const sensitiveAreaTooltip = L.DomUtil.create('div');\n sensitiveAreaTooltip.className = 'sensitive-area-tooltip';\n const sensitiveAreaName = L.DomUtil.create('div');\n sensitiveAreaName.innerHTML = geoJsonPoint.properties.name;\n sensitiveAreaName.className = 'sensitive-area-name';\n sensitiveAreaTooltip.appendChild(sensitiveAreaName);\n layer.bindTooltip(sensitiveAreaTooltip).openTooltip();\n });\n },\n style: () => ({ color: this.colorSensitiveArea }),\n });\n }\n\n if (state.currentPois && state.currentPois.length > 0) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentPoi of state.currentPois) {\n currentPoisFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentPoi.name, type_pictogram: state.poiTypes.find(poiType => poiType.id === currentPoi.type)?.pictogram },\n geometry: currentPoi.geometry,\n });\n }\n\n this.currentPoisLayer = L.geoJSON(currentPoisFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram ? `<img src=${geoJsonPoint.properties.type_pictogram} />` : `<img />`,\n className: 'poi-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const poiTooltip = L.DomUtil.create('div');\n poiTooltip.className = 'poi-tooltip';\n const poiName = L.DomUtil.create('div');\n poiName.innerHTML = geoJsonPoint.properties.name;\n poiName.className = 'poi-name';\n poiTooltip.appendChild(poiName);\n layer.bindTooltip(poiTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.trekTouristicContents && state.trekTouristicContents.length > 0) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicContent of state.trekTouristicContents) {\n currentTouristicContentsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n name: touristicContent.name,\n category_pictogram: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === touristicContent.category)?.pictogram,\n },\n geometry: touristicContent.geometry,\n });\n }\n\n this.currentToutisticContentsLayer = L.geoJSON(currentTouristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.category_pictogram ? `<img src=${geoJsonPoint.properties.category_pictogram} />` : `<img />`,\n className: 'touristic-content-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const touristicContentTooltip = L.DomUtil.create('div');\n touristicContentTooltip.className = 'touristic-content-tooltip';\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n touristicContentName.className = 'touristic-content-name';\n touristicContentTooltip.appendChild(touristicContentName);\n layer.bindTooltip(touristicContentTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.touristicEvents && state.touristicEvents.length > 0) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicEvent of state.touristicEvents) {\n currentTouristicEventsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n name: touristicEvent.name,\n type_pictogram: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === touristicEvent.type)?.pictogram,\n },\n geometry: touristicEvent.geometry,\n });\n }\n\n this.currentToutisticEventsLayer = L.geoJSON(currentTouristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram ? `<img src=${geoJsonPoint.properties.type_pictogram} />` : `<img />`,\n className: 'touristic-event-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const touristicEventTooltip = L.DomUtil.create('div');\n touristicEventTooltip.className = 'touristic-event-tooltip';\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n touristicEventName.className = 'touristic-event-name';\n touristicEventTooltip.appendChild(touristicEventName);\n layer.bindTooltip(touristicEventTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentInformationDesks && state.currentInformationDesks.length > 0) {\n const currentInformationDesksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentInformationDesk of state.currentInformationDesks.filter(currentInformationDesks =>\n state.currentTrek.information_desks.includes(currentInformationDesks.id),\n )) {\n if (currentInformationDesk.latitude && currentInformationDesk.longitude) {\n currentInformationDesksFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentInformationDesk.name, type_pictogram: currentInformationDesk.type.pictogram },\n geometry: { type: 'Point', coordinates: [Number(currentInformationDesk.longitude), Number(currentInformationDesk.latitude)] },\n });\n }\n }\n\n this.currentInformationDesksLayer = L.geoJSON(currentInformationDesksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram ? `<img src=${geoJsonPoint.properties.type_pictogram} />` : `<img />`,\n className: 'information-desks-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const informationDesksTooltip = L.DomUtil.create('div');\n informationDesksTooltip.className = 'information-desks-tooltip';\n const informationDesksName = L.DomUtil.create('div');\n informationDesksName.innerHTML = geoJsonPoint.properties.name;\n informationDesksName.className = 'information-desks-name';\n informationDesksTooltip.appendChild(informationDesksName);\n layer.bindTooltip(informationDesksTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentTrek.points_reference) {\n const currentReferencePointsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n currentReferencePointsFeatureCollection.features.push({\n type: 'Feature',\n properties: {},\n geometry: state.currentTrek.points_reference,\n });\n\n let index = 0;\n this.currentReferencePointsLayer = L.geoJSON(currentReferencePointsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: index,\n className: 'point-reference-icon',\n iconSize: 24,\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any);\n },\n });\n }\n\n if (!this.currentStepsLayer && state.parentTrekId && state.parentTrek && state.currentTrek.id === state.parentTrekId) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n for (const trek of state.currentTrekSteps) {\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc: trek.attachments && trek.attachments.length > 0 && trek.attachments[0].thumbnail,\n },\n });\n }\n }\n\n let stepIndex = 0;\n this.currentStepsLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n stepIndex += 1;\n return L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div class=\"step-marker-container\"><div class=\"step-number\">${stepIndex}</div></div>`,\n className: 'step-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedCurrentStep(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n }\n\n const elevationOptions = {\n srcFolder: 'https://unpkg.com/@raruto/leaflet-elevation/src/',\n elevationDiv: `#elevation`,\n theme: `custom-theme${!this.useGradient ? ' use-theme-color' : ''}`,\n detached: true,\n height: 250,\n wptIcons: true,\n wptLabels: true,\n collapsed: false,\n autohide: false,\n distanceMarkers: { distance: false, direction: true },\n hotline: this.useGradient,\n closeBtn: false,\n summary: false,\n time: false,\n timestamps: false,\n legend: false,\n downloadLink: false,\n autofitBounds: false,\n ruler: false,\n edgeScale: false,\n waypoints: false,\n almostOver: false,\n speed: false,\n slope: false,\n acceleration: false,\n reverseCoords: false,\n imperial: false,\n dragging: false,\n zooming: false,\n handlers: ['Altitude', 'Distance', 'Slope', 'LinearGradient'],\n linearGradient: {\n attr: 'z',\n path: 'altitude',\n range: { 0.0: '#008800', 0.5: '#ffff00', 1.0: '#ff0000' },\n min: 'elevation_min',\n max: 'elevation_max',\n },\n };\n this.elevationControl = (L.control as any).elevation({ ...elevationOptions }).addTo(this.map);\n const elevation = JSON.stringify({\n name: `${state.currentTrek.name}`,\n type: 'FeatureCollection',\n features: [{ type: 'Feature', geometry: { type: 'LineString', coordinates: state.currentTrek.geometry.coordinates }, properties: null }],\n });\n (this.elevationControl as any).load(elevation);\n\n const overlays = {};\n if (this.currentStepsLayer) {\n overlays[translate[state.language].layers.steps] = this.currentStepsLayer;\n }\n if (this.currentReferencePointsLayer) {\n overlays[translate[state.language].layers.referencePoints] = this.currentReferencePointsLayer;\n }\n if (this.currentParkingLayer) {\n overlays[translate[state.language].layers.parking] = this.currentParkingLayer;\n }\n if (this.currentSensitiveAreasLayer) {\n overlays[translate[state.language].layers.sensitiveArea] = this.currentSensitiveAreasLayer;\n }\n if (this.currentInformationDesksLayer) {\n overlays[translate[state.language].layers.informationPlaces] = this.currentInformationDesksLayer;\n }\n if (this.currentPoisLayer) {\n overlays[translate[state.language].layers.pois] = this.currentPoisLayer;\n }\n if (this.currentToutisticContentsLayer) {\n overlays[translate[state.language].layers.touristicContents] = this.currentToutisticContentsLayer;\n }\n\n if (this.currentToutisticEventsLayer) {\n overlays[translate[state.language].layers.touristicEvents] = this.currentToutisticEventsLayer;\n }\n\n if (this.layersControl) {\n Object.keys(overlays).forEach(key => {\n this.layersControl.addOverlay(overlays[key], key);\n });\n } else {\n this.layersControl = L.control.layers({}, overlays, { collapsed: true }).addTo(this.map);\n }\n\n this.handleLayersControlEvent();\n\n this.bounds = L.latLngBounds(state.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n addSelectedCurrentTrek(id, customCoordinates?) {\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n const trek = state.currentTreks.find(trek => trek.id === id);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc: trek.attachments && trek.attachments.length > 0 && trek.attachments[0].thumbnail,\n },\n });\n }\n\n this.removeSelectedCurrentTrek();\n state.selectedTrekId = id;\n\n this.selectedCurrentTrekLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"trek-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"trek-marker-container\"></div>`,\n className: 'selected-trek-marker',\n iconSize: 64,\n iconAnchor: [36, 36],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.trekPopupIsOpen) {\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n layer.on('popupopen', () => {\n this.trekPopupIsOpen = Boolean(state.selectedTrekId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentTrek() {\n state.selectedTrekId = null;\n this.selectedCurrentTrekLayer && this.map.removeLayer(this.selectedCurrentTrekLayer);\n this.selectedCurrentTrekLayer = null;\n }\n\n addSelectedCurrentStep(id, customCoordinates?) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n const stepIndex = state.currentTrekSteps.findIndex(trek => trek.id === id);\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : state.currentTrekSteps[stepIndex].departure_geom },\n properties: {\n id: state.currentTrekSteps[stepIndex].id,\n name: state.currentTrekSteps[stepIndex].name,\n practice: state.practices.find(practice => practice.id === state.currentTrekSteps[stepIndex].practice)?.pictogram,\n imgSrc:\n state.currentTrekSteps[stepIndex].attachments && state.currentTrekSteps[stepIndex].attachments.length > 0 && state.currentTrekSteps[stepIndex].attachments[0].thumbnail,\n index: stepIndex + 1,\n },\n });\n }\n\n this.removeSelectedCurrentStep();\n state.selectedStepId = id;\n\n this.selectedCurrentStepLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div class=\"step-marker-container\"><div class=\"step-number\">${geoJsonPoint.properties.index}</div></div>`,\n className: 'selected-step-marker',\n iconSize: 64,\n iconAnchor: [36, 36],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.stepPopupIsOpen) {\n state.selectedTrekId = null;\n this.removeSelectedCurrentStep();\n }\n });\n layer.on('popupopen', () => {\n this.stepPopupIsOpen = Boolean(state.selectedStepId);\n });\n layer.on('popupclose', () => {\n if (state.selectedStepId) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentStep() {\n state.selectedStepId = null;\n this.selectedCurrentStepLayer && this.map.removeLayer(this.selectedCurrentStepLayer);\n this.selectedCurrentStepLayer = null;\n }\n\n handleLayersControlEvent() {\n const userLayersState: HTMLInputElement[] = (this.layersControl as any)._layerControlInputs;\n userLayersState.forEach((userLayerState: any) => {\n if ((this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId).overlay) {\n userLayerState.onchange = event => {\n this.userLayersState[userLayerState.layerId] = (event.target as any).checked;\n };\n }\n });\n }\n\n removeTrek() {\n if (this.layersControl) {\n if (!(this.layersControl as any)._layers.some(layer => !layer.overlay)) {\n this.map.removeControl(this.layersControl);\n this.layersControl = null;\n } else {\n (this.layersControl as any)._layers\n .filter(layer => layer.overlay)\n .forEach(layer => {\n this.layersControl.removeLayer(layer.layer);\n });\n }\n }\n\n if (this.elevationControl) {\n (this.elevationControl as any).clear();\n this.map.removeControl(this.elevationControl);\n this.elevationControl = null;\n }\n\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n\n if (this.currentParkingLayer) {\n this.map.removeLayer(this.currentParkingLayer);\n this.currentParkingLayer = null;\n }\n\n if (this.currentSensitiveAreasLayer) {\n this.map.removeLayer(this.currentSensitiveAreasLayer);\n this.currentSensitiveAreasLayer = null;\n }\n\n if (this.currentPoisLayer) {\n this.map.removeLayer(this.currentPoisLayer);\n this.currentPoisLayer = null;\n }\n\n if (this.currentInformationDesksLayer) {\n this.map.removeLayer(this.currentInformationDesksLayer);\n this.currentInformationDesksLayer = null;\n }\n\n if (this.currentReferencePointsLayer) {\n this.map.removeLayer(this.currentReferencePointsLayer);\n this.currentReferencePointsLayer = null;\n }\n\n if (this.currentStepsLayer) {\n this.map.removeLayer(this.currentStepsLayer);\n this.currentStepsLayer = null;\n }\n\n if (this.currentToutisticContentsLayer) {\n this.map.removeLayer(this.currentToutisticContentsLayer);\n this.currentToutisticContentsLayer = null;\n }\n if (this.currentToutisticEventsLayer) {\n this.map.removeLayer(this.currentToutisticEventsLayer);\n this.currentToutisticEventsLayer = null;\n }\n }\n\n disconnectedCallback() {\n if (this.resetStoreOnDisconnected) {\n reset();\n }\n }\n\n showTrekLine(id) {\n getTrekGeometry(id).then(response => {\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: response.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: this.colorTrekLine,\n }),\n interactive: false,\n }).addTo(this.map);\n });\n }\n\n hideTrekLine() {\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n }\n\n addTouristicContent() {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContent) {\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicContent.geometry.coordinates },\n properties: {\n id: state.currentTouristicContent.id,\n name: state.currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === state.currentTouristicContent.category).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticContentLayer) {\n this.currentToutisticContentLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"touristic-content-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"touristic-content-marker-container\"></div>`,\n className: 'touristic-content-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticContentLayer);\n }\n\n this.map.setView([state.currentTouristicContent.geometry.coordinates[1], state.currentTouristicContent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicContent() {\n if (this.currentToutisticContentLayer) {\n this.map.removeLayer(this.currentToutisticContentLayer);\n this.currentToutisticContentLayer = null;\n }\n }\n\n addTouristicContents() {\n state.touristicContentsWithinBounds = state.touristicContents;\n const touristicContentsCurrentCoordinates = [];\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicContents) {\n if (touristicContentsCurrentCoordinates.length > 0 && !state.currentMapBounds) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n for (const currentTouristicContent of state.currentTouristicContents) {\n touristicContentsCurrentCoordinates.push(currentTouristicContent.geometry.coordinates);\n\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicContent.geometry.coordinates },\n properties: {\n id: currentTouristicContent.id,\n name: currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === currentTouristicContent.category).pictogram,\n },\n });\n }\n }\n\n if (!this.toutisticContentsLayer) {\n if (touristicContentsCurrentCoordinates.length > 0 && !state.currentMapBounds) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n this.toutisticContentsLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"touristic-content-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"touristic-content-marker-container\"></div>`,\n className: 'touristic-content-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentCoordinatesPopup = L.DomUtil.create('div');\n touristicContentCoordinatesPopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicCotentImg = L.DomUtil.create('img');\n touristicCotentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentCoordinatesPopup.appendChild(touristicCotentImg);\n }\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n touristicContentName.className = 'touristic-content-name';\n touristicContentCoordinatesPopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentCoordinatesPopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicContent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicContentsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div>' + cluster.getChildCount() + '</div>',\n className: 'touristic-content-marker-cluster-group-icon',\n iconSize: 48,\n iconAnchor: [24, 24],\n } as any);\n },\n });\n\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n this.map.addLayer(this.touristicContentsMarkerClusterGroup);\n } else {\n if (touristicContentsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.toutisticContentsLayer.clearLayers();\n this.toutisticContentsLayer.addData(touristicContentsFeatureCollection);\n this.touristicContentsMarkerClusterGroup.clearLayers();\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n }\n\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n\n removeTouristicContents() {\n if (this.toutisticContentsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicContentsMarkerClusterGroup);\n this.toutisticContentsLayer = null;\n this.touristicContentsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n }\n\n addTouristicEvent() {\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvent) {\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicEvent.geometry.coordinates },\n properties: {\n id: state.currentTouristicEvent.id,\n name: state.currentTouristicEvent.name,\n type: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === state.currentTouristicEvent.type).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticEventLayer) {\n this.currentToutisticEventLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type\n ? `<div class=\"touristic-event-marker-container\"><img src=${geoJsonPoint.properties.type} /></div>`\n : `<div class=\"touristic-event-marker-container\"></div>`,\n className: 'touristic-event-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticEventLayer);\n }\n\n this.map.setView([state.currentTouristicEvent.geometry.coordinates[1], state.currentTouristicEvent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicEvent() {\n if (this.currentToutisticEventLayer) {\n this.map.removeLayer(this.currentToutisticEventLayer);\n this.currentToutisticEventLayer = null;\n }\n }\n\n addSelectedTouristicContent(id, customCoordinates?) {\n const touristicContentFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicContents) {\n const touristicContent = state.touristicContents.find(touristicContent => touristicContent.id === id);\n touristicContentFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicContent.geometry.coordinates },\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category: state.touristicContentCategories.find(practice => practice.id === touristicContent.category)?.pictogram,\n imgSrc: touristicContent.attachments && touristicContent.attachments.length > 0 && touristicContent.attachments[0].thumbnail,\n },\n });\n }\n\n this.removeSelectedTouristicContent();\n state.selectedTouristicContentId = id;\n\n this.selectedTouristicContentLayer = L.geoJSON(touristicContentFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: geoJsonPoint.properties.category\n ? `<div class=\"touristic-content-marker-container\"><img src=${geoJsonPoint.properties.category} /></div>`\n : `<div class=\"touristic-content-trek-marker-container\"></div>`,\n className: 'selected-touristic-content-marker',\n iconSize: 64,\n iconAnchor: [36, 36],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentDeparturePopup = L.DomUtil.create('div');\n touristicContentDeparturePopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentDeparturePopup.appendChild(touristicContentImg);\n }\n\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n touristicContentName.className = 'touristic-content-name';\n touristicContentDeparturePopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentDeparturePopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicContentPopupIsOpen) {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicContentPopupIsOpen = Boolean(state.selectedTouristicContentId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicContentId) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicContent() {\n state.selectedTouristicContentId = null;\n this.selectedTouristicContentLayer && this.map.removeLayer(this.selectedTouristicContentLayer);\n this.selectedTouristicContentLayer = null;\n }\n\n render() {\n const layersImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/layers.svg`);\n const contractImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/contract.svg`);\n return (\n <Host\n style={{\n '--color-primary-app': this.colorPrimaryApp,\n '--color-on-surface': this.colorOnSurface,\n '--color-primary-container': this.colorPrimaryContainer,\n '--color-on-primary-container': this.colorOnPrimaryContainer,\n '--color-background': this.colorBackground,\n '--color-poi-icon': this.colorPoiIcon,\n '--color-trek-line': this.colorTrekLine,\n '--layers-image-src': `url(${layersImageSrc})`,\n '--contract-image-src': `url(${contractImageSrc})`,\n '--map-bottom-space-height': this.isLargeView ? '0px' : '70px',\n }}\n >\n <div id=\"map\" style={{}} class={state.currentTrek ? 'trek-map' : 'treks-map'} ref={el => (this.mapRef = el)}></div>\n {state.currentTrek && (\n <div>\n <div id=\"elevation\" ref={el => (this.elevationRef = el)}></div>\n <div class=\"map-bottom-space\"></div>\n </div>\n )}\n\n {!this.mapIsReady && (\n <div class=\"map-loader-container\">\n <span class=\"loader\"></span>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"grw-map.js","sourceRoot":"","sources":["../../../src/components/grw-map/grw-map.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Prop, State, Event, EventEmitter, getAssetPath, Build, Listen } from '@stencil/core';\nimport { Feature, FeatureCollection } from 'geojson';\nimport L, { MarkerClusterGroup, TileLayer } from 'leaflet';\nimport 'leaflet-rotate';\nimport 'leaflet.locatecontrol';\nimport '@raruto/leaflet-elevation/dist/leaflet-elevation.min.js';\nimport 'leaflet.markercluster/dist/leaflet.markercluster.js';\nimport state, { onChange, reset } from 'store/store';\nimport { translate } from 'i18n/i18n';\nimport { getTrekGeometry } from 'services/treks.service';\n\n@Component({\n tag: 'grw-map',\n styleUrl: 'grw-map.scss',\n shadow: true,\n})\nexport class GrwMap {\n mapRef: HTMLElement;\n elevationRef: HTMLElement;\n maxZoom = 19;\n\n @Event() trekCardPress: EventEmitter<number>;\n @Event() touristicContentCardPress: EventEmitter<number>;\n\n @State() mapIsReady = false;\n @Prop() nameLayer: string;\n @Prop() urlLayer: string;\n @Prop() attributionLayer: string;\n @Prop() center = '1, 1';\n @Prop() zoom = 10;\n\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorBackground = '#fef7ff';\n\n @Prop() colorTrekLine = '#6b0030';\n @Prop() colorSensitiveArea = '\t#4974a5';\n @Prop() colorPoiIcon = '#974c6e';\n @Prop() useGradient = false;\n\n @Prop() resetStoreOnDisconnected = true;\n @Prop() isLargeView = false;\n map: L.Map;\n resizeObserver: ResizeObserver;\n bounds;\n treksLayer: L.GeoJSON<any>;\n toutisticContentsLayer: L.GeoJSON<any>;\n\n treksMarkerClusterGroup: MarkerClusterGroup;\n touristicContentsMarkerClusterGroup: MarkerClusterGroup;\n currentTrekLayer: L.GeoJSON<any>;\n currentStepsLayer: L.GeoJSON<any>;\n selectedCurrentTrekLayer: L.GeoJSON<any>;\n selectedCurrentStepLayer: L.GeoJSON<any>;\n selectedTouristicContentLayer: L.GeoJSON<any>;\n currentReferencePointsLayer: L.GeoJSON<any>;\n currentParkingLayer: L.GeoJSON<any>;\n currentSensitiveAreasLayer: L.GeoJSON<any>;\n currentPoisLayer: L.GeoJSON<any>;\n currentInformationDesksLayer: L.GeoJSON<any>;\n currentToutisticContentsLayer: L.GeoJSON<any>;\n currentToutisticEventsLayer: L.GeoJSON<any>;\n currentToutisticContentLayer: L.GeoJSON<any>;\n currentToutisticEventLayer: L.GeoJSON<any>;\n elevationControl: L.Control.Layers;\n layersControl: L.Control.Layers;\n userLayersState: {\n [key: number]: boolean;\n } = {};\n tileLayer: { key: string; value: TileLayer }[] = [];\n trekPopupIsOpen: boolean;\n stepPopupIsOpen: boolean;\n touristicContentPopupIsOpen: boolean;\n\n handleTreksWithinBoundsBind: (event: any) => void = this.handleTreksWithinBounds.bind(this);\n handleTouristicContentsWithinBoundsBind: (event: any) => void = this.handleTouristicContentsWithinBounds.bind(this);\n\n @Listen('centerOnMap', { target: 'window' })\n onCenterOnMap(event: CustomEvent<{ latitude: number; longitude: number }>) {\n this.map.setView(new L.LatLng(event.detail.latitude, event.detail.longitude), 17, { animate: false });\n }\n\n @Listen('stepsIsInViewport', { target: 'window' })\n stepsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentStepsLayer) {\n this.handleLayerVisibility(event.detail, this.currentStepsLayer);\n }\n }\n\n @Listen('descriptionIsInViewport', { target: 'window' })\n descriptionIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentReferencePointsLayer) {\n this.handleLayerVisibility(event.detail, this.currentReferencePointsLayer);\n }\n }\n\n @Listen('parkingIsInViewport', { target: 'window' })\n parkingIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentParkingLayer) {\n this.handleLayerVisibility(event.detail, this.currentParkingLayer);\n }\n }\n\n @Listen('informationDeskIsInViewport', { target: 'window' })\n onInformationDesksIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentInformationDesksLayer) {\n this.handleLayerVisibility(event.detail, this.currentInformationDesksLayer);\n }\n }\n\n @Listen('sensitiveAreaIsInViewport', { target: 'window' })\n sensitiveAreaIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentSensitiveAreasLayer) {\n this.handleLayerVisibility(event.detail, this.currentSensitiveAreasLayer);\n }\n }\n\n @Listen('poiIsInViewport', { target: 'window' })\n poiIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentPoisLayer) {\n this.handleLayerVisibility(event.detail, this.currentPoisLayer);\n }\n }\n\n @Listen('touristicContentsIsInViewport', { target: 'window' })\n touristicContentsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentToutisticContentsLayer) {\n this.handleLayerVisibility(event.detail, this.currentToutisticContentsLayer);\n }\n }\n\n @Listen('touristicEventsIsInViewport', { target: 'window' })\n touristicEventsIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentToutisticEventsLayer) {\n this.handleLayerVisibility(event.detail, this.currentToutisticEventsLayer);\n }\n }\n\n @Listen('cardTrekMouseOver', { target: 'window' })\n onCardTrekMouseOver(event: CustomEvent<number>) {\n if (!state.parentTrek && (!state.selectedTrekId || state.selectedTrekId !== event.detail)) {\n state.selectedTrekId = event.detail;\n this.hideTrekLine();\n this.showTrekLine(event.detail);\n this.addSelectedCurrentTrek(event.detail);\n } else if (state.parentTrek) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.addSelectedCurrentStep(event.detail);\n }\n }\n\n @Listen('cardTrekMouseLeave', { target: 'window' })\n onCardTrekMouseLeave() {\n if (!this.trekPopupIsOpen && state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n } else if (this.currentStepsLayer) {\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n }\n\n @Listen('cardTouristicContentMouseOver', { target: 'window' })\n onTouristicContentMouseOver(event: CustomEvent<number>) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.addSelectedTouristicContent(event.detail);\n }\n\n @Listen('cardTouristicContentMouseLeave', { target: 'window' })\n onTouristicContentMouseLeave() {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n\n componentDidLoad() {\n this.map = L.map(this.mapRef, {\n center: this.center.split(',').map(Number) as L.LatLngExpression,\n zoom: this.zoom,\n });\n\n L.control.scale({ metric: true, imperial: false }).addTo(this.map);\n (L.control as any).locate({ showPopup: false }).addTo(this.map);\n\n const nameLayers = this.nameLayer ? this.nameLayer.split(',') : [];\n\n const urlLayers = this.urlLayer.split(',http').map((url, index) => (index === 0 ? url : 'http' + url));\n\n const attributionLayers = this.attributionLayer ? this.attributionLayer.split(',') : [];\n urlLayers.forEach((urlLayer, index) => {\n this.tileLayer.push({\n key: `${nameLayers[index]}`,\n value: L.tileLayer(urlLayer, {\n maxZoom: this.maxZoom,\n attribution: `${\n attributionLayers[index] && attributionLayers[index] !== '' ? attributionLayers[index].concat(' | ') : ''\n }Powered by <a target=\"_blank\" href=\"https://geotrek.fr/\">Geotrek</a>`,\n }),\n });\n });\n this.tileLayer[0].value.addTo(this.map);\n\n if (urlLayers.length > 1) {\n this.layersControl = L.control\n .layers(\n this.tileLayer.reduce((tileLayers, tileLayer) => Object.assign(tileLayers, { [tileLayer.key]: tileLayer.value }), {}),\n {},\n { collapsed: true },\n )\n .addTo(this.map);\n\n (L.Control as any).Contract = L.Control.extend({\n onAdd: () => {\n const contractContainer = L.DomUtil.create('div');\n contractContainer.className = 'leaflet-bar leaflet-control';\n const contract = contractContainer.appendChild(L.DomUtil.create('a'));\n contract.href = '#';\n contract.style.backgroundImage = `var(--contract-image-src)`;\n contractContainer.onclick = e => {\n this.bounds && this.map.fitBounds(this.bounds);\n e.preventDefault();\n };\n return contractContainer;\n },\n });\n\n (L.control as any).contract = opts => {\n return new (L.Control as any).Contract(opts);\n };\n\n (L.control as any).contract({ position: 'topleft' }).addTo(this.map);\n }\n\n if (state.currentTrek) {\n this.addTrek();\n } else if (state.currentTreks) {\n this.addTreks();\n } else if (state.currentTouristicContent) {\n this.addTouristicContent();\n } else if (state.currentTouristicEvent) {\n this.addTouristicEvent();\n } else if (state.touristicContents) {\n this.addTouristicContents();\n }\n\n onChange('currentTreks', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks(true);\n }\n });\n\n onChange('currentTrek', () => {\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks();\n }\n });\n\n onChange('currentTouristicContent', () => {\n if (state.currentTouristicContent) {\n this.removeTrek();\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.touristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents();\n } else if (state.currentTrek) {\n this.removeTouristicContent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicContent();\n this.addTreks();\n }\n });\n\n onChange('currentTouristicEvent', () => {\n if (state.currentTouristicEvent) {\n this.removeTrek();\n this.addTouristicEvent();\n } else if (state.currentTrek) {\n this.removeTouristicEvent();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTouristicEvent();\n this.addTreks();\n }\n });\n\n onChange('currentTouristicContents', () => {\n if (state.currentTouristicContent) {\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.currentTouristicContents) {\n this.removeTouristicContent();\n this.addTouristicContents(true);\n }\n });\n\n onChange('mode', () => {\n if (state.mode === 'treks') {\n if (state.treks) {\n this.removeTouristicContents();\n this.addTreks(true);\n }\n } else if (state.mode === 'touristicContents') {\n if (state.touristicContents) {\n this.removeTreks();\n this.addTouristicContents(true);\n }\n }\n });\n }\n\n handleLayerVisibility(visible: boolean, layer: L.GeoJSON) {\n if (visible && !this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n } else if (this.map.hasLayer(layer) && !this.userLayersState[(layer as any)._leaflet_id]) {\n this.map.removeLayer(layer);\n }\n this.handleLayersControlEvent();\n }\n\n addTreks(resetBounds = false) {\n state.treksWithinBounds = state.currentTreks;\n\n const treksCurrentDepartureCoordinates = [];\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n for (const trek of state.currentTreks) {\n treksCurrentDepartureCoordinates.push(trek.departure_geom);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc: trek.attachments && trek.attachments.length > 0 && trek.attachments[0].thumbnail,\n },\n });\n }\n }\n\n if (!this.treksLayer) {\n if ((treksCurrentDepartureCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n this.treksLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"trek-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"trek-marker-container\"></div>`,\n className: 'trek-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.hideTrekLine();\n this.showTrekLine(geoJsonPoint.properties.id);\n this.addSelectedCurrentTrek(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.treksMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({ html: '<div>' + cluster.getChildCount() + '</div>', className: 'treks-marker-cluster-group-icon', iconSize: 48, iconAnchor: [24, 24] } as any);\n },\n });\n\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n this.map.addLayer(this.treksMarkerClusterGroup);\n } else {\n if (treksCurrentDepartureCoordinates.length > 0) {\n this.bounds = L.latLngBounds(treksCurrentDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.treksLayer.clearLayers();\n this.treksLayer.addData(treksFeatureCollection);\n this.treksMarkerClusterGroup.clearLayers();\n this.treksMarkerClusterGroup.addLayer(this.treksLayer);\n }\n\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n this.map.on('moveend', this.handleTreksWithinBoundsBind);\n }\n\n removeTreks() {\n if (this.treksLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.treksMarkerClusterGroup);\n this.treksLayer = null;\n this.treksMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTreksWithinBoundsBind);\n }\n }\n\n handleTreksWithinBounds() {\n if (\n (state.currentTreks && !state.currentMapBounds) ||\n (state.currentTreks && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.treksWithinBounds = state.currentTreks.filter(trek => this.map.getBounds().contains(L.latLng(trek.departure_geom[1], trek.departure_geom[0])));\n }\n }\n\n handleTouristicContentsWithinBounds() {\n if (\n (state.currentTouristicContents && !state.currentMapBounds) ||\n (state.currentTouristicContents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicContentsWithinBounds = state.currentTouristicContents.filter(touristicContent =>\n this.map.getBounds().contains(L.latLng(touristicContent.geometry.coordinates[1], touristicContent.geometry.coordinates[0])),\n );\n }\n }\n\n addTrek() {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: state.currentTrek.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: 'transparent',\n }),\n interactive: false,\n }).addTo(this.map);\n\n if (state.currentTrek.parking_location) {\n const currentParking: Feature = {\n type: 'Feature',\n properties: {},\n geometry: { type: 'Point', coordinates: state.currentTrek.parking_location },\n };\n this.currentParkingLayer = L.geoJSON(currentParking, {\n pointToLayer: (_geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: '<div>P</div>',\n className: 'parking-icon',\n iconSize: 48,\n iconAnchor: [0, 48],\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any),\n });\n }\n\n if (state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0) {\n const currentSensitiveAreasFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const sensitiveArea of state.currentSensitiveAreas) {\n currentSensitiveAreasFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: sensitiveArea.name },\n geometry: sensitiveArea.geometry,\n });\n }\n\n this.currentSensitiveAreasLayer = L.geoJSON(currentSensitiveAreasFeatureCollection, {\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const sensitiveAreaTooltip = L.DomUtil.create('div');\n sensitiveAreaTooltip.className = 'sensitive-area-tooltip';\n const sensitiveAreaName = L.DomUtil.create('div');\n sensitiveAreaName.innerHTML = geoJsonPoint.properties.name;\n sensitiveAreaName.className = 'sensitive-area-name';\n sensitiveAreaTooltip.appendChild(sensitiveAreaName);\n layer.bindTooltip(sensitiveAreaTooltip).openTooltip();\n });\n },\n style: () => ({ color: this.colorSensitiveArea }),\n });\n }\n\n if (state.currentPois && state.currentPois.length > 0) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentPoi of state.currentPois) {\n currentPoisFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentPoi.name, type_pictogram: state.poiTypes.find(poiType => poiType.id === currentPoi.type)?.pictogram },\n geometry: currentPoi.geometry,\n });\n }\n\n this.currentPoisLayer = L.geoJSON(currentPoisFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram ? `<img src=${geoJsonPoint.properties.type_pictogram} />` : `<img />`,\n className: 'poi-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const poiTooltip = L.DomUtil.create('div');\n poiTooltip.className = 'poi-tooltip';\n const poiName = L.DomUtil.create('div');\n poiName.innerHTML = geoJsonPoint.properties.name;\n poiName.className = 'poi-name';\n poiTooltip.appendChild(poiName);\n layer.bindTooltip(poiTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.trekTouristicContents && state.trekTouristicContents.length > 0) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicContent of state.trekTouristicContents) {\n currentTouristicContentsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n name: touristicContent.name,\n category_pictogram: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === touristicContent.category)?.pictogram,\n },\n geometry: touristicContent.geometry,\n });\n }\n\n this.currentToutisticContentsLayer = L.geoJSON(currentTouristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.category_pictogram ? `<img src=${geoJsonPoint.properties.category_pictogram} />` : `<img />`,\n className: 'touristic-content-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const touristicContentTooltip = L.DomUtil.create('div');\n touristicContentTooltip.className = 'touristic-content-tooltip';\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n touristicContentName.className = 'touristic-content-name';\n touristicContentTooltip.appendChild(touristicContentName);\n layer.bindTooltip(touristicContentTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.touristicEvents && state.touristicEvents.length > 0) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicEvent of state.touristicEvents) {\n currentTouristicEventsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n name: touristicEvent.name,\n type_pictogram: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === touristicEvent.type)?.pictogram,\n },\n geometry: touristicEvent.geometry,\n });\n }\n\n this.currentToutisticEventsLayer = L.geoJSON(currentTouristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram ? `<img src=${geoJsonPoint.properties.type_pictogram} />` : `<img />`,\n className: 'touristic-event-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const touristicEventTooltip = L.DomUtil.create('div');\n touristicEventTooltip.className = 'touristic-event-tooltip';\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n touristicEventName.className = 'touristic-event-name';\n touristicEventTooltip.appendChild(touristicEventName);\n layer.bindTooltip(touristicEventTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentInformationDesks && state.currentInformationDesks.length > 0) {\n const currentInformationDesksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentInformationDesk of state.currentInformationDesks.filter(currentInformationDesks =>\n state.currentTrek.information_desks.includes(currentInformationDesks.id),\n )) {\n if (currentInformationDesk.latitude && currentInformationDesk.longitude) {\n currentInformationDesksFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentInformationDesk.name, type_pictogram: currentInformationDesk.type.pictogram },\n geometry: { type: 'Point', coordinates: [Number(currentInformationDesk.longitude), Number(currentInformationDesk.latitude)] },\n });\n }\n }\n\n this.currentInformationDesksLayer = L.geoJSON(currentInformationDesksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram ? `<img src=${geoJsonPoint.properties.type_pictogram} />` : `<img />`,\n className: 'information-desks-icon',\n iconSize: 48,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const informationDesksTooltip = L.DomUtil.create('div');\n informationDesksTooltip.className = 'information-desks-tooltip';\n const informationDesksName = L.DomUtil.create('div');\n informationDesksName.innerHTML = geoJsonPoint.properties.name;\n informationDesksName.className = 'information-desks-name';\n informationDesksTooltip.appendChild(informationDesksName);\n layer.bindTooltip(informationDesksTooltip).openTooltip();\n });\n },\n });\n }\n\n if (state.currentTrek.points_reference) {\n const currentReferencePointsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n currentReferencePointsFeatureCollection.features.push({\n type: 'Feature',\n properties: {},\n geometry: state.currentTrek.points_reference,\n });\n\n let index = 0;\n this.currentReferencePointsLayer = L.geoJSON(currentReferencePointsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: index,\n className: 'point-reference-icon',\n iconSize: 24,\n } as any),\n autoPanOnFocus: false,\n interactive: false,\n } as any);\n },\n });\n }\n\n if (!this.currentStepsLayer && state.parentTrekId && state.parentTrek && state.currentTrek.id === state.parentTrekId) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n for (const trek of state.currentTrekSteps) {\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc: trek.attachments && trek.attachments.length > 0 && trek.attachments[0].thumbnail,\n },\n });\n }\n }\n\n let stepIndex = 0;\n this.currentStepsLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n stepIndex += 1;\n return L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div class=\"step-marker-container\"><div class=\"step-number\">${stepIndex}</div></div>`,\n className: 'step-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedCurrentStep(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n }\n\n const elevationOptions = {\n srcFolder: 'https://unpkg.com/@raruto/leaflet-elevation/src/',\n elevationDiv: `#elevation`,\n theme: `custom-theme${!this.useGradient ? ' use-theme-color' : ''}`,\n detached: true,\n height: 250,\n wptIcons: true,\n wptLabels: true,\n collapsed: false,\n autohide: false,\n distanceMarkers: { distance: false, direction: true },\n hotline: this.useGradient,\n closeBtn: false,\n summary: false,\n time: false,\n timestamps: false,\n legend: false,\n downloadLink: false,\n autofitBounds: false,\n ruler: false,\n edgeScale: false,\n waypoints: false,\n almostOver: false,\n speed: false,\n slope: false,\n acceleration: false,\n reverseCoords: false,\n imperial: false,\n dragging: false,\n zooming: false,\n handlers: ['Altitude', 'Distance', 'Slope', 'LinearGradient'],\n linearGradient: {\n attr: 'z',\n path: 'altitude',\n range: { 0.0: '#008800', 0.5: '#ffff00', 1.0: '#ff0000' },\n min: 'elevation_min',\n max: 'elevation_max',\n },\n };\n this.elevationControl = (L.control as any).elevation({ ...elevationOptions }).addTo(this.map);\n const elevation = JSON.stringify({\n name: `${state.currentTrek.name}`,\n type: 'FeatureCollection',\n features: [{ type: 'Feature', geometry: { type: 'LineString', coordinates: state.currentTrek.geometry.coordinates }, properties: null }],\n });\n (this.elevationControl as any).load(elevation);\n\n const overlays = {};\n if (this.currentStepsLayer) {\n overlays[translate[state.language].layers.steps] = this.currentStepsLayer;\n }\n if (this.currentReferencePointsLayer) {\n overlays[translate[state.language].layers.referencePoints] = this.currentReferencePointsLayer;\n }\n if (this.currentParkingLayer) {\n overlays[translate[state.language].layers.parking] = this.currentParkingLayer;\n }\n if (this.currentSensitiveAreasLayer) {\n overlays[translate[state.language].layers.sensitiveArea] = this.currentSensitiveAreasLayer;\n }\n if (this.currentInformationDesksLayer) {\n overlays[translate[state.language].layers.informationPlaces] = this.currentInformationDesksLayer;\n }\n if (this.currentPoisLayer) {\n overlays[translate[state.language].layers.pois] = this.currentPoisLayer;\n }\n if (this.currentToutisticContentsLayer) {\n overlays[translate[state.language].layers.touristicContents] = this.currentToutisticContentsLayer;\n }\n\n if (this.currentToutisticEventsLayer) {\n overlays[translate[state.language].layers.touristicEvents] = this.currentToutisticEventsLayer;\n }\n\n if (this.layersControl) {\n Object.keys(overlays).forEach(key => {\n this.layersControl.addOverlay(overlays[key], key);\n });\n } else {\n this.layersControl = L.control.layers({}, overlays, { collapsed: true }).addTo(this.map);\n }\n\n this.handleLayersControlEvent();\n\n this.bounds = L.latLngBounds(state.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n addSelectedCurrentTrek(id, customCoordinates?) {\n const treksFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTreks) {\n const trek = state.currentTreks.find(trek => trek.id === id);\n treksFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : trek.departure_geom },\n properties: {\n id: trek.id,\n name: trek.name,\n practice: state.practices.find(practice => practice.id === trek.practice)?.pictogram,\n imgSrc: trek.attachments && trek.attachments.length > 0 && trek.attachments[0].thumbnail,\n },\n });\n }\n\n this.removeSelectedCurrentTrek();\n state.selectedTrekId = id;\n\n this.selectedCurrentTrekLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"trek-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"trek-marker-container\"></div>`,\n className: 'selected-trek-marker',\n iconSize: 64,\n iconAnchor: [36, 36],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.trekPopupIsOpen) {\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n layer.on('popupopen', () => {\n this.trekPopupIsOpen = Boolean(state.selectedTrekId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTrekId) {\n this.trekPopupIsOpen = false;\n state.selectedTrekId = null;\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentTrek() {\n state.selectedTrekId = null;\n this.selectedCurrentTrekLayer && this.map.removeLayer(this.selectedCurrentTrekLayer);\n this.selectedCurrentTrekLayer = null;\n }\n\n addSelectedCurrentStep(id, customCoordinates?) {\n const stepsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTrekSteps) {\n const stepIndex = state.currentTrekSteps.findIndex(trek => trek.id === id);\n stepsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : state.currentTrekSteps[stepIndex].departure_geom },\n properties: {\n id: state.currentTrekSteps[stepIndex].id,\n name: state.currentTrekSteps[stepIndex].name,\n practice: state.practices.find(practice => practice.id === state.currentTrekSteps[stepIndex].practice)?.pictogram,\n imgSrc:\n state.currentTrekSteps[stepIndex].attachments && state.currentTrekSteps[stepIndex].attachments.length > 0 && state.currentTrekSteps[stepIndex].attachments[0].thumbnail,\n index: stepIndex + 1,\n },\n });\n }\n\n this.removeSelectedCurrentStep();\n state.selectedStepId = id;\n\n this.selectedCurrentStepLayer = L.geoJSON(stepsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: `<div class=\"step-marker-container\"><div class=\"step-number\">${geoJsonPoint.properties.index}</div></div>`,\n className: 'selected-step-marker',\n iconSize: 64,\n iconAnchor: [36, 36],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const trekDeparturePopup = L.DomUtil.create('div');\n trekDeparturePopup.className = 'trek-departure-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = geoJsonPoint.properties.imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n trekName.className = 'trek-name';\n trekDeparturePopup.appendChild(trekName);\n\n const trekButton = L.DomUtil.create('button');\n trekButton.innerHTML = 'Afficher le détail';\n trekButton.className = 'trek-button';\n trekButton.onclick = () => this.trekCardPress.emit(geoJsonPoint.properties.id);\n trekDeparturePopup.appendChild(trekButton);\n\n layer.bindPopup(trekDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.stepPopupIsOpen) {\n state.selectedTrekId = null;\n this.removeSelectedCurrentStep();\n }\n });\n layer.on('popupopen', () => {\n this.stepPopupIsOpen = Boolean(state.selectedStepId);\n });\n layer.on('popupclose', () => {\n if (state.selectedStepId) {\n this.stepPopupIsOpen = false;\n state.selectedStepId = null;\n this.removeSelectedCurrentStep();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedCurrentStep() {\n state.selectedStepId = null;\n this.selectedCurrentStepLayer && this.map.removeLayer(this.selectedCurrentStepLayer);\n this.selectedCurrentStepLayer = null;\n }\n\n handleLayersControlEvent() {\n const userLayersState: HTMLInputElement[] = (this.layersControl as any)._layerControlInputs;\n userLayersState.forEach((userLayerState: any) => {\n if ((this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId).overlay) {\n userLayerState.onchange = event => {\n this.userLayersState[userLayerState.layerId] = (event.target as any).checked;\n };\n }\n });\n }\n\n removeTrek() {\n if (this.layersControl) {\n if (!(this.layersControl as any)._layers.some(layer => !layer.overlay)) {\n this.map.removeControl(this.layersControl);\n this.layersControl = null;\n } else {\n (this.layersControl as any)._layers\n .filter(layer => layer.overlay)\n .forEach(layer => {\n this.layersControl.removeLayer(layer.layer);\n });\n }\n }\n\n if (this.elevationControl) {\n (this.elevationControl as any).clear();\n this.map.removeControl(this.elevationControl);\n this.elevationControl = null;\n }\n\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n\n if (this.currentParkingLayer) {\n this.map.removeLayer(this.currentParkingLayer);\n this.currentParkingLayer = null;\n }\n\n if (this.currentSensitiveAreasLayer) {\n this.map.removeLayer(this.currentSensitiveAreasLayer);\n this.currentSensitiveAreasLayer = null;\n }\n\n if (this.currentPoisLayer) {\n this.map.removeLayer(this.currentPoisLayer);\n this.currentPoisLayer = null;\n }\n\n if (this.currentInformationDesksLayer) {\n this.map.removeLayer(this.currentInformationDesksLayer);\n this.currentInformationDesksLayer = null;\n }\n\n if (this.currentReferencePointsLayer) {\n this.map.removeLayer(this.currentReferencePointsLayer);\n this.currentReferencePointsLayer = null;\n }\n\n if (this.currentStepsLayer) {\n this.map.removeLayer(this.currentStepsLayer);\n this.currentStepsLayer = null;\n }\n\n if (this.currentToutisticContentsLayer) {\n this.map.removeLayer(this.currentToutisticContentsLayer);\n this.currentToutisticContentsLayer = null;\n }\n if (this.currentToutisticEventsLayer) {\n this.map.removeLayer(this.currentToutisticEventsLayer);\n this.currentToutisticEventsLayer = null;\n }\n }\n\n disconnectedCallback() {\n if (this.resetStoreOnDisconnected) {\n reset();\n }\n }\n\n showTrekLine(id) {\n getTrekGeometry(id).then(response => {\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: response.geometry,\n properties: {},\n };\n\n this.currentTrekLayer = L.geoJSON(currentTrekFeature, {\n style: () => ({\n color: this.colorTrekLine,\n }),\n interactive: false,\n }).addTo(this.map);\n });\n }\n\n hideTrekLine() {\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n }\n\n addTouristicContent() {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContent) {\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicContent.geometry.coordinates },\n properties: {\n id: state.currentTouristicContent.id,\n name: state.currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === state.currentTouristicContent.category).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticContentLayer) {\n this.currentToutisticContentLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"touristic-content-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"touristic-content-marker-container\"></div>`,\n className: 'touristic-content-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticContentLayer);\n }\n\n this.map.setView([state.currentTouristicContent.geometry.coordinates[1], state.currentTouristicContent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicContent() {\n if (this.currentToutisticContentLayer) {\n this.map.removeLayer(this.currentToutisticContentLayer);\n this.currentToutisticContentLayer = null;\n }\n }\n\n addTouristicContents(resetBounds = false) {\n state.touristicContentsWithinBounds = state.currentTouristicContents;\n\n const touristicContentsCurrentCoordinates = [];\n\n const touristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicContents) {\n for (const currentTouristicContent of state.currentTouristicContents) {\n touristicContentsCurrentCoordinates.push(currentTouristicContent.geometry.coordinates);\n\n touristicContentsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicContent.geometry.coordinates },\n properties: {\n id: currentTouristicContent.id,\n name: currentTouristicContent.name,\n practice: state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === currentTouristicContent.category).pictogram,\n },\n });\n }\n }\n\n if (!this.toutisticContentsLayer) {\n if ((touristicContentsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n this.toutisticContentsLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.practice\n ? `<div class=\"touristic-content-marker-container\"><img src=${geoJsonPoint.properties.practice} /></div>`\n : `<div class=\"touristic-content-marker-container\"></div>`,\n className: 'touristic-content-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentCoordinatesPopup = L.DomUtil.create('div');\n touristicContentCoordinatesPopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicCotentImg = L.DomUtil.create('img');\n touristicCotentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentCoordinatesPopup.appendChild(touristicCotentImg);\n }\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n touristicContentName.className = 'touristic-content-name';\n touristicContentCoordinatesPopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentCoordinatesPopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicContent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicContentsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div>' + cluster.getChildCount() + '</div>',\n className: 'touristic-content-marker-cluster-group-icon',\n iconSize: 48,\n iconAnchor: [24, 24],\n } as any);\n },\n });\n\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n this.map.addLayer(this.touristicContentsMarkerClusterGroup);\n } else {\n if (touristicContentsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicContentsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.toutisticContentsLayer.clearLayers();\n this.toutisticContentsLayer.addData(touristicContentsFeatureCollection);\n this.touristicContentsMarkerClusterGroup.clearLayers();\n this.touristicContentsMarkerClusterGroup.addLayer(this.toutisticContentsLayer);\n }\n\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n\n removeTouristicContents() {\n if (this.toutisticContentsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicContentsMarkerClusterGroup);\n this.toutisticContentsLayer = null;\n this.touristicContentsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicContentsWithinBoundsBind);\n }\n }\n\n addTouristicEvent() {\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvent) {\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTouristicEvent.geometry.coordinates },\n properties: {\n id: state.currentTouristicEvent.id,\n name: state.currentTouristicEvent.name,\n type: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === state.currentTouristicEvent.type).pictogram,\n },\n });\n }\n\n if (!this.currentToutisticEventLayer) {\n this.currentToutisticEventLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type\n ? `<div class=\"touristic-event-marker-container\"><img src=${geoJsonPoint.properties.type} /></div>`\n : `<div class=\"touristic-event-marker-container\"></div>`,\n className: 'touristic-event-marker',\n iconSize: 32,\n iconAnchor: [18, 0],\n } as any),\n autoPanOnFocus: false,\n } as any),\n });\n this.map.addLayer(this.currentToutisticEventLayer);\n }\n\n this.map.setView([state.currentTouristicEvent.geometry.coordinates[1], state.currentTouristicEvent.geometry.coordinates[0]], this.maxZoom);\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeTouristicEvent() {\n if (this.currentToutisticEventLayer) {\n this.map.removeLayer(this.currentToutisticEventLayer);\n this.currentToutisticEventLayer = null;\n }\n }\n\n addSelectedTouristicContent(id, customCoordinates?) {\n const touristicContentFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicContents) {\n const touristicContent = state.touristicContents.find(touristicContent => touristicContent.id === id);\n touristicContentFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicContent.geometry.coordinates },\n properties: {\n id: touristicContent.id,\n name: touristicContent.name,\n category: state.touristicContentCategories.find(practice => practice.id === touristicContent.category)?.pictogram,\n imgSrc: touristicContent.attachments && touristicContent.attachments.length > 0 && touristicContent.attachments[0].thumbnail,\n },\n });\n }\n\n this.removeSelectedTouristicContent();\n state.selectedTouristicContentId = id;\n\n this.selectedTouristicContentLayer = L.geoJSON(touristicContentFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: geoJsonPoint.properties.category\n ? `<div class=\"touristic-content-marker-container\"><img src=${geoJsonPoint.properties.category} /></div>`\n : `<div class=\"touristic-content-trek-marker-container\"></div>`,\n className: 'selected-touristic-content-marker',\n iconSize: 64,\n iconAnchor: [36, 36],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicContentDeparturePopup = L.DomUtil.create('div');\n touristicContentDeparturePopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentDeparturePopup.appendChild(touristicContentImg);\n }\n\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n touristicContentName.className = 'touristic-content-name';\n touristicContentDeparturePopup.appendChild(touristicContentName);\n\n const touristicContentButton = L.DomUtil.create('button');\n touristicContentButton.innerHTML = 'Afficher le détail';\n touristicContentButton.className = 'touristic-content-button';\n touristicContentButton.onclick = () => this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n touristicContentDeparturePopup.appendChild(touristicContentButton);\n\n layer.bindPopup(touristicContentDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicContentPopupIsOpen) {\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicContentPopupIsOpen = Boolean(state.selectedTouristicContentId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicContentId) {\n this.touristicContentPopupIsOpen = false;\n state.selectedTouristicContentId = null;\n this.removeSelectedTouristicContent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicContent() {\n state.selectedTouristicContentId = null;\n this.selectedTouristicContentLayer && this.map.removeLayer(this.selectedTouristicContentLayer);\n this.selectedTouristicContentLayer = null;\n }\n\n render() {\n const layersImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/layers.svg`);\n const contractImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/contract.svg`);\n return (\n <Host\n style={{\n '--color-primary-app': this.colorPrimaryApp,\n '--color-on-surface': this.colorOnSurface,\n '--color-primary-container': this.colorPrimaryContainer,\n '--color-on-primary-container': this.colorOnPrimaryContainer,\n '--color-background': this.colorBackground,\n '--color-poi-icon': this.colorPoiIcon,\n '--color-trek-line': this.colorTrekLine,\n '--layers-image-src': `url(${layersImageSrc})`,\n '--contract-image-src': `url(${contractImageSrc})`,\n '--map-bottom-space-height': this.isLargeView ? '0px' : '70px',\n }}\n >\n <div id=\"map\" style={{}} class={state.currentTrek ? 'trek-map' : 'treks-map'} ref={el => (this.mapRef = el)}></div>\n {state.currentTrek && (\n <div>\n <div id=\"elevation\" ref={el => (this.elevationRef = el)}></div>\n <div class=\"map-bottom-space\"></div>\n </div>\n )}\n\n {!this.mapIsReady && (\n <div class=\"map-loader-container\">\n <span class=\"loader\"></span>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
|
package/dist/collection/components/grw-touristic-content-detail/grw-touristic-content-detail.js
CHANGED
|
@@ -55,7 +55,7 @@ export class GrwTouristicContentDetail {
|
|
|
55
55
|
'--detail-bottom-space-height': this.isLargeView ? '8px' : '104px',
|
|
56
56
|
} }, state.currentTouristicContent && (h("div", { class: "touristic-content-detail-container", ref: el => (this.touristicContentDetailContainerRef = el) }, h("div", { class: "images-container", ref: el => (this.presentationRef = el) }, h("div", { class: "swiper swiper-images", ref: el => (this.swiperImagesRef = el) }, h("div", { class: "swiper-wrapper" }, state.currentTouristicContent.attachments.length > 0 ? (state.currentTouristicContent.attachments
|
|
57
57
|
.filter(attachment => attachment.type === 'image')
|
|
58
|
-
.map(attachment => (h("div", { class: "swiper-slide" }, h("img", { class: "image", src: attachment.url, loading: "lazy", onClick: () => this.handleFullscreen() }))))) : (h("div", { class: "swiper-slide" }, h("img", { class: "default-poi-img", src: defaultImageSrc, loading: "lazy" })))), h("div", { class: "swiper-pagination", ref: el => (this.paginationElImagesRef = el) }), h("div", { class: "swiper-button-prev", ref: el => (this.prevElImagesRef = el) }), h("div", { class: "swiper-button-next", ref: el => (this.nextElImagesRef = el) }))), h("div", { class: "touristic-content-category-container" }, h("img", { src: touristicContentCategory.pictogram }), h("div", { class: "touristic-content-category-name" }, touristicContentCategory.label)), h("div", { class: "name" }, state.currentTouristicContent.name), h("div", { class: "divider" }), h("div", { class: "downloads-container" }, h("div", { class: "download-title" }, translate[state.language].download), h("div", { class: "links-container" }, h("a", { href: `${state.currentTouristicContent.pdf}
|
|
58
|
+
.map(attachment => (h("div", { class: "swiper-slide" }, h("img", { class: "image", src: attachment.url, loading: "lazy", onClick: () => this.handleFullscreen() }))))) : (h("div", { class: "swiper-slide" }, h("img", { class: "default-poi-img", src: defaultImageSrc, loading: "lazy" })))), h("div", { class: "swiper-pagination", ref: el => (this.paginationElImagesRef = el) }), h("div", { class: "swiper-button-prev", ref: el => (this.prevElImagesRef = el) }), h("div", { class: "swiper-button-next", ref: el => (this.nextElImagesRef = el) }))), h("div", { class: "touristic-content-category-container" }, h("img", { src: touristicContentCategory.pictogram }), h("div", { class: "touristic-content-category-name" }, touristicContentCategory.label)), h("div", { class: "name" }, state.currentTouristicContent.name), h("div", { class: "divider" }), h("div", { class: "downloads-container" }, h("div", { class: "download-title" }, translate[state.language].download), h("div", { class: "links-container" }, h("a", { href: `${state.currentTouristicContent.pdf}`, target: "_blank", rel: "noopener noreferrer" }, h("span", { translate: false, class: "material-symbols material-symbols-outlined" }, "download"), "PDF"))), state.currentTouristicContent.description_teaser && (h("div", null, h("div", { class: "divider" }), h("div", { class: "description-teaser", innerHTML: state.currentTouristicContent.description_teaser }))), h("div", { class: "divider" }), state.currentTouristicContent.practical_info && (h("div", { class: "description-container", ref: el => (this.descriptionRef = el) }, h("div", { class: "description-title" }, translate[state.language].description), h("div", { class: "description", innerHTML: state.currentTouristicContent.description }))), cities && cities.length > 0 && (h("div", { class: "cities-container" }, h("div", { class: "cities-title" }, translate[state.language].city, " :\u00A0"), h("div", { innerHTML: cities.join(', ') }))), state.currentTouristicContent.practical_info && (h("div", null, h("div", { class: "divider" }), h("div", { class: "useful-information-container" }, h("div", { class: "useful-information-title" }, translate[state.language].usefulInformation, " :\u00A0"), h("div", { innerHTML: state.currentTouristicContent.practical_info })))), (state.currentTouristicContent.contact || state.currentTouristicContent.email || state.currentTouristicContent.website) && (h("div", null, h("div", { class: "divider" }), h("div", { class: "contact-container" }, h("div", { class: "contact-title" }, translate[state.language].contact, " :\u00A0"), state.currentTouristicContent.contact && h("div", { innerHTML: state.currentTouristicContent.contact }), state.currentTouristicContent.email && (h("div", { class: "email-container" }, h("div", null, translate[state.language].email, " :\u00A0"), h("div", { innerHTML: state.currentTouristicContent.email }))), state.currentTouristicContent.website && (h("div", { class: "website-container" }, h("div", null, translate[state.language].website, " :\u00A0"), h("div", { innerHTML: state.currentTouristicContent.website })))))), h("div", { class: "detail-bottom-space" })))));
|
|
59
59
|
}
|
|
60
60
|
static get is() { return "grw-touristic-content-detail"; }
|
|
61
61
|
static get encapsulation() { return "shadow"; }
|