@geotrekce/geotrek-rando-widget 0.35.2 → 0.35.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.
Files changed (39) hide show
  1. package/dist/cjs/grw-common-button_23.cjs.entry.js +7 -5
  2. package/dist/cjs/grw-common-button_23.cjs.entry.js.br +0 -0
  3. package/dist/cjs/grw-common-button_23.cjs.entry.js.gz +0 -0
  4. package/dist/cjs/grw-common-button_23.cjs.entry.js.map +1 -1
  5. package/dist/collection/components/grw-map/grw-map.js +7 -5
  6. package/dist/collection/components/grw-map/grw-map.js.br +0 -0
  7. package/dist/collection/components/grw-map/grw-map.js.gz +0 -0
  8. package/dist/collection/components/grw-map/grw-map.js.map +1 -1
  9. package/dist/esm/grw-common-button_23.entry.js +7 -5
  10. package/dist/esm/grw-common-button_23.entry.js.br +0 -0
  11. package/dist/esm/grw-common-button_23.entry.js.gz +0 -0
  12. package/dist/esm/grw-common-button_23.entry.js.map +1 -1
  13. package/dist/esm-es5/grw-common-button_23.entry.js +1 -1
  14. package/dist/esm-es5/grw-common-button_23.entry.js.br +0 -0
  15. package/dist/esm-es5/grw-common-button_23.entry.js.gz +0 -0
  16. package/dist/esm-es5/grw-common-button_23.entry.js.map +1 -1
  17. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js +1 -1
  18. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.br +0 -0
  19. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.gz +0 -0
  20. package/dist/geotrek-rando-widget/p-SrqKQbd3.system.js +1 -1
  21. package/dist/geotrek-rando-widget/p-SrqKQbd3.system.js.br +0 -0
  22. package/dist/geotrek-rando-widget/p-SrqKQbd3.system.js.gz +0 -0
  23. package/dist/geotrek-rando-widget/p-eb73ec81.entry.js +4 -0
  24. package/dist/geotrek-rando-widget/p-eb73ec81.entry.js.br +0 -0
  25. package/dist/geotrek-rando-widget/p-eb73ec81.entry.js.gz +0 -0
  26. package/dist/geotrek-rando-widget/p-eb73ec81.entry.js.map +1 -0
  27. package/dist/geotrek-rando-widget/p-ebe29093.system.entry.js +4 -0
  28. package/dist/geotrek-rando-widget/p-ebe29093.system.entry.js.br +0 -0
  29. package/dist/geotrek-rando-widget/p-ebe29093.system.entry.js.gz +0 -0
  30. package/dist/geotrek-rando-widget/p-ebe29093.system.entry.js.map +1 -0
  31. package/package.json +1 -1
  32. package/dist/geotrek-rando-widget/p-03eb939f.entry.js +0 -4
  33. package/dist/geotrek-rando-widget/p-03eb939f.entry.js.br +0 -0
  34. package/dist/geotrek-rando-widget/p-03eb939f.entry.js.gz +0 -0
  35. package/dist/geotrek-rando-widget/p-03eb939f.entry.js.map +0 -1
  36. package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js +0 -4
  37. package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js.br +0 -0
  38. package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js.gz +0 -0
  39. package/dist/geotrek-rando-widget/p-acb4209f.system.entry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["grwCommonButtonCss","GrwCommonButton","exports","class_1","hostRef","this","fontFamily","prototype","render","_this","h","Host","key","style","part","class","onClick","action","innerHTML","icon","RefreshIcon","FilterListIcon","name","grwFiltersCss","GrwFilters","class_2","selectedSegment","handleEraseTreksFilters","treksFilters","forEach","filter","state","property","currentFilter","selected","selectedActivitiesFilters","selectedThemesFilters","selectedLocationFilters","currentTreks","handleTreksFiltersAndSearch","resetFilter","emit","handleOkTreksFilters","handleFilters","handleSelectedSegment","handleSegment","segment","mode","some","length","touristicContentsFilters","touristicEventsFilters","outdoorSitesFilters","handleEraseTouristicContentsFilters","currentTouristicContents","handleTouristicContentsFiltersAndSearch","handleOkTouristicContentsFilters","handleEraseTouristicEventsFilters","currentTouristicEvents","handleTouristicEventsFiltersAndSearch","handleOkTouristicEventsFilters","handleEraseOutdoorSitesFilters","currentOutdoorSites","handleOutdoorSitesFiltersAndSearch","handleOkOutdoorSitesFilters","treksWithinBounds","concat","translate","language","treks","trek","erase","ok","home","themes","location","exportparts","filterName","practice","filterType","filterNameProperty","filterPlaceholder","placeholderPractices","difficulty","placeholderDifficulties","duration","placeholderDurations","placeholderLengths","elevation","placeholderElevations","routes","placeholderRoutes","accessibility","placeholderAccessibilities","activities","placeholderActivities","placeholderThemes","districts","placeholderDistricts","crossedCities","placeholderCrossedCities","touristicContentsWithinBounds","touristicContents","touristicContent","services","category","placeholderCategories","touristicEventsWithinBounds","touristicEvents","touristicEvent","type","placeholderType","outdoorSitesWithinBounds","outdoorSites","outdoorSite","grwLoaderCss","GrwLoader","class_3","colorPrimaryContainer","colorOnPrimaryContainer","factory","window","module","require$$0","L","locales","locale","registerLocale","code","Util","extend","setLocale","i18n","_","string","data","template","err","t","e","a","i","n","Math","floor","r","o","s","round","toString","padStart","m","href","target","download","document","body","appendChild","click","removeChild","Promise","resolve","createElement","addEventListener","once","src","head","classed","beginPath","moveTo","Path2D","attr","strokeStyle","fillStyle","lineWidth","globalCompositeOperation","globalAlpha","stroke","fill","closePath","l","split","every","DomUtil","addClass","c","removeClass","call","d","u","getStyle","setProperty","p","create","v","f","g","insertAdjacentElement","setAttribute","y","querySelector","x","DomEvent","on","b","off","k","hasClass","w","random","substr","M","C","Object","freeze","__proto__","formatTime","saveFile","lazyLoader","drawCanvas","clamp","toggleClass","replaceClass","toggleStyle","toggleEvent","append","insert","setAttributes","select","randomId","each","A","lightblue","area","alpha","magenta","yellow","purple","steelblue","red","lime","line","S","height","xAttr","yAttr","scaleX","scaleY","interpolation","d3","curve","xDiagCoord","y0","y1","z","color","strokeColor","strokeOpacity","fillOpacity","D","tickSize","tickPadding","position","width","axis","scale","ticks","tickFormat","label","labelX","labelY","onAxisMount","replace","toUpperCase","join","text","F","E","theme","xCoord","yCoord","labels","item","node","isNaN","keys","sort","order","size","value","selectAll","T","margins","path","toLowerCase","ownerSVGElement","dispatch","detail","legend","enabled","bottom","I","getBBox","max","Browser","webkit","O","symbolTriangle","angle","exit","remove","enter","merge","symbol","N","point","datum","pos","y2","top","x2","left","right","P","min","forceBounds","extent","B","G","range","scaleLinear","domain","H","grid","brush","tooltip","ruler","getContext","brushX","mask","canvas","context","svg","panes","utils","_resize","test","navigator","platform","userAgent","_width","_height","pane","get","X","Colors","Area","Path","Axis","Grid","PositionMarker","LegendItem","Tooltip","Ruler","CheckPoint","Domain","Range","Scale","Bisect","bisector","invert","Chart","U","Class","includes","Evented","Mixin","Events","initialize","options","control","_data","_props","scales","paths","areas","grids","axes","legendItems","tooltipItems","_scales","_domains","_ranges","_paths","_brushEnabled","dragging","_zoomEnabled","zooming","_chart","_container","_grid","_area","_point","_axis","_legend","_tooltip","_ruler","_initScale","_mask","_context","_brush","_zoom","zoom","_drag","drag","_initInteractions","_maskGaps","push","index","update","_updateScale","_updateArea","_updateAxis","_updateLegend","_updateClipper","clear","_resetDrag","_hideDiagramIndicator","clearRect","_drawPath","preferCanvas","_hasActiveLayers","_initBrush","sourceEvent","pointers","_findIndexForXCoord","fire","shiftKey","button","selection","dragstart","dragend","bind","_initClipper","scaleExtent","translateExtent","buttons","transform","distance","_x","rescaleX","time","_initRuler","_initLegend","format","_y","imperial","coords","_findCoordsForY","_registerAxisScale","xAxisMin","xAxisMax","yAxisMin","yAxisMax","altitude","_registerAreaPath","_registerAxisGrid","forceAxisBounds","xTicks","yTicks","_registerCheckPoint","latlng","_findIndexForLatLng","dist","_registerTooltip","substring","indexOf","nodes","Array","map","sign","slice","reverse","reduce","distanceTo","_resetZoom","zoomIdentity","_showDiagramIndicator","j","Symbol","iterator","constructor","R","J","marker","_marker","markerIcon","zIndexOffset","interactive","_labels","addTo","_map","getPane","_latlng","latLngToLayerPoint","_rotate","rotatedPointToMapPanePoint","maxElevation","getElement","setLatLng","getLatLng","Y","summary","reset","track_info","_registerSummary","V","autofitBounds","autohide","mobile","autohideMarker","almostover","collapsed","detached","distanceMarkers","lazy","direction","decimalsX","decimalsY","downloadLink","elevationDiv","followMarker","lazyLoadJS","divIcon","className","html","iconSize","iconAnchor","polyline","opacity","weight","lineCap","polylineSegments","reverseCoords","skipNullZCoords","slope","slopeDeltaMax","slopeRange","speed","speedDeltaMax","speedRange","timeFactor","timeFormat","timestamps","waypoints","wptIcons","wptLabels","xLabel","yLabel","zFollow","Mobile","W","Control","Elevation","__mileFactor","__footFactor","__D3","__TOGEOJSON","__LGEOMUTIL","__LALMOSTOVER","__LDISTANCEM","addData","lazyLoad","then","_addData","_addLayer","_fireEvt","layer","_initElevationDiv","isConnected","getContainer","onAdd","_clearChart","_layers","_clearLayers","_markers","_clearMarkers","_updateChart","_events","elechart_updated","fn","ctx","eachLayer","clearLayers","disableBrush","enableBrush","disableZoom","enableZoom","fitBounds","getBounds","isValid","latLngBounds","getZFollow","hide","featureGroup","_markedSegments","_chartEnabled","handlers","setOptions","_setMapView","throttle","setStyle","colors","_fixCanvasPaths","_fixTooltipSize","arguments","toGeoJSON","GeometryUtil","Handler","AlmostOver","DistanceMarkers","load","_parseFromString","_loadLayer","_loadFile","_initButton","_initChart","_initSummary","_initMarker","_initLayer","_hideMarker","_resetView","_resizeChart","_rotateMarker","_keydownHandler","_updateSummary","onRemove","redraw","setZFollow","show","geometry","_addGeoJSONData","coordinates","console","warn","features","_latlngs","feature","properties","meta","ele","hr","cad","atemp","coordinateProperties","props","id","_addPoint","lat","lng","alt","latLng","addLayer","Polyline","_addMarker","_initAlmostOverHandler","almostOver","addHandler","_mousemoveLayerHandler","_mouseoutHandler","_initDistanceMarkers","eleDiv","_initMapIntegrations","_collapse","_expand","Canvas","_fillStroke","include","hasLayer","outline","_updateMarker","_findItemForLatLng","_findItemForX","_xTicks","_yTicks","offsetWidth","offsetHeight","clientWidth","_maxWidth","maxWidth","_mouseenterHandler","_dragendHandler","_mousemoveHandler","_rulerFilterHandler","_toggleChartHandler","_pane","createPane","zIndex","pointerEvents","_renderer","disableClickPropagation","disableScrollPropagation","_button","title","stop","_toggle","_summary","fetch","_downloadURL","catch","geoJson","pointToLayer","desc","sym","hasOwnProperty","decodeURI","bindPopup","keepInView","openPopup","bindTooltip","sticky","openTooltip","element","onEachFeature","_parseFromGeoJSONString","JSON","parse","_parseFromXMLString","trim","_prepareMultiLineStrings","_prepareAdditionalProperties","DOMParser","parseFromString","documentElement","tagName","getElementsByTagName","from","find","parentElement","textContent","pop","_registerDataAttribute","init","skipNull","splice","chart","_isFullscreen","_updateMapSegments","getZoom","setView","animate","contains","elevation_max","setLatLngs","onclick","preventDefault","confirm","CustomEvent","dispatchEvent","__xTicks","__yTicks","addInitHook","distanceFactor","totlen","toFixed","timeLabel","_timeAVGSpeed","timeAVGSpeed","speedFactor","Date","toLocaleTimeString","toLocaleDateString","toLocaleString","replaceAll","xTimeFormat","coordTimes","times","getTime","now","getTimezoneOffset","abs","tottime","altitudeFactor","heightFactor","elevation_min","elevation_avg","altitudeDeltaMax","altitudeRange","visbile","maxele","minele","avgele","slopeLabel","ascent","descent","slope_max","slope_min","slope_avg","slop","formatNum","minslope","maxslope","avgslope","acceleration","speedLabel","speed_max","speed_min","speed_avg","minspeed","maxspeed","avgspeed","accelerationLabel","accelerationFactor","acceleration_max","acceleration_min","acceleration_avg","accelerationDeltaMax","accelerationRange","minacceleration","maxacceleration","avgacceleration","Utils","Components","enableDragging","disableDragging","loadChart","loadData","loadGPX","loadGeoJSON","loadXML","loadFile","_addGPXData","_registerFocusLabel","MarkerClusterGroup","FeatureGroup","maxClusterRadius","iconCreateFunction","clusterPane","Marker","spiderfyOnEveryZoom","spiderfyOnMaxZoom","showCoverageOnHover","zoomToBoundsOnClick","singleMarkerMode","disableClusteringAtZoom","removeOutsideVisibleBounds","animateAddingMarkers","spiderfyShapePositions","spiderfyDistanceMultiplier","spiderLegPolylineOptions","chunkedLoading","chunkInterval","chunkDelay","chunkProgress","polygonOptions","_defaultIconCreateFunction","_featureGroup","addEventParent","_nonPointGroup","_inZoomAnimation","_needsClustering","_needsRemoving","_currentShownBounds","_queue","_childMarkerEventHandlers","_childMarkerDragStart","move","_childMarkerMoved","_childMarkerDragEnd","TRANSITION","_withAnimation","_noAnimation","_markerCluster","MarkerCluster","MarkerClusterNonAnimated","LayerGroup","addLayers","_unspiderfy","_maxZoom","_topClusterLevel","_recalculateBounds","_refreshClustersIcons","__parent","_animationAddLayer","_animationAddLayerNonAnimated","removeLayer","removeLayers","_unspiderfyLayer","_removeLayer","clusterShow","_arraySplice","isArray","_extractNonGroupLayers","getChildCount","getAllChildMarkers","_recursivelyAddChildrenToMap","setTimeout","_gridClusters","_gridUnclustered","_noanimationUnspiderfy","_generateInitialClusters","LatLngBounds","_bounds","getLayers","getLayer","parseInt","stamp","_group","zoomToShowLayer","_icon","spiderfy","panTo","zoomToBounds","isFinite","getMaxZoom","_maxLat","crs","projection","MAX_LATITUDE","newlatlng","_getExpandedVisibleBounds","_zoomEnd","_moveEnd","_spiderfierOnAdd","_bindEvents","_unbindEvents","_mapPane","_spiderfierOnRemove","_hideCoverage","getVisibleParent","_removeFromGridUnclustered","getMinZoom","removeObject","project","__dragStart","_ignoreMove","_popup","isOpen","_moveChild","oldLatLng","_childCount","_boundsNeedUpdate","_cLatLng","addObject","_childClusters","_iconNeedsUpdate","_isOrIsParent","parentNode","originalEvent","relatedTarget","listens","DivIcon","Point","_zoomOrSpiderfy","_showCoverage","keyCode","focus","_shownPolygon","_spiderfied","Polygon","getConvexHull","_mergeSplitClusters","_recursivelyRemoveChildrenFromMap","ceil","DistanceGrid","_overrideMarkerIcon","getNearObject","_addChild","_updateIcon","_enqueue","_queueTimeout","_processQueue","clearTimeout","intersects","_animationStart","_animationZoomIn","_animationZoomOut","_checkBoundsMaxLat","pad","_mapBoundsInfinite","getNorth","_northEast","getSouth","_southWest","_addToMap","LatLng","_recursively","_isSingleParent","clusterHide","_forceLayout","_recursivelyBecomeVisible","_recursivelyRestoreChildPositions","_animationEnd","_animationZoomOutSingle","_setPos","_recursivelyAnimateChildrenInAndAddSelfToMap","falseFn","markerClusterGroup","Icon","getBoundsZoom","setIcon","createIcon","_iconObj","createShadow","_setClusterCenter","_resetBounds","_wLatLng","_backupLatlng","_recursivelyAnimateChildrenIn","_restorePosition","setOpacity","_cellSize","_sqCellSize","_objectPoint","_getCoord","updateObject","eachObject","_sqDist","QuickHull","getDistant","findMostDistantPointFromBaseLine","maxPoint","newPoints","buildConvexHull","_2PI","PI","_circleFootSeparation","_circleStartAngle","_spiralFootSeparation","_spiralLengthStart","_spiralLengthFactor","_circleSpiralSwitchover","_generatePointsSpiral","_generatePointsCircle","_animationSpiderfy","unspiderfy","_animationUnspiderfy","cos","sin","_round","_preSpiderfyLatlng","setZIndexOffset","_spiderLeg","cluster","markers","layerPointToLatLng","SVG","_path","getTotalLength","strokeDasharray","strokeDashoffset","_latLngToNewLayerPoint","center","closePopup","apply","_unspiderfyWrapper","zoomAnimation","_unspiderfyZoomStart","touch","getRenderer","_unspiderfyZoomAnim","refreshClusters","_flagParentsIconsNeedUpdate","_refreshSingleMarkerModeMarkers","refreshIconOptions","defineProperty","define","amd","require","SimpleLocate","ariaLabel","minAngleChange","clickTimeoutDelay","setViewAfterClick","zoomLevel","drawCircle","afterClick","afterMarkerAdd","afterDeviceMove","htmlInit","htmlSpinner","htmlGeolocation","htmlOrientation","iconGeolocation","iconOrientation","_circle","_clicked","_geolocation","_orientation","_clickTimeout","_latitude","_longitude","_accuracy","_angle","stopPropagation","_onClick","getAccuracy","getAngle","setZoomLevel","level","_unwatchGeolocation","_unwatchOrientation","_updateButton","_onLayerAdd","_setView","_checkGeolocation","event","_onLocationFound","_watchGeolocation","_checkClickResult","_checkOrientation","_watchOrientation","geolocation","orientation","getCurrentPosition","watchPosition","reject","maximumAge","enableHighAccuracy","DeviceOrientationEvent","requestPermission","permission","locate","watch","_onZoomStart","_onZoomEnd","stopLocate","_onOrientation","latitude","longitude","accuracy","webkitCompassHeading","screen","html_name","icon_name","setRadius","circle","radius","simpleLocate","earthRadius","factors","centimeters","centimetres","degrees","feet","inches","kilometers","kilometres","meters","metres","miles","millimeters","millimetres","nauticalmiles","radians","yards","geom","feat","bbox","Error","isNumber","featureCollection","fc","radiansToLength","units","factor","degreesToRadians","num","coordEach","geojson","callback","excludeWrapCoord","stopG","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","featureIndex","geometries","geomIndex","multiFeatureIndex","geometryIndex","geomType","featureEach","explode","points","coord","result","Infinity","ext","clone","cloneFeature","cloneFeatureCollection","cloneGeometry","cloned","cloneProperties","deepSlice","getCoord","getGeom","to","coordinates1","coordinates2","dLat","dLon","lat1","lat2","pow","atan2","sqrt","nearestPoint","targetPoint","nearest","minDist","bestFeatureIndex","pt","distanceToPoint","booleanPointInPolygon","polygon","polys","inBBox","insidePoly","inRing","ignoreBoundary","inHole","ring","isInside","xi","yi","xj","yj","onBoundary","intersect","pointOnFeature","normalize","cent","centroid","onSurface","x1","onLine","onMultiPoint","pointOnSegment","vertices","ab","ap","pb","__onAdd","__onRemove","__updatePath","_updatePath","__bringToFront","bringToFront","PolylineTextPath","_textRedraw","_textNode","_text","_textOptions","setText","defaults","repeat","fillColor","attributes","below","pattern","createTextNode","alength","getComputedTextLength","textNode","textPath","dy","offset","getAttribute","setAttributeNS","insertBefore","firstChild","textLength","pathLength","rotateAngle","rotatecenterX","rotatecenterY","vml","events","grwMapCss","GrwMap","class_4","maxZoom","mapIsReady","customLayersRefreshInterval","colorPrimaryApp","colorOnSurface","colorBackground","colorTrekLine","colorSensitiveArea","colorMarkers","colorClusters","colorOutdoorArea","tilesMaxZoomOffline","grwApp","mainMarkerSize","selectedMainMarkerSize","mainClusterSize","commonMarkerSize","departureArrivalMarkerSize","pointReferenceMarkerSize","elevationHeight","mobileElevationHeight","largeViewSize","elevationDefaultState","isLargeView","fabBackgroundColor","fabColor","arrowRepeat","userLayersState","tileLayer","customLayers","handleTreksWithinBoundsBind","handleTreksWithinBounds","handleTouristicContentsWithinBoundsBind","handleTouristicContentsWithinBounds","handleTouristicEventsWithinBoundsBind","handleTouristicEventsWithinBounds","handleOutdoorSitesWithinBoundsBind","handleOutdoorSitesWithinBounds","addTreksController","addTouristicContentsController","addTouristicEventsController","addOutdoorSitesController","addSelectedCurrentTrekController","showTrekLineController","viewportState","hasScrolled","fitBoundsQueued","componentDidUpdate","invalidateSize","bounds","onCenterOnMap","stepsIsInViewport","steps","currentStepsLayer","layersControl","handleLayerVisibility","descriptionIsInViewport","description","currentReferencePointsLayer","parkingIsInViewport","parking","currentParkingLayer","onInformationPlacesIsInViewport","informationPlaces","currentInformationDesksLayer","sensitiveAreaIsInViewport","sensitiveArea","currentSensitiveAreasLayer","poiIsInViewport","pois","currentPoisLayer","currentPois","touristicContentsIsInViewport","currentToutisticContentsLayer","trekTouristicContents","touristicEventsIsInViewport","currentTouristicEventsLayer","trekTouristicEvents","sitesIsInViewport","currentRelatedOutdoorSitesLayer","coursesIsInViewport","currentRelatedOutdoorCoursesLayer","onDetailScrolled","applyCachedViewportState","onCardTrekMouseOver","parentTrek","selectedTrekId","hideTrekLine","showTrekLine","addSelectedCurrentTrek","stepPopupIsOpen","selectedStepId","addSelectedCurrentStep","onCardTrekMouseLeave","trekPopupIsOpen","removeSelectedCurrentTrek","selectedCurrentStepLayer","removeSelectedCurrentStep","onTouristicContentMouseOver","touristicContentPopupIsOpen","selectedTouristicContentId","addSelectedTouristicContent","onTouristicContentMouseLeave","removeSelectedTouristicContent","onTouristicEventMouseOver","touristicEventPopupIsOpen","selectedTouristicEventId","addSelectedTouristicEvent","onTouristicEventMouseLeave","removeSelectedTouristicEvent","onTrekDownloadedSuccessConfirm","setMaxZoom","onTrekDeleteSuccessConfirm","onOutdoorSiteMouseOver","outdoorSitePopupIsOpen","selectedOutdoorSiteId","addSelectedOutdoorSite","onOutdoorSiteMouseLeave","removeSelectedOutdoorSite","componentWillLoad","languages","componentDidLoad","mapRef","zoomControl","isCustom","values","refreshSingleLayer","nameLayers","nameLayer","urlLayers","urlLayer","url","attributionLayers","attributionLayer","tileLayerOffline","attribution","crossOrigin","layers","tileLayers","assign","_g","zoomInTitle","zoomIn","zoomOutTitle","zoomOut","metric","Contract","contractContainer","contract","backgroundImage","opts","currentTrek","addTrek","addTreks","currentTouristicContent","addTouristicContent","currentTouristicEvent","addTouristicEvent","currentOutdoorSite","addOutdoorSite","currentOutdoorCourse","addOutdoorCourse","addTouristicContents","addTouristicEvents","addOutdoorSites","onChange","removeTreks","removeTouristicContents","removeTouristicEvents","removeOutdoorSites","removeTrek","removeTouristicContent","removeTouristicEvent","__awaiter","setCurrentPois","setCurrentTouristicContents","setCurrentTouristicEvents","updateCustomLayersVisibility","removeOutdoorCourse","removeOutdoorSite","addCustomLayers","refreshIntervalId","setInterval","refreshCustomLayers","disconnectedCallback","clearInterval","customWmsUrl","wmsUrls","wmsLayers_1","customWmsLayers","wmsNames_1","customWmsName","wmsAttributions_1","customWmsAttribution","layerName","displayName","wmsLayer","wms","transparent","version","error","customTileUrl","tileUrls","tileNames_1","customTileName","tileAttributions_1","customTileAttribution","_originalUrl","customGeojsonUrl","geojsonUrls","geojsonNames","customGeojsonName","geojsonColors","customGeojsonColor","geojsonWeights","customGeojsonWeight","fallbackColor","fallbackWeight","separator","cache","response","_h","sent","status","json","geojsonData","geojsonLayer","geoJSON","iconProp","nameProp","descProp","isUrl","startsWith","customIcon","iconUrl","bgColor","backgroundColor","borderColor","borderWeight","borderRadius","customDivIcon","circleMarker","popupContent","image","imgUrl","closeButton","_customUrl","this_1","e_1","TileLayer","WMS","setParams","_t","originalUrl","setUrl","GeoJSON","newData","e_2","shouldShow","baseLayers_1","tl","addOverlay","handleLayersControlEvent","visible","loading","layerDataIsLoading","forceUpdate","hostElement","_leaflet_id","resetBounds","_a","abort","AbortController","signal","treksCurrentDepartureCoordinates","treksFeatureCollection","departure_geom","_b","practices","pictogram","imgSrc","attachments","attachment","thumbnail","_i","treksLayer","currentMapBounds","coordinate","getIcons","treksIcons_1","aborted","geoJsonPoint","autoPanOnFocus","getIcon","dataInStore","trekDeparturePopup","trekImg","trekName","trekButton","trekCardPress","autoPan","treksMarkerClusterGroup","toBBoxString","getDataInStore","trekInStore","_k","currentTrekFeature","currentTrekLayer","_feature","parking_location","parkingImageSrc_1","getAssetPath","Build","isDev","currentParking","advised_parking","_geoJsonPoint","parkingTooltip","parkingName","currentSensitiveAreas","currentSensitiveAreasFeatureCollection","sensitiveArea_1","sensitiveAreaTooltip","sensitiveAreaName","addCurrentInformationDesks","addCurrentPois","addCurrentSignages","addCurrentTouristicContents","addCurrentTouristicEvents","points_reference","currentReferencePointsFeatureCollection","index_1","parentTrekId","stepsFeatureCollection","currentTrekSteps","_j","stepIndex_1","elevationTranslation","elevations","el","undefined","minMaxElevation","elevationOptions","mapElement","getBoundingClientRect","elevationControl","stringify","display","departureArrival","departureArrivalLayer","handleLayersControl","featuresCollection","icons","Capacitor","isNativePlatform","checkFileInStore","URL","createObjectURL","getFileInStore","Filesystem","getUri","directory","Directory","Data","convertFileSrc","uri","customCoordinates","trek_1","treksIcons","selectedCurrentTrekLayer","Boolean","stepIndex_2","findIndex","_layerControlInputs","userLayerState","layerId","overlay","onchange","checked","handleLayersOnRemove","getTrekGeometry","trekLine","touristicContentsFeatureCollection","touristicContentCategories","touristicContentCategory","currentToutisticContentLayer","toutisticContentIcons_1","touristicContentsCurrentCoordinates","toutisticContentsLayer","toutisticContentIcons_2","touristicContentCoordinatesPopup","touristicContentImg","touristicContentName","touristicContentButton","touristicContentCardPress","touristicContentsMarkerClusterGroup","touristicEventsFeatureCollection","touristicEventType","touristicEventTypes","currentToutisticEventLayer","toutisticEventsIcons_1","touristicContentFeatureCollection","touristicContent_1","toutisticContentIcons","selectedTouristicContentLayer","touristicContentDeparturePopup","touristicEventsCurrentCoordinates","touristicEventsLayer","touristicEventsIcons_1","touristicEventCoordinatesPopup","touristicEventImg","touristicEventName","touristicEventButton","touristicEventCardPress","touristicEventsMarkerClusterGroup","outdoorSitesCurrentCoordinates","outdoorSitesFeatureCollection","outdoorPractices","outdoorSitesLayer","outdoorSitesBbox","outdoorSitesIcons_1","outdoorSiteCoordinatesPopup","outdoorSiteImg","outdoorSiteName","outdoorSiteButton","outdoorSiteCardPress","outdoorSitesMarkerClusterGroup","OutdoorSiteFeatureCollection","outdoorSitePractice","outdoorPractice","currentOutdoorSiteLayer","outdoorSitesIcons_2","addCurrentRelatedOutdoorSites","addCurrentRelatedOutdoorCourses","currentRelatedOutdoorSiteFeatureCollection","currentRelatedOutdoorSites","currentRelatedOutdoorSite","outdoorSitesIcons_3","currentRelatedOutdoorCourseFeatureCollection","currentRelatedOutdoorCourses","currentRelatedOutdoorCourse","outdoorCourseTypes","outdoorCoursesIcons_1","touristicEventFeatureCollection","touristicEvent_1","touristicEventsIcons","selectedTouristicEventLayer","touristicEventDeparturePopup","OutdoorCourseFeatureCollection","outdoorCourseType","currentOutdoorCourseLayer","outdoorCoursesIcons_2","_customCoordinates","outdoorSiteFeatureCollection","outdoorSite_1","outdoorSitesIcons","selectedOutdoorSiteLayer","outdoorSiteDeparturePopup","addSelectedOutdoorCourse","outdoorCourseFeatureCollection","outdoorCourse_1","removeSelectedOutdoorCourse","selectedOutdoorCourseId","outdoorCoursesIcons","selectedOutdoorCourseLayer","outdoorCourseDeparturePopup","outdoorCourseImg","outdoorCourseName","outdoorCourseButton","outdoorCourseCardPress","outdoorCoursePopupIsOpen","poisData","currentPoisFeatureCollection","type_pictogram","poiTooltip","poiName","currentPoi","poiTypes","poiType","currentSignages","signageImageSrc_1","currentSignagesFeatureCollection","currentSignage","currentSignagesLayer","signageTooltip","signageName","touristicContentsData","currentTouristicContentsFeatureCollection","category_pictogram","touristicContentTooltip","touristicEventsData","currentTouristicEventsFeatureCollection","touristicEventTooltip","currentData","currentInformationDesks","currentInformationDesksFeatureCollection","information_desks","currentInformationDesk","Number","informationDesksIcons_1","informationDesksTooltip","informationDesksName","overlays","referencePoints","signages","sites","courses","layerMap","layerMap_1","removeControl","onWindowResize","handleView","handleElevation","layersImageSrc","contractImageSrc","ref","showTitle","showElevation","hideTitle","hideElevation","grwOfflineConfirmModalCss","GrwOfflineConfirmModal","class_5","showOfflineModal","showConfirmModal","showLoaderModal","showSuccessModal","showErrorModal","showConfirmDeleteModal","showDeletingMessage","showDeleteSuccessMessage","onDownloadConfirm","overflow","onDownloadedSuccessConfirm","downloadedErrorConfirm","onDeleteConfirm","onDeleteSuccessConfirm","deleteErrorConfirm","handleOkDeleteModal","deletePress","handleOkDownloadModal","downloadPress","handleCancelModal","Fragment","offline","downloadRouteQuestion","downloadOutdoorQuestion","cancel","deleteRouteQuestion","deleting","downloading","offlineRouteDeleted","offlineOutdoorDeleted","routeAvailableOffline","outdoorAvailableOffline","deleteRouteError","deleteOutdoorError","downloadRouteError","downloadOutdoorError","Scrollbar","swiper","extendParams","getDocument","isTouched","timeout","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","draggable","snapOnRelease","lockClass","dragClass","scrollbarDisabledClass","horizontalClass","verticalClass","dragEl","setTranslate","params","rtl","rtlTranslate","progress","loop","progressLoop","newSize","newPos","isHorizontal","transitionDuration","setTransition","updateSize","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","watchOverflow","classList","isLocked","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","elementOffset","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","cssMode","onDragMove","returnValue","onDragEnd","nextTick","slideToClosest","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","enableDraggable","disableDraggable","swiperEl","createElementIfNotDefined","originalParams","isElement","shadowRoot","querySelectorAll","uniqueNavElements","add","destroy","disable","_s","enable","grwOutdoorCourseDetailCss","observerOptions","threshold","GrwOutdoorCourseDetail","class_6","colorSecondaryContainer","colorOnSecondaryContainer","colorSurfaceContainerLow","weather","displayFullscreen","handleSwipers","swiperImagesRef","swiperImages","Swiper","modules","Navigation","Pagination","Keyboard","FreeMode","Mousewheel","navigation","prevEl","prevElImagesRef","nextEl","nextElImagesRef","pagination","paginationElImagesRef","allowTouchMove","keyboard","onfullscreenchange","swiperTouristicContentsRef","swiperTouristicContents","slidesPerView","spaceBetween","grabCursor","freeMode","mousewheel","forceToAxis","touristicContentsSwiperScrollbar","breakpointsBase","breakpoints","swiperTouristicEventsRef","swiperTouristicEvents","touristicEventsSwiperScrollbar","swiperPoisRef","swiperPois","poisSwiperScrollbar","handleObservers","poiRef","poiObserver","IntersectionObserver","entries","isIntersecting","observe","touristicContentsRef","touristicContentObserver","touristicEventsRef","touristicEventObserver","connectedCallback","handleFullscreen","close","requestFullscreen","exitFullscreen","defaultImageSrc","city","cities","outdoorRatings","outdoorRating","ratings","currentOutdoorCoursesRatingsScales","__spreadArray","Set","outdoorRatingsScales","outdoorRatingsScale","outdoorCourseDetailContainerRef","presentationRef","author","CloseIcon","onerror","TimelapseIcon","formatDuration","OpenInFullIcon","formatLength","max_elevation","MovingIcon","formatAscent","rating","downloads","pdf","portalsFromProviders","rel","DownloadIcon","descriptionRef","departure","currentCity","advice","recommendationRef","recommendations","WarningIcon","isInsideHorizontalList","poi","frameborder","GrwOutdoorCourseProvider","class_7","controller","getCacheMode","api","handleOutdoorCourse","outdoorCourseId","outdoorCourseInStore","handleOfflineOutdoorCourse","handleOnlineOutdoorCourse","outdoorCourse","handleOfflineProperty","_p","_l","_m","_o","poisInStore","poiInStore","outdoorCoursePoi","touristicContentsInStore","touristicContentInStore","outdoorCourseTouristicContent","touristicEventsInStore","touristicEventInStore","outdoorCourseTouristicEvent","setFilesFromStore","imagesRegExp","requests","getDistricts","Response","getThemes","portals","getOutdoorCourseTypes","getTouristicContentsNearOutdoorCourse","getTouristicContentCategory","getTouristicEventsNearOutdoorCourse","getTouristicEventType","getPoisNearCourse","getOutdoorCourse","all","responses","networkError","results","citiesToLoad","cityIds_1","getCities","e_3","DOMException","ABORT_ERR","getOutdoorSites","inBbox","structures","outdoorSitesRequest","getAllPaginatedResults","getOutdoorSite","outdoorSiteId","getOutdoorSiteTypes","outdoorSitesTypeRequest","getOutdoorPractices","outdoorPracticesRequest","getPoisNearSite","siteId","outdoorSiteIsAvailableOffline","getOutdoorRatings","getOutdoorRatingsScale","grwOutdoorSiteDetailCss","GrwOutdoorSiteDetail","class_8","enableOffline","globalTilesMinZoomOffline","globalTilesMaxZoomOffline","tilesMinZoomOffline","rounded","showTouristicContentDetailsModal","showTouristicEventDetailsModal","modalDetailsId","onCloseDetailsModal","onTouristiceEventCardPress","touristicEventId","onOpenDetailsModal","modal","modalContent","onTouristicContentCardPress","touristicContentId","modalDetails","onDownloadPress","downloadRootOutdoorSite","onDeletePress","deleteOutdoorSite","informationPlacesRef","informationPlacesObserver","informationPlacesIsInViewport","sitesRef","siteObserver","coursesRef","courseObserver","swiperRelatedOutdoorSitesRef","swiperRelatedOutdoorSites","relatedOutdoorSitesSwiperScrollbar","swiperInformationDesksRef","swiperInformationDesks","informationDesksContentsSwiperScrollbar","swiperRelatedOutdoorCoursesRef","swiperRelatedOutdoorCourses","relatedOutdoorCoursesSwiperScrollbar","sources","source","displayDownloadModal","downloadConfirm","displayDeleteModal","deleteConfirm","inBboxFromProviders","citiesFromProviders","districtsFromProviders","structuresFromProviders","themesFromProviders","outdoorSitesList","getAllDataInStore","offlineOutdoorSites","writeOrUpdateDataInStore","downloadGlobalTiles","defaultBackgroundLayerUrl","defaultBackgroundLayerAttribution","downloadOutdoorSiteTiles","writeOrUpdateFilesInStore","outdoorSiteTypes","trekTouristicContent","trekTouristicEvent","downloadOutdoorCourse","children","downloadOutdoorSite","slideTo","downloadedSuccessConfirm","pois_1","getTouristicContentsNearOutdoorSite","touristicContents_1","getTouristicEventsNearOutdoorSite","touristicEvents_1","outdoorSiteId_1","outdoorSitesInStore","outdoorSiteInStore","deleteOfflineOutdoorSiteProperties","deleteSuccessConfirm","offlineLayer","writeOrUpdateTilesInStore","outdoorSiteBbox","currentOutdoorSitesRatingsScales","outdoorSiteDetailContainerRef","ExploreIcon","cardinalPoints","wind","AirIcon","period","EventIcon","parents","DownloadForOfflineIcon","downloadOffline","DeleteIcon","deleteOffline","description_teaser","ambiance","relatedOutdoorSites","relatedOutdoorSite","relatedOutdoorCourses","relatedOutdoorCourse","informationDesk","web_links","learnMore","weblink","website","GrwOutdoorSiteProvider","class_9","handleOutdoorSite","handleOfflineOutdoorSite","handleOnlineOutdoorSite","_w","_q","_r","_u","_v","informationDesksInStore","informationDesks","informationDeskInStore","information_desk","outdoorSitePoi","outdoorSiteTouristicContent","outdoorSiteTouristicEvent","relatedOutdoorSiteInStore","outdoorCoursesInStore","getSources","getInformationsDesks","ratingsScale","outdoorSitesRequests_1","outdoorCourses","outdoorCoursesRequests_1","cityIds_2","e_4","grwOutdoorSitesListCss","GrwOutdoorSitesList","class_10","outdoorSitesToDisplay","step","shouldAddInfiniteScrollEvent","handleInfiniteScrollBind","handleInfiniteScroll","handleInfiniteScrollEvent","scroll","composedPath","scrollTop","scrollHeight","removeEventListener","GrwOutdoorSitesProvider","class_11","handleOutdoorSites","handleOfflineOutdoorSites","handleOnlineOutdoorSites","outdoorSitesWithOfflineValue","cityIds_3","citiesResponse","citiesData","e_5","grwSearchCss","GrwSearch","class_12","onSearchChange","searchValue","SearchIcon","onInput","placeholder","grwSegmentedSegmentCss","GrwSegmentedSegment","class_13","outdoor","changeMode","grwSelectLanguageCss","GrwSelectLanguage","class_14","handleSelect","TranslateIcon","toLocaleLowerCase","toLocaleUpperCase","grwSwitchCss","GrwSwitch","class_15","DoneIcon","grwTouristicContentsListCss","GrwTouristicContentsList","touristicContentsToDisplay","GrwTouristicContentsProvider","class_16","handleTouristicContents","touristicContentsRequest","getTouristicContentsList","cityIds_4","e_6","grwTouristicEventsListCss","class_17","touristicEventsToDisplay","GrwTouristicEventsProvider","class_18","handleTouristicEvents","touristicEventsRequest","getTouristicEventsList","cityIds_5","e_7","grwTrekDetailCss","presentation","indicator","GrwTrekDetail","class_19","indicatorSelectedTrekOption","translateX","backgroundSize","swiperStepRef","swiperStep","initialSlide","getCurrentStepIndex","stepSwiperScrollbar","presentationObserver","defaultOptions","handleIndicatorSelectedTrekOption","stepsRef","stepsObserver","descriptionObserver","recommendationsObserver","parkingRef","parkingObserver","sensitiveAreaRef","sensitiveAreaObserver","accessibilityRef","accessibilityObserver","setupScrollListener","container","trekDetailContainerRef","onScroll_1","detailScrolled","onScroll_2","handleOptions","difficulties","route","accessibilities","accessibilitiesLevel","accessibilityLevel","accessibility_level","hasStep","disconnect","disabled_infrastructure","accessibility_slope","accessibility_width","accessibility_signage","accessibility_covering","accessibility_exposure","accessibility_advice","emergencyNumber","currentOption","currentOptionIndex","previousVisibleOptions","previousWidthOptions","elementWidth","handleScrollTo","scrollbarFromElement","clientHeight","scrollTo","offsetTop","treksDepartureCoordinates","downloadTrekTiles","downloadTrek","init_1","offlineTreks_1","getTreksList","routesFromProviders","practicesFromProviders","labelsFromProviders","treksList","offlineTrek","districtsList","networks","getPoisNearTrek","getTouristicContentsNearTrek","getTouristicEventsNearTrek","steps_1","stepRequests_1","stepsTouristicContentsRequests_1","stepsTouristicEventsRequests_1","stepsPoisRequests_1","stepsSensitiveAreasRequests_1","stepId","getTrek","getSensitiveAreasNearTrek","trekSteps","stepsTouristicContentsResponses","stepsTouristicEventsResponses","stepsPoisResponses","stepsSensitiveAreasResponses","sensitiveAreas","currentSensitiveArea","signage","deleteTrek","treksInStore","deleteOfflineTrekProperties","trekInStore_1","currentTrekStep","gpx","kml","arrival","access","public_transport","gear","ratings_description","update_datetime","getDepartureCityCode","departureCity","departure_city","displayPaginationAndNavigation","presentationOptionRef","stepsOptionRef","descriptionOptionRef","poisOptionRef","recommendationsOptionRef","sensitiveAreaOptionRef","environmentalSensitiveAreas","informationPlacesOptionRef","accessibilityOptionRef","touristicContentsOptionRef","touristicEventsOptionRef","visibility","_c","length_2d","formatDescent","_d","_e","_f","networkId","currentNetwork","network","trekRating","rs","parentTrekPress","roadAccessAndParking","recommendedParking","transport","BackpackIcon","sensitiveAreasDescription","CallIcon","accessibilitySlope","accessibilityWidth","accessibilitySignage","accessibilityCovering","accessibilityExposure","accessibilityAdvices","GrwTrekProvider","class_20","handleTrek","trekId","handleOfflineTrek","handleOnlineTrek","steps_2","_2","stepRequests_2","_z","_0","_1","trekPoi","sensitiveAreasInStore","sensitiveAreaInStore","trekSensitiveArea","signagesInStore","signageInStore","trekSignage","getTrekRatings","getTrekRatingsScale","getSignages","getPoisNearTrekCount","getTrekNetwork","getTouristicContentsNearTrekCount","getTouristicEventsNearTrekCount","steps_3","stepRequests_3","cityIds_6","count","trekPois","touristicContentsCategory","grwTreksListCss","GrwTreksList","class_21","treksToDisplay","displayOnlyOfflineTreks","GrwTreksProvider","class_22","handleTreks","handleOfflineTreks","handleOnlineTreks","durations","lengths","sortTreks","localeCompare","numeric","sensitivity","property_1","exclude","getTrekAccessibility","getLabel","cityIds","e_8","treksWithOfflineValue","treksWithDeparture","trekIsAvailableOffline"],"sources":["src/components/grw-common-button/grw-common-button.scss?tag=grw-common-button&encapsulation=shadow","src/components/grw-common-button/grw-common-button.tsx","src/components/grw-filters/grw-filters.scss?tag=grw-filters&encapsulation=shadow","src/components/grw-filters/grw-filters.tsx","src/components/grw-loader/grw-loader.scss?tag=grw-loader&encapsulation=shadow","src/components/grw-loader/grw-loader.tsx","node_modules/leaflet-i18n/Leaflet.i18n.js","node_modules/@raruto/leaflet-elevation/dist/leaflet-elevation.min.js","node_modules/leaflet.markercluster/dist/leaflet.markercluster.js","src/utils/leaflet-simple-locate.min.js","node_modules/@turf/helpers/dist/es/index.js","node_modules/@turf/meta/dist/es/index.js","node_modules/@turf/explode/dist/es/index.js","node_modules/@turf/bbox/dist/es/index.js","node_modules/@turf/center/dist/es/index.js","node_modules/@turf/clone/dist/es/index.js","node_modules/@turf/invariant/dist/es/index.js","node_modules/@turf/distance/dist/es/index.js","node_modules/@turf/nearest-point/dist/es/index.js","node_modules/@turf/boolean-point-in-polygon/dist/es/index.js","node_modules/@turf/point-on-feature/dist/es/index.js","node_modules/leaflet-textpath/leaflet.textpath.js","src/components/grw-map/grw-map.scss?tag=grw-map&encapsulation=shadow","src/components/grw-map/grw-map.tsx","src/components/grw-offline-confirm-modal/grw-offline-confirm-modal.scss?tag=grw-offline-confirm-modal&encapsulation=shadow","src/components/grw-offline-confirm-modal/grw-offline-confirm-modal.tsx","node_modules/swiper/modules/scrollbar/scrollbar.js","src/components/grw-outdoor-course-detail/grw-outdoor-course-detail.scss?tag=grw-outdoor-course-detail&encapsulation=shadow","src/components/grw-outdoor-course-detail/grw-outdoor-course-detail.tsx","src/store/grw-outdoor-course-provider.tsx","src/services/outdoor-sites.service.ts","src/components/grw-outdoor-site-detail/grw-outdoor-site-detail.scss?tag=grw-outdoor-site-detail&encapsulation=shadow","src/components/grw-outdoor-site-detail/grw-outdoor-site-detail.tsx","src/store/grw-outdoor-site-provider.tsx","src/components/grw-outdoor-sites-list/grw-outdoor-sites-list.scss?tag=grw-outdoor-sites-list&encapsulation=shadow","src/components/grw-outdoor-sites-list/grw-outdoor-sites-list.tsx","src/store/grw-outdoor-sites-provider.tsx","src/components/grw-search/grw-search.scss?tag=grw-search&encapsulation=shadow","src/components/grw-search/grw-search.tsx","src/components/grw-segmented-segment/grw-segmented-segment.scss?tag=grw-segmented-segment&encapsulation=shadow","src/components/grw-segmented-segment/grw-segmented-segment.tsx","src/components/grw-select-language/grw-select-language.scss?tag=grw-select-language&encapsulation=shadow","src/components/grw-select-language/grw-select-language.tsx","src/components/grw-switch/grw-switch.scss?tag=grw-switch&encapsulation=shadow","src/components/grw-switch/grw-switch.tsx","src/components/grw-touristic-contents-list/grw-touristic-contents-list.scss?tag=grw-touristic-contents-list&encapsulation=shadow","src/components/grw-touristic-contents-list/grw-touristic-contents-list.tsx","src/store/grw-touristic-contents-provider.tsx","src/components/grw-touristic-events-list/grw-touristic-events-list.scss?tag=grw-touristic-events-list&encapsulation=shadow","src/components/grw-touristic-events-list/grw-touristic-events-list.tsx","src/store/grw-touristic-events-provider.tsx","src/components/grw-trek-detail/grw-trek-detail.scss?tag=grw-trek-detail&encapsulation=shadow","src/components/grw-trek-detail/grw-trek-detail.tsx","src/store/grw-trek-provider.tsx","src/components/grw-treks-list/grw-treks-list.scss?tag=grw-treks-list&encapsulation=shadow","src/components/grw-treks-list/grw-treks-list.tsx","src/store/grw-treks-provider.tsx"],"sourcesContent":[".common-button {\n user-select: none;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n border: none;\n color: var(--color-on-primary-container);\n background-color: var(--color-primary-container);\n padding: 12px 24px;\n border-radius: var(--border-radius, 20px);\n box-sizing: border-box;\n position: relative;\n gap: 8px;\n white-space: nowrap;\n line-height: 20px;\n letter-spacing: 0.1px;\n font-family: var(--font-family);\n font-size: 14px;\n font-weight: 500;\n box-shadow: var(--elevation-1);\n transition: box-shadow 0.2s ease-in-out 0s;\n height: 44px;\n .common-button-icon {\n font-size: 18px;\n }\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\nimport RefreshIcon from '../../assets/refresh.svg';\nimport FilterListIcon from '../../assets/filter_list.svg';\n\n@Component({\n tag: 'grw-common-button',\n styleUrl: 'grw-common-button.scss',\n shadow: true,\n})\nexport class GrwCommonButton {\n @Prop() action: Function;\n @Prop() icon: string;\n @Prop() name: string;\n\n @Prop() fontFamily = 'Roboto';\n\n render() {\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\n }}\n >\n <button part=\"common-button\" class=\"common-button\" onClick={() => this.action()}>\n <span part=\"common-button-icon\" class=\"icon\" innerHTML={this.icon === 'refresh' ? RefreshIcon : FilterListIcon}></span>\n <span part=\"common-button-label\" class=\"label\">\n {this.name}\n </span>\n </button>\n </Host>\n );\n }\n}\n",".options-container {\n height: 100%;\n position: absolute;\n width: 100%;\n z-index: 1100;\n top: 0px;\n}\n\n.filters-container {\n background-color: var(--color-background);\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1100;\n .filters-treks-container,\n .filters-touristic-contents-container,\n .filters-touristic-events-container,\n .filters-outdoor-sites-container {\n height: 100%;\n }\n .segmented-buttons-container {\n display: flex;\n justify-content: center;\n width: calc(100% - 32px);\n height: 40px;\n margin: 16px;\n border: 1px solid var(--color-outline);\n border-radius: var(--border-radius, 20px);\n line-height: 20px;\n .segment {\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n -webkit-tap-highlight-color: transparent;\n color: var(--color-on-surface-variant);\n background-color: transparent;\n border-radius: 0px;\n min-width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n font-family: var(--font-family);\n &:first-child {\n border-top-left-radius: var(--border-radius, 20px);\n border-bottom-left-radius: var(--border-radius, 20px);\n }\n &:not(:last-child) {\n border-right: 1px solid var(--color-outline);\n }\n &:last-child {\n border-top-right-radius: var(--border-radius, 20px);\n border-bottom-right-radius: var(--border-radius, 20px);\n }\n }\n .selected-segment {\n color: var(--color-on-primary-container);\n background-color: var(--color-primary-container);\n }\n }\n}\n\n.filters-segment-container {\n overflow-y: visible;\n height: 100%;\n max-height: calc(100% - 64px - 42px - 32px);\n}\n\n.back-filters-container {\n background-color: rgba(0, 0, 0, 0.5);\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: 1099;\n}\n\n.divider {\n margin: 16px;\n border-top: 1px solid var(--color-outline);\n}\n\n.filters-options-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 64px;\n margin: 0px 16px;\n .filters-options-buttons-container {\n display: flex;\n .filter-option-button {\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n padding: 8px 16px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--elevation-0);\n border: none;\n -webkit-tap-highlight-color: transparent;\n line-height: 20px;\n color: var(--color-primary-app);\n background-color: transparent;\n font-family: var(--font-family);\n }\n }\n}\n\n.segment-container {\n overflow: scroll;\n height: 100%;\n}\n\n.filter-container {\n &:not(:last-child) {\n &::after {\n content: '';\n display: block;\n margin: 16px;\n border-top: 1px solid var(--color-outline);\n }\n }\n &:last-child {\n margin-bottom: 16px;\n }\n}\n\n.current-treks-within-bounds-length {\n color: var(--color-on-surface-variant);\n font-family: var(--font-family);\n}\n","import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\nimport { translate } from 'i18n/i18n';\nimport state from 'store/store';\nimport {\n treksFilters,\n handleTreksFiltersAndSearch,\n touristicContentsFilters,\n handleTouristicContentsFiltersAndSearch,\n handleTouristicEventsFiltersAndSearch,\n touristicEventsFilters,\n outdoorSitesFilters,\n handleOutdoorSitesFiltersAndSearch,\n} from 'utils/utils';\n\n@Component({\n tag: 'grw-filters',\n styleUrl: 'grw-filters.scss',\n shadow: true,\n})\nexport class GrwFilters {\n @Event() resetFilter: EventEmitter;\n\n @State() selectedSegment = 'selectedActivitiesFilters';\n\n @Prop() handleFilters: Function;\n\n @Prop() fontFamily = 'Roboto';\n\n handleEraseTreksFilters() {\n treksFilters.forEach(filter => {\n state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedThemesFilters = 0;\n state.selectedLocationFilters = 0;\n state.currentTreks = handleTreksFiltersAndSearch();\n this.resetFilter.emit();\n }\n\n handleOkTreksFilters() {\n this.handleFilters();\n }\n\n handleSelectedSegment(selectedSegment) {\n this.selectedSegment = selectedSegment;\n }\n\n handleSegment(segment) {\n if (state.mode === 'treks') {\n return treksFilters.filter(filter => filter.segment === segment).some(filter => state[filter.property] && state[filter.property].length > 0);\n } else if (state.mode === 'touristicContents') {\n return touristicContentsFilters.filter(filter => filter.segment === segment).some(filter => state[filter.property] && state[filter.property].length > 0);\n } else if (state.mode === 'touristicEvents') {\n return touristicEventsFilters.filter(filter => filter.segment === segment).some(filter => state[filter.property] && state[filter.property].length > 0);\n } else if (state.mode === 'outdoor') {\n return outdoorSitesFilters.filter(filter => filter.segment === segment).some(filter => state[filter.property] && state[filter.property].length > 0);\n }\n }\n\n handleEraseTouristicContentsFilters() {\n touristicContentsFilters.forEach(filter => {\n state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedLocationFilters = 0;\n state.currentTouristicContents = handleTouristicContentsFiltersAndSearch();\n this.resetFilter.emit();\n }\n\n handleOkTouristicContentsFilters() {\n this.handleFilters();\n }\n\n handleEraseTouristicEventsFilters() {\n touristicEventsFilters.forEach(filter => {\n state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedLocationFilters = 0;\n state.currentTouristicEvents = handleTouristicEventsFiltersAndSearch();\n this.resetFilter.emit();\n }\n\n handleOkTouristicEventsFilters() {\n this.handleFilters();\n }\n\n handleEraseOutdoorSitesFilters() {\n outdoorSitesFilters.forEach(filter => {\n state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedLocationFilters = 0;\n state.currentOutdoorSites = handleOutdoorSitesFiltersAndSearch();\n this.resetFilter.emit();\n }\n\n handleOkOutdoorSitesFilters() {\n this.handleFilters();\n }\n\n render() {\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\n }}\n >\n <div part=\"options-container\" class=\"options-container\">\n <div part=\"filters-container\" class=\"filters-container\">\n {state.mode === 'treks' && (\n <div part=\"filters-treks-container\" class=\"filters-treks-container\">\n <div part=\"filters-options-container\" class=\"filters-options-container\">\n {state.treksWithinBounds && (\n <div part=\"current-treks-within-bounds-length\" class=\"current-treks-within-bounds-length\">{`${state.treksWithinBounds.length} ${\n state.treksWithinBounds.length > 1 ? translate[state.language].treks : translate[state.language].trek\n }`}</div>\n )}\n <div part=\"filters-options-buttons-container\" class=\"filters-options-buttons-container\">\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleEraseTreksFilters()}>\n {translate[state.language].erase}\n </button>\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleOkTreksFilters()}>\n {translate[state.language].ok}\n </button>\n </div>\n </div>\n <div part=\"segmented-buttons-container\" class=\"segmented-buttons-container\">\n {this.handleSegment('selectedActivitiesFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedActivitiesFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedActivitiesFilters')}\n >\n {translate[state.language].home.segment.treks} {state.selectedActivitiesFilters !== 0 && `(${state.selectedActivitiesFilters})`}\n </label>\n )}\n {this.handleSegment('selectedThemesFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedThemesFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedThemesFilters')}\n >\n {translate[state.language].themes} {state.selectedThemesFilters !== 0 && `(${state.selectedThemesFilters})`}\n </label>\n )}\n {this.handleSegment('selectedLocationFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedLocationFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedLocationFilters')}\n >\n {translate[state.language].location} {state.selectedLocationFilters !== 0 && `(${state.selectedLocationFilters})`}\n </label>\n )}\n </div>\n <div part=\"filters-segment-container\" class=\"filters-segment-container\">\n {this.selectedSegment === 'selectedActivitiesFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"treks-activities-segment-container\">\n {state['practices'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].practice}\n filterType=\"practices\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderPractices}\n ></grw-filter>\n </div>\n )}\n {state['difficulties'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].difficulty}\n filterType=\"difficulties\"\n filterNameProperty=\"label\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderDifficulties}\n ></grw-filter>\n </div>\n )}\n {state['durations'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].duration}\n filterType=\"durations\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderDurations}\n ></grw-filter>\n </div>\n )}\n {state['lengths'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].length}\n filterType=\"lengths\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderLengths}\n ></grw-filter>\n </div>\n )}\n {state['elevations'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].elevation}\n filterType=\"elevations\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderElevations}\n ></grw-filter>\n </div>\n )}\n {state['routes'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].routes}\n filterType=\"routes\"\n filterNameProperty=\"route\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderRoutes}\n ></grw-filter>\n </div>\n )}\n {state['accessibilities'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].accessibility}\n filterType=\"accessibilities\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderAccessibilities}\n ></grw-filter>\n </div>\n )}\n {state['labels'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].activities}\n filterType=\"labels\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderActivities}\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n {this.selectedSegment === 'selectedThemesFilters' && (\n <div part=\"filter-container\" class=\"segment-container\" key=\"treks-themes-segment-container\">\n {state['themes'].length > 0 && (\n <div part=\"\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].themes}\n filterPlaceholder={translate[state.language].placeholderThemes}\n filterType=\"themes\"\n filterNameProperty=\"label\"\n segment=\"selectedThemesFilters\"\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n {this.selectedSegment === 'selectedLocationFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"treks-location-segment-container\">\n {state['districts'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].districts}\n filterType=\"districts\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n filterPlaceholder={translate[state.language].placeholderDistricts}\n ></grw-filter>\n </div>\n )}\n {state['cities'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].crossedCities}\n filterPlaceholder={translate[state.language].placeholderCrossedCities}\n filterType=\"cities\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n {state.mode === 'touristicContents' && (\n <div part=\"filters-touristic-contents-container\" class=\"filters-touristic-contents-container\">\n <div part=\"filters-options-container\" class=\"filters-options-container\">\n {state.touristicContentsWithinBounds && (\n <div part=\"current-treks-within-bounds-length\" class=\"current-treks-within-bounds-length\">{`${state.touristicContentsWithinBounds.length} ${\n state.touristicContentsWithinBounds.length > 1 ? translate[state.language].home.touristicContents : translate[state.language].home.touristicContent\n }`}</div>\n )}\n <div part=\"filters-options-buttons-container\" class=\"filters-options-buttons-container\">\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleEraseTouristicContentsFilters()}>\n {translate[state.language].erase}\n </button>\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleOkTouristicContentsFilters()}>\n {translate[state.language].ok}\n </button>\n </div>\n </div>\n <div part=\"segmented-buttons-container\" class=\"segmented-buttons-container\">\n {this.handleSegment('selectedActivitiesFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedActivitiesFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedActivitiesFilters')}\n >\n {translate[state.language].services} {state.selectedActivitiesFilters !== 0 && `(${state.selectedActivitiesFilters})`}\n </label>\n )}\n {this.handleSegment('selectedLocationFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedLocationFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedLocationFilters')}\n >\n {translate[state.language].location} {state.selectedLocationFilters !== 0 && `(${state.selectedLocationFilters})`}\n </label>\n )}\n </div>\n <div part=\"filters-segment-container\" class=\"filters-segment-container\">\n {this.selectedSegment === 'selectedActivitiesFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"touristic-contents-activities-segment-container\">\n {state['touristicContentCategories'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].category}\n filterType=\"touristicContentCategories\"\n filterNameProperty=\"label\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderCategories}\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n {this.selectedSegment === 'selectedLocationFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"touristic-contents-location-segment-container\">\n {state['districts'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].districts}\n filterType=\"districts\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n filterPlaceholder={translate[state.language].placeholderDistricts}\n ></grw-filter>\n </div>\n )}\n {state['cities'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].crossedCities}\n filterPlaceholder={translate[state.language].placeholderCrossedCities}\n filterType=\"cities\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n {state.mode === 'touristicEvents' && (\n <div part=\"filters-touristic-events-container\" class=\"filters-touristic-events-container\">\n <div part=\"filters-options-container\" class=\"filters-options-container\">\n {state.touristicEventsWithinBounds && (\n <div part=\"current-treks-within-bounds-length\" class=\"current-treks-within-bounds-length\">{`${state.touristicEventsWithinBounds.length} ${\n state.touristicEventsWithinBounds.length > 1 ? translate[state.language].home.touristicEvents : translate[state.language].home.touristicEvent\n }`}</div>\n )}\n <div part=\"filters-options-buttons-container\" class=\"filters-options-buttons-container\">\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleEraseTouristicEventsFilters()}>\n {translate[state.language].erase}\n </button>\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleOkTouristicEventsFilters()}>\n {translate[state.language].ok}\n </button>\n </div>\n </div>\n <div part=\"segmented-buttons-container\" class=\"segmented-buttons-container\">\n {this.handleSegment('selectedActivitiesFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedActivitiesFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedActivitiesFilters')}\n >\n {translate[state.language].services} {state.selectedActivitiesFilters !== 0 && `(${state.selectedActivitiesFilters})`}\n </label>\n )}\n {this.handleSegment('selectedLocationFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedLocationFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedLocationFilters')}\n >\n {translate[state.language].location} {state.selectedLocationFilters !== 0 && `(${state.selectedLocationFilters})`}\n </label>\n )}\n </div>\n <div part=\"filters-segment-container\" class=\"filters-segment-container\">\n {this.selectedSegment === 'selectedActivitiesFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"touristic-contents-activities-segment-container\">\n {state['touristicEventTypes'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].type}\n filterPlaceholder={translate[state.language].placeholderType}\n filterType=\"touristicEventTypes\"\n filterNameProperty=\"type\"\n segment=\"selectedActivitiesFilters\"\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n {this.selectedSegment === 'selectedLocationFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"touristic-events-location-segment-container\">\n {state['districts'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].districts}\n filterType=\"districts\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n filterPlaceholder={translate[state.language].placeholderDistricts}\n ></grw-filter>\n </div>\n )}\n {state['cities'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].crossedCities}\n filterPlaceholder={translate[state.language].placeholderCrossedCities}\n filterType=\"cities\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n {state.mode === 'outdoor' && (\n <div part=\"filters-outdoor-sites-container\" class=\"filters-outdoor-sites-container\">\n <div part=\"filters-options-container\" class=\"filters-options-container\">\n {state.outdoorSitesWithinBounds && (\n <div part=\"current-treks-within-bounds-length\" class=\"current-outdoor-sites-within-bounds-length\">{`${state.outdoorSitesWithinBounds.length} ${\n state.outdoorSitesWithinBounds.length > 1 ? translate[state.language].home.outdoorSites : translate[state.language].home.outdoorSite\n }`}</div>\n )}\n <div part=\"filters-options-buttons-container\" class=\"filters-options-buttons-container\">\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleEraseOutdoorSitesFilters()}>\n {translate[state.language].erase}\n </button>\n <button part=\"filter-option-button\" class=\"filter-option-button\" onClick={() => this.handleOkOutdoorSitesFilters()}>\n {translate[state.language].ok}\n </button>\n </div>\n </div>\n <div part=\"segmented-buttons-container\" class=\"segmented-buttons-container\">\n {this.handleSegment('selectedActivitiesFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedActivitiesFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedActivitiesFilters')}\n >\n {translate[state.language].home.segment.outdoorSites} {state.selectedActivitiesFilters !== 0 && `(${state.selectedActivitiesFilters})`}\n </label>\n )}\n {this.handleSegment('selectedThemesFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedThemesFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedThemesFilters')}\n >\n {translate[state.language].themes} {state.selectedThemesFilters !== 0 && `(${state.selectedThemesFilters})`}\n </label>\n )}\n {this.handleSegment('selectedLocationFilters') && (\n <label\n part=\"segment\"\n class={`segment${this.selectedSegment === 'selectedLocationFilters' ? ' selected-segment' : ''}`}\n onClick={() => this.handleSelectedSegment('selectedLocationFilters')}\n >\n {translate[state.language].location} {state.selectedLocationFilters !== 0 && `(${state.selectedLocationFilters})`}\n </label>\n )}\n </div>\n <div part=\"filters-segment-container\" class=\"filters-segment-container\">\n {this.selectedSegment === 'selectedActivitiesFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"touristic-contents-activities-segment-container\">\n {state['outdoorPractices'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].practice}\n filterPlaceholder={translate[state.language].placeholderPractices}\n filterType=\"outdoorPractices\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n ></grw-filter>\n </div>\n )}\n {state['outdoorSiteTypes'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].activities}\n filterType=\"outdoorSiteTypes\"\n filterNameProperty=\"name\"\n segment=\"selectedActivitiesFilters\"\n filterPlaceholder={translate[state.language].placeholderActivities}\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n {this.selectedSegment === 'selectedThemesFilters' && (\n <div part=\"filter-container\" class=\"segment-container\" key=\"treks-themes-segment-container\">\n {state['themes'].length > 0 && (\n <div part=\"\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].themes}\n filterPlaceholder={translate[state.language].placeholderThemes}\n filterType=\"themes\"\n filterNameProperty=\"label\"\n segment=\"selectedThemesFilters\"\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n {this.selectedSegment === 'selectedLocationFilters' && (\n <div part=\"segment-container\" class=\"segment-container\" key=\"outdoor-sites-location-segment-container\">\n {state['districts'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].districts}\n filterType=\"districts\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n filterPlaceholder={translate[state.language].placeholderDistricts}\n ></grw-filter>\n </div>\n )}\n {state['cities'].length > 0 && (\n <div part=\"filter-container\" class=\"filter-container\">\n <grw-filter\n exportparts=\"filter-name,filter-button-container,filter-select,filter-button,elected-filter-icon,filter-label\"\n fontFamily={this.fontFamily}\n filterName={translate[state.language].crossedCities}\n filterPlaceholder={translate[state.language].placeholderCrossedCities}\n filterType=\"cities\"\n filterNameProperty=\"name\"\n segment=\"selectedLocationFilters\"\n ></grw-filter>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n <div part=\"back-filters-container\" class=\"back-filters-container\" onClick={() => this.handleFilters()}></div>\n </div>\n </Host>\n );\n }\n}\n",".loader {\n width: 48px;\n height: 48px;\n border: 5px solid var(--color-primary-container);\n border-bottom-color: var(--color-on-primary-container);\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n animation: rotation 1s linear infinite;\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'grw-loader',\n styleUrl: 'grw-loader.scss',\n shadow: true,\n})\nexport class GrwLoader {\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n\n render() {\n return (\n <Host style={{ '--color-primary-container': this.colorPrimaryContainer, '--color-on-primary-container': this.colorOnPrimaryContainer }}>\n <span part=\"loader\" class=\"loader\"></span>\n </Host>\n );\n }\n}\n","// Following https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md\n(function (factory, window) {\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === 'function' && define.amd) {\n define(['leaflet'], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === 'object') {\n module.exports = factory(require('leaflet'));\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== 'undefined' && window.L) {\n factory(window.L);\n\n }\n}(function (L) {\n L.locales = {};\n L.locale = null;\n L.registerLocale = function registerLocale(code, locale) {\n L.locales[code] = L.Util.extend({}, L.locales[code], locale);\n };\n L.setLocale = function setLocale(code) {\n L.locale = code;\n };\n return L.i18n = L._ = function translate(string, data) {\n if (L.locale && L.locales[L.locale] && typeof L.locales[L.locale][string] !== \"undefined\") {\n string = L.locales[L.locale][string];\n }\n try {\n // Do not fail if some data is missing\n // a bad translation should not break the app\n string = L.Util.template(string, data);\n }\n catch (err) {/*pass*/\n }\n\n return string;\n };\n}, window));\n","!function(t){\"function\"==typeof define&&define.amd?define(t):t()}((function(){\"use strict\";!function(t,e){\"function\"==typeof define&&define.amd?define([\"leaflet\"],t):\"object\"==typeof exports&&(module.exports=t(require(\"leaflet\"))),void 0!==e&&e.L&&t(e.L)}((function(t){return t.locales={},t.locale=null,t.registerLocale=function(e,a){t.locales[e]=t.Util.extend({},t.locales[e],a)},t.setLocale=function(e){t.locale=e},t.i18n=t._=function(e,a){t.locale&&t.locales[t.locale]&&t.locales[t.locale][e]&&(e=t.locales[t.locale][e]);try{e=t.Util.template(e,a)}catch(t){}return e}}),window);var t=6e4,e=60*t,a=24*e;function i(i){var n=Math.floor(i/a),r=Math.floor((i-n*a)/e),o=Math.floor((i-n*a-r*e)/t),s=Math.round((i-n*a-r*e-o*t)/1e3);return 60===s&&(o++,s=0),60===o&&(r++,o=0),24===r&&(n++,r=0),(n?n+\"d \":\"\")+r.toString().padStart(2,0)+\":\"+o.toString().padStart(2,0)+\"'\"+s.toString().padStart(2,0)+'\"'}function n(t,e){var a=m(\"a\",\"\",{href:t,target:\"_new\",download:e||\"\",style:\"display:none;\"}),i=document.body;i.appendChild(a),a.click(),i.removeChild(a)}function r(t,e,a){return!1===e?Promise.resolve():a instanceof Promise?a:new Promise((function(e,a){var i=document.createElement(\"script\");i.addEventListener(\"load\",e,{once:!0}),i.src=t,document.head.appendChild(i)}))}function o(t,e){e.classed(\"canvas-path\",!0),t.beginPath(),t.moveTo(0,0);var a=new Path2D(e.attr(\"d\"));t.strokeStyle=e.attr(\"stroke\"),t.fillStyle=e.attr(\"fill\"),t.lineWidth=1.25,t.globalCompositeOperation=\"source-over\",t.globalAlpha=e.attr(\"stroke-opacity\")||.3,t.stroke(a),t.globalAlpha=e.attr(\"fill-opacity\")||.45,t.fill(a),t.globalAlpha=1,t.closePath()}function s(t,e){return e?t<e[0]?e[0]:t>e[1]?e[1]:t:t}function l(t,e){t&&e.split(\" \").every((function(e){return e&&L.DomUtil.addClass(t,e)}))}function c(t,e){t&&e.split(\" \").every((function(e){return e&&L.DomUtil.removeClass(t,e)}))}function h(t,e,a){return(a?l:c).call(null,t,e)}function d(t,e,a){e&&c(t,e),a&&l(t,a)}function u(t,e,a){return void 0===a?L.DomUtil.getStyle(t,e):t.style.setProperty(e,a)}function _(t,e,a,i){return u(t,e,i?a:\"\")}function p(t,e,a,i){return t[i?\"on\":\"off\"](e,a)}function m(t,e,a,i){var n=L.DomUtil.create(t,e||\"\");return a&&v(n,a),i&&f(i,n),n}function f(t,e){return t.appendChild(e)}function g(t,e,a){return t.insertAdjacentElement(a,e)}function v(t,e){for(var a in e)t.setAttribute(a,e[a])}function y(t,e){return(e||document).querySelector(t)}var x=L.DomEvent.on,b=L.DomEvent.off,k=L.DomUtil.hasClass;function w(){return Math.random().toString(36).substr(2,9)}function M(t,e){for(var a in t)e(t[a],a)}var C=Object.freeze({__proto__:null,formatTime:i,saveFile:n,lazyLoader:r,drawCanvas:o,clamp:s,addClass:l,removeClass:c,toggleClass:h,replaceClass:d,style:u,toggleStyle:_,toggleEvent:p,create:m,append:f,insert:g,setAttributes:v,select:y,on:x,off:b,hasClass:k,randomId:w,each:M}),A={lightblue:{area:\"#3366CC\",alpha:.45,stroke:\"#3366CC\"},magenta:{area:\"#FF005E\"},yellow:{area:\"#FF0\"},purple:{area:\"#732C7B\"},steelblue:{area:\"#4682B4\"},red:{area:\"#F00\"},lime:{area:\"#9CC222\",line:\"#566B13\"}},S=function(t){t.width;var e=t.height,a=t.xAttr,i=t.yAttr,n=t.scaleX,r=t.scaleY,o=t.interpolation,s=void 0===o?\"curveLinear\":o;return d3.area().curve(\"string\"==typeof s?d3[s]:s).x((function(t){return t.xDiagCoord=n(t[a])})).y0(e).y1((function(t){return r(t[i])}))},z=function(t){var e=t.name,a=t.color,i=t.strokeColor,n=t.strokeOpacity,r=t.fillOpacity,o=d3.create(\"svg:path\");return e&&o.classed(e,!0),o.style(\"pointer-events\",\"none\"),o.attr(\"fill\",a||\"#3366CC\").attr(\"stroke\",i||\"#000\").attr(\"stroke-opacity\",n||\"1\").attr(\"fill-opacity\",r||\"0.8\"),o},D=function(t){var e=t.type,a=void 0===e?\"axis\":e,i=t.tickSize,n=void 0===i?6:i,r=t.tickPadding,o=void 0===r?3:r,s=t.position,l=t.height,c=t.width,h=t.axis,d=t.scale,u=t.ticks,_=t.tickFormat,p=t.label,m=t.labelX,f=t.labelY,g=t.name,v=void 0===g?\"\":g,y=t.onAxisMount;return function(t){var e=0,i=0;\"bottom\"==s&&(i=l),\"right\"==s&&(e=c),\"x\"==h&&\"grid\"==a?n=-l:\"y\"==h&&\"grid\"==a&&(n=-c);var r=d3[\"axis\"+s.replace(/\\b\\w/g,(function(t){return t.toUpperCase()}))]().scale(d).ticks(u).tickPadding(o).tickSize(n).tickFormat(_),g=t.append(\"g\").attr(\"class\",[h,a,s,v].join(\" \")).attr(\"transform\",\"translate(\"+e+\",\"+i+\")\").call(r);return p&&g.append(\"svg:text\").attr(\"x\",m).attr(\"y\",f).text(p),y&&g.call(y),g}},F=function(t){return t.type=\"grid\",D(t)},E=function(t){var e=t.theme,a=t.xCoord,i=void 0===a?0:a,n=t.yCoord,r=void 0===n?0:n,o=t.labels,s=void 0===o?{}:o,l=t.item,c=void 0===l?{}:l,h=t.length,d=void 0===h?0:h;return function(t){t.attr(\"class\",\"height-focus-group\");var a,n=t.select(\".height-focus.line\"),o=t.select(\".height-focus.circle-lower\"),l=t.select(\".height-focus-label\");return n.node()||(n=t.append(\"svg:line\")),o.node()||(o=t.append(\"svg:circle\")),l.node()||(l=t.append(\"svg:text\")),isNaN(i)||isNaN(r)||(o.attr(\"class\",e+\" height-focus circle-lower\").attr(\"transform\",\"translate(\"+i+\",\"+r+\")\").attr(\"r\",6).attr(\"cx\",0).attr(\"cy\",0),n.attr(\"class\",e+\" height-focus line\").attr(\"x1\",i).attr(\"x2\",i).attr(\"y1\",r).attr(\"y2\",d),l.attr(\"class\",e+\" height-focus-label\").style(\"pointer-events\",\"none\").attr(\"x\",i+5).attr(\"y\",d),Object.keys(s).sort((function(t,e){return s[t].order-s[e].order})).forEach((function(t){(a=l.select(\".height-focus-\"+s[t].name)).size()||(a=l.append(\"svg:tspan\").attr(\"class\",\"height-focus-\"+s[t].name).attr(\"dy\",\"1.5em\")),a.text(\"function\"!=typeof s[t].value?s[t].value:s[t].value(c))})),l.select(\"tspan\").attr(\"dy\",l.selectAll(\"tspan\").size()>1?\"-1.5em\":\"0em\"),l.selectAll(\"tspan\").attr(\"x\",i+5)),t}},T=function(t){var e=t.name,a=t.label,i=t.width,n=t.height,r=t.margins,o=void 0===r?{}:r,s=t.color,l=t.path;return function(t){return t.attr(\"class\",\"legend-item legend-\"+e.toLowerCase()).attr(\"data-name\",e),t.on(\"click.legend\",(function(){return d3.select(t.node().ownerSVGElement||t).dispatch(\"legend_clicked\",{detail:{path:l.node(),name:e,legend:t.node(),enabled:!l.classed(\"leaflet-hidden\")}})})),t.append(\"svg:rect\").attr(\"x\",i/2-50).attr(\"y\",n+o.bottom/2).attr(\"width\",50).attr(\"height\",10).attr(\"fill\",s).attr(\"stroke\",\"#000\").attr(\"stroke-opacity\",\"0.5\").attr(\"fill-opacity\",\"0.25\"),t.append(\"svg:text\").text(L._(a||e)).attr(\"x\",i/2+5).attr(\"font-size\",10).style(\"text-decoration-thickness\",\"2px\").style(\"font-weight\",\"700\").attr(\"y\",n+o.bottom/2).attr(\"dy\",\"0.75em\"),t}},I=function(t){var e=t.xCoord,a=t.yCoord,i=t.width,n=t.height,r=t.labels,o=void 0===r?{}:r,s=t.item,l=void 0===s?{}:s;return function(t){var r=t.select(\".mouse-focus-line\"),s=t.select(\".mouse-focus-label\");r.node()||(r=t.append(\"svg:line\")),s.node()||(s=t.append(\"g\"));var c=s.select(\".mouse-focus-label-rect\"),h=s.select(\".mouse-focus-label-text\");c.node()||(c=s.append(\"svg:rect\")),h.node()||(h=s.append(\"svg:text\"));var d,u=0,_=0,p={width:0,height:0};try{p=h.node().getBBox()}catch(e){return t}return e&&(u=e+(e<i/2?10:-p.width-10)),a&&(_=Math.max(a-p.height,L.Browser.webkit?0:-1/0)),r.attr(\"class\",\"mouse-focus-line\").attr(\"x2\",e).attr(\"y2\",0).attr(\"x1\",e).attr(\"y1\",n),s.attr(\"class\",\"mouse-focus-label\"),c.attr(\"class\",\"mouse-focus-label-rect\").attr(\"x\",u-5).attr(\"y\",_-5).attr(\"width\",p.width+10).attr(\"height\",p.height+10).attr(\"rx\",3).attr(\"ry\",3),h.attr(\"class\",\"mouse-focus-label-text\").style(\"font-weight\",\"700\").attr(\"y\",_),Object.keys(o).sort((function(t,e){return o[t].order-o[e].order})).forEach((function(t){(d=h.select(\".mouse-focus-label-\"+o[t].name)).size()||(d=h.append(\"svg:tspan\",\".mouse-focus-label-x\").attr(\"class\",\"mouse-focus-label-\"+o[t].name).attr(\"dy\",\"1.5em\")),d.text(\"function\"!=typeof o[t].value?o[t].value:o[t].value(l))})),h.select(\"tspan\").attr(\"dy\",\"1em\"),h.selectAll(\"tspan\").attr(\"x\",u),t}},O=function(t){var e=t.height,a=t.width;return function(t){t.data([{x:0,y:e}]).attr(\"transform\",(function(t){return\"translate(\"+t.x+\",\"+t.y+\")\"}));var i=t.selectAll(\".horizontal-drag-rect\").data([{w:a}]),n=t.selectAll(\".horizontal-drag-line\").data([{w:a}]),r=t.selectAll(\".horizontal-drag-label\").data([{w:a-8}]),o=t.selectAll(\".horizontal-drag-symbol\").data([{type:d3.symbolTriangle,x:a+7,y:0,angle:-90,size:50}]);return i.exit().remove(),n.exit().remove(),r.exit().remove(),o.exit().remove(),i.enter().append(\"svg:rect\").attr(\"class\",\"horizontal-drag-rect\").attr(\"x\",0).attr(\"y\",-8).attr(\"height\",8).attr(\"fill\",\"none\").attr(\"pointer-events\",\"all\").merge(i).attr(\"width\",(function(t){return t.w})),n.enter().append(\"svg:line\").attr(\"class\",\"horizontal-drag-line\").attr(\"x1\",0).merge(n).attr(\"x2\",(function(t){return t.w})),r.enter().append(\"svg:text\").attr(\"class\",\"horizontal-drag-label\").attr(\"text-anchor\",\"end\").attr(\"y\",-8).merge(r).attr(\"x\",(function(t){return t.w})),o.enter().append(\"svg:path\").attr(\"class\",\"horizontal-drag-symbol\").merge(o).attr(\"d\",d3.symbol().type((function(t){return t.type})).size((function(t){return t.size}))).attr(\"transform\",(function(t){return\"translate(\"+t.x+\",\"+t.y+\") rotate(\"+t.angle+\")\"})),t}},N=function(t){var e=t.point,a=t.height,i=t.width,n=t.x,r=t.y;return function(t){return isNaN(n)||isNaN(r)||(e.item&&e.item.property(\"isConnected\")||(e.position=e.position||\"bottom\",e.item=t.append(\"g\"),e.item.append(\"svg:line\").attr(\"y1\",0).attr(\"x1\",0).attr(\"style\",\"stroke: rgb(51, 51, 51); stroke-width: 0.5; stroke-dasharray: 2, 2;\"),e.item.append(\"svg:circle\").attr(\"class\",\" height-focus circle-lower\").attr(\"r\",3),e.label&&e.item.append(\"svg:text\").attr(\"dx\",\"4px\").attr(\"dy\",\"-4px\")),e.item.datum({pos:e.position,x:n,y:r}).attr(\"class\",(function(t){return\"point \"+t.pos})).attr(\"transform\",(function(t){return\"translate(\"+t.x+\",\"+t.y+\")\"})),e.item.select(\"line\").datum({y2:{top:-r,bottom:a-r}[e.position],x2:{left:-n,right:i-n}[e.position]||0}).attr(\"y2\",(function(t){return t.y2})).attr(\"x2\",(function(t){return t.x2})),e.label&&e.item.select(\"text\").text(e.label)),t}},P=function(t){var e=t.min,a=t.max,i=t.attr,n=t.name,r=t.forceBounds,o=t.scale;return function(t){i=i||n,o&&o.attr&&(i=o.attr);var s=t&&t.length?d3.extent(t,(function(t){return t[i]})):[0,1];return void 0!==e&&(e<s[0]||r)&&(s[0]=e),void 0!==a&&(a>s[1]||r)&&(s[1]=a),s}},B=function(t){var e=t.axis;return function(t,a){return\"x\"==e?[0,t]:\"y\"==e?[a,0]:void 0}},G=function(t){var e=t.data,a=t.attr,i=t.min,n=t.max,r=t.forceBounds,o=t.range;return d3.scaleLinear().range(o).domain(P({min:i,max:n,attr:a,forceBounds:r})(e))},H=function(t){var e=t.width,a=t.height,i=t.margins,n=void 0===i?{}:i,r=(t.ruler,e-n.left-n.right),o=a-n.top-n.bottom,s=d3.create(\"svg:svg\").attr(\"class\",\"background\"),l=s.append(\"g\"),c={grid:l.append(\"g\").attr(\"class\",\"grid\"),area:l.append(\"g\").attr(\"class\",\"area\"),axis:l.append(\"g\").attr(\"class\",\"axis\"),point:l.append(\"g\").attr(\"class\",\"point\"),brush:l.append(\"g\").attr(\"class\",\"brush\"),tooltip:l.append(\"g\").attr(\"class\",\"tooltip\").attr(\"display\",\"none\"),ruler:l.append(\"g\").attr(\"class\",\"ruler\"),legend:l.append(\"g\").attr(\"class\",\"legend\")},h=c.area.append(\"svg:mask\").attr(\"id\",\"elevation-clipper\").attr(\"fill-opacity\",1),d=h.append(\"svg:rect\").attr(\"class\",\"zoom\").attr(\"fill\",\"white\"),u=c.area.append(\"svg:foreignObject\").attr(\"mask\",\"url(#\"+h.attr(\"id\")+\")\"),_=u.append(\"xhtml:canvas\").attr(\"class\",\"canvas-plot\"),p=_.node().getContext(\"2d\");c.tooltip.call(I({xCoord:0,yCoord:0,height:o,width:r,labels:{}}));var m=d3.brushX().on(\"start.cursor end.cursor brush.cursor\",(function(){return c.brush.select(\".overlay\").attr(\"cursor\",null)})),f={mask:h,canvas:_,context:p,brush:m},g={svg:s,g:l,panes:c,utils:f,scale:function(t){return{x:G(t.x),y:G(t.y)}},_resize:function(t){var e=t.width,a=t.height,i=t.margins,n=void 0===i?{}:i,r=t.ruler,o=e-n.left-n.right,h=a-n.top-n.bottom;s.attr(\"viewBox\",\"0 0 \".concat(e,\" \").concat(a)).attr(\"width\",e).attr(\"height\",a),l.attr(\"transform\",\"translate(\"+n.left+\",\"+n.top+\")\"),/Mac|iPod|iPhone|iPad/.test(navigator.platform)&&/AppleWebkit/i.test(navigator.userAgent)&&_.style(\"transform\",\"translate(\"+n.left+\"px,\"+n.top+\"px)\"),d.attr(\"x\",0).attr(\"y\",0).attr(\"width\",o).attr(\"height\",h),u.attr(\"width\",o).attr(\"height\",h),_.attr(\"width\",o).attr(\"height\",h),r&&c.ruler.call(O({height:h,width:o})),c.brush.call(m.extent([[0,0],[o,h]])),c.brush.select(\".overlay\").attr(\"cursor\",null),g._width=o,g._height=h,g.svg.dispatch(\"resize\",{detail:{width:o,height:h}})},pane:function(t){return c[t]||(c[t]=l.append(\"g\").attr(\"class\",t)),c[t]},get:function(t){return f[t]}};return g._resize({width:e,height:a,margins:n}),g},X=Object.freeze({__proto__:null,Colors:A,Area:S,Path:z,Axis:D,Grid:F,PositionMarker:E,LegendItem:T,Tooltip:I,Ruler:O,CheckPoint:N,Domain:P,Range:B,Scale:G,Bisect:function(t){var e=t.data,a=void 0===e?[0,1]:e,i=t.scale,n=t.x,r=t.attr;return d3.bisector((function(t){return t[r]})).left(a,i.invert(n))},Chart:H}),U=L.Class.extend({includes:L.Evented?L.Evented.prototype:L.Mixin.Events,initialize:function(t,e){var a=this;this.options=t,this.control=e,this._data=[],this._props={scales:{},paths:{},areas:{},grids:{},axes:{},legendItems:{},tooltipItems:{}},this._scales={},this._domains={},this._ranges={},this._paths={},this._brushEnabled=t.dragging,this._zoomEnabled=t.zooming;var i=this._chart=H(t);this._container=i.svg;this._grid=i.pane(\"grid\"),this._area=i.pane(\"area\"),this._point=i.pane(\"point\"),this._axis=i.pane(\"axis\"),this._legend=i.pane(\"legend\"),this._tooltip=i.pane(\"tooltip\"),this._ruler=i.pane(\"ruler\"),this._initScale(),this._mask=i.get(\"mask\"),this._context=i.get(\"context\"),this._brush=i.get(\"brush\"),this._zoom=d3.zoom(),this._drag=d3.drag(),this._initInteractions(),this._maskGaps=[],e.on(\"eletrack_added\",(function(t){a._maskGaps.push(t.index),e.once(\"eledata_updated\",(function(t){return a._maskGaps.push(t.index)}))}))},update:function(t){return t&&(t.data&&(this._data=t.data),t.options&&(this.options=t.options)),this._updateScale(),this._updateArea(),this._updateAxis(),this._updateLegend(),this._updateClipper(),this},render:function(){var t=this;return function(e){return e.append((function(){return t._container.node()}))}},clear:function(){this._resetDrag(),this._hideDiagramIndicator(),this._area.selectAll(\"path\").attr(\"d\",\"M0 0\"),this._context.clearRect(0,0,this._width(),this._height()),this._maskGaps=[],this._mask.selectAll(\".gap\").remove()},_drawPath:function(t){var e=this._paths[t],a=this._props.areas[t];e.datum(this._data).attr(\"d\",S(L.extend({},a,{width:this._width(),height:this._height(),scaleX:this._scales[a.scaleX],scaleY:this._scales[a.scaleY]}))),e.classed(\"leaflet-hidden\")||(this.options.preferCanvas?o(this._context,e):this._area.append((function(){return e.node()})))},_hasActiveLayers:function(){var t=this._paths;for(var e in t)if(!t[e].classed(\"leaflet-hidden\"))return!0;return!1},_initBrush:function(t){var e=this,a=function(t){if(e._data.length&&(\"brush\"!=t.type||t.sourceEvent)){var a=e._chart.panes.brush.select(\".overlay\").node(),i=d3.pointers(t,a)[0][0],n=e._data[e._findIndexForXCoord(i)];e.fire(\"mouse_move\",{item:n,xCoord:i})}};this._brush.filter((function(t){return e._brushEnabled&&!t.shiftKey&&!t.button})).on(\"end.update\",(function(t){if(e._data.length){var a=t.selection;if(a){var i=e._findIndexForXCoord(a[0]),n=e._findIndexForXCoord(a[1]);e.fire(\"dragged\",{dragstart:e._data[i],dragend:e._data[n]})}}})).on(\"brush.update\",a),this._chart.panes.brush.on(\"mouseenter.focus touchstart.focus\",this.fire.bind(this,\"mouse_enter\")).on(\"mouseout.focus touchend.focus\",this.fire.bind(this,\"mouse_out\")).on(\"mousemove.focus touchmove.focus\",a)},_initClipper:function(){var t=this,e=this._container,a=this.options.margins,i=this._zoom;i.scaleExtent([1,10]).extent([[a.left,0],[this._width()-a.right,this._height()]]).translateExtent([[a.left,-1/0],[this._width()-a.right,1/0]]).filter((function(e){return t._zoomEnabled&&(e.shiftKey||4==e.buttons)})).on(\"start\",(function(a){a.sourceEvent&&\"mousedown\"==a.sourceEvent.type&&e.style(\"cursor\",\"grabbing\"),1==a.transform.k&&0==a.transform.x&&(t._container.classed(\"zoomed\",!0),t._mask&&t._point.attr(\"mask\",\"url(#\"+t._mask.attr(\"id\")+\")\")),t.zooming=!0})).on(\"end\",(function(a){1==a.transform.k&&0==a.transform.x&&(t._container.classed(\"zoomed\",!1),t._mask&&t._point.attr(\"mask\",null)),t.zooming=!1,e.style(\"cursor\",\"\")})).on(\"zoom\",(function(e){t.zooming=!1,t._updateScale(),t.zooming=!0,t._scales.distance=t._x=e.transform.rescaleX(t._x),t._scales.time&&(t._scales.time=e.transform.rescaleX(t._scales.time)),t._resetDrag(),e.sourceEvent&&\"mousemove\"==e.sourceEvent.type&&t._hideDiagramIndicator(),t.fire(\"zoom\")})),e.call(i)},_initInteractions:function(){this._initBrush(),this._initRuler(),this._initClipper(),this._initLegend()},_initLegend:function(){var t=this;this._container.on(\"legend_clicked\",(function(e){var a=e.detail,i=a.path,n=a.legend,r=a.name,o=a.enabled;if(i){var s=y(\"text\",n),l=y(\"rect\",n);_(s,\"text-decoration-line\",\"line-through\",o),_(l,\"fill-opacity\",\"0\",o),h(i,\"leaflet-hidden\",o),t._updateArea(),t.fire(\"elepath_toggle\",{path:i,name:r,legend:n,enabled:o})}}))},_initRuler:function(){var t=this;if(this.options.ruler){var e=d3.format(\".0f\"),a=this._drag;a.on(\"start end\",(function(e,a){var i=t._height(),n=t._ruler.data()[0].y;(n>=i||n<=0)&&t._ruler.select(\".horizontal-drag-label\").text(\"\"),t._hideDiagramIndicator()})).on(\"drag\",(function(a,i){var n=t._height(),r=d3.pointers(a,t._area.node())[0][1],o=r>0?r<n?r:n:0,s=t._y.invert(o),l=L.extend(t._ruler.data()[0],{y:o});t._ruler.data([l]).attr(\"transform\",(function(t){return\"translate(\"+t.x+\",\"+t.y+\")\"})).classed(\"active\",o<n),t._container.select(\".horizontal-drag-label\").text(e(s)+\" \"+(t.options.imperial?\"ft\":\"m\")),t.fire(\"ruler_filter\",{coords:r<n&&r>0?t._findCoordsForY(r):[]})})),this._ruler.call(a)}},_initScale:function(){var t=this.options;this._registerAxisScale({axis:\"x\",position:\"bottom\",attr:t.xAttr,min:t.xAxisMin,max:t.xAxisMax,name:\"distance\"}),this._registerAxisScale({axis:\"y\",position:\"left\",attr:t.yAttr,min:t.yAxisMin,max:t.yAxisMax,name:\"altitude\"}),this._x=this._scales.distance,this._y=this._scales.altitude},_registerAreaPath:function(t){\"y\"==t.scale?t.scale=this._y:\"x\"==t.scale&&(t.scale=this._x);var e=this.options;t.xAttr||(t.xAttr=e.xAttr),t.yAttr||(t.yAttr=e.yAttr),void 0===t.preferCanvas&&(t.preferCanvas=e.preferCanvas);var a=z(t);this._paths[t.name]=a,this._props.areas[t.name]=t,e.legend&&(this._props.legendItems[t.name]={name:t.name,label:t.label,color:t.color,path:a})},_registerAxisGrid:function(t){\"y\"==t.scale?t.scale=this._y:\"x\"==t.scale&&(t.scale=this._x),this._props.grids[t.name||t.axis]=t},_registerAxisScale:function(t){\"y\"==t.scale?t.scale=this._y:\"x\"==t.scale&&(t.scale=this._x);var e=this.options,a=t.scale;if(\"function\"==typeof this._scales[t.name])t.scale=this._scales[t.name];else if(\"function\"!=typeof a){(a=L.extend({data:this._data,forceBounds:e.forceAxisBounds},a)).attr=a.attr||t.name;var i=this._domains[t.name]=P(t),n=this._ranges[t.name]=B(t);a.range=a.range||n(this._width(),this._height()),a.domain=a.domain||i(this._data),this._props.scales[t.name]=a,t.scale=this._scales[t.name]=G(a)}return t.ticks||(\"x\"==t.axis?t.ticks=e.xTicks:\"y\"==t.axis&&(t.ticks=e.yTicks)),this._props.axes[t.name]=t,a},_registerCheckPoint:function(t){var e,a,i;this._data.length&&(t.latlng?(e=this._data[this._findIndexForLatLng(t.latlng)],a=this._x(e.dist),i=this._y(e.z)):isNaN(t.dist)||(a=this._x(t.dist),e=this._data[this._findIndexForXCoord(a)],i=this._y(e.z)),this._point.call(N({point:t,width:this._width(),height:this._height(),x:a,y:i})))},_registerTooltip:function(t){var e;t.order=null!==(e=t.order)&&void 0!==e?e:100,this._props.tooltipItems[t.name]=t},_updateArea:function(){var t=this._paths;for(var e in this._context.clearRect(0,0,this._width(),this._height()),t)t[e].classed(\"leaflet-hidden\")||this._drawPath(e)},_updateAxis:function(){var t=this.options;this._grid.selectAll(\"g\").remove(),this._axis.selectAll(\"g\").remove();var e,a,i,n=this._props.grids,r=this._props.axes,o={width:this._width(),height:this._height(),tickFormat:\"\"},s={width:this._width(),height:this._height()};for(var l in n)e=L.extend({},o,n[l]),i=F(e),this._grid.call(i);for(var c in r)!1!==t[c]&&\"summary\"!==t[c]&&(e=L.extend({},s,r[c]),a=D(e),this._axis.call(a));this._axis.selectAll(\".y.axis.right\").each((function(t,e,a){var i=d3.select(a[e]),n=i.attr(\"transform\"),r=n.substring(n.indexOf(\"(\")+1,n.indexOf(\")\")).split(\",\");i.attr(\"transform\",\"translate(\"+(+r[0]+40*e)+\",\"+r[1]+\")\"),e>0&&(i.select(\":scope > path\").attr(\"opacity\",.25),i.selectAll(\":scope > .tick line\").attr(\"opacity\",.75))}))},_updateClipper:function(){var t=this,e=this.options.margins;this._zoom.scaleExtent([1,10]).extent([[e.left,0],[this._width()-e.right,this._height()]]).translateExtent([[e.left,-1/0],[this._width()-e.right,1/0]]),this._mask.selectAll(\".gap\").remove(),this._maskGaps.forEach((function(e,a){if(!(a>=t._maskGaps.length-2)){var i=t._data[t._maskGaps[a]],n=t._data[t._maskGaps[a+1]],r=t._x(t._data[t._findIndexForLatLng(i.latlng)].dist),o=t._x(t._data[t._findIndexForLatLng(n.latlng)].dist);t._mask.append(\"rect\").attr(\"x\",r).attr(\"y\",0).attr(\"width\",o-r).attr(\"height\",t._height()).attr(\"class\",\"gap\").attr(\"fill-opacity\",\"0.8\").attr(\"fill\",\"black\")}}))},_updateLegend:function(){var t=this;if(!1!==this.options.legend){var e,a=this._props.legendItems;for(var i in this._legend.selectAll(\"g\").remove(),a)e=T(L.extend({width:this._width(),height:this._height(),margins:this.options.margins},a[i])),this._legend.append(\"g\").call(e);var n=this._legend.selectAll(\".legend-item\"),r=n.nodes().length,o=Array(Math.floor(r/2)).fill(null).map((function(t,e){return 2*(e+1)-(1-Math.sign(r%2))})),s=o.slice().reverse().map((function(t){return-t}));r%2!=0&&s.push(0),o=s.concat(o);var l=this._axis.selectAll(\".x.axis.bottom\").nodes().length,c=30+2*l,h=30*r;r&&this.options.margins.right<h&&(this.options.margins.right=h,this.fire(\"margins_updated\")),l&&this.options.margins.bottom<c&&(this.options.margins.bottom=c,this.fire(\"margins_updated\")),n.each((function(e,a,i){var n=d3.select(i[a]),r=(n.select(\"rect\"),n.attr(\"data-name\")),s=t._paths[r],c=55*o[a],h=2*l;n.attr(\"transform\",\"translate(\"+c+\", \"+h+\")\"),r in t.options&&\"disabled\"==t.options[r]&&(s.classed(\"leaflet-hidden\",!0),n.select(\"text\").style(\"text-decoration-line\",\"line-through\"),n.select(\"rect\").style(\"fill-opacity\",\"0\")),t._mask&&s.attr(\"mask\",\"url(#\"+t._mask.attr(\"id\")+\")\")}))}},_updateScale:function(){if(this.zooming)return{x:this._x,y:this._y};for(var t in this._scales)this._scales[t].domain(this._domains[t](this._data)).range(this._ranges[t](this._width(),this._height()));return{x:this._x,y:this._y}},_width:function(){return this._chart._width},_height:function(){return this._chart._height},_findCoordsForY:function(t){var e,a=this._data,i=this._y.invert(t),n=a.reduce((function(t,e,a){return e.z>=i&&t.push(a),t}),[]),r=0;return n.reduce((function(t,i,o){return n[e=o+1]===n[o]+1&&e!==n.length||(t.push(n.slice(r,e).map((function(t){return a[t].latlng}))),r=e),t}),[])},_findIndexForXCoord:function(t){var e=this;return d3.bisector((function(t){return t[e.options.xAttr]})).left(this._data||[0,1],this._x.invert(t))},_findIndexForLatLng:function(t){var e=null,a=1/0;return this._data.forEach((function(i,n){var r=t.distanceTo(i.latlng);r<a&&(a=r,e=n)})),e},_resetDrag:function(){this._chart.panes.brush.select(\".selection\").attr(\"width\")&&(this._chart.panes.brush.call(this._brush.clear),this._hideDiagramIndicator(),this.fire(\"reset_drag\"))},_resetZoom:function(){this._zoom&&this._zoom.transform(this._chart.svg,d3.zoomIdentity)},_showDiagramIndicator:function(t,e){this._tooltip.attr(\"display\",null).call(I({xCoord:e,yCoord:this._y(t[this.options.yAttr]),height:this._height(),width:this._width(),labels:this._props.tooltipItems,item:t}))},_hideDiagramIndicator:function(){this._tooltip.attr(\"display\",\"none\")}});function j(t){return(j=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var R,J=L.Class.extend({initialize:function(t){switch(this.options=t,this.options.marker){case\"elevation-line\":break;case\"position-marker\":this._marker=L.marker([0,0],{icon:this.options.markerIcon,zIndexOffset:1e6,interactive:!1})}return this._labels={},this},addTo:function(t){switch(this._map=t,this.options.marker){case\"elevation-line\":this._container=d3.select(t.getPane(\"elevationPane\")).select(\"svg > g\").call(E({}));break;case\"position-marker\":this._marker.addTo(t,{pane:\"overlayPane\"})}return this},update:function(t){if(t?this._props=t:t=this._props,t)switch(t.options&&(this.options=t.options),this._map||this.addTo(t.map),this._latlng=t.item.latlng,this.options.marker){case\"elevation-line\":if(this._container){var e=this._map.latLngToLayerPoint(this._latlng);e=L.extend({},t.item,this._map._rotate?this._map.rotatedPointToMapPanePoint(e):e),this._container.classed(\"leaflet-hidden\",!1),this._container.call(E({theme:this.options.theme,xCoord:e.x,yCoord:e.y,length:e.y-this._height()/t.maxElevation*e.z,labels:this._labels,item:e}))}break;case\"position-marker\":c(this._marker.getElement(),\"leaflet-hidden\"),this._marker.setLatLng(this._latlng)}},remove:function(){switch(this._props=null,this.options.marker){case\"elevation-line\":this._container&&this._container.classed(\"leaflet-hidden\",!0);break;case\"position-marker\":l(this._marker.getElement(),\"leaflet-hidden\")}},getLatLng:function(){return this._latlng},_height:function(){var t=this.options;return t.height-t.margins.top-t.margins.bottom},_registerTooltip:function(t){this._labels[t.name]=t}}),Y=L.Class.extend({initialize:function(t,e){this.options=t,this.control=e,this.labels={},u(this._container=m(\"div\",\"elevation-summary \"+(t.summary?t.summary+\"-summary\":\"\")),\"max-width\",t.width?t.width+\"px\":\"\")},render:function(){var t=this;return function(e){return e.append((function(){return t._container}))}},reset:function(){this._container.innerHTML=\"\"},append:function(t,e,a){return this._container.innerHTML+='<span class=\"'.concat(t,'\"><span class=\"summarylabel\">').concat(e,'</span><span class=\"summaryvalue\">').concat(a,\"</span></span>\"),this},update:function(){var t=this;Object.keys(this.labels).sort((function(e,a){return t.labels[e].order-t.labels[a].order})).forEach((function(e){t.append(e,L._(t.labels[e].label),\"function\"!=typeof t.labels[e].value?t.labels[e].value:t.labels[e].value(t.control.track_info))}))},_registerSummary:function(t){for(var e in t){var a;t[e].order=null!==(a=t[e].order)&&void 0!==a?a:100,this.labels[e]=t[e]}}}),V={autofitBounds:!0,autohide:!L.Browser.mobile,autohideMarker:!0,almostover:!0,altitude:!0,collapsed:!1,detached:!0,distance:!0,distanceMarkers:{lazy:!0,distance:!0,direction:!0},decimalsX:2,decimalsY:0,dragging:!L.Browser.mobile,downloadLink:\"link\",elevationDiv:\"#elevation-div\",followMarker:!0,forceAxisBounds:!1,height:200,imperial:!1,interpolation:\"curveLinear\",lazyLoadJS:!0,legend:!0,margins:{top:30,right:30,bottom:30,left:40},marker:\"elevation-line\",markerIcon:L.divIcon({className:\"elevation-position-marker\",html:'<i class=\"elevation-position-icon\"></i>',iconSize:[32,32],iconAnchor:[16,16]}),position:\"topright\",polyline:{className:\"elevation-polyline\",color:\"#000\",opacity:.75,weight:5,lineCap:\"round\"},polylineSegments:{className:\"elevation-polyline-segments\",color:\"#F00\",interactive:!1},preferCanvas:!1,reverseCoords:!1,ruler:!0,skipNullZCoords:!1,theme:\"lightblue-theme\",summary:\"inline\",slope:!1,slopeDeltaMax:void 0,slopeRange:void 0,speed:!1,speedDeltaMax:void 0,speedRange:void 0,time:!1,timeFactor:3600,timeFormat:!1,timestamps:!1,width:600,waypoints:!0,wptIcons:{\"\":L.divIcon({className:\"elevation-waypoint-marker\",html:'<i class=\"elevation-waypoint-icon default\"></i>',iconSize:[30,30],iconAnchor:[8,30]})},wptLabels:!0,xAttr:\"dist\",xLabel:\"km\",xTicks:void 0,yAttr:\"z\",yAxisMax:void 0,yAxisMin:void 0,yLabel:\"m\",yTicks:void 0,zFollow:!1,zooming:!L.Browser.Mobile},W=L.Control.Elevation=L.Control.extend({includes:L.Evented?L.Evented.prototype:L.Mixin.Events,options:V,__mileFactor:.621371,__footFactor:3.28084,__D3:\"https://unpkg.com/d3@6.5.0/dist/d3.min.js\",__TOGEOJSON:\"https://unpkg.com/@tmcw/togeojson@4.5.0/dist/togeojson.umd.js\",__LGEOMUTIL:\"https://unpkg.com/leaflet-geometryutil@0.9.3/src/leaflet.geometryutil.js\",__LALMOSTOVER:\"https://unpkg.com/leaflet-almostover@1.0.1/src/leaflet.almostover.js\",__LDISTANCEM:\"https://unpkg.com/@raruto/leaflet-elevation@1.9.6/libs/leaflet-distance-marker.min.js\",addData:function(t,e){var a=this;this.lazyLoad(this.__D3).then((function(){void 0===e&&t.on&&(e=t),a._addData(t),a._addLayer(e),a._fireEvt(\"eledata_added\",{data:t,layer:e,track_info:a.track_info})}))},addTo:function(t){if(this.options.detached){var e=this._initElevationDiv();e.isConnected||g(t.getContainer(),e,\"afterend\"),f(e,this.onAdd(t))}else L.Control.prototype.addTo.call(this,t);return this},clear:function(){this._marker&&this._marker.remove(),this._chart&&this._clearChart(),this._layers&&this._clearLayers(),this._markers&&this._clearMarkers(),this._data=[],this.track_info={},this._fireEvt(\"eledata_clear\"),this._updateChart()},_clearChart:function(){var t=this;this._events&&this._events.elechart_updated&&this._events.elechart_updated.forEach((function(e){return t.off(\"elechart_updated\",e.fn,e.ctx)})),this._chart&&this._chart._container&&(this._chart._container.selectAll(\"g.point .point\").remove(),this._chart.clear())},_clearLayers:function(){this._layers&&this._layers.eachLayer&&(this._layers.eachLayer((function(t){return t.remove()})),this._layers.clearLayers())},_clearMarkers:function(){this._markers&&this._markers.eachLayer&&(this._markers.eachLayer((function(t){return t.remove()})),this._markers.clearLayers())},disableBrush:function(){this._chart._brushEnabled=!1,this._resetDrag()},enableBrush:function(){this._chart._brushEnabled=!0},disableZoom:function(){this._chart._zoomEnabled=!1,this._chart._resetZoom()},enableZoom:function(){this._chart._zoomEnabled=!0},fitBounds:function(t){t=t||this.getBounds(),this._map&&t.isValid()&&this._map.fitBounds(t)},getBounds:function(t){return t=t||this._data,L.latLngBounds(t.map((function(t){return t.latlng})))},getZFollow:function(){return this.options.zFollow},hide:function(){u(this._container,\"display\",\"none\")},initialize:function(t){this._data=[],this._layers=L.featureGroup(),this._markers=L.featureGroup(),this._markedSegments=L.polyline([]),this._chartEnabled=!0,this.track_info={},this.handlers=[],L.setOptions(this,t),this.options.followMarker&&(this._setMapView=L.Util.throttle(this._setMapView,300,this)),this.options.legend&&(this.options.margins.bottom+=30),this.options.theme&&(this.options.polylineSegments.className+=\" \"+this.options.theme),!0===this.options.wptIcons&&(this.options.wptIcons=V.wptIcons),!0===this.options.distanceMarkers&&(this.options.distanceMarkers=V.distanceMarkers),this._markedSegments.setStyle(this.options.polylineSegments),L.extend(A,this.options.colors||{}),this._fixCanvasPaths(),this._fixTooltipSize()},lazyLoad:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"\";if(!this.options.lazyLoadJS)return Promise.resolve();switch(t){case this.__D3:a=\"_d3LazyLoader\",e=\"object\"!==(\"undefined\"==typeof d3?\"undefined\":j(d3));break;case this.__TOGEOJSON:a=\"_togeojsonLazyLoader\",e=\"object\"!==(\"undefined\"==typeof toGeoJSON?\"undefined\":j(toGeoJSON));break;case this.__LGEOMUTIL:a=\"_geomutilLazyLoader\",e=\"object\"!==j(L.GeometryUtil);break;case this.__LALMOSTOVER:a=\"_almostoverLazyLoader\",e=\"function\"!=typeof L.Handler.AlmostOver;break;case this.__LDISTANCEM:a=\"_distanceMarkersLazyLoader\",e=\"function\"!=typeof L.DistanceMarkers}return L.Control.Elevation[a]=r(t,e,L.Control.Elevation[a])},load:function(t){var e=this;this._parseFromString(t).then((function(a){return a?e._loadLayer(a):e._loadFile(t)}))},onAdd:function(t){var e=this;this._map=t;var a=this._container=m(\"div\",\"elevation-control elevation \"+this.options.theme+\" \"+(this.options.detached?\"\":\"leaflet-control\"));return this.lazyLoad(this.__D3).then((function(){e._initButton(a),e._initChart(a),e._initSummary(a),e._initMarker(t),e._initLayer(t),t.on(\"zoom viewreset zoomanim\",e._hideMarker,e).on(\"resize\",e._resetView,e).on(\"resize\",e._resizeChart,e).on(\"rotate\",e._rotateMarker,e).on(\"mousedown\",e._resetDrag,e),x(t.getContainer(),\"mousewheel\",e._resetDrag,e),x(t.getContainer(),\"touchstart\",e._resetDrag,e),x(document,\"keydown\",e._keydownHandler,e),e.on(\"eledata_added eledata_loaded\",e._updateChart,e).on(\"eledata_added eledata_loaded\",e._updateSummary,e),e._updateChart(),e._updateSummary()})),a},onRemove:function(t){this._container=null,t.off(\"zoom viewreset zoomanim\",this._hideMarker,this).off(\"resize\",this._resetView,this).off(\"resize\",this._resizeChart,this).off(\"mousedown\",this._resetDrag,this),b(t.getContainer(),\"mousewheel\",this._resetDrag,this),b(t.getContainer(),\"touchstart\",this._resetDrag,this),b(document,\"keydown\",this._keydownHandler,this),this.off(\"eledata_added eledata_loaded\",this._updateChart,this).off(\"eledata_added eledata_loaded\",this._updateSummary,this)},redraw:function(){this._resizeChart()},setZFollow:function(t){this.options.zFollow=t},show:function(){u(this._container,\"display\",\"block\")},_addData:function(t){var e=this;if(t){var a=t.geometry;if(a)switch(a.type){case\"LineString\":this._addGeoJSONData(a.coordinates);break;case\"MultiLineString\":M(a.coordinates,(function(t){return e._addGeoJSONData(t)}));break;default:console.warn(\"Unsopperted GeoJSON feature geometry type:\"+a.type)}\"FeatureCollection\"===t.type&&M(t.features,(function(t){return e._addData(t)})),t._latlngs&&this._addGeoJSONData(t._latlngs,t.feature&&t.feature.properties)}},_addGeoJSONData:function(t,e){var a=this;t.forEach((function(t,i){var n,r,o,s,l;t.meta=null!==(n=t.meta)&&void 0!==n?n:{time:null,ele:null,hr:null,cad:null,atemp:null};var c=e&&e.coordinateProperties||e;a.fire(\"elepoint_init\",{point:t,props:c,id:i}),a._addPoint(null!==(r=t.lat)&&void 0!==r?r:t[1],null!==(o=t.lng)&&void 0!==o?o:t[0],null!==(s=null!==(l=t.alt)&&void 0!==l?l:t.meta.ele)&&void 0!==s?s:t[2]),a.fire(\"elepoint_added\",{point:t,index:a._data.length-1})})),this.fire(\"eletrack_added\",{coords:t,index:this._data.length-1})},_addPoint:function(t,e,a){if(this.options.reverseCoords){var i=[e,t];t=i[0],e=i[1]}this._data.push({x:t,y:e,z:a,latlng:L.latLng(t,e,a)}),this.fire(\"eledata_updated\",{index:this._data.length-1})},_addLayer:function(t){t&&this._layers.addLayer(t),t&&this.options.distanceMarkers&&this.options.distanceMarkers.lazy&&t.on(\"add remove\",(function(t){return L.DistanceMarkers&&t.target instanceof L.Polyline&&t.target[t.type+\"DistanceMarkers\"]()}))},_addMarker:function(t){t&&this._markers.addLayer(t)},_initAlmostOverHandler:function(t,e){var a=this;t&&this.options.almostOver&&this.lazyLoad(this.__LGEOMUTIL).then((function(){return a.lazyLoad(a.__LALMOSTOVER)})).then((function(){t.addHandler(\"almostOver\",L.Handler.AlmostOver),L.GeometryUtil&&t.almostOver&&t.almostOver.enabled()&&(t.almostOver.addLayer(e),t.on(\"almost:move\",(function(t){return a._mousemoveLayerHandler(t)})).on(\"almost:out\",(function(t){return a._mouseoutHandler(t)})))}))},_initDistanceMarkers:function(t,e){var a=this;t&&(this.options.distanceMarkers?this.lazyLoad(this.__LGEOMUTIL).then((function(){return a.lazyLoad(a.__LDISTANCEM)})).then((function(){return a.options.polyline&&e.addTo(t)})):this.options.polyline&&e.addTo(t))},_initElevationDiv:function(){var t=y(this.options.elevationDiv);return t||(this.options.elevationDiv=\"#elevation-div_\"+w(),t=m(\"div\",\"leaflet-control elevation elevation-div\",{id:this.options.elevationDiv.substr(1)})),this.options.detached&&d(t,\"leaflet-control\",\"elevation-detached\"),this.eleDiv=t},_initMapIntegrations:function(t,e){var a=t._map;t._map?(a.once(\"layeradd\",(function(a){return t.options.autofitBounds&&t.fitBounds(e.getBounds())})),L.Browser.mobile?t.options.polyline&&e.addTo(a):(t._initAlmostOverHandler(a,e),t._initDistanceMarkers(a,e))):console.warn(\"Undefined elevation map object\")},_collapse:function(){d(this._container,\"elevation-expanded\",\"elevation-collapsed\")},_expand:function(){d(this._container,\"elevation-collapsed\",\"elevation-expanded\")},_fixCanvasPaths:function(){var t=L.Canvas.prototype._fillStroke,e=this;L.Canvas.include({_fillStroke:function(a,i){if(e._layers.hasLayer(i)){var n=e.options.theme.replace(\"-theme\",\"\"),r=A[n]||{},o=i.options;if(o.color=r.line||r.area||n,o.stroke=!!o.color,t.call(this,a,i),o.stroke&&0!==o.weight){var s=a.globalCompositeOperation||\"source-over\";a.globalCompositeOperation=\"destination-over\",a.strokeStyle=r.outline||\"#FFF\",a.lineWidth=1.75*o.weight,a.stroke(),a.globalCompositeOperation=s}}else t.call(this,a,i)}})},_fixTooltipSize:function(){var t=this;this.on(\"elechart_init\",(function(){return t.once(\"elechart_change elechart_hover\",(function(e){t._chartEnabled&&(t._chart._showDiagramIndicator(e.data,e.xCoord),t._chart._showDiagramIndicator(e.data,e.xCoord)),t._updateMarker(e.data)}))}))},_findItemForLatLng:function(t){return this._data[this._chart._findIndexForLatLng(t)]},_findItemForX:function(t){return this._data[this._chart._findIndexForXCoord(t)]},_fireEvt:function(t,e,a){this.fire&&this.fire(t,e,a),this._map&&this._map.fire(t,e,a)},_height:function(){if(this._chart)return this._chart._height();var t=this.options;return t.height-t.margins.top-t.margins.bottom},_hideMarker:function(){this.options.autohideMarker&&this._marker.remove()},_initChart:function(t){var e=this.options;if(e.xTicks=this._xTicks(),e.yTicks=this._yTicks(),e.detached){var a=this.eleDiv,i=a.offsetWidth,n=a.offsetHeight;i>0&&(e.width=i),n>20&&(e.height=n-20)}else{var r=this._map.getContainer().clientWidth;e._maxWidth=e._maxWidth>e.width?e._maxWidth:e.width,this._container.style.maxWidth=e._maxWidth+\"px\",e._maxWidth>r&&(e.width=r-30)}var o=this._chart=new U(e,this);this._x=this._chart._x,this._y=this._chart._y,d3.select(t).call(o.render()),o.on(\"reset_drag\",this._hideMarker,this).on(\"mouse_enter\",this._mouseenterHandler,this).on(\"dragged\",this._dragendHandler,this).on(\"mouse_move\",this._mousemoveHandler,this).on(\"mouse_out\",this._mouseoutHandler,this).on(\"ruler_filter\",this._rulerFilterHandler,this).on(\"zoom\",this._updateChart,this).on(\"elepath_toggle\",this._toggleChartHandler,this).on(\"margins_updated\",this._resizeChart,this),this.fire(\"elechart_axis\"),this.options.legend&&this.fire(\"elechart_legend\"),this.fire(\"elechart_init\")},_initLayer:function(){var t=this;this._layers.on(\"layeradd layerremove\",(function(e){var a=e.layer;h(a.getElement&&a.getElement(),t.options.polyline.className+\" \"+t.options.theme,\"layeradd\"==e.type),p(a,\"mousemove\",t._mousemoveLayerHandler.bind(t),\"layeradd\"==e.type),p(a,\"mouseout\",t._mouseoutHandler.bind(t),\"layeradd\"==e.type)}))},_initMarker:function(t){var e=t.getPane(\"elevationPane\");e||((e=this._pane=t.createPane(\"elevationPane\",t.getPane(\"norotatePane\")||t.getPane(\"mapPane\"))).style.zIndex=625,e.style.pointerEvents=\"none\"),this._renderer&&this._renderer.remove(),this._renderer=L.svg({pane:\"elevationPane\"}).addTo(this._map),this._marker=new J(this.options),this.fire(\"elechart_marker\")},_initButton:function(t){if(!L.Browser.mobile&&this.options.detached||L.DomEvent.disableClickPropagation(t).disableScrollPropagation(t),!this.options.detached){var e=this._button=m(\"a\",\"elevation-toggle elevation-toggle-icon\"+(this.options.autohide?\"\":\" close-button\"),{href:\"#\",title:L._(\"Elevation\")},t);this.options.collapsed&&(this._collapse(),this.options.autohide?(x(t,\"mouseover\",this._expand,this),x(t,\"mouseout\",this._collapse,this)):(x(e,\"click\",L.DomEvent.stop),x(e,\"click\",this._toggle,this)),x(e,\"focus\",this._toggle,this),this._map.on(\"click\",this._collapse,this))}},_initSummary:function(t){this._summary=new Y({summary:this.options.summary},this),d3.select(t).call(this._summary.render())},_keydownHandler:function(t){this.options.detached||\"Escape\"!==t.key||this._collapse()},_loadFile:function(t){var e=this;fetch(t).then((function(t){return t.text()})).then((function(a){e._downloadURL=t,e._parseFromString(a).then((function(t){return t&&e._loadLayer(t)}))})).catch((function(t){return console.warn(t)}))},_loadLayer:function(t){var e=this,a=e.options,i=a.wptIcons,n=a.wptLabels,r=L.geoJson(t,{distanceMarkers:e.options.distanceMarkers,style:function(t){var a=L.extend({},e.options.polyline);return e.options.theme&&(a.className+=\" \"+e.options.theme),a},pointToLayer:function(t,a){var r,o,s;if(e.options.waypoints){var l=t.properties,c=null!==(r=l.desc)&&void 0!==r?r:\"\",h=null!==(o=l.name)&&void 0!==o?o:\"\",d=(null!==(s=l.sym)&&void 0!==s?s:h).replace(\" \",\"-\").replace('\"',\"\").replace(\"'\",\"\").toLowerCase();if([!0,\"dots\"].includes(e.options.waypoints)&&e._registerCheckPoint({latlng:a,label:[!0,\"dots\"].includes(n)?h:\"\"}),[!0,\"markers\"].includes(e.options.waypoints)&&0!=i){i.hasOwnProperty(d)||(i[d]=L.divIcon(L.extend({},i[\"\"].options,{html:'<i class=\"elevation-waypoint-icon '+d+'\"></i>'})));var u=L.marker(a,{icon:i[d]});if([!0,\"markers\"].includes(n)&&(h||c)){var _=decodeURI(\"<b>\"+h+\"</b>\"+(c.length>0?\"<br>\"+c:\"\"));u.bindPopup(_,{className:\"elevation-popup\",keepInView:!0}).openPopup(),u.bindTooltip(_,{className:\"elevation-tooltip\",direction:\"auto\",sticky:!0,opacity:1}).openTooltip()}return e._addMarker(u),e.fire(\"waypoint_added\",{point:u,element:a,properties:l}),u}}},onEachFeature:function(a,i){a.geometry&&\"Point\"!=a.geometry.type&&(e.addData(i),e.track_info=L.extend({},e.track_info,{name:t.name}))}});return e.lazyLoad(e.__D3).then((function(){e._initMapIntegrations(e,r),e._fireEvt(\"eledata_loaded\",{data:t,layer:r,name:e.track_info.name,track_info:e.track_info})})),r},_dragendHandler:function(t){this._hideMarker(),this.fitBounds(L.latLngBounds([t.dragstart.latlng,t.dragend.latlng])),this.fire(\"elechart_dragged\")},_mouseenterHandler:function(t){this.fire(\"elechart_enter\")},_mousemoveHandler:function(t){if(this._data.length&&this._chartEnabled){var e=this._findItemForX(t.xCoord);if(e){var a=t.xCoord;this._chartEnabled&&this._chart._showDiagramIndicator(e,a),this._updateMarker(e),this._setMapView(e),this._map&&l(this._map.getContainer(),\"elechart-hover\"),this.fire(\"elechart_change\",{data:e,xCoord:a}),this.fire(\"elechart_hover\",{data:e,xCoord:a})}}},_mousemoveLayerHandler:function(t){if(this._data.length){var e=this._findItemForLatLng(t.latlng);if(e){var a=e.xDiagCoord;this._chartEnabled&&this._chart._showDiagramIndicator(e,a),this._updateMarker(e),this.fire(\"elechart_change\",{data:e,xCoord:a})}}},_mouseoutHandler:function(){this.options.detached||(this._hideMarker(),this._chart._hideDiagramIndicator()),this._map&&c(this._map.getContainer(),\"elechart-hover\"),this.fire(\"elechart_leave\")},_parseFromGeoJSONString:function(t){try{return JSON.parse(t)}catch(t){}},_parseFromString:function(t){var e=this;return new Promise((function(a){return e.lazyLoad(e.__TOGEOJSON).then((function(){var i;try{i=e._parseFromXMLString(t.trim())}catch(a){i=e._parseFromGeoJSONString(t.toString())}i&&(i=e._prepareMultiLineStrings(i),i=e._prepareAdditionalProperties(i)),a(i)}))}))},_parseFromXMLString:function(t){var e;if(0!=t.indexOf(\"<\"))throw\"Invalid XML\";var a=(new DOMParser).parseFromString(t,\"text/xml\"),i=a.documentElement.tagName.toLowerCase(),n=a.getElementsByTagName(\"name\");if(a.getElementsByTagName(\"parsererror\").length)throw\"Invalid XML\";i in toGeoJSON||(i=\"TrainingCenterDatabase\"==a.documentElement.tagName?\"tcx\":\"gpx\");var r=toGeoJSON[i](a);return r.name=n.length>0?(null!==(e=Array.from(n).find((function(t){return\"trk\"==t.parentElement.tagName})))&&void 0!==e?e:n[0]).textContent:\"\",r},_prepareAdditionalProperties:function(t){return!t.name&&this._downloadURL&&(t.name=this._downloadURL.split(\"/\").pop().split(\"#\")[0].split(\"?\")[0]),t},_prepareMultiLineStrings:function(t){return t.features.forEach((function(e){\"MultiLineString\"==e.geometry.type&&e.geometry.coordinates.forEach((function(a){t.features.push({geometry:{type:\"LineString\",coordinates:a},properties:e.properties,type:\"Feature\"})}))})),t.features.filter((function(t){return\"MultiLineString\"!=t.geometry.type}))},_registerAreaPath:function(t){var e=this;this.on(\"elechart_init\",(function(){return e._chart._registerAreaPath(t)}))},_registerAxisGrid:function(t){var e=this;this.on(\"elechart_axis\",(function(){return e._chart._registerAxisGrid(t)}))},_registerAxisScale:function(t){var e=this;this.on(\"elechart_axis\",(function(){return e._chart._registerAxisScale(t)}))},_registerCheckPoint:function(t){var e=this;this.on(\"elechart_updated\",(function(){return e._chart._registerCheckPoint(t)}))},_registerDataAttribute:function(t){var e=this,a=null;t.init&&this.on(\"elepoint_init\",(function(a){return t.init.call(e,a)})),this.on(\"elepoint_added\",(function(i){if(!1===t.skipNull){var n=e._data[i.index][t.name];if(i.index>0){var r=e._data[i.index-1][t.name];if(isNaN(r)){if(isNaN(a)||isNaN(n)?isNaN(a)?isNaN(n)||(r=n):r=a:r=(a+n)/2,!isNaN(r))return e._data.splice(i.index-1,1);e._data[i.index-1][t.name]=r}}isNaN(n)||(a=n)}e._data[i.index][t.name]=t.fetch.call(e,i.index,i.point),t.update&&(e._data[i.index][t.name]=t.update.call(e,e._data[i.index][t.name],i.index,i.point))}))},_registerTooltip:function(t){var e=this;if(t.chart){var a=L.extend({},t,{value:t.chart});this.on(\"elechart_init\",(function(){return e._chart._registerTooltip(a)}))}if(t.marker){var i=L.extend({},t,{value:t.marker});this.on(\"elechart_marker\",(function(){return e._marker._registerTooltip(i)}))}},_registerSummary:function(t){var e=this;this.on(\"elechart_summary\",(function(){return e._summary._registerSummary(t)}))},_resetDrag:function(){this._chart._resetDrag(),this._hideMarker()},_resetView:function(){this._map&&this._map._isFullscreen||(this._resetDrag(),this._hideMarker(),this.options.autofitBounds&&this.fitBounds())},_resizeChart:function(){if(this._container&&\"none\"!=u(this._container,\"display\")){var t,e=this.options;if(e.detached)t=(this.eleDiv||this._container).offsetWidth;else{var a=this._map.getContainer().clientWidth;t=e._maxWidth>a?a-30:e._maxWidth}if(t){var i=this._chart;e.width=t,i&&i._chart&&(i._chart._resize(e),e.xTicks=this._xTicks(),e.yTicks=this._yTicks(),this._updateChart())}this._updateMapSegments()}},_rulerFilterHandler:function(t){this._updateMapSegments(t.coords)},_toggle:function(){k(this._container,\"elevation-expanded\")?this._collapse():this._expand()},_setMapView:function(t){if(this.options.followMarker&&this._map){var e=this._map.getZoom(),a=this.options.zFollow;\"number\"==typeof a?this._map.setView(t.latlng,e<a?a:e,{animate:!0,duration:.25}):this._map.getBounds().contains(t.latlng)||this._map.setView(t.latlng,e,{animate:!0,duration:.25})}},_toggleChartHandler:function(t){var e=this,a=t.name,i=t.enabled;this._chartEnabled=this._chart._hasActiveLayers(),this._layers.eachLayer((function(t){return h(t.getElement&&t.getElement(),e.options.polyline.className+\" \"+e.options.theme,e._chartEnabled)})),this.options[a]=i||\"disabled\"!=this.options[a]?\"disabled\":\"enabled\",this._chartEnabled||(this._chart._hideDiagramIndicator(),this._marker.remove())},_updateChart:function(){\n/*!this._data.length ||*/\nthis._chart&&this._container&&(this.fire(\"elechart_axis\"),this.fire(\"elechart_area\"),this._chart.update({data:this._data,options:this.options}),this._x=this._chart._x,this._y=this._chart._y,this.fire(\"elechart_updated\"))},_updateMarker:function(t){this._marker&&this._marker.update({map:this._map,item:t,maxElevation:this.track_info.elevation_max||0,options:this.options})},_rotateMarker:function(){this._marker&&this._marker.update()},_updateMapSegments:function(t){this._markedSegments.setLatLngs(t||[]),t&&this._map&&!this._map.hasLayer(this._markedSegments)&&this._markedSegments.addTo(this._map)},_updateSummary:function(){var t=this;this._summary.reset(),this.options.summary&&(this.fire(\"elechart_summary\"),this._summary.update()),this.options.downloadLink&&this._downloadURL&&(this._summary._container.innerHTML+='<span class=\"download\"><a href=\"#\">'+L._(\"Download\")+\"</a></span>\",y(\".download a\",this._summary._container).onclick=function(e){e.preventDefault();var a={downloadLink:t.options.downloadLink,confirm:n.bind(t,t._downloadURL)};\"modal\"==t.options.downloadLink&&\"function\"==typeof CustomEvent?document.dispatchEvent(new CustomEvent(\"eletrack_download\",{detail:a})):\"link\"!=t.options.downloadLink&&!0!==t.options.downloadLink||a.confirm(),t.fire(\"eletrack_download\",a)})},_width:function(){if(this._chart)return this._chart._width();var t=this.options;return t.width-t.margins.left-t.margins.right},_xTicks:function(){return this.__xTicks&&(this.__xTicks=this.options.xTicks),this.__xTicks||Math.round(this._width()/75)},_yTicks:function(){return this.__yTicks&&(this.__yTicks=this.options.yTicks),this.__yTicks||Math.round(this._height()/30)}});W.addInitHook((function(){var t=this,e=this.options,a={};e.imperial?(e.distanceFactor=this.__mileFactor,a.label=\"mi\"):(e.distanceFactor=e.distanceFactor||1,a.label=e.xLabel),this._registerDataAttribute({name:\"dist\",init:function(){},fetch:function(a){var i=t._data[a].latlng.distanceTo(t._data[a>0?a-1:a].latlng)*e.distanceFactor;return Math.round(i/1e3*1e5)/1e5},update:function(e){return t.track_info.distance=t.track_info.distance||0,t.track_info.distance+=e,t.track_info.distance}}),\"summary\"!=this.options.distance&&this._registerAxisScale({axis:\"x\",position:\"bottom\",scale:\"x\",label:a.label,labelY:25,labelX:function(){return t._width()+6},name:\"distance\"}),this._registerAxisGrid({axis:\"x\",position:\"bottom\",scale:\"x\"}),this._registerTooltip({name:\"x\",chart:function(t){return L._(\"x: \")+d3.format(\".\"+e.decimalsX+\"f\")(t[e.xAttr])+\" \"+a.label},order:20}),this._registerSummary({totlen:{label:\"Total Length: \",value:function(t){return(t.distance||0).toFixed(2)+\"&nbsp;\"+a.label},order:10}})})),W.addInitHook((function(){var t=this,e=this.options,a={};a.label=e.timeLabel||\"t\",e.timeFactor=e.timeFactor||3600,this._timeAVGSpeed=(e.timeAVGSpeed||3.6)*(e.speedFactor||1),e.timeFormat?\"time\"==e.timeFormat?e.timeFormat=function(t){return new Date(t).toLocaleTimeString()}:\"date\"==e.timeFormat&&(e.timeFormat=function(t){return new Date(t).toLocaleDateString()}):e.timeFormat=function(t){return new Date(t).toLocaleString().replaceAll(\"/\",\"-\").replaceAll(\",\",\" \")},e.xTimeFormat=e.xTimeFormat||function(t){return i(t).split(\"'\")[0]},this._registerDataAttribute({name:\"time\",init:function(t){var e=t.point,a=t.props,i=t.id;a&&(\"coordTimes\"in a?e.meta.time=new Date(Date.parse(a.coordTimes[i])):\"times\"in a?e.meta.time=new Date(Date.parse(a.times[i])):\"time\"in a&&(e.meta.time=new Date(Date.parse(\"object\"===j(a.time)?a.time[i]:a.time))))},fetch:function(t,e){if(!e.meta||!e.meta.time)if(e.meta=e.meta||{},t>0){var a=this._data[t].dist-this._data[t-1].dist,i=this._data[t-1].time.getTime(),n=a/this._timeAVGSpeed*this.options.timeFactor*1e3;e.meta.time=new Date(i+n)}else e.meta.time=new Date(Date.now());var r=e.meta.time;return r.getTime()-60*r.getTimezoneOffset()*1e3==0&&(r=0),r},update:function(t,e){return this.track_info.time=(this.track_info.time||0)+Math.abs(this._data[e].time-this._data[e>0?e-1:e].time),this._data[e].duration=this.track_info.time,t}}),e.time&&\"summary\"!=e.time&&!L.Browser.mobile&&this._registerAxisScale({axis:\"x\",position:\"top\",scale:{attr:\"duration\",min:0},label:a.label,labelY:-10,labelX:function(){return t._width()},name:\"time\",tickFormat:function(t){return 0==t?\"\":e.xTimeFormat(t)},onAxisMount:function(e){e.select(\".domain\").remove(),e.selectAll(\"text\").attr(\"opacity\",.65).style(\"font-family\",\"Monospace\").style(\"font-size\",\"110%\"),e.selectAll(\".tick line\").attr(\"y2\",t._height()).attr(\"stroke-dasharray\",2).attr(\"opacity\",.75)}}),this.options.timestamps&&this._registerTooltip({name:\"date\",chart:function(e){return L._(\"t: \")+t.options.timeFormat(e.time)},order:20}),this.options.time&&(this._registerTooltip({name:\"time\",chart:function(t){return L._(\"T: \")+i(t.duration||0)},order:20}),this._registerSummary({tottime:{label:\"Total Time: \",value:function(t){return i(t.time||0)},order:20}}))})),W.addInitHook((function(){var t=this,e=this.options,a={},i=e.theme.replace(\"-theme\",\"\"),n=A[i]||{};e.imperial?(e.altitudeFactor=this.__footFactor,a.label=\"ft\"):(e.altitudeFactor=e.heightFactor||e.altitudeFactor||1,a.label=e.yLabel),this._registerDataAttribute({name:\"z\",skipNull:this.options.skipNullZCoords,init:function(t){var e=t.point;\"alt\"in e&&(e.meta.ele=e.alt)},fetch:function(a){return t._data[a].z*e.altitudeFactor},update:function(e,a){t.track_info.elevation_max=t.track_info.elevation_max||-1/0,t.track_info.elevation_min=t.track_info.elevation_max||1/0,t.track_info.elevation_avg=t.track_info.elevation_avg||0;var i=t._data,n=t.track_info;if(t.options.altitudeDeltaMax){var r=e-i[a>0?a-1:a].z,o=t.options.altitudeDeltaMax;Math.abs(r)>o&&(e=i[a-1].z+o*Math.sign(r))}return(e=s(e,t.options.altitudeRange))>n.elevation_max&&(n.elevation_max=e),e<n.elevation_min&&(n.elevation_min=e),n.elevation_avg=(e+n.elevation_avg)/2,e}}),this._registerAxisScale({axis:\"y\",position:\"left\",scale:\"y\",label:a.label,labelX:-3,labelY:-8,name:\"altitude\",visbile:\"summary\"!=this.options.altitude}),this._registerAxisGrid({axis:\"y\",position:\"left\",scale:\"y\"}),this._registerAreaPath({name:\"altitude\",label:\"Altitude\",scaleX:\"distance\",scaleY:\"altitude\",color:n.area||i,strokeColor:e.detached?n.stroke:\"#000\",strokeOpacity:\"1\",fillOpacity:e.detached?n.alpha||\"0.8\":1,preferCanvas:e.preferCanvas,visbile:\"summary\"!=this.options.altitude}),this._registerTooltip({name:\"y\",chart:function(t){return L._(\"y: \")+d3.format(\".\"+e.decimalsY+\"f\")(t[e.yAttr])+\" \"+a.label},marker:function(t){return d3.format(\".\"+e.decimalsY+\"f\")(t[e.yAttr])+\" \"+a.label},order:10}),this._registerSummary({maxele:{label:\"Max Elevation: \",value:function(t){return(t.elevation_max||0).toFixed(2)+\"&nbsp;\"+a.label},order:30},minele:{label:\"Min Elevation: \",value:function(t){return(t.elevation_min||0).toFixed(2)+\"&nbsp;\"+a.label},order:30},avgele:{label:\"Avg Elevation: \",value:function(t){return(t.elevation_avg||0).toFixed(2)+\"&nbsp;\"+a.label},order:30}})})),W.addInitHook((function(){var t=this;if(this.options.slope){var e=this.options,a={};a.label=e.slopeLabel||\"%\",this._registerDataAttribute({name:\"slope\",fetch:function(e){var a=t._data,i=1e3*(a[e].dist-a[e>0?e-1:e].dist),n=a[e].z-a[e>0?e-1:e].z;return isNaN(n)||0===i?0:n/i*100},update:function(e,a){t.track_info.ascent=t.track_info.ascent||0,t.track_info.descent=t.track_info.descent||0,t.track_info.slope_max=t.track_info.slope_max||-1/0,t.track_info.slope_min=t.track_info.slope_min||1/0,t.track_info.slope_avg=t.track_info.slope_avg||0;var i=t.track_info,n=t._data,r=n[a].z-n[a>0?a-1:a].z;if(t.options.slopeDeltaMax){var o=slop-n[a>0?a-1:a].slope,l=t.options.slopeDeltaMax;Math.abs(o)>l&&(e=n[a-1].slope+l*Math.sign(o))}return e=s(e,t.options.slopeRange),r>0?t.track_info.ascent+=r:r<0&&(t.track_info.descent-=r),e>i.slope_max&&(i.slope_max=e),e<i.slope_min&&(i.slope_min=e),i.slope_avg=(e+i.slope_avg)/2,L.Util.formatNum(e,2)}}),this._registerAxisScale({axis:\"y\",position:\"right\",scale:{min:-1,max:1},tickPadding:16,label:a.label,labelX:25,labelY:-8,name:\"slope\",visbile:\"summary\"!=this.options.slope}),this._registerAreaPath({name:\"slope\",label:\"Slope\",yAttr:\"slope\",scaleX:\"distance\",scaleY:\"slope\",color:\"#F00\",strokeColor:\"#000\",strokeOpacity:\"0.5\",fillOpacity:\"0.25\",visbile:\"summary\"!=this.options.slope}),this._registerTooltip({name:\"slope\",chart:function(t){return L._(\"m: \")+t.slope+a.label},marker:function(t){return Math.round(t.slope)+a.label},order:40}),this._registerSummary({ascent:{label:\"Total Ascent: \",value:function(e){return Math.round(e.ascent||0)+\"&nbsp;\"+(t.options.imperial?\"ft\":\"m\")},order:40},descent:{label:\"Total Descent: \",value:function(e){return Math.round(e.descent||0)+\"&nbsp;\"+(t.options.imperial?\"ft\":\"m\")},order:40},minslope:{label:\"Min Slope: \",value:function(t){return Math.round(t.slope_min||0)+\"&nbsp;\"+a.label},order:40},maxslope:{label:\"Max Slope: \",value:function(t){return Math.round(t.slope_max||0)+\"&nbsp;\"+a.label},order:40},avgslope:{label:\"Avg Slope: \",value:function(t){return Math.round(t.slope_avg||0)+\"&nbsp;\"+a.label},order:40}})}})),W.addInitHook((function(){var t=this;if(this.options.speed||this.options.acceleration){var e=this.options,a={};a.label=e.speedLabel||L._(e.imperial?\"mph\":\"km/h\"),e.speedFactor=e.speedFactor||1,this._registerDataAttribute({name:\"speed\",init:function(){},fetch:function(a){var i=t._data,n=1e3*(i[a].dist-i[a>0?a-1:a].dist),r=i[a].time-i[a>0?a-1:a].time;return r>0?Math.abs(n/r*e.timeFactor)*e.speedFactor:0},update:function(e,a){t.track_info.speed_max=t.track_info.speed_max||-1/0,t.track_info.speed_min=t.track_info.speed_min||1/0,t.track_info.speed_avg=t.track_info.speed_avg||0;var i=t._data,n=t.track_info;if(t.options.speedDeltaMax){var r=e-i[a>0?a-1:a].speed,o=t.options.speedDeltaMax;Math.abs(r)>o&&(e=i[a-1].speed+o*Math.sign(r))}return(e=s(e,t.options.speedRange))>n.speed_max&&(n.speed_max=e),e<n.speed_min&&(n.speed_min=e),n.speed_avg=(e+n.speed_avg)/2,L.Util.formatNum(e,2)}}),this.options.speed&&\"summary\"!=this.options.speed&&(this._registerAxisScale({axis:\"y\",position:\"right\",scale:{min:0,max:1},tickPadding:16,label:a.label,labelX:25,labelY:-8,name:\"speed\"}),this._registerAreaPath({name:\"speed\",label:\"Speed\",yAttr:\"speed\",scaleX:\"distance\",scaleY:\"speed\",color:\"#03ffff\",strokeColor:\"#000\",strokeOpacity:\"0.5\",fillOpacity:\"0.25\"})),this.options.speed&&(this._registerTooltip({name:\"speed\",chart:function(t){return L._(\"v: \")+t.speed+\" \"+a.label},marker:function(t){return Math.round(t.speed)+\" \"+a.label},order:50}),this._registerSummary({minspeed:{label:\"Min Speed: \",value:function(t){return Math.round(t.speed_min||0)+\"&nbsp;\"+a.label},order:50},maxspeed:{label:\"Max Speed: \",value:function(t){return Math.round(t.speed_max||0)+\"&nbsp;\"+a.label},order:50},avgspeed:{label:\"Avg Speed: \",value:function(t){return Math.round(t.speed_avg||0)+\"&nbsp;\"+a.label},order:50}}))}})),W.addInitHook((function(){var t=this;if(this.options.acceleration){var e=this.options,a={};a.label=e.accelerationLabel||L._(e.imperial?\"ft/s²\":\"m/s²\"),e.accelerationFactor=e.accelerationFactor||1,this._registerDataAttribute({name:\"acceleration\",init:function(){},fetch:function(a){var i=t._data,n=(i[a].speed-i[a>0?a-1:a].speed)*(1e3/e.timeFactor),r=(i[a].time-i[a>0?a-1:a].time)/1e3;return r>0?Math.abs(n/r)*e.accelerationFactor:0},update:function(e,a){t.track_info.acceleration_max=t.track_info.acceleration_max||-1/0,t.track_info.acceleration_min=t.track_info.acceleration_min||1/0,t.track_info.acceleration_avg=t.track_info.acceleration_avg||0;var i=t._data,n=t.track_info;if(t.options.accelerationDeltaMax){var r=e-i[a>0?a-1:a].acceleration,o=t.options.accelerationDeltaMax;Math.abs(r)>o&&(e=i[a-1].acceleration+o*Math.sign(r))}return(e=s(e,t.options.accelerationRange))>n.acceleration_max&&(n.acceleration_max=e),e<n.acceleration_min&&(n.acceleration_min=e),n.acceleration_avg=(e+n.acceleration_avg)/2,L.Util.formatNum(e,2)}}),\"summary\"!=this.options.acceleration&&(this._registerAxisScale({axis:\"y\",position:\"right\",scale:{min:0,max:1},tickPadding:16,label:a.label,labelX:25,labelY:-8,name:\"acceleration\"}),this._registerAreaPath({name:\"acceleration\",label:\"Acceleration\",yAttr:\"acceleration\",scaleX:\"distance\",scaleY:\"acceleration\",color:\"#050402\",strokeColor:\"#000\",strokeOpacity:\"0.5\",fillOpacity:\"0.25\"})),this._registerTooltip({name:\"acceleration\",chart:function(t){return L._(\"a: \")+t.acceleration+\" \"+a.label},marker:function(t){return Math.round(t.acceleration)+\" \"+a.label},order:60}),this._registerSummary({minacceleration:{label:\"Min Acceleration: \",value:function(t){return Math.round(t.acceleration_min||0)+\"&nbsp;\"+a.label},order:60},maxacceleration:{label:\"Max Acceleration: \",value:function(t){return Math.round(t.acceleration_max||0)+\"&nbsp;\"+a.label},order:60},avgacceleration:{label:\"Avg Acceleration: \",value:function(t){return Math.round(t.acceleration_avg||0)+\"&nbsp;\"+a.label},order:60}})}})),W.Utils=C,W.Components=X,W.Chart=U,R=L.i18n.bind({}),L.i18n=L._=function(t,e){return L.locale&&L.locales[L.locale]&&\"\"==L.locales[L.locale][t]&&(L.locales[L.locale][t]=\"​\"),R.call(null,t,e)},W.addInitHook((function(){this.enableDragging=this.enableBrush,this.disableDragging=this.disableBrush,this.loadChart=this.addTo,this.loadData=this.load,this.loadGPX=this.load,this.loadGeoJSON=this.load,this.loadXML=this.load,this.loadFile=this.load,this._addGPXData=this._addGeoJSONData,this._registerFocusLabel=this._registerTooltip})),L.control.elevation=function(t){return new W(t)}}));\n//# sourceMappingURL=leaflet-elevation.min.js.map\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(((e=e||self).Leaflet=e.Leaflet||{},e.Leaflet.markercluster={}))}(this,function(e){\"use strict\";var t=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnEveryZoom:!1,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyShapePositions:null,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:\"#222\",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this.fire(\"layeradd\",{layer:e}),this;if(!this._map)return this._needsClustering.push(e),this.fire(\"layeradd\",{layer:e}),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this.fire(\"layeradd\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._zoom;if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):(e.getLatLng?this._map?e.__parent&&(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire(\"layerremove\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow())):(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire(\"layerremove\",{layer:e})):(this._nonPointGroup.removeLayer(e),this.fire(\"layerremove\",{layer:e})),this)},addLayers:function(n,s){if(!L.Util.isArray(n))return this.addLayer(n);var o,a=this._featureGroup,h=this._nonPointGroup,l=this.options.chunkedLoading,u=this.options.chunkInterval,_=this.options.chunkProgress,d=n.length,p=0,c=!0;if(this._map){var f=(new Date).getTime(),m=L.bind(function(){var e=(new Date).getTime();for(this._map&&this._unspiderfy&&this._unspiderfy();p<d;p++){if(l&&p%200==0){var t=(new Date).getTime()-e;if(u<t)break}if((o=n[p])instanceof L.LayerGroup)c&&(n=n.slice(),c=!1),this._extractNonGroupLayers(o,n),d=n.length;else if(o.getLatLng){if(!this.hasLayer(o)&&(this._addLayer(o,this._maxZoom),s||this.fire(\"layeradd\",{layer:o}),o.__parent&&2===o.__parent.getChildCount())){var i=o.__parent.getAllChildMarkers(),r=i[0]===o?i[1]:i[0];a.removeLayer(r)}}else h.addLayer(o),s||this.fire(\"layeradd\",{layer:o})}_&&_(p,d,(new Date).getTime()-f),p===d?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(m,this.options.chunkDelay)},this);m()}else for(var e=this._needsClustering;p<d;p++)(o=n[p])instanceof L.LayerGroup?(c&&(n=n.slice(),c=!1),this._extractNonGroupLayers(o,n),d=n.length):o.getLatLng?this.hasLayer(o)||e.push(o):h.addLayer(o);return this},removeLayers:function(e){var t,i,r=e.length,n=this._featureGroup,s=this._nonPointGroup,o=!0;if(!this._map){for(t=0;t<r;t++)(i=e[t])instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),r=e.length):(this._arraySplice(this._needsClustering,i),s.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire(\"layerremove\",{layer:i}));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=r;for(t=0;t<h;t++)(i=a[t])instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;t<r;t++)(i=e[t])instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),r=e.length):i.__parent?(this._removeLayer(i,!0,!0),this.fire(\"layerremove\",{layer:i}),n.hasLayer(i)&&(n.removeLayer(i),i.clusterShow&&i.clusterShow())):(s.removeLayer(i),this.fire(\"layerremove\",{layer:i}));return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],this._needsRemoving=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(this._childMarkerEventHandlers,this),delete e.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;0<=t;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,r,n,s=this._needsClustering.slice(),o=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(s),r=s.length-1;0<=r;r--){for(i=!0,n=o.length-1;0<=n;n--)if(o[n].layer===s[r]){i=!1;break}i&&e.call(t,s[r])}this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var t=[];return this.eachLayer(function(e){t.push(e)}),t},getLayer:function(t){var i=null;return t=parseInt(t,10),this.eachLayer(function(e){L.stamp(e)===t&&(i=e)}),i},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;0<=t;t--)if(i[t]===e)return!0;for(t=(i=this._needsRemoving).length-1;0<=t;t--)if(i[t].layer===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){var i=this._map;\"function\"!=typeof t&&(t=function(){});var r=function(){!i.hasLayer(e)&&!i.hasLayer(e.__parent)||this._inZoomAnimation||(this._map.off(\"moveend\",r,this),this.off(\"animationend\",r,this),i.hasLayer(e)?t():e.__parent._icon&&(this.once(\"spiderfied\",t,this),e.__parent.spiderfy()))};e._icon&&this._map.getBounds().contains(e.getLatLng())?t():e.__parent._zoom<Math.round(this._map._zoom)?(this._map.on(\"moveend\",r,this),this._map.panTo(e.getLatLng())):(this._map.on(\"moveend\",r,this),this.on(\"animationend\",r,this),e.__parent.zoomToBounds())},onAdd:function(e){var t,i,r;if(this._map=e,!isFinite(this._map.getMaxZoom()))throw\"Map has no maxZoom specified\";for(this._featureGroup.addTo(e),this._nonPointGroup.addTo(e),this._gridClusters||this._generateInitialClusters(),this._maxLat=e.options.crs.projection.MAX_LATITUDE,t=0,i=this._needsRemoving.length;t<i;t++)(r=this._needsRemoving[t]).newlatlng=r.layer._latlng,r.layer._latlng=r.latlng;for(t=0,i=this._needsRemoving.length;t<i;t++)r=this._needsRemoving[t],this._removeLayer(r.layer,!0),r.layer._latlng=r.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on(\"zoomend\",this._zoomEnd,this),this._map.on(\"moveend\",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(e){e.off(\"zoomend\",this._zoomEnd,this),e.off(\"moveend\",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\"),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;0<=i;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,r=this._gridUnclustered,n=Math.floor(this._map.getMinZoom());n<=t&&r[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerDragStart:function(e){e.target.__dragStart=e.target._latlng},_childMarkerMoved:function(e){if(!this._ignoreMove&&!e.target.__dragStart){var t=e.target._popup&&e.target._popup.isOpen();this._moveChild(e.target,e.oldLatLng,e.latlng),t&&e.target.openPopup()}},_moveChild:function(e,t,i){e._latlng=t,this.removeLayer(e),e._latlng=i,this.addLayer(e)},_childMarkerDragEnd:function(e){var t=e.target.__dragStart;delete e.target.__dragStart,t&&this._moveChild(e.target,t,e.target._latlng)},_removeLayer:function(e,t,i){var r=this._gridClusters,n=this._gridUnclustered,s=this._featureGroup,o=this._map,a=Math.floor(this._map.getMinZoom());t&&this._removeFromGridUnclustered(e,this._maxZoom);var h,l=e.__parent,u=l._markers;for(this._arraySplice(u,e);l&&(l._childCount--,l._boundsNeedUpdate=!0,!(l._zoom<a));)t&&l._childCount<=1?(h=l._markers[0]===e?l._markers[1]:l._markers[0],r[l._zoom].removeObject(l,o.project(l._cLatLng,l._zoom)),n[l._zoom].addObject(h,o.project(h.getLatLng(),l._zoom)),this._arraySplice(l.__parent._childClusters,l),l.__parent._markers.push(h),h.__parent=l.__parent,l._icon&&(s.removeLayer(l),i||s.addLayer(h))):l._iconNeedsUpdate=!0,l=l.__parent;delete e.__parent},_isOrIsParent:function(e,t){for(;t;){if(e===t)return!0;t=t.parentNode}return!1},fire:function(e,t,i){if(t&&t.layer instanceof L.MarkerCluster){if(t.originalEvent&&this._isOrIsParent(t.layer._icon,t.originalEvent.relatedTarget))return;e=\"cluster\"+e}L.FeatureGroup.prototype.fire.call(this,e,t,i)},listens:function(e,t){return L.FeatureGroup.prototype.listens.call(this,e,t)||L.FeatureGroup.prototype.listens.call(this,\"cluster\"+e,t)},_defaultIconCreateFunction:function(e){var t=e.getChildCount(),i=\" marker-cluster-\";return i+=t<10?\"small\":t<100?\"medium\":\"large\",new L.DivIcon({html:\"<div><span>\"+t+\"</span></div>\",className:\"marker-cluster\"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,r=this.options.zoomToBoundsOnClick,n=this.options.spiderfyOnEveryZoom;(t||r||n)&&this.on(\"clusterclick clusterkeypress\",this._zoomOrSpiderfy,this),i&&(this.on(\"clustermouseover\",this._showCoverage,this),this.on(\"clustermouseout\",this._hideCoverage,this),e.on(\"zoomend\",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){var t=e.layer,i=t;if(\"clusterkeypress\"!==e.type||!e.originalEvent||13===e.originalEvent.keyCode){for(;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),this.options.spiderfyOnEveryZoom&&t.spiderfy(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()}},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),2<e.layer.getChildCount()&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,r=this.options.spiderfyOnEveryZoom,n=this._map;(e||i||r)&&this.off(\"clusterclick clusterkeypress\",this._zoomOrSpiderfy,this),t&&(this.off(\"clustermouseover\",this._showCoverage,this),this.off(\"clustermouseout\",this._hideCoverage,this),n.off(\"zoomend\",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=Math.ceil(this._map.getMaxZoom()),t=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,r=i;\"function\"!=typeof i&&(r=function(){return i}),null!==this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var n=e;t<=n;n--)this._gridClusters[n]=new L.DistanceGrid(r(n)),this._gridUnclustered[n]=new L.DistanceGrid(r(n));this._topClusterLevel=new this._markerCluster(this,t-1)},_addLayer:function(e,t){var i,r,n=this._gridClusters,s=this._gridUnclustered,o=Math.floor(this._map.getMinZoom());for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(this._childMarkerEventHandlers,this);o<=t;t--){i=this._map.project(e.getLatLng(),t);var a=n[t].getNearObject(i);if(a)return a._addChild(e),void(e.__parent=a);if(a=s[t].getNearObject(i)){var h=a.__parent;h&&this._removeLayer(a,!1);var l=new this._markerCluster(this,t,a,e);n[t].addObject(l,this._map.project(l._cLatLng,t)),a.__parent=l;var u=e.__parent=l;for(r=t-1;r>h._zoom;r--)u=new this._markerCluster(this,r,u),n[r].addObject(u,this._map.project(a.getLatLng(),r));return h._addChild(u),void this._removeFromGridUnclustered(a,t)}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;e<this._queue.length;e++)this._queue[e].call(this);this._queue.length=0,clearTimeout(this._queueTimeout),this._queueTimeout=null},_mergeSplitClusters:function(){var e=Math.round(this._map._zoom);this._processQueue(),this._zoom<e&&this._currentShownBounds.intersects(this._getExpandedVisibleBounds())?(this._animationStart(),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,this._getExpandedVisibleBounds()),this._animationZoomIn(this._zoom,e)):this._zoom>e?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return void 0!==t&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,r=e.getLayers(),n=0;for(t=t||[];n<r.length;n++)(i=r[n])instanceof L.LayerGroup?this._extractNonGroupLayers(i,t):t.push(i);return t},_overrideMarkerIcon:function(e){return e.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[e]}})}});L.MarkerClusterGroup.include({_mapBoundsInfinite:new L.LatLngBounds(new L.LatLng(-1/0,-1/0),new L.LatLng(1/0,1/0))}),L.MarkerClusterGroup.include({_noAnimation:{_animationStart:function(){},_animationZoomIn:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationZoomOut:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationAddLayer:function(e,t){this._animationAddLayerNonAnimated(e,t)}},_withAnimation:{_animationStart:function(){this._map._mapPane.className+=\" leaflet-cluster-anim\",this._inZoomAnimation++},_animationZoomIn:function(n,s){var o,a=this._getExpandedVisibleBounds(),h=this._featureGroup,e=Math.floor(this._map.getMinZoom());this._ignoreMove=!0,this._topClusterLevel._recursively(a,n,e,function(e){var t,i=e._latlng,r=e._markers;for(a.contains(i)||(i=null),e._isSingleParent()&&n+1===s?(h.removeLayer(e),e._recursivelyAddChildrenToMap(null,s,a)):(e.clusterHide(),e._recursivelyAddChildrenToMap(i,s,a)),o=r.length-1;0<=o;o--)t=r[o],a.contains(t._latlng)||h.removeLayer(t)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(a,s),h.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(a,n,s,function(e){e._recursivelyRestoreChildPositions(s)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(a,n,e,function(e){h.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,r=this._featureGroup;r.addLayer(e),t!==e&&(2<t._childCount?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){r.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(t,i,r){var n=this._getExpandedVisibleBounds(),s=Math.floor(this._map.getMinZoom());t._recursivelyAnimateChildrenInAndAddSelfToMap(n,s,i+1,r);var o=this;this._forceLayout(),t._recursivelyBecomeVisible(n,r),this._enqueue(function(){if(1===t._childCount){var e=t._markers[0];this._ignoreMove=!0,e.setLatLng(e.getLatLng()),this._ignoreMove=!1,e.clusterShow&&e.clusterShow()}else t._recursively(n,r,s,function(e){e._recursivelyRemoveChildrenFromMap(n,s,i+1)});o._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\")),this._inZoomAnimation--,this.fire(\"animationend\")},_forceLayout:function(){L.Util.falseFn(document.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)};var i=L.MarkerCluster=L.Marker.extend({options:L.Icon.prototype.options,initialize:function(e,t,i,r){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:e.options.clusterPane}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),r&&this._addChild(r)},getAllChildMarkers:function(e,t){e=e||[];for(var i=this._childClusters.length-1;0<=i;i--)this._childClusters[i].getAllChildMarkers(e,t);for(var r=this._markers.length-1;0<=r;r--)t&&this._markers[r].__dragStart||e.push(this._markers[r]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(e){for(var t,i=this._childClusters.slice(),r=this._group._map,n=r.getBoundsZoom(this._bounds),s=this._zoom+1,o=r.getZoom();0<i.length&&s<n;){s++;var a=[];for(t=0;t<i.length;t++)a=a.concat(i[t]._childClusters);i=a}s<n?this._group._map.setView(this._latlng,s):n<=o?this._group._map.setView(this._latlng,o+1):this._group._map.fitBounds(this._bounds,e)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,r,n=this._markers,s=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e<n.length;e++)i=n[e]._latlng,this._bounds.extend(i),o+=i.lat,a+=i.lng;for(e=0;e<s.length;e++)(t=s[e])._boundsNeedUpdate&&t._recalculateBounds(),this._bounds.extend(t._bounds),i=t._wLatLng,r=t._childCount,o+=i.lat*r,a+=i.lng*r;this._latlng=this._wLatLng=new L.LatLng(o/h,a/h),this._boundsNeedUpdate=!1}},_addToMap:function(e){e&&(this._backupLatlng=this._latlng,this.setLatLng(e)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(e,n,t){this._recursively(e,this._group._map.getMinZoom(),t-1,function(e){var t,i,r=e._markers;for(t=r.length-1;0<=t;t--)(i=r[t])._icon&&(i._setPos(n),i.clusterHide())},function(e){var t,i,r=e._childClusters;for(t=r.length-1;0<=t;t--)(i=r[t])._icon&&(i._setPos(n),i.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(t,i,r,n){this._recursively(t,n,i,function(e){e._recursivelyAnimateChildrenIn(t,e._group._map.latLngToLayerPoint(e.getLatLng()).round(),r),e._isSingleParent()&&r-1===n?(e.clusterShow(),e._recursivelyRemoveChildrenFromMap(t,i,r)):e.clusterHide(),e._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,this._group._map.getMinZoom(),t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(r,n,s){this._recursively(s,this._group._map.getMinZoom()-1,n,function(e){if(n!==e._zoom)for(var t=e._markers.length-1;0<=t;t--){var i=e._markers[t];s.contains(i._latlng)&&(r&&(i._backupLatlng=i.getLatLng(),i.setLatLng(r),i.clusterHide&&i.clusterHide()),e._group._featureGroup.addLayer(i))}},function(e){e._addToMap(r)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;0<=t;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var r=this._childClusters.length-1;0<=r;r--)this._childClusters[r]._restorePosition();else for(var n=this._childClusters.length-1;0<=n;n--)this._childClusters[n]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i,r){var n,s;this._recursively(e,t-1,i-1,function(e){for(s=e._markers.length-1;0<=s;s--)n=e._markers[s],r&&r.contains(n._latlng)||(e._group._featureGroup.removeLayer(n),n.clusterShow&&n.clusterShow())},function(e){for(s=e._childClusters.length-1;0<=s;s--)n=e._childClusters[s],r&&r.contains(n._latlng)||(e._group._featureGroup.removeLayer(n),n.clusterShow&&n.clusterShow())})},_recursively:function(e,t,i,r,n){var s,o,a=this._childClusters,h=this._zoom;if(t<=h&&(r&&r(this),n&&h===i&&n(this)),h<t||h<i)for(s=a.length-1;0<=s;s--)(o=a[s])._boundsNeedUpdate&&o._recalculateBounds(),e.intersects(o._bounds)&&o._recursively(e,t,i,r,n)},_isSingleParent:function(){return 0<this._childClusters.length&&this._childClusters[0]._childCount===this._childCount}});L.Marker.include({clusterHide:function(){var e=this.options.opacity;return this.setOpacity(0),this.options.opacity=e,this},clusterShow:function(){return this.setOpacity(this.options.opacity)}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),r=this._getCoord(t.y),n=this._grid,s=n[r]=n[r]||{},o=s[i]=s[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,r,n=this._getCoord(t.x),s=this._getCoord(t.y),o=this._grid,a=o[s]=o[s]||{},h=a[n]=a[n]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,r=h.length;i<r;i++)if(h[i]===e)return h.splice(i,1),1===r&&delete a[n],!0},eachObject:function(e,t){var i,r,n,s,o,a,h=this._grid;for(i in h)for(r in o=h[i])for(n=0,s=(a=o[r]).length;n<s;n++)e.call(t,a[n])&&(n--,s--)},getNearObject:function(e){var t,i,r,n,s,o,a,h,l=this._getCoord(e.x),u=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,p=null;for(t=u-1;t<=u+1;t++)if(n=this._grid[t])for(i=l-1;i<=l+1;i++)if(s=n[i])for(r=0,o=s.length;r<o;r++)a=s[r],((h=this._sqDist(_[L.Util.stamp(a)],e))<d||h<=d&&null===p)&&(d=h,p=a);return p},_getCoord:function(e){var t=Math.floor(e/this._cellSize);return isFinite(t)?t:e},_sqDist:function(e,t){var i=t.x-e.x,r=t.y-e.y;return i*i+r*r}},L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat;return(t[0].lng-t[1].lng)*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,r,n,s=0,o=null,a=[];for(i=t.length-1;0<=i;i--)r=t[i],0<(n=this.getDistant(r,e))&&(a.push(r),s<n&&(s=n,o=r));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],r=this.findMostDistantPointFromBaseLine(e,t);return r.maxPoint?i=(i=i.concat(this.buildConvexHull([e[0],r.maxPoint],r.newPoints))).concat(this.buildConvexHull([r.maxPoint,e[1]],r.newPoints)):[e[0]]},getConvexHull:function(e){var t,i=!1,r=!1,n=!1,s=!1,o=null,a=null,h=null,l=null,u=null,_=null;for(t=e.length-1;0<=t;t--){var d=e[t];(!1===i||d.lat>i)&&(i=(o=d).lat),(!1===r||d.lat<r)&&(r=(a=d).lat),(!1===n||d.lng>n)&&(n=(h=d).lng),(!1===s||d.lng<s)&&(s=(l=d).lng)}return u=r!==i?(_=a,o):(_=l,h),[].concat(this.buildConvexHull([_,u],e),this.buildConvexHull([u,_],e))}},L.MarkerCluster.include({getConvexHull:function(){var e,t,i=this.getAllChildMarkers(),r=[];for(t=i.length-1;0<=t;t--)e=i[t].getLatLng(),r.push(e);return L.QuickHull.getConvexHull(r)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(null,!0),i=this._group._map.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),e=(this._group._spiderfied=this)._group.options.spiderfyShapePositions?this._group.options.spiderfyShapePositions(t.length,i):t.length>=this._circleSpiralSwitchover?this._generatePointsSpiral(t.length,i):(i.y+=10,this._generatePointsCircle(t.length,i)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,r,n=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e)/this._2PI,s=this._2PI/e,o=[];for(n=Math.max(n,35),o.length=e,i=0;i<e;i++)r=this._circleStartAngle+i*s,o[i]=new L.Point(t.x+n*Math.cos(r),t.y+n*Math.sin(r))._round();return o},_generatePointsSpiral:function(e,t){var i,r=this._group.options.spiderfyDistanceMultiplier,n=r*this._spiralLengthStart,s=r*this._spiralFootSeparation,o=r*this._spiralLengthFactor*this._2PI,a=0,h=[];for(i=h.length=e;0<=i;i--)i<e&&(h[i]=new L.Point(t.x+n*Math.cos(a),t.y+n*Math.sin(a))._round()),n+=o/(a+=s/n+5e-4*i);return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,r=i._map,n=i._featureGroup,s=this.getAllChildMarkers(null,!0);for(i._ignoreMove=!0,this.setOpacity(1),t=s.length-1;0<=t;t--)e=s[t],n.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(r.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire(\"unspiderfied\",{cluster:this,markers:s}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,r,n,s,o=this._group,a=o._map,h=o._featureGroup,l=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i<e.length;i++)s=a.layerPointToLatLng(t[i]),r=e[i],n=new L.Polyline([this._latlng,s],l),a.addLayer(n),r._spiderLeg=n,r._preSpiderfyLatlng=r._latlng,r.setLatLng(s),r.setZIndexOffset&&r.setZIndexOffset(1e6),h.addLayer(r);this.setOpacity(.3),o._ignoreMove=!1,o.fire(\"spiderfied\",{cluster:this,markers:e})},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerCluster.include({_animationSpiderfy:function(e,t){var i,r,n,s,o,a,h=this,l=this._group,u=l._map,_=l._featureGroup,d=this._latlng,p=u.latLngToLayerPoint(d),c=L.Path.SVG,f=L.extend({},this._group.options.spiderLegPolylineOptions),m=f.opacity;for(void 0===m&&(m=L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity),c?(f.opacity=0,f.className=(f.className||\"\")+\" leaflet-cluster-spider-leg\"):f.opacity=m,l._ignoreMove=!0,i=0;i<e.length;i++)r=e[i],a=u.layerPointToLatLng(t[i]),n=new L.Polyline([d,a],f),u.addLayer(n),r._spiderLeg=n,c&&(o=(s=n._path).getTotalLength()+.1,s.style.strokeDasharray=o,s.style.strokeDashoffset=o),r.setZIndexOffset&&r.setZIndexOffset(1e6),r.clusterHide&&r.clusterHide(),_.addLayer(r),r._setPos&&r._setPos(p);for(l._forceLayout(),l._animationStart(),i=e.length-1;0<=i;i--)a=u.layerPointToLatLng(t[i]),(r=e[i])._preSpiderfyLatlng=r._latlng,r.setLatLng(a),r.clusterShow&&r.clusterShow(),c&&((s=(n=r._spiderLeg)._path).style.strokeDashoffset=0,n.setStyle({opacity:m}));this.setOpacity(.3),l._ignoreMove=!1,setTimeout(function(){l._animationEnd(),l.fire(\"spiderfied\",{cluster:h,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,r,n,s,o,a=this,h=this._group,l=h._map,u=h._featureGroup,_=e?l._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):l.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(null,!0),p=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;0<=i;i--)(t=d[i])._preSpiderfyLatlng&&(t.closePopup(),t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&u.removeLayer(t),p&&(s=(n=(r=t._spiderLeg)._path).getTotalLength()+.1,n.style.strokeDashoffset=s,r.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;0<=i;i--)(t=d[i])._spiderLeg&&e++;for(i=d.length-1;0<=i;i--)(t=d[i])._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),1<e&&u.removeLayer(t),l.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire(\"unspiderfied\",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on(\"click\",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.on(\"zoomend\",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off(\"click\",this._unspiderfyWrapper,this),this._map.off(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._map.off(\"zoomend\",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()},_unspiderfyZoomStart:function(){this._map&&this._map.on(\"zoomanim\",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,\"leaflet-touching\")||(this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}}),e.MarkerClusterGroup=t,e.MarkerCluster=i,Object.defineProperty(e,\"__esModule\",{value:!0})});\n//# sourceMappingURL=leaflet.markercluster.js.map","!function(factory){if(\"function\"==typeof define&&define.amd)define([\"leaflet\"],factory);else if(\"object\"==typeof exports)module.exports=factory(require(\"leaflet\"));else if(\"undefined\"!=typeof window){if(void 0===window.L)throw\"Leaflet must be loaded first.\";window.L.Control.SimpleLocate=factory(window.L)}}(function(L){let SimpleLocate=L.Control.extend({options:{className:\"\",title:\"Locate Geolocation and Orientation\",ariaLabel:\"\",minAngleChange:3,clickTimeoutDelay:500,setViewAfterClick:!0,zoomLevel:void 0,drawCircle:!0,afterClick:null,afterMarkerAdd:null,afterDeviceMove:null,htmlInit:`\n<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<path d=\"M 8,1.5 A 6.5,6.5 0 0 0 1.5,8 6.5,6.5 0 0 0 8,14.5 6.5,6.5 0 0 0 14.5,8 6.5,6.5 0 0 0 8,1.5 Z m 0,2 A 4.5,4.5 0 0 1 12.5,8 4.5,4.5 0 0 1 8,12.5 4.5,4.5 0 0 1 3.5,8 4.5,4.5 0 0 1 8,3.5 Z\" />\n\t<rect width=\"1.5\" height=\"4\" x=\"7.25\" y=\"0.5\" rx=\"0.5\" ry=\"0.5\" />\n\t<rect width=\"1.5\" height=\"4\" x=\"7.25\" y=\"11.5\" rx=\"0.5\" ry=\"0.5\" />\n\t<rect width=\"4\" height=\"1.5\" x=\"0.5\" y=\"7.25\" rx=\"0.5\" ry=\"0.5\" />\n\t<rect width=\"4\" height=\"1.5\" x=\"11.5\" y=\"7.25\" ry=\"0.5\" rx=\"0.5\" />\n\t<circle cx=\"8\" cy=\"8\" r=\"1\" />\n</svg>`,htmlSpinner:`\n<svg width=\"16\" height=\"16\" viewBox=\"-8 -8 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<g>\n\t\t<circle opacity=\".7\" cx=\"0\" cy=\"-6\" r=\".9\" transform=\"rotate(90)\" />\n\t\t<circle opacity=\".9\" cx=\"0\" cy=\"-6\" r=\"1.3\" transform=\"rotate(45)\" />\n\t\t<circle opacity=\"1\" cx=\"0\" cy=\"-6\" r=\"1.5\" />\n\t\t<circle opacity=\".95\" cx=\"0\" cy=\"-6\" r=\"1.42\" transform=\"rotate(-45)\" />\n\t\t<circle opacity=\".85\" cx=\"0\" cy=\"-6\" r=\"1.26\" transform=\"rotate(-90)\" />\n\t\t<circle opacity=\".7\" cx=\"0\" cy=\"-6\" r=\"1.02\" transform=\"rotate(-135)\" />\n\t\t<circle opacity=\".5\" cx=\"0\" cy=\"-6\" r=\".7\" transform=\"rotate(-180)\" />\n\t\t<circle opacity=\".25\" cx=\"0\" cy=\"-6\" r=\".3\" transform=\"rotate(-225)\" />\n\t\t<animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0;0;45;45;90;90;135;135;180;180;225;225;270;270;315;315;360\" keyTimes=\"0;.125;.125;.25;.25;.375;.375;.5;.5;.675;.675;.75;.75;.875;.875;1;1\" dur=\"1.3s\" repeatCount=\"indefinite\" />\n\t</g>\n</svg>`,htmlGeolocation:`\n<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<path d=\"M 13.329384,2.6706085 C 13.133096,2.4743297 12.77601,2.4382611 12.303066,2.6103882 L 6.6307133,4.6742285 1.1816923,6.6577732 C 1.0668479,6.6995703 0.95157337,6.752486 0.83540381,6.8133451 0.27343954,7.1201064 0.41842508,7.4470449 1.2644998,7.5962244 l 6.0688263,1.0701854 1.0714872,6.0698222 c 0.1491847,0.84604 0.4751513,0.990031 0.7816575,0.427825 0.060857,-0.116165 0.1137803,-0.231436 0.1555779,-0.346273 L 11.324426,9.3702482 13.389608,3.6968841 C 13.56174,3.2239596 13.52567,2.8668883 13.329392,2.6706094 Z\" />\n</svg>`,htmlOrientation:`\n<svg class=\"leaflet-simple-locate-orientation\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<path fill=\"#c00000\" d=\"M 8,0 C 7.7058986,0 7.4109021,0.30139625 7.1855469,0.90234375 L 5.3378906,5.8300781 C 5.2559225,6.0486598 5.1908259,6.292468 5.1386719,6.5507812 6.0506884,6.193573 7.0205489,6.0068832 8,6 8.9768002,6.0005071 9.945249,6.1798985 10.857422,6.5292969 10.805917,6.2790667 10.741782,6.0425374 10.662109,5.8300781 L 8.8144531,0.90234375 C 8.5890978,0.30139615 8.2941007,0 8,0 Z\" />\n\t<path d=\"M 8,5.9999998 C 7.0205501,6.006884 6.0506874,6.1935733 5.138672,6.5507817 4.9040515,7.7126196 4.9691485,9.1866095 5.3378906,10.169922 l 1.8476563,4.927734 c 0.4507105,1.201895 1.1781958,1.201894 1.628906,0 L 10.662109,10.169922 C 11.033147,9.1804875 11.097283,7.6944254 10.857422,6.5292967 9.9452497,6.1798989 8.9767993,6.0005076 8,5.9999998 Z m -1e-7,0.7499999 A 1.25,1.258 90 0 1 9.2578124,7.9999996 1.25,1.258 90 0 1 8,9.2500001 a 1.25,1.258 90 0 1 -1.2578124,-1.25 1.25,1.258 90 0 1 1.2578123,-1.2500004 z\" />\n</svg>`,iconGeolocation:L.divIcon({html:`\n<svg width=\"24\" height=\"24\" viewBox=\"-12 -12 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<defs>\n\t\t<filter id=\"gaussian\">\n\t\t\t<feGaussianBlur stdDeviation=\"0.5\" />\n\t\t</filter>\n\t</defs>\n\t<g id=\"leaflet-simple-locate-icon-spot\">\n\t\t<circle fill=\"#000000\" style=\"opacity:0.3;filter:url(#gaussian)\" cx=\"1\" cy=\"1\" r=\"10\" />\n\t\t<circle fill=\"#ffffff\" r=\"10\" />\n\t\t<circle r=\"6\">\n\t\t\t<animate attributeName=\"r\" values=\"6;8;6\" dur=\"2s\" repeatCount=\"indefinite\" />\n\t\t</circle>\n\t</g>\n</svg>`,className:\"leaflet-simple-locate-icon\",iconSize:[24,24],iconAnchor:[12,12]}),iconOrientation:L.divIcon({html:`\n<svg width=\"96\" height=\"96\" viewBox=\"-48 -48 96 96\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<defs>\n\t\t<linearGradient id=\"gradient\" x2=\"0\" y2=\"-48\" gradientUnits=\"userSpaceOnUse\">\n\t\t\t<stop style=\"stop-opacity:1\" offset=\"0\" />\n\t\t\t<stop style=\"stop-opacity:0\" offset=\"1\" />\n\t\t</linearGradient>\n\t\t<filter id=\"gaussian\">\n\t\t\t<feGaussianBlur stdDeviation=\"0.5\" />\n\t\t</filter>\n\t</defs>\n\t<path class=\"orientation\" opacity=\"1\" style=\"fill:url(#gradient)\" d=\"M -24,-48 H 24 L 10,0 H -10 z\">\n\t\t<animate attributeName=\"opacity\" values=\".75;.33;.75\" dur=\"2s\" repeatCount=\"indefinite\" />\n\t</path>\n\t<g id=\"leaflet-simple-locate-icon-spot\">\n\t\t<circle fill=\"#000000\" style=\"opacity:0.3;filter:url(#gaussian)\" cx=\"1\" cy=\"1\" r=\"10\" />\n\t\t<circle fill=\"#ffffff\" r=\"10\" />\n\t\t<circle r=\"6\">\n\t\t\t<animate attributeName=\"r\" values=\"6;9;6\" dur=\"2s\" repeatCount=\"indefinite\" />\n\t\t</circle>\n\t</g>\n</svg>`,className:\"leaflet-simple-locate-icon\",iconSize:[96,96],iconAnchor:[48,48]})},initialize:function(options){L.Util.setOptions(this,options),this._map=void 0,this._button=void 0,this._marker=void 0,this._circle=void 0,this._clicked=void 0,this._geolocation=void 0,this._orientation=void 0,this._clickTimeout=void 0,this._latitude=void 0,this._longitude=void 0,this._accuracy=void 0,this._angle=void 0},onAdd:function(map){return this._map=map,this._button=L.DomUtil.create(\"button\",\"leaflet-simple-locate\"),this.options.className&&L.DomUtil.addClass(this._button,this.options.className),L.DomEvent.disableClickPropagation(this._button),this._button.innerHTML=this.options.htmlInit,this._button.title=this.options.title,this._button.setAttribute(\"aria-label\",this.options.ariaLabel||this.options.title),L.DomEvent.on(this._button,\"click\",L.DomEvent.stopPropagation).on(this._button,\"click\",L.DomEvent.preventDefault).on(this._button,\"click\",this._onClick,this),this._button},getLatLng:function(){return this._latitude&&this._longitude?{lat:this._latitude,lng:this._longitude}:null},getAccuracy:function(){return this._accuracy||null},getAngle:function(){return this._angle||null},setZoomLevel:function(level){this.options.zoomLevel=level},_onClick:async function(){this._clickTimeout?(clearTimeout(this._clickTimeout),this._clickTimeout=void 0,this._clicked&&(this._geolocation&&this._unwatchGeolocation(),this._orientation&&this._unwatchOrientation(),this._clicked=void 0,this._geolocation=void 0,this._orientation=void 0,this._updateButton(),this._map.off(\"layeradd\",this._onLayerAdd,this))):this._clickTimeout=setTimeout(()=>{clearTimeout(this._clickTimeout),this._clickTimeout=void 0,this._map&&(this._clicked&&this.options.setViewAfterClick?this._setView():(this._clicked=!0,this._updateButton(),this._map.on(\"layeradd\",this._onLayerAdd,this),this._checkGeolocation().then(event=>{this._geolocation=!0,this._onLocationFound(event.coords),this.options.setViewAfterClick&&this._setView(),this._watchGeolocation(),this._checkClickResult()}).catch(()=>{this._geolocation=!1,this._checkClickResult()}),this._checkOrientation().then(()=>{this._orientation=!0,this._watchOrientation(),this._checkClickResult()}).catch(()=>{this._orientation=!1,this._checkClickResult()})))},this.options.clickTimeoutDelay)},_checkClickResult:function(){this._updateButton(),this.options.afterClick&&void 0!==this._geolocation&&void 0!==this._orientation&&this.options.afterClick({geolocation:this._geolocation,orientation:this._orientation}),!1===this._geolocation&&!1===this._orientation&&(this._clicked=void 0,this._geolocation=void 0,this._orientation=void 0)},_checkGeolocation:function(){return\"object\"==typeof navigator&&\"geolocation\"in navigator&&\"function\"==typeof navigator.geolocation.getCurrentPosition&&\"function\"==typeof navigator.geolocation.watchPosition?new Promise((resolve,reject)=>{navigator.geolocation.getCurrentPosition(resolve,reject,{maximumAge:0,enableHighAccuracy:!0})}):Promise.reject()},_checkOrientation:function(){return(\"ondeviceorientationabsolute\"in window||\"ondeviceorientation\"in window)&&DeviceOrientationEvent?\"function\"!=typeof DeviceOrientationEvent.requestPermission?Promise.resolve():DeviceOrientationEvent.requestPermission().then(permission=>\"granted\"===permission||Promise.reject()):Promise.reject()},_watchGeolocation:function(){this._map.locate({watch:!0,enableHighAccuracy:!0}),this._map.on(\"locationfound\",this._onLocationFound,this),this._map.on(\"zoomstart\",this._onZoomStart,this),this._map.on(\"zoomend\",this._onZoomEnd,this)},_unwatchGeolocation:function(){this._map.stopLocate(),this._map.off(\"locationfound\",this._onLocationFound,this),this._map.off(\"zoomstart\",this._onZoomStart,this),this._map.off(\"zoomend\",this._onZoomEnd,this),this._circle&&(this._map.removeLayer(this._circle),this._circle=void 0),this._marker&&(this._map.removeLayer(this._marker),this._marker=void 0),this._latitude=void 0,this._longitude=void 0,this._accuracy=void 0},_watchOrientation:function(){L.DomEvent.on(window,\"ondeviceorientationabsolute\"in window?\"deviceorientationabsolute\":\"deviceorientation\",this._onOrientation,this)},_unwatchOrientation:function(){L.DomEvent.off(window,\"ondeviceorientationabsolute\"in window?\"deviceorientationabsolute\":\"deviceorientation\",this._onOrientation,this),document.documentElement.style.setProperty(\"--leaflet-simple-locate-orientation\",\"0deg\"),this._angle=void 0},_onLocationFound:function(event){this._latitude&&event.latitude&&Math.round(1e6*this._latitude)===Math.round(1e6*event.latitude)&&this._longitude&&event.longitude&&Math.round(1e6*this._longitude)===Math.round(1e6*event.longitude)&&this._accuracy&&event.accuracy&&Math.round(100*this._accuracy)===Math.round(100*event.accuracy)||(this._latitude=event.latitude,this._longitude=event.longitude,this._accuracy=event.accuracy,this._updateMarker())},_onOrientation:function(event){let angle;angle=event.webkitCompassHeading||360-event.alpha,this._angle&&Math.abs(angle-this._angle)<this.options.minAngleChange||(this._angle=angle,\"orientation\"in screen&&(this._angle+=screen.orientation.angle),this._angle=(this._angle+360)%360,document.documentElement.style.setProperty(\"--leaflet-simple-locate-orientation\",-this._angle+\"deg\"),this._updateMarker())},_onZoomStart:function(){this._circle&&document.documentElement.style.setProperty(\"--leaflet-simple-locate-circle-display\",\"none\")},_onZoomEnd:function(){this._circle&&document.documentElement.style.setProperty(\"--leaflet-simple-locate-circle-display\",\"inline\")},_onLayerAdd:function(event){this.options.afterMarkerAdd&&event.layer==this._marker&&this.options.afterMarkerAdd()},_setView:function(){this._map&&this._latitude&&this._longitude&&(this.options.zoomLevel?this._map.setView([this._latitude,this._longitude],this.options.zoomLevel):this._map.setView([this._latitude,this._longitude]))},_updateButton:function(){this._clicked?void 0===this._geolocation||void 0===this._orientation?\"spinner\"!==this._button.html_name&&(this._button.innerHTML=this.options.htmlSpinner,this._button.html_name=\"spinner\"):this._orientation&&\"orientation\"!==this._button.html_name?(this._button.innerHTML=this.options.htmlOrientation,this._button.html_name=\"orientation\"):this._geolocation&&\"geolocation\"!==this._button.html_name&&(this._button.innerHTML=this.options.htmlGeolocation,this._button.html_name=\"geolocation\"):\"init\"!==this._button.html_name&&(this._button.innerHTML=this.options.htmlInit,this._button.html_name=\"init\")},_updateMarker:function(){if(this.options.afterDeviceMove&&this.options.afterDeviceMove({lat:this._latitude,lng:this._longitude,accuracy:this._accuracy,angle:this._angle}),this._latitude&&this._longitude&&(!this.options.drawCircle||this._accuracy)){let icon_name;if(this._geolocation&&this._orientation&&this._angle)icon_name=\"iconOrientation\";else{if(!this._geolocation)return;icon_name=\"iconGeolocation\"}this._circle?(this._circle.setLatLng([this._latitude,this._longitude]),this._circle.setRadius(this._accuracy)):this.options.drawCircle&&(this._circle=L.circle([this._latitude,this._longitude],{className:\"leaflet-simple-locate-circle\",radius:this._accuracy}).addTo(this._map)),this._marker&&this._marker.icon_name===icon_name?this._marker.setLatLng([this._latitude,this._longitude]):(this._marker&&this._map.removeLayer(this._marker),this._marker=L.marker([this._latitude,this._longitude],{icon:this.options[icon_name]}),this._marker.icon_name=icon_name,this._marker.addTo(this._map))}}});return L.control.simpleLocate=function(options){return new SimpleLocate(options)},SimpleLocate});","/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexport var earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: earthRadius / 111325,\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / earthRadius,\n yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nexport function geometry(type, coordinates, _options) {\n if (_options === void 0) { _options = {}; }\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nexport function geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return (degrees * 180) / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n var radians = degrees % 360;\n return (radians * Math.PI) / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\n","import { feature, lineString, isObject, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j,\n k,\n l,\n geometry,\n stopG,\n coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === \"FeatureCollection\",\n isFeature = type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[featureIndex].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[geomIndex]\n : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink =\n excludeWrapCoord &&\n (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n ? 1\n : 0;\n\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (\n callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (\n callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (\n callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (\n callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (\n coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n false\n )\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (coordIndex === 0 && initialValue === undefined)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i,\n j,\n g,\n geometry,\n stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === \"FeatureCollection\",\n isFeature = geojson.type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[i].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n featureProperties = isFeatureCollection\n ? geojson.features[i].properties\n : isFeature\n ? geojson.properties\n : {};\n featureBBox = isFeatureCollection\n ? geojson.features[i].bbox\n : isFeature\n ? geojson.bbox\n : undefined;\n featureId = isFeatureCollection\n ? geojson.features[i].id\n : isFeature\n ? geojson.id\n : undefined;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[g]\n : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (\n callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (\n callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (\n callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function (\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (\n callback(\n feature(geometry, properties, { bbox: bbox, id: id }),\n featureIndex,\n 0\n ) === false\n )\n return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n\n for (\n var multiFeatureIndex = 0;\n multiFeatureIndex < geometry.coordinates.length;\n multiFeatureIndex++\n ) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate,\n };\n if (\n callback(feature(geom, properties), featureIndex, multiFeatureIndex) ===\n false\n )\n return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function (currentFeature, featureIndex, multiFeatureIndex) {\n if (\n featureIndex === 0 &&\n multiFeatureIndex === 0 &&\n initialValue === undefined\n )\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (\n coordEach(\n feature,\n function (\n currentCoord,\n coordIndex,\n featureIndexCoord,\n multiPartIndexCoord,\n geometryIndex\n ) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (\n previousCoords === undefined ||\n featureIndex > previousFeatureIndex ||\n multiPartIndexCoord > previousMultiIndex ||\n geometryIndex > prevGeomIndex\n ) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature.properties\n );\n if (\n callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false\n )\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false\n )\n return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentIndex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function (\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) {\n if (started === false && initialValue === undefined)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (\n var geometryIndex = 0;\n geometryIndex < coords.length;\n geometryIndex++\n ) {\n if (\n callback(\n lineString(coords[geometryIndex], feature.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex =\n coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex =\n coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\nexport { coordAll, coordEach, coordReduce, featureEach, featureReduce, findPoint, findSegment, flattenEach, flattenReduce, geomEach, geomReduce, lineEach, lineReduce, propEach, propReduce, segmentEach, segmentReduce };\n","import { featureEach, coordEach } from '@turf/meta';\nimport { point, featureCollection } from '@turf/helpers';\n\n/**\n * Takes a feature or set of features and returns all positions as {@link Point|points}.\n *\n * @name explode\n * @param {GeoJSON} geojson input features\n * @returns {FeatureCollection<point>} points representing the exploded input features\n * @throws {Error} if it encounters an unknown geometry type\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var explode = turf.explode(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, explode]\n */\nfunction explode(geojson) {\n var points = [];\n if (geojson.type === \"FeatureCollection\") {\n featureEach(geojson, function (feature) {\n coordEach(feature, function (coord) {\n points.push(point(coord, feature.properties));\n });\n });\n } else {\n coordEach(geojson, function (coord) {\n points.push(point(coord, geojson.properties));\n });\n }\n return featureCollection(points);\n}\n\nexport default explode;\n","import { coordEach } from \"@turf/meta\";\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n var result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, function (coord) {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nbbox[\"default\"] = bbox;\nexport default bbox;\n","import bbox from \"@turf/bbox\";\nimport { point, } from \"@turf/helpers\";\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Point\n * @param {Object} [options.bbox={}] Translate GeoJSON BBox to Point\n * @param {Object} [options.id={}] Translate GeoJSON Id to Point\n * @returns {Feature<Point>} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.points([\n * [-97.522259, 35.4691],\n * [-97.502754, 35.463455],\n * [-97.508269, 35.463245]\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */\nfunction center(geojson, options) {\n if (options === void 0) { options = {}; }\n var ext = bbox(geojson);\n var x = (ext[0] + ext[2]) / 2;\n var y = (ext[1] + ext[3]) / 2;\n return point([x, y], options.properties, options);\n}\nexport default center;\n","/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n if (!geojson) {\n throw new Error(\"geojson is required\");\n }\n switch (geojson.type) {\n case \"Feature\":\n return cloneFeature(geojson);\n case \"FeatureCollection\":\n return cloneFeatureCollection(geojson);\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n case \"MultiPoint\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n case \"GeometryCollection\":\n return cloneGeometry(geojson);\n default:\n throw new Error(\"unknown GeoJSON type\");\n }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n var cloned = { type: \"Feature\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"properties\":\n case \"geometry\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = cloneProperties(geojson.properties);\n cloned.geometry = cloneGeometry(geojson.geometry);\n return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n var cloned = {};\n if (!properties) {\n return cloned;\n }\n Object.keys(properties).forEach(function (key) {\n var value = properties[key];\n if (typeof value === \"object\") {\n if (value === null) {\n // handle null\n cloned[key] = null;\n }\n else if (Array.isArray(value)) {\n // handle Array\n cloned[key] = value.map(function (item) {\n return item;\n });\n }\n else {\n // handle generic Object\n cloned[key] = cloneProperties(value);\n }\n }\n else {\n cloned[key] = value;\n }\n });\n return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n var cloned = { type: \"FeatureCollection\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"features\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function (feature) {\n return cloneFeature(feature);\n });\n return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n var geom = { type: geometry.type };\n if (geometry.bbox) {\n geom.bbox = geometry.bbox;\n }\n if (geometry.type === \"GeometryCollection\") {\n geom.geometries = geometry.geometries.map(function (g) {\n return cloneGeometry(g);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n var cloned = coords;\n if (typeof cloned[0] !== \"object\") {\n return cloned.slice();\n }\n return cloned.map(function (coord) {\n return deepSlice(coord);\n });\n}\nexport default clone;\n","import { isNumber, } from \"@turf/helpers\";\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nexport function getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" &&\n coord.geometry !== null &&\n coord.geometry.type === \"Point\") {\n return coord.geometry.coordinates;\n }\n if (coord.type === \"Point\") {\n return coord.coordinates;\n }\n }\n if (Array.isArray(coord) &&\n coord.length >= 2 &&\n !Array.isArray(coord[0]) &&\n !Array.isArray(coord[1])) {\n return coord;\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nexport function getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n }\n else {\n // Geometry\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nexport function containsNumber(coordinates) {\n if (coordinates.length > 1 &&\n isNumber(coordinates[0]) &&\n isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n value.type);\n }\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nexport function featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n }\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nexport function getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nexport function getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\n","import { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians, } from \"@turf/helpers\";\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n if (options === void 0) { options = {}; }\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexport default distance;\n","import clone from \"@turf/clone\";\nimport distance from \"@turf/distance\";\nimport { featureEach } from \"@turf/meta\";\n/**\n * Takes a reference {@link Point|point} and a FeatureCollection of Features\n * with Point geometries and returns the\n * point from the FeatureCollection closest to the reference. This calculation\n * is geodesic.\n *\n * @name nearestPoint\n * @param {Coord} targetPoint the reference point\n * @param {FeatureCollection<Point>} points against input point set\n * @returns {Feature<Point>} the closest point in the set to the reference point\n * @example\n * var targetPoint = turf.point([28.965797, 41.010086], {\"marker-color\": \"#0F0\"});\n * var points = turf.featureCollection([\n * turf.point([28.973865, 41.011122]),\n * turf.point([28.948459, 41.024204]),\n * turf.point([28.938674, 41.013324])\n * ]);\n *\n * var nearest = turf.nearestPoint(targetPoint, points);\n *\n * //addToMap\n * var addToMap = [targetPoint, points, nearest];\n * nearest.properties['marker-color'] = '#F00';\n */\nfunction nearestPoint(targetPoint, points) {\n // Input validation\n if (!targetPoint)\n throw new Error(\"targetPoint is required\");\n if (!points)\n throw new Error(\"points is required\");\n var nearest;\n var minDist = Infinity;\n var bestFeatureIndex = 0;\n featureEach(points, function (pt, featureIndex) {\n var distanceToPoint = distance(targetPoint, pt);\n if (distanceToPoint < minDist) {\n bestFeatureIndex = featureIndex;\n minDist = distanceToPoint;\n }\n });\n nearest = clone(points.features[bestFeatureIndex]);\n nearest.properties.featureIndex = bestFeatureIndex;\n nearest.properties.distanceToPoint = minDist;\n return nearest;\n}\nexport default nearestPoint;\n","import { getCoord, getGeom } from \"@turf/invariant\";\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n * [-81, 41],\n * [-81, 47],\n * [-72, 47],\n * [-72, 41],\n * [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nexport default function booleanPointInPolygon(point, polygon, options) {\n if (options === void 0) { options = {}; }\n // validation\n if (!point) {\n throw new Error(\"point is required\");\n }\n if (!polygon) {\n throw new Error(\"polygon is required\");\n }\n var pt = getCoord(point);\n var geom = getGeom(polygon);\n var type = geom.type;\n var bbox = polygon.bbox;\n var polys = geom.coordinates;\n // Quick elimination if point is not inside bbox\n if (bbox && inBBox(pt, bbox) === false) {\n return false;\n }\n // normalize to multipolygon\n if (type === \"Polygon\") {\n polys = [polys];\n }\n var insidePoly = false;\n for (var i = 0; i < polys.length && !insidePoly; i++) {\n // check if it is in the outer ring first\n if (inRing(pt, polys[i][0], options.ignoreBoundary)) {\n var inHole = false;\n var k = 1;\n // check for the point in any of the holes\n while (k < polys[i].length && !inHole) {\n if (inRing(pt, polys[i][k], !options.ignoreBoundary)) {\n inHole = true;\n }\n k++;\n }\n if (!inHole) {\n insidePoly = true;\n }\n }\n }\n return insidePoly;\n}\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */\nfunction inRing(pt, ring, ignoreBoundary) {\n var isInside = false;\n if (ring[0][0] === ring[ring.length - 1][0] &&\n ring[0][1] === ring[ring.length - 1][1]) {\n ring = ring.slice(0, ring.length - 1);\n }\n for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n var xi = ring[i][0];\n var yi = ring[i][1];\n var xj = ring[j][0];\n var yj = ring[j][1];\n var onBoundary = pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0 &&\n (xi - pt[0]) * (xj - pt[0]) <= 0 &&\n (yi - pt[1]) * (yj - pt[1]) <= 0;\n if (onBoundary) {\n return !ignoreBoundary;\n }\n var intersect = yi > pt[1] !== yj > pt[1] &&\n pt[0] < ((xj - xi) * (pt[1] - yi)) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction inBBox(pt, bbox) {\n return (bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1]);\n}\n","import explode from '@turf/explode';\nimport centroid from '@turf/center';\nimport nearestPoint from '@turf/nearest-point';\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport { featureCollection, point, feature } from '@turf/helpers';\n\n/**\n * Takes a Feature or FeatureCollection and returns a {@link Point} guaranteed to be on the surface of the feature.\n *\n * * Given a {@link Polygon}, the point will be in the area of the polygon\n * * Given a {@link LineString}, the point will be along the string\n * * Given a {@link Point}, the point will the same as the input\n *\n * @name pointOnFeature\n * @param {GeoJSON} geojson any Feature or FeatureCollection\n * @returns {Feature<Point>} a point on the surface of `input`\n * @example\n * var polygon = turf.polygon([[\n * [116, -36],\n * [131, -32],\n * [146, -43],\n * [155, -25],\n * [133, -9],\n * [111, -22],\n * [116, -36]\n * ]]);\n *\n * var pointOnPolygon = turf.pointOnFeature(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, pointOnPolygon];\n */\nfunction pointOnFeature(geojson) {\n // normalize\n var fc = normalize(geojson);\n\n // get centroid\n var cent = centroid(fc);\n\n // check to see if centroid is on surface\n var onSurface = false;\n var i = 0;\n while (!onSurface && i < fc.features.length) {\n var geom = fc.features[i].geometry;\n var x, y, x1, y1, x2, y2, k;\n var onLine = false;\n if (geom.type === \"Point\") {\n if (\n cent.geometry.coordinates[0] === geom.coordinates[0] &&\n cent.geometry.coordinates[1] === geom.coordinates[1]\n ) {\n onSurface = true;\n }\n } else if (geom.type === \"MultiPoint\") {\n var onMultiPoint = false;\n k = 0;\n while (!onMultiPoint && k < geom.coordinates.length) {\n if (\n cent.geometry.coordinates[0] === geom.coordinates[k][0] &&\n cent.geometry.coordinates[1] === geom.coordinates[k][1]\n ) {\n onSurface = true;\n onMultiPoint = true;\n }\n k++;\n }\n } else if (geom.type === \"LineString\") {\n k = 0;\n while (!onLine && k < geom.coordinates.length - 1) {\n x = cent.geometry.coordinates[0];\n y = cent.geometry.coordinates[1];\n x1 = geom.coordinates[k][0];\n y1 = geom.coordinates[k][1];\n x2 = geom.coordinates[k + 1][0];\n y2 = geom.coordinates[k + 1][1];\n if (pointOnSegment(x, y, x1, y1, x2, y2)) {\n onLine = true;\n onSurface = true;\n }\n k++;\n }\n } else if (geom.type === \"MultiLineString\") {\n var j = 0;\n while (j < geom.coordinates.length) {\n onLine = false;\n k = 0;\n var line = geom.coordinates[j];\n while (!onLine && k < line.length - 1) {\n x = cent.geometry.coordinates[0];\n y = cent.geometry.coordinates[1];\n x1 = line[k][0];\n y1 = line[k][1];\n x2 = line[k + 1][0];\n y2 = line[k + 1][1];\n if (pointOnSegment(x, y, x1, y1, x2, y2)) {\n onLine = true;\n onSurface = true;\n }\n k++;\n }\n j++;\n }\n } else if (geom.type === \"Polygon\" || geom.type === \"MultiPolygon\") {\n if (booleanPointInPolygon(cent, geom)) {\n onSurface = true;\n }\n }\n i++;\n }\n if (onSurface) {\n return cent;\n } else {\n var vertices = featureCollection([]);\n for (i = 0; i < fc.features.length; i++) {\n vertices.features = vertices.features.concat(\n explode(fc.features[i]).features\n );\n }\n // Remove distanceToPoint properties from nearestPoint()\n return point(nearestPoint(cent, vertices).geometry.coordinates);\n }\n}\n\n/**\n * Normalizes any GeoJSON to a FeatureCollection\n *\n * @private\n * @name normalize\n * @param {GeoJSON} geojson Any GeoJSON\n * @returns {FeatureCollection} FeatureCollection\n */\nfunction normalize(geojson) {\n if (geojson.type !== \"FeatureCollection\") {\n if (geojson.type !== \"Feature\") {\n return featureCollection([feature(geojson)]);\n }\n return featureCollection([geojson]);\n }\n return geojson;\n}\n\nfunction pointOnSegment(x, y, x1, y1, x2, y2) {\n var ab = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n var ap = Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n var pb = Math.sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y));\n return ab === ap + pb;\n}\n\nexport default pointOnFeature;\n","/*\n * Leaflet.TextPath - Shows text along a polyline\n * Inspired by Tom Mac Wright article :\n * https://web.archive.org/web/20130312131812/http://mapbox.com/osmdev/2012/11/20/getting-serious-about-svg/\n */\n\n(function () {\n\nvar __onAdd = L.Polyline.prototype.onAdd,\n __onRemove = L.Polyline.prototype.onRemove,\n __updatePath = L.Polyline.prototype._updatePath,\n __bringToFront = L.Polyline.prototype.bringToFront;\n\n\nvar PolylineTextPath = {\n\n onAdd: function (map) {\n __onAdd.call(this, map);\n this._textRedraw();\n },\n\n onRemove: function (map) {\n map = map || this._map;\n if (map && this._textNode && this._renderer._container)\n this._renderer._container.removeChild(this._textNode);\n __onRemove.call(this, map);\n },\n\n bringToFront: function () {\n __bringToFront.call(this);\n this._textRedraw();\n },\n\n _updatePath: function () {\n __updatePath.call(this);\n this._textRedraw();\n },\n\n _textRedraw: function () {\n var text = this._text,\n options = this._textOptions;\n if (text) {\n this.setText(null).setText(text, options);\n }\n },\n\n setText: function (text, options) {\n this._text = text;\n this._textOptions = options;\n\n /* If not in SVG mode or Polyline not added to map yet return */\n /* setText will be called by onAdd, using value stored in this._text */\n if (!L.Browser.svg || typeof this._map === 'undefined') {\n return this;\n }\n\n var defaults = {\n repeat: false,\n fillColor: 'black',\n attributes: {},\n below: false,\n };\n options = L.Util.extend(defaults, options);\n\n /* If empty text, hide */\n if (!text) {\n if (this._textNode && this._textNode.parentNode) {\n this._renderer._container.removeChild(this._textNode);\n \n /* delete the node, so it will not be removed a 2nd time if the layer is later removed from the map */\n delete this._textNode;\n }\n return this;\n }\n\n text = text.replace(/ /g, '\\u00A0'); // Non breakable spaces\n var id = 'pathdef-' + L.Util.stamp(this);\n var svg = this._renderer._container;\n this._path.setAttribute('id', id);\n\n if (options.repeat) {\n if (options.repeat!=true && options.repeat>=1) {\n text=text.padStart(options.repeat, '\\u00A0');\n }\n /* Compute single pattern length */\n var pattern = L.SVG.create('text');\n for (var attr in options.attributes)\n pattern.setAttribute(attr, options.attributes[attr]);\n pattern.appendChild(document.createTextNode(text));\n svg.appendChild(pattern);\n var alength = pattern.getComputedTextLength();\n svg.removeChild(pattern);\n\n /* Create string as long as path */\n text = new Array(Math.ceil(isNaN(this._path.getTotalLength() / alength) ? 0 : this._path.getTotalLength() / alength)).join(text);\n }\n\n /* Put it along the path using textPath */\n var textNode = L.SVG.create('text'),\n textPath = L.SVG.create('textPath');\n\n var dy = options.offset || this._path.getAttribute('stroke-width');\n\n textPath.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", '#'+id);\n textNode.setAttribute('dy', dy);\n for (var attr in options.attributes)\n textNode.setAttribute(attr, options.attributes[attr]);\n textPath.appendChild(document.createTextNode(text));\n textNode.appendChild(textPath);\n this._textNode = textNode;\n\n if (options.below) {\n svg.insertBefore(textNode, svg.firstChild);\n }\n else {\n svg.appendChild(textNode);\n }\n\n /* Center text according to the path's bounding box */\n if (options.center) {\n var textLength = textNode.getComputedTextLength();\n var pathLength = this._path.getTotalLength();\n /* Set the position for the left side of the textNode */\n textNode.setAttribute('dx', ((pathLength / 2) - (textLength / 2)));\n }\n\n /* Change label rotation (if required) */\n if (options.orientation) {\n var rotateAngle = 0;\n switch (options.orientation) {\n case 'flip':\n rotateAngle = 180;\n break;\n case 'perpendicular':\n rotateAngle = 90;\n break;\n default:\n rotateAngle = options.orientation;\n }\n\n var rotatecenterX = (textNode.getBBox().x + textNode.getBBox().width / 2);\n var rotatecenterY = (textNode.getBBox().y + textNode.getBBox().height / 2);\n textNode.setAttribute('transform','rotate(' + rotateAngle + ' ' + rotatecenterX + ' ' + rotatecenterY + ')');\n }\n\n /* Initialize mouse events for the additional nodes */\n if (this.options.interactive) {\n if (L.Browser.svg || !L.Browser.vml) {\n textPath.setAttribute('class', 'leaflet-interactive');\n }\n\n var events = ['click', 'dblclick', 'mousedown', 'mouseover',\n 'mouseout', 'mousemove', 'contextmenu'];\n for (var i = 0; i < events.length; i++) {\n L.DomEvent.on(textNode, events[i], this.fire, this);\n }\n }\n\n return this;\n }\n};\n\nL.Polyline.include(PolylineTextPath);\n\nL.LayerGroup.include({\n setText: function(text, options) {\n for (var layer in this._layers) {\n if (typeof this._layers[layer].setText === 'function') {\n this._layers[layer].setText(text, options);\n }\n }\n return this;\n }\n});\n\n\n\n})();\n","@use '~leaflet/dist/leaflet.css';\n@use '../../utils/leaflet-simple-locate.css';\n@use '~@raruto/leaflet-elevation/dist/leaflet-elevation.min.css';\n@use '~leaflet.markercluster/dist/MarkerCluster.css';\n\n#map {\n position: relative;\n font-family: var(--font-family);\n display: block;\n}\n\n.leaflet-control-layers-toggle,\n.leaflet-retina .leaflet-control-layers-toggle {\n background-image: var(--layers-image-src);\n}\n\n.treks-map {\n height: 100%;\n}\n\n.trek-map {\n height: calc(100%);\n}\n\n.trek-map-and-elevation {\n height: calc(100% - var(--elevation-height));\n}\n\n.common-map {\n height: 100%;\n}\n\n#elevation {\n position: relative;\n background-color: #ffffff;\n}\n\n.elevation-control .background {\n border-radius: 0px;\n}\n\n.custom-theme.elevation-control .axis text {\n fill: var(--color-on-surface);\n}\n\n.custom-theme.elevation-control .axis line,\n.custom-theme.elevation-control .axis path {\n stroke: var(--color-on-surface);\n}\n\n.custom-theme.elevation-control .mouse-focus-label-rect {\n fill: var(--color-primary-container);\n stroke: var(--color-on-primary-container);\n}\n\n.custom-theme.elevation-control .mouse-focus-label-text {\n fill: var(--color-on-primary-container);\n}\n\n.custom-theme.elevation-control .background {\n background-color: var(--color-background);\n}\n\n.custom-theme.elevation-control .mouse-focus-line {\n stroke: var(--color-on-surface);\n}\n\n.use-theme-color.elevation-control .area path.altitude,\n.use-theme-color .legend-altitude rect.area {\n fill: var(--color-primary-app);\n stroke: var(--color-trek-line);\n}\n\n.custom-theme.height-focus.circle-lower {\n fill: #ffffff;\n stroke: var(--color-on-surface);\n}\n\n.custom-theme.elevation-polyline {\n stroke: var(--color-trek-line);\n}\n\n.custom-theme.height-focus.line,\n.custom-theme.height-focus-label {\n display: none;\n}\n\n.custom-theme .elevation-summary {\n margin: -12px 0px 0px 36px;\n font-size: 8px;\n font-family: var(--font-family);\n :nth-child(3)::after {\n display: none;\n }\n .avgele {\n display: none;\n }\n}\n\n.treks-marker-cluster-group-icon,\n.touristic-content-marker-cluster-group-icon,\n.touristic-event-marker-cluster-group-icon,\n.outdoor-site-marker-cluster-group-icon {\n background-color: var(--color-clusters);\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n color: var(--color-on-primary);\n font-size: 16px;\n height: 100%;\n width: 100%;\n}\n\n.trek-marker,\n.step-marker,\n.touristic-content-marker,\n.touristic-event-marker,\n.outdoor-site-marker,\n.selected-trek-marker,\n.selected-step-marker,\n.selected-touristic-content-marker,\n.selected-touristic-event-marker,\n.selected-outdoor-site-marker,\n.departure-marker,\n.arrival-marker {\n width: 100%;\n height: 100%;\n .trek-marker-container,\n .step-marker-container,\n .touristic-content-marker-container,\n .touristic-event-marker-container,\n .outdoor-site-marker-container {\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50% 50% 50% 0;\n border: 2px solid #ffffff;\n width: 100%;\n height: 100%;\n transform: rotate(-44deg);\n img,\n .step-number {\n display: flex;\n justify-content: center;\n align-items: center;\n transform: rotate(44deg);\n position: absolute;\n z-index: 20;\n width: var(--main-marker-icon-width) !important;\n }\n }\n\n .touristic-content-marker-container,\n .touristic-event-marker-container,\n .outdoor-site-marker-container {\n transform: rotate(-42deg);\n }\n\n .trek-marker-container,\n .touristic-content-marker-container,\n .touristic-event-marker-container,\n .outdoor-site-marker-container {\n background-color: var(--color-markers);\n }\n .step-marker-container {\n background-color: var(--color-markers);\n }\n}\n\n.departure-marker {\n background-color: #008000;\n border-radius: 14px;\n width: 100%;\n height: 100%;\n border: 4px #ffffff solid;\n}\n\n.arrival-marker {\n background-color: #ff0000;\n border-radius: 14px;\n width: 100%;\n height: 100%;\n border: 4px #ffffff solid;\n}\n\n.selected-trek-marker,\n.selected-step-marker,\n.selected-touristic-content-marker,\n.selected-touristic-event-marker,\n.selected-outdoor-site-marker {\n height: 100%;\n width: 100%;\n .trek-marker-container,\n .step-marker-container,\n .touristic-content-marker-container,\n .touristic-event-marker-container,\n .outdoor-site-marker-container {\n width: 100%;\n height: 100%;\n .trek-marker,\n .step-number {\n width: 100% !important;\n }\n }\n}\n\n.step-marker,\n.selected-step-marker {\n color: var(--color-on-surface-variant);\n}\n\n.map-loader-container {\n position: absolute;\n z-index: 500;\n width: 100%;\n height: 100%;\n background-color: var(--color-background);\n display: flex;\n justify-content: center;\n align-items: center;\n .loader {\n width: 48px;\n height: 48px;\n border: 5px solid var(--color-primary-container);\n border-bottom-color: var(--color-on-primary-container);\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n animation: rotation 1s linear infinite;\n }\n\n @keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n}\n\n.trek-departure-popup,\n.touristic-content-coordinates-popup,\n.touristic-event-coordinates-popup,\n.outdoor-site-coordinates-popup {\n position: relative;\n display: flex;\n flex-direction: column;\n img {\n border-top-left-radius: var(--border-radius, 8px);\n border-top-right-radius: var(--border-radius, 8px);\n }\n .trek-name,\n .touristic-content-name,\n .touristic-event-name,\n .outdoor-site-name {\n color: var(--color-primary-app);\n font-weight: 700;\n font-size: 16px;\n line-height: 24px;\n padding: 12px;\n }\n .trek-button,\n .touristic-content-button,\n .touristic-event-button,\n .outdoor-site-button {\n margin: 0px 8px 16px 8px;\n user-select: none;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--color-on-primary-container);\n background-color: var(--color-background);\n color: var(--color-on-primary-container);\n padding: 12px 24px;\n border-radius: var(--border-radius, 8px);\n box-sizing: border-box;\n position: relative;\n gap: 8px;\n white-space: nowrap;\n line-height: 20px;\n letter-spacing: 0.1000000015px;\n font-size: 14px;\n font-weight: 500;\n transition: box-shadow 0.2s ease-in-out 0s;\n font-family: var(--font-family);\n &:hover {\n background-color: var(--color-primary-container);\n }\n }\n}\n\n.poi-tooltip,\n.information-desks-tooltip,\n.sensitive-area-tooltip,\n.touristic-content-tooltip,\n.touristic-event-tooltip,\n.parking-tooltip,\n.signage-tootltip {\n .poi-name,\n .information-desks-name,\n .sensitive-area-name,\n .touristic-content-name,\n .touristic-event-name,\n .parking-name,\n .signage-name {\n color: var(--color-primary-app);\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n }\n}\n\n.sensitiveAreasCheckboxContainer {\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: #ffffff;\n padding: 8px;\n border-radius: var(--border-radius, 8px);\n user-select: none;\n input,\n label {\n cursor: pointer;\n }\n input {\n margin: 0;\n }\n label {\n padding-left: 8px;\n }\n}\n\n.poi-marker,\n.information-desks-marker,\n.touristic-content-marker,\n.touristic-event-marker,\n.outdoor-site-marker,\n.signage-marker {\n background-color: var(--color-markers);\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n width: 100%;\n img {\n width: var(--common-marker-icon-width) !important;\n height: auto;\n }\n}\n\n.signage-marker {\n overflow: hidden;\n border-radius: 0%;\n img {\n width: 30% !important;\n margin-right: 8px;\n }\n .signage-name {\n color: white;\n white-space: nowrap;\n max-width: 50%;\n }\n}\n\n.parking-marker {\n width: 100%;\n height: 100%;\n img {\n width: 100% !important;\n height: auto;\n }\n}\n\n.point-reference-icon {\n color: var(--reference-point-color);\n background-color: var(--reference-point-background-color);\n border: 1px solid #ffffff;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n font-size: 24px;\n}\n\n.leaflet-popup {\n bottom: 40px !important;\n left: -110px !important;\n}\n\n.leaflet-popup-content-wrapper {\n cursor: default;\n padding: 0px;\n background-color: var(--color-background);\n box-shadow: var(--elevation-2);\n}\n\n.leaflet-popup-tip {\n background-color: var(--color-background);\n}\n\n.leaflet-popup-content {\n width: 221px;\n margin: 0;\n}\n\n.leaflet-simple-locate svg {\n --primary-rgb: 00, 00, 00;\n}\n\n.leaflet-simple-locate-icon {\n --primary-rgb: 25, 135, 84;\n}\n\n.leaflet-simple-locate-orientation {\n --primary-rgb: 25, 135, 84 !important;\n}\n\n.leaflet-simple-locate.button-locate {\n --primary-rgb: 25, 135, 84;\n margin: 10px 0px 0px 10px !important;\n position: relative;\n transform: none;\n top: auto;\n left: auto;\n width: 34px;\n height: 34px;\n border-radius: 4px;\n border: 2px solid rgba(0, 0, 0, 0.2) !important;\n box-shadow: none;\n}\n\n.leaflet-interactive {\n cursor: grab;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.grw-elevation-visibility-button-container {\n z-index: 4000;\n position: absolute;\n left: 10px;\n bottom: 36px;\n}\n\n.leaflet-simple-locate-icon {\n fill: #1e90ff;\n}\n\n.layer-loader-container {\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.8);\n position: absolute;\n z-index: 8000;\n display: flex;\n justify-content: center;\n align-items: center;\n .layer-loader {\n width: 48px;\n height: 48px;\n border: 5px solid var(--color-primary-app);\n border-bottom-color: transparent;\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n animation: rotation 1s linear infinite;\n }\n\n @keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, getAssetPath, Build, Listen, Element, forceUpdate } from '@stencil/core';\nimport { Feature, FeatureCollection } from 'geojson';\nimport L, { MarkerClusterGroup, TileLayer } from 'leaflet';\nimport 'leaflet-i18n';\nimport '@raruto/leaflet-elevation/dist/leaflet-elevation.min.js';\nimport 'leaflet.markercluster/dist/leaflet.markercluster.js';\nimport '../../utils/leaflet-simple-locate.min.js';\nimport state, { onChange } from 'store/store';\nimport { translate } from 'i18n/i18n';\nimport { getTrekGeometry } from 'services/treks.service';\nimport { tileLayerOffline } from 'leaflet.offline';\nimport { getDataInStore } from 'services/grw-db.service';\nimport { checkFileInStore, getFileInStore } from 'utils/utils';\nimport { Capacitor } from '@capacitor/core';\nimport { Directory, Filesystem } from '@capacitor/filesystem';\nimport { Trek } from 'components';\nimport pointOnFeature from '@turf/point-on-feature';\nimport bbox from '@turf/bbox';\nimport 'leaflet-textpath';\n\n@Component({\n tag: 'grw-map',\n styleUrl: 'grw-map.scss',\n shadow: true,\n})\nexport class GrwMap {\n @Element() mapElement: HTMLElement;\n mapRef: HTMLElement;\n hostElement: HTMLElement;\n @Prop() maxZoom = 19;\n\n @Event() trekCardPress: EventEmitter<number>;\n @Event() touristicContentCardPress: EventEmitter<number>;\n @Event() touristicEventCardPress: EventEmitter<number>;\n @Event() outdoorSiteCardPress: EventEmitter<number>;\n @Event() outdoorCourseCardPress: EventEmitter<number>;\n\n @State() mapIsReady = false;\n @Prop() nameLayer: string;\n @Prop() urlLayer: string;\n @Prop() attributionLayer: string;\n @Prop() customGeojsonUrl: string;\n @Prop() customGeojsonName: string;\n @Prop() customGeojsonColor: string;\n @Prop() customGeojsonWeight: string;\n @Prop() customWmsUrl: string;\n @Prop() customWmsLayers: string;\n @Prop() customWmsName: string;\n @Prop() customWmsAttribution: string;\n @Prop() customTileUrl: string;\n @Prop() customTileName: string;\n @Prop() customTileAttribution: string;\n @Prop() customLayersRefreshInterval = 0;\n\n @Prop() fontFamily = 'Roboto';\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 = '#4974a5';\n @Prop() colorMarkers = null;\n @Prop() colorClusters = null;\n @Prop() colorOutdoorArea = '#ffb700';\n\n @Prop() tilesMaxZoomOffline = 16;\n\n @Prop() grwApp = false;\n\n @Prop() mainMarkerSize = 32;\n @Prop() selectedMainMarkerSize = 48;\n @Prop() mainClusterSize = 48;\n @Prop() commonMarkerSize = 48;\n @Prop() departureArrivalMarkerSize = 14;\n @Prop() pointReferenceMarkerSize = 24;\n\n @Prop() elevationHeight = 280;\n @Prop() mobileElevationHeight = 280;\n @Prop() largeViewSize = 1024;\n @Prop() elevationDefaultState = 'visible';\n @Prop() isLargeView = false;\n @Prop() fabBackgroundColor = '#eaddff';\n @Prop() fabColor = '#21005d';\n\n @Prop() arrowRepeat = 20;\n\n map: L.Map;\n bounds;\n treksLayer: L.GeoJSON<any>;\n toutisticContentsLayer: L.GeoJSON<any>;\n touristicEventsLayer: L.GeoJSON<any>;\n\n treksMarkerClusterGroup: MarkerClusterGroup;\n touristicContentsMarkerClusterGroup: MarkerClusterGroup;\n touristicEventsMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesMarkerClusterGroup: MarkerClusterGroup;\n outdoorSitesLayer: L.GeoJSON<any>;\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 selectedTouristicEventLayer: L.GeoJSON<any>;\n selectedOutdoorSiteLayer: L.GeoJSON<any>;\n selectedOutdoorCourseLayer: L.GeoJSON<any>;\n currentReferencePointsLayer: L.GeoJSON<any>;\n currentParkingLayer: L.GeoJSON<any>;\n currentSensitiveAreasLayer: L.GeoJSON<any>;\n currentPoisLayer: L.GeoJSON<any>;\n currentSignagesLayer: L.GeoJSON<any>;\n currentInformationDesksLayer: L.GeoJSON<any>;\n currentToutisticContentsLayer: L.GeoJSON<any>;\n currentTouristicEventsLayer: L.GeoJSON<any>;\n currentToutisticContentLayer: L.GeoJSON<any>;\n currentToutisticEventLayer: L.GeoJSON<any>;\n currentOutdoorSiteLayer: L.GeoJSON<any>;\n currentOutdoorCourseLayer: L.GeoJSON<any>;\n currentRelatedOutdoorSitesLayer: L.GeoJSON<any>;\n currentRelatedOutdoorCoursesLayer: L.GeoJSON<any>;\n elevationControl: L.Control.Layers;\n departureArrivalLayer: L.GeoJSON<any>;\n layersControl: L.Control.Layers;\n userLayersState: {\n [key: number]: boolean;\n } = {};\n tileLayer: { key: string; value: TileLayer }[] = [];\n customLayers: { [name: string]: L.Layer } = {};\n refreshIntervalId: any;\n trekPopupIsOpen: boolean;\n stepPopupIsOpen: boolean;\n touristicContentPopupIsOpen: boolean;\n touristicEventPopupIsOpen: boolean;\n outdoorSitePopupIsOpen: boolean;\n outdoorCoursePopupIsOpen: boolean;\n\n layerDataIsLoading: boolean;\n\n handleTreksWithinBoundsBind: (event: any) => void = this.handleTreksWithinBounds.bind(this);\n handleTouristicContentsWithinBoundsBind: (event: any) => void = this.handleTouristicContentsWithinBounds.bind(this);\n handleTouristicEventsWithinBoundsBind: (event: any) => void = this.handleTouristicEventsWithinBounds.bind(this);\n handleOutdoorSitesWithinBoundsBind: (event: any) => void = this.handleOutdoorSitesWithinBounds.bind(this);\n\n addTreksController: AbortController = null;\n addTouristicContentsController: AbortController = null;\n addTouristicEventsController: AbortController = null;\n addOutdoorSitesController: AbortController = null;\n addSelectedCurrentTrekController: AbortController = null;\n showTrekLineController: AbortController = null;\n\n viewportState: { [key: string]: boolean } = {};\n hasScrolled = false;\n\n fitBoundsQueued = false;\n\n componentDidUpdate() {\n if (this.map) {\n this.map.invalidateSize();\n if (this.fitBoundsQueued && this.bounds) {\n this.map.fitBounds(this.bounds);\n this.fitBoundsQueued = false;\n }\n }\n }\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 this.viewportState.steps = event.detail;\n if (this.hasScrolled && this.currentStepsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentStepsLayer);\n }\n }\n\n @Listen('descriptionIsInViewport', { target: 'window' })\n descriptionIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.description = event.detail;\n if (this.hasScrolled && this.currentReferencePointsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentReferencePointsLayer);\n }\n }\n\n @Listen('parkingIsInViewport', { target: 'window' })\n parkingIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.parking = event.detail;\n if (this.hasScrolled && this.currentParkingLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentParkingLayer);\n }\n }\n\n @Listen('informationPlacesIsInViewport', { target: 'window' })\n onInformationPlacesIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.informationPlaces = event.detail;\n if (this.hasScrolled && this.currentInformationDesksLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentInformationDesksLayer);\n }\n }\n\n @Listen('sensitiveAreaIsInViewport', { target: 'window' })\n sensitiveAreaIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.sensitiveArea = event.detail;\n if (this.hasScrolled && this.currentSensitiveAreasLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentSensitiveAreasLayer);\n }\n }\n\n @Listen('poiIsInViewport', { target: 'window' })\n poiIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.pois = event.detail;\n if (this.hasScrolled && this.currentPoisLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentPoisLayer, !state.currentPois || state.currentPois.length === 0);\n }\n }\n\n @Listen('touristicContentsIsInViewport', { target: 'window' })\n touristicContentsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.touristicContents = event.detail;\n if (this.hasScrolled && this.currentToutisticContentsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentToutisticContentsLayer, !state.trekTouristicContents || state.trekTouristicContents.length === 0);\n }\n }\n\n @Listen('touristicEventsIsInViewport', { target: 'window' })\n touristicEventsIsInViewport(event: CustomEvent<boolean>) {\n this.viewportState.touristicEvents = event.detail;\n if (this.hasScrolled && this.currentTouristicEventsLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentTouristicEventsLayer, !state.trekTouristicEvents || state.trekTouristicEvents.length === 0);\n }\n }\n\n @Listen('sitesIsInViewport', { target: 'window' })\n sitesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorSitesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorSitesLayer);\n }\n }\n\n @Listen('coursesIsInViewport', { target: 'window' })\n coursesIsInViewport(event: CustomEvent<boolean>) {\n if (this.currentRelatedOutdoorCoursesLayer && this.layersControl) {\n this.handleLayerVisibility(event.detail, this.currentRelatedOutdoorCoursesLayer);\n }\n }\n\n @Listen('detailScrolled', { target: 'window' })\n onDetailScrolled() {\n if (!this.hasScrolled) {\n this.hasScrolled = true;\n this.applyCachedViewportState();\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.selectedCurrentStepLayer) {\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 @Listen('cardTouristicEventMouseOver', { target: 'window' })\n onTouristicEventMouseOver(event: CustomEvent<number>) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.addSelectedTouristicEvent(event.detail);\n }\n\n @Listen('cardTouristicEventMouseLeave', { target: 'window' })\n onTouristicEventMouseLeave() {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n\n @Listen('trekDownloadedSuccessConfirm', { target: 'window' })\n onTrekDownloadedSuccessConfirm() {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n }\n\n @Listen('trekDeleteSuccessConfirm', { target: 'window' })\n onTrekDeleteSuccessConfirm() {\n this.map.setMaxZoom(this.maxZoom);\n }\n\n @Listen('cardOutdoorSiteMouseOver', { target: 'window' })\n onOutdoorSiteMouseOver(event: CustomEvent<number>) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.addSelectedOutdoorSite(event.detail);\n }\n\n @Listen('cardOutdoorSiteMouseLeave', { target: 'window' })\n onOutdoorSiteMouseLeave() {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n\n componentWillLoad() {\n if (!state.language) {\n state.language = 'fr';\n }\n if (!state.languages) {\n state.languages = ['fr'];\n }\n }\n\n componentDidLoad() {\n this.map = L.map(this.mapRef, { zoom: 4, center: [47, 2], zoomControl: false });\n\n this.map.on('overlayadd', (event: any) => {\n const layer = event.layer;\n const isCustom = Object.values(this.customLayers).includes(layer);\n if (isCustom) {\n this.refreshSingleLayer(layer);\n }\n });\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: tileLayerOffline(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 crossOrigin: true,\n }),\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\n L.control.zoom({ zoomInTitle: translate[state.language].zoomIn, zoomOutTitle: translate[state.language].zoomOut }).addTo(this.map);\n\n L.control.scale({ metric: true, imperial: false }).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 contract.title = translate[state.language].contract;\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 new (L.Control as any).SimpleLocate({\n position: 'topleft',\n className: 'button-locate',\n title: translate[state.language].locate,\n }).addTo(this.map);\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.currentOutdoorSite) {\n this.addOutdoorSite();\n } else if (state.currentOutdoorCourse) {\n this.addOutdoorCourse();\n } else if (state.touristicContents) {\n this.addTouristicContents();\n } else if (state.touristicEvents) {\n this.addTouristicEvents();\n } else if (state.outdoorSites) {\n this.addOutdoorSites();\n }\n\n onChange('currentTreks', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTrek) {\n this.removeTreks();\n this.addTrek();\n } else if (state.currentTreks) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTrek();\n this.removeTouristicContent();\n this.removeTouristicEvent();\n this.addTreks(true);\n }\n });\n\n onChange('currentPois', async () => {\n this.setCurrentPois();\n });\n\n onChange('trekTouristicContents', async () => {\n this.setCurrentTouristicContents();\n });\n\n onChange('trekTouristicEvents', async () => {\n this.setCurrentTouristicEvents();\n });\n\n onChange('currentOutdoorSites', () => {\n if (state.currentOutdoorSites) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.addOutdoorSites(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 this.updateCustomLayersVisibility();\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorSite) {\n this.removeOutdoorCourse();\n this.removeOutdoorSites();\n this.addOutdoorSite();\n } else if (state.currentOutdoorSites) {\n this.removeOutdoorSite();\n this.addOutdoorSites();\n }\n });\n\n onChange('currentOutdoorSite', () => {\n if (state.currentOutdoorCourse) {\n this.removeOutdoorSite();\n this.addOutdoorCourse();\n }\n });\n\n onChange('currentTouristicContent', () => {\n if (this.grwApp) {\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\n onChange('currentTouristicEvent', () => {\n if (this.grwApp) {\n if (state.currentTouristicEvent) {\n this.removeTrek();\n this.removeTouristicEvents();\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\n onChange('currentTouristicContents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicContent) {\n this.removeTouristicContents();\n this.addTouristicContent();\n } else if (state.currentTouristicContents) {\n this.removeTreks();\n this.removeTouristicEvents();\n this.removeOutdoorSites();\n this.removeTouristicContent();\n this.addTouristicContents(true);\n }\n });\n\n onChange('currentTouristicEvents', () => {\n this.hideTrekLine();\n this.removeSelectedCurrentTrek();\n this.removeSelectedTouristicContent();\n this.removeSelectedTouristicEvent();\n if (state.currentTouristicEvent) {\n this.removeTouristicEvents();\n this.addTouristicEvent();\n } else if (state.currentTouristicEvents) {\n this.removeTreks();\n this.removeTouristicContents();\n this.removeOutdoorSites();\n this.removeTouristicEvent();\n this.addTouristicEvents(true);\n }\n });\n\n onChange('mode', () => {\n this.updateCustomLayersVisibility();\n });\n\n this.addCustomLayers();\n\n if (this.customLayersRefreshInterval > 0) {\n this.refreshIntervalId = window.setInterval(() => {\n this.refreshCustomLayers();\n }, this.customLayersRefreshInterval * 60 * 1000);\n }\n }\n\n disconnectedCallback() {\n if (this.refreshIntervalId) {\n window.clearInterval(this.refreshIntervalId);\n }\n }\n\n async addCustomLayers() {\n // 1. Process custom WMS layers\n if (this.customWmsUrl) {\n const wmsUrls = this.customWmsUrl.split(',');\n const wmsLayers = this.customWmsLayers ? this.customWmsLayers.split(',') : [];\n const wmsNames = this.customWmsName ? this.customWmsName.split(',') : [];\n const wmsAttributions = this.customWmsAttribution ? this.customWmsAttribution.split(',') : [];\n\n wmsUrls.forEach((url, index) => {\n const layerName = wmsLayers[index] || '';\n const displayName = wmsNames[index] || `WMS Layer ${index + 1}`;\n const attribution = wmsAttributions[index] || '';\n try {\n const wmsLayer = L.tileLayer.wms(url.trim(), {\n layers: layerName.trim(),\n format: 'image/png',\n transparent: true,\n maxZoom: this.maxZoom,\n version: '1.3.0',\n attribution: attribution.trim(),\n });\n this.customLayers[displayName.trim()] = wmsLayer;\n } catch (e) {\n console.error('Error adding WMS layer:', e);\n }\n });\n }\n // 1.5. Process custom Tile layers (XYZ / WMTS)\n if (this.customTileUrl) {\n const tileUrls = this.customTileUrl.split(',');\n const tileNames = this.customTileName ? this.customTileName.split(',') : [];\n const tileAttributions = this.customTileAttribution ? this.customTileAttribution.split(',') : [];\n\n tileUrls.forEach((url, index) => {\n const displayName = tileNames[index] || `Tile Layer ${index + 1}`;\n const attribution = tileAttributions[index] || '';\n try {\n const tileLayer = L.tileLayer(url.trim(), {\n maxZoom: this.maxZoom,\n attribution: attribution.trim(),\n });\n (tileLayer as any)._originalUrl = url.trim();\n this.customLayers[displayName.trim()] = tileLayer;\n } catch (e) {\n console.error('Error adding custom tile layer:', e);\n }\n });\n }\n\n // 2. Process custom GeoJSON layers\n if (this.customGeojsonUrl) {\n const geojsonUrls = this.customGeojsonUrl.split(',');\n const geojsonNames = this.customGeojsonName ? this.customGeojsonName.split(',') : [];\n const geojsonColors = this.customGeojsonColor ? this.customGeojsonColor.split(',') : [];\n const geojsonWeights = this.customGeojsonWeight ? this.customGeojsonWeight.split(',') : [];\n\n for (let index = 0; index < geojsonUrls.length; index++) {\n const url = geojsonUrls[index].trim();\n const displayName = geojsonNames[index] || `GeoJSON Layer ${index + 1}`;\n const fallbackColor = geojsonColors[index] || '#3388ff';\n const fallbackWeight = geojsonWeights[index] ? parseInt(geojsonWeights[index], 10) : 3;\n\n try {\n const separator = url.includes('?') ? '&' : '?';\n const response = await fetch(`${url}${separator}_t=${Date.now()}`, { cache: 'no-store' });\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const geojsonData = await response.json();\n\n const geojsonLayer = L.geoJSON(geojsonData, {\n style: (feature) => {\n const props = feature?.properties || {};\n const color = props.stroke || props.color || fallbackColor;\n const weight = props['stroke-width'] || props.weight || fallbackWeight;\n const opacity = props['stroke-opacity'] || props.opacity || 1.0;\n const fillColor = props.fill || props.fillColor || color;\n const fillOpacity = props['fill-opacity'] || props.fillOpacity || 0.2;\n\n return {\n color,\n weight,\n opacity,\n fillColor,\n fillOpacity,\n };\n },\n pointToLayer: (feature, latlng) => {\n const props = feature?.properties || {};\n const iconProp = props.icon || props['marker-symbol'];\n const nameProp = props.name || props.title || '';\n const descProp = props.description || props.desc || '';\n\n let marker;\n if (iconProp) {\n const isUrl = iconProp.startsWith('http') || iconProp.startsWith('/') || iconProp.startsWith('assets/');\n const size = this.commonMarkerSize;\n if (isUrl) {\n const customIcon = L.icon({\n iconUrl: iconProp,\n iconSize: [size, size],\n iconAnchor: [size / 2, size],\n });\n marker = L.marker(latlng, { icon: customIcon });\n } else {\n const bgColor = props['marker-color'] || props.backgroundColor || 'transparent';\n const borderColor = props['marker-stroke'] || props.borderColor || (bgColor !== 'transparent' ? '#ffffff' : 'transparent');\n const borderWeight = props['marker-stroke-width'] || (bgColor !== 'transparent' ? 2 : 0);\n const borderRadius = props['marker-radius'] || '50%';\n const customDivIcon = L.divIcon({\n html: `<div style=\"font-size: ${size * 0.6}px; display: flex; align-items: center; justify-content: center; width: ${size}px; height: ${size}px; background-color: ${bgColor}; border: ${borderWeight}px solid ${borderColor}; border-radius: ${borderRadius}; box-sizing: border-box;\">${iconProp}</div>`,\n className: '',\n iconSize: [size, size],\n iconAnchor: [size / 2, size],\n });\n marker = L.marker(latlng, { icon: customDivIcon });\n }\n } else {\n const color = props.stroke || props.color || fallbackColor;\n marker = L.circleMarker(latlng, {\n radius: 8,\n fillColor: color,\n color: '#fff',\n weight: 2,\n opacity: 1,\n fillOpacity: 0.8,\n });\n }\n\n if (nameProp || descProp) {\n let popupContent = `<div class=\"trek-departure-popup\" style=\"font-family: var(--font-family, sans-serif);\">`;\n if (props.image) {\n const imgUrl = props.image;\n popupContent += `<img src=\"${imgUrl}\" style=\"width: 100%; height: auto; border-top-left-radius: var(--border-radius, 8px); border-top-right-radius: var(--border-radius, 8px); max-height: 120px; object-fit: cover;\" />`;\n }\n if (nameProp) {\n popupContent += `<div class=\"trek-name\" style=\"padding: 12px 12px 4px 12px; margin: 0; color: var(--color-primary-app);\">${nameProp}</div>`;\n }\n if (descProp) {\n popupContent += `<div style=\"font-size: 12px; color: var(--color-on-surface-variant, #49454e); padding: ${nameProp ? '0px 12px 12px 12px' : '12px'}; line-height: 1.4; word-break: break-word;\">${descProp}</div>`;\n }\n popupContent += `</div>`;\n marker.bindPopup(popupContent, { closeButton: false });\n }\n return marker;\n }\n });\n\n (geojsonLayer as any)._customUrl = url;\n this.customLayers[displayName.trim()] = geojsonLayer;\n } catch (e) {\n console.error(`Error loading GeoJSON from ${url}:`, e);\n }\n }\n }\n\n this.updateCustomLayersVisibility();\n }\n\n refreshCustomLayers() {\n Object.keys(this.customLayers).forEach(name => {\n const layer = this.customLayers[name];\n if (this.map.hasLayer(layer)) {\n this.refreshSingleLayer(layer);\n }\n });\n }\n\n async refreshSingleLayer(layer: L.Layer) {\n if (layer instanceof L.TileLayer.WMS) {\n layer.setParams({ _t: Date.now() } as any);\n } else if (layer instanceof L.TileLayer) {\n const originalUrl = (layer as any)._originalUrl;\n if (originalUrl) {\n const separator = originalUrl.includes('?') ? '&' : '?';\n layer.setUrl(`${originalUrl}${separator}_t=${Date.now()}`);\n } else {\n layer.redraw();\n }\n } else if (layer instanceof L.GeoJSON) {\n const url = (layer as any)._customUrl;\n if (url) {\n try {\n const separator = url.includes('?') ? '&' : '?';\n const response = await fetch(`${url}${separator}_t=${Date.now()}`, { cache: 'no-store' });\n if (response.ok) {\n const newData = await response.json();\n layer.clearLayers();\n layer.addData(newData);\n }\n } catch (e) {\n console.error(`Error refreshing GeoJSON layer:`, e);\n }\n }\n }\n }\n\n updateCustomLayersVisibility() {\n const shouldShow = !this.grwApp || (state.mode === 'treks' && !!state.currentTrek);\n\n if (shouldShow && Object.keys(this.customLayers).length > 0 && !this.layersControl) {\n const baseLayers = {};\n this.tileLayer.forEach(tl => {\n baseLayers[tl.key] = tl.value;\n });\n this.layersControl = L.control.layers(baseLayers, {}, { collapsed: true }).addTo(this.map);\n }\n\n Object.keys(this.customLayers).forEach(name => {\n const layer = this.customLayers[name];\n if (shouldShow) {\n if (!this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n }\n if (this.layersControl) {\n const hasLayer = (this.layersControl as any)._layers.some(l => l.layer === layer);\n if (!hasLayer) {\n this.layersControl.addOverlay(layer, name);\n }\n }\n } else {\n if (this.map.hasLayer(layer)) {\n this.map.removeLayer(layer);\n }\n if (this.layersControl) {\n this.layersControl.removeLayer(layer);\n }\n }\n });\n\n if (shouldShow && Object.keys(this.customLayers).length > 0) {\n this.handleLayersControlEvent();\n }\n }\n\n handleLayerVisibility(visible: boolean, layer: L.GeoJSON, loading = false) {\n if (visible && !this.map.hasLayer(layer)) {\n layer.addTo(this.map);\n this.layerDataIsLoading = loading;\n forceUpdate(this.hostElement);\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 async addTreks(resetBounds = false) {\n this.addTreksController?.abort();\n this.addTreksController = new AbortController();\n const { signal } = this.addTreksController;\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:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\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\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n // Abort if a newer addTreks() call or removeTreks() was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.treksLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker-icon\" src=${treksIcons[geoJsonPoint.properties.practice]} /></div>`\n : `<div part=\"trek-marker-container\" class=\"trek-marker-container\"></div>`,\n className: 'trek-marker',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image-popup';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-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 /* @ts-ignore */\n trekButton.part = 'trek-button';\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({\n html: '<div part=\"treks-marker-cluster-group-icon\" class=\"treks-marker-cluster-group-icon\">' + cluster.getChildCount() + '</div>',\n className: '',\n iconSize: this.mainClusterSize,\n } 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 this.bounds && this.bounds._northEast && this.bounds._southWest && 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 this.addTreksController?.abort();\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 handleTouristicEventsWithinBounds() {\n if (\n (state.currentTouristicEvents && !state.currentMapBounds) ||\n (state.currentTouristicEvents && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.touristicEventsWithinBounds = state.currentTouristicEvents.filter(touristicEvent =>\n this.map.getBounds().contains(L.latLng(touristicEvent.geometry.coordinates[1], touristicEvent.geometry.coordinates[0])),\n );\n }\n }\n\n handleOutdoorSitesWithinBounds() {\n if (\n (state.currentOutdoorSites && !state.currentMapBounds) ||\n (state.currentOutdoorSites && state.currentMapBounds && state.currentMapBounds.toBBoxString() !== this.map.getBounds().toBBoxString())\n ) {\n state.outdoorSitesWithinBounds = state.currentOutdoorSites.filter(outdoorSite => {\n const coordinates = pointOnFeature(outdoorSite.geometry as any).geometry.coordinates;\n return this.map.getBounds().contains(L.latLng(coordinates[1], coordinates[0]));\n });\n }\n }\n\n async addTrek() {\n const trekInStore: Trek = await getDataInStore('treks', state.currentTrek.id);\n if (trekInStore) {\n this.map.setMaxZoom(this.tilesMaxZoomOffline);\n } else {\n this.map.setMaxZoom(this.maxZoom);\n }\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 onEachFeature: (_feature, layer) => {\n (layer as any).setText('>', {\n repeat: this.arrowRepeat,\n center: true,\n attributes: { 'fill': '#000000', 'font-weight': 'bold', 'font-size': '16px' },\n });\n },\n interactive: false,\n }).addTo(this.map);\n\n if (state.currentTrek.parking_location) {\n const parkingImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/parking.svg`);\n const currentParking: Feature = {\n type: 'Feature',\n properties: { name: state.currentTrek.advised_parking },\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: `<img part=\"parking-marker\" src=${parkingImageSrc} />`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const parkingTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n parkingTooltip.part = 'parking-tooltip';\n parkingTooltip.className = 'parking-tooltip';\n const parkingName = L.DomUtil.create('div');\n parkingName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n parkingTooltip.part = 'parking-name';\n parkingName.className = 'parking-name';\n parkingTooltip.appendChild(parkingName);\n layer.bindTooltip(parkingTooltip).openTooltip();\n });\n },\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 /* @ts-ignore */\n sensitiveAreaTooltip.part = 'sensitive-area-tooltip';\n sensitiveAreaTooltip.className = 'sensitive-area-tooltip';\n const sensitiveAreaName = L.DomUtil.create('div');\n sensitiveAreaName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n sensitiveAreaName.part = 'sensitive-area-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 await this.addCurrentInformationDesks(state.currentTrek);\n\n await this.addCurrentPois();\n\n await this.addCurrentSignages();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\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: `<div part=\"point-reference-icon\" class=\"point-reference-icon\">${index}</div>`,\n className: '',\n iconSize: this.pointReferenceMarkerSize,\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:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\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 part=\"step-marker\" class=\"step-marker\"><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${stepIndex}</div></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-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 /* @ts-ignore */\n trekDeparturePopup.part = 'trek-button';\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 let elevationTranslation = {\n 'y: ': '',\n 'x: ': '',\n 'Total Length: ': 'Longueur totale : ',\n 'Min Elevation: ': 'Altitude min : ',\n 'Max Elevation: ': 'Altitude max : ',\n };\n\n /* @ts-ignore */\n L.registerLocale('fr', elevationTranslation);\n /* @ts-ignore */\n L.setLocale('fr');\n\n const elevations = state.currentTrek.geometry.coordinates.map(coord => coord[2]).filter(el => el !== undefined && el !== null);\n const minMaxElevation = {\n yAxisMin: elevations.length > 0 ? Math.min(...elevations) * 0.75 : 0,\n yAxisMax: elevations.length > 0 ? Math.max(...elevations) * 1.25 : 0,\n };\n\n const elevationOptions = {\n elevationDiv: `#elevation-container`,\n theme: `custom-theme use-theme-color`,\n height: this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight,\n distanceMarkers: { distance: false, direction: false },\n summary: 'inline',\n legend: false,\n downloadLink: false,\n autofitBounds: false,\n ruler: false,\n waypoints: false,\n almostOver: false,\n dragging: false,\n ...minMaxElevation,\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 (this.elevationControl as any).eleDiv.style.display = this.elevationDefaultState === 'visible' ? 'block' : 'none';\n forceUpdate(this.hostElement);\n\n const departureArrival: FeatureCollection = {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[0] },\n properties: null,\n },\n {\n type: 'Feature',\n geometry: { type: 'Point', coordinates: state.currentTrek.geometry.coordinates[state.currentTrek.geometry.coordinates.length - 1] },\n properties: null,\n },\n ],\n };\n\n let index = 0;\n this.departureArrivalLayer = L.geoJSON(departureArrival, {\n pointToLayer: (_geoJsonPoint, latlng) => {\n index += 1;\n return L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\" class=\"${index === 1 ? 'departure-marker' : 'arrival-marker'}\"></div>`,\n className: '',\n iconSize: this.departureArrivalMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n });\n this.map.addLayer(this.departureArrivalLayer);\n\n this.handleLayersControl();\n\n this.bounds = L.latLngBounds(state.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n this.map.on('eledata_loaded', () => {\n this.fitBoundsQueued = true;\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n });\n }\n\n async getIcons(featuresCollection, property) {\n const icons = {};\n for (let index = 0; index < featuresCollection.features.length; index++) {\n if (featuresCollection.features[index].properties[property]) {\n icons[featuresCollection.features[index].properties[property]] = await this.getIcon(featuresCollection.features[index].properties[property]);\n }\n }\n return icons;\n }\n\n async getIcon(pictogram) {\n let icon;\n if (!Capacitor.isNativePlatform()) {\n const dataInStore = await checkFileInStore(pictogram);\n icon = dataInStore ? window.URL.createObjectURL((await getFileInStore(pictogram)).data) : pictogram ? pictogram : null;\n } else {\n const image = await Filesystem.getUri({\n path: pictogram,\n directory: Directory.Data,\n });\n if (image) {\n icon = Capacitor.convertFileSrc(image.uri);\n }\n }\n\n return icon;\n }\n\n async 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:\n trek.attachments && trek.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? trek.attachments[0].thumbnail !== ''\n ? trek.attachments[0].thumbnail\n : trek.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedCurrentTrek();\n this.addSelectedCurrentTrekController?.abort();\n this.addSelectedCurrentTrekController = new AbortController();\n const { signal } = this.addSelectedCurrentTrekController;\n state.selectedTrekId = id;\n\n const treksIcons = await this.getIcons(treksFeatureCollection, 'practice');\n\n // Abort if a newer hover or removal occurred during the await\n if (signal.aborted) {\n return;\n }\n\n this.selectedCurrentTrekLayer = L.geoJSON(treksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: treksIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"><img part=\"trek-marker\" class=\"trek-marker\" src=${\n treksIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-trek-marker\" class=\"selected-trek-marker\"><div part=\"trek-marker-container\" class=\"trek-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n trekImg.src = imgSrc;\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-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 /* @ts-ignore */\n trekButton.part = 'trek-button';\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 this.addSelectedCurrentTrekController?.abort();\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.filter(attachment => attachment.type === 'image').length > 0\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail !== ''\n ? state.currentTrekSteps[stepIndex].attachments[0].thumbnail\n : state.currentTrekSteps[stepIndex].attachments[0].url\n : null,\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 part=\"selected-step-marker\" class=\"selected-step-marker\" ><div part=\"step-marker-container\" class=\"step-marker-container\"><div part=\"step-number\" class=\"step-number\">${geoJsonPoint.properties.index}</div></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', async () => {\n const dataInStore = await this.getIcon(geoJsonPoint.properties.imgSrc);\n const imgSrc = dataInStore ? dataInStore : geoJsonPoint.properties.imgSrc ? geoJsonPoint.properties.imgSrc : null;\n const trekDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n trekDeparturePopup.part = 'trek-departure-popup';\n trekDeparturePopup.className = 'trek-departure-popup';\n if (imgSrc) {\n const trekImg = L.DomUtil.create('img');\n /* @ts-ignore */\n trekImg.part = 'trek-image';\n trekImg.src = imgSrc;\n trekDeparturePopup.appendChild(trekImg);\n }\n const trekName = L.DomUtil.create('div');\n trekName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n trekName.part = 'trek-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 /* @ts-ignore */\n trekButton.part = 'trek-name';\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 if (state.selectedStepId) {\n state.selectedStepId = null;\n this.selectedCurrentStepLayer && this.map.removeLayer(this.selectedCurrentStepLayer);\n this.selectedCurrentStepLayer = null;\n }\n }\n\n handleLayersControlEvent() {\n if (this.layersControl) {\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 const overlay = (this.layersControl as any)._layers.find(layer => layer.layer._leaflet_id === userLayerState.layerId);\n if (this.userLayersState[userLayerState.layerId] && overlay.layer._layers && Object.keys(overlay.layer._layers).length === 0) {\n this.layerDataIsLoading = true;\n forceUpdate(this.hostElement);\n }\n };\n }\n });\n }\n }\n\n removeTrek() {\n this.handleLayersOnRemove();\n }\n\n async showTrekLine(id) {\n this.removeSelectedCurrentTrek();\n this.showTrekLineController?.abort();\n this.showTrekLineController = new AbortController();\n const { signal } = this.showTrekLineController;\n const trekLine = await getTrekGeometry(id);\n\n // Abort if a newer hover or hideTrekLine occurred during the await\n if (signal.aborted) {\n return;\n }\n\n const currentTrekFeature: Feature = {\n type: 'Feature',\n geometry: trekLine.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 hideTrekLine() {\n this.showTrekLineController?.abort();\n if (this.currentTrekLayer) {\n this.map.removeLayer(this.currentTrekLayer);\n this.currentTrekLayer = null;\n }\n }\n\n async 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 const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n this.currentToutisticContentLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\" ><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\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 async addTouristicContents(resetBounds = false) {\n this.addTouristicContentsController?.abort();\n this.addTouristicContentsController = new AbortController();\n const { signal } = this.addTouristicContentsController;\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 imgSrc:\n currentTouristicContent.attachments && currentTouristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicContent.attachments[0].thumbnail !== ''\n ? currentTouristicContent.attachments[0].thumbnail\n : currentTouristicContent.attachments[0].url\n : null,\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 const toutisticContentIcons = await this.getIcons(touristicContentsFeatureCollection, 'practice');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.toutisticContentsLayer = L.geoJSON(touristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" class=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\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 /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-coordinates-popup';\n touristicContentCoordinatesPopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\n touristicContentImg.src = geoJsonPoint.properties.imgSrc;\n touristicContentCoordinatesPopup.appendChild(touristicContentImg);\n }\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentCoordinatesPopup.part = 'touristic-content-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 /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\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 part=\"touristic-content-marker-cluster-group-icon\" class=\"touristic-content-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\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.map.invalidateSize();\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 this.addTouristicContentsController?.abort();\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 async addTouristicEvent() {\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvent) {\n const touristicEventType = state.touristicEventTypes.find(touristicEventType => touristicEventType.id === state.currentTouristicEvent.type);\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: touristicEventType ? touristicEventType.pictogram : null,\n },\n });\n }\n\n if (!this.currentToutisticEventLayer) {\n const toutisticEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n this.currentToutisticEventLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: toutisticEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n toutisticEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\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 async 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:\n touristicContent.attachments && touristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicContent.attachments[0].thumbnail !== ''\n ? touristicContent.attachments[0].thumbnail\n : touristicContent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicContent();\n state.selectedTouristicContentId = id;\n\n const toutisticContentIcons = await this.getIcons(touristicContentFeatureCollection, 'category');\n this.selectedTouristicContentLayer = L.geoJSON(touristicContentFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: toutisticContentIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"><img part=\"touristic-content-marker-icon\" src=${\n toutisticContentIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-content-marker\" class=\"selected-touristic-content-marker\"><div part=\"touristic-content-marker-container\" class=\"touristic-content-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\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 /* @ts-ignore */\n touristicContentDeparturePopup.part = 'touristic-content-coordinates-popup';\n touristicContentDeparturePopup.className = 'touristic-content-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicContentImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicContentImg.part = 'touristic-content-coordinates-image';\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 /* @ts-ignore */\n touristicContentName.part = 'touristic-content-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 /* @ts-ignore */\n touristicContentButton.part = 'touristic-content-button';\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 async addTouristicEvents(resetBounds = false) {\n this.addTouristicEventsController?.abort();\n this.addTouristicEventsController = new AbortController();\n const { signal } = this.addTouristicEventsController;\n state.touristicEventsWithinBounds = state.currentTouristicEvents;\n\n const touristicEventsCurrentCoordinates = [];\n\n const touristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentTouristicEvents) {\n for (const currentTouristicEvent of state.currentTouristicEvents) {\n touristicEventsCurrentCoordinates.push(currentTouristicEvent.geometry.coordinates);\n\n touristicEventsFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: currentTouristicEvent.geometry.coordinates },\n properties: {\n id: currentTouristicEvent.id,\n name: currentTouristicEvent.name,\n type: state.touristicEventTypes.find(touristicEventType => touristicEventType.id === currentTouristicEvent.type)?.pictogram,\n imgSrc:\n currentTouristicEvent.attachments && currentTouristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentTouristicEvent.attachments[0].thumbnail !== ''\n ? currentTouristicEvent.attachments[0].thumbnail\n : currentTouristicEvent.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.touristicEventsLayer) {\n if ((touristicEventsCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const touristicEventsIcons = await this.getIcons(touristicEventsFeatureCollection, 'type');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.touristicEventsLayer = L.geoJSON(touristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.type]\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventCoordinatesPopup.part = 'touristic-event-coordinates-popup';\n touristicEventCoordinatesPopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventCoordinatesPopup.appendChild(touristicEventImg);\n }\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventCoordinatesPopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventCoordinatesPopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedTouristicEvent(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.touristicEventsMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"touristic-event-marker-cluster-group-icon\" class=\"touristic-event-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n this.map.addLayer(this.touristicEventsMarkerClusterGroup);\n } else {\n if (touristicEventsCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(touristicEventsCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.touristicEventsLayer.clearLayers();\n this.touristicEventsLayer.addData(touristicEventsFeatureCollection);\n this.touristicEventsMarkerClusterGroup.clearLayers();\n this.touristicEventsMarkerClusterGroup.addLayer(this.touristicEventsLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n\n removeTouristicEvents() {\n this.addTouristicEventsController?.abort();\n if (this.touristicEventsLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.touristicEventsMarkerClusterGroup);\n this.touristicEventsLayer = null;\n this.touristicEventsMarkerClusterGroup = null;\n this.map.off('moveend', this.handleTouristicEventsWithinBoundsBind);\n }\n }\n\n async addOutdoorSites(resetBounds = false) {\n this.addOutdoorSitesController?.abort();\n this.addOutdoorSitesController = new AbortController();\n const { signal } = this.addOutdoorSitesController;\n state.outdoorSitesWithinBounds = state.currentOutdoorSites;\n\n const outdoorSitesCurrentCoordinates = [];\n\n const outdoorSitesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n for (const currentOutdoorSite of state.currentOutdoorSites) {\n outdoorSitesFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(currentOutdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: currentOutdoorSite.id,\n name: currentOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentOutdoorSite.attachments && currentOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentOutdoorSite.attachments[0].thumbnail !== ''\n ? currentOutdoorSite.attachments[0].thumbnail\n : currentOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.outdoorSitesLayer) {\n if ((outdoorSitesCurrentCoordinates.length > 0 && !state.currentMapBounds) || resetBounds) {\n const outdoorSitesBbox = bbox(outdoorSitesFeatureCollection);\n this.bounds = L.latLngBounds([outdoorSitesBbox[1], outdoorSitesBbox[0]], [outdoorSitesBbox[3], outdoorSitesBbox[2]]);\n } else {\n if (state.currentMapBounds) {\n this.bounds = state.currentMapBounds;\n }\n }\n const outdoorSitesIcons = await this.getIcons(outdoorSitesFeatureCollection, 'practice');\n\n // Abort if a newer call or removal was made during the await\n if (signal.aborted) {\n return;\n }\n\n this.outdoorSitesLayer = L.geoJSON(outdoorSitesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.mainMarkerSize,\n iconAnchor: [this.mainMarkerSize / 2, this.mainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteCoordinatesPopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteCoordinatesPopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteCoordinatesPopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteImg);\n }\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteCoordinatesPopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteCoordinatesPopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseover', e => {\n this.addSelectedOutdoorSite(geoJsonPoint.properties.id, e.latlng);\n });\n },\n });\n\n this.outdoorSitesMarkerClusterGroup = L.markerClusterGroup({\n showCoverageOnHover: false,\n removeOutsideVisibleBounds: false,\n iconCreateFunction: cluster => {\n return L.divIcon({\n html: '<div part=\"outdoor-site-marker-cluster-group-icon\" class=\"outdoor-site-marker-cluster-group-icon\"><div>' + cluster.getChildCount() + '</div></div>',\n className: '',\n iconSize: this.mainClusterSize,\n } as any);\n },\n });\n\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n this.map.addLayer(this.outdoorSitesMarkerClusterGroup);\n } else {\n if (outdoorSitesCurrentCoordinates.length > 0) {\n this.bounds = L.latLngBounds(outdoorSitesCurrentCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n } else {\n this.map.fire('moveend');\n }\n this.outdoorSitesLayer.clearLayers();\n this.outdoorSitesLayer.addData(outdoorSitesFeatureCollection);\n this.outdoorSitesMarkerClusterGroup.clearLayers();\n this.outdoorSitesMarkerClusterGroup.addLayer(this.outdoorSitesLayer);\n }\n\n this.map.invalidateSize();\n this.bounds && this.map.fitBounds(this.bounds);\n\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n\n this.map.on('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n\n removeOutdoorSites() {\n this.addOutdoorSitesController?.abort();\n if (this.outdoorSitesLayer) {\n state.currentMapBounds = this.map.getBounds();\n this.map.removeLayer(this.outdoorSitesMarkerClusterGroup);\n this.outdoorSitesLayer = null;\n this.outdoorSitesMarkerClusterGroup = null;\n this.map.off('moveend', this.handleOutdoorSitesWithinBoundsBind);\n }\n }\n\n async addOutdoorSite() {\n const OutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSite) {\n const outdoorSitePractice = state.outdoorPractices.find(outdoorPractice => outdoorPractice.id === state.currentOutdoorSite.practice);\n OutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorSite.geometry,\n properties: {\n id: state.currentOutdoorSite.id,\n name: state.currentOutdoorSite.name,\n practice: outdoorSitePractice ? outdoorSitePractice.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorSiteLayer) {\n const outdoorSitesIcons = await this.getIcons(OutdoorSiteFeatureCollection, 'practice');\n\n this.currentOutdoorSiteLayer = L.geoJSON(OutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorSiteLayer);\n }\n\n await this.addCurrentInformationDesks(state.currentOutdoorSite);\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n await this.addCurrentRelatedOutdoorSites();\n\n await this.addCurrentRelatedOutdoorCourses();\n\n this.handleLayersControl();\n\n this.map.invalidateSize();\n this.map.fitBounds(this.currentOutdoorSiteLayer.getBounds(), { maxZoom: this.maxZoom });\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n async addCurrentRelatedOutdoorSites() {\n const currentRelatedOutdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorSites) {\n for (const currentRelatedOutdoorSite of state.currentRelatedOutdoorSites) {\n currentRelatedOutdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorSite.geometry,\n properties: {\n id: currentRelatedOutdoorSite.id,\n name: currentRelatedOutdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === currentRelatedOutdoorSite.practice)?.pictogram,\n imgSrc:\n currentRelatedOutdoorSite.attachments && currentRelatedOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorSite.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorSite.attachments[0].thumbnail\n : currentRelatedOutdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorSitesLayer && currentRelatedOutdoorSiteFeatureCollection.features.length > 0) {\n const outdoorSitesIcons = await this.getIcons(currentRelatedOutdoorSiteFeatureCollection, 'practice');\n\n this.currentRelatedOutdoorSitesLayer = L.geoJSON(currentRelatedOutdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-site-marker\" class=\"outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n async addCurrentRelatedOutdoorCourses() {\n const currentRelatedOutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentRelatedOutdoorCourses) {\n for (const currentRelatedOutdoorCourse of state.currentRelatedOutdoorCourses) {\n currentRelatedOutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: currentRelatedOutdoorCourse.geometry,\n properties: {\n id: currentRelatedOutdoorCourse.id,\n name: currentRelatedOutdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === currentRelatedOutdoorCourse.type)?.pictogram,\n imgSrc:\n currentRelatedOutdoorCourse.attachments && currentRelatedOutdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail !== ''\n ? currentRelatedOutdoorCourse.attachments[0].thumbnail\n : currentRelatedOutdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n }\n\n if (!this.currentRelatedOutdoorCoursesLayer && currentRelatedOutdoorCourseFeatureCollection.features.length > 0) {\n const outdoorCoursesIcons = await this.getIcons(currentRelatedOutdoorCourseFeatureCollection, 'type');\n\n this.currentRelatedOutdoorCoursesLayer = L.geoJSON(currentRelatedOutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"><img part=\"outdoor-courses-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-courses-marker\" class=\"outdoor-courses-marker\"><div part=\"outdoor-courses-marker-container\" class=\"outdoor-courses-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n }\n }\n\n removeOutdoorSite() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedTouristicEvent(id, customCoordinates?) {\n const touristicEventFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.touristicEvents) {\n const touristicEvent = state.touristicEvents.find(touristicEvent => touristicEvent.id === id);\n\n touristicEventFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: customCoordinates ? [customCoordinates.lng, customCoordinates.lat] : touristicEvent.geometry.coordinates },\n properties: {\n id: touristicEvent.id,\n name: touristicEvent.name,\n category: state.touristicEventTypes.find(type => type.id === touristicEvent.type)?.pictogram,\n imgSrc:\n touristicEvent.attachments && touristicEvent.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? touristicEvent.attachments[0].thumbnail !== ''\n ? touristicEvent.attachments[0].thumbnail\n : touristicEvent.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedTouristicEvent();\n state.selectedTouristicEventId = id;\n\n const touristicEventsIcons = await this.getIcons(touristicEventFeatureCollection, 'category');\n this.selectedTouristicEventLayer = L.geoJSON(touristicEventFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: touristicEventsIcons[geoJsonPoint.properties.category]\n ? `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"><img part=\"touristic-event-marker-icon\" src=${\n touristicEventsIcons[geoJsonPoint.properties.category]\n } /></div></div>`\n : `<div part=\"selected-touristic-event-marker\" class=\"selected-touristic-event-marker\"><div part=\"touristic-event-marker-container\" class=\"touristic-event-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const touristicEventDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventDeparturePopup.part = 'touristic-event-coordinates-popup';\n touristicEventDeparturePopup.className = 'touristic-event-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const touristicEventImg = L.DomUtil.create('img');\n /* @ts-ignore */\n touristicEventImg.part = 'touristic-event-coordinates-image';\n touristicEventImg.src = geoJsonPoint.properties.imgSrc;\n touristicEventDeparturePopup.appendChild(touristicEventImg);\n }\n\n const touristicEventName = L.DomUtil.create('div');\n touristicEventName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\n touristicEventName.className = 'touristic-event-name';\n touristicEventDeparturePopup.appendChild(touristicEventName);\n\n const touristicEventButton = L.DomUtil.create('button');\n touristicEventButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n touristicEventButton.part = 'touristic-event-button';\n touristicEventButton.className = 'touristic-event-button';\n touristicEventButton.onclick = () => this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n touristicEventDeparturePopup.appendChild(touristicEventButton);\n\n layer.bindPopup(touristicEventDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.touristicEventPopupIsOpen) {\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n layer.on('popupopen', () => {\n this.touristicEventPopupIsOpen = Boolean(state.selectedTouristicEventId);\n });\n layer.on('popupclose', () => {\n if (state.selectedTouristicEventId) {\n this.touristicEventPopupIsOpen = false;\n state.selectedTouristicEventId = null;\n this.removeSelectedTouristicEvent();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedTouristicEvent() {\n state.selectedTouristicEventId = null;\n this.selectedTouristicEventLayer && this.map.removeLayer(this.selectedTouristicEventLayer);\n this.selectedTouristicEventLayer = null;\n }\n\n async addOutdoorCourse() {\n const OutdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourseType = state.outdoorCourseTypes.find(outdoorCourseType => outdoorCourseType.id === state.currentOutdoorCourse.type);\n OutdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: state.currentOutdoorCourse.geometry,\n properties: {\n id: state.currentOutdoorCourse.id,\n name: state.currentOutdoorCourse.name,\n type: outdoorCourseType ? outdoorCourseType.pictogram : null,\n },\n });\n }\n\n if (!this.currentOutdoorCourseLayer) {\n const outdoorCoursesIcons = await this.getIcons(OutdoorCourseFeatureCollection, 'type');\n this.currentOutdoorCourseLayer = L.geoJSON(OutdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"outdoor-course-marker\" class=\"outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n style: () => ({ color: this.colorOutdoorArea, interactive: false }),\n });\n\n this.map.addLayer(this.currentOutdoorCourseLayer);\n }\n\n await this.addCurrentPois();\n\n await this.addCurrentTouristicContents();\n\n await this.addCurrentTouristicEvents();\n\n this.handleLayersControl();\n\n this.map.fitBounds(this.currentOutdoorCourseLayer.getBounds());\n !this.mapIsReady && (this.mapIsReady = !this.mapIsReady);\n }\n\n removeOutdoorCourse() {\n this.handleLayersOnRemove();\n }\n\n async addSelectedOutdoorSite(id, _customCoordinates?) {\n const outdoorSiteFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorSites) {\n const outdoorSite = state.currentOutdoorSites.find(currentOutdoorSite => currentOutdoorSite.id === id);\n if (outdoorSite && outdoorSite.geometry) {\n outdoorSiteFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorSite.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorSite.id,\n name: outdoorSite.name,\n practice: state.outdoorPractices.find(practice => practice.id === outdoorSite.practice)?.pictogram,\n imgSrc:\n outdoorSite.attachments && outdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorSite.attachments[0].thumbnail !== ''\n ? outdoorSite.attachments[0].thumbnail\n : outdoorSite.attachments[0].url\n : null,\n },\n });\n }\n }\n\n this.removeSelectedOutdoorSite();\n state.selectedOutdoorSiteId = id;\n\n const outdoorSitesIcons = await this.getIcons(outdoorSiteFeatureCollection, 'practice');\n this.selectedOutdoorSiteLayer = L.geoJSON(outdoorSiteFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorSitesIcons[geoJsonPoint.properties.practice]\n ? `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"><img part=\"outdoor-site-marker-icon\" src=${\n outdoorSitesIcons[geoJsonPoint.properties.practice]\n } /></div></div>`\n : `<div part=\"selected-outdoor-site-marker\" class=\"selected-outdoor-site-marker\"><div part=\"outdoor-site-marker-container\" class=\"outdoor-site-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorSiteDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorSiteDeparturePopup.part = 'outdoor-site-coordinates-popup';\n outdoorSiteDeparturePopup.className = 'outdoor-site-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorSiteImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorSiteImg.part = 'outdoor-site-coordinates-image';\n outdoorSiteImg.src = geoJsonPoint.properties.imgSrc;\n outdoorSiteDeparturePopup.appendChild(outdoorSiteImg);\n }\n\n const outdoorSiteName = L.DomUtil.create('div');\n outdoorSiteName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorSiteName.part = 'outdoor-site-name';\n outdoorSiteName.className = 'outdoor-site-name';\n outdoorSiteDeparturePopup.appendChild(outdoorSiteName);\n\n const outdoorSiteButton = L.DomUtil.create('button');\n outdoorSiteButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorSiteButton.part = 'outdoor-site-button';\n outdoorSiteButton.className = 'outdoor-site-button';\n outdoorSiteButton.onclick = () => this.outdoorSiteCardPress.emit(geoJsonPoint.properties.id);\n outdoorSiteDeparturePopup.appendChild(outdoorSiteButton);\n\n layer.bindPopup(outdoorSiteDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorSitePopupIsOpen) {\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorSitePopupIsOpen = Boolean(state.selectedOutdoorSiteId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorSiteId) {\n this.outdoorSitePopupIsOpen = false;\n state.selectedOutdoorSiteId = null;\n this.removeSelectedOutdoorSite();\n }\n });\n },\n style: { color: this.colorOutdoorArea, interactive: false },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorSite() {\n state.selectedOutdoorSiteId = null;\n this.selectedOutdoorSiteLayer && this.map.removeLayer(this.selectedOutdoorSiteLayer);\n this.selectedOutdoorSiteLayer = null;\n }\n\n async addSelectedOutdoorCourse(id, _customCoordinates?) {\n const outdoorCourseFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n if (state.currentOutdoorCourse) {\n const outdoorCourse = state.currentOutdoorCourse;\n outdoorCourseFeatureCollection.features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: pointOnFeature(outdoorCourse.geometry as any).geometry.coordinates },\n properties: {\n id: outdoorCourse.id,\n name: outdoorCourse.name,\n type: state.outdoorCourseTypes.find(type => type.id === outdoorCourse.type)?.pictogram,\n imgSrc:\n outdoorCourse.attachments && outdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0\n ? outdoorCourse.attachments[0].thumbnail !== ''\n ? outdoorCourse.attachments[0].thumbnail\n : outdoorCourse.attachments[0].url\n : null,\n },\n });\n }\n\n this.removeSelectedOutdoorCourse();\n state.selectedOutdoorCourseId = id;\n\n const outdoorCoursesIcons = await this.getIcons(outdoorCourseFeatureCollection, 'type');\n this.selectedOutdoorCourseLayer = L.geoJSON(outdoorCourseFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n zIndexOffset: 4000000,\n icon: L.divIcon({\n html: outdoorCoursesIcons[geoJsonPoint.properties.type]\n ? `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"><img part=\"outdoor-course-marker-icon\" src=${\n outdoorCoursesIcons[geoJsonPoint.properties.type]\n } /></div></div>`\n : `<div part=\"selected-outdoor-course-marker\" class=\"selected-outdoor-course-marker\"><div part=\"outdoor-course-marker-container\" class=\"outdoor-course-marker-container\"></div></div>`,\n className: '',\n iconSize: this.selectedMainMarkerSize,\n iconAnchor: [this.selectedMainMarkerSize / 2, this.selectedMainMarkerSize],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('click', () => {\n const outdoorCourseDeparturePopup = L.DomUtil.create('div');\n /* @ts-ignore */\n outdoorCourseDeparturePopup.part = 'outdoor-course-coordinates-popup';\n outdoorCourseDeparturePopup.className = 'outdoor-course-coordinates-popup';\n if (geoJsonPoint.properties.imgSrc) {\n const outdoorCourseImg = L.DomUtil.create('img');\n /* @ts-ignore */\n outdoorCourseImg.part = 'outdoor-course-coordinates-image';\n outdoorCourseImg.src = geoJsonPoint.properties.imgSrc;\n outdoorCourseDeparturePopup.appendChild(outdoorCourseImg);\n }\n\n const outdoorCourseName = L.DomUtil.create('div');\n outdoorCourseName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n outdoorCourseName.part = 'outdoor-course-name';\n outdoorCourseName.className = 'outdoor-course-name';\n outdoorCourseDeparturePopup.appendChild(outdoorCourseName);\n\n const outdoorCourseButton = L.DomUtil.create('button');\n outdoorCourseButton.innerHTML = 'Afficher le détail';\n /* @ts-ignore */\n outdoorCourseButton.part = 'outdoor-course-button';\n outdoorCourseButton.className = 'outdoor-course-button';\n outdoorCourseButton.onclick = () => this.outdoorCourseCardPress.emit(geoJsonPoint.properties.id);\n outdoorCourseDeparturePopup.appendChild(outdoorCourseButton);\n\n layer.bindPopup(outdoorCourseDeparturePopup, { interactive: true, autoPan: false, closeButton: false } as any).openPopup();\n });\n layer.on('mouseout', () => {\n if (!this.outdoorCoursePopupIsOpen) {\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n layer.on('popupopen', () => {\n this.outdoorCoursePopupIsOpen = Boolean(state.selectedOutdoorCourseId);\n });\n layer.on('popupclose', () => {\n if (state.selectedOutdoorCourseId) {\n this.outdoorCoursePopupIsOpen = false;\n state.selectedOutdoorCourseId = null;\n this.removeSelectedOutdoorCourse();\n }\n });\n },\n }).addTo(this.map);\n }\n\n removeSelectedOutdoorCourse() {\n state.selectedOutdoorCourseId = null;\n this.selectedOutdoorCourseLayer && this.map.removeLayer(this.selectedOutdoorCourseLayer);\n this.selectedOutdoorCourseLayer = null;\n }\n\n async addCurrentPois() {\n if (state.poisData > 0) {\n const currentPoisFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\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\n ? `<div part=\"poi-marker\" class=\"poi-marker\"><img src=${geoJsonPoint.properties.type_pictogram} /></div>`\n : `<div part=\"poi-marker\" class=\"poi-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\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 /* @ts-ignore */\n poiTooltip.part = 'poi-tooltip';\n poiTooltip.className = 'poi-tooltip';\n const poiName = L.DomUtil.create('div');\n poiName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n poiName.part = 'poi-name';\n poiName.className = 'poi-name';\n poiTooltip.appendChild(poiName);\n layer.bindTooltip(poiTooltip).openTooltip();\n });\n },\n });\n if (state.currentPois) {\n this.setCurrentPois();\n }\n }\n }\n\n setCurrentPois() {\n if (this.currentPoisLayer) {\n if (state.currentPois) {\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.clearLayers();\n\n this.currentPoisLayer.addData(currentPoisFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentSignages() {\n if (state.currentSignages && state.currentSignages.length > 0) {\n const signageImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/signage.svg`);\n const currentSignagesFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const currentSignage of state.currentSignages) {\n currentSignagesFeatureCollection.features.push({\n type: 'Feature',\n properties: { name: currentSignage.name },\n geometry: currentSignage.geometry,\n });\n }\n\n this.currentSignagesLayer = L.geoJSON(currentSignagesFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: `<div part=\"signage-marker\" class=\"signage-marker\"><img part=\"signage-img\" src=${signageImageSrc} /><div part=\"signage-name\" class=\"signage-name\">${geoJsonPoint.properties.name}</div></div>`,\n className: '',\n iconSize: [this.commonMarkerSize * 1.2, this.commonMarkerSize * 0.8],\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.once('mouseover', () => {\n const signageTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n signageTooltip.part = 'signage-tooltip';\n signageTooltip.className = 'signage-tooltip';\n const signageName = L.DomUtil.create('div');\n signageName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n signageName.part = 'signage-name';\n signageName.className = 'signage-name';\n signageTooltip.appendChild(signageName);\n layer.bindTooltip(signageTooltip).openTooltip();\n });\n },\n });\n }\n }\n\n async addCurrentTouristicContents() {\n if (state.touristicContentsData > 0) {\n const currentTouristicContentsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentToutisticContentsLayer = L.geoJSON(currentTouristicContentsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) => {\n return L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.category_pictogram\n ? `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img src=${geoJsonPoint.properties.category_pictogram} /></div>`\n : `<div part=\"touristic-content-marker\" class=\"touristic-content-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any);\n },\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicContentCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.on('mouseover', () => {\n const touristicContentTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicContentTooltip.part = 'touristic-content-tooltip';\n touristicContentTooltip.className = 'touristic-content-tooltip';\n const touristicContentName = L.DomUtil.create('div');\n touristicContentName.innerHTML = geoJsonPoint.properties.name;\n /* @ts-ignore */\n touristicContentName.part = 'touristic-content-name';\n touristicContentName.className = 'touristic-content-name';\n touristicContentTooltip.appendChild(touristicContentName);\n layer.bindTooltip(touristicContentTooltip).openTooltip();\n });\n },\n });\n\n if (state.trekTouristicContents) {\n this.setCurrentTouristicContents();\n }\n }\n }\n\n setCurrentTouristicContents() {\n if (this.currentToutisticContentsLayer) {\n if (state.trekTouristicContents) {\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 id: touristicContent.id,\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.clearLayers();\n\n this.currentToutisticContentsLayer.addData(currentTouristicContentsFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentTouristicEvents() {\n if (state.touristicEventsData > 0) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n this.currentTouristicEventsLayer = L.geoJSON(currentTouristicEventsFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: geoJsonPoint.properties.type_pictogram\n ? `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img src=${geoJsonPoint.properties.type_pictogram} /></div>`\n : `<div part=\"touristic-event-marker\" class=\"touristic-event-marker\"><img /></div>`,\n className: this.grwApp ? '' : 'cursor-pointer',\n iconSize: this.commonMarkerSize,\n } as any),\n autoPanOnFocus: false,\n } as any),\n onEachFeature: (geoJsonPoint, layer) => {\n layer.on('click', () => {\n if (!this.grwApp) {\n this.touristicEventCardPress.emit(geoJsonPoint.properties.id);\n }\n });\n layer.once('mouseover', () => {\n const touristicEventTooltip = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventTooltip.part = 'touristic-event-tooltip';\n touristicEventTooltip.className = 'touristic-event-tooltip';\n const touristicEventName = L.DomUtil.create('div');\n /* @ts-ignore */\n touristicEventName.part = 'touristic-event-name';\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 if (state.trekTouristicEvents) {\n this.setCurrentTouristicEvents();\n }\n }\n }\n\n setCurrentTouristicEvents() {\n if (this.currentTouristicEventsLayer) {\n if (state.trekTouristicEvents) {\n const currentTouristicEventsFeatureCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n };\n\n for (const touristicEvent of state.trekTouristicEvents) {\n currentTouristicEventsFeatureCollection.features.push({\n type: 'Feature',\n properties: {\n id: touristicEvent.id,\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.currentTouristicEventsLayer.clearLayers();\n\n this.currentTouristicEventsLayer.addData(currentTouristicEventsFeatureCollection);\n\n this.layerDataIsLoading = false;\n forceUpdate(this.hostElement);\n }\n }\n }\n\n async addCurrentInformationDesks(currentData) {\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 => currentData.information_desks.includes(currentInformationDesks.id))) {\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 if (currentInformationDesksFeatureCollection.features.length > 0) {\n const informationDesksIcons = await this.getIcons(currentInformationDesksFeatureCollection, 'type_pictogram');\n this.currentInformationDesksLayer = L.geoJSON(currentInformationDesksFeatureCollection, {\n pointToLayer: (geoJsonPoint, latlng) =>\n L.marker(latlng, {\n icon: L.divIcon({\n html: informationDesksIcons[geoJsonPoint.properties.type_pictogram]\n ? `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img src=${informationDesksIcons[geoJsonPoint.properties.type_pictogram]} /></div>`\n : `<div part=\"information-desks-marker\" class=\"information-desks-marker\"><img /></div>`,\n className: '',\n iconSize: this.commonMarkerSize,\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 /* @ts-ignore */\n informationDesksTooltip.part = 'information-desks-tooltip';\n informationDesksTooltip.className = 'information-desks-tooltip';\n const informationDesksName = L.DomUtil.create('div');\n /* @ts-ignore */\n informationDesksName.part = 'information-desks-name';\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 }\n\n handleLayersControl() {\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 (state.poisData > 0) {\n overlays[translate[state.language].layers.pois] = this.currentPoisLayer;\n }\n if (this.currentSignagesLayer) {\n overlays[translate[state.language].layers.signages] = this.currentSignagesLayer;\n this.currentSignagesLayer.addTo(this.map);\n }\n if (state.touristicContentsData > 0) {\n overlays[translate[state.language].layers.touristicContents] = this.currentToutisticContentsLayer;\n }\n if (state.touristicEventsData > 0) {\n overlays[translate[state.language].layers.touristicEvents] = this.currentTouristicEventsLayer;\n }\n\n if (this.currentRelatedOutdoorSitesLayer) {\n overlays[translate[state.language].layers.sites] = this.currentRelatedOutdoorSitesLayer;\n }\n\n if (this.currentRelatedOutdoorCoursesLayer) {\n overlays[translate[state.language].layers.courses] = this.currentRelatedOutdoorCoursesLayer;\n }\n\n if (this.layersControl) {\n Object.keys(overlays).forEach(key => {\n this.layersControl.addOverlay(overlays[key], key);\n });\n } else if (Object.keys(overlays).length > 0) {\n this.layersControl = L.control.layers({}, overlays, { collapsed: true }).addTo(this.map);\n }\n\n this.handleLayersControlEvent();\n }\n\n applyCachedViewportState() {\n if (!this.layersControl) return;\n\n const layerMap: { key: string; layer: L.GeoJSON; loading?: boolean }[] = [\n { key: 'steps', layer: this.currentStepsLayer },\n { key: 'description', layer: this.currentReferencePointsLayer },\n { key: 'parking', layer: this.currentParkingLayer },\n { key: 'sensitiveArea', layer: this.currentSensitiveAreasLayer },\n { key: 'informationPlaces', layer: this.currentInformationDesksLayer },\n { key: 'pois', layer: this.currentPoisLayer, loading: !state.currentPois || state.currentPois.length === 0 },\n { key: 'touristicContents', layer: this.currentToutisticContentsLayer, loading: !state.trekTouristicContents || state.trekTouristicContents.length === 0 },\n { key: 'touristicEvents', layer: this.currentTouristicEventsLayer, loading: !state.trekTouristicEvents || state.trekTouristicEvents.length === 0 },\n ];\n\n for (const { key, layer, loading } of layerMap) {\n if (layer && this.viewportState[key] !== undefined) {\n this.handleLayerVisibility(this.viewportState[key], layer, loading || false);\n }\n }\n }\n\n handleLayersOnRemove() {\n this.viewportState = {};\n this.hasScrolled = false;\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.departureArrivalLayer) {\n this.map.removeLayer(this.departureArrivalLayer);\n this.departureArrivalLayer = 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.currentSignagesLayer) {\n this.map.removeLayer(this.currentSignagesLayer);\n this.currentSignagesLayer = 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.currentTouristicEventsLayer) {\n this.map.removeLayer(this.currentTouristicEventsLayer);\n this.currentTouristicEventsLayer = null;\n }\n if (this.currentOutdoorSiteLayer) {\n this.map.removeLayer(this.currentOutdoorSiteLayer);\n this.currentOutdoorSiteLayer = null;\n }\n if (this.currentOutdoorCourseLayer) {\n this.map.removeLayer(this.currentOutdoorCourseLayer);\n this.currentOutdoorCourseLayer = null;\n }\n if (this.currentRelatedOutdoorSitesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorSitesLayer);\n this.currentRelatedOutdoorSitesLayer = null;\n }\n if (this.currentRelatedOutdoorCoursesLayer) {\n this.map.removeLayer(this.currentRelatedOutdoorCoursesLayer);\n this.currentRelatedOutdoorCoursesLayer = null;\n }\n }\n\n @Listen('resize', { target: 'window' })\n onWindowResize() {\n this.handleView();\n }\n\n handleView() {\n const elevationHeight = this.mapElement.getBoundingClientRect().width >= this.largeViewSize ? this.elevationHeight : this.mobileElevationHeight;\n if (this.elevationControl) {\n (this.elevationControl.options as any).height = elevationHeight;\n (this.elevationControl as any).redraw();\n }\n if (this.map) {\n this.map.invalidateSize();\n }\n forceUpdate(this.hostElement);\n }\n\n handleElevation() {\n (this.elevationControl as any).eleDiv.style.display = (this.elevationControl as any).eleDiv.style.display === 'block' ? 'none' : 'block';\n (this.elevationControl as any).redraw();\n forceUpdate(this.hostElement);\n }\n\n render() {\n const layersImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/layers.svg`);\n const contractImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/contract.svg`);\n\n return (\n <Host\n ref={el => (this.hostElement = el)}\n style={{\n '--font-family': this.fontFamily,\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-markers': this.colorMarkers ? this.colorMarkers : this.colorPrimaryApp,\n '--color-clusters': this.colorClusters ? this.colorClusters : this.colorPrimaryApp,\n '--color-trek-line': this.colorTrekLine,\n '--layers-image-src': `url(${layersImageSrc})`,\n '--contract-image-src': `url(${contractImageSrc})`,\n '--elevation-height': (this.mapElement.getBoundingClientRect().width >= this.largeViewSize / 2 ? this.elevationHeight : this.mobileElevationHeight)\n .toString()\n .concat('px'),\n }}\n >\n <div\n id=\"map\"\n part=\"map\"\n class={\n (state.currentTouristicContent || state.currentTouristicEvent || state.currentOutdoorSite || state.currentOutdoorCourse) && this.grwApp\n ? 'common-map'\n : state.currentTrek && this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block'\n ? 'trek-map-and-elevation'\n : state.currentTrek\n ? 'trek-map'\n : 'treks-map'\n }\n ref={el => (this.mapRef = el)}\n >\n {this.layerDataIsLoading && (\n <div class=\"layer-loader-container\">\n <div class=\"layer-loader\"></div>\n </div>\n )}\n {state.currentTrek && (\n <div class=\"grw-elevation-visibility-button-container\">\n <grw-fab\n exportparts=\"fab-visibility-button,fab-visibility-button-icon,fab-visibility-button-label\"\n font-family={this.fontFamily}\n action={() => this.handleElevation()}\n icon={() => (this.elevationControl && (this.elevationControl as any).eleDiv.style.display === 'block' ? 'show-elevation' : 'hide-elevation')}\n showTitle={translate[state.language].showElevation}\n hideTitle={translate[state.language].hideElevation}\n fab-background-color={this.fabBackgroundColor}\n fab-color={this.fabColor}\n ></grw-fab>\n </div>\n )}\n </div>\n\n {!this.mapIsReady && (\n <div part=\"map-loader-container\" class=\"map-loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n )}\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.modal-container {\n z-index: 40000;\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: var(--font-family);\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.6);\n\n .modal-content-container {\n display: flex;\n justify-content: center;\n flex-direction: column;\n width: 380px;\n height: 120px;\n padding: 16px;\n margin: 0px 16px;\n background-color: var(--color-background);\n border-radius: var(--border-radius, 8px);\n }\n\n .modal-message-container {\n display: flex;\n align-items: center;\n justify-content: center;\n\n .modal-loader {\n width: 16px;\n height: 16px;\n border: 3px solid var(--color-primary-container);\n border-bottom-color: var(--color-on-primary-container);\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n animation: rotation 1s linear infinite;\n margin-right: 16px;\n }\n\n @keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n }\n\n .modal-buttons-container,\n .modal-button-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 16px;\n .modal-button {\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n height: 32px;\n box-shadow: var(--elevation-0);\n border: none;\n -webkit-tap-highlight-color: transparent;\n line-height: 20px;\n color: var(--color-primary-app);\n background-color: transparent;\n font-family: var(--font-family);\n }\n }\n .modal-button-container {\n justify-content: flex-end;\n }\n}\n","import { Component, Event, EventEmitter, Fragment, Host, Listen, Prop, State, h } from '@stencil/core';\nimport { translate } from 'i18n/i18n';\nimport state from 'store/store';\nimport { Mode } from 'types/types';\n\n@Component({\n tag: 'grw-offline-confirm-modal',\n styleUrl: 'grw-offline-confirm-modal.scss',\n shadow: true,\n})\nexport class GrwOfflineConfirmModal {\n @State() showOfflineModal = false;\n @State() showConfirmModal = false;\n @State() showLoaderModal = false;\n @State() showSuccessModal = false;\n @State() showErrorModal = false;\n @State() showConfirmDeleteModal = false;\n @State() showDeletingMessage = false;\n @State() showDeleteSuccessMessage = false;\n\n @Event() downloadPress: EventEmitter<number>;\n @Event() deletePress: EventEmitter<number>;\n\n @Prop() mode: Mode;\n\n @Listen('downloadConfirm', { target: 'window' })\n onDownloadConfirm() {\n this.showLoaderModal = false;\n this.showSuccessModal = false;\n this.showDeleteSuccessMessage = false;\n this.showDeletingMessage = false;\n this.showConfirmDeleteModal = false;\n document.body.style.overflow = `hidden`;\n this.showOfflineModal = true;\n this.showConfirmModal = true;\n }\n\n @Listen('downloadedSuccessConfirm', { target: 'window' })\n onDownloadedSuccessConfirm() {\n this.showLoaderModal = false;\n this.showSuccessModal = true;\n }\n\n @Listen('downloadedErrorConfirm', { target: 'window' })\n downloadedErrorConfirm() {\n this.showLoaderModal = false;\n this.showErrorModal = true;\n }\n\n @Listen('deleteConfirm', { target: 'window' })\n onDeleteConfirm() {\n this.showLoaderModal = false;\n this.showSuccessModal = false;\n this.showDeleteSuccessMessage = false;\n document.body.style.overflow = `hidden`;\n this.showOfflineModal = true;\n this.showConfirmModal = true;\n this.showConfirmDeleteModal = true;\n }\n\n @Listen('deleteSuccessConfirm', { target: 'window' })\n onDeleteSuccessConfirm() {\n this.showLoaderModal = false;\n this.showSuccessModal = true;\n this.showDeleteSuccessMessage = true;\n }\n\n @Listen('deleteErrorConfirm', { target: 'window' })\n deleteErrorConfirm() {\n this.showLoaderModal = false;\n this.showSuccessModal = true;\n this.showDeleteSuccessMessage = true;\n }\n\n handleOkDeleteModal() {\n this.showDeletingMessage = true;\n this.showConfirmDeleteModal = false;\n this.showConfirmModal = false;\n this.showLoaderModal = true;\n this.deletePress.emit();\n }\n\n handleOkDownloadModal() {\n this.showConfirmModal = false;\n this.showLoaderModal = true;\n this.downloadPress.emit();\n }\n\n handleCancelModal() {\n document.body.style.overflow = `visible`;\n this.showOfflineModal = false;\n }\n\n render() {\n return (\n <Host>\n {this.showOfflineModal && (\n <div class=\"modal-container\">\n <div class=\"modal-content-container\">\n {this.showConfirmModal && !this.showConfirmDeleteModal && (\n <Fragment>\n <div class=\"modal-message-container\">{`${\n this.mode === 'treks' ? translate[state.language].offline.downloadRouteQuestion : translate[state.language].offline.downloadOutdoorQuestion\n }`}</div>\n <div class=\"modal-buttons-container\">\n <button part=\"modal-button\" class=\"modal-button\" onClick={() => this.handleCancelModal()}>\n {translate[state.language].offline.cancel}\n </button>\n <button part=\"modal-button\" class=\"modal-button\" onClick={() => this.handleOkDownloadModal()}>\n {translate[state.language].offline.ok}\n </button>\n </div>\n </Fragment>\n )}\n {this.showConfirmDeleteModal && (\n <Fragment>\n <div class=\"modal-message-container\">{`${\n this.mode === 'treks' ? translate[state.language].offline.deleteRouteQuestion : translate[state.language].offline.deleteRouteQuestion\n }`}</div>\n <div class=\"modal-buttons-container\">\n <button part=\"modal-button\" class=\"modal-button\" onClick={() => this.handleCancelModal()}>\n {translate[state.language].offline.cancel}\n </button>\n <button part=\"modal-button\" class=\"modal-button\" onClick={() => this.handleOkDeleteModal()}>\n {translate[state.language].offline.ok}\n </button>\n </div>\n </Fragment>\n )}\n {this.showLoaderModal && (\n <Fragment>\n <div class=\"modal-message-container\">\n <div class=\"modal-loader\"></div>\n {this.showDeletingMessage ? translate[state.language].offline.deleting : translate[state.language].offline.downloading}\n </div>\n </Fragment>\n )}\n {this.showSuccessModal && (\n <Fragment>\n <div class=\"modal-message-container\">\n {this.showDeleteSuccessMessage\n ? this.mode === 'treks'\n ? translate[state.language].offline.offlineRouteDeleted\n : translate[state.language].offline.offlineOutdoorDeleted\n : this.mode === 'treks'\n ? translate[state.language].offline.routeAvailableOffline\n : translate[state.language].offline.outdoorAvailableOffline}\n </div>\n <div class=\"modal-button-container\">\n <button part=\"modal-button\" class=\"modal-button\" onClick={() => this.handleCancelModal()}>\n {translate[state.language].offline.ok}\n </button>\n </div>\n </Fragment>\n )}\n\n {this.showErrorModal && (\n <Fragment>\n <div class=\"modal-message-container\">\n {this.showDeleteSuccessMessage\n ? this.mode === 'treks'\n ? translate[state.language].offline.deleteRouteError\n : translate[state.language].offline.deleteOutdoorError\n : this.mode === 'treks'\n ? translate[state.language].offline.downloadRouteError\n : translate[state.language].offline.downloadOutdoorError}\n </div>\n <div class=\"modal-button-container\">\n <button part=\"modal-button\" class=\"modal-button\" onClick={() => this.handleCancelModal()}>\n {translate[state.language].offline.ok}\n </button>\n </div>\n </Fragment>\n )}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n","import { getDocument } from 'ssr-window';\nimport { createElement, elementOffset, nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\n }\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","@use '~swiper/swiper.scss';\n@use '~swiper/modules/navigation/navigation.scss';\n@use '~swiper/modules/pagination/pagination.scss';\n@use '~swiper/modules/scrollbar/scrollbar.scss';\n\n.swiper {\n z-index: 0;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n --swiper-navigation-size: 24px;\n --swiper-navigation-color: var(--color-on-primary-container);\n --swiper-pagination-color: var(--color-primary-container);\n --swiper-pagination-bullet-size: 12px;\n .swiper-button-prev,\n .swiper-button-next {\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius, 32px);\n box-shadow: var(--elevation-1);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n}\n\ngrw-outdoor-course-detail {\n overflow: hidden;\n}\n\n.outdoor-course-detail-container {\n font-family: var(--font-family);\n color: var(--color-on-surface);\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n .outdoor-course-name {\n color: var(--color-primary-app);\n font-size: 32px;\n line-height: 28px;\n font-weight: 600;\n padding: 0px 24px;\n margin: 16px 0px;\n }\n .outdoor-course-img {\n cursor: pointer;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .default-outdoor-course-img {\n background-color: var(--color-primary-container);\n object-fit: contain;\n }\n .outdoor-course-image-legend {\n position: absolute;\n top: 16px;\n font-size: 12px;\n color: #ffffff;\n width: 100%;\n text-align: center;\n }\n .outdoor-course-close-fullscreen-button {\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n z-index: 40;\n top: 16px;\n right: 16px;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius, 32px);\n box-shadow: var(--elevation-1);\n cursor: pointer;\n }\n .sub-container {\n padding: 24px 24px 0px 24px;\n .icons-labels-container {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n .icon-label {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .icon {\n display: flex;\n width: 24px;\n height: 24px;\n color: var(--color-primary-app);\n margin-right: 8px;\n }\n .network {\n &:not(:last-child) {\n margin-right: 16px;\n }\n }\n }\n .practice {\n .icon {\n display: flex;\n background-color: var(--color-primary-app);\n }\n }\n .network {\n display: flex;\n align-items: center;\n }\n }\n }\n .row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n .icon {\n margin-right: 8px;\n color: var(--color-primary-app);\n }\n }\n .downloads-container {\n padding: 0px 24px 0px 24px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n .download-title {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 500;\n }\n .links-container {\n display: flex;\n flex-wrap: wrap;\n a {\n margin-top: 8px;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: var(--border-radius, 8px);\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n text-decoration: none;\n font-family: var(--font-family);\n &:nth-child(2) {\n margin: 8px 12px 0px 12px;\n }\n &:hover {\n box-shadow: var(--elevation-2);\n }\n .icon {\n display: flex;\n }\n }\n }\n }\n\n .description-container,\n .advice-container,\n .weather-container,\n .touristic-content-container,\n .touristic-event-container {\n font-size: 16px;\n line-height: 24px;\n font-weight: 400;\n a {\n color: var(--color-primary-app);\n }\n }\n .description-title,\n .advice-title,\n .touristic-content-title,\n .touristic-event-title {\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-weight: bold;\n overflow-wrap: break-word;\n }\n .description-title,\n .advice-title,\n .touristic-content-title,\n .touristic-event-title {\n margin-bottom: 16px;\n }\n .description-container,\n .advice-container,\n .weather-container,\n .touristic-content-title,\n .touristic-event-title {\n padding: 0px 24px 0px 24px;\n }\n .description-container {\n .description {\n ol {\n position: relative;\n counter-reset: referencePoint;\n &:before {\n content: '';\n position: absolute;\n width: 4px;\n top: 0px;\n bottom: 0px;\n left: 14px;\n background-color: var(--color-primary-app);\n }\n li {\n position: relative;\n list-style-type: none;\n counter-increment: referencePoint;\n p {\n margin: 0;\n }\n &:not(:first-child) {\n margin-top: 12px;\n }\n }\n li:before {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n content: counter(referencePoint);\n width: 24px;\n height: 24px;\n background: #f04141;\n border-radius: 12px;\n font-weight: bold;\n font-size: 0.8em;\n color: white;\n margin-left: -36px;\n top: calc(50% - 12px);\n }\n }\n }\n }\n .current-advice-container {\n display: flex;\n padding: 12px;\n border: 2px solid var(--color-outline);\n border-radius: var(--border-radius, 12px);\n font-size: 16px;\n .icon img {\n width: 26px;\n margin-right: 8px;\n }\n margin-bottom: 12px;\n }\n .advice-container {\n div:last-child {\n margin-bottom: 0px;\n }\n }\n .departure-container,\n .cities-container {\n display: flex;\n align-items: center;\n padding: 0px 24px 24px 24px;\n .departure-title,\n .cities-title {\n color: var(--color-on-surface);\n font-weight: bold;\n white-space: nowrap;\n margin-right: 8px;\n }\n }\n .weather-container {\n iframe {\n width: 100%;\n }\n }\n .divider {\n margin: 16px;\n border-top: 1px solid var(--color-outline);\n }\n\n .detail-bottom-space {\n min-height: var(--detail-bottom-space-height);\n height: var(--detail-bottom-space-height);\n width: 100%;\n background-color: var(--color-background);\n }\n .type {\n .icon {\n display: flex;\n border-radius: 100%;\n padding: 2px;\n max-height: 20px;\n max-width: 20px;\n }\n }\n\n .offline-button {\n cursor: pointer;\n font-size: 14px;\n border: none;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: var(--border-radius, 8px);\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:hover {\n box-shadow: var(--elevation-2);\n }\n .icon {\n display: flex;\n }\n }\n\n .departure-container {\n padding-top: 24px;\n }\n\n .advice-container {\n .icon {\n margin-right: 8px;\n }\n }\n}\n\n.swiper-information-desks,\n.swiper-pois,\n.swiper-step,\n.swiper-touristic-content,\n.swiper-touristic-event {\n padding-right: 32px;\n padding-left: 32px;\n padding-bottom: 20px;\n}\n\n.accessibilities-container {\n padding: 0px 24px 0px 24px;\n font-size: 16px;\n line-height: 24px;\n font-weight: 400;\n a {\n color: var(--color-primary-app);\n }\n}\n\n.accessibilities-title {\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-weight: bold;\n margin-bottom: 16px;\n}\n","import { Build, Component, Host, Prop, State, getAssetPath, h, Event, EventEmitter } from '@stencil/core';\nimport { OutdoorCourse } from 'components';\nimport state, { onChange } from 'store/store';\nimport Swiper, { Navigation, Pagination, Keyboard, FreeMode, Mousewheel, Scrollbar } from 'swiper';\nimport CloseIcon from '../../assets/close.svg';\nimport { translate } from 'i18n/i18n';\nimport TimelapseIcon from '../../assets/timelapse.svg';\nimport OpenInFullIcon from '../../assets/open_in_full.svg';\nimport MovingIcon from '../../assets/moving.svg';\nimport DownloadIcon from '../../assets/download.svg';\nimport WarningIcon from '../../assets/warning.svg';\nimport { formatAscent, formatDuration, formatLength } from 'utils/utils';\n\nconst observerOptions = { threshold: 0 };\n\n@Component({\n tag: 'grw-outdoor-course-detail',\n styleUrl: 'grw-outdoor-course-detail.scss',\n shadow: true,\n})\nexport class GrwOutdoorCourseDetail {\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n @Prop() colorBackground = '#fef7ff';\n @Prop() isLargeView = false;\n @Prop() weather = false;\n @Prop() grwApp = false;\n\n @State() displayFullscreen = false;\n @State() currentOutdoorCourse: OutdoorCourse;\n @State() offline = false;\n\n @Event() poiIsInViewport: EventEmitter<boolean>;\n @Event() touristicContentsIsInViewport: EventEmitter<boolean>;\n @Event() touristicEventsIsInViewport: EventEmitter<boolean>;\n\n outdoorCourseDetailContainerRef?: HTMLElement;\n swiperImagesRef?: HTMLDivElement;\n prevElImagesRef?: HTMLDivElement;\n nextElImagesRef?: HTMLDivElement;\n paginationElImagesRef?: HTMLDivElement;\n swiperImages?: Swiper;\n\n presentationRef?: HTMLDivElement;\n descriptionRef?: HTMLDivElement;\n recommendationRef?: HTMLDivElement;\n\n swiperTouristicContents?: Swiper;\n swiperTouristicEvents?: Swiper;\n swiperTouristicContentsRef?: HTMLDivElement;\n swiperTouristicEventsRef?: HTMLDivElement;\n touristicContentsRef?: HTMLDivElement;\n touristicEventsRef?: HTMLDivElement;\n touristicContentsSwiperScrollbar?: HTMLDivElement;\n touristicEventsSwiperScrollbar?: HTMLDivElement;\n swiperPois?: Swiper;\n poiRef?: HTMLDivElement;\n swiperPoisRef?: HTMLDivElement;\n poisOptionRef?: HTMLAnchorElement;\n poisSwiperScrollbar?: HTMLDivElement;\n\n poiObserver: IntersectionObserver;\n touristicContentObserver: IntersectionObserver;\n touristicEventObserver: IntersectionObserver;\n\n handleSwipers() {\n if (this.swiperImagesRef && !this.swiperImages) {\n this.swiperImages = new Swiper(this.swiperImagesRef, {\n modules: [Navigation, Pagination, Keyboard, FreeMode, Mousewheel],\n navigation: {\n prevEl: this.prevElImagesRef,\n nextEl: this.nextElImagesRef,\n },\n pagination: { el: this.paginationElImagesRef },\n allowTouchMove: false,\n keyboard: false,\n loop: true,\n });\n this.swiperImagesRef.onfullscreenchange = () => {\n this.displayFullscreen = !this.displayFullscreen;\n this.displayFullscreen ? this.swiperImages.keyboard.enable() : this.swiperImages.keyboard.disable();\n };\n }\n\n if (this.swiperTouristicContentsRef && !this.swiperTouristicContents) {\n this.swiperTouristicContents = new Swiper(this.swiperTouristicContentsRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.touristicContentsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperTouristicEventsRef && !this.swiperTouristicEvents) {\n this.swiperTouristicEvents = new Swiper(this.swiperTouristicEventsRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.touristicEventsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperPoisRef && !this.swiperPois) {\n this.swiperPois = new Swiper(this.swiperPoisRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.poisSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n }\n\n handleObservers() {\n if (this.poiRef && !this.poiObserver) {\n this.poiObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.poiIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.poiObserver.observe(this.poiRef);\n }\n\n if (this.touristicContentsRef && !this.touristicContentObserver) {\n this.touristicContentObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.touristicContentsIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.touristicContentObserver.observe(this.touristicContentsRef);\n }\n if (this.touristicEventsRef && !this.touristicEventObserver) {\n this.touristicEventObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.touristicEventsIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.touristicEventObserver.observe(this.touristicEventsRef);\n }\n }\n\n componentDidUpdate() {\n this.handleObservers();\n this.handleSwipers();\n }\n\n componentDidLoad() {\n this.handleObservers();\n this.handleSwipers();\n }\n\n async connectedCallback() {\n if (state.currentOutdoorCourse) {\n this.currentOutdoorCourse = state.currentOutdoorCourse;\n this.offline = this.currentOutdoorCourse.offline;\n }\n\n onChange('currentOutdoorCourse', async () => {\n if (state.currentOutdoorCourse) {\n this.currentOutdoorCourse = state.currentOutdoorCourse;\n this.offline = this.currentOutdoorCourse.offline;\n }\n });\n }\n\n handleFullscreen(close: boolean = false) {\n if (!close) {\n if (this.currentOutdoorCourse.attachments && this.currentOutdoorCourse.attachments[0] && this.currentOutdoorCourse.attachments[0].url) {\n this.swiperImagesRef.requestFullscreen();\n }\n } else {\n (document as any).exitFullscreen();\n }\n }\n\n render() {\n const defaultImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/default-image.svg`);\n const type = state.outdoorCourseTypes && this.currentOutdoorCourse && state.outdoorCourseTypes.find(type => type.id === this.currentOutdoorCourse.type);\n const city = state.cities && state.cities.find(city => city.id === this.currentOutdoorCourse.cities[0]);\n const outdoorRatings =\n state.outdoorRatings && this.currentOutdoorCourse && state.outdoorRatings.filter(outdoorRating => this.currentOutdoorCourse.ratings.includes(outdoorRating.id));\n const currentOutdoorCoursesRatingsScales = outdoorRatings && [...new Set(outdoorRatings.map(outdoorRating => outdoorRating.scale))];\n const outdoorRatingsScales =\n currentOutdoorCoursesRatingsScales && state.outdoorRatingsScale.filter(outdoorRatingsScale => currentOutdoorCoursesRatingsScales.includes(outdoorRatingsScale.id));\n\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\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-secondary-container': this.colorSecondaryContainer,\n '--color-on-secondary-container': this.colorOnSecondaryContainer,\n '--color-background': this.colorBackground,\n '--detail-bottom-space-height': this.isLargeView\n ? state.languages && state.languages.length > 1\n ? '44px'\n : '12px'\n : state.languages && state.languages.length > 1\n ? '164px'\n : '124px',\n }}\n >\n {this.currentOutdoorCourse && (\n <div part=\"outdoor-course-detail-container\" class=\"outdoor-course-detail-container\" ref={el => (this.outdoorCourseDetailContainerRef = el)}>\n <div part=\"outdoor-course-images-container\" class=\"outdoor-course-images-container\" ref={el => (this.presentationRef = el)}>\n <div part=\"swiper-images\" class=\"swiper swiper-images\" ref={el => (this.swiperImagesRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {this.currentOutdoorCourse.attachments.filter(attachment => attachment.type === 'image').length > 0 ? (\n this.currentOutdoorCourse.attachments\n .filter(attachment => attachment.type === 'image')\n .map(attachment => {\n const legend = [attachment.legend, attachment.author].filter(Boolean).join(' - ');\n return (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n {this.displayFullscreen && (\n <div part=\"outdoor-course-close-fullscreen-button\" class=\"outdoor-course-close-fullscreen-button\" onClick={() => this.handleFullscreen(true)}>\n <span part=\"outdoor-course-close-fullcreen-icon\" class=\"outdoor-course-close-fullcreen-icon\" innerHTML={CloseIcon}></span>\n </div>\n )}\n <div part=\"outdoor-course-image-legend\" class=\"outdoor-course-image-legend\">\n {legend}\n </div>\n <img\n part=\"outdoor-course-img\"\n class=\"outdoor-course-img\"\n src={this.offline && attachment.thumbnail !== '' ? attachment.thumbnail : attachment.url}\n loading=\"lazy\"\n onClick={() => this.handleFullscreen()}\n /* @ts-ignore */\n onerror={event => {\n event.target.onerror = null;\n event.target.className = 'outdoor-course-img default-outdoor-course-img';\n event.target.src = defaultImageSrc;\n }}\n alt={attachment.legend}\n />\n </div>\n );\n })\n ) : (\n <img part=\"outdoor-course-img\" class=\"outdoor-course-img default-outdoor-course-img\" src={defaultImageSrc} loading=\"lazy\" alt=\"\" />\n )}\n </div>\n <div>\n <div part=\"swiper-pagination\" class=\"swiper-pagination\" ref={el => (this.paginationElImagesRef = el)}></div>\n <div part=\"swiper-button-prev\" class=\"swiper-button-prev\" ref={el => (this.prevElImagesRef = el)}></div>\n <div part=\"swiper-button-next\" class=\"swiper-button-next\" ref={el => (this.nextElImagesRef = el)}></div>\n </div>\n </div>\n </div>\n <div part=\"outdoor-course-name\" class=\"outdoor-course-name\">\n {this.currentOutdoorCourse.name}\n </div>\n <div part=\"sub-container\" class=\"sub-container\">\n <div part=\"icons-labels-container\" class=\"icons-labels-container\">\n {type && (\n <div part=\"icon-label\" class=\"icon-label type\">\n {type.pictogram && <img part=\"icon\" class=\"icon\" src={type.pictogram} alt=\"\" />}\n <span part=\"label\" class=\"label\">\n {type.name}\n </span>\n </div>\n )}\n <div part=\"icon-label\" class=\"icon-label duration\">\n <span part=\"icon\" class=\"icon\" innerHTML={TimelapseIcon}></span>\n <span part=\"label\" class=\"label\">\n {formatDuration(this.currentOutdoorCourse.duration)}\n </span>\n </div>\n <div part=\"icon-label\" class=\"icon-label length\">\n <span part=\"icon\" class=\"icon\" innerHTML={OpenInFullIcon}></span>\n <span part=\"label\" class=\"label\">\n {formatLength(this.currentOutdoorCourse.length)}\n </span>\n </div>\n {this.currentOutdoorCourse.max_elevation && (\n <div part=\"icon-label\" class=\"icon-label ascent\">\n <span part=\"icon\" class=\"icon\" innerHTML={MovingIcon}></span>\n <span part=\"label\" class=\"label\">\n {formatAscent(this.currentOutdoorCourse.max_elevation)}\n </span>\n </div>\n )}\n {outdoorRatings &&\n outdoorRatingsScales.map(outdoorRatingsScale => (\n <div part=\"row\" class=\"row\">\n {`${outdoorRatingsScale.name} : ${outdoorRatings\n .filter(outdoorRating => outdoorRating.scale === outdoorRatingsScale.id)\n .map(rating => rating.name)\n .join(', ')}`}\n </div>\n ))}\n </div>\n </div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"downloads-container\" class=\"downloads-container\">\n <div part=\"download-title\" class=\"download-title\">\n {translate[state.language].downloads}\n </div>\n <div part=\"links-container\" class=\"links-container\">\n <a\n href={`${this.currentOutdoorCourse.pdf}${\n state.portalsFromProviders && state.portalsFromProviders.length === 1 ? '?portal=' + state.portalsFromProviders[0] : ''\n }`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span part=\"icon\" class=\"icon\" innerHTML={DownloadIcon}></span>\n <span part=\"label\" class=\"label\">\n PDF\n </span>\n </a>\n </div>\n </div>\n <div part=\"divider\" class=\"divider\"></div>\n {this.currentOutdoorCourse.description && (\n <div part=\"description-container\" class=\"description-container\">\n <div part=\"description-title\" class=\"description-title\" ref={el => (this.descriptionRef = el)}>\n {translate[state.language].description}\n </div>\n <div part=\"description\" class=\"description\" innerHTML={this.currentOutdoorCourse.description}></div>\n </div>\n )}\n {this.currentOutdoorCourse && this.currentOutdoorCourse.cities && this.currentOutdoorCourse.cities.length > 0 && (\n <div part=\"departure-container\" class=\"departure-container\">\n <div part=\"departure-title\" class=\"departure-title\">\n {translate[state.language].departure} :&nbsp;\n </div>\n <div part=\"departure\" innerHTML={city.name}></div>\n </div>\n )}\n {this.currentOutdoorCourse.cities && this.currentOutdoorCourse.cities.length > 0 && (\n <div part=\"cities-container\" class=\"cities-container\">\n <div part=\"cities-title\" class=\"cities-title\">\n {translate[state.language].crossedCities} :&nbsp;\n </div>\n <div part=\"cities\" innerHTML={this.currentOutdoorCourse.cities.map(currentCity => state.cities.find(city => city.id === currentCity)?.name).join(', ')}></div>\n </div>\n )}\n {this.currentOutdoorCourse.advice && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"advice-container\" class=\"advice-container\">\n <div part=\"advice-title\" class=\"advice-title\" ref={el => (this.recommendationRef = el)}>\n {translate[state.language].recommendations}\n </div>\n {this.currentOutdoorCourse.advice && (\n <div part=\"current-advice-container\" class=\"current-advice-container\">\n <span part=\"icon\" class=\"icon\" innerHTML={WarningIcon}></span>\n <div part=\"advice\" class=\"advice\" innerHTML={this.currentOutdoorCourse.advice}></div>\n </div>\n )}\n </div>\n </div>\n )}\n {this.currentOutdoorCourse.accessibility && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"accessibilities-container\" class=\"accessibilities-container\">\n <div part=\"accessibilites-title\" class=\"accessibilities-title\">\n {translate[state.language].accessibility}\n </div>\n <div part=\"accessibilities\" innerHTML={this.currentOutdoorCourse.accessibility}></div>\n </div>\n </div>\n )}\n {state.trekTouristicContents && state.trekTouristicContents.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"touristic-content-container\" class=\"touristic-content-container\" ref={el => (this.touristicContentsRef = el)}>\n <div part=\"touristic-content-title\" class=\"touristic-content-title\">\n {translate[state.language].touristicContents(state.trekTouristicContents.length)}\n </div>\n <div part=\"swiper-touristic-content\" class=\"swiper swiper-touristic-content\" ref={el => (this.swiperTouristicContentsRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.trekTouristicContents.map(touristicContent => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-touristic-content-card\n exportparts=\"touristic-content-card,touristic-content-img-container,swiper-touristic-content,swiper-wrapper,swiper-slide,touristic-content-img,default-touristic-content-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-content-sub-container,touristic-content-category-container,touristic-content-category-img,touristic-content-category-name,touristic-content-name,touristic-content-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n touristicContent={touristicContent}\n isInsideHorizontalList={true}\n ></grw-touristic-content-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.touristicContentsSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {state.trekTouristicEvents && state.trekTouristicEvents.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"touristic-event-container\" class=\"touristic-event-container\" ref={el => (this.touristicEventsRef = el)}>\n <div part=\"touristic-event-title\" class=\"touristic-event-title\">\n {translate[state.language].touristicEvents(state.trekTouristicEvents.length)}\n </div>\n <div part=\"swiper-touristic-event\" class=\"swiper swiper-touristic-event\" ref={el => (this.swiperTouristicEventsRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.trekTouristicEvents.map(touristicEvent => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-touristic-event-card\n exportparts=\"touristic-event-card,touristic-event-img-container,swiper-touristic-event,swiper-wrapper,swiper-slide,touristic-event-img,default-touristic-event-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-event-sub-container,touristic-event-sub-container,touristic-event-type-img,touristic-event-type-name,touristic-event-name,touristic-event-date-container,touristic-event-date,touristic-event-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n touristicEvent={touristicEvent}\n isInsideHorizontalList={true}\n ></grw-touristic-event-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.touristicEventsSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {state.currentPois && state.currentPois.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"pois-container\" class=\"pois-container\" ref={el => (this.poiRef = el)}>\n <div part=\"pois-title\" class=\"pois-title\">\n {translate[state.language].pois(state.currentPois.length)}\n </div>\n <div part=\"swiper-pois\" class=\"swiper swiper-pois\" ref={el => (this.swiperPoisRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentPois.map(poi => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-poi\n exportparts=\"poi-type-img-container,poi-type,swiper-poi,swiper-wrapper,swiper-slide,poi-img,default-poi-img,swiper-pagination,swiper-button-prev,swiper-button-next,poi-sub-container,poi-name,poi-description,handle-poi-description\"\n poi={poi}\n ></grw-poi>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.poisSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {this.weather && city && !this.offline && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"weather-container\" class=\"weather-container\">\n <iframe height=\"150\" frameborder=\"0\" src={`https://meteofrance.com/widget/prevision/${city.id}0#${this.colorPrimaryApp}`}></iframe>\n </div>\n </div>\n )}\n {this.grwApp && <div part=\"detail-bottom-space\" class=\"detail-bottom-space\"></div>}\n </div>\n )}\n </Host>\n );\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { getDataInStore, handleOfflineProperty } from 'services/grw-db.service';\nimport { getOutdoorCourse, getOutdoorCourseTypes, getPoisNearCourse } from 'services/outdoor-courses.service';\nimport { getTouristicContentCategory, getTouristicContentsNearOutdoorCourse } from 'services/touristic-contents.service';\nimport { getTouristicEventsNearOutdoorCourse, getTouristicEventType } from 'services/touristic-events.service';\nimport { getCities, getDistricts, getThemes } from 'services/treks.service';\nimport state from 'store/store';\nimport { OutdoorCourse } from 'types/types';\nimport { getCacheMode, imagesRegExp, setFilesFromStore } from 'utils/utils';\n\n@Component({\n tag: 'grw-outdoor-course-provider',\n shadow: true,\n})\nexport class GrwOutdoorCourseProvider {\n @Prop() languages = 'fr';\n @Prop() api: string;\n @Prop() outdoorCourseId: number;\n @Prop() portals: string;\n\n controller = new AbortController();\n signal = this.controller.signal;\n init: RequestInit = { cache: getCacheMode(), signal: this.signal };\n\n connectedCallback() {\n if (!state.api) {\n state.api = this.api;\n state.languages = this.languages.split(',');\n state.language = state.languages[0];\n }\n this.handleOutdoorCourse();\n }\n\n async handleOutdoorCourse() {\n const outdoorCourseInStore: OutdoorCourse = await getDataInStore('outdoorCourses', this.outdoorCourseId);\n if (outdoorCourseInStore && outdoorCourseInStore.offline) {\n this.handleOfflineOutdoorCourse(outdoorCourseInStore);\n } else {\n this.handleOnlineOutdoorCourse();\n }\n }\n\n async handleOfflineOutdoorCourse(outdoorCourse: OutdoorCourse) {\n state.cities = await handleOfflineProperty('cities');\n state.districts = await handleOfflineProperty('districts');\n state.themes = await handleOfflineProperty('themes');\n state.touristicContentCategories = await handleOfflineProperty('touristicContentCategories');\n state.touristicEventTypes = await handleOfflineProperty('touristicEventTypes');\n state.poiTypes = await handleOfflineProperty('poiTypes');\n state.outdoorCourseTypes = await handleOfflineProperty('outdoorCourseTypes');\n\n const poisInStore = await handleOfflineProperty('pois', ['url']);\n const pois = poisInStore.filter(poiInStore => outdoorCourse.pois.some(outdoorCoursePoi => outdoorCoursePoi === poiInStore.id));\n state.currentPois = pois;\n\n const touristicContentsInStore = await handleOfflineProperty('touristicContents', ['url']);\n const touristicContents = touristicContentsInStore.filter(touristicContentInStore =>\n outdoorCourse.touristicContents.some(outdoorCourseTouristicContent => outdoorCourseTouristicContent === touristicContentInStore.id),\n );\n state.trekTouristicContents = touristicContents;\n\n const touristicEventsInStore = await handleOfflineProperty('touristicEvents', ['url']);\n const touristicEvents = touristicEventsInStore.filter(touristicEventInStore =>\n outdoorCourse.touristicEvents.some(outdoorCourseTouristicEvent => outdoorCourseTouristicEvent === touristicEventInStore.id),\n );\n state.trekTouristicEvents = touristicEvents;\n\n await setFilesFromStore(outdoorCourse, imagesRegExp, ['url']);\n state.currentOutdoorCourse = outdoorCourse;\n }\n\n handleOnlineOutdoorCourse() {\n const requests = [];\n requests.push(!state.districts ? getDistricts(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.themes ? getThemes(state.api, state.language, this.portals, this.init) : new Response('null'));\n requests.push(!state.outdoorCourseTypes ? getOutdoorCourseTypes(state.api, state.language, this.init) : new Response('null'));\n requests.push(getTouristicContentsNearOutdoorCourse(state.api, state.language, this.outdoorCourseId, this.init));\n requests.push(getTouristicContentCategory(state.api, state.language, null, this.init));\n requests.push(getTouristicEventsNearOutdoorCourse(state.api, state.language, this.outdoorCourseId, this.init));\n requests.push(getTouristicEventType(state.api, state.language, null, this.init));\n requests.push(getPoisNearCourse(state.api, state.language, this.outdoorCourseId, this.init));\n requests.push(fetch(`${state.api}poi_type/?language=${state.language}&fields=id,pictogram`, this.init));\n requests.push(getOutdoorCourse(state.api, state.language, this.outdoorCourseId, this.init));\n try {\n Promise.all([...requests])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(\n async ([\n districts,\n themes,\n outdoorCourseTypes,\n touristicContent,\n touristicContentCategory,\n touristicEvent,\n touristicEventType,\n pois,\n poiTypes,\n outdoorCourse,\n ]) => {\n state.networkError = false;\n\n if (districts) {\n state.districts = districts.results;\n }\n if (themes) {\n state.themes = themes.results;\n }\n if (outdoorCourseTypes) {\n state.outdoorCourseTypes = outdoorCourseTypes.results;\n }\n if (touristicContent) {\n state.trekTouristicContents = touristicContent.results;\n }\n if (touristicContentCategory) {\n state.touristicContentCategories = touristicContentCategory.results;\n }\n if (touristicEvent) {\n state.trekTouristicEvents = touristicEvent.results;\n }\n if (touristicEventType) {\n state.touristicEventTypes = touristicEventType.results;\n }\n if (pois) {\n state.currentPois = pois.results;\n }\n if (poiTypes) {\n state.poiTypes = poiTypes.results;\n }\n\n state.currentOutdoorCourse = outdoorCourse;\n\n let citiesToLoad = [...outdoorCourse.cities];\n if (state.cities) {\n const cityIds = state.cities.map(city => city.id);\n citiesToLoad = citiesToLoad.filter(city => city && !cityIds.includes(city));\n }\n if (citiesToLoad.length > 0) {\n try {\n const cities = (await getCities(state.api, state.language, this.init, citiesToLoad).then(response => response.json())).results;\n if (cities) {\n state.cities = [...state.cities, ...cities];\n }\n } catch (e) {\n console.error('Failed to load cities', e);\n }\n }\n },\n );\n } catch (error) {\n if (!(error.code === DOMException.ABORT_ERR)) {\n state.networkError = true;\n }\n }\n }\n\n disconnectedCallback() {\n this.controller.abort();\n state.networkError = false;\n }\n\n render() {\n return <Host></Host>;\n }\n}\n","import { getDataInStore } from './grw-db.service';\nimport { getAllPaginatedResults } from '../utils/utils';\n\nexport function getOutdoorSites(api, language, inBbox, cities, districts, structures, themes, portals, init) {\n let outdoorSitesRequest = `${api}outdoor_site/?language=${language}&root_sites_only=true&published=true`;\n inBbox && (outdoorSitesRequest += `&in_bbox=${inBbox}`);\n cities && (outdoorSitesRequest += `&cities=${cities}`);\n districts && (outdoorSitesRequest += `&districts=${districts}`);\n structures && (outdoorSitesRequest += `&structures=${structures}`);\n themes && (outdoorSitesRequest += `&themes=${themes}`);\n portals && (outdoorSitesRequest += `&portals=${portals}`);\n\n outdoorSitesRequest += `&fields=id,name,geometry,accessibility,advice,ambiance,attachments,cities,children,description,description_teaser,districts,information_desks,labels,managers,orientation,pdf,period,parent,portal,practice,provider,ratings,sector,source,structure,themes,view_points,type,courses,web_links,wind`;\n return getAllPaginatedResults(outdoorSitesRequest, init);\n}\n\nexport function getOutdoorSite(api, language, outdoorSiteId, init) {\n let outdoorSitesRequest = `${api}outdoor_site/${outdoorSiteId}/?language=${language}&published=true`;\n outdoorSitesRequest += `&fields=id,name,geometry,accessibility,advice,ambiance,attachments,cities,children,description,description_teaser,districts,information_desks,labels,managers,orientation,pdf,period,parent,portal,practice,provider,ratings,sector,source,structure,themes,view_points,type,courses,web_links,wind,parents`;\n return fetch(outdoorSitesRequest, init);\n}\n\nexport function getOutdoorSiteTypes(api, language, init) {\n let outdoorSitesTypeRequest = `${api}outdoor_sitetype/?language=${language}&published=true`;\n return fetch(outdoorSitesTypeRequest, init);\n}\n\nexport function getOutdoorPractices(api, language, init) {\n let outdoorPracticesRequest = `${api}outdoor_practice/?language=${language}&published=true`;\n return fetch(outdoorPracticesRequest, init);\n}\n\nexport function getPoisNearSite(api, language, siteId, init) {\n return getAllPaginatedResults(`${api}poi/?language=${language}&sites=${siteId}&published=true&fields=id,name,description,attachments,type,geometry`, init);\n}\n\nexport async function outdoorSiteIsAvailableOffline(outdoorSiteId) {\n const outdoorSites = await getDataInStore('outdoorSites', outdoorSiteId);\n return outdoorSites && outdoorSites.offline;\n}\n\nexport function getOutdoorRatings(api: string, language: string, portals: string, init: RequestInit) {\n return getAllPaginatedResults(`${api}outdoor_rating/?language=${language}${portals ? '&portals='.concat(portals) : ''}&fields=id,name,scale`, init);\n}\n\nexport function getOutdoorRatingsScale(api: string, language: string, init: RequestInit) {\n return getAllPaginatedResults(`${api}outdoor_ratingscale/?language=${language}&fields=id,name`, init);\n}\n\n","@use '~swiper/swiper.scss';\n@use '~swiper/modules/navigation/navigation.scss';\n@use '~swiper/modules/pagination/pagination.scss';\n@use '~swiper/modules/scrollbar/scrollbar.scss';\n\n.swiper {\n z-index: 0;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n --swiper-navigation-size: 24px;\n --swiper-navigation-color: var(--color-on-primary-container);\n --swiper-pagination-color: var(--color-primary-container);\n --swiper-pagination-bullet-size: 12px;\n .swiper-button-prev,\n .swiper-button-next {\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius, 32px);\n box-shadow: var(--elevation-1);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n}\n\ngrw-outdoor-site-detail {\n overflow: hidden;\n}\n\n.swiper-related-outdoor-sites,\n.swiper-related-outdoor-courses {\n padding-right: 32px;\n padding-left: 32px;\n padding-bottom: 20px;\n}\n\n.related-outdoor-sites-title,\n.related-outdoor-courses-title {\n padding: 0px 24px 0px 24px;\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-weight: bold;\n padding: 0px 24px 0px 24px;\n margin-bottom: 16px;\n}\n\n.related-outdoor-sites-container,\n.related-outdoor-courses-container {\n font-size: 16px;\n line-height: 24px;\n font-weight: 400;\n a {\n color: var(--color-primary-app);\n }\n}\n\ngrw-outdoor-site-detail {\n overflow: hidden;\n}\n\n.outdoor-site-options {\n flex-shrink: 0;\n display: flex;\n position: relative;\n width: 100%;\n min-height: 32px;\n padding: 8px 0px;\n background-color: var(--color-background);\n overflow-x: auto;\n font-family: var(--font-family);\n &::-webkit-scrollbar {\n height: 5px;\n }\n &::-webkit-scrollbar-thumb {\n background: var(--color-primary-app);\n border-radius: 8px;\n }\n .outdoor-site-option {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 16px;\n font-size: 22px;\n line-height: 28px;\n font-weight: 500;\n white-space: nowrap;\n text-decoration: none;\n color: var(--color-on-surface);\n transition-property: color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 0.3s;\n &:hover {\n color: var(--color-primary-app);\n }\n @media (hover: none) {\n &:not(.selected-outdoor-site-option):hover {\n color: inherit;\n }\n }\n }\n .outdoor-site-option:last-of-type {\n margin-right: 16px;\n }\n .selected-outdoor-site-option {\n color: var(--color-primary-app);\n }\n .outdoor-site-indicator-selected-outdoor-site-option {\n position: absolute;\n bottom: 8px;\n height: 2px;\n background-image: linear-gradient(var(--color-primary-app), var(--color-primary-app));\n background-repeat: no-repeat;\n transition:\n transform 0.5s ease,\n background-size 0.5s ease 0.5s;\n margin-left: 16px;\n background-position: center;\n }\n}\n.outdoor-site-detail-container {\n font-family: var(--font-family);\n color: var(--color-on-surface);\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n .outdoor-site-name {\n color: var(--color-primary-app);\n font-size: 32px;\n line-height: 28px;\n font-weight: 600;\n padding: 0px 24px;\n margin: 16px 0px;\n }\n .outdoor-site-img {\n cursor: pointer;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .default-outdoor-site-img {\n background-color: var(--color-primary-container);\n object-fit: contain;\n }\n .sub-container {\n padding: 24px 24px 0px 24px;\n .icons-labels-container {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n .icon-label {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .icon {\n display: flex;\n width: 24px;\n height: 24px;\n color: var(--color-primary-app);\n margin-right: 8px;\n }\n .network {\n &:not(:last-child) {\n margin-right: 16px;\n }\n }\n }\n .practice {\n .icon {\n display: flex;\n background-color: var(--color-primary-app);\n }\n }\n .network {\n display: flex;\n align-items: center;\n }\n }\n }\n .row {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n .icon {\n margin-right: 8px;\n color: var(--color-primary-app);\n }\n }\n .downloads-container {\n padding: 0px 24px 0px 24px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n .download-title {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 500;\n }\n .links-container {\n display: flex;\n flex-wrap: wrap;\n a {\n margin-top: 8px;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: var(--border-radius, 8px);\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n text-decoration: none;\n font-family: var(--font-family);\n &:nth-child(2) {\n margin: 8px 12px 0px 12px;\n }\n &:hover {\n box-shadow: var(--elevation-2);\n }\n .icon {\n display: flex;\n }\n }\n }\n }\n .themes-container {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n padding: 0px 24px 0px 24px;\n .theme {\n background-color: var(--color-secondary-container);\n color: var(--color-on-secondary-container);\n border-radius: var(--border-radius, 40px);\n padding: 8px 16px;\n margin: 0px 8px 8px 0px;\n box-shadow: var(--elevation-0);\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n }\n }\n .ambiance,\n .description-teaser,\n .description-container,\n .altimetric-profile-container,\n .access-container,\n .public-transport-container,\n .advice-container,\n .advised-parking-container,\n .sensitive-areas-container,\n .source-container,\n .accessibilities-container,\n .parent-outdoor-site-container,\n .weather-container,\n .weblinks-container {\n padding: 0px 24px 0px 24px;\n }\n .ambiance,\n .description-teaser,\n .description-container,\n .altimetric-profile-container,\n .access-container,\n .public-transport-container,\n .advice-container,\n .advised-parking-container,\n .sensitive-areas-container,\n .information-desks-container,\n .pois-container,\n .source-container,\n .accessibilities-container,\n .weather-container,\n .parent-outdoor-site-container,\n .step-container,\n .touristic-content-container,\n .touristic-event-container,\n .weblinks-container {\n font-size: 16px;\n line-height: 24px;\n font-weight: 400;\n a {\n color: var(--color-primary-app);\n }\n }\n .description-teaser {\n font-weight: 600;\n font-size: 22px;\n margin-bottom: 8px;\n }\n .description-title,\n .altimetric-profile-title,\n .access-title,\n .public-transport-title,\n .advice-title,\n .advised-parking-title,\n .sensitive-areas-title,\n .information-desks-title,\n .pois-title,\n .source-title,\n .accessibilities-title,\n .step-title,\n .parent-outdoor-site-title,\n .touristic-content-title,\n .touristic-event-title,\n .weblinks-title {\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-weight: bold;\n }\n\n .access {\n margin-bottom: 16px;\n }\n\n .advised-parking-title {\n font-size: 16px;\n }\n\n .description-title,\n .altimetric-profile-title,\n .access-title,\n .public-transport-title,\n .advice-title,\n .advised-parking-title,\n .sensitive-areas-title,\n .information-desks-title,\n .pois-title,\n .source-title,\n .accessibilities-title,\n .parent-outdoor-site-title,\n .touristic-content-title,\n .touristic-event-title,\n .weblinks-title {\n margin-bottom: 16px;\n }\n\n .step-title {\n margin-bottom: 12px;\n }\n\n .information-desks-title,\n .pois-title,\n .step-title,\n .touristic-content-title,\n .touristic-event-title {\n padding: 0px 24px 0px 24px;\n }\n\n .parent-outdoor-site-title {\n cursor: pointer;\n user-select: none;\n font-weight: 500;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n box-shadow: var(--elevation-0);\n border: none;\n -webkit-tap-highlight-color: transparent;\n line-height: 20px;\n color: var(--color-primary);\n background-color: transparent;\n div {\n margin-right: 4px;\n }\n }\n\n .accessibility-emergency-number-content {\n a {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n border-radius: var(--border-radius, 40px);\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n text-decoration: none;\n font-weight: 600;\n width: fit-content;\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n position: relative;\n font-family: var(--font-family);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n }\n}\n\n.description-container {\n .description {\n ol {\n position: relative;\n counter-reset: referencePoint;\n &:before {\n content: '';\n position: absolute;\n width: 4px;\n top: 0px;\n bottom: 0px;\n left: 14px;\n background-color: var(--color-primary-app);\n }\n li {\n position: relative;\n list-style-type: none;\n counter-increment: referencePoint;\n p {\n margin: 0;\n }\n &:not(:first-child) {\n margin-top: 12px;\n }\n }\n li:before {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n content: counter(referencePoint);\n width: 24px;\n height: 24px;\n background: #f04141;\n border-radius: 12px;\n font-weight: bold;\n font-size: 0.8em;\n color: white;\n margin-left: -36px;\n top: calc(50% - 12px);\n }\n }\n }\n}\n\n.current-advice-container,\n.gear-container {\n display: flex;\n padding: 12px;\n border: 2px solid var(--color-outline);\n border-radius: var(--border-radius, 12px);\n font-size: 16px;\n .icon img {\n width: 26px;\n margin-right: 8px;\n }\n margin-bottom: 12px;\n}\n\n.label-container {\n padding: 12px;\n border: 2px solid var(--color-outline);\n border-radius: var(--border-radius, 12px);\n margin-bottom: 12px;\n .label-sub-container {\n display: flex;\n align-items: center;\n img {\n width: 26px;\n margin-right: 16px;\n background-color: var(--color-on-surface);\n }\n .label-name {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n padding: 12px 0px;\n }\n }\n .label-advice {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 500;\n }\n}\n\n.advice-container {\n div:last-child {\n margin-bottom: 0px;\n }\n}\n\n.weblinks-container {\n .weblink-container {\n display: flex;\n align-items: center;\n width: fit-content;\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 12px 0px;\n img {\n width: 26px;\n margin-right: 16px;\n }\n }\n}\n\n.departure-container,\n.arrival-container,\n.cities-container {\n display: flex;\n align-items: center;\n padding: 0px 24px 24px 24px;\n .departure-title,\n .arrival-title,\n .cities-title {\n color: var(--color-on-surface);\n font-weight: bold;\n white-space: nowrap;\n margin-right: 8px;\n }\n}\n.accessibilities-container {\n div:nth-child(2) {\n div:first-child {\n padding: 0px 0px 12px 0px;\n }\n }\n .accessibilities-content-container {\n padding: 12px 0px 0px 0px;\n display: flex;\n .accessibility-content-container {\n display: flex;\n align-items: center;\n margin: 0px 8px 8px 0px;\n img {\n margin-right: 16px;\n width: 26px;\n }\n }\n }\n .accessibility-level-title,\n .accessibility-slope-title,\n .accessibility-width-title,\n .accessibility-signage-title,\n .accessibility-covering-title,\n .accessibility-exposure-title,\n .accessibility-advice-title,\n .accessibility-emergency-number-title {\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n padding: 12px 0px;\n }\n}\n\n.weather-container {\n iframe {\n width: 100%;\n }\n}\n\n.swiper-information-desks,\n.swiper-pois,\n.swiper-step,\n.swiper-touristic-content,\n.swiper-touristic-event {\n padding-right: 32px;\n padding-left: 32px;\n padding-bottom: 20px;\n}\n\n.swiper-step {\n padding-bottom: 4px;\n .swiper-wrapper {\n .swiper-slide {\n counter-increment: stepPoint;\n padding-top: 36px;\n }\n .swiper-slide:first-child:before {\n border-top-left-radius: var(--border-radius, 8px);\n border-bottom-left-radius: var(--border-radius, 8px);\n }\n .swiper-slide:before {\n content: '';\n position: absolute;\n top: 6px;\n height: 12px;\n width: calc(100% + 20px);\n background-color: var(--color-secondary-container);\n }\n .swiper-slide:last-child:before {\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n width: 100%;\n }\n .swiper-slide:after {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n content: counter(stepPoint);\n width: 24px;\n height: 24px;\n background: var(--color-primary-app);\n border-radius: var(--border-radius, 12px);\n font-weight: bold;\n font-size: 0.8em;\n color: white;\n margin-left: calc(50% - 12px);\n top: 0px;\n }\n }\n}\n\n.divider {\n margin: 16px;\n border-top: 1px solid var(--color-outline);\n}\n\n.detail-bottom-space {\n min-height: var(--detail-bottom-space-height);\n height: var(--detail-bottom-space-height);\n width: 100%;\n background-color: var(--color-background);\n}\n\n.outdoor-site-images-container {\n display: flex;\n max-width: 100%;\n max-height: 400px;\n}\n\n.descent .icon {\n display: flex;\n transform: rotateX(180deg);\n}\n\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n --swiper-scrollbar-sides-offset: 32px;\n}\n\n.swiper-scrollbar-drag {\n background-color: var(--color-primary-app);\n}\n\n.sensitive-areas-description {\n font-size: 16px;\n}\n\n.step-container {\n .swiper-wrapper {\n padding-bottom: 16px;\n }\n}\n\n.outdoor-site-image-legend {\n position: absolute;\n top: 16px;\n font-size: 12px;\n color: #ffffff;\n width: 100%;\n text-align: center;\n}\n\n.outdoor-site-close-fullscreen-button {\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n z-index: 40;\n top: 16px;\n right: 16px;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius, 32px);\n box-shadow: var(--elevation-1);\n cursor: pointer;\n}\n\n.practice {\n .icon {\n display: flex;\n border-radius: 100%;\n padding: 2px;\n max-height: 20px;\n max-width: 20px;\n }\n}\n\n.offline-button {\n cursor: pointer;\n font-size: 14px;\n border: none;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: var(--border-radius, 8px);\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:hover {\n box-shadow: var(--elevation-2);\n }\n .icon {\n display: flex;\n }\n}\n\n.departure-container {\n padding-top: 24px;\n}\n\n.advice-container {\n .icon {\n margin-right: 8px;\n }\n}\n\n.source-container {\n .source-sub-container {\n display: flex;\n align-items: center;\n img {\n width: 100px;\n margin-right: 16px;\n }\n .source-name {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 12px 0px;\n }\n }\n}\n","import { Build, Component, Host, Prop, State, getAssetPath, h, Event, EventEmitter, Listen, Fragment } from '@stencil/core';\nimport { OutdoorSite } from 'components';\nimport state, { onChange } from 'store/store';\nimport Swiper, { Navigation, Pagination, Keyboard, FreeMode, Mousewheel, Scrollbar } from 'swiper';\nimport CloseIcon from '../../assets/close.svg';\nimport { translate } from 'i18n/i18n';\nimport DownloadIcon from '../../assets/download.svg';\nimport EventIcon from '../../assets/event.svg';\nimport WarningIcon from '../../assets/warning.svg';\nimport AirIcon from '../../assets/air.svg';\nimport ExploreIcon from '../../assets/explore.svg';\nimport DownloadForOfflineIcon from '../../assets/download_for_offline.svg';\nimport DeleteIcon from '../../assets/delete.svg';\nimport { getAllDataInStore, getDataInStore, writeOrUpdateDataInStore, writeOrUpdateFilesInStore, writeOrUpdateTilesInStore } from 'services/grw-db.service';\nimport { getCacheMode, imagesRegExp } from 'utils/utils';\nimport { getOutdoorSite, getOutdoorSites, getPoisNearSite } from 'services/outdoor-sites.service';\nimport { tileLayerOffline } from 'leaflet.offline';\nimport L from 'leaflet';\nimport bbox from '@turf/bbox';\nimport pointOnFeature from '@turf/point-on-feature';\nimport { OutdoorSites, Sources } from 'types/types';\nimport { getTouristicContentsNearOutdoorCourse, getTouristicContentsNearOutdoorSite } from 'services/touristic-contents.service';\nimport { getTouristicEventsNearOutdoorCourse, getTouristicEventsNearOutdoorSite } from 'services/touristic-events.service';\nimport { getOutdoorCourse, getPoisNearCourse } from 'services/outdoor-courses.service';\n\nconst observerOptions = { threshold: 0 };\n\n@Component({\n tag: 'grw-outdoor-site-detail',\n styleUrl: 'grw-outdoor-site-detail.scss',\n shadow: true,\n})\nexport class GrwOutdoorSiteDetail {\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n @Prop() colorBackground = '#fef7ff';\n @Prop() isLargeView = false;\n @Prop() weather = false;\n @Prop() enableOffline = false;\n @Prop() defaultBackgroundLayerUrl;\n @Prop() defaultBackgroundLayerAttribution;\n @Prop() globalTilesMinZoomOffline = 0;\n @Prop() globalTilesMaxZoomOffline = 11;\n @Prop() tilesMinZoomOffline = 12;\n @Prop() tilesMaxZoomOffline = 16;\n @Prop() grwApp = false;\n @Prop() rounded = true;\n\n @State() offline = false;\n @State() displayFullscreen = false;\n @State() currentOutdoorSite: OutdoorSite;\n @State() sources: Sources;\n\n @Event() informationPlacesIsInViewport: EventEmitter<boolean>;\n @Event() poiIsInViewport: EventEmitter<boolean>;\n @Event() touristicContentsIsInViewport: EventEmitter<boolean>;\n @Event() touristicEventsIsInViewport: EventEmitter<boolean>;\n @Event() sitesIsInViewport: EventEmitter<boolean>;\n @Event() coursesIsInViewport: EventEmitter<boolean>;\n\n outdoorSiteDetailContainerRef?: HTMLElement;\n swiperImagesRef?: HTMLDivElement;\n prevElImagesRef?: HTMLDivElement;\n nextElImagesRef?: HTMLDivElement;\n paginationElImagesRef?: HTMLDivElement;\n swiperImages?: Swiper;\n\n relatedOutdoorSitesRef: HTMLDivElement;\n swiperRelatedOutdoorSitesRef: HTMLDivElement;\n swiperRelatedOutdoorSites: Swiper;\n relatedOutdoorSitesSwiperScrollbar: HTMLDivElement;\n\n relatedOutdoorCoursesRef: HTMLDivElement;\n swiperRelatedOutdoorCoursesRef: HTMLDivElement;\n swiperRelatedOutdoorCourses: Swiper;\n relatedOutdoorCoursesSwiperScrollbar: HTMLDivElement;\n\n informationPlacesRef: HTMLDivElement;\n swiperInformationDesksRef: HTMLDivElement;\n swiperInformationDesks: Swiper;\n informationDesksContentsSwiperScrollbar: HTMLDivElement;\n\n swiperTouristicContents?: Swiper;\n swiperTouristicEvents?: Swiper;\n swiperTouristicContentsRef?: HTMLDivElement;\n swiperTouristicEventsRef?: HTMLDivElement;\n touristicContentsRef?: HTMLDivElement;\n touristicEventsRef?: HTMLDivElement;\n sitesRef?: HTMLDivElement;\n coursesRef?: HTMLDivElement;\n\n touristicContentsSwiperScrollbar?: HTMLDivElement;\n touristicEventsSwiperScrollbar?: HTMLDivElement;\n swiperPois?: Swiper;\n swiperPoisRef?: HTMLDivElement;\n poiRef?: HTMLDivElement;\n poisOptionRef?: HTMLAnchorElement;\n poisSwiperScrollbar?: HTMLDivElement;\n\n presentationRef?: HTMLDivElement;\n descriptionRef?: HTMLDivElement;\n recommendationRef?: HTMLDivElement;\n\n informationPlacesObserver: IntersectionObserver;\n poiObserver: IntersectionObserver;\n touristicContentObserver: IntersectionObserver;\n touristicEventObserver: IntersectionObserver;\n siteObserver: IntersectionObserver;\n courseObserver: IntersectionObserver;\n\n @Event() downloadConfirm: EventEmitter<number>;\n @Event() downloadedSuccessConfirm: EventEmitter<number>;\n @Event() downloadedErrorConfirm: EventEmitter<number>;\n\n @Event() deleteConfirm: EventEmitter<number>;\n @Event() deleteSuccessConfirm: EventEmitter<number>;\n @Event() deleteErrorConfirm: EventEmitter<number>;\n\n @State() showTouristicContentDetailsModal = false;\n @State() showTouristicEventDetailsModal = false;\n @State() modalDetailsId = null;\n\n @Listen('closeDetailsModal', { target: 'window' })\n onCloseDetailsModal() {\n document.body.style.overflow = `visible`;\n state.currentTouristicContent = null;\n state.currentTouristicEvent = null;\n this.modalDetailsId = null;\n if (this.showTouristicContentDetailsModal) {\n this.showTouristicContentDetailsModal = false;\n } else {\n this.showTouristicEventDetailsModal = false;\n }\n document.body.getElementsByTagName('grw-details-modal')[0].remove();\n }\n\n @Listen('touristicEventCardPress', { target: 'window' })\n onTouristiceEventCardPress(touristicEventId) {\n if (!this.grwApp) {\n this.modalDetailsId = touristicEventId.detail;\n this.onOpenDetailsModal('TouristicContent');\n const modal = document.createElement('grw-details-modal');\n modal.setAttribute('font-family', this.fontFamily);\n modal.setAttribute('color-background', this.colorBackground);\n modal.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modal.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modal.setAttribute('rounded', this.rounded.toString());\n const modalContent = document.createElement('grw-touristic-event-detail');\n modalContent.setAttribute('font-family', this.fontFamily);\n modalContent.setAttribute('color-primary-app', this.colorPrimaryApp);\n modalContent.setAttribute('color-on-surface', this.colorOnSurface);\n modalContent.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modalContent.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modalContent.setAttribute('color-secondary-container', this.colorSecondaryContainer);\n modalContent.setAttribute('color-on-secondary-container', this.colorOnSecondaryContainer);\n modalContent.setAttribute('color-surface-container-low', this.colorSurfaceContainerLow);\n modalContent.setAttribute('color-background', this.colorBackground);\n modal.append(modalContent);\n document.body.append(modal);\n }\n }\n\n @Listen('touristicContentCardPress', { target: 'window' })\n onTouristicContentCardPress(touristicContentId) {\n if (!this.grwApp) {\n this.modalDetailsId = touristicContentId.detail;\n this.onOpenDetailsModal('touristicContent');\n const modal = document.createElement('grw-details-modal');\n modal.setAttribute('font-family', this.fontFamily);\n modal.setAttribute('color-background', this.colorBackground);\n modal.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modal.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modal.setAttribute('rounded', this.rounded.toString());\n const modalContent = document.createElement('grw-touristic-content-detail');\n modalContent.setAttribute('font-family', this.fontFamily);\n modalContent.setAttribute('color-primary-app', this.colorPrimaryApp);\n modalContent.setAttribute('color-on-surface', this.colorOnSurface);\n modalContent.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modalContent.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modalContent.setAttribute('color-secondary-container', this.colorSecondaryContainer);\n modalContent.setAttribute('color-on-secondary-container', this.colorOnSecondaryContainer);\n modalContent.setAttribute('color-surface-container-low', this.colorSurfaceContainerLow);\n modalContent.setAttribute('color-background', this.colorBackground);\n modal.append(modalContent);\n document.body.append(modal);\n }\n }\n\n onOpenDetailsModal(modalDetails: 'touristicContent' | 'TouristicContent') {\n document.body.style.overflow = `hidden`;\n if (modalDetails === 'touristicContent') {\n this.showTouristicContentDetailsModal = true;\n } else {\n this.showTouristicEventDetailsModal = true;\n }\n }\n\n @Listen('downloadPress', { target: 'window' })\n onDownloadPress() {\n this.downloadRootOutdoorSite();\n }\n\n @Listen('deletePress', { target: 'window' })\n onDeletePress() {\n this.deleteOutdoorSite();\n }\n\n handleObservers() {\n if (this.informationPlacesRef && !this.informationPlacesObserver) {\n this.informationPlacesObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.informationPlacesIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.informationPlacesObserver.observe(this.informationPlacesRef);\n }\n\n if (this.poiRef && !this.poiObserver) {\n this.poiObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.poiIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.poiObserver.observe(this.poiRef);\n }\n\n if (this.touristicContentsRef && !this.touristicContentObserver) {\n this.touristicContentObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.touristicContentsIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.touristicContentObserver.observe(this.touristicContentsRef);\n }\n if (this.touristicEventsRef && !this.touristicEventObserver) {\n this.touristicEventObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.touristicEventsIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.touristicEventObserver.observe(this.touristicEventsRef);\n }\n if (this.sitesRef && !this.siteObserver) {\n this.siteObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.sitesIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.siteObserver.observe(this.sitesRef);\n }\n if (this.coursesRef && !this.courseObserver) {\n this.courseObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.coursesIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.courseObserver.observe(this.coursesRef);\n }\n }\n\n handleSwipers() {\n if (this.swiperImagesRef && !this.swiperImages) {\n this.swiperImages = new Swiper(this.swiperImagesRef, {\n modules: [Navigation, Pagination, Keyboard, FreeMode, Mousewheel],\n navigation: {\n prevEl: this.prevElImagesRef,\n nextEl: this.nextElImagesRef,\n },\n pagination: { el: this.paginationElImagesRef },\n allowTouchMove: false,\n keyboard: false,\n loop: true,\n });\n this.swiperImagesRef.onfullscreenchange = () => {\n this.displayFullscreen = !this.displayFullscreen;\n this.displayFullscreen ? this.swiperImages.keyboard.enable() : this.swiperImages.keyboard.disable();\n };\n }\n if (this.swiperRelatedOutdoorSitesRef && !this.swiperRelatedOutdoorSites) {\n this.swiperRelatedOutdoorSites = new Swiper(this.swiperRelatedOutdoorSitesRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.relatedOutdoorSitesSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperInformationDesksRef && !this.swiperInformationDesks) {\n this.swiperInformationDesks = new Swiper(this.swiperInformationDesksRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.informationDesksContentsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperRelatedOutdoorCoursesRef && !this.swiperRelatedOutdoorCourses) {\n this.swiperRelatedOutdoorCourses = new Swiper(this.swiperRelatedOutdoorCoursesRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.relatedOutdoorCoursesSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperTouristicContentsRef && !this.swiperTouristicContents) {\n this.swiperTouristicContents = new Swiper(this.swiperTouristicContentsRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.touristicContentsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperTouristicEventsRef && !this.swiperTouristicEvents) {\n this.swiperTouristicEvents = new Swiper(this.swiperTouristicEventsRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.touristicEventsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperPoisRef && !this.swiperPois) {\n this.swiperPois = new Swiper(this.swiperPoisRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.poisSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n }\n\n componentDidUpdate() {\n this.handleObservers();\n this.handleSwipers();\n }\n\n componentDidLoad() {\n this.handleObservers();\n this.handleSwipers();\n }\n\n async connectedCallback() {\n if (state.currentOutdoorSite) {\n this.sources = state.sources.filter(source => state.currentOutdoorSite.source.includes(source.id));\n this.currentOutdoorSite = state.currentOutdoorSite;\n this.offline = this.currentOutdoorSite.offline;\n }\n\n onChange('currentOutdoorSite', async () => {\n if (state.currentOutdoorSite) {\n this.sources = state.sources.filter(source => state.currentOutdoorSite.source.includes(source.id));\n this.currentOutdoorSite = state.currentOutdoorSite;\n this.offline = this.currentOutdoorSite.offline;\n }\n });\n }\n\n handleFullscreen(close: boolean = false) {\n if (!close) {\n if (this.currentOutdoorSite.attachments && this.currentOutdoorSite.attachments[0] && this.currentOutdoorSite.attachments[0].url) {\n this.swiperImagesRef.requestFullscreen();\n }\n } else {\n (document as any).exitFullscreen();\n }\n }\n\n displayDownloadModal() {\n this.downloadConfirm.emit();\n }\n\n displayDeleteModal() {\n this.deleteConfirm.emit();\n }\n\n async downloadRootOutdoorSite() {\n const controller = new AbortController();\n const signal = controller.signal;\n const init: RequestInit = { cache: getCacheMode(), signal: signal };\n\n if (!state.outdoorSites) {\n const outdoorSitesList = await getOutdoorSites(\n state.api,\n state.language,\n state.inBboxFromProviders,\n state.citiesFromProviders,\n state.districtsFromProviders,\n state.structuresFromProviders,\n state.themesFromProviders,\n state.portalsFromProviders,\n init,\n );\n state.outdoorSites = (await outdoorSitesList.json()).results;\n state.currentOutdoorSites = state.outdoorSites;\n }\n\n const offlineOutdoorSites = (await getAllDataInStore('outdoorSites')).filter(outdoorSite => outdoorSite.offline === true);\n let outdoorSites;\n outdoorSites = state.outdoorSites;\n outdoorSites = outdoorSites.filter(outdoorSite => offlineOutdoorSites.findIndex(offlineOutdoorSites => offlineOutdoorSites.id === outdoorSite.id) === -1);\n await writeOrUpdateDataInStore('outdoorSites', outdoorSites);\n\n await this.downloadGlobalTiles(this.defaultBackgroundLayerUrl, this.defaultBackgroundLayerAttribution);\n await this.downloadOutdoorSiteTiles(this.defaultBackgroundLayerUrl, this.defaultBackgroundLayerAttribution, this.currentOutdoorSite.geometry);\n\n await writeOrUpdateFilesInStore(state.themes, imagesRegExp);\n await writeOrUpdateFilesInStore(state.outdoorSiteTypes, imagesRegExp);\n await writeOrUpdateFilesInStore(state.outdoorPractices, imagesRegExp);\n await writeOrUpdateFilesInStore(state.sources, imagesRegExp);\n\n await writeOrUpdateFilesInStore(this.currentOutdoorSite, imagesRegExp, true, ['url']);\n\n await writeOrUpdateDataInStore('cities', state.cities);\n await writeOrUpdateDataInStore('districts', state.districts);\n await writeOrUpdateDataInStore('themes', state.themes);\n await writeOrUpdateDataInStore('outdoorSiteTypes', state.outdoorSiteTypes);\n await writeOrUpdateDataInStore('outdoorPractices', state.outdoorPractices);\n await writeOrUpdateDataInStore('outdoorRatings', state.outdoorRatings);\n await writeOrUpdateDataInStore('outdoorRatingsScale', state.outdoorRatingsScale);\n await writeOrUpdateDataInStore('pois', state.currentPois);\n await writeOrUpdateDataInStore('poiTypes', state.poiTypes);\n await writeOrUpdateDataInStore('informationDesks', state.currentInformationDesks);\n await writeOrUpdateDataInStore('outdoorCourseTypes', state.outdoorCourseTypes);\n await writeOrUpdateDataInStore('touristicEventTypes', state.touristicEventTypes);\n await writeOrUpdateDataInStore('touristicContentCategories', state.touristicContentCategories);\n await writeOrUpdateDataInStore('sources', state.sources);\n\n await writeOrUpdateFilesInStore(state.currentPois, imagesRegExp, true, ['url']);\n await writeOrUpdateFilesInStore(state.currentInformationDesks, imagesRegExp, true);\n await writeOrUpdateFilesInStore(state.outdoorCourseTypes, imagesRegExp, true);\n await writeOrUpdateFilesInStore(state.touristicContentCategories, imagesRegExp, true);\n\n await writeOrUpdateFilesInStore(state.trekTouristicContents, imagesRegExp, true, ['url']);\n state.trekTouristicContents.forEach(trekTouristicContent => {\n trekTouristicContent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicContents', state.trekTouristicContents);\n\n await writeOrUpdateFilesInStore(state.trekTouristicEvents, imagesRegExp, true, ['url']);\n state.trekTouristicEvents.forEach(trekTouristicEvent => {\n trekTouristicEvent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicEvents', state.trekTouristicEvents);\n\n if (state.currentOutdoorSite.courses && state.currentOutdoorSite.courses.length > 0) {\n for (let index = 0; index < state.currentOutdoorSite.courses.length; index++) {\n const outdoorCourseId = state.currentOutdoorSite.courses[index];\n await this.downloadOutdoorCourse(outdoorCourseId);\n }\n }\n\n if (this.currentOutdoorSite.children && this.currentOutdoorSite.children.length > 0) {\n for (let index = 0; index < this.currentOutdoorSite.children.length; index++) {\n const outdoorSiteId = this.currentOutdoorSite.children[index];\n await this.downloadOutdoorSite(outdoorSiteId);\n }\n }\n\n await writeOrUpdateDataInStore('outdoorSites', [\n {\n ...this.currentOutdoorSite,\n offline: true,\n pois: state.currentPois.map(poi => poi.id),\n touristicContents: state.trekTouristicContents.map(trekTouristicContent => trekTouristicContent.id),\n touristicEvents: state.trekTouristicEvents.map(trekTouristicEvent => trekTouristicEvent.id),\n },\n ]);\n\n state.outdoorSites.find(outdoorSite => outdoorSite.id === this.currentOutdoorSite.id).offline = true;\n state.currentOutdoorSites.find(currentOutdoorSite => currentOutdoorSite.id === this.currentOutdoorSite.id).offline = true;\n if (this.swiperImages) {\n this.swiperImages.slideTo(0);\n }\n this.offline = true;\n this.downloadedSuccessConfirm.emit();\n }\n\n async downloadOutdoorSite(outdoorSiteId) {\n try {\n const controller = new AbortController();\n const signal = controller.signal;\n const init: RequestInit = { cache: getCacheMode(), signal: signal };\n\n const outdoorSite: OutdoorSite = await getOutdoorSite(state.api, state.language, outdoorSiteId, init).then(response => response.json());\n await this.downloadOutdoorSiteTiles(this.defaultBackgroundLayerUrl, this.defaultBackgroundLayerAttribution, outdoorSite.geometry);\n await writeOrUpdateFilesInStore(outdoorSite, imagesRegExp, true, ['url']);\n\n const pois = (await getPoisNearSite(state.api, state.language, outdoorSiteId, init).then(response => response.json())).results;\n await writeOrUpdateDataInStore('pois', pois);\n await writeOrUpdateFilesInStore(pois, imagesRegExp, true, ['url']);\n\n const touristicContents = (await getTouristicContentsNearOutdoorSite(state.api, state.language, outdoorSiteId, init).then(response => response.json())).results;\n await writeOrUpdateFilesInStore(touristicContents, imagesRegExp, true, ['url']);\n touristicContents.forEach(touristicContent => {\n touristicContent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicContents', touristicContents);\n const touristicEvents = (await getTouristicEventsNearOutdoorSite(state.api, state.language, outdoorSiteId, init).then(response => response.json())).results;\n await writeOrUpdateFilesInStore(touristicEvents, imagesRegExp, true, ['url']);\n touristicEvents.forEach(touristicEvent => {\n touristicEvent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicEvents', touristicEvents);\n\n await writeOrUpdateDataInStore('outdoorSites', [\n {\n ...outdoorSite,\n offline: true,\n pois: pois.map(poi => poi.id),\n touristicContents: touristicContents.map(trekTouristicContent => trekTouristicContent.id),\n touristicEvents: touristicEvents.map(trekTouristicEvent => trekTouristicEvent.id),\n },\n ]);\n\n if (outdoorSite.courses && outdoorSite.courses.length > 0) {\n for (let index = 0; index < outdoorSite.courses.length; index++) {\n const outdoorCourseId = outdoorSite.courses[index];\n await this.downloadOutdoorCourse(outdoorCourseId);\n }\n }\n\n if (outdoorSite.children && outdoorSite.children.length > 0) {\n for (let index = 0; index < outdoorSite.children.length; index++) {\n const outdoorSiteId = outdoorSite.children[index];\n await this.downloadOutdoorSite(outdoorSiteId);\n }\n }\n } catch (error) {\n this.downloadedSuccessConfirm.emit(this.currentOutdoorSite.id);\n }\n }\n\n async downloadOutdoorCourse(outdoorCourseId) {\n const controller = new AbortController();\n const signal = controller.signal;\n const init: RequestInit = { cache: getCacheMode(), signal: signal };\n const outdoorCourse = await getOutdoorCourse(state.api, state.language, outdoorCourseId, init).then(response => response.json());\n await this.downloadOutdoorSiteTiles(this.defaultBackgroundLayerUrl, this.defaultBackgroundLayerAttribution, outdoorCourse.geometry);\n await writeOrUpdateFilesInStore(outdoorCourse, imagesRegExp, true, ['url']);\n\n const pois = (await getPoisNearCourse(state.api, state.language, outdoorCourseId, init).then(response => response.json())).results;\n await writeOrUpdateDataInStore('pois', pois);\n await writeOrUpdateFilesInStore(pois, imagesRegExp, true, ['url']);\n\n const touristicContents = (await getTouristicContentsNearOutdoorCourse(state.api, state.language, outdoorCourseId, init).then(response => response.json())).results;\n await writeOrUpdateFilesInStore(touristicContents, imagesRegExp, true, ['url']);\n touristicContents.forEach(touristicContent => {\n touristicContent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicContents', touristicContents);\n const touristicEvents = (await getTouristicEventsNearOutdoorCourse(state.api, state.language, outdoorCourseId, init).then(response => response.json())).results;\n await writeOrUpdateFilesInStore(touristicEvents, imagesRegExp, true, ['url']);\n touristicEvents.forEach(touristicEvent => {\n touristicEvent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicEvents', touristicEvents);\n\n await writeOrUpdateDataInStore('outdoorCourses', [\n {\n ...outdoorCourse,\n offline: true,\n pois: pois.map(poi => poi.id),\n touristicContents: touristicContents.map(trekTouristicContent => trekTouristicContent.id),\n touristicEvents: touristicEvents.map(trekTouristicEvent => trekTouristicEvent.id),\n },\n ]);\n }\n\n async deleteOutdoorSite() {\n try {\n const outdoorSitesInStore: OutdoorSites = [];\n const outdoorSiteInStore = await getDataInStore('outdoorSites', this.currentOutdoorSite.id);\n this.deleteOfflineOutdoorSiteProperties(outdoorSiteInStore);\n outdoorSitesInStore.push(outdoorSiteInStore);\n\n await writeOrUpdateDataInStore('outdoorSites', outdoorSitesInStore);\n\n if (state.outdoorSites) {\n delete state.outdoorSites.find(outdoorSite => outdoorSite.id === this.currentOutdoorSite.id).offline;\n\n if (!state.currentOutdoorSites) {\n state.currentOutdoorSites = state.outdoorSites;\n }\n delete state.currentOutdoorSites.find(trek => trek.id === this.currentOutdoorSite.id).offline;\n }\n\n this.offline = false;\n this.deleteSuccessConfirm.emit();\n } catch (error) {\n this.deleteErrorConfirm.emit(this.currentOutdoorSite.id);\n }\n }\n\n async downloadGlobalTiles(url, attribution) {\n const offlineLayer = tileLayerOffline(url, { attribution });\n\n const coordinates = [];\n\n if (state.outdoorSites) {\n for (const outdoorSite of state.outdoorSites) {\n coordinates.push(pointOnFeature(outdoorSite.geometry as any).geometry.coordinates);\n }\n }\n\n const bounds = L.latLngBounds(coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n\n await writeOrUpdateTilesInStore(offlineLayer, bounds, this.globalTilesMinZoomOffline, this.globalTilesMaxZoomOffline);\n }\n\n async downloadOutdoorSiteTiles(url, attribution, geometry) {\n const offlineLayer = tileLayerOffline(url, { attribution });\n const outdoorSiteBbox = bbox(geometry);\n const bounds = L.latLngBounds([outdoorSiteBbox[1], outdoorSiteBbox[0]], [outdoorSiteBbox[3], outdoorSiteBbox[2]]);\n\n await writeOrUpdateTilesInStore(offlineLayer, bounds, this.tilesMinZoomOffline, this.tilesMaxZoomOffline);\n }\n\n deleteOfflineOutdoorSiteProperties(outdoorSiteInStore) {\n delete outdoorSiteInStore.offline;\n delete outdoorSiteInStore.pois;\n delete outdoorSiteInStore.touristicContents;\n delete outdoorSiteInStore.touristicEvents;\n }\n\n render() {\n const defaultImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/default-image.svg`);\n const practice = state.outdoorPractices && this.currentOutdoorSite && state.outdoorPractices.find(practice => practice.id === this.currentOutdoorSite.practice);\n const city = state.cities && this.currentOutdoorSite && state.cities.find(city => city.id === this.currentOutdoorSite.cities[0]);\n const outdoorRatings =\n state.outdoorRatings && this.currentOutdoorSite && state.outdoorRatings.filter(outdoorRating => this.currentOutdoorSite.ratings.includes(outdoorRating.id));\n const currentOutdoorSitesRatingsScales = outdoorRatings && [...new Set(outdoorRatings.map(outdoorRating => outdoorRating.scale))];\n const outdoorRatingsScales =\n currentOutdoorSitesRatingsScales && state.outdoorRatingsScale.filter(outdoorRatingsScale => currentOutdoorSitesRatingsScales.includes(outdoorRatingsScale.id));\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\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-secondary-container': this.colorSecondaryContainer,\n '--color-on-secondary-container': this.colorOnSecondaryContainer,\n '--color-background': this.colorBackground,\n '--detail-bottom-space-height': this.isLargeView\n ? state.languages && state.languages.length > 1\n ? '44px'\n : '12px'\n : state.languages && state.languages.length > 1\n ? '164px'\n : '124px',\n }}\n >\n {this.currentOutdoorSite && (\n <div part=\"outdoor-site-detail-container\" class=\"outdoor-site-detail-container\" ref={el => (this.outdoorSiteDetailContainerRef = el)}>\n <div part=\"outdoor-site-images-container\" class=\"outdoor-site-images-container\" ref={el => (this.presentationRef = el)}>\n <div part=\"swiper-images\" class=\"swiper swiper-images\" ref={el => (this.swiperImagesRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {this.currentOutdoorSite.attachments.filter(attachment => attachment.type === 'image').length > 0 ? (\n this.currentOutdoorSite.attachments\n .filter(attachment => attachment.type === 'image')\n .map(attachment => {\n const legend = [attachment.legend, attachment.author].filter(Boolean).join(' - ');\n return (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n {this.displayFullscreen && (\n <div part=\"outdoor-site-close-fullscreen-button\" class=\"outdoor-site-close-fullscreen-button\" onClick={() => this.handleFullscreen(true)}>\n <span part=\"outdoor-site-close-fullcreen-icon\" class=\"outdoor-site-close-fullcreen-icon\" innerHTML={CloseIcon}></span>\n </div>\n )}\n <div part=\"outdoor-site-image-legend\" class=\"outdoor-site-image-legend\">\n {legend}\n </div>\n <img\n part=\"outdoor-site-img\"\n class=\"outdoor-site-img\"\n src={this.offline && attachment.thumbnail !== '' ? attachment.thumbnail : attachment.url}\n loading=\"lazy\"\n onClick={() => this.handleFullscreen()}\n /* @ts-ignore */\n onerror={event => {\n event.target.onerror = null;\n event.target.className = 'outdoor-site-img default-outdoor-site-img';\n event.target.src = defaultImageSrc;\n }}\n alt={attachment.legend}\n />\n </div>\n );\n })\n ) : (\n <img part=\"outdoor-site-img\" class=\"outdoor-site-img default-outdoor-site-img\" src={defaultImageSrc} loading=\"lazy\" alt=\"\" />\n )}\n </div>\n <div>\n <div part=\"swiper-pagination\" class=\"swiper-pagination\" ref={el => (this.paginationElImagesRef = el)}></div>\n <div part=\"swiper-button-prev\" class=\"swiper-button-prev\" ref={el => (this.prevElImagesRef = el)}></div>\n <div part=\"swiper-button-next\" class=\"swiper-button-next\" ref={el => (this.nextElImagesRef = el)}></div>\n </div>\n </div>\n </div>\n <div part=\"outdoor-site-name\" class=\"outdoor-site-name\">\n {this.currentOutdoorSite.name}\n </div>\n {state.themes && state.themes.filter(theme => this.currentOutdoorSite.themes.includes(theme.id)).length > 0 && (\n <div part=\"themes-container\" class=\"themes-container\">\n {state.themes\n .filter(theme => this.currentOutdoorSite.themes.includes(theme.id))\n .map(theme => (\n <div part=\"theme\" class=\"theme\">\n {theme.label}\n </div>\n ))}\n </div>\n )}\n <div part=\"sub-container\" class=\"sub-container\">\n <div part=\"icons-labels-container\" class=\"icons-labels-container\">\n {practice && (\n <div part=\"icon-label\" class=\"icon-label practice\">\n {practice.pictogram && <img part=\"icon\" class=\"icon\" src={practice.pictogram} alt=\"\" />}\n <span part=\"label\" class=\"label\">\n {practice.name}\n </span>\n </div>\n )}\n {this.currentOutdoorSite.orientation && this.currentOutdoorSite.orientation.length > 0 && (\n <div part=\"row\" class=\"row\">\n <span part=\"icon\" class=\"icon\" innerHTML={ExploreIcon}></span>\n <span part=\"label\" class=\"label\">\n {this.currentOutdoorSite.orientation.map(orientation => translate[state.language].cardinalPoints[orientation.toLowerCase()]).join(', ')}\n </span>\n </div>\n )}\n {this.currentOutdoorSite.wind && this.currentOutdoorSite.wind.length > 0 && (\n <div part=\"row\" class=\"row\">\n <span part=\"icon\" class=\"icon\" innerHTML={AirIcon}></span>\n <span part=\"label\" class=\"label\">\n {this.currentOutdoorSite.wind.map(wind => translate[state.language].cardinalPoints[wind.toLowerCase()]).join(', ')}\n </span>\n </div>\n )}\n {this.currentOutdoorSite.period && (\n <div part=\"row\" class=\"row\">\n <span part=\"icon\" class=\"icon\" innerHTML={EventIcon}></span>\n <span part=\"label\" class=\"label\">\n {this.currentOutdoorSite.period}\n </span>\n </div>\n )}\n {outdoorRatings &&\n outdoorRatingsScales.map(outdoorRatingsScale => (\n <div part=\"row\" class=\"row\">\n {`${outdoorRatingsScale.name} : ${outdoorRatings\n .filter(outdoorRating => outdoorRating.scale === outdoorRatingsScale.id)\n .map(rating => rating.name)\n .join(', ')}`}\n </div>\n ))}\n </div>\n </div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"downloads-container\" class=\"downloads-container\">\n <div part=\"download-title\" class=\"download-title\">\n {translate[state.language].downloads}\n </div>\n {this.enableOffline && !this.offline && (!this.currentOutdoorSite.parents || this.currentOutdoorSite.parents.length === 0) && (\n <button part=\"offline-button\" class=\"offline-button\" onClick={() => this.displayDownloadModal()}>\n <span part=\"icon\" class=\"icon\" innerHTML={DownloadForOfflineIcon}></span>\n <span part=\"label\" class=\"label\">\n {translate[state.language].offline.downloadOffline}\n </span>\n </button>\n )}\n {this.enableOffline && this.offline && (!this.currentOutdoorSite.parents || this.currentOutdoorSite.parents.length === 0) && (\n <button part=\"offline-button\" class=\"offline-button\" onClick={() => this.displayDeleteModal()}>\n <span part=\"icon\" class=\"icon\" innerHTML={DeleteIcon}></span>\n <span part=\"label\" class=\"label\">\n {translate[state.language].offline.deleteOffline}\n </span>\n </button>\n )}\n <div part=\"links-container\" class=\"links-container\">\n <a\n href={`${this.currentOutdoorSite.pdf}${state.portalsFromProviders && state.portalsFromProviders.length === 1 ? '?portal=' + state.portalsFromProviders[0] : ''}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span part=\"icon\" class=\"icon\" innerHTML={DownloadIcon}></span>\n <span part=\"label\" class=\"label\">\n PDF\n </span>\n </a>\n </div>\n </div>\n <div part=\"divider\" class=\"divider\"></div>\n {this.currentOutdoorSite.description_teaser && <div part=\"description-teaser\" class=\"description-teaser\" innerHTML={this.currentOutdoorSite.description_teaser}></div>}\n {this.currentOutdoorSite.ambiance && <div part=\"ambiance\" class=\"ambiance\" innerHTML={this.currentOutdoorSite.ambiance}></div>}\n <div part=\"divider\" class=\"divider\"></div>\n {this.currentOutdoorSite.description && (\n <div part=\"description-container\" class=\"description-container\">\n <div part=\"description-title\" class=\"description-title\" ref={el => (this.descriptionRef = el)}>\n {translate[state.language].description}\n </div>\n <div part=\"description\" class=\"description\" innerHTML={this.currentOutdoorSite.description}></div>\n </div>\n )}\n {this.currentOutdoorSite.cities && this.currentOutdoorSite.cities.length > 0 && (\n <div part=\"departure-container\" class=\"departure-container\">\n <div part=\"departure-title\" class=\"departure-title\">\n {translate[state.language].departure} :&nbsp;\n </div>\n <div part=\"departure\" innerHTML={city.name}></div>\n </div>\n )}\n {this.currentOutdoorSite.cities && this.currentOutdoorSite.cities.length > 0 && (\n <div part=\"cities-container\" class=\"cities-container\">\n <div part=\"cities-title\" class=\"cities-title\">\n {translate[state.language].crossedCities} :&nbsp;\n </div>\n <div part=\"cities\" innerHTML={this.currentOutdoorSite.cities.map(currentCity => state.cities.find(city => city.id === currentCity)?.name).join(', ')}></div>\n </div>\n )}\n {state.currentPois && state.currentPois.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"pois-container\" class=\"pois-container\" ref={el => (this.poiRef = el)}>\n <div part=\"pois-title\" class=\"pois-title\">\n {translate[state.language].pois(state.currentPois.length)}\n </div>\n <div part=\"swiper-pois\" class=\"swiper swiper-pois\" ref={el => (this.swiperPoisRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentPois.map(poi => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-poi\n exportparts=\"poi-type-img-container,poi-type,swiper-poi,swiper-wrapper,swiper-slide,poi-img,default-poi-img,swiper-pagination,swiper-button-prev,swiper-button-next,poi-sub-container,poi-name,poi-description,handle-poi-description\"\n poi={poi}\n ></grw-poi>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.poisSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {this.currentOutdoorSite.advice && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"advice-container\" class=\"advice-container\">\n <div part=\"advice-title\" class=\"advice-title\" ref={el => (this.recommendationRef = el)}>\n {translate[state.language].recommendations}\n </div>\n {this.currentOutdoorSite.advice && (\n <div part=\"current-advice-container\" class=\"current-advice-container\">\n <span part=\"icon\" class=\"icon\" innerHTML={WarningIcon}></span>\n <div part=\"advice\" class=\"advice\" innerHTML={this.currentOutdoorSite.advice}></div>\n </div>\n )}\n </div>\n </div>\n )}\n {this.currentOutdoorSite.accessibility && this.currentOutdoorSite.accessibility !== '' && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"accessibilities-container\" class=\"accessibilities-container\">\n <div part=\"accessibilites-title\" class=\"accessibilities-title\">\n {translate[state.language].accessibility}\n </div>\n <div part=\"accessibilities\" innerHTML={this.currentOutdoorSite.accessibility}></div>\n </div>\n </div>\n )}\n {state.currentRelatedOutdoorSites && state.currentRelatedOutdoorSites.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"related-outdoor-sites-container\" class=\"related-outdoor-sites-container\" ref={el => (this.sitesRef = el)}>\n <div part=\"related-outdoor-sites-title\" class=\"related-outdoor-sites-title\">\n {translate[state.language].relatedOutdoorSites(state.currentRelatedOutdoorSites.length)}\n </div>\n <div part=\"swiper-related-outdoor-sites\" class=\"swiper swiper-related-outdoor-sites\" ref={el => (this.swiperRelatedOutdoorSitesRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentRelatedOutdoorSites.map(relatedOutdoorSite => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-outdoor-site-card\n exportparts=\"related-outdoor-sites-card,related-outdoor-sites-img-container,swiper-related-outdoor-sites,swiper-wrapper,swiper-slide,related-outdoor-sites-img,default-related-outdoor-sites-img,swiper-pagination,swiper-button-prev,swiper-button-next,related-outdoor-sites-sub-container,related-outdoor-sites-sub-container,related-outdoor-sites-type-img,related-outdoor-sites-type-name,related-outdoor-sites-name,related-outdoor-sites-date-container,related-outdoor-sites-date,related-outdoor-sites-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n outdoorSite={relatedOutdoorSite}\n isInsideHorizontalList={true}\n ></grw-outdoor-site-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.relatedOutdoorSitesSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {state.currentRelatedOutdoorCourses && state.currentRelatedOutdoorCourses.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"related-outdoor-courses-container\" class=\"related-outdoor-courses-container\" ref={el => (this.coursesRef = el)}>\n <div part=\"related-outdoor-courses-title\" class=\"related-outdoor-courses-title\">\n {translate[state.language].relatedOutdoorCourses(state.currentRelatedOutdoorCourses.length)}\n </div>\n <div part=\"swiper-related-outdoor-courses\" class=\"swiper swiper-related-outdoor-courses\" ref={el => (this.swiperRelatedOutdoorCoursesRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentRelatedOutdoorCourses.map(relatedOutdoorCourse => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-outdoor-course-card\n exportparts=\"related-outdoor-courses-card,related-outdoor-courses-img-container,swiper-related-outdoor-courses,swiper-wrapper,swiper-slide,related-outdoor-courses-img,default-related-outdoor-courses-img,swiper-pagination,swiper-button-prev,swiper-button-next,related-outdoor-courses-sub-container,related-outdoor-courses-sub-container,related-outdoor-courses-type-img,related-outdoor-courses-type-name,related-outdoor-courses-name,related-outdoor-courses-date-container,related-outdoor-courses-date,related-outdoor-courses-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n outdoorCourse={relatedOutdoorCourse}\n isInsideHorizontalList={true}\n ></grw-outdoor-course-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.relatedOutdoorCoursesSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {state.currentInformationDesks &&\n state.currentInformationDesks.filter(currentInformationDesks => this.currentOutdoorSite.information_desks.includes(currentInformationDesks.id)).length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"information-desks-container\" class=\"information-desks-container\" ref={el => (this.informationPlacesRef = el)}>\n <div part=\"information-desks-title\" class=\"information-desks-title\">\n {translate[state.language].informationPlaces}\n </div>\n <div part=\"swiper-information-desks\" class=\"swiper swiper-information-desks\" ref={el => (this.swiperInformationDesksRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentInformationDesks\n .filter(currentInformationDesks => this.currentOutdoorSite.information_desks.includes(currentInformationDesks.id))\n .map(informationDesk => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-information-desk\n exportparts=\"information-desk-img-container,information-desk-img,information-desk-sub-container,information-desk-name,center-on-map-button,icon,label,information-desk-informations,phone-container,mail-container,link-container,information-desk-description-container,information-desk-description,handle-information-desk-description\"\n informationDesk={informationDesk}\n ></grw-information-desk>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.informationDesksContentsSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {state.trekTouristicContents && state.trekTouristicContents.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"touristic-content-container\" class=\"touristic-content-container\" ref={el => (this.touristicContentsRef = el)}>\n <div part=\"touristic-content-title\" class=\"touristic-content-title\">\n {translate[state.language].touristicContents(state.trekTouristicContents.length)}\n </div>\n <div part=\"swiper-touristic-content\" class=\"swiper swiper-touristic-content\" ref={el => (this.swiperTouristicContentsRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.trekTouristicContents.map(touristicContent => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-touristic-content-card\n exportparts=\"touristic-content-card,touristic-content-img-container,swiper-touristic-content,swiper-wrapper,swiper-slide,touristic-content-img,default-touristic-content-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-content-sub-container,touristic-content-category-container,touristic-content-category-img,touristic-content-category-name,touristic-content-name,touristic-content-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n touristicContent={touristicContent}\n isInsideHorizontalList={true}\n colorSurfaceContainerLow={this.colorSurfaceContainerLow}\n ></grw-touristic-content-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.touristicContentsSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {state.trekTouristicEvents && state.trekTouristicEvents.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"touristic-event-container\" class=\"touristic-event-container\" ref={el => (this.touristicEventsRef = el)}>\n <div part=\"touristic-event-title\" class=\"touristic-event-title\">\n {translate[state.language].touristicEvents(state.trekTouristicEvents.length)}\n </div>\n <div part=\"swiper-touristic-event\" class=\"swiper swiper-touristic-event\" ref={el => (this.swiperTouristicEventsRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.trekTouristicEvents.map(touristicEvent => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-touristic-event-card\n exportparts=\"touristic-event-card,touristic-event-img-container,swiper-touristic-event,swiper-wrapper,swiper-slide,touristic-event-img,default-touristic-event-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-event-sub-container,touristic-event-sub-container,touristic-event-type-img,touristic-event-type-name,touristic-event-name,touristic-event-date-container,touristic-event-date,touristic-event-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n touristicEvent={touristicEvent}\n isInsideHorizontalList={true}\n colorSurfaceContainerLow={this.colorSurfaceContainerLow}\n ></grw-touristic-event-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.touristicEventsSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {this.weather && city && !this.offline && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"weather-container\" class=\"weather-container\">\n <iframe height=\"150\" frameborder=\"0\" src={`https://meteofrance.com/widget/prevision/${city.id}0#${this.colorPrimaryApp}`}></iframe>\n </div>\n </div>\n )}\n {this.currentOutdoorSite.web_links && this.currentOutdoorSite.web_links.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"weblinks-container\" class=\"weblinks-container\">\n <div part=\"weblinks-title\" class=\"weblinks-title\">\n {translate[state.language].learnMore}\n </div>\n {this.currentOutdoorSite.web_links.map(weblink => (\n <a part=\"weblink-container\" class=\"weblink-container\" href={weblink.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {weblink.category && weblink.category.pictogram && <img src={weblink.category.pictogram} alt={weblink.category.label} />}\n {weblink.name}\n </a>\n ))}\n </div>\n </div>\n )}\n {this.currentOutdoorSite.source && this.currentOutdoorSite.source.length > 0 && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"source-container\" class=\"source-container\">\n <div part=\"source-title\" class=\"source-title\">\n {translate[state.language].sources}\n </div>\n {this.sources.map(source => (\n <div part=\"source-sub-container\" class=\"source-sub-container\">\n {source.pictogram && <img src={source.pictogram} alt=\"\" />}\n <div>\n <div part=\"source-name\" class=\"source-name\" innerHTML={source.name}></div>\n <a part=\"source-advice\" class=\"source-advice\" href={source.website} innerHTML={source.website}></a>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n {this.grwApp && <div part=\"detail-bottom-space\" class=\"detail-bottom-space\"></div>}\n </div>\n )}\n {this.modalDetailsId && (\n <Fragment>\n {this.showTouristicContentDetailsModal && <grw-touristic-content-provider api={state.api} touristic-content-id={this.modalDetailsId}></grw-touristic-content-provider>}\n {this.showTouristicEventDetailsModal && <grw-touristic-event-provider api={state.api} touristic-event-id={this.modalDetailsId}></grw-touristic-event-provider>}\n </Fragment>\n )}\n </Host>\n );\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { OutdoorSite } from 'components';\nimport { getDataInStore, handleOfflineProperty } from 'services/grw-db.service';\nimport { getOutdoorCourse, getOutdoorCourseTypes } from 'services/outdoor-courses.service';\nimport { getOutdoorPractices, getOutdoorRatings, getOutdoorRatingsScale, getOutdoorSite, getOutdoorSiteTypes, getPoisNearSite } from 'services/outdoor-sites.service';\nimport { getTouristicContentCategory, getTouristicContentsNearOutdoorSite } from 'services/touristic-contents.service';\nimport { getTouristicEventsNearOutdoorSite, getTouristicEventType } from 'services/touristic-events.service';\nimport { getCities, getDistricts, getInformationsDesks, getSources, getThemes } from 'services/treks.service';\nimport state from 'store/store';\nimport { getCacheMode, imagesRegExp, setFilesFromStore } from 'utils/utils';\n\n@Component({\n tag: 'grw-outdoor-site-provider',\n shadow: true,\n})\nexport class GrwOutdoorSiteProvider {\n @Prop() languages = 'fr';\n @Prop() api: string;\n @Prop() outdoorSiteId: number;\n @Prop() portals: string;\n\n controller = new AbortController();\n signal = this.controller.signal;\n init: RequestInit = { cache: getCacheMode(), signal: this.signal };\n\n connectedCallback() {\n if (!state.api) {\n state.api = this.api;\n state.languages = this.languages.split(',');\n state.language = state.languages[0];\n }\n\n state.portalsFromProviders = this.portals;\n\n this.handleOutdoorSite();\n }\n\n async handleOutdoorSite() {\n const outdoorSiteInStore: OutdoorSite = await getDataInStore('outdoorSites', this.outdoorSiteId);\n if (outdoorSiteInStore && outdoorSiteInStore.offline) {\n this.handleOfflineOutdoorSite(outdoorSiteInStore);\n } else {\n this.handleOnlineOutdoorSite();\n }\n }\n\n async handleOfflineOutdoorSite(outdoorSite: OutdoorSite) {\n state.cities = await handleOfflineProperty('cities');\n state.sources = await handleOfflineProperty('sources');\n state.districts = await handleOfflineProperty('districts');\n state.themes = await handleOfflineProperty('themes');\n state.outdoorSiteTypes = await handleOfflineProperty('outdoorSiteTypes');\n state.outdoorPractices = await handleOfflineProperty('outdoorPractices');\n state.outdoorRatings = await handleOfflineProperty('outdoorRatings');\n state.outdoorRatingsScale = await handleOfflineProperty('outdoorRatingsScale');\n state.touristicContentCategories = await handleOfflineProperty('touristicContentCategories');\n state.touristicEventTypes = await handleOfflineProperty('touristicEventTypes');\n state.poiTypes = await handleOfflineProperty('poiTypes');\n state.outdoorCourseTypes = await handleOfflineProperty('outdoorCourseTypes');\n\n const informationDesksInStore = await handleOfflineProperty('informationDesks');\n const informationDesks = informationDesksInStore.filter(informationDeskInStore =>\n outdoorSite.information_desks.some(information_desk => information_desk === informationDeskInStore.id),\n );\n state.currentInformationDesks = informationDesks;\n\n const poisInStore = await handleOfflineProperty('pois', ['url']);\n const pois = poisInStore.filter(poiInStore => outdoorSite.pois.some(outdoorSitePoi => outdoorSitePoi === poiInStore.id));\n state.currentPois = pois;\n\n const touristicContentsInStore = await handleOfflineProperty('touristicContents', ['url']);\n const touristicContents = touristicContentsInStore.filter(touristicContentInStore =>\n outdoorSite.touristicContents.some(outdoorSiteTouristicContent => outdoorSiteTouristicContent === touristicContentInStore.id),\n );\n state.trekTouristicContents = touristicContents;\n\n const touristicEventsInStore = await handleOfflineProperty('touristicEvents', ['url']);\n const touristicEvents = touristicEventsInStore.filter(touristicEventInStore =>\n outdoorSite.touristicEvents.some(outdoorSiteTouristicEvent => outdoorSiteTouristicEvent === touristicEventInStore.id),\n );\n state.trekTouristicEvents = touristicEvents;\n\n const outdoorSitesInStore = await handleOfflineProperty('outdoorSites', ['url']);\n const relatedOutdoorSites = outdoorSitesInStore.filter(relatedOutdoorSiteInStore =>\n outdoorSite.children.some(relatedOutdoorSite => relatedOutdoorSite === relatedOutdoorSiteInStore.id),\n );\n state.currentRelatedOutdoorSites = relatedOutdoorSites;\n\n const outdoorCoursesInStore = await handleOfflineProperty('outdoorCourses', ['url']);\n const relatedOutdoorCourses = outdoorCoursesInStore.filter(outdoorCourseInStore =>\n outdoorSite.courses.some(relatedOutdoorCourse => relatedOutdoorCourse === outdoorCourseInStore.id),\n );\n state.currentRelatedOutdoorCourses = relatedOutdoorCourses;\n\n await setFilesFromStore(outdoorSite, imagesRegExp, ['url']);\n state.currentOutdoorSite = outdoorSite;\n }\n\n handleOnlineOutdoorSite() {\n const requests = [];\n requests.push(!state.sources ? getSources(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.districts ? getDistricts(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.themes ? getThemes(state.api, state.language, this.portals, this.init) : new Response('null'));\n requests.push(!state.outdoorSiteTypes ? getOutdoorSiteTypes(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.outdoorPractices ? getOutdoorPractices(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.outdoorRatings ? getOutdoorRatings(state.api, state.language, this.portals, this.init) : new Response('null'));\n requests.push(!state.outdoorRatingsScale ? getOutdoorRatingsScale(state.api, state.language, this.init) : new Response('null'));\n requests.push(getInformationsDesks(state.api, state.language, this.init));\n requests.push(getTouristicContentsNearOutdoorSite(state.api, state.language, this.outdoorSiteId, this.init));\n requests.push(getTouristicContentCategory(state.api, state.language, null, this.init));\n requests.push(getTouristicEventsNearOutdoorSite(state.api, state.language, this.outdoorSiteId, this.init));\n requests.push(getTouristicEventType(state.api, state.language, null, this.init));\n requests.push(getPoisNearSite(state.api, state.language, this.outdoorSiteId, this.init));\n requests.push(fetch(`${state.api}poi_type/?language=${state.language}&fields=id,pictogram`, this.init));\n requests.push(!state.outdoorCourseTypes ? getOutdoorCourseTypes(state.api, state.language, this.init) : new Response('null'));\n requests.push(getOutdoorSite(state.api, state.language, this.outdoorSiteId, this.init));\n try {\n Promise.all([...requests])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(\n async ([\n sources,\n districts,\n themes,\n outdoorSiteTypes,\n outdoorPractices,\n ratings,\n ratingsScale,\n informationDesks,\n touristicContent,\n touristicContentCategory,\n touristicEvent,\n touristicEventType,\n pois,\n poiTypes,\n outdoorCourseTypes,\n outdoorSite,\n ]) => {\n state.networkError = false;\n\n if (outdoorSite && outdoorSite.children.length > 0) {\n const outdoorSites: number[] = [];\n outdoorSites.push(...outdoorSite.children);\n const outdoorSitesRequests = [];\n outdoorSites.forEach(outdoorSiteId => {\n outdoorSitesRequests.push(getOutdoorSite(state.api, state.language, outdoorSiteId, this.init));\n });\n state.currentRelatedOutdoorSites = await Promise.all([...outdoorSitesRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n }\n\n if (outdoorSite && outdoorSite.courses.length > 0) {\n const outdoorCourses: number[] = [];\n outdoorCourses.push(...outdoorSite.courses);\n const outdoorCoursesRequests = [];\n outdoorCourses.forEach(outdoorCourseId => {\n outdoorCoursesRequests.push(getOutdoorCourse(state.api, state.language, outdoorCourseId, this.init));\n });\n state.currentRelatedOutdoorCourses = await Promise.all([...outdoorCoursesRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n }\n if (sources) {\n state.sources = sources.results;\n }\n if (districts) {\n state.districts = districts.results;\n }\n if (themes) {\n state.themes = themes.results;\n }\n if (outdoorSiteTypes) {\n state.outdoorSiteTypes = outdoorSiteTypes.results;\n }\n if (outdoorPractices) {\n state.outdoorPractices = outdoorPractices.results;\n }\n if (ratings) {\n state.outdoorRatings = ratings.results;\n }\n if (ratingsScale) {\n state.outdoorRatingsScale = ratingsScale.results;\n }\n if (informationDesks) {\n state.currentInformationDesks = informationDesks.results;\n }\n if (touristicContentCategory) {\n state.touristicContentCategories = touristicContentCategory.results;\n }\n if (touristicContent) {\n state.trekTouristicContents = touristicContent.results;\n }\n if (touristicEvent) {\n state.trekTouristicEvents = touristicEvent.results;\n }\n if (touristicEventType) {\n state.touristicEventTypes = touristicEventType.results;\n }\n if (pois) {\n state.currentPois = pois.results;\n }\n if (poiTypes) {\n state.poiTypes = poiTypes.results;\n }\n if (outdoorCourseTypes) {\n state.outdoorCourseTypes = outdoorCourseTypes.results;\n }\n\n state.currentOutdoorSite = outdoorSite;\n\n let citiesToLoad = [...outdoorSite.cities];\n if (state.cities) {\n const cityIds = state.cities.map(city => city.id);\n citiesToLoad = citiesToLoad.filter(city => city && !cityIds.includes(city));\n }\n if (citiesToLoad.length > 0) {\n try {\n const cities = (await getCities(state.api, state.language, this.init, citiesToLoad).then(response => response.json())).results;\n if (cities) {\n state.cities = [...state.cities, ...cities];\n }\n } catch (e) {\n console.error('Failed to load cities', e);\n }\n }\n },\n );\n } catch (error) {\n if (!(error.code === DOMException.ABORT_ERR)) {\n state.networkError = true;\n }\n }\n }\n\n disconnectedCallback() {\n this.controller.abort();\n state.networkError = false;\n }\n\n render() {\n return <Host></Host>;\n }\n}\n",":host {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\ngrw-outdoor-site-card {\n display: flex;\n justify-content: center;\n margin: 0px 8px 16px 8px;\n flex: 1 1 300px;\n max-width: 350px;\n}\n\n:host(.large-view) grw-outdoor-site-card {\n flex: 1 1 100%;\n max-width: none;\n}\n\n.list-bottom-space {\n height: 104px;\n}\n\n.list-large-view-bottom-space {\n height: 52px;\n}\n\n.current-outdoor-sites-within-bounds-length {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 16px;\n color: var(--color-on-surface-variant);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-family: var(--font-family);\n}\n\n.outdoor-sites-list-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n","import { Component, Host, h, Element, State, Prop } from '@stencil/core';\nimport { translate } from 'i18n/i18n';\nimport state, { onChange } from 'store/store';\nimport { OutdoorSites } from 'types/types';\n@Component({\n tag: 'grw-outdoor-sites-list',\n styleUrl: 'grw-outdoor-sites-list.scss',\n shadow: true,\n})\nexport class GrwOutdoorSitesList {\n @Element() element: HTMLElement;\n @State() outdoorSitesToDisplay: OutdoorSites = [];\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n @Prop() isLargeView = false;\n\n step = 10;\n shouldAddInfiniteScrollEvent = true;\n\n handleInfiniteScrollBind: (event: any) => void = this.handleInfiniteScroll.bind(this);\n\n connectedCallback() {\n this.handleInfiniteScrollEvent(true);\n if (state.currentOutdoorSites) {\n this.outdoorSitesToDisplay = [...state.currentOutdoorSites.slice(0, this.step)];\n }\n onChange('currentOutdoorSites', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.currentOutdoorSites) {\n this.outdoorSitesToDisplay = [...state.currentOutdoorSites.slice(0, this.step)];\n }\n });\n onChange('outdoorSitesWithinBounds', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.outdoorSitesWithinBounds) {\n this.outdoorSitesToDisplay = [...state.outdoorSitesWithinBounds.slice(0, this.step)];\n }\n });\n }\n\n handleInfiniteScroll(event: any) {\n if (event.composedPath()[0].scrollTop + event.composedPath()[0].scrollHeight / 2 >= event.composedPath()[0].scrollHeight) {\n if (this.outdoorSitesToDisplay.length < state.outdoorSitesWithinBounds.length) {\n this.outdoorSitesToDisplay = state.outdoorSitesWithinBounds.slice(\n 0,\n this.outdoorSitesToDisplay.length + this.step >= state.outdoorSitesWithinBounds.length\n ? state.outdoorSitesWithinBounds.length\n : this.outdoorSitesToDisplay.length + this.step,\n );\n } else {\n this.handleInfiniteScrollEvent(false);\n }\n }\n }\n\n handleInfiniteScrollEvent(shouldAddInfiniteScrollEvent: boolean) {\n if (shouldAddInfiniteScrollEvent) {\n if (this.shouldAddInfiniteScrollEvent) {\n this.element.addEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n } else {\n this.element.removeEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n }\n\n disconnectedCallback() {\n this.handleInfiniteScrollEvent(false);\n }\n\n render() {\n return (\n <Host class={{ 'large-view': this.isLargeView }} style={{ '--font-family': this.fontFamily, '--color-primary-app': this.colorPrimaryApp }}>\n {state.outdoorSitesWithinBounds && (\n <div part=\"current-outdoor-sites-within-bounds-length\" class=\"current-outdoor-sites-within-bounds-length\">{`${state.outdoorSitesWithinBounds.length} ${\n state.outdoorSitesWithinBounds.length > 1 ? translate[state.language].outdoorSites : translate[state.language].outdoorSite\n }`}</div>\n )}\n <div part=\"outdoor-sites-list-container\" class=\"outdoor-sites-list-container\">\n {this.outdoorSitesToDisplay.map(outdoorSite => (\n <grw-outdoor-site-card\n outdoorSite={outdoorSite}\n exportparts=\"outdoor-site-card,outdoor-site-img-container,outdoor-site-img,outdoor-site-sub-container,outdoor-site-departure,outdoor-site-name,outdoor-site-themes-container,outdoor-site-theme,outdoor-site-icons-labels-container,outdoor-site-icon-label,outdoor-site-icon,outdoor-site-label\"\n key={`outdoorSite-${outdoorSite.id}`}\n is-large-view={this.isLargeView}\n fontFamily={this.fontFamily}\n color-primary-app={this.colorPrimaryApp}\n color-on-surface={this.colorOnSurface}\n color-secondary-container={this.colorSecondaryContainer}\n color-on-secondary-container={this.colorOnSecondaryContainer}\n color-surface-container-low={this.colorSurfaceContainerLow}\n ></grw-outdoor-site-card>\n ))}\n </div>\n <div part=\"list-bottom-space\" class={!this.isLargeView ? 'list-bottom-space' : 'list-large-view-bottom-space'}></div>\n </Host>\n );\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { getAllDataInStore, handleOfflineProperty } from 'services/grw-db.service';\nimport { getOutdoorPractices, getOutdoorSites, getOutdoorSiteTypes, outdoorSiteIsAvailableOffline } from 'services/outdoor-sites.service';\nimport { getCities, getDistricts, getThemes } from 'services/treks.service';\nimport state from 'store/store';\nimport { OutdoorSites } from 'types/types';\nimport { getCacheMode } from 'utils/utils';\n\n@Component({\n tag: 'grw-outdoor-sites-provider',\n shadow: true,\n})\nexport class GrwOutdoorSitesProvider {\n @Prop() languages = 'fr';\n @Prop() api: string;\n @Prop() inBbox: string;\n @Prop() cities: string;\n @Prop() districts: string;\n @Prop() structures: string;\n @Prop() themes: string;\n @Prop() portals: string;\n @Prop() offline = false;\n\n controller = new AbortController();\n signal = this.controller.signal;\n init: RequestInit = { cache: getCacheMode(), signal: this.signal };\n\n connectedCallback() {\n if (!state.api) {\n state.api = this.api;\n state.languages = this.languages.split(',');\n state.language = state.languages[0];\n }\n\n state.portalsFromProviders = this.portals;\n state.inBboxFromProviders = this.inBbox;\n state.citiesFromProviders = this.cities;\n state.districtsFromProviders = this.districts;\n state.structuresFromProviders = this.structures;\n state.themesFromProviders = this.themes;\n\n this.handleOutdoorSites();\n }\n\n async handleOutdoorSites() {\n if (this.offline) {\n this.handleOfflineOutdoorSites();\n } else {\n this.handleOnlineOutdoorSites();\n }\n }\n\n async handleOfflineOutdoorSites() {\n let outdoorSitesInStore: OutdoorSites = await getAllDataInStore('outdoorSites');\n outdoorSitesInStore.filter(outdoorSite => outdoorSite.parents && outdoorSite.parents.length === 0);\n if (outdoorSitesInStore && outdoorSitesInStore.length > 0) {\n state.cities = await handleOfflineProperty('cities');\n state.districts = await handleOfflineProperty('districts');\n state.themes = await handleOfflineProperty('themes');\n state.outdoorSiteTypes = await handleOfflineProperty('outdoorSiteTypes');\n state.outdoorPractices = await handleOfflineProperty('outdoorPractices');\n outdoorSitesInStore = await handleOfflineProperty('outdoorSites');\n state.outdoorSites = outdoorSitesInStore;\n state.currentOutdoorSites = outdoorSitesInStore;\n } else {\n state.networkError = true;\n }\n }\n\n handleOnlineOutdoorSites() {\n const requests = [];\n requests.push(!state.districts ? getDistricts(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.themes ? getThemes(state.api, state.language, this.portals, this.init) : new Response('null'));\n requests.push(!state.outdoorSiteTypes ? getOutdoorSiteTypes(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.outdoorPractices ? getOutdoorPractices(state.api, state.language, this.init) : new Response('null'));\n requests.push(getOutdoorSites(state.api, state.language, this.inBbox, this.cities, this.districts, this.structures, this.themes, this.portals, this.init));\n Promise.all([...requests])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(async ([districts, themes, outdoorSiteTypes, outdoorPractices, outdoorSites]) => {\n state.networkError = false;\n\n if (districts) {\n state.districts = districts.results;\n }\n if (themes) {\n state.themes = themes.results;\n }\n if (outdoorSiteTypes) {\n state.outdoorSiteTypes = outdoorSiteTypes.results;\n }\n if (outdoorPractices) {\n state.outdoorPractices = outdoorPractices.results;\n }\n\n const outdoorSitesWithOfflineValue = [];\n for (let index = 0; index < outdoorSites.results.length; index++) {\n const offline = await outdoorSiteIsAvailableOffline(outdoorSites.results[index].id);\n outdoorSitesWithOfflineValue.push({ ...outdoorSites.results[index], offline });\n }\n state.outdoorSites = outdoorSitesWithOfflineValue;\n state.currentOutdoorSites = outdoorSitesWithOfflineValue;\n\n if (!state.cities || state.cities.length === 0) {\n const cityIds = new Set<number>();\n if (outdoorSites && outdoorSites.results) {\n outdoorSites.results.forEach(item => {\n if (item.cities) {\n item.cities.forEach(c => cityIds.add(c));\n }\n });\n }\n if (cityIds.size > 0) {\n try {\n const citiesResponse = await getCities(state.api, state.language, this.init, Array.from(cityIds));\n const citiesData = await citiesResponse.json();\n state.cities = citiesData.results || [];\n } catch (e) {\n console.error('Failed to load cities', e);\n }\n }\n }\n })\n .catch(async () => {\n await this.handleOfflineOutdoorSites();\n });\n }\n\n disconnectedCallback() {\n this.controller.abort();\n state.networkError = false;\n }\n\n render() {\n return <Host></Host>;\n }\n}\n",":host {\n display: flex;\n justify-content: center;\n align-items: center;\n .icon {\n display: flex;\n color: var(--color-on-primary-container);\n position: absolute;\n left: 32px;\n z-index: 20;\n pointer-events: none;\n }\n}\n\n.search-input {\n width: 100%;\n background-color: var(--color-surface-container-high);\n box-shadow: var(--elevation-2);\n border: none;\n border-radius: var(--border-radius, 40px);\n color: var(--color-on-primary-container);\n font-size: 16px;\n line-height: 24px;\n font-weight: 400;\n font-family: var(--font-family);\n height: 44px;\n padding: 0px 16px 0px 48px;\n outline-color: var(--color-outline);\n &::placeholder {\n color: var(--color-on-primary-container);\n }\n &::-webkit-search-cancel-button {\n -webkit-appearance: none;\n background-color: var(--color-on-primary-container);\n -webkit-mask-image: url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23777'><path d='M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/></svg>\");\n background-size: 20px 20px;\n height: 20px;\n width: 20px;\n }\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\nimport state from 'store/store';\nimport { handleOutdoorSitesFiltersAndSearch, handleTouristicContentsFiltersAndSearch, handleTouristicEventsFiltersAndSearch, handleTreksFiltersAndSearch } from 'utils/utils';\nimport SearchIcon from '../../assets/search.svg';\n\n@Component({\n tag: 'grw-search',\n styleUrl: 'grw-search.scss',\n shadow: true,\n})\nexport class GrwSearch {\n @Prop() fontFamily = 'Roboto';\n\n onSearchChange(event: InputEvent) {\n state.searchValue = (event.target as any).value;\n if (state.mode === 'treks') {\n state.currentTreks = handleTreksFiltersAndSearch();\n } else if (state.mode === 'touristicContents') {\n state.currentTouristicContents = handleTouristicContentsFiltersAndSearch();\n } else if (state.mode === 'touristicEvents') {\n state.currentTouristicEvents = handleTouristicEventsFiltersAndSearch();\n } else if (state.mode === 'outdoor') {\n state.currentOutdoorSites = handleOutdoorSitesFiltersAndSearch();\n }\n }\n\n render() {\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\n }}\n >\n <span part=\"icon\" class=\"icon\" innerHTML={SearchIcon}></span>\n <input part=\"search-input\" class=\"search-input\" onInput={e => this.onSearchChange(e)} type=\"search\" placeholder=\"Rechercher\" value={state.searchValue}></input>\n </Host>\n );\n }\n}\n",".segmented-buttons-container {\n font-family: var(--font-family);\n display: flex;\n justify-content: center;\n width: calc(100% - 32px);\n height: 40px;\n margin: 16px;\n border: 1px solid var(--color-outline);\n border-radius: var(--border-radius, 20px);\n line-height: 20px;\n .segment {\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n font-weight: 500;\n -webkit-tap-highlight-color: transparent;\n color: var(--color-on-surface);\n background-color: transparent;\n border-radius: 0px;\n min-width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n &:first-child {\n border-top-left-radius: var(--border-radius, 20px);\n border-bottom-left-radius: var(--border-radius, 20px);\n }\n &:not(:last-child) {\n border-right: 1px solid var(--color-outline);\n }\n &:last-child {\n border-top-right-radius: var(--border-radius, 20px);\n border-bottom-right-radius: var(--border-radius, 20px);\n }\n }\n .selected-segment {\n color: var(--color-on-primary-container);\n background-color: var(--color-primary-container);\n }\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\nimport { translate } from 'i18n/i18n';\nimport state from 'store/store';\nimport { Mode } from 'types/types';\n\nimport {\n handleOutdoorSitesFiltersAndSearch,\n handleTouristicContentsFiltersAndSearch,\n handleTouristicEventsFiltersAndSearch,\n handleTreksFiltersAndSearch,\n outdoorSitesFilters,\n touristicContentsFilters,\n touristicEventsFilters,\n treksFilters,\n} from 'utils/utils';\n\n@Component({\n tag: 'grw-segmented-segment',\n styleUrl: 'grw-segmented-segment.scss',\n shadow: true,\n})\nexport class GrwSegmentedSegment {\n @Prop() treks = true;\n @Prop() touristicContents = false;\n @Prop() touristicEvents = false;\n @Prop() outdoor = false;\n\n @Prop() fontFamily = 'Roboto';\n\n changeMode(mode: Mode) {\n state.searchValue = '';\n if (mode === 'treks') {\n treksFilters.forEach(filter => {\n state[filter.property] && state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedThemesFilters = 0;\n state.selectedLocationFilters = 0;\n if (state.treks) {\n state.currentTreks = [...handleTreksFiltersAndSearch()];\n }\n } else if (mode === 'touristicContents') {\n touristicContentsFilters.forEach(filter => {\n state[filter.property] && state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedThemesFilters = 0;\n state.selectedLocationFilters = 0;\n if (state.touristicContents) {\n state.currentTouristicContents = [...handleTouristicContentsFiltersAndSearch()];\n }\n } else if (mode === 'touristicEvents') {\n touristicEventsFilters.forEach(filter => {\n state[filter.property] && state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedThemesFilters = 0;\n state.selectedLocationFilters = 0;\n if (state.touristicEvents) {\n state.currentTouristicEvents = [...handleTouristicEventsFiltersAndSearch()];\n }\n } else if (mode === 'outdoor') {\n outdoorSitesFilters.forEach(filter => {\n state[filter.property] && state[filter.property].forEach(currentFilter => (currentFilter.selected = false));\n });\n state.selectedActivitiesFilters = 0;\n state.selectedThemesFilters = 0;\n state.selectedLocationFilters = 0;\n if (state.outdoorSites) {\n state.currentOutdoorSites = [...handleOutdoorSitesFiltersAndSearch()];\n }\n }\n state.mode = mode;\n }\n\n render() {\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\n }}\n >\n <div part=\"segmented-buttons-container\" class=\"segmented-buttons-container\">\n {this.treks && (\n <label part=\"segment\" class={`segment${state.mode === 'treks' ? ' selected-segment' : ''}`} onClick={() => this.changeMode('treks')}>\n {translate[state.language].home.segment.treks}\n </label>\n )}\n {this.outdoor && (\n <label part=\"segment\" class={`segment${state.mode === 'outdoor' ? ' selected-segment' : ''}`} onClick={() => this.changeMode('outdoor')}>\n {translate[state.language].home.segment.outdoorSites}\n </label>\n )}\n {this.touristicContents && (\n <label part=\"segment\" class={`segment${state.mode === 'touristicContents' ? ' selected-segment' : ''}`} onClick={() => this.changeMode('touristicContents')}>\n {translate[state.language].home.segment.touristicContents}\n </label>\n )}\n {this.touristicEvents && (\n <label part=\"segment\" class={`segment${state.mode === 'touristicEvents' ? ' selected-segment' : ''}`} onClick={() => this.changeMode('touristicEvents')}>\n {translate[state.language].home.segment.touristicEvents}\n </label>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: flex;\n align-items: center;\n .icon {\n display: flex;\n }\n #language-select {\n border: none;\n background-color: var(--color-background);\n &:focus-visible {\n outline: none;\n }\n }\n}\n","import { Component, Host, h } from '@stencil/core';\nimport state from 'store/store';\nimport TranslateIcon from '../../assets/translate.svg';\n\n@Component({\n tag: 'grw-select-language',\n styleUrl: 'grw-select-language.scss',\n shadow: true,\n})\nexport class GrwSelectLanguage {\n handleSelect(event) {\n state.treks = null;\n state.currentTreks = null;\n state.currentTrek = null;\n state.language = event.target.value;\n }\n\n render() {\n return (\n <Host>\n <span part=\"select-language-icon\" class=\"icon\" innerHTML={TranslateIcon}></span>\n <select part=\"select-language-select\" onInput={event => this.handleSelect(event)} name=\"languages\" id=\"language-select\">\n {state.languages.map(language => (\n <option part=\"select-language-option\" selected={language === state.language} value={language.toLocaleLowerCase()}>\n {language.toLocaleUpperCase()}\n </option>\n ))}\n </select>\n </Host>\n );\n }\n}\n",".md3.switch {\n user-select: none;\n position: relative;\n -webkit-tap-highlight-color: transparent;\n margin: 10px;\n font-family: var(--font-family);\n}\n\n.md3.switch input {\n opacity: 0;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n}\n\n.md3.switch span.slider {\n position: absolute;\n cursor: pointer;\n background-color: var(--color-primary-container);\n width: 48px;\n height: 28px;\n border-radius: 28px;\n border: 2px solid var(--color-outline);\n transition: background-color 0.1s ease-in-out, border-color 0.1s ease-in-out;\n}\n\n/* thumb */\n.md3.switch span.slider::before {\n position: absolute;\n content: '';\n height: 16px;\n width: 16px;\n left: 0px;\n margin: 6px;\n background-color: var(--color-outline);\n border-radius: 28px;\n transition: left 175ms cubic-bezier(0, 0.5, 0.5, 1.5), background-color 0.1s ease-in-out, height 50ms ease-in-out, width 50ms ease-in-out, margin 50ms ease-in-out;\n}\n\n.md3.switch span.slider span.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n left: 0px;\n margin: 6px 0px;\n height: 16px;\n width: 16px;\n font-size: 16px;\n text-align: center;\n opacity: 0;\n transition: left 175ms cubic-bezier(0, 0.5, 0.5, 1.5);\n color: var(--color-surface-variant);\n}\n\n.md3.switch input:checked + span.slider {\n background-color: var(--color-primary);\n border-color: transparent;\n}\n\n.md3.switch input:checked + span.slider::before {\n background-color: var(--color-on-primary);\n height: 24px;\n width: 24px;\n left: 20px;\n margin: 2px;\n}\n\n.md3.switch input:not(:disabled):hover + span.slider::before {\n background-color: var(--color-on-surface-variant);\n}\n\n.md3.switch input:not(:disabled):checked:hover + span.slider::before {\n background-color: var(--color-primary-container);\n}\n\n.md3.switch input:not(:disabled):active + span.slider::before {\n height: 28px;\n width: 28px;\n margin: 0px;\n}\n\n.md3.switch input:not(:disabled):checked:active + span.slider::before {\n background-color: var(--color-primary-container);\n}\n\n.md3.switch input:checked + span.slider span.icon {\n left: 26px;\n opacity: 1;\n color: var(--color-on-primary-container);\n}\n\n.md3.switch input:focus-visible + span.slider {\n outline: 2px solid var(--color-primary);\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\nimport DoneIcon from '../../assets/done.svg';\n\n@Component({\n tag: 'grw-switch',\n styleUrl: 'grw-switch.scss',\n shadow: true,\n})\nexport class GrwSwitch {\n @Prop() action: Function;\n\n @Prop() fontFamily = 'Roboto';\n\n @Prop() checked: boolean;\n\n render() {\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\n }}\n >\n <label class=\"md3 switch\">\n <input checked={this.checked} onChange={() => this.action()} type=\"checkbox\" id=\"darkmode\" name=\"darkmode\" />\n <span class=\"slider\">\n <span part=\"icon\" class=\"icon\" innerHTML={DoneIcon}></span>\n </span>\n </label>\n </Host>\n );\n }\n}\n",":host {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\ngrw-touristic-content-card {\n display: flex;\n justify-content: center;\n margin: 0px 8px 16px 8px;\n flex: 1 1 300px;\n max-width: 350px;\n}\n\n:host(.large-view) grw-touristic-content-card {\n flex: 1 1 100%;\n max-width: none;\n}\n\n.list-bottom-space {\n height: 104px;\n}\n\n.list-large-view-bottom-space {\n height: 52px;\n}\n\n.current-touristic-contents-within-bounds-length {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 16px;\n color: var(--color-on-surface-variant);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-family: var(--font-family);\n}\n\n.touristic-contents-list-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n","import { Component, Host, h, Element, State, Prop } from '@stencil/core';\nimport { translate } from 'i18n/i18n';\nimport state, { onChange } from 'store/store';\nimport { TouristicContents } from 'types/types';\n\n@Component({\n tag: 'grw-touristic-contents-list',\n styleUrl: 'grw-touristic-contents-list.scss',\n shadow: true,\n})\nexport class GrwTouristicContentsList {\n @Element() element: HTMLElement;\n @State() touristicContentsToDisplay: TouristicContents = [];\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n\n @Prop() isLargeView = false;\n step = 10;\n shouldAddInfiniteScrollEvent = true;\n\n handleInfiniteScrollBind: (event: any) => void = this.handleInfiniteScroll.bind(this);\n\n connectedCallback() {\n this.handleInfiniteScrollEvent(true);\n if (state.currentTouristicContents) {\n this.touristicContentsToDisplay = [...state.currentTouristicContents.slice(0, this.step)];\n }\n onChange('currentTouristicContents', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.currentTouristicContents) {\n this.touristicContentsToDisplay = [...state.currentTouristicContents.slice(0, this.step)];\n }\n });\n onChange('touristicContentsWithinBounds', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.touristicContentsWithinBounds) {\n this.touristicContentsToDisplay = [...state.touristicContentsWithinBounds.slice(0, this.step)];\n }\n });\n }\n\n handleInfiniteScroll(event: any) {\n if (event.composedPath()[0].scrollTop + event.composedPath()[0].scrollHeight / 2 >= event.composedPath()[0].scrollHeight) {\n if (this.touristicContentsToDisplay.length < state.touristicContentsWithinBounds.length) {\n this.touristicContentsToDisplay = state.touristicContentsWithinBounds.slice(\n 0,\n this.touristicContentsToDisplay.length + this.step >= state.touristicContentsWithinBounds.length\n ? state.touristicContentsWithinBounds.length\n : this.touristicContentsToDisplay.length + this.step,\n );\n } else {\n this.handleInfiniteScrollEvent(false);\n }\n }\n }\n\n handleInfiniteScrollEvent(shouldAddInfiniteScrollEvent: boolean) {\n if (shouldAddInfiniteScrollEvent) {\n if (this.shouldAddInfiniteScrollEvent) {\n this.element.addEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n } else {\n this.element.removeEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n }\n\n disconnectedCallback() {\n this.handleInfiniteScrollEvent(false);\n }\n\n render() {\n return (\n <Host class={{ 'large-view': this.isLargeView }} style={{ '--font-family': this.fontFamily, '--color-primary-app': this.colorPrimaryApp }}>\n {state.touristicContentsWithinBounds && (\n <div part=\"current-touristic-contents-within-bounds-length\" class=\"current-touristic-contents-within-bounds-length\">{`${state.touristicContentsWithinBounds.length} ${\n state.touristicContentsWithinBounds.length > 1 ? translate[state.language].home.touristicContents : translate[state.language].home.touristicContent\n }`}</div>\n )}\n <div part=\"touristic-contents-list-container\" class=\"touristic-contents-list-container\">\n {this.touristicContentsToDisplay.map(touristicContent => (\n <grw-touristic-content-card\n exportparts=\"touristic-content-card,touristic-content-img-container,swiper-touristic-content,swiper-wrapper,swiper-slide,touristic-content-img,default-touristic-content-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-content-sub-container,touristic-content-category-container,touristic-content-category-img,touristic-content-category-name,touristic-content-name,touristic-content-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n key={`touristic-content-${touristicContent.id}`}\n touristicContent={touristicContent}\n is-large-view={this.isLargeView}\n color-primary-app={this.colorPrimaryApp}\n color-on-surface={this.colorOnSurface}\n color-secondary-container={this.colorSecondaryContainer}\n color-on-secondary-container={this.colorOnSecondaryContainer}\n color-surface-container-low={this.colorSurfaceContainerLow}\n ></grw-touristic-content-card>\n ))}\n </div>\n <div part=\"list-bottom-space\" class={!this.isLargeView ? 'list-bottom-space' : 'list-large-view-bottom-space'}></div>\n </Host>\n );\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { getTouristicContentCategory, getTouristicContentsList } from 'services/touristic-contents.service';\nimport { getCities, getDistricts } from 'services/treks.service';\nimport state from 'store/store';\nimport { getCacheMode } from 'utils/utils';\n\n@Component({\n tag: 'grw-touristic-contents-provider',\n shadow: true,\n})\nexport class GrwTouristicContentsProvider {\n @Prop() languages = 'fr';\n @Prop() api: string;\n @Prop() inBbox: string;\n @Prop() cities: string;\n @Prop() districts: string;\n @Prop() structures: string;\n @Prop() themes: string;\n @Prop() portals: string;\n\n controller = new AbortController();\n signal = this.controller.signal;\n init: RequestInit = { cache: getCacheMode(), signal: this.signal };\n\n connectedCallback() {\n if (!state.api) {\n state.api = this.api;\n state.languages = this.languages.split(',');\n state.language = state.languages[0];\n }\n this.handleTouristicContents();\n }\n\n handleTouristicContents() {\n let touristicContentsRequest = getTouristicContentsList(\n state.api,\n state.language,\n this.inBbox,\n this.cities,\n this.districts,\n this.structures,\n this.themes,\n this.portals,\n this.init,\n );\n\n const requests = [];\n requests.push(!state.districts ? getDistricts(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.touristicContentCategories ? getTouristicContentCategory(state.api, state.language, this.portals, this.init) : new Response('null'));\n try {\n Promise.all([...requests, touristicContentsRequest])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(async ([districts, touristicContentCategory, touristicContents]) => {\n state.networkError = false;\n\n if (districts) {\n state.districts = districts.results;\n }\n if (touristicContentCategory) {\n state.touristicContentCategories = touristicContentCategory.results;\n }\n state.touristicContents = touristicContents.results;\n state.currentTouristicContents = touristicContents.results;\n\n if (!state.cities || state.cities.length === 0) {\n const cityIds = new Set<number>();\n if (touristicContents && touristicContents.results) {\n touristicContents.results.forEach(item => {\n if (item.cities) {\n item.cities.forEach(c => cityIds.add(c));\n }\n });\n }\n if (cityIds.size > 0) {\n try {\n const citiesResponse = await getCities(state.api, state.language, this.init, Array.from(cityIds));\n const citiesData = await citiesResponse.json();\n state.cities = citiesData.results || [];\n } catch (e) {\n console.error('Failed to load cities', e);\n }\n }\n }\n });\n } catch (error) {\n if (!(error.code === DOMException.ABORT_ERR)) {\n state.networkError = true;\n }\n }\n }\n\n disconnectedCallback() {\n this.controller.abort();\n state.networkError = false;\n }\n\n render() {\n return <Host></Host>;\n }\n}\n",":host {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\ngrw-touristic-event-card {\n display: flex;\n justify-content: center;\n margin: 0px 8px 16px 8px;\n flex: 1 1 300px;\n max-width: 350px;\n}\n\n:host(.large-view) grw-touristic-event-card {\n flex: 1 1 100%;\n max-width: none;\n}\n\n.list-bottom-space {\n height: 104px;\n}\n\n.list-large-view-bottom-space {\n height: 52px;\n}\n\n.current-touristic-events-within-bounds-length {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 16px;\n color: var(--color-on-surface-variant);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-family: var(--font-family);\n}\n\n.touristic-events-list-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n","import { Component, Host, h, Element, State, Prop } from '@stencil/core';\nimport { translate } from 'i18n/i18n';\nimport state, { onChange } from 'store/store';\nimport { TouristicEvents } from 'types/types';\n\n@Component({\n tag: 'grw-touristic-events-list',\n styleUrl: 'grw-touristic-events-list.scss',\n shadow: true,\n})\nexport class GrwTouristicContentsList {\n @Element() element: HTMLElement;\n @State() touristicEventsToDisplay: TouristicEvents = [];\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n\n @Prop() isLargeView = false;\n step = 10;\n shouldAddInfiniteScrollEvent = true;\n\n handleInfiniteScrollBind: (event: any) => void = this.handleInfiniteScroll.bind(this);\n\n connectedCallback() {\n this.handleInfiniteScrollEvent(true);\n if (state.currentTouristicEvents) {\n this.touristicEventsToDisplay = [...state.currentTouristicEvents.slice(0, this.step)];\n }\n onChange('currentTouristicEvents', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.currentTouristicContents) {\n this.touristicEventsToDisplay = [...state.currentTouristicEvents.slice(0, this.step)];\n }\n });\n onChange('touristicEventsWithinBounds', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.touristicEventsWithinBounds) {\n this.touristicEventsToDisplay = [...state.touristicEventsWithinBounds.slice(0, this.step)];\n }\n });\n }\n\n handleInfiniteScroll(event: any) {\n if (event.composedPath()[0].scrollTop + event.composedPath()[0].scrollHeight / 2 >= event.composedPath()[0].scrollHeight) {\n if (this.touristicEventsToDisplay.length < state.touristicEventsWithinBounds.length) {\n this.touristicEventsToDisplay = state.touristicEventsWithinBounds.slice(\n 0,\n this.touristicEventsToDisplay.length + this.step >= state.touristicEventsWithinBounds.length\n ? state.touristicEventsWithinBounds.length\n : this.touristicEventsToDisplay.length + this.step,\n );\n } else {\n this.handleInfiniteScrollEvent(false);\n }\n }\n }\n\n handleInfiniteScrollEvent(shouldAddInfiniteScrollEvent: boolean) {\n if (shouldAddInfiniteScrollEvent) {\n if (this.shouldAddInfiniteScrollEvent) {\n this.element.addEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n } else {\n this.element.removeEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n }\n\n disconnectedCallback() {\n this.handleInfiniteScrollEvent(false);\n }\n\n render() {\n return (\n <Host class={{ 'large-view': this.isLargeView }} style={{ '--font-family': this.fontFamily, '--color-primary-app': this.colorPrimaryApp }}>\n {state.touristicEventsWithinBounds && (\n <div part=\"current-touristic-events-within-bounds-length\" class=\"current-touristic-events-within-bounds-length\">{`${state.touristicEventsWithinBounds.length} ${\n state.touristicEventsWithinBounds.length > 1 ? translate[state.language].home.touristicEvents : translate[state.language].home.touristicEvent\n }`}</div>\n )}\n <div part=\"touristic-events-list-container\" class=\"touristic-events-list-container\">\n {this.touristicEventsToDisplay.map(touristicEvent => (\n <grw-touristic-event-card\n exportparts=\"touristic-event-card,touristic-event-img-container,swiper-touristic-event,swiper-wrapper,swiper-slide,touristic-event-img,default-touristic-event-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-event-sub-container,touristic-event-sub-container,touristic-event-type-img,touristic-event-type-name,touristic-event-name,touristic-event-date-container,touristic-event-date,touristic-event-more-detail-container,more-details-button\"\n key={`touristic-event-${touristicEvent.id}`}\n touristicEvent={touristicEvent}\n is-large-view={this.isLargeView}\n fontFamily={this.fontFamily}\n color-primary-app={this.colorPrimaryApp}\n color-on-surface={this.colorOnSurface}\n color-secondary-container={this.colorSecondaryContainer}\n color-on-secondary-container={this.colorOnSecondaryContainer}\n color-surface-container-low={this.colorSurfaceContainerLow}\n ></grw-touristic-event-card>\n ))}\n </div>\n <div part=\"list-bottom-space\" class={!this.isLargeView ? 'list-bottom-space' : 'list-large-view-bottom-space'}></div>\n </Host>\n );\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { getTouristicEventsList, getTouristicEventType } from 'services/touristic-events.service';\nimport { getCities, getDistricts } from 'services/treks.service';\nimport state from 'store/store';\nimport { getCacheMode } from 'utils/utils';\n\n@Component({\n tag: 'grw-touristic-events-provider',\n shadow: true,\n})\nexport class GrwTouristicEventsProvider {\n @Prop() languages = 'fr';\n @Prop() api: string;\n @Prop() inBbox: string;\n @Prop() cities: string;\n @Prop() districts: string;\n @Prop() structures: string;\n @Prop() themes: string;\n @Prop() portals: string;\n\n controller = new AbortController();\n signal = this.controller.signal;\n init: RequestInit = { cache: getCacheMode(), signal: this.signal };\n\n connectedCallback() {\n if (!state.api) {\n state.api = this.api;\n state.languages = this.languages.split(',');\n state.language = state.languages[0];\n }\n this.handleTouristicEvents();\n }\n\n handleTouristicEvents() {\n let touristicEventsRequest = getTouristicEventsList(state.api, state.language, this.inBbox, this.cities, this.districts, this.structures, this.themes, this.portals, this.init);\n\n const requests = [];\n requests.push(!state.districts ? getDistricts(state.api, state.language, this.init) : new Response('null'));\n requests.push(!state.touristicEventTypes ? getTouristicEventType(state.api, state.language, this.portals, this.init) : new Response('null'));\n\n try {\n Promise.all([...requests, touristicEventsRequest])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(async ([districts, touristicEventTypes, touristicEvents]) => {\n state.networkError = false;\n\n if (districts) {\n state.districts = districts.results;\n }\n if (touristicEventTypes) {\n state.touristicEventTypes = touristicEventTypes.results;\n }\n state.touristicEvents = touristicEvents.results;\n state.currentTouristicEvents = touristicEvents.results;\n\n if (!state.cities || state.cities.length === 0) {\n const cityIds = new Set<number>();\n if (touristicEvents && touristicEvents.results) {\n touristicEvents.results.forEach(item => {\n if (item.cities) {\n item.cities.forEach(c => cityIds.add(c));\n }\n });\n }\n if (cityIds.size > 0) {\n try {\n const citiesResponse = await getCities(state.api, state.language, this.init, Array.from(cityIds));\n const citiesData = await citiesResponse.json();\n state.cities = citiesData.results || [];\n } catch (e) {\n console.error('Failed to load cities', e);\n }\n }\n }\n });\n } catch (error) {\n if (!(error.code === DOMException.ABORT_ERR)) {\n state.networkError = true;\n }\n }\n }\n\n disconnectedCallback() {\n this.controller.abort();\n state.networkError = false;\n }\n\n render() {\n return <Host></Host>;\n }\n}\n","@use '~swiper/swiper.scss';\n@use '~swiper/modules/navigation/navigation.scss';\n@use '~swiper/modules/pagination/pagination.scss';\n@use '~swiper/modules/scrollbar/scrollbar.scss';\n\n.swiper {\n z-index: 0;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n --swiper-navigation-size: 24px;\n --swiper-navigation-color: var(--color-on-primary-container);\n --swiper-pagination-color: var(--color-primary-container);\n --swiper-pagination-bullet-size: 12px;\n .swiper-button-prev,\n .swiper-button-next {\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius, 32px);\n box-shadow: var(--elevation-1);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n}\n\ngrw-trek-detail {\n overflow: hidden;\n}\n\n.trek-options {\n z-index: 9;\n flex-shrink: 0;\n display: flex;\n position: sticky;\n top: 0px;\n left: 0px;\n width: 100%;\n min-height: 32px;\n padding: 8px 0px;\n background-color: var(--color-background);\n overflow-x: auto;\n font-family: var(--font-family);\n &::-webkit-scrollbar {\n height: 5px;\n }\n &::-webkit-scrollbar-thumb {\n background: var(--color-primary-app);\n border-radius: 8px;\n }\n .trek-option {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 16px;\n font-size: 22px;\n line-height: 28px;\n font-weight: 500;\n white-space: nowrap;\n text-decoration: none;\n color: var(--color-on-surface);\n transition-property: color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 0.3s;\n &:hover {\n color: var(--color-primary-app);\n }\n @media (hover: none) {\n &:not(.selected-trek-option):hover {\n color: inherit;\n }\n }\n }\n .trek-option:last-of-type {\n margin-right: 16px;\n }\n .selected-trek-option {\n color: var(--color-primary-app);\n }\n .trek-indicator-selected-trek-option {\n position: absolute;\n bottom: 8px;\n height: 2px;\n background-image: linear-gradient(var(--color-primary-app), var(--color-primary-app));\n background-repeat: no-repeat;\n transition: transform 0.5s ease, background-size 0.5s ease 0.5s;\n margin-left: 16px;\n background-position: center;\n }\n}\n.trek-detail-container {\n font-family: var(--font-family);\n color: var(--color-on-surface);\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n .trek-name {\n color: var(--color-primary-app);\n font-size: 32px;\n line-height: 28px;\n font-weight: 600;\n padding: 0px 24px;\n margin: 16px 0px;\n }\n .trek-img {\n cursor: pointer;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .default-trek-img {\n background-color: var(--color-primary-container);\n object-fit: contain;\n }\n .sub-container {\n padding: 24px 24px 0px 24px;\n .icons-labels-container {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n .icon-label {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n .icon {\n display: flex;\n width: 24px;\n height: 24px;\n color: var(--color-primary-app);\n margin-right: 8px;\n }\n .network {\n &:not(:last-child) {\n margin-right: 16px;\n }\n }\n }\n .practice {\n .icon {\n display: flex;\n background-color: var(--color-primary-app);\n }\n }\n .network {\n display: flex;\n align-items: center;\n }\n }\n }\n .row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n }\n .downloads-container {\n padding: 0px 24px 0px 24px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n .download-title {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 500;\n }\n .links-container {\n display: flex;\n flex-wrap: wrap;\n a {\n margin-top: 8px;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: var(--border-radius, 8px);\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n text-decoration: none;\n font-family: var(--font-family);\n &:nth-child(2) {\n margin: 8px 12px 0px 12px;\n }\n &:hover {\n box-shadow: var(--elevation-2);\n }\n .icon {\n display: flex;\n }\n }\n }\n }\n .themes-container {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n padding: 0px 24px 0px 24px;\n .theme {\n background-color: var(--color-secondary-container);\n color: var(--color-on-secondary-container);\n border-radius: var(--border-radius, 40px);\n padding: 8px 16px;\n margin: 0px 8px 8px 0px;\n box-shadow: var(--elevation-0);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n }\n }\n .ambiance,\n .description-teaser,\n .description-container,\n .altimetric-profile-container,\n .access-container,\n .public-transport-container,\n .advice-container,\n .advised-parking-container,\n .sensitive-areas-container,\n .source-container,\n .accessibilities-container,\n .parent-trek-container,\n .weather-container,\n .weblinks-container {\n padding: 0px 24px 0px 24px;\n }\n .ambiance,\n .description-teaser,\n .description-container,\n .altimetric-profile-container,\n .access-container,\n .public-transport-container,\n .advice-container,\n .advised-parking-container,\n .sensitive-areas-container,\n .information-desks-container,\n .pois-container,\n .source-container,\n .accessibilities-container,\n .weather-container,\n .parent-trek-container,\n .step-container,\n .touristic-content-container,\n .touristic-event-container,\n .weblinks-container {\n font-size: 16px;\n line-height: 24px;\n font-weight: 400;\n a {\n color: var(--color-primary-app);\n }\n }\n .description-teaser {\n font-weight: 600;\n font-size: 22px;\n margin-bottom: 8px;\n }\n .description-title,\n .altimetric-profile-title,\n .access-title,\n .public-transport-title,\n .advice-title,\n .advised-parking-title,\n .sensitive-areas-title,\n .information-desks-title,\n .pois-title,\n .source-title,\n .accessibilities-title,\n .step-title,\n .parent-trek-title,\n .touristic-content-title,\n .touristic-event-title,\n .weblinks-title {\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-weight: bold;\n }\n\n .access {\n margin-bottom: 16px;\n }\n\n .advised-parking-title {\n font-size: 16px;\n }\n\n .description-title,\n .altimetric-profile-title,\n .access-title,\n .public-transport-title,\n .advice-title,\n .advised-parking-title,\n .sensitive-areas-title,\n .information-desks-title,\n .pois-title,\n .source-title,\n .accessibilities-title,\n .parent-trek-title,\n .touristic-content-title,\n .touristic-event-title,\n .weblinks-title {\n margin-bottom: 16px;\n }\n\n .step-title {\n margin-bottom: 12px;\n }\n\n .information-desks-title,\n .pois-title,\n .step-title,\n .touristic-content-title,\n .touristic-event-title {\n padding: 0px 24px 0px 24px;\n }\n\n .parent-trek-title {\n cursor: pointer;\n user-select: none;\n font-weight: 500;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n box-shadow: var(--elevation-0);\n border: none;\n -webkit-tap-highlight-color: transparent;\n line-height: 20px;\n color: var(--color-primary);\n background-color: transparent;\n div {\n margin-right: 4px;\n }\n }\n\n .accessibility-emergency-number-content {\n a {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n border-radius: var(--border-radius, 40px);\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n text-decoration: none;\n font-weight: 600;\n width: fit-content;\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n position: relative;\n font-family: var(--font-family);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n }\n}\n\n.description-container {\n .description {\n ol {\n position: relative;\n counter-reset: referencePoint;\n &:before {\n content: '';\n position: absolute;\n width: 4px;\n top: 0px;\n bottom: 0px;\n left: 14px;\n background-color: var(--color-primary-app);\n }\n li {\n position: relative;\n list-style-type: none;\n counter-increment: referencePoint;\n p {\n margin: 0;\n }\n &:not(:first-child) {\n margin-top: 12px;\n }\n }\n li:before {\n color: var(--reference-point-color);\n background: var(--reference-point-background-color);\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n content: counter(referencePoint);\n width: 24px;\n height: 24px;\n border-radius: 12px;\n font-weight: bold;\n font-size: 0.8em;\n margin-left: -36px;\n top: calc(50% - 12px);\n }\n }\n }\n}\n\n.current-advice-container,\n.gear-container {\n display: flex;\n padding: 12px;\n border: 2px solid var(--color-outline);\n border-radius: var(--border-radius, 12px);\n font-size: 16px;\n .icon img {\n width: 26px;\n margin-right: 8px;\n }\n margin-bottom: 12px;\n}\n\n.label-container {\n padding: 12px;\n border: 2px solid var(--color-outline);\n border-radius: var(--border-radius, 12px);\n margin-bottom: 12px;\n .label-sub-container {\n display: flex;\n align-items: center;\n img {\n width: 26px;\n margin-right: 16px;\n background-color: var(--color-on-surface);\n }\n .label-name {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n padding: 12px 0px;\n }\n }\n .label-advice {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 500;\n }\n}\n\n.advice-container {\n div:last-child {\n margin-bottom: 0px;\n }\n}\n\n.source-container {\n .source-sub-container {\n display: flex;\n align-items: center;\n img {\n width: 100px;\n margin-right: 16px;\n }\n .source-name {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 12px 0px;\n }\n }\n}\n.weblinks-container {\n .weblink-container {\n display: flex;\n align-items: center;\n width: fit-content;\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n padding: 12px 0px;\n img {\n width: 26px;\n margin-right: 16px;\n }\n }\n}\n\n.departure-container,\n.arrival-container,\n.cities-container {\n display: flex;\n align-items: center;\n padding: 0px 24px 24px 24px;\n .departure-title,\n .arrival-title,\n .cities-title {\n color: var(--color-on-surface);\n font-weight: bold;\n white-space: nowrap;\n margin-right: 8px;\n }\n}\n.accessibilities-container {\n div:nth-child(2) {\n div:first-child {\n padding: 0px 0px 12px 0px;\n }\n }\n .accessibilities-content-container {\n padding: 12px 0px 0px 0px;\n display: flex;\n .accessibility-content-container {\n display: flex;\n align-items: center;\n margin: 0px 8px 8px 0px;\n img {\n margin-right: 16px;\n width: 26px;\n }\n }\n }\n .accessibility-level-title,\n .accessibility-slope-title,\n .accessibility-width-title,\n .accessibility-signage-title,\n .accessibility-covering-title,\n .accessibility-exposure-title,\n .accessibility-advice-title,\n .accessibility-emergency-number-title {\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n padding: 12px 0px;\n }\n}\n\n.weather-container {\n iframe {\n width: 100%;\n }\n}\n\n.swiper-information-desks,\n.swiper-pois,\n.swiper-step,\n.swiper-touristic-content,\n.swiper-touristic-event {\n padding-right: 32px;\n padding-left: 32px;\n padding-bottom: 20px;\n}\n\n.swiper-step {\n padding-bottom: 4px;\n .swiper-wrapper {\n .swiper-slide {\n counter-increment: stepPoint;\n padding-top: 36px;\n }\n .swiper-slide:first-child:before {\n border-top-left-radius: var(--border-radius, 8px);\n border-bottom-left-radius: var(--border-radius, 8px);\n }\n .swiper-slide:before {\n content: '';\n position: absolute;\n top: 6px;\n height: 12px;\n width: calc(100% + 20px);\n background-color: var(--color-secondary-container);\n }\n .swiper-slide:last-child:before {\n border-top-right-radius: 8px;\n border-bottom-right-radius: 8px;\n width: 100%;\n }\n .swiper-slide:after {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n content: counter(stepPoint);\n width: 24px;\n height: 24px;\n background: var(--color-primary-app);\n border-radius: var(--border-radius, 12px);\n font-weight: bold;\n font-size: 0.8em;\n color: white;\n margin-left: calc(50% - 12px);\n top: 0px;\n }\n }\n}\n\n.divider {\n margin: 16px;\n border-top: 1px solid var(--color-outline);\n}\n\n.detail-bottom-space {\n min-height: var(--detail-bottom-space-height);\n height: var(--detail-bottom-space-height);\n width: 100%;\n background-color: var(--color-background);\n}\n\n.trek-images-container {\n display: flex;\n max-width: 100%;\n max-height: 400px;\n}\n\n.descent .icon {\n display: flex;\n transform: rotateX(180deg);\n}\n\n.swiper-horizontal > .swiper-scrollbar,\n.swiper-scrollbar.swiper-scrollbar-horizontal {\n --swiper-scrollbar-sides-offset: 32px;\n}\n\n.swiper-scrollbar-drag {\n background-color: var(--color-primary-app);\n}\n\n.sensitive-areas-description {\n font-size: 16px;\n}\n\n.step-container {\n .swiper-wrapper {\n padding-bottom: 16px;\n }\n}\n\n.trek-image-legend {\n position: absolute;\n top: 16px;\n font-size: 12px;\n color: #ffffff;\n width: 100%;\n text-align: center;\n}\n\n.trek-close-fullscreen-button {\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n z-index: 40;\n top: 16px;\n right: 16px;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius, 32px);\n box-shadow: var(--elevation-1);\n cursor: pointer;\n}\n\n.practice {\n .icon {\n display: flex;\n border-radius: 100%;\n padding: 2px;\n max-height: 20px;\n max-width: 20px;\n }\n}\n\n.offline-button {\n cursor: pointer;\n font-size: 14px;\n border: none;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: var(--border-radius, 8px);\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n &:hover {\n box-shadow: var(--elevation-2);\n }\n .icon {\n display: flex;\n }\n}\n\n.loader-container {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 120px;\n}\n\n.loader {\n width: 48px;\n height: 48px;\n border: 5px solid var(--color-primary-app);\n border-bottom-color: transparent;\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n animation: rotation 1s linear infinite;\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Build, Listen, getAssetPath, Fragment } from '@stencil/core';\nimport Swiper, { Navigation, Pagination, Keyboard, FreeMode, Mousewheel, Scrollbar } from 'swiper';\nimport { translate } from 'i18n/i18n';\nimport state, { onChange } from 'store/store';\nimport { Accessibilities, AccessibilityLevel, Difficulty, Labels, Practice, Route, Sources, Themes, Trek, Option, Options, Treks } from 'types/types';\nimport { formatDuration, formatLength, formatAscent, formatDescent, getCacheMode, imagesRegExp } from 'utils/utils';\nimport { getAllDataInStore, getDataInStore, writeOrUpdateDataInStore, writeOrUpdateFilesInStore, writeOrUpdateTilesInStore } from 'services/grw-db.service';\nimport { tileLayerOffline } from 'leaflet.offline';\nimport L from 'leaflet';\nimport { getCities, getDistricts, getPoisNearTrek, getSensitiveAreasNearTrek, getTrek, getTreksList } from 'services/treks.service';\nimport { getTouristicContentCategory, getTouristicContentsNearTrek } from 'services/touristic-contents.service';\nimport { getTouristicEventsNearTrek, getTouristicEventType } from 'services/touristic-events.service';\nimport CloseIcon from '../../assets/close.svg';\nimport TimelapseIcon from '../../assets/timelapse.svg';\nimport OpenInFullIcon from '../../assets/open_in_full.svg';\nimport MovingIcon from '../../assets/moving.svg';\nimport DownloadForOfflineIcon from '../../assets/download_for_offline.svg';\nimport DeleteIcon from '../../assets/delete.svg';\nimport DownloadIcon from '../../assets/download.svg';\nimport WarningIcon from '../../assets/warning.svg';\nimport BackpackIcon from '../../assets/backpack.svg';\nimport CallIcon from '../../assets/call.svg';\n\nconst observerOptions = { threshold: 0 };\nconst presentation: Option = {\n visible: true,\n indicator: false,\n ref: 'presentationOptionRef',\n};\nconst steps: Option = {\n visible: false,\n indicator: false,\n ref: 'stepsOptionRef',\n};\nconst description: Option = {\n visible: false,\n indicator: false,\n ref: 'descriptionOptionRef',\n};\nconst pois: Option = {\n visible: false,\n indicator: false,\n ref: 'poisOptionRef',\n};\nconst recommendations: Option = {\n visible: false,\n indicator: false,\n ref: 'recommendationsOptionRef',\n};\nconst sensitiveArea: Option = {\n visible: false,\n indicator: false,\n ref: 'sensitiveAreaOptionRef',\n};\nconst informationPlaces: Option = {\n visible: false,\n indicator: false,\n ref: 'informationPlacesOptionRef',\n};\nconst accessibility: Option = {\n visible: false,\n indicator: false,\n ref: 'accessibilityOptionRef',\n};\nconst touristicContents: Option = {\n visible: false,\n indicator: false,\n ref: 'touristicContentsOptionRef',\n};\nconst touristicEvents: Option = {\n visible: false,\n indicator: false,\n ref: 'touristicEventsOptionRef',\n};\nconst options: Options = {\n presentation,\n steps,\n description,\n pois,\n recommendations,\n sensitiveArea,\n informationPlaces,\n accessibility,\n touristicContents,\n touristicEvents,\n};\n\n@Component({\n tag: 'grw-trek-detail',\n styleUrl: 'grw-trek-detail.scss',\n shadow: true,\n})\nexport class GrwTrekDetail {\n swiperImages?: Swiper;\n swiperStep?: Swiper;\n swiperPois?: Swiper;\n swiperInformationDesks?: Swiper;\n swiperTouristicContents?: Swiper;\n swiperTouristicEvents?: Swiper;\n swiperImagesRef?: HTMLDivElement;\n prevElImagesRef?: HTMLDivElement;\n nextElImagesRef?: HTMLDivElement;\n paginationElImagesRef?: HTMLDivElement;\n swiperStepRef?: HTMLDivElement;\n swiperPoisRef?: HTMLDivElement;\n swiperInformationDesksRef?: HTMLDivElement;\n swiperTouristicContentsRef?: HTMLDivElement;\n swiperTouristicEventsRef?: HTMLDivElement;\n trekDetailContainerRef?: HTMLElement;\n presentationRef?: HTMLDivElement;\n descriptionRef?: HTMLDivElement;\n parkingRef?: HTMLDivElement;\n recommendationRef?: HTMLDivElement;\n sensitiveAreaRef?: HTMLDivElement;\n informationPlacesRef?: HTMLDivElement;\n poiRef?: HTMLDivElement;\n stepsRef?: HTMLDivElement;\n accessibilityRef?: HTMLDivElement;\n touristicContentsRef?: HTMLDivElement;\n touristicEventsRef?: HTMLDivElement;\n presentationOptionRef?: HTMLAnchorElement;\n stepsOptionRef?: HTMLAnchorElement;\n descriptionOptionRef?: HTMLAnchorElement;\n recommendationsOptionRef?: HTMLAnchorElement;\n accessibilityOptionRef?: HTMLAnchorElement;\n sensitiveAreaOptionRef?: HTMLAnchorElement;\n informationPlacesOptionRef?: HTMLAnchorElement;\n poisOptionRef?: HTMLAnchorElement;\n touristicContentsOptionRef?: HTMLAnchorElement;\n touristicEventsOptionRef?: HTMLAnchorElement;\n stepSwiperScrollbar?: HTMLDivElement;\n poisSwiperScrollbar?: HTMLDivElement;\n informationDesksContentsSwiperScrollbar?: HTMLDivElement;\n touristicContentsSwiperScrollbar?: HTMLDivElement;\n touristicEventsSwiperScrollbar?: HTMLDivElement;\n\n presentationObserver: IntersectionObserver;\n stepsObserver: IntersectionObserver;\n descriptionObserver: IntersectionObserver;\n recommendationsObserver: IntersectionObserver;\n parkingObserver: IntersectionObserver;\n sensitiveAreaObserver: IntersectionObserver;\n informationPlacesObserver: IntersectionObserver;\n accessibilityObserve: IntersectionObserver;\n poiObserver: IntersectionObserver;\n accessibilityObserver: IntersectionObserver;\n touristicContentObserver: IntersectionObserver;\n touristicEventObserver: IntersectionObserver;\n\n hasStep?: boolean;\n\n defaultOptions: Options;\n @Event() descriptionIsInViewport: EventEmitter<boolean>;\n @Event() parkingIsInViewport: EventEmitter<boolean>;\n @Event() sensitiveAreaIsInViewport: EventEmitter<boolean>;\n @Event() informationPlacesIsInViewport: EventEmitter<boolean>;\n @Event() poiIsInViewport: EventEmitter<boolean>;\n @Event() stepsIsInViewport: EventEmitter<boolean>;\n @Event() touristicContentsIsInViewport: EventEmitter<boolean>;\n @Event() touristicEventsIsInViewport: EventEmitter<boolean>;\n @Event() detailScrolled: EventEmitter<void>;\n @Event() parentTrekPress: EventEmitter<number>;\n @State() currentTrek: Trek;\n @State() difficulty: Difficulty;\n @State() route: Route;\n @State() practice: Practice;\n @State() themes: Themes;\n @State() labels: Labels;\n @State() sources: Sources;\n @State() accessibilities: Accessibilities;\n @State() accessibilityLevel: AccessibilityLevel;\n @State() displayFullscreen = false;\n @State() cities: string[];\n @State() options: Options;\n @State() offline = false;\n\n @Prop() emergencyNumber: number;\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorPrimaryContainer = '#eaddff';\n @Prop() colorOnPrimaryContainer = '#21005e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n @Prop() colorBackground = '#fef7ff';\n @Prop() rounded = true;\n\n @Prop() weather = false;\n @Prop() isLargeView = false;\n\n @Prop() defaultBackgroundLayerUrl;\n @Prop() defaultBackgroundLayerAttribution;\n\n @Prop() enableOffline = false;\n @Prop() globalTilesMinZoomOffline = 0;\n @Prop() globalTilesMaxZoomOffline = 11;\n @Prop() tilesMinZoomOffline = 12;\n @Prop() tilesMaxZoomOffline = 16;\n\n @Prop() grwApp = false;\n\n @Event() downloadConfirm: EventEmitter<number>;\n @Event() downloadedSuccessConfirm: EventEmitter<number>;\n @Event() downloadedErrorConfirm: EventEmitter<number>;\n\n @Event() deleteConfirm: EventEmitter<number>;\n @Event() deleteSuccessConfirm: EventEmitter<number>;\n @Event() deleteErrorConfirm: EventEmitter<number>;\n\n indicatorSelectedTrekOption = { translateX: null, width: null, backgroundSize: null, ref: null };\n\n @State() showTouristicContentDetailsModal = false;\n @State() showTouristicEventDetailsModal = false;\n @State() modalDetailsId = null;\n\n @Listen('closeDetailsModal', { target: 'window' })\n onCloseDetailsModal() {\n document.body.style.overflow = `visible`;\n state.currentTouristicContent = null;\n state.currentTouristicEvent = null;\n this.modalDetailsId = null;\n if (this.showTouristicContentDetailsModal) {\n this.showTouristicContentDetailsModal = false;\n } else {\n this.showTouristicEventDetailsModal = false;\n }\n document.body.getElementsByTagName('grw-details-modal')[0].remove();\n }\n\n @Listen('touristicEventCardPress', { target: 'window' })\n onTouristiceEventCardPress(touristicEventId) {\n if (!this.grwApp) {\n this.modalDetailsId = touristicEventId.detail;\n this.onOpenDetailsModal('TouristicContent');\n const modal = document.createElement('grw-details-modal');\n modal.setAttribute('font-family', this.fontFamily);\n modal.setAttribute('color-background', this.colorBackground);\n modal.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modal.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modal.setAttribute('rounded', this.rounded.toString());\n const modalContent = document.createElement('grw-touristic-event-detail');\n modalContent.setAttribute('font-family', this.fontFamily);\n modalContent.setAttribute('color-primary-app', this.colorPrimaryApp);\n modalContent.setAttribute('color-on-surface', this.colorOnSurface);\n modalContent.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modalContent.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modalContent.setAttribute('color-secondary-container', this.colorSecondaryContainer);\n modalContent.setAttribute('color-on-secondary-container', this.colorOnSecondaryContainer);\n modalContent.setAttribute('color-surface-container-low', this.colorSurfaceContainerLow);\n modalContent.setAttribute('color-background', this.colorBackground);\n modal.append(modalContent);\n document.body.append(modal);\n }\n }\n\n @Listen('touristicContentCardPress', { target: 'window' })\n onTouristicContentCardPress(touristicContentId) {\n if (!this.grwApp) {\n this.modalDetailsId = touristicContentId.detail;\n this.onOpenDetailsModal('touristicContent');\n const modal = document.createElement('grw-details-modal');\n modal.setAttribute('font-family', this.fontFamily);\n modal.setAttribute('color-background', this.colorBackground);\n modal.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modal.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modal.setAttribute('rounded', this.rounded.toString());\n const modalContent = document.createElement('grw-touristic-content-detail');\n modalContent.setAttribute('font-family', this.fontFamily);\n modalContent.setAttribute('color-primary-app', this.colorPrimaryApp);\n modalContent.setAttribute('color-on-surface', this.colorOnSurface);\n modalContent.setAttribute('color-primary-container', this.colorPrimaryContainer);\n modalContent.setAttribute('color-on-primary-container', this.colorOnPrimaryContainer);\n modalContent.setAttribute('color-secondary-container', this.colorSecondaryContainer);\n modalContent.setAttribute('color-on-secondary-container', this.colorOnSecondaryContainer);\n modalContent.setAttribute('color-surface-container-low', this.colorSurfaceContainerLow);\n modalContent.setAttribute('color-background', this.colorBackground);\n modal.append(modalContent);\n document.body.append(modal);\n }\n }\n\n onOpenDetailsModal(modalDetails: 'touristicContent' | 'TouristicContent') {\n document.body.style.overflow = `hidden`;\n if (modalDetails === 'touristicContent') {\n this.showTouristicContentDetailsModal = true;\n } else {\n this.showTouristicEventDetailsModal = true;\n }\n }\n\n componentDidUpdate() {\n this.handleObservers();\n this.handleSwipers();\n }\n\n handleSwipers() {\n if (this.swiperImagesRef && !this.swiperImages) {\n this.swiperImages = new Swiper(this.swiperImagesRef, {\n modules: [Navigation, Pagination, Keyboard, FreeMode, Mousewheel],\n navigation: {\n prevEl: this.prevElImagesRef,\n nextEl: this.nextElImagesRef,\n },\n pagination: { el: this.paginationElImagesRef },\n allowTouchMove: false,\n keyboard: false,\n loop: true,\n });\n if (this.swiperImagesRef) {\n this.swiperImagesRef.onfullscreenchange = () => {\n this.displayFullscreen = !this.displayFullscreen;\n this.displayFullscreen && !this.offline ? this.swiperImages.keyboard.enable() : this.swiperImages.keyboard.disable();\n };\n }\n }\n if (this.swiperStepRef && !this.swiperStep) {\n this.swiperStep = new Swiper(this.swiperStepRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n initialSlide: this.getCurrentStepIndex(),\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.stepSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperPoisRef && !this.swiperPois) {\n this.swiperPois = new Swiper(this.swiperPoisRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.poisSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperInformationDesksRef && !this.swiperInformationDesks) {\n this.swiperInformationDesks = new Swiper(this.swiperInformationDesksRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.informationDesksContentsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperTouristicContentsRef && !this.swiperTouristicContents) {\n this.swiperTouristicContents = new Swiper(this.swiperTouristicContentsRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.touristicContentsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n if (this.swiperTouristicEventsRef && !this.swiperTouristicEvents) {\n this.swiperTouristicEvents = new Swiper(this.swiperTouristicEventsRef, {\n modules: [FreeMode, Mousewheel, Scrollbar],\n slidesPerView: 1.5,\n spaceBetween: 20,\n grabCursor: true,\n freeMode: true,\n mousewheel: { forceToAxis: true },\n scrollbar: {\n draggable: true,\n hide: false,\n el: this.touristicEventsSwiperScrollbar,\n },\n breakpointsBase: 'container',\n breakpoints: {\n '540': {\n slidesPerView: 2.5,\n },\n '1024': {\n slidesPerView: 4,\n },\n },\n loop: false,\n });\n }\n }\n\n handleObservers() {\n if (this.presentationRef && !this.presentationObserver) {\n this.presentationObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.options = { ...this.options, presentation: { ...this.defaultOptions.presentation, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.presentationObserver.observe(this.presentationRef);\n }\n if (this.stepsRef && !this.stepsObserver) {\n this.stepsObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.stepsIsInViewport.emit(isIntersecting);\n this.options = { ...this.options, steps: { ...this.defaultOptions.steps, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.stepsObserver.observe(this.stepsRef);\n }\n if (this.descriptionRef && !this.descriptionObserver) {\n this.descriptionObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.descriptionIsInViewport.emit(isIntersecting);\n this.options = { ...this.options, description: { ...this.defaultOptions.description, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.descriptionObserver.observe(this.descriptionRef);\n }\n if (this.recommendationRef && !this.recommendationsObserver) {\n this.recommendationsObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.options = { ...this.options, recommendations: { ...this.defaultOptions.recommendations, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.recommendationsObserver.observe(this.recommendationRef);\n }\n if (this.parkingRef && !this.parkingObserver) {\n this.parkingObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.parkingIsInViewport.emit(isIntersecting);\n },\n observerOptions,\n );\n this.parkingObserver.observe(this.parkingRef);\n }\n\n if (this.sensitiveAreaRef && !this.sensitiveAreaObserver) {\n this.sensitiveAreaObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.sensitiveAreaIsInViewport.emit(isIntersecting);\n this.options = { ...this.options, sensitiveArea: { ...this.defaultOptions.sensitiveArea, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.sensitiveAreaObserver.observe(this.sensitiveAreaRef);\n }\n\n if (this.informationPlacesRef && !this.informationPlacesObserver) {\n this.informationPlacesObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.informationPlacesIsInViewport.emit(isIntersecting);\n this.options = { ...this.options, informationPlaces: { ...this.defaultOptions.informationPlaces, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.informationPlacesObserver.observe(this.informationPlacesRef);\n }\n\n if (this.accessibilityRef && !this.accessibilityObserver) {\n this.accessibilityObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.options = { ...this.options, accessibility: { ...this.defaultOptions.accessibility, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.accessibilityObserver.observe(this.accessibilityRef);\n }\n\n if (this.poiRef && !this.poiObserver) {\n this.poiObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.poiIsInViewport.emit(isIntersecting);\n this.options = { ...this.options, pois: { ...this.defaultOptions.pois, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.poiObserver.observe(this.poiRef);\n }\n\n if (this.touristicContentsRef && !this.touristicContentObserver) {\n this.touristicContentObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.touristicContentsIsInViewport.emit(isIntersecting);\n this.options = { ...this.options, touristicContents: { ...this.defaultOptions.touristicContents, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.touristicContentObserver.observe(this.touristicContentsRef);\n }\n if (this.touristicEventsRef && !this.touristicEventObserver) {\n this.touristicEventObserver = new IntersectionObserver(\n entries => {\n const isIntersecting = entries[0].isIntersecting;\n this.touristicEventsIsInViewport.emit(isIntersecting);\n this.options = { ...this.options, touristicEvents: { ...this.defaultOptions.touristicEvents, indicator: isIntersecting } };\n this.handleIndicatorSelectedTrekOption();\n },\n observerOptions,\n );\n this.touristicEventObserver.observe(this.touristicEventsRef);\n }\n }\n\n componentDidLoad() {\n this.handleObservers();\n this.handleSwipers();\n this.setupScrollListener();\n }\n\n setupScrollListener() {\n const container = this.trekDetailContainerRef;\n if (container) {\n const onScroll = () => {\n this.detailScrolled.emit();\n container.removeEventListener('scroll', onScroll);\n };\n container.addEventListener('scroll', onScroll);\n } else {\n const onScroll = () => {\n this.detailScrolled.emit();\n window.removeEventListener('scroll', onScroll);\n };\n window.addEventListener('scroll', onScroll);\n }\n }\n\n async connectedCallback() {\n if (state.currentTrek) {\n this.offline = state.currentTrek.offline;\n this.defaultOptions = this.handleOptions();\n this.options = { ...this.defaultOptions, presentation: { ...this.defaultOptions.presentation, indicator: true } };\n this.difficulty = state.difficulties.find(difficulty => difficulty.id === state.currentTrek.difficulty);\n this.route = state.routes.find(route => route.id === state.currentTrek.route);\n this.practice = state.practices.find(practice => practice.id === state.currentTrek.practice);\n this.themes = state.themes.filter(theme => state.currentTrek.themes.includes(theme.id));\n this.labels = state.labels.filter(label => state.currentTrek.labels.includes(label.id));\n this.sources = state.sources.filter(source => state.currentTrek.source.includes(source.id));\n this.accessibilities = state.accessibilities.filter(accessibility => state.currentTrek.accessibilities.includes(accessibility.id));\n if (state.accessibilitiesLevel) {\n this.accessibilityLevel = state.accessibilitiesLevel.find(accessibilityLevel => state.currentTrek.accessibility_level === accessibilityLevel.id);\n }\n if (state.cities) {\n this.cities = state.currentTrek.cities.map(currentCity => state.cities.find(city => city.id === currentCity)?.name);\n }\n this.hasStep = state.currentTrek.children.length > 0;\n this.currentTrek = state.currentTrek;\n }\n\n onChange('currentTrek', async () => {\n if (state.currentTrek) {\n this.offline = state.currentTrek.offline;\n this.defaultOptions = this.handleOptions();\n this.options = { ...this.defaultOptions, presentation: { ...this.defaultOptions.presentation, indicator: true } };\n this.difficulty = state.difficulties.find(difficulty => difficulty.id === state.currentTrek.difficulty);\n this.route = state.routes.find(route => route.id === state.currentTrek.route);\n this.practice = state.practices.find(practice => practice.id === state.currentTrek.practice);\n this.themes = state.themes.filter(theme => state.currentTrek.themes.includes(theme.id));\n this.labels = state.labels.filter(label => state.currentTrek.labels.includes(label.id));\n this.sources = state.sources.filter(source => state.currentTrek.source.includes(source.id));\n this.accessibilities = state.accessibilities.filter(accessibility => state.currentTrek.accessibilities.includes(accessibility.id));\n if (state.accessibilitiesLevel) {\n this.accessibilityLevel = state.accessibilitiesLevel.find(accessibilityLevel => state.currentTrek.accessibility_level === accessibilityLevel.id);\n }\n if (state.cities) {\n this.cities = state.currentTrek.cities.map(currentCity => state.cities.find(city => city.id === currentCity)?.name);\n }\n this.hasStep = state.currentTrek.children.length > 0;\n this.currentTrek = state.currentTrek;\n }\n });\n }\n\n disconnectedCallback() {\n this.presentationObserver && this.presentationObserver.disconnect();\n this.stepsObserver && this.stepsObserver.disconnect();\n this.descriptionObserver && this.descriptionObserver.disconnect();\n this.recommendationsObserver && this.recommendationsObserver.disconnect();\n this.parkingObserver && this.parkingObserver.disconnect();\n this.sensitiveAreaObserver && this.sensitiveAreaObserver.disconnect();\n this.informationPlacesObserver && this.informationPlacesObserver.disconnect();\n this.accessibilityObserver && this.accessibilityObserver.disconnect();\n this.poiObserver && this.poiObserver.disconnect();\n this.accessibilityObserver && this.accessibilityObserver.disconnect();\n this.touristicContentObserver && this.touristicContentObserver.disconnect();\n this.touristicEventObserver && this.touristicEventObserver.disconnect();\n }\n\n handleOptions() {\n return {\n ...options,\n presentation: { ...presentation },\n steps: { ...steps, visible: Boolean(state.parentTrek) },\n description: { ...description, visible: Boolean(state.currentTrek.description) },\n pois: { ...pois, visible: state.poisData > 0 },\n recommendations: { ...recommendations, visible: Boolean(state.currentTrek.advice || (this.labels && this.labels.length > 0)) },\n sensitiveArea: { ...sensitiveArea, visible: Boolean(state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0) },\n informationPlaces: {\n ...informationPlaces,\n visible: Boolean(\n state.currentInformationDesks &&\n state.currentInformationDesks.filter(currentInformationDesks => state.currentTrek.information_desks.includes(currentInformationDesks.id)).length > 0,\n ),\n },\n accessibility: {\n ...accessibility,\n visible: Boolean(\n state.currentTrek.disabled_infrastructure ||\n (this.accessibilities && this.accessibilities.length > 0) ||\n state.currentTrek.accessibility_level ||\n state.currentTrek.accessibility_slope ||\n state.currentTrek.accessibility_width ||\n state.currentTrek.accessibility_signage ||\n state.currentTrek.accessibility_covering ||\n state.currentTrek.accessibility_exposure ||\n state.currentTrek.accessibility_advice ||\n this.emergencyNumber,\n ),\n },\n touristicContents: { ...touristicContents, visible: state.touristicContentsData > 0 },\n touristicEvents: { ...touristicEvents, visible: state.touristicEventsData > 0 },\n };\n }\n\n handleFullscreen(close: boolean = false) {\n if (!close) {\n if (this.currentTrek.attachments && this.currentTrek.attachments[0] && this.currentTrek.attachments[0].url) {\n this.swiperImagesRef.requestFullscreen();\n }\n } else {\n (document as any).exitFullscreen();\n }\n }\n\n handleIndicatorSelectedTrekOption() {\n let currentOption: Option;\n let currentOptionIndex = -1;\n\n const options: Option[] = Object.values(this.options);\n\n for (let i = 0; i < options.length; i++) {\n if (options[i].indicator) {\n currentOption = options[i];\n currentOptionIndex = i;\n break;\n }\n }\n\n if (currentOption && this[currentOption.ref]) {\n let previousVisibleOptions = 0;\n let previousWidthOptions = 0;\n for (let i = 0; i < currentOptionIndex; i++) {\n if (options[i].visible) {\n previousVisibleOptions += 1;\n previousWidthOptions += this[options[i].ref].clientWidth;\n }\n }\n const elementWidth = this[currentOption.ref].clientWidth;\n this.indicatorSelectedTrekOption = {\n translateX: `${previousWidthOptions + 16 * previousVisibleOptions - elementWidth / 2}px`,\n width: `${elementWidth * 2}px`,\n backgroundSize: `${elementWidth}px 100%`,\n ref: currentOption.ref,\n };\n }\n }\n\n handleScrollTo(element: HTMLDivElement) {\n const scrollbarFromElement = this.trekDetailContainerRef.scrollHeight > this.trekDetailContainerRef.clientHeight;\n if (scrollbarFromElement) {\n this.trekDetailContainerRef.scrollTo({ top: element.offsetTop - 64 });\n } else {\n window.scrollTo({ top: element.offsetTop - 64 });\n }\n }\n\n getCurrentStepIndex(): number {\n return state.currentTrekSteps ? state.currentTrekSteps.findIndex(step => step.id === this.currentTrek.id) : 0;\n }\n\n async downloadGlobalTiles(url, attribution) {\n const offlineLayer = tileLayerOffline(url, { attribution });\n\n const treksDepartureCoordinates = [];\n\n if (state.treks) {\n for (const trek of state.treks) {\n treksDepartureCoordinates.push(trek.departure_geom);\n }\n }\n\n const bounds = L.latLngBounds(treksDepartureCoordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n\n await writeOrUpdateTilesInStore(offlineLayer, bounds, this.globalTilesMinZoomOffline, this.globalTilesMaxZoomOffline);\n }\n\n async downloadTrekTiles(url, attribution) {\n const offlineLayer = tileLayerOffline(url, { attribution });\n\n const bounds = L.latLngBounds(this.currentTrek.geometry.coordinates.map(coordinate => [coordinate[1], coordinate[0]]));\n\n await writeOrUpdateTilesInStore(offlineLayer, bounds, this.tilesMinZoomOffline, this.tilesMaxZoomOffline);\n }\n\n async downloadTrek() {\n try {\n // download treks list data\n const controller = new AbortController();\n const signal = controller.signal;\n const init: RequestInit = { cache: getCacheMode(), signal: signal };\n const offlineTreks = (await getAllDataInStore('treks')).filter(trek => trek.offline === true);\n let treks;\n if (!state.treks) {\n const treksList = await getTreksList(\n state.api,\n state.language,\n state.inBboxFromProviders,\n state.citiesFromProviders,\n state.districts,\n state.structuresFromProviders,\n state.themesFromProviders,\n state.portalsFromProviders,\n state.routesFromProviders,\n state.practicesFromProviders,\n state.labelsFromProviders,\n init,\n );\n state.treks = (await treksList.json()).results;\n }\n treks = state.treks;\n treks = treks.filter(trek => offlineTreks.findIndex(offlineTrek => offlineTrek.id === trek.id) === -1);\n\n if (!state.districts) {\n const districtsList = await getDistricts(state.api, state.language, init);\n state.districts = (await districtsList.json()).results;\n }\n\n await writeOrUpdateDataInStore('treks', treks);\n await writeOrUpdateDataInStore('districts', state.districts);\n\n // download global tiles\n await this.downloadGlobalTiles(this.defaultBackgroundLayerUrl, this.defaultBackgroundLayerAttribution);\n\n // download trek tiles\n await this.downloadTrekTiles(this.defaultBackgroundLayerUrl, this.defaultBackgroundLayerAttribution);\n\n // download global medias\n await writeOrUpdateFilesInStore(state.difficulties, imagesRegExp);\n await writeOrUpdateFilesInStore(state.routes, imagesRegExp);\n await writeOrUpdateFilesInStore(state.practices, imagesRegExp);\n await writeOrUpdateFilesInStore(state.themes, imagesRegExp);\n await writeOrUpdateFilesInStore(state.labels, imagesRegExp);\n await writeOrUpdateFilesInStore(state.districts, imagesRegExp);\n await writeOrUpdateFilesInStore(state.sources, imagesRegExp);\n await writeOrUpdateFilesInStore(state.accessibilities, imagesRegExp);\n\n await writeOrUpdateFilesInStore(state.currentInformationDesks, imagesRegExp);\n await writeOrUpdateFilesInStore(state.networks, imagesRegExp);\n\n // download trek images\n await writeOrUpdateFilesInStore(this.currentTrek, imagesRegExp, true, ['url']);\n\n // download trek data\n await writeOrUpdateDataInStore('difficulties', state.difficulties);\n await writeOrUpdateDataInStore('routes', state.routes);\n await writeOrUpdateDataInStore(\n 'practices',\n state.practices.map(practice => ({ ...practice, selected: false })),\n );\n await writeOrUpdateDataInStore('themes', state.themes);\n await writeOrUpdateDataInStore('accessibilities', state.accessibilities);\n await writeOrUpdateDataInStore('ratings', state.ratings);\n await writeOrUpdateDataInStore('ratingsScale', state.ratingsScale);\n await writeOrUpdateDataInStore('sensitiveAreas', state.currentSensitiveAreas);\n await writeOrUpdateDataInStore('labels', state.labels);\n await writeOrUpdateDataInStore('sources', state.sources);\n await writeOrUpdateDataInStore('accessibilitiesLevel', state.accessibilitiesLevel);\n await writeOrUpdateDataInStore('networks', state.networks);\n await writeOrUpdateDataInStore('signages', state.currentSignages);\n await writeOrUpdateDataInStore('informationDesks', state.currentInformationDesks);\n await writeOrUpdateFilesInStore(state.currentInformationDesks, imagesRegExp, true);\n\n const cities = (await getCities(state.api, state.language, init).then(response => response.json())).results;\n await writeOrUpdateDataInStore('cities', cities);\n\n let currentPois = [];\n let trekTouristicContents = [];\n let trekTouristicEvents = [];\n if (state.poisData > 0) {\n currentPois = (await getPoisNearTrek(state.api, state.language, this.currentTrek.id, init).then(response => response.json())).results;\n const poiTypes = (await fetch(`${state.api}poi_type/?language=${state.language}&fields=id,pictogram`, init).then(response => response.json())).results;\n await writeOrUpdateDataInStore('pois', currentPois);\n await writeOrUpdateDataInStore('poiTypes', poiTypes);\n await writeOrUpdateFilesInStore(currentPois, imagesRegExp, true, ['url']);\n await writeOrUpdateFilesInStore(poiTypes, imagesRegExp);\n }\n if (state.touristicContentsData > 0) {\n trekTouristicContents = (await getTouristicContentsNearTrek(state.api, state.language, this.currentTrek.id, init).then(response => response.json())).results;\n const touristicContentCategories = (await getTouristicContentCategory(state.api, state.language, null, init).then(response => response.json())).results;\n trekTouristicContents.forEach(trekTouristicContent => {\n trekTouristicContent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicContents', trekTouristicContents);\n await writeOrUpdateDataInStore('touristicContentCategories', touristicContentCategories);\n await writeOrUpdateFilesInStore(trekTouristicContents, imagesRegExp, true, ['url']);\n await writeOrUpdateFilesInStore(touristicContentCategories, imagesRegExp);\n }\n if (state.touristicEventsData > 0) {\n trekTouristicEvents = (await getTouristicEventsNearTrek(state.api, state.language, this.currentTrek.id, init).then(response => response.json())).results;\n const touristicEventTypes = (await getTouristicEventType(state.api, state.language, null, init).then(response => response.json())).results;\n trekTouristicEvents.forEach(trekTouristicEvent => {\n trekTouristicEvent.offline = true;\n });\n await writeOrUpdateDataInStore('touristicEvents', trekTouristicEvents);\n await writeOrUpdateDataInStore('touristicEventTypes', touristicEventTypes);\n await writeOrUpdateFilesInStore(touristicEventTypes, imagesRegExp);\n await writeOrUpdateFilesInStore(trekTouristicEvents, imagesRegExp, true, ['url']);\n }\n\n // download itinerancy\n if (this.currentTrek.children && this.currentTrek.children.length > 0) {\n // fetch and store children treks\n const steps: number[] = [];\n steps.push(...this.currentTrek.children);\n const stepRequests = [];\n const stepsTouristicContentsRequests = [];\n const stepsTouristicEventsRequests = [];\n const stepsPoisRequests = [];\n const stepsSensitiveAreasRequests = [];\n\n steps.forEach(stepId => {\n stepRequests.push(getTrek(state.api, state.language, stepId, init));\n stepsTouristicContentsRequests.push(getTouristicContentsNearTrek(state.api, state.language, stepId, init));\n stepsTouristicEventsRequests.push(getTouristicEventsNearTrek(state.api, state.language, stepId, init));\n stepsPoisRequests.push(getPoisNearTrek(state.api, state.language, stepId, init));\n stepsSensitiveAreasRequests.push(getSensitiveAreasNearTrek(state.api, state.language, stepId, init));\n });\n\n const trekSteps: Treks = await Promise.all([...stepRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n\n const stepsTouristicContentsResponses = await Promise.all([...stepsTouristicContentsRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n const stepsTouristicEventsResponses = await Promise.all([...stepsTouristicEventsRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n const stepsPoisResponses = await Promise.all([...stepsPoisRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n const stepsSensitiveAreasResponses = await Promise.all([...stepsSensitiveAreasRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n\n for (let index = 0; index < trekSteps.length; index++) {\n trekSteps[index].offline = true;\n trekSteps[index].pois = stepsPoisResponses[index].results.map(poi => poi.id);\n trekSteps[index].touristicContents = stepsTouristicContentsResponses[index].results.map(trekTouristicContent => trekTouristicContent.id);\n trekSteps[index].touristicEvents = stepsTouristicEventsResponses[index].results.map(trekTouristicEvent => trekTouristicEvent.id);\n trekSteps[index].sensitiveAreas = stepsSensitiveAreasResponses[index].results.map(currentSensitiveArea => currentSensitiveArea.id);\n await writeOrUpdateDataInStore('treks', [trekSteps[index]]);\n await writeOrUpdateFilesInStore(trekSteps[index], imagesRegExp, true, ['url']);\n }\n }\n\n await writeOrUpdateDataInStore('treks', [\n {\n ...this.currentTrek,\n offline: true,\n pois: currentPois.map(poi => poi.id),\n signages: state.currentSignages.map(signage => signage.id),\n touristicContents: trekTouristicContents.map(trekTouristicContent => trekTouristicContent.id),\n touristicEvents: trekTouristicEvents.map(trekTouristicEvent => trekTouristicEvent.id),\n sensitiveAreas: state.currentSensitiveAreas ? state.currentSensitiveAreas.map(currentSensitiveArea => currentSensitiveArea.id) : [],\n },\n ]);\n state.treks.find(trek => trek.id === this.currentTrek.id).offline = true;\n if (!state.currentTreks) {\n state.currentTreks = state.treks;\n }\n state.currentTreks.find(trek => trek.id === this.currentTrek.id).offline = true;\n if (this.swiperImages) {\n this.swiperImages.slideTo(0);\n }\n\n this.offline = true;\n this.downloadedSuccessConfirm.emit(this.currentTrek.id);\n } catch (error) {\n this.downloadedErrorConfirm.emit(this.currentTrek.id);\n }\n }\n\n async deleteTrek() {\n try {\n const treksInStore: Treks = [];\n const trekInStore = await getDataInStore('treks', this.currentTrek.id);\n this.deleteOfflineTrekProperties(trekInStore);\n treksInStore.push(trekInStore);\n if (this.currentTrek.children.length > 0) {\n for (let index = 0; index < this.currentTrek.children.length; index++) {\n const trekInStore = await getDataInStore('treks', this.currentTrek.children[index]);\n this.deleteOfflineTrekProperties(trekInStore);\n treksInStore.push(trekInStore);\n }\n }\n await writeOrUpdateDataInStore('treks', treksInStore);\n\n if (state.treks) {\n delete state.treks.find(trek => trek.id === this.currentTrek.id).offline;\n\n if (!state.currentTreks) {\n state.currentTreks = state.treks;\n }\n delete state.currentTreks.find(trek => trek.id === this.currentTrek.id).offline;\n }\n\n if (state.parentTrek) {\n delete state.parentTrek.offline;\n }\n\n if (state.currentTrekSteps) {\n state.currentTrekSteps.forEach(currentTrekStep => {\n delete currentTrekStep.offline;\n });\n }\n\n this.offline = false;\n this.deleteSuccessConfirm.emit(this.currentTrek.id);\n } catch (error) {\n this.deleteErrorConfirm.emit(this.currentTrek.id);\n }\n }\n\n displayDownloadModal() {\n this.downloadConfirm.emit();\n }\n\n displayDeleteModal() {\n this.deleteConfirm.emit();\n }\n\n @Listen('downloadPress', { target: 'window' })\n onDownloadPress() {\n this.downloadTrek();\n }\n\n @Listen('deletePress', { target: 'window' })\n onDeletePress() {\n this.deleteTrek();\n }\n\n deleteOfflineTrekProperties(trekInStore) {\n delete trekInStore.descent;\n delete trekInStore.geometry;\n delete trekInStore.gpx;\n delete trekInStore.kml;\n delete trekInStore.pdf;\n delete trekInStore.parking_location;\n delete trekInStore.arrival;\n delete trekInStore.ambiance;\n delete trekInStore.access;\n delete trekInStore.public_transport;\n delete trekInStore.advice;\n delete trekInStore.advised_parking;\n delete trekInStore.gear;\n delete trekInStore.source;\n delete trekInStore.points_reference;\n delete trekInStore.disabled_infrastructure;\n delete trekInStore.accessibility_level;\n delete trekInStore.accessibility_slope;\n delete trekInStore.accessibility_width;\n delete trekInStore.accessibility_signage;\n delete trekInStore.accessibility_covering;\n delete trekInStore.accessibility_exposure;\n delete trekInStore.accessibility_advice;\n delete trekInStore.ratings;\n delete trekInStore.ratings_description;\n delete trekInStore.children;\n delete trekInStore.networks;\n delete trekInStore.web_links;\n delete trekInStore.update_datetime;\n delete trekInStore.information_desks;\n delete trekInStore.pois;\n delete trekInStore.touristicContents;\n delete trekInStore.touristicEvents;\n delete trekInStore.sensitiveAreas;\n delete trekInStore.offline;\n }\n\n getDepartureCityCode() {\n const departureCity = state.cities.find(currentCity => currentCity.id === state.currentTrek.departure_city);\n return departureCity.code ?? departureCity.id;\n }\n\n render() {\n const defaultImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/default-image.svg`);\n const displayPaginationAndNavigation = (this.currentTrek && this.currentTrek.attachments.filter(attachment => attachment.type === 'image').length > 1) || this.offline;\n\n return (\n <Host\n style={{\n '--font-family': this.fontFamily,\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-secondary-container': this.colorSecondaryContainer,\n '--color-on-secondary-container': this.colorOnSecondaryContainer,\n '--color-background': this.colorBackground,\n '--detail-bottom-space-height': this.isLargeView\n ? state.languages && state.languages.length > 1\n ? '44px'\n : '12px'\n : state.languages && state.languages.length > 1\n ? '164px'\n : '124px',\n }}\n >\n {this.currentTrek && (\n <div part=\"trek-options\" class=\"trek-options\">\n <a\n part=\"trek-option\"\n class={`presentation trek-option${this.indicatorSelectedTrekOption.ref === 'presentationOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.presentationOptionRef = el)}\n onClick={() => this.handleScrollTo(this.presentationRef)}\n >\n {translate[state.language].options.presentation}\n </a>\n {this.options.steps.visible && (\n <a\n part=\"trek-option\"\n class={`steps trek-option${this.indicatorSelectedTrekOption.ref === 'stepsOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.stepsOptionRef = el)}\n onClick={() => this.handleScrollTo(this.stepsRef)}\n >\n {translate[state.language].options.steps}\n </a>\n )}\n {this.options.description.visible && (\n <a\n part=\"trek-option\"\n class={`description trek-option${this.indicatorSelectedTrekOption.ref === 'descriptionOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.descriptionOptionRef = el)}\n onClick={() => this.handleScrollTo(this.descriptionRef)}\n >\n {translate[state.language].options.description}\n </a>\n )}\n {this.options.pois.visible && (\n <a\n part=\"trek-option\"\n class={`pois trek-option${this.indicatorSelectedTrekOption.ref === 'poisOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.poisOptionRef = el)}\n onClick={() => this.handleScrollTo(this.poiRef)}\n >\n {translate[state.language].options.pois}\n </a>\n )}\n {this.options.recommendations.visible && (\n <a\n part=\"trek-option\"\n class={`recommendations trek-option${this.indicatorSelectedTrekOption.ref === 'recommendationsOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.recommendationsOptionRef = el)}\n onClick={() => this.handleScrollTo(this.recommendationRef)}\n >\n {translate[state.language].options.recommendations}\n </a>\n )}\n {this.options.sensitiveArea.visible && (\n <a\n part=\"trek-option\"\n class={`sensitive-areas trek-option${this.indicatorSelectedTrekOption.ref === 'sensitiveAreaOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.sensitiveAreaOptionRef = el)}\n onClick={() => this.handleScrollTo(this.sensitiveAreaRef)}\n >\n {translate[state.language].options.environmentalSensitiveAreas}\n </a>\n )}\n {this.options.informationPlaces.visible && (\n <a\n part=\"trek-option\"\n class={`information-places trek-option${this.indicatorSelectedTrekOption.ref === 'informationPlacesOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.informationPlacesOptionRef = el)}\n onClick={() => this.handleScrollTo(this.informationPlacesRef)}\n >\n {translate[state.language].options.informationPlaces}\n </a>\n )}\n {this.options.accessibility.visible && (\n <a\n part=\"trek-option\"\n class={`accessibility trek-option${this.indicatorSelectedTrekOption.ref === 'accessibilityOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.accessibilityOptionRef = el)}\n onClick={() => this.handleScrollTo(this.accessibilityRef)}\n >\n {translate[state.language].options.accessibility}\n </a>\n )}\n {this.options.touristicContents.visible && (\n <a\n part=\"trek-option\"\n class={`touristic-content trek-option${this.indicatorSelectedTrekOption.ref === 'touristicContentsOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.touristicContentsOptionRef = el)}\n onClick={() => this.handleScrollTo(this.touristicContentsRef)}\n >\n {translate[state.language].options.touristicContents}\n </a>\n )}\n {this.options.touristicEvents.visible && (\n <a\n part=\"trek-option\"\n class={`touristic-event trek-option${this.indicatorSelectedTrekOption.ref === 'touristicEventsOptionRef' ? ' selected-trek-option' : ''}`}\n ref={el => (this.touristicEventsOptionRef = el)}\n onClick={() => this.handleScrollTo(this.touristicEventsRef)}\n >\n {translate[state.language].options.touristicEvents}\n </a>\n )}\n {this.presentationOptionRef && (\n <span\n part=\"trek-indicator-selected-trek-option\"\n class=\"trek-indicator-selected-trek-option\"\n style={{\n transform: `translateX(${this.indicatorSelectedTrekOption.translateX})`,\n width: this.indicatorSelectedTrekOption.width,\n backgroundSize: this.indicatorSelectedTrekOption.backgroundSize,\n }}\n ></span>\n )}\n </div>\n )}\n {this.currentTrek && (\n <div part=\"trek-detail-container\" class=\"trek-detail-container\" ref={el => (this.trekDetailContainerRef = el)}>\n <div part=\"trek-images\" class=\"trek-images-container\" ref={el => (this.presentationRef = el)}>\n <div part=\"swiper-images\" class=\"swiper swiper-images\" ref={el => (this.swiperImagesRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {this.currentTrek.attachments.filter(attachment => attachment.type === 'image').length > 0 ? (\n this.currentTrek.attachments\n .filter(attachment => attachment.type === 'image')\n .map(attachment => {\n const legend = [attachment.legend, attachment.author].filter(Boolean).join(' - ');\n return (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n {this.displayFullscreen && (\n <div part=\"trek-close-fullscreen-button\" class=\"trek-close-fullscreen-button\" onClick={() => this.handleFullscreen(true)}>\n <span part=\"trek-close-fullcreen-icon\" class=\"trek-close-fullcreen-icon\" innerHTML={CloseIcon}></span>\n </div>\n )}\n <div part=\"trek-image-legend\" class=\"trek-image-legend\">\n {legend}\n </div>\n <img\n part=\"trek-img\"\n class=\"trek-img\"\n src={this.offline && attachment.thumbnail !== '' ? attachment.thumbnail : attachment.url}\n loading=\"lazy\"\n onClick={() => this.handleFullscreen()}\n /* @ts-ignore */\n onerror={event => {\n event.target.onerror = null;\n event.target.className = 'trek-img default-trek-img';\n event.target.src = defaultImageSrc;\n }}\n alt={attachment.legend}\n />\n </div>\n );\n })\n ) : (\n <img part=\"trek-img\" class=\"trek-img default-trek-img\" src={defaultImageSrc} loading=\"lazy\" alt=\"\" />\n )}\n </div>\n <div\n style={{ display: 'block', visibility: displayPaginationAndNavigation ? 'visible' : 'hidden' }}\n part=\"swiper-pagination\"\n class=\"swiper-pagination\"\n ref={el => (this.paginationElImagesRef = el)}\n ></div>\n <div\n style={{ display: 'flex', visibility: displayPaginationAndNavigation ? 'visible' : 'hidden' }}\n part=\"swiper-button-prev\"\n class=\"swiper-button-prev\"\n ref={el => (this.prevElImagesRef = el)}\n ></div>\n <div\n style={{ display: 'flex', visibility: displayPaginationAndNavigation ? 'visible' : 'hidden' }}\n part=\"swiper-button-next\"\n class=\"swiper-button-next\"\n ref={el => (this.nextElImagesRef = el)}\n ></div>\n </div>\n </div>\n <div part=\"trek-name\" class=\"trek-name\">\n {this.currentTrek.name}\n </div>\n {this.themes.length > 0 && (\n <div part=\"themes-container\" class=\"themes-container\">\n {this.themes.map(theme => (\n <div part=\"theme\" class=\"theme\">\n {theme.label}\n </div>\n ))}\n </div>\n )}\n <div part=\"sub-container\" class=\"sub-container\">\n <div part=\"icons-labels-container\" class=\"icons-labels-container\">\n {this.difficulty && (\n <div part=\"icon-label\" class=\"icon-label difficulty\">\n {this.difficulty.pictogram && <img part=\"icon\" class=\"icon\" src={this.difficulty.pictogram} alt=\"\" />}\n <span part=\"label\" class=\"label\">\n {this.difficulty.label}\n </span>\n </div>\n )}\n <div part=\"icon-label\" class=\"icon-label duration\">\n <span part=\"icon\" class=\"icon\" innerHTML={TimelapseIcon}></span>\n <span part=\"label\" class=\"label\">\n {formatDuration(this.currentTrek?.duration)}\n </span>\n </div>\n <div part=\"icon-label\" class=\"icon-label route\">\n {this.route?.pictogram && <img part=\"icon\" class=\"icon\" src={this.route.pictogram} alt=\"\" />}\n <span part=\"label\" class=\"label\">\n {this.route?.route}\n </span>\n </div>\n <div part=\"icon-label\" class=\"icon-label length\">\n <span part=\"icon\" class=\"icon\" innerHTML={OpenInFullIcon}></span>\n <span part=\"label\" class=\"label\">\n {formatLength(this.currentTrek.length_2d)}\n </span>\n </div>\n {this.currentTrek.ascent && (\n <div part=\"icon-label\" class=\"icon-label ascent\">\n <span part=\"icon\" class=\"icon\" innerHTML={MovingIcon}></span>\n <span part=\"label\" class=\"label\">\n {formatAscent(this.currentTrek.ascent)}\n </span>\n </div>\n )}\n {this.currentTrek.descent && (\n <div part=\"icon-label\" class=\"icon-label descent\">\n <span part=\"icon\" class=\"icon\" innerHTML={MovingIcon}></span>\n <span part=\"label\" class=\"label\">\n {formatDescent(this.currentTrek.descent)}\n </span>\n </div>\n )}\n <div part=\"icon-label\" class=\"icon-label practice\">\n {this.practice?.pictogram && <img part=\"icon\" class=\"icon\" src={this.practice.pictogram} alt=\"\" />}\n <span part=\"label\" class=\"label\">\n {this.practice?.name}\n </span>\n </div>\n <div part=\"icon-label\" class=\"icon-label networks\">\n {this.currentTrek.networks?.map(networkId => {\n const currentNetwork = state.networks?.find(network => network.id === networkId);\n if (!currentNetwork) return null;\n return (\n <div part=\"network\" class=\"network\">\n <img part=\"icon\" class=\"icon\" src={currentNetwork.pictogram} alt=\"\" />\n <span part=\"label\" class=\"label\">\n {currentNetwork.label}\n </span>\n </div>\n );\n })}\n </div>\n {this.currentTrek.ratings &&\n state.ratings &&\n state.ratingsScale &&\n this.currentTrek.ratings.map(trekRating => {\n const rating = state.ratings.find(r => r.id === trekRating);\n if (!rating) return null;\n const scale = state.ratingsScale.find(rs => rs.id === rating.scale);\n if (!scale) return null;\n return (\n <div part=\"row\" class=\"row\">\n {`${scale.name} : ${rating.name}`}\n </div>\n );\n })}\n {this.currentTrek.ratings_description && this.currentTrek.ratings_description !== '' && (\n <div part=\"row\" class=\"row\" innerHTML={this.currentTrek.ratings_description}></div>\n )}\n </div>\n </div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"downloads-container\" class=\"downloads-container\">\n <div part=\"download-title\" class=\"download-title\">\n {translate[state.language].downloads}\n </div>\n {this.enableOffline && !this.offline && (!this.currentTrek.parents || this.currentTrek.parents.length === 0) && (\n <button part=\"offline-button\" class=\"offline-button\" onClick={() => this.displayDownloadModal()}>\n <span part=\"icon\" class=\"icon\" innerHTML={DownloadForOfflineIcon}></span>\n <span part=\"label\" class=\"label\">\n {translate[state.language].offline.downloadOffline}\n </span>\n </button>\n )}\n {this.enableOffline && this.offline && (!this.currentTrek.parents || this.currentTrek.parents.length === 0) && (\n <button part=\"offline-button\" class=\"offline-button\" onClick={() => this.displayDeleteModal()}>\n <span part=\"icon\" class=\"icon\" innerHTML={DeleteIcon}></span>\n <span part=\"label\" class=\"label\">\n {translate[state.language].offline.deleteOffline}\n </span>\n </button>\n )}\n <div part=\"links-container\" class=\"links-container\">\n <a part=\"download-gpx-button\" href={`${this.currentTrek.gpx}`} target=\"_blank\" rel=\"noopener noreferrer\">\n <span part=\"icon\" class=\" icon\" innerHTML={DownloadIcon}></span>\n <span part=\"label\" class=\"label\">\n GPX\n </span>\n </a>\n <a part=\"download-kml-button\" href={`${this.currentTrek.kml}`} target=\"_blank\" rel=\"noopener noreferrer\">\n <span part=\"icon\" class=\"icon\" innerHTML={DownloadIcon}></span>\n <span part=\"label\" class=\"label\">\n KML\n </span>\n </a>\n <a\n part=\"download-pdf-button\"\n href={`${this.currentTrek.pdf}${state.portalsFromProviders && state.portalsFromProviders.length === 1 ? '?portal=' + state.portalsFromProviders[0] : ''}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span part=\"icon\" class=\"icon\" innerHTML={DownloadIcon}></span>\n <span part=\"label\" class=\"label\">\n PDF\n </span>\n </a>\n </div>\n </div>\n <div part=\"divider\" class=\"divider\"></div>\n {this.currentTrek.description_teaser && <div part=\"description-teaser\" class=\"description-teaser\" innerHTML={this.currentTrek.description_teaser}></div>}\n {this.currentTrek.ambiance && <div part=\"ambiance\" class=\"ambiance\" innerHTML={this.currentTrek.ambiance}></div>}\n {state.parentTrekId && state.parentTrek && this.currentTrek.id !== state.parentTrekId && (\n <div>\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"parent-trek-container\" class=\"parent-trek-container\">\n <button part=\"parent-trek-title\" class=\"parent-trek-title\" onClick={() => this.parentTrekPress.emit(state.parentTrekId)}>\n <div>&lt;</div>\n {state.parentTrek.name}\n </button>\n </div>\n </div>\n )}\n {state.currentTrekSteps && (\n <div part=\"step-container\" class=\"step-container\" ref={el => (this.stepsRef = el)}>\n <div part=\"step-title\" class=\"step-title\">{`${state.currentTrekSteps.length} ${translate[state.language].steps}`}</div>\n <div part=\"swiper-step\" class=\"swiper swiper-step\" ref={el => (this.swiperStepRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentTrekSteps &&\n state.currentTrekSteps.map(trek => {\n return (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-trek-card\n exportparts=\"trek-card,trek-img-container,trek-img,trek-sub-container,trek-departure,trek-name,trek-themes-container,trek-theme,trek-icons-labels-container,trek-icon-label,trek-icon,trek-label\"\n key={`trek-${trek.id}`}\n trek={trek}\n is-large-view={false}\n is-step={true}\n fontFamily={this.fontFamily}\n color-primary-app={this.colorPrimaryApp}\n color-on-surface={this.colorOnSurface}\n color-secondary-container={this.colorSecondaryContainer}\n color-on-secondary-container={this.colorOnSecondaryContainer}\n color-surface-container-low={this.colorSurfaceContainerLow}\n grw-app={this.grwApp}\n ></grw-trek-card>\n </div>\n );\n })}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.stepSwiperScrollbar = el)}></div>\n </div>\n </div>\n )}\n <div part=\"divider\" class=\"divider\"></div>\n {this.currentTrek.description && (\n <div part=\"description-container\" class=\"description-container\" ref={el => (this.descriptionRef = el)}>\n <div part=\"description-title\" class=\"description-title\">\n {translate[state.language].description}\n </div>\n <div part=\"description\" class=\"description\" innerHTML={this.currentTrek.description}></div>\n </div>\n )}\n {this.currentTrek.departure && (\n <div part=\"departure-container\" class=\"departure-container\">\n <div part=\"departure-title\" class=\"departure-title\">\n {translate[state.language].departure} :&nbsp;\n </div>\n <div part=\"departure\" innerHTML={this.currentTrek.departure}></div>\n </div>\n )}\n {this.currentTrek.arrival && (\n <div part=\"arrival-container\" class=\"arrival-container\">\n <div part=\"arrival-title\" class=\"arrival-title\">\n {translate[state.language].arrival} :&nbsp;\n </div>\n <div part=\"arrival\" innerHTML={this.currentTrek.arrival}></div>\n </div>\n )}\n {this.cities && this.cities.length > 0 && (\n <div part=\"cities-container\" class=\"cities-container\">\n <div part=\"cities-title\" class=\"cities-title\">\n {translate[state.language].crossedCities} :&nbsp;\n </div>\n <div part=\"cities\" innerHTML={this.cities.join(', ')}></div>\n </div>\n )}\n {this.options.pois.visible && (\n <div part=\"divider-and-pois-container\" class=\"divider-and-pois-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"pois-container\" class=\"pois-container\" ref={el => (this.poiRef = el)}>\n <div part=\"pois-title\" class=\"pois-title\">\n {translate[state.language].pois(state.poisData)}\n </div>\n {!state.currentPois ? (\n <div class=\"loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n ) : (\n <Fragment>\n <div part=\"swiper-pois\" class=\"swiper swiper-pois\" ref={el => (this.swiperPoisRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentPois.map(poi => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-poi\n exportparts=\"poi-type-img-container,poi-type,swiper-poi,swiper-wrapper,swiper-slide,poi-img,default-poi-img,swiper-pagination,swiper-button-prev,swiper-button-next,poi-sub-container,poi-name,poi-description,handle-poi-description\"\n poi={poi}\n colorSurfaceContainerLow={this.colorSurfaceContainerLow}\n ></grw-poi>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.poisSwiperScrollbar = el)}></div>\n </div>\n </Fragment>\n )}\n </div>\n </div>\n )}\n {this.weather && this.currentTrek.departure_city && !this.offline && (\n <div part=\"divider-and-weather-container\" class=\"divider-and-weather-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"weather-container\" class=\"weather-container\">\n <iframe height=\"150\" frameborder=\"0\" src={`https://meteofrance.com/widget/prevision/${this.getDepartureCityCode()}0#${this.colorPrimaryApp}`}></iframe>\n </div>\n </div>\n )}\n {this.currentTrek.access && (\n <div part=\"divider-and-access-container\" class=\"divider-and-access-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"access-container\" class=\"access-container\">\n <div part=\"access-title\" class=\"access-title\">\n {translate[state.language].roadAccessAndParking}\n </div>\n <div part=\"access\" class=\"access\" innerHTML={this.currentTrek.access}></div>\n {this.currentTrek.advised_parking && (\n <div>\n <div part=\"advised-parking-title\" class=\"advised-parking-title\" ref={el => (this.parkingRef = el)}>\n {translate[state.language].recommendedParking}\n </div>\n <div part=\"advised-parking\" class=\"advised-parking\" innerHTML={this.currentTrek.advised_parking}></div>\n </div>\n )}\n </div>\n </div>\n )}\n {this.currentTrek.public_transport && (\n <div part=\"divider-and-public-transport-container\" class=\"divider-and-public-transport-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"public-transport-container\" class=\"public-transport-container\">\n <div part=\"public-transport-title\" class=\"public-transport-title\">\n {translate[state.language].transport}\n </div>\n <div part=\"public-transport\" class=\"public-transport\" innerHTML={this.currentTrek.public_transport}></div>\n </div>\n </div>\n )}\n {(this.currentTrek.advice || this.currentTrek.gear || this.labels.length > 0) && (\n <div part=\"divider-and-advice-container\" class=\"divider-and-advice-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"advice-container\" class=\"advice-container\" ref={el => (this.recommendationRef = el)}>\n <div part=\"advice-title\" class=\"advice-title\">\n {translate[state.language].recommendations}\n </div>\n {this.currentTrek.advice && (\n <div part=\"current-advice-container\" class=\"current-advice-container\">\n <span part=\"advice-icon\" class=\"icon\" innerHTML={WarningIcon}></span>\n <div part=\"advice\" class=\"advice\" innerHTML={this.currentTrek.advice}></div>\n </div>\n )}\n {this.currentTrek.gear && (\n <div part=\"gear-container\" class=\"gear-container\">\n <span part=\"gear-icon\" class=\"icon\" innerHTML={BackpackIcon}></span>\n <div part=\"gear\" class=\"gear\" innerHTML={this.currentTrek.gear}></div>\n </div>\n )}\n {this.labels.map(label => (\n <div part=\"label-container\" class=\"label-container\">\n <div part=\"label-sub-container\" class=\"label-sub-container\">\n {label.pictogram && <img src={label.pictogram} alt=\"\" />}\n <div part=\"label-name\" class=\"label-name\" innerHTML={label.name}></div>\n </div>\n <div part=\"label-advice\" class=\"label-advice\" innerHTML={label.advice}></div>\n </div>\n ))}\n </div>\n </div>\n )}\n {state.currentSensitiveAreas && state.currentSensitiveAreas.length > 0 && (\n <div part=\"divider-and-sensitive-areas-container\" class=\"divider-and-sensitive-areas-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"sensitive-areas-container\" class=\"sensitive-areas-container\" ref={el => (this.sensitiveAreaRef = el)}>\n <div part=\"ensitive-areas-title\" class=\"sensitive-areas-title\">\n {translate[state.language].environmentalSensitiveAreas}\n </div>\n <div\n part=\"sensitive-areas-description\"\n class=\"sensitive-areas-description\"\n innerHTML={translate[state.language].sensitiveAreasDescription}\n ></div>\n {state.currentSensitiveAreas.map(sensitiveArea => (\n <grw-sensitive-area-detail\n exportparts=\"sensitive-area-title-container,sensitive-area-color-container,sensitive-area-title,sensitive-area-description,sensitive-area-practice-container,sensitive-area-practice-title,sensitive-area-practices,sensitive-area-practice,sensitive-area-period-container,sensitive-area-period-title,sensitive-area-periods,sensitive-area-period,sensitive-area-contact-container,sensitive-area-contact-title,sensitive-area-contact-value,sensitive-area-rules-container,sensitive-area-rules-title,sensitive-area-rules,sensitive-area-rule,sensitive-area-rule-name,sensitive-area-rule-description\"\n sensitiveArea={sensitiveArea}\n ></grw-sensitive-area-detail>\n ))}\n </div>\n </div>\n )}\n {state.currentInformationDesks &&\n state.currentInformationDesks.filter(currentInformationDesks => this.currentTrek.information_desks.includes(currentInformationDesks.id)).length > 0 && (\n <div part=\"divider-and-information-desks-container\" class=\"divider-and-information-desks-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"information-desks-container\" class=\"information-desks-container\" ref={el => (this.informationPlacesRef = el)}>\n <div part=\"information-desks-title\" class=\"information-desks-title\">\n {translate[state.language].informationPlaces}\n </div>\n <div part=\"swiper-information-desks\" class=\"swiper swiper-information-desks\" ref={el => (this.swiperInformationDesksRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.currentInformationDesks\n .filter(currentInformationDesks => this.currentTrek.information_desks.includes(currentInformationDesks.id))\n .map(informationDesk => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-information-desk\n exportparts=\"information-desk-img-container,information-desk-img,information-desk-sub-container,information-desk-name,center-on-map-button,icon,label,information-desk-informations,phone-container,mail-container,link-container,information-desk-description-container,information-desk-description,handle-information-desk-description\"\n informationDesk={informationDesk}\n colorSurfaceContainerLow={this.colorSurfaceContainerLow}\n ></grw-information-desk>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.informationDesksContentsSwiperScrollbar = el)}></div>\n </div>\n </div>\n </div>\n )}\n {(this.currentTrek.disabled_infrastructure ||\n (this.accessibilities && this.accessibilities.length > 0) ||\n this.currentTrek.accessibility_level ||\n this.currentTrek.accessibility_slope ||\n this.currentTrek.accessibility_width ||\n this.currentTrek.accessibility_signage ||\n this.currentTrek.accessibility_covering ||\n this.currentTrek.accessibility_exposure ||\n this.currentTrek.accessibility_advice ||\n this.emergencyNumber) && (\n <div part=\"divider-and-accessibilities-container\" class=\"divider-and-accessibilities-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"accessibilities-container\" class=\"accessibilities-container\" ref={el => (this.accessibilityRef = el)}>\n <div part=\"accessibilities-title\" class=\"accessibilities-title\">\n {translate[state.language].accessibility}\n </div>\n {this.currentTrek.disabled_infrastructure && <div part=\"disabled-infrastructure\" innerHTML={this.currentTrek.disabled_infrastructure}></div>}\n {this.accessibilities && this.accessibilities.length > 0 && (\n <div part=\"accessibilities-content-container\" class=\"accessibilities-content-container\">\n {this.accessibilities.map(accessibility => (\n <div part=\"accessibility-content-container\" class=\"accessibility-content-container\">\n <img src={accessibility.pictogram} alt=\"\"></img>\n <div part=\"accessibility-name\" innerHTML={accessibility.name}></div>\n </div>\n ))}\n </div>\n )}\n {this.emergencyNumber && (\n <div part=\"accessibility-emergency-number-container\" class=\"accessibility-emergency-number-container\">\n <div part=\"accessibility-emergency-number-title\" class=\"accessibility-emergency-number-title\">\n {translate[state.language].emergencyNumber}\n </div>\n <div part=\"accessibility-emergency-number-content\" class=\"accessibility-emergency-number-content\">\n {\n <a href={`tel:${this.emergencyNumber.toString()}`}>\n <span part=\"icon\" class=\"icon\" innerHTML={CallIcon}></span>\n <span part=\"emergency-number\" class=\"emergency-number\">\n {this.emergencyNumber.toString()}\n </span>\n </a>\n }\n </div>\n </div>\n )}\n {this.currentTrek.accessibility_level && (\n <div part=\"accessibility-level-container\" class=\"accessibility-level-container\">\n <div part=\"accessibility-level-title\" class=\"accessibility-level-title\">\n {translate[state.language].accessibilityLevel}\n </div>\n <div part=\"accessibility-level-name\" innerHTML={this.accessibilityLevel.name}></div>\n </div>\n )}\n {this.currentTrek.accessibility_slope && (\n <div part=\"accessibility-slope-container\" class=\"accessibility-slope-container\">\n <div part=\"accessibility-slope-title\" class=\"accessibility-slope-title\">\n {translate[state.language].accessibilitySlope}\n </div>\n <div part=\"accessibility-slope\" innerHTML={this.currentTrek.accessibility_slope}></div>\n </div>\n )}\n {this.currentTrek.accessibility_width && (\n <div part=\"accessibility-width-container\" class=\"accessibility-width-container\">\n <div part=\"accessibility-width-title\" class=\"accessibility-width-title\">\n {translate[state.language].accessibilityWidth}\n </div>\n <div part=\"accessibility-width\" innerHTML={this.currentTrek.accessibility_width}></div>\n </div>\n )}\n {this.currentTrek.accessibility_signage && (\n <div part=\"accessibility-signage-container\" class=\"accessibility-signage-container\">\n <div part=\"accessibility-signage-title\" class=\"accessibility-signage-title\">\n {translate[state.language].accessibilitySignage}\n </div>\n <div part=\"accessibility-signage\" innerHTML={this.currentTrek.accessibility_signage}></div>\n </div>\n )}\n {this.currentTrek.accessibility_covering && (\n <div part=\"accessibility-covering-container\" class=\"accessibility-covering-container\">\n <div part=\"accessibility-covering-title\" class=\"accessibility-covering-title\">\n {translate[state.language].accessibilityCovering}\n </div>\n <div part=\"accessibility-covering\" innerHTML={this.currentTrek.accessibility_covering}></div>\n </div>\n )}\n {this.currentTrek.accessibility_exposure && (\n <div part=\"accessibility-exposure-container\" class=\"accessibility-exposure-container\">\n <div part=\"accessibility-exposure-title\" class=\"accessibility-exposure-title\">\n {translate[state.language].accessibilityExposure}\n </div>\n <div part=\"accessibility-exposure\" innerHTML={this.currentTrek.accessibility_exposure}></div>\n </div>\n )}\n {this.currentTrek.accessibility_advice && (\n <div part=\"accessibility-advice-container\" class=\"accessibility-advice-container\">\n <div part=\"accessibility-advice-title\" class=\"accessibility-advice-title\">\n {translate[state.language].accessibilityAdvices}\n </div>\n <div part=\"accessibility-advice\" innerHTML={this.currentTrek.accessibility_advice}></div>\n </div>\n )}\n </div>\n </div>\n )}\n {this.options.touristicContents.visible && (\n <div part=\"divider-and-touristic-content-container\" class=\"divider-and-touristic-content-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"touristic-content-container\" class=\"touristic-content-container\" ref={el => (this.touristicContentsRef = el)}>\n <div part=\"touristic-content-title\" class=\"touristic-content-title\">\n {translate[state.language].touristicContents(state.touristicContentsData)}\n </div>\n {!state.trekTouristicContents ? (\n <div class=\"loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n ) : (\n <Fragment>\n <div part=\"swiper-touristic-content\" class=\"swiper swiper-touristic-content\" ref={el => (this.swiperTouristicContentsRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.trekTouristicContents.map(touristicContent => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-touristic-content-card\n exportparts=\"touristic-content-card,touristic-content-img-container,swiper-touristic-content,swiper-wrapper,swiper-slide,touristic-content-img,default-touristic-content-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-content-sub-container,touristic-content-category-container,touristic-content-category-img,touristic-content-category-name,touristic-content-name,touristic-content-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n touristicContent={touristicContent}\n isInsideHorizontalList={true}\n color-surface-container-low={this.colorSurfaceContainerLow}\n ></grw-touristic-content-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.touristicContentsSwiperScrollbar = el)}></div>\n </div>\n </Fragment>\n )}\n </div>\n </div>\n )}\n {this.options.touristicEvents.visible && (\n <div part=\"divider-and-touristic-event-container\" class=\"divider-and-touristic-event-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"touristic-event-container\" class=\"touristic-event-container\" ref={el => (this.touristicEventsRef = el)}>\n <div part=\"touristic-event-title\" class=\"touristic-event-title\">\n {translate[state.language].touristicEvents(state.touristicEventsData)}\n </div>\n {!state.trekTouristicEvents ? (\n <div class=\"loader-container\">\n <span part=\"loader\" class=\"loader\"></span>\n </div>\n ) : (\n <Fragment>\n <div part=\"swiper-touristic-event\" class=\"swiper swiper-touristic-event\" ref={el => (this.swiperTouristicEventsRef = el)}>\n <div part=\"swiper-wrapper\" class=\"swiper-wrapper\">\n {state.trekTouristicEvents.map(touristicEvent => (\n <div part=\"swiper-slide\" class=\"swiper-slide\">\n <grw-touristic-event-card\n exportparts=\"touristic-event-card,touristic-event-img-container,swiper-touristic-event,swiper-wrapper,swiper-slide,touristic-event-img,default-touristic-event-img,swiper-pagination,swiper-button-prev,swiper-button-next,touristic-event-sub-container,touristic-event-sub-container,touristic-event-type-img,touristic-event-type-name,touristic-event-name,touristic-event-date-container,touristic-event-date,touristic-event-more-detail-container,more-details-button\"\n fontFamily={this.fontFamily}\n touristicEvent={touristicEvent}\n isInsideHorizontalList={true}\n colorSurfaceContainerLow={this.colorSurfaceContainerLow}\n ></grw-touristic-event-card>\n </div>\n ))}\n </div>\n <div part=\"swiper-scrollbar\" class=\"swiper-scrollbar\" ref={el => (this.touristicEventsSwiperScrollbar = el)}></div>\n </div>\n </Fragment>\n )}\n </div>\n </div>\n )}\n {this.currentTrek.web_links && this.currentTrek.web_links.length > 0 && (\n <div part=\"divider-and-weblinks-container\" class=\"divider-and-weblinks-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"weblinks-container\" class=\"weblinks-container\">\n <div part=\"weblinks-title\" class=\"weblinks-title\">\n {translate[state.language].learnMore}\n </div>\n {this.currentTrek.web_links.map(weblink => (\n <a part=\"weblink-container\" class=\"weblink-container\" href={weblink.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {weblink.category && weblink.category.pictogram && <img src={weblink.category.pictogram} alt={weblink.category.label} />}\n {weblink.name}\n </a>\n ))}\n </div>\n </div>\n )}\n {this.currentTrek.source && this.currentTrek.source.length > 0 && (\n <div part=\"divider-and-source-container\" class=\"divider-and-source-container\">\n <div part=\"divider\" class=\"divider\"></div>\n <div part=\"source-container\" class=\"source-container\">\n <div part=\"source-title\" class=\"source-title\">\n {translate[state.language].sources}\n </div>\n {this.sources.map(source => (\n <div part=\"source-sub-container\" class=\"source-sub-container\">\n {source.pictogram && <img src={source.pictogram} alt=\"\" />}\n <div>\n <div part=\"source-name\" class=\"source-name\" innerHTML={source.name}></div>\n <a part=\"source-advice\" class=\"source-advice\" href={source.website} innerHTML={source.website}></a>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n {this.grwApp && <div part=\"detail-bottom-space\" class=\"detail-bottom-space\"></div>}\n </div>\n )}\n {this.modalDetailsId && (\n <Fragment>\n {this.showTouristicContentDetailsModal && <grw-touristic-content-provider api={state.api} touristic-content-id={this.modalDetailsId}></grw-touristic-content-provider>}\n {this.showTouristicEventDetailsModal && <grw-touristic-event-provider api={state.api} touristic-event-id={this.modalDetailsId}></grw-touristic-event-provider>}\n </Fragment>\n )}\n </Host>\n );\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { handleOfflineProperty, getDataInStore } from 'services/grw-db.service';\nimport { getTouristicContentCategory, getTouristicContentsNearTrek, getTouristicContentsNearTrekCount } from 'services/touristic-contents.service';\nimport { getTouristicEventsNearTrek, getTouristicEventsNearTrekCount, getTouristicEventType } from 'services/touristic-events.service';\nimport {\n getCities,\n getInformationsDesks,\n getPoisNearTrek,\n getPoisNearTrekCount,\n getSensitiveAreasNearTrek,\n getSignages,\n getSources,\n getTrek,\n getTrekNetwork,\n getTrekRatings,\n getTrekRatingsScale,\n} from 'services/treks.service';\nimport state from 'store/store';\nimport { Trek } from 'types/types';\nimport { getCacheMode, imagesRegExp, setFilesFromStore } from 'utils/utils';\n\n@Component({\n tag: 'grw-trek-provider',\n shadow: true,\n})\nexport class GrwTrekProvider {\n @Prop() languages = 'fr';\n @Prop() api: string;\n @Prop() trekId: number;\n\n @Prop() portals: string;\n @Prop() inBbox: string;\n @Prop() cities: string;\n @Prop() districts: string;\n @Prop() structures: string;\n @Prop() themes: string;\n @Prop() routes: string;\n @Prop() practices: string;\n @Prop() labels: string;\n\n @Prop() signages = false;\n\n controller = new AbortController();\n signal = this.controller.signal;\n init: RequestInit = { cache: getCacheMode(), signal: this.signal };\n\n connectedCallback() {\n state.poisData = 0;\n state.touristicContentsData = 0;\n state.touristicEventsData = 0;\n state.currentPois = null;\n state.trekTouristicContents = null;\n state.trekTouristicEvents = null;\n\n if (!state.api) {\n state.api = this.api;\n state.languages = this.languages.split(',');\n state.language = state.languages[0];\n }\n\n state.portalsFromProviders = this.portals;\n state.inBboxFromProviders = this.inBbox;\n state.citiesFromProviders = this.cities;\n state.districtsFromProviders = this.districts;\n state.structuresFromProviders = this.structures;\n state.themesFromProviders = this.themes;\n state.routesFromProviders = this.routes;\n state.practicesFromProviders = this.practices;\n state.labelsFromProviders = this.labels;\n\n this.handleTrek();\n }\n\n disconnectedCallback() {\n state.networkError = false;\n }\n\n async handleTrek() {\n const trekInStore: Trek = await getDataInStore('treks', this.trekId);\n if (trekInStore && trekInStore.offline) {\n this.handleOfflineTrek(trekInStore);\n } else {\n this.handleOnlineTrek();\n }\n }\n\n async handleOfflineTrek(trek: Trek) {\n if ((trek && trek.children.length > 0) || state.parentTrekId) {\n const steps: number[] = [];\n if (trek.children.length > 0) {\n state.parentTrekId = trek.id;\n state.parentTrek = trek;\n steps.push(...trek.children);\n } else {\n const parentTrek = await getDataInStore('treks', state.parentTrekId);\n state.parentTrek = parentTrek;\n steps.push(...parentTrek.children);\n }\n const stepRequests = [];\n steps.forEach(stepId => {\n stepRequests.push(getDataInStore('treks', stepId));\n });\n state.currentTrekSteps = await Promise.all([...stepRequests]).then(responses => responses);\n }\n\n state.difficulties = await handleOfflineProperty('difficulties');\n state.routes = await handleOfflineProperty('routes');\n state.practices = await handleOfflineProperty('practices');\n state.themes = await handleOfflineProperty('themes');\n state.cities = await handleOfflineProperty('cities');\n state.accessibilities = await handleOfflineProperty('accessibilities');\n state.ratings = await handleOfflineProperty('ratings');\n state.ratingsScale = await handleOfflineProperty('ratingsScale');\n state.labels = await handleOfflineProperty('labels');\n state.sources = await handleOfflineProperty('sources');\n state.accessibilitiesLevel = await handleOfflineProperty('accessibilitiesLevel');\n state.touristicContentCategories = await handleOfflineProperty('touristicContentCategories');\n state.touristicEventTypes = await handleOfflineProperty('touristicEventTypes');\n state.networks = await handleOfflineProperty('networks');\n state.poiTypes = await handleOfflineProperty('poiTypes');\n\n const informationDesksInStore = await handleOfflineProperty('informationDesks');\n const informationDesks = informationDesksInStore.filter(informationDeskInStore =>\n trek.information_desks.some(information_desk => information_desk === informationDeskInStore.id),\n );\n state.currentInformationDesks = informationDesks;\n\n const poisInStore = await handleOfflineProperty('pois', ['url']);\n const pois = poisInStore.filter(poiInStore => trek.pois.some(trekPoi => trekPoi === poiInStore.id));\n state.currentPois = pois;\n state.poisData = pois.length;\n\n const touristicContentsInStore = await handleOfflineProperty('touristicContents', ['url']);\n const touristicContents = touristicContentsInStore.filter(touristicContentInStore =>\n trek.touristicContents.some(trekTouristicContent => trekTouristicContent === touristicContentInStore.id),\n );\n state.trekTouristicContents = touristicContents;\n state.touristicContentsData = touristicContents.length;\n\n const touristicEventsInStore = await handleOfflineProperty('touristicEvents', ['url']);\n const touristicEvents = touristicEventsInStore.filter(touristicEventInStore =>\n trek.touristicEvents.some(trekTouristicEvent => trekTouristicEvent === touristicEventInStore.id),\n );\n state.trekTouristicEvents = touristicEvents;\n state.touristicEventsData = touristicEvents.length;\n\n const sensitiveAreasInStore = await handleOfflineProperty('sensitiveAreas');\n const sensitiveAreas = sensitiveAreasInStore.filter(sensitiveAreaInStore => trek.sensitiveAreas.some(trekSensitiveArea => trekSensitiveArea === sensitiveAreaInStore.id));\n state.currentSensitiveAreas = sensitiveAreas;\n\n const signagesInStore = await handleOfflineProperty('signages');\n const signages = signagesInStore.filter(signageInStore => trek.signages.some(trekSignage => trekSignage === signageInStore.id));\n state.currentSignages = signages;\n\n await setFilesFromStore(trek, imagesRegExp, ['url']);\n state.currentTrek = trek;\n }\n\n handleOnlineTrek() {\n const requests = [];\n requests.push(\n !state.difficulties\n ? fetch(`${state.api}trek_difficulty/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,label,pictogram`, this.init)\n : new Response('null'),\n );\n requests.push(\n !state.routes\n ? fetch(`${state.api}trek_route/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,route,pictogram`, this.init)\n : new Response('null'),\n );\n requests.push(\n !state.practices\n ? fetch(`${state.api}trek_practice/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,name,pictogram`, this.init)\n : new Response('null'),\n );\n requests.push(\n !state.themes\n ? fetch(`${state.api}theme/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,label,pictogram`, this.init)\n : new Response('null'),\n );\n requests.push(\n !state.accessibilities\n ? fetch(`${state.api}trek_accessibility/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,name,pictogram`, this.init)\n : new Response('null'),\n );\n requests.push(!state.ratings ? getTrekRatings(state.api, state.language, this.portals, this.init) : new Response('null'));\n requests.push(!state.ratingsScale ? getTrekRatingsScale(state.api, state.language, this.init) : new Response('null'));\n\n requests.push(this.signages ? getSignages(state.api, state.language, this.trekId, this.init) : new Response('null'));\n\n try {\n Promise.all([\n ...requests,\n getSensitiveAreasNearTrek(state.api, state.language, this.trekId, this.init)\n .then(response => {\n if (response.ok) {\n return response;\n } else {\n throw new Error('Sentive area error');\n }\n })\n .catch(() => {\n return new Response('null');\n }),\n fetch(`${state.api}label/?language=${state.language}&fields=id,name,advice,pictogram,filter`, this.init),\n getSources(state.api, state.language, this.init),\n fetch(`${state.api}trek_accessibility_level/?language=${state.language}&fields=id,name`, this.init).catch(() => new Response('null')),\n getPoisNearTrekCount(state.api, state.language, this.trekId, this.init),\n getInformationsDesks(state.api, state.language, this.init),\n getTrekNetwork(state.api, state.language, this.init),\n getTrek(state.api, state.language, this.trekId, this.init),\n getTouristicContentsNearTrekCount(state.api, state.language, this.trekId, this.init),\n getTouristicEventsNearTrekCount(state.api, state.language, this.trekId, this.init),\n ])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(\n async ([\n difficulties,\n routes,\n practices,\n themes,\n accessibilities,\n ratings,\n ratingsScale,\n signages,\n sensitiveAreas,\n labels,\n sources,\n accessibilitiesLevel,\n pois,\n informationDesks,\n networks,\n trek,\n touristicContents,\n touristicEvents,\n ]) => {\n state.networkError = false;\n if ((trek && trek.children.length > 0) || state.parentTrekId) {\n const steps: number[] = [];\n if (trek.children.length > 0) {\n state.parentTrekId = trek.id;\n state.parentTrek = trek;\n steps.push(...trek.children);\n } else {\n const parentTrek = await fetch(`${state.api}trek/${state.parentTrekId}/?language=${state.language}&published=true&fields=name,children`, this.init).then(response =>\n response.json(),\n );\n state.parentTrek = parentTrek;\n steps.push(...parentTrek.children);\n }\n const stepRequests = [];\n steps.forEach(stepId => {\n stepRequests.push(getTrek(state.api, state.language, stepId, this.init));\n });\n state.currentTrekSteps = await Promise.all([...stepRequests]).then(responses => Promise.all(responses.map(response => response.json())));\n }\n\n let citiesToLoad = [trek.departure_city, ...trek.cities];\n\n if (state.currentTrekSteps) {\n state.currentTrekSteps.forEach(step => {\n citiesToLoad = [...citiesToLoad, step.departure_city, ...step.cities];\n });\n }\n\n citiesToLoad = [...new Set(citiesToLoad.filter(Boolean))];\n\n if (state.cities) {\n const cityIds = state.cities.map(city => city.id);\n citiesToLoad = citiesToLoad.filter(city => !cityIds.includes(city));\n }\n\n if (citiesToLoad.length > 0) {\n const cities = (await getCities(state.api, state.language, this.init, citiesToLoad).then(response => response.json())).results;\n if (cities) {\n if (state.cities) {\n state.cities = [...state.cities, ...cities];\n } else {\n state.cities = cities;\n }\n }\n }\n\n if (!state.cities) {\n state.cities = [];\n }\n\n if (difficulties) {\n state.difficulties = difficulties.results;\n }\n if (routes) {\n state.routes = routes.results;\n }\n if (practices) {\n state.practices = practices.results.map(practice => ({ ...practice, selected: false }));\n }\n if (themes) {\n state.themes = themes.results;\n }\n\n if (accessibilities) {\n state.accessibilities = accessibilities.results;\n }\n if (ratings) {\n state.ratings = ratings.results;\n }\n if (ratingsScale) {\n state.ratingsScale = ratingsScale.results;\n }\n state.currentSignages = signages ? signages.results : [];\n if (accessibilitiesLevel) {\n state.accessibilitiesLevel = accessibilitiesLevel.results;\n }\n\n if (sensitiveAreas) {\n state.currentSensitiveAreas = sensitiveAreas.results;\n }\n\n if (labels) {\n state.labels = labels.results;\n }\n\n if (sources) {\n state.sources = sources.results;\n }\n\n if (networks) {\n state.networks = networks.results;\n }\n\n if (informationDesks) {\n state.currentInformationDesks = informationDesks.results;\n }\n\n if (pois.count) {\n state.poisData = pois.count;\n }\n\n if (touristicContents.count) {\n state.touristicContentsData = touristicContents.count;\n }\n\n if (touristicEvents.count) {\n state.touristicEventsData = touristicEvents.count;\n }\n if (trek) {\n state.currentTrek = trek;\n }\n if (state.poisData > 0) {\n Promise.all([\n getPoisNearTrek(state.api, state.language, this.trekId, this.init),\n fetch(`${state.api}poi_type/?language=${state.language}&fields=id,pictogram`, this.init),\n ])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(([trekPois, poiTypes]) => {\n if (poiTypes) {\n state.poiTypes = poiTypes.results;\n }\n if (trekPois) {\n state.currentPois = trekPois.results;\n }\n })\n .catch(() => {\n state.poisData = 0;\n });\n }\n\n if (state.touristicContentsData > 0) {\n Promise.all([\n getTouristicContentsNearTrek(state.api, state.language, this.trekId, this.init),\n getTouristicContentCategory(state.api, state.language, null, this.init),\n ])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(([trekTouristicContents, touristicContentsCategory]) => {\n if (touristicContentsCategory) {\n state.touristicContentCategories = touristicContentsCategory.results;\n }\n if (trekTouristicContents) {\n state.trekTouristicContents = trekTouristicContents.results;\n }\n })\n .catch(() => {\n state.touristicContentsData = 0;\n });\n }\n\n if (state.touristicEventsData > 0) {\n Promise.all([getTouristicEventsNearTrek(state.api, state.language, this.trekId, this.init), getTouristicEventType(state.api, state.language, null, this.init)])\n .then(responses => Promise.all(responses.map(response => response.json())))\n .then(([trekTouristicEvents, touristicEventType]) => {\n if (touristicEventType) {\n state.touristicEventTypes = touristicEventType.results;\n }\n if (trekTouristicEvents) {\n state.trekTouristicEvents = trekTouristicEvents.results;\n }\n })\n .catch(() => {\n state.touristicEventsData = 0;\n });\n }\n },\n );\n } catch (error) {\n if (!(error.code === DOMException.ABORT_ERR)) {\n state.networkError = true;\n }\n }\n }\n\n render() {\n return <Host></Host>;\n }\n}\n",":host {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\ngrw-trek-card {\n display: flex;\n justify-content: center;\n margin: 0px 8px 16px 8px;\n flex: 1 1 300px;\n max-width: 350px;\n}\n\n:host(.large-view) grw-trek-card {\n flex: 1 1 100%;\n max-width: none;\n}\n\n.list-bottom-space {\n height: 104px;\n}\n\n.list-large-view-bottom-space {\n height: 52px;\n}\n\n.current-treks-within-bounds-length {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 16px;\n color: var(--color-on-surface-variant);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n font-family: var(--font-family);\n}\n\n.treks-list-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n","import { Component, Host, h, Element, State, Prop } from '@stencil/core';\nimport { translate } from 'i18n/i18n';\nimport state, { onChange } from 'store/store';\nimport { Treks } from 'types/types';\n\n@Component({\n tag: 'grw-treks-list',\n styleUrl: 'grw-treks-list.scss',\n shadow: true,\n})\nexport class GrwTreksList {\n @Element() element: HTMLElement;\n @State() treksToDisplay: Treks = [];\n\n @Prop() fontFamily = 'Roboto';\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n @Prop() displayOnlyOfflineTreks = false;\n @Prop() isLargeView = false;\n @Prop() grwApp = false;\n\n step = 10;\n shouldAddInfiniteScrollEvent = true;\n\n handleInfiniteScrollBind: (event: any) => void = this.handleInfiniteScroll.bind(this);\n\n connectedCallback() {\n this.handleInfiniteScrollEvent(true);\n if (state.currentTreks) {\n this.treksToDisplay = [...state.currentTreks.slice(0, this.step)];\n }\n onChange('currentTreks', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.currentTreks) {\n this.treksToDisplay = [...state.currentTreks.slice(0, this.step)];\n }\n });\n onChange('treksWithinBounds', () => {\n this.handleInfiniteScrollEvent(true);\n this.element.scroll({ top: 0 });\n if (state.treksWithinBounds) {\n this.treksToDisplay = [...state.treksWithinBounds.slice(0, this.step)];\n }\n });\n }\n\n handleInfiniteScroll(event: any) {\n if (event.composedPath()[0].scrollTop + event.composedPath()[0].scrollHeight / 2 >= event.composedPath()[0].scrollHeight) {\n if (this.treksToDisplay.length < state.treksWithinBounds.length) {\n this.treksToDisplay = state.treksWithinBounds.slice(\n 0,\n this.treksToDisplay.length + this.step >= state.treksWithinBounds.length ? state.treksWithinBounds.length : this.treksToDisplay.length + this.step,\n );\n } else {\n this.handleInfiniteScrollEvent(false);\n }\n }\n }\n\n handleInfiniteScrollEvent(shouldAddInfiniteScrollEvent: boolean) {\n if (shouldAddInfiniteScrollEvent) {\n if (this.shouldAddInfiniteScrollEvent) {\n this.element.addEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n } else {\n this.element.removeEventListener('scroll', this.handleInfiniteScrollBind);\n this.shouldAddInfiniteScrollEvent = !shouldAddInfiniteScrollEvent;\n }\n }\n\n disconnectedCallback() {\n this.handleInfiniteScrollEvent(false);\n }\n\n render() {\n return (\n <Host class={{ 'large-view': this.isLargeView }} style={{ '--font-family': this.fontFamily, '--color-primary-app': this.colorPrimaryApp }}>\n {state.treksWithinBounds && (\n <div part=\"current-treks-within-bounds-length\" class=\"current-treks-within-bounds-length\">{`${state.treksWithinBounds.length} ${\n state.treksWithinBounds.length > 1 ? translate[state.language].treks : translate[state.language].trek\n }`}</div>\n )}\n <div part=\"treks-list-container\" class=\"treks-list-container\">\n {this.treksToDisplay.map(trek => (\n <grw-trek-card\n exportparts=\"trek-card,trek-img-container,trek-img,trek-sub-container,trek-departure,trek-name,trek-themes-container,trek-theme,trek-icons-labels-container,trek-icon-label,trek-icon,trek-label\"\n key={`trek-${trek.id}`}\n trek={trek}\n is-large-view={this.isLargeView}\n fontFamily={this.fontFamily}\n color-primary-app={this.colorPrimaryApp}\n color-on-surface={this.colorOnSurface}\n color-secondary-container={this.colorSecondaryContainer}\n color-on-secondary-container={this.colorOnSecondaryContainer}\n color-surface-container-low={this.colorSurfaceContainerLow}\n grw-app={this.grwApp}\n ></grw-trek-card>\n ))}\n </div>\n <div part=\"list-bottom-space\" class={!this.isLargeView ? 'list-bottom-space' : 'list-large-view-bottom-space'}></div>\n </Host>\n );\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { getAllDataInStore } from 'services/grw-db.service';\nimport { getCities, getDistricts, getLabel, getTrekAccessibility, getTreksList, trekIsAvailableOffline } from 'services/treks.service';\nimport state from 'store/store';\nimport { Treks } from 'types/types';\nimport { durations, elevations, getCacheMode, imagesRegExp, lengths, setFilesFromStore } from 'utils/utils';\n\n@Component({\n tag: 'grw-treks-provider',\n shadow: true,\n})\nexport class GrwTreksProvider {\n @Prop() languages = 'fr';\n @Prop() api: string;\n @Prop() inBbox: string;\n @Prop() cities: string;\n @Prop() districts: string;\n @Prop() structures: string;\n @Prop() themes: string;\n @Prop() portals: string;\n @Prop() routes: string;\n @Prop() practices: string;\n @Prop() labels: string;\n @Prop() offline = false;\n\n controller = new AbortController();\n signal = this.controller.signal;\n init: RequestInit = { cache: getCacheMode(), signal: this.signal };\n\n connectedCallback() {\n if (!state.api) {\n state.api = this.api;\n state.languages = this.languages.split(',');\n state.language = state.languages[0];\n }\n\n state.portalsFromProviders = this.portals;\n state.inBboxFromProviders = this.inBbox;\n state.citiesFromProviders = this.cities;\n state.districtsFromProviders = this.districts;\n state.structuresFromProviders = this.structures;\n state.themesFromProviders = this.themes;\n state.routesFromProviders = this.routes;\n state.practicesFromProviders = this.practices;\n state.labelsFromProviders = this.labels;\n\n this.handleTreks();\n }\n\n disconnectedCallback() {\n this.controller.abort();\n state.networkError = false;\n }\n\n async handleTreks() {\n if (this.offline) {\n this.handleOfflineTreks();\n } else {\n this.handleOnlineTreks();\n }\n }\n\n async handleOfflineTreks() {\n let treksInStore: Treks = await getAllDataInStore('treks');\n if (treksInStore && treksInStore.length > 0) {\n state.difficulties = await this.handleOfflineProperty('difficulties');\n state.routes = await this.handleOfflineProperty('routes');\n state.practices = await this.handleOfflineProperty('practices');\n state.themes = await this.handleOfflineProperty('themes');\n state.cities = await this.handleOfflineProperty('cities');\n state.accessibilities = await this.handleOfflineProperty('accessibilities');\n state.labels = await this.handleOfflineProperty('labels');\n state.districts = await this.handleOfflineProperty('districts');\n state.durations = durations;\n state.lengths = lengths;\n state.elevations = elevations;\n treksInStore = await this.handleOfflineProperty('treks');\n this.sortTreks(treksInStore);\n if (this.offline) {\n treksInStore = treksInStore.filter(trek => trek.offline);\n }\n state.treks = treksInStore;\n state.currentTreks = treksInStore;\n } else {\n state.networkError = true;\n }\n }\n\n sortTreks(treks) {\n treks.sort((a, b) => {\n return a.name.localeCompare(b.name, undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n });\n }\n\n async handleOfflineProperty(property, exclude: string[] = []) {\n const data = await getAllDataInStore(property);\n await setFilesFromStore(data, imagesRegExp, exclude);\n return data as any;\n }\n\n handleOnlineTreks() {\n Promise.all([\n fetch(`${state.api}trek_difficulty/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,label,pictogram`, this.init),\n fetch(`${state.api}trek_route/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,route,pictogram`, this.init),\n fetch(`${state.api}trek_practice/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,name,pictogram`, this.init),\n fetch(`${state.api}theme/?language=${state.language}${this.portals ? '&portals='.concat(this.portals) : ''}&fields=id,label,pictogram`, this.init),\n getTrekAccessibility(state.api, state.language, this.portals, this.init),\n getLabel(state.api, state.language, this.portals, this.init),\n getDistricts(state.api, state.language, this.init),\n getTreksList(\n state.api,\n state.language,\n this.inBbox,\n this.cities,\n this.districts,\n this.structures,\n this.themes,\n this.portals,\n this.routes,\n this.practices,\n this.labels,\n this.init,\n ),\n ])\n .then(responses => {\n responses.forEach(response => {\n if (response.status !== 200) {\n throw new Error('network error');\n }\n });\n return Promise.all(responses.map(response => response.json()));\n })\n .then(async ([difficulties, routes, practices, themes, accessibility, labels, districts, treks]) => {\n state.networkError = false;\n state.difficulties = difficulties.results;\n state.routes = routes.results;\n state.practices = practices.results.map(practice => ({ ...practice, selected: false }));\n state.themes = themes.results;\n state.accessibilities = accessibility.results;\n state.labels = labels.results;\n state.districts = districts.results;\n state.durations = durations;\n state.lengths = lengths;\n state.elevations = elevations;\n\n const cityIds = new Set<number>();\n if (treks && treks.results) {\n treks.results.forEach(trek => {\n if (trek.departure_city) {\n cityIds.add(trek.departure_city);\n }\n if (trek.cities) {\n trek.cities.forEach(c => cityIds.add(c));\n }\n });\n }\n\n let cities = [];\n if (cityIds.size > 0) {\n try {\n const citiesResponse = await getCities(state.api, state.language, this.init, Array.from(cityIds));\n const citiesData = await citiesResponse.json();\n cities = citiesData.results || [];\n } catch (e) {\n console.error('Failed to load cities', e);\n }\n }\n state.cities = cities;\n\n const treksWithOfflineValue = [];\n const treksWithDeparture = treks.results.filter(trek => trek.departure_geom !== null);\n\n for (let index = 0; index < treksWithDeparture.length; index++) {\n const offline = await trekIsAvailableOffline(treksWithDeparture[index].id);\n treksWithOfflineValue.push({ ...treksWithDeparture[index], offline });\n }\n this.sortTreks(treksWithOfflineValue);\n state.treks = treksWithOfflineValue;\n state.currentTreks = treksWithOfflineValue;\n })\n .catch(async () => {\n await this.handleOfflineTreks();\n });\n }\n\n render() {\n return <Host></Host>;\n }\n}\n"],"mappings":"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","ignoreList":[]}