{"version":3,"sources":["webpack:///./src/components/Desktop/Filter.vue?fbf6","webpack:///./src/components/Filter.vue?912e","webpack:///./src/components/Desktop/Filter.vue?873e","webpack:///./src/components/Filter.vue?7250","webpack:///./node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.js","webpack:///./src/components/FilterSelectionButtons.vue?5257","webpack:///./src/components/ListCard.vue?f3fe","webpack:///./src/components/Desktop/FilterSelection.vue?01c0","webpack:///./src/List.vue?6da2","webpack:///./src/components/ListMapPopup.vue?2273","webpack:///./src/components/Desktop/SearchBox.vue?e6cd","webpack:///./src/components/FilterSelectionButtons.vue?ab4b","webpack:///./src/List.vue","webpack:///./src/components/ListCard.vue","webpack:///./src/mixins/service-provider-mixin.js","webpack:///src/components/ListCard.vue","webpack:///./src/components/ListCard.vue?6a50","webpack:///./src/components/ListCard.vue?748a","webpack:///./src/components/Filter.vue","webpack:///./src/components/FilterSelection.vue","webpack:///./src/components/FilterSelectionList.vue","webpack:///./src/mixins/filter-selection-mixin.js","webpack:///src/components/FilterSelectionList.vue","webpack:///./src/components/FilterSelectionList.vue?877c","webpack:///./src/components/FilterSelectionList.vue?b17e","webpack:///./src/components/FilterSelectionButtons.vue","webpack:///src/components/FilterSelectionButtons.vue","webpack:///./src/components/FilterSelectionButtons.vue?09ec","webpack:///./src/components/FilterSelectionButtons.vue?5bac","webpack:///./src/components/FilterSelectionPlus.vue","webpack:///src/components/FilterSelectionPlus.vue","webpack:///./src/components/FilterSelectionPlus.vue?c4ad","webpack:///./src/components/FilterSelectionPlus.vue?654b","webpack:///./src/mixins/filter-list-mixin.js","webpack:///./src/mixins/only-bookable-mixin.js","webpack:///./src/components/FilterSelectionClassifications.vue","webpack:///src/components/FilterSelectionClassifications.vue","webpack:///./src/components/FilterSelectionClassifications.vue?06e6","webpack:///./src/components/FilterSelectionClassifications.vue?8f0a","webpack:///src/components/FilterSelection.vue","webpack:///./src/components/FilterSelection.vue?cae4","webpack:///./src/components/FilterSelection.vue?801c","webpack:///./src/components/SearchCard.vue","webpack:///src/components/SearchCard.vue","webpack:///./src/components/SearchCard.vue?21d7","webpack:///./src/components/SearchCard.vue?5882","webpack:///./src/mixins/filter-mixin.js","webpack:///src/components/Filter.vue","webpack:///./src/components/Filter.vue?633a","webpack:///./src/components/Filter.vue?b81a","webpack:///./src/components/ListMap.vue","webpack:///./src/components/ListMapPopup.vue","webpack:///src/components/ListMapPopup.vue","webpack:///./src/components/ListMapPopup.vue?7665","webpack:///./src/components/ListMapPopup.vue?02b6","webpack:///src/components/ListMap.vue","webpack:///./src/components/ListMap.vue?1f25","webpack:///./src/components/ListMap.vue?9aac","webpack:///./src/components/Desktop/ListHeader.vue","webpack:///src/components/Desktop/ListHeader.vue","webpack:///./src/components/Desktop/ListHeader.vue?78b2","webpack:///./src/components/Desktop/ListHeader.vue?127f","webpack:///./src/components/Desktop/Filter.vue","webpack:///./src/components/Desktop/SearchBox.vue","webpack:///src/components/Desktop/SearchBox.vue","webpack:///./src/components/Desktop/SearchBox.vue?51f7","webpack:///./src/components/Desktop/SearchBox.vue?16a7","webpack:///./src/components/Desktop/FilterSelection.vue","webpack:///src/components/Desktop/FilterSelection.vue","webpack:///./src/components/Desktop/FilterSelection.vue?39e5","webpack:///./src/components/Desktop/FilterSelection.vue?8472","webpack:///src/components/Desktop/Filter.vue","webpack:///./src/components/Desktop/Filter.vue?4aa1","webpack:///./src/components/Desktop/Filter.vue?1a63","webpack:///./src/components/ListNoHits.vue","webpack:///src/components/ListNoHits.vue","webpack:///./src/components/ListNoHits.vue?bc1a","webpack:///./src/components/ListNoHits.vue?c925","webpack:///src/List.vue","webpack:///./src/List.vue?35a7","webpack:///./src/List.vue?1e89","webpack:///./src/components/ListMapPopup.vue?41ac","webpack:///./src/components/Desktop/SearchBox.vue?f2de","webpack:///./src/components/ListCard.vue?c44e","webpack:///./src/components/FilterSelectionList.vue?ac98","webpack:///./src/components/SearchCard.vue?9e74","webpack:///./src/components/FilterSelectionButtons.vue?04b2","webpack:///./src/components/ListMap.vue?0207","webpack:///./src/List.vue?9269","webpack:///./src/components/Desktop/FilterSelection.vue?19a4","webpack:///./src/List.vue?b7f1","webpack:///./src/components/ListMap.vue?d50f","webpack:///./src/components/SearchCard.vue?3888","webpack:///./src/components/Desktop/SearchBox.vue?708f","webpack:///./src/components/Desktop/Filter.vue?a056","webpack:///./src/components/FilterSelectionPlus.vue?f02d","webpack:///./src/components/FilterSelectionPlus.vue?4ed3","webpack:///./node_modules/leaflet.markercluster/dist/MarkerCluster.css","webpack:///./src/components/FilterSelectionList.vue?b15d","webpack:///./src/components/Filter.vue?f907","webpack:///./src/components/SearchCard.vue?98ce","webpack:///./src/components/FilterSelectionList.vue?9b52","webpack:///./node_modules/vue2-leaflet-markercluster/dist/Vue2LeafletMarkercluster.js","webpack:///./src/components/FilterSelectionPlus.vue?a630","webpack:///./src/components/Desktop/FilterSelection.vue?6cea","webpack:///./src/components/ListCard.vue?6651","webpack:///./src/components/ListMap.vue?db8f","webpack:///./src/components/ListMapPopup.vue?243c"],"names":["content","__esModule","default","module","i","locals","exports","add","___CSS_LOADER_API_IMPORT___","push","global","factory","this","MarkerClusterGroup","L","FeatureGroup","extend","options","maxClusterRadius","iconCreateFunction","clusterPane","Marker","prototype","pane","spiderfyOnEveryZoom","spiderfyOnMaxZoom","showCoverageOnHover","zoomToBoundsOnClick","singleMarkerMode","disableClusteringAtZoom","removeOutsideVisibleBounds","animate","animateAddingMarkers","spiderfyShapePositions","spiderfyDistanceMultiplier","spiderLegPolylineOptions","weight","color","opacity","chunkedLoading","chunkInterval","chunkDelay","chunkProgress","polygonOptions","initialize","Util","setOptions","_defaultIconCreateFunction","_featureGroup","featureGroup","addEventParent","_nonPointGroup","_inZoomAnimation","_needsClustering","_needsRemoving","_currentShownBounds","_queue","_childMarkerEventHandlers","_childMarkerDragStart","_childMarkerMoved","_childMarkerDragEnd","DomUtil","TRANSITION","_withAnimation","_noAnimation","_markerCluster","MarkerCluster","MarkerClusterNonAnimated","addLayer","layer","LayerGroup","addLayers","getLatLng","fire","_map","hasLayer","_unspiderfy","_addLayer","_maxZoom","_topClusterLevel","_recalculateBounds","_refreshClustersIcons","visibleLayer","currentZoom","_zoom","__parent","contains","_animationAddLayer","_animationAddLayerNonAnimated","removeLayer","removeLayers","_unspiderfyLayer","_removeLayer","off","clusterShow","_arraySplice","latlng","_latlng","layersArray","skipLayerAddEvent","isArray","m","fg","npg","chunked","l","length","offset","originalArray","started","Date","getTime","process","bind","start","elapsed","slice","_extractNonGroupLayers","getChildCount","markers","getAllChildMarkers","otherMarker","_recursivelyAddChildrenToMap","setTimeout","needsClustering","layersArray2","l2","clearLayers","_gridClusters","_gridUnclustered","_noanimationUnspiderfy","eachLayer","marker","_generateInitialClusters","getBounds","bounds","LatLngBounds","_bounds","method","context","thisNeedsRemoving","j","needsRemoving","call","getLayers","layers","getLayer","id","result","parseInt","stamp","anArray","_group","zoomToShowLayer","callback","map","showMarker","_icon","once","spiderfy","Math","round","on","panTo","zoomToBounds","onAdd","isFinite","getMaxZoom","addTo","_maxLat","crs","projection","MAX_LATITUDE","newlatlng","_getExpandedVisibleBounds","_zoomEnd","_moveEnd","_spiderfierOnAdd","_bindEvents","onRemove","_unbindEvents","_mapPane","className","replace","_spiderfierOnRemove","_hideCoverage","remove","getVisibleParent","vMarker","obj","splice","_removeFromGridUnclustered","z","gridUnclustered","minZoom","floor","getMinZoom","removeObject","project","e","target","__dragStart","_ignoreMove","isPopupOpen","_popup","isOpen","_moveChild","oldLatLng","openPopup","from","to","dragStart","removeFromDistanceGrid","dontUpdateMap","gridClusters","cluster","_markers","_childCount","_boundsNeedUpdate","_cLatLng","addObject","_childClusters","_iconNeedsUpdate","_isOrIsParent","el","oel","parentNode","type","data","propagate","originalEvent","relatedTarget","listens","childCount","c","DivIcon","html","iconSize","Point","_zoomOrSpiderfy","_showCoverage","bottomCluster","keyCode","_container","focus","_shownPolygon","_spiderfied","Polygon","getConvexHull","_mergeSplitClusters","newBounds","_recursivelyRemoveChildrenFromMap","maxZoom","ceil","radius","radiusFn","zoom","DistanceGrid","markerPoint","_overrideMarkerIcon","closest","getNearObject","_addChild","parent","newCluster","lastParent","_updateIcon","_enqueue","fn","_queueTimeout","_processQueue","clearTimeout","mapZoom","intersects","_animationStart","_animationZoomIn","_animationZoomOut","Browser","mobile","_checkBoundsMaxLat","pad","_mapBoundsInfinite","maxLat","undefined","getNorth","_northEast","lat","Infinity","getSouth","_southWest","_addToMap","group","output","icon","include","LatLng","previousZoomLevel","newZoomLevel","_recursively","startPos","_isSingleParent","clusterHide","_forceLayout","_recursivelyBecomeVisible","n","_recursivelyRestoreChildPositions","_animationEnd","_animationZoomOutSingle","me","_setPos","latLngToLayerPoint","_recursivelyAnimateChildrenInAndAddSelfToMap","setLatLng","falseFn","document","body","offsetWidth","markerClusterGroup","Icon","a","b","storageArray","ignoreDraggedMarker","fitBoundsOptions","childClusters","boundsZoom","getBoundsZoom","getZoom","newClusters","concat","setView","fitBounds","setIcon","createIcon","_iconObj","createShadow","new1","isNotificationFromChild","_setClusterCenter","child","_resetBounds","lng","childLatLng","latSum","lngSum","totalCount","_wLatLng","_backupLatlng","_recursivelyAnimateChildrenIn","center","cm","mapMinZoom","zoomLevel","nm","_restorePosition","k","previousBounds","exceptBounds","boundsToApplyTo","zoomLevelToStart","zoomLevelToStop","runAtEveryLevel","runAtBottomLevel","backup","setOpacity","cellSize","_cellSize","_sqCellSize","_grid","_objectPoint","point","x","_getCoord","y","grid","row","cell","updateObject","len","eachObject","removed","dist","objectPoint","closestDistSq","_sqDist","coord","p","p2","dx","dy","QuickHull","getDistant","cpt","bl","vY","vX","findMostDistantPointFromBaseLine","baseLine","latLngs","pt","d","maxD","maxPt","newPoints","maxPoint","buildConvexHull","convexHullBaseLines","t","minLat","maxLng","minLng","maxLatPt","minLatPt","maxLngPt","minLngPt","minPt","ch","childMarkers","points","_2PI","PI","_circleFootSeparation","_circleStartAngle","_spiralFootSeparation","_spiralLengthStart","_spiralLengthFactor","_circleSpiralSwitchover","positions","_generatePointsSpiral","_generatePointsCircle","_animationSpiderfy","unspiderfy","zoomDetails","_animationUnspiderfy","count","centerPt","angle","circumference","legLength","angleStep","res","max","cos","sin","_round","separation","lengthFactor","_preSpiderfyLatlng","setZIndexOffset","_spiderLeg","leg","newPos","legOptions","layerPointToLatLng","Polyline","legPath","thisLayerLatLng","thisLayerPos","svg","Path","SVG","finalLegOpacity","_path","getTotalLength","style","strokeDasharray","strokeDashoffset","setStyle","nonAnimatable","_latLngToNewLayerPoint","closePopup","stillThereChildCount","apply","arguments","_unspiderfyWrapper","zoomAnimation","_unspiderfyZoomStart","touch","getRenderer","_unspiderfyZoomAnim","hasClass","refreshClusters","_layers","_flagParentsIconsNeedUpdate","_refreshSingleMarkerModeMarkers","refreshIconOptions","directlyRefreshClusters","Object","defineProperty","value","attrs","_vm","error","_c","directives","rawName","expression","ref","staticClass","isMobile","showMap","$event","loadData","staticStyle","isLoading","listEntries","key","listEntry","staticRenderFns","render","detailViewURL","gotoDetails","class","height","width","scopedSlots","counter","idx","loadLazyAssets","domProps","_e","_s","stopPropagation","trustYouId","isNarrow","mdiMapMarkerDistance","unit","distance","loc","distanceName","serviceProvider","referenceServiceInfo","hasMultipleAccommodations","multipleAccommodationsInfo","click","preventDefault","_v","$t","numberOfAccommodations","serviceProviderMixin","name","components","EoServiceProviderFeatureChips","EoStars","props","tomasId","String","required","vacancies","methods","skipTrustYou","$store","dispatch","message","trustYouIdLoaded","loadTrustYouRating","event","ignoreButtons","elementIsOrHasButtonParent","action","catch","window","open","element","HTMLButtonElement","parentElement","pictureWithMaxWidth","pictureUrl","getSizedPictureUrl","computed","companyName","address","companyName1","trim","location","state","configIsLoaded","layout","getters","getLayout","getLayoutText","primeColor","topIcon","topLabel","galleryPicture","pictures","pics","pic","Gallery","Preview","longitude","latitude","getDistance","searchItem","referenceVacancy","searchAccommodation","referenceService","serviceID","service","services","_accommodationType$la","wrap","text","accommodationType","getAccommodationType","touristic_type","label","features","rooms","matchFeatureList","data_classes","WBX00020010000100907","getLabel","qmeter","maximum_persons","join","min","serviceName","vacancyPrice","price","formatPrice","$i18n","locale","primaryColor","$vuetify","theme","currentTheme","primary","hasVacancies","addApiUrlToUrl","detailUri","replaceAll","url","trustYouAPIKey","config","watch","oldId","newId","EoClassificationFromTo","EoFeatureIcons","EoAccommodationTypesList","mixins","layoutDataMixin","logMixin","favoritesMixin","index","Boolean","clicked","mdiChevronLeft","mdiChevronRight","aboveTheFoldCount","pictureHeight","pictureWidth","pictureWidthSimple","mounted","initDelimiterButtons","lang","defaultLocale","current","updated","hideDelimiterButtons","_this$$refs$listCarou","controls","$refs","listCarouselRef","$el","querySelector","showNearDelimiterButtons","_this$$refs$listCarou2","selector","querySelectorAll","forEach","display","showDelimiterButton","number","_this$$refs$listCarou3","firstBtn","buttonAmount","buttons","found","val","rest","logClicked","log","component","compiledSearchData","isLoadingInForeground","filterUpdated","isDefaultSort","sorting","accentColor","totalFavorites","toggleFilterFavorites","favoritesFiltered","toggleMap","mdiClose","click:close","filter","proxy","inSearchDialog","dialog","$$v","model","onlyBookable","setFilterResults","list","facetsEmpty","item","checkedValues","facetsLoading","showMore","leftElementsCount","filterSelectionMixin","desktop","idList","f","getConfigItemById","defaultSpFeature","indexOf","ids","mapFeatureToList","featureLists","myList","Array","facets","keys","selectedTypeValues","changed","commit","$emit","mdiChevronDown","mdiChevronUp","canShowMore","getItems","openCount","visibleList","listHelper","getFacetData","indexOffset","listItems","hasResults","listChanged","values","setActive","inStore","facetEmpty","split","currentIndex","mdiPlus","mdiMinus","debouncedChange","debounce","selectedId","ftypes","find","includes","incrementId","emitChange","decrementId","updateStoreValues","func","delay","timeout","args","_this$ids","currentId","filterListMixin","filters","hiddenFilterGroups","actualFilters","onlyBookableMixin","bookableOnly","toggleBookable","_self","_l","selected","maxCount","updateFilter","checkFacets","_this$$store","currentFilter","filterIndex","findIndex","newVal","handler","deep","EoFilterSelectionClassifications","EoFilterSelectionButtons","EoFilterSelectionList","FilterSelectionPlus","Number","hasActiveFilters","mdiFilterOutline","showBookableOnlySwitch","hide","bookable","accent","clearAllFilters","$set","$forceUpdate","radii","searchRadius","onSearchDate","updateSearchDate","search","EoFormAccommdationSelect","EoFormAutocompleter","DatePicker","searchDate","oldSearchItem","documentWidth","mdiCalendarMonth","mdiArrowDown","mdiArrowUp","isLocationBasedSearch","created","getDataFromStore","input","end","nights","emitUpdate","autocompleterChanged","autocompleterBlurred","closeSearch","onResize","scrollWidth","documentElement","clientWidth","clearData","filterMixin","mdiHeartOutline","mdiHeart","mdiMapSearch","mdiSortDescending","mdiSortAscending","sortings","getSortings","actualSortings","getSorting","sort","getDefaultSorting","currentSortingName","currentSortingFullName","pos","substr","sortCode","favorites","filterFavorites","activeFilters","spClassification","getFeature","hidden","getServiceFeature","getClassificationFromIdList","getTouristicType","iLabel","idsArray","setSorting","updateSearch","header","scrollIntoView","behavior","closeFilter","EoClassification","EoChipGroup","EoFilterSelection","EoSearchCard","lastSource","focusAttemptId","mdiMagnify","compiledAutosuggestData","getFullYear","getDate","getMonth","persons","acc","adults","children","tc","focusSearchDialogTarget","attempt","attemptId","$nextTick","searchCard","autocompleter","immediate","dateinput","$data","showingDatepicker","activateSearch","activateDateSearch","update","deleteBookableOnly","newValue","mapLoaded","entry","match","circleCenter","mapRadiusColor","centerPointInfo","heartClicked","EoMapIcon","LPopup","matchType","matchId","thePopup","mapObject","Vue","use","fullscreen","EoListMapPopup","LMap","LTileLayer","LControl","LCircle","LTooltip","LGeoJson","Vue2LeafletMarkerCluster","isFullScreen","attribution","geoEntries","geoJsonOverlay","oldRadius","dragging","mdiOpenInNew","mdiFullscreen","mdiFullscreenExit","mdiCloseCircle","coordinates","geoDefaultLat","geoDefaultLng","niceRadius","geoJsonOptions","fill","properties","fillColor","fillOpacity","stroke","_this$$store$state$co","_this$$store$state$co2","myListMap","tileServerUrl","tileServerAttribution","fullScreenToggle","elem","$fullscreen","toggle","fullscreenChange","invalidateSize","mapResized","circle","latLngBounds","boundsSet","reset","disable","scrollWheelZoom","enable","mapOverlay","fetch","then","json","err","console","radiusMouseDown","mapMouseUp","mapMouseMove","closeMap","searchDataText","resetSearch","resetFilters","delayedSearch","onRadiusChanged","_window","dateSearchBox","clear","filterPanels","Promise","resolve","interval","setInterval","clearInterval","EoDesktopFilterSelection","EoSearchBoxDesktop","thisCard","filtersOnly","hints","hasSearchDate","VueI18n","i18n","createLang","EoListNoHits","EoDesktopFilter","EoDesktopListHeader","EoListMap","EoFilter","EoListCard","isLoadingData","widgetWidth","nextPage","substring","page","resetData","backgroundSearch","fromMap","getSearchConfig","apiSearch","apiUrl","apiKey","entries_per_page","hits","results","sameFirst","setDataFromSource","session_id","theMap","_data$filter","_data$filter2","theWidget","r","o","configurable","enumerable","get","hasOwnProperty","s","u","ready","DomEvent","$listeners","propsBinder","parentContainer","findRealParent","$parent","beforeDestroy","_scopeId","esModule","$createElement","_t","___CSS_LOADER_AT_RULE_IMPORT_0___","___CSS_LOADER_AT_RULE_IMPORT_1___"],"mappings":"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","file":"eobuchung-lib-routed-list.js?h=d9828b800237c3e31950","sourcesContent":["export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=style&index=0&id=4efbf83c&prod&lang=sass\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=style&index=0&id=9c711cb4&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"13582ab2\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .eobuchung-desktop-filter{width:260px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .eobuchung-filter{min-width:330px}.eobuchung-widget .eobuchung-filter .eobuchung-filter-buttons .eobuchung-search-btn{margin-bottom:10px;border-bottom:1px solid!important}.eobuchung-widget .eobuchung-filter .eobuchung-filter-buttons .eobuchung-clear-data-btn{background:unset;text-transform:uppercase}.eobuchung-widget .eobuchung-filter .eobuchung-filter-buttons .eobuchung-clear-data-btn:hover{color:#000}.eobuchung-widget .eobuchung-filter .eobuchung-filter-buttons .eobuchung-clear-data-btn span{justify-content:end!important}.eobuchung-widget .eobuchung-filter-search-text .v-input__slot{background-color:#fff!important}.eobuchung-widget .eobuchung-filter-buttons{background-color:#eee!important}.eobuchung-widget .eobuchung-filter-buttons button.v-btn{background-color:#fff;width:100%;display:block;text-transform:inherit;font-weight:400}.eobuchung-widget .eobuchung-filter-buttons button.v-btn .v-btn__content{justify-content:space-between}.eobuchung-widget .eobuchung-filter-buttons button.v-btn:not(:last-child){border-bottom:5px}.eobuchung-widget .eobuchung-filter-button-text{overflow:hidden;text-overflow:ellipsis}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/*\n * Leaflet.markercluster 1.5.3+master.e5124b2,\n * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.\n * https://github.com/Leaflet/Leaflet.markercluster\n * (c) 2012-2017, Dave Leaver, smartrak\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {})));\n}(this, function (exports) { 'use strict';\n\n\t/*\n\t * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within\n\t */\n\n\tvar MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({\n\n\t\toptions: {\n\t\t\tmaxClusterRadius: 80, //A cluster will cover at most this many pixels from its center\n\t\t\ticonCreateFunction: null,\n\t\t\tclusterPane: L.Marker.prototype.options.pane,\n\n\t\t\tspiderfyOnEveryZoom: false,\n\t\t\tspiderfyOnMaxZoom: true,\n\t\t\tshowCoverageOnHover: true,\n\t\t\tzoomToBoundsOnClick: true,\n\t\t\tsingleMarkerMode: false,\n\n\t\t\tdisableClusteringAtZoom: null,\n\n\t\t\t// Setting this to false prevents the removal of any clusters outside of the viewpoint, which\n\t\t\t// is the default behaviour for performance reasons.\n\t\t\tremoveOutsideVisibleBounds: true,\n\n\t\t\t// Set to false to disable all animations (zoom and spiderfy).\n\t\t\t// If false, option animateAddingMarkers below has no effect.\n\t\t\t// If L.DomUtil.TRANSITION is falsy, this option has no effect.\n\t\t\tanimate: true,\n\n\t\t\t//Whether to animate adding markers after adding the MarkerClusterGroup to the map\n\t\t\t// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.\n\t\t\tanimateAddingMarkers: false,\n\n\t\t\t// Make it possible to provide custom function to calculate spiderfy shape positions\n\t\t\tspiderfyShapePositions: null,\n\n\t\t\t//Increase to increase the distance away that spiderfied markers appear from the center\n\t\t\tspiderfyDistanceMultiplier: 1,\n\n\t\t\t// Make it possible to specify a polyline options on a spider leg\n\t\t\tspiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },\n\n\t\t\t// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts\n\t\t\tchunkedLoading: false,\n\t\t\tchunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)\n\t\t\tchunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser\n\t\t\tchunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)\n\n\t\t\t//Options to pass to the L.Polygon constructor\n\t\t\tpolygonOptions: {}\n\t\t},\n\n\t\tinitialize: function (options) {\n\t\t\tL.Util.setOptions(this, options);\n\t\t\tif (!this.options.iconCreateFunction) {\n\t\t\t\tthis.options.iconCreateFunction = this._defaultIconCreateFunction;\n\t\t\t}\n\n\t\t\tthis._featureGroup = L.featureGroup();\n\t\t\tthis._featureGroup.addEventParent(this);\n\n\t\t\tthis._nonPointGroup = L.featureGroup();\n\t\t\tthis._nonPointGroup.addEventParent(this);\n\n\t\t\tthis._inZoomAnimation = 0;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of\n\t\t\t//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move\n\t\t\tthis._currentShownBounds = null;\n\n\t\t\tthis._queue = [];\n\n\t\t\tthis._childMarkerEventHandlers = {\n\t\t\t\t'dragstart': this._childMarkerDragStart,\n\t\t\t\t'move': this._childMarkerMoved,\n\t\t\t\t'dragend': this._childMarkerDragEnd,\n\t\t\t};\n\n\t\t\t// Hook the appropriate animation methods.\n\t\t\tvar animate = L.DomUtil.TRANSITION && this.options.animate;\n\t\t\tL.extend(this, animate ? this._withAnimation : this._noAnimation);\n\t\t\t// Remember which MarkerCluster class to instantiate (animated or not).\n\t\t\tthis._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;\n\t\t},\n\n\t\taddLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.addLayers([layer]);\n\t\t\t}\n\n\t\t\t//Don't cluster non point data\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.addLayer(layer);\n\t\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering.push(layer);\n\t\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\n\t\t\t//If we have already clustered we'll need to add this one to a cluster\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t}\n\n\t\t\tthis._addLayer(layer, this._maxZoom);\n\t\t\tthis.fire('layeradd', { layer: layer });\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Work out what is visible\n\t\t\tvar visibleLayer = layer,\n\t\t\t    currentZoom = this._zoom;\n\t\t\tif (layer.__parent) {\n\t\t\t\twhile (visibleLayer.__parent._zoom >= currentZoom) {\n\t\t\t\t\tvisibleLayer = visibleLayer.__parent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._currentShownBounds.contains(visibleLayer.getLatLng())) {\n\t\t\t\tif (this.options.animateAddingMarkers) {\n\t\t\t\t\tthis._animationAddLayer(layer, visibleLayer);\n\t\t\t\t} else {\n\t\t\t\t\tthis._animationAddLayerNonAnimated(layer, visibleLayer);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tremoveLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.removeLayers([layer]);\n\t\t\t}\n\n\t\t\t//Non point layers\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.removeLayer(layer);\n\t\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tif (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {\n\t\t\t\t\tthis._needsRemoving.push({ layer: layer, latlng: layer._latlng });\n\t\t\t\t}\n\t\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!layer.__parent) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t\tthis._unspiderfyLayer(layer);\n\t\t\t}\n\n\t\t\t//Remove the marker from clusters\n\t\t\tthis._removeLayer(layer, true);\n\t\t\tthis.fire('layerremove', { layer: layer });\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\tlayer.off(this._childMarkerEventHandlers, this);\n\n\t\t\tif (this._featureGroup.hasLayer(layer)) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and adds them in bulk\n\t\taddLayers: function (layersArray, skipLayerAddEvent) {\n\t\t\tif (!L.Util.isArray(layersArray)) {\n\t\t\t\treturn this.addLayer(layersArray);\n\t\t\t}\n\n\t\t\tvar fg = this._featureGroup,\n\t\t\t    npg = this._nonPointGroup,\n\t\t\t    chunked = this.options.chunkedLoading,\n\t\t\t    chunkInterval = this.options.chunkInterval,\n\t\t\t    chunkProgress = this.options.chunkProgress,\n\t\t\t    l = layersArray.length,\n\t\t\t    offset = 0,\n\t\t\t    originalArray = true,\n\t\t\t    m;\n\n\t\t\tif (this._map) {\n\t\t\t\tvar started = (new Date()).getTime();\n\t\t\t\tvar process = L.bind(function () {\n\t\t\t\t\tvar start = (new Date()).getTime();\n\n\t\t\t\t\t// Make sure to unspiderfy before starting to add some layers\n\t\t\t\t\tif (this._map && this._unspiderfy) {\n\t\t\t\t\t\tthis._unspiderfy();\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\t\tif (chunked && offset % 200 === 0) {\n\t\t\t\t\t\t\t// every couple hundred markers, instrument the time elapsed since processing started:\n\t\t\t\t\t\t\tvar elapsed = (new Date()).getTime() - start;\n\t\t\t\t\t\t\tif (elapsed > chunkInterval) {\n\t\t\t\t\t\t\t\tbreak; // been working too hard, time to take a break :-)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\t\t// Side effects:\n\t\t\t\t\t\t// - Total increases, so chunkProgress ratio jumps backward.\n\t\t\t\t\t\t// - Groups are not included in this group, only their non-group child layers (hasLayer).\n\t\t\t\t\t\t// Changing array length while looping does not affect performance in current browsers:\n\t\t\t\t\t\t// http://jsperf.com/for-loop-changing-length/6\n\t\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._addLayer(m, this._maxZoom);\n\t\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will\n\t\t\t\t\t\tif (m.__parent) {\n\t\t\t\t\t\t\tif (m.__parent.getChildCount() === 2) {\n\t\t\t\t\t\t\t\tvar markers = m.__parent.getAllChildMarkers(),\n\t\t\t\t\t\t\t\t    otherMarker = markers[0] === m ? markers[1] : markers[0];\n\t\t\t\t\t\t\t\tfg.removeLayer(otherMarker);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunkProgress) {\n\t\t\t\t\t\t// report progress and time elapsed:\n\t\t\t\t\t\tchunkProgress(offset, l, (new Date()).getTime() - started);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Completed processing all markers.\n\t\t\t\t\tif (offset === l) {\n\n\t\t\t\t\t\t// Refresh bounds and weighted positions.\n\t\t\t\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\t\t\t\tthis._refreshClustersIcons();\n\n\t\t\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(process, this.options.chunkDelay);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tprocess();\n\t\t\t} else {\n\t\t\t\tvar needsClustering = this._needsClustering;\n\n\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsClustering.push(m);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and removes them in bulk\n\t\tremoveLayers: function (layersArray) {\n\t\t\tvar i, m,\n\t\t\t    l = layersArray.length,\n\t\t\t    fg = this._featureGroup,\n\t\t\t    npg = this._nonPointGroup,\n\t\t\t    originalArray = true;\n\n\t\t\tif (!this._map) {\n\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\tm = layersArray[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._arraySplice(this._needsClustering, m);\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tthis._needsRemoving.push({ layer: m, latlng: m._latlng });\n\t\t\t\t\t}\n\t\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\n\t\t\t\t// Work on a copy of the array, so that next loop is not affected.\n\t\t\t\tvar layersArray2 = layersArray.slice(),\n\t\t\t\t    l2 = l;\n\t\t\t\tfor (i = 0; i < l2; i++) {\n\t\t\t\t\tm = layersArray2[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray2);\n\t\t\t\t\t\tl2 = layersArray2.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._unspiderfyLayer(m);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\tm = layersArray[i];\n\n\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!m.__parent) {\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis._removeLayer(m, true, true);\n\t\t\t\tthis.fire('layerremove', { layer: m });\n\n\t\t\t\tif (fg.hasLayer(m)) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Fix up the clusters and markers on the map\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Removes all layers from the MarkerClusterGroup\n\t\tclearLayers: function () {\n\t\t\t//Need our own special implementation as the LayerGroup one doesn't work for us\n\n\t\t\t//If we aren't on the map (yet), blow away the markers we know of\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering = [];\n\t\t\t\tthis._needsRemoving = [];\n\t\t\t\tdelete this._gridClusters;\n\t\t\t\tdelete this._gridUnclustered;\n\t\t\t}\n\n\t\t\tif (this._noanimationUnspiderfy) {\n\t\t\t\tthis._noanimationUnspiderfy();\n\t\t\t}\n\n\t\t\t//Remove all the visible layers\n\t\t\tthis._featureGroup.clearLayers();\n\t\t\tthis._nonPointGroup.clearLayers();\n\n\t\t\tthis.eachLayer(function (marker) {\n\t\t\t\tmarker.off(this._childMarkerEventHandlers, this);\n\t\t\t\tdelete marker.__parent;\n\t\t\t}, this);\n\n\t\t\tif (this._map) {\n\t\t\t\t//Reset _topClusterLevel and the DistanceGrids\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Override FeatureGroup.getBounds as it doesn't work\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tbounds.extend(this._topClusterLevel._bounds);\n\t\t\t}\n\n\t\t\tfor (var i = this._needsClustering.length - 1; i >= 0; i--) {\n\t\t\t\tbounds.extend(this._needsClustering[i].getLatLng());\n\t\t\t}\n\n\t\t\tbounds.extend(this._nonPointGroup.getBounds());\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Overrides LayerGroup.eachLayer\n\t\teachLayer: function (method, context) {\n\t\t\tvar markers = this._needsClustering.slice(),\n\t\t\t\tneedsRemoving = this._needsRemoving,\n\t\t\t\tthisNeedsRemoving, i, j;\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tthis._topClusterLevel.getAllChildMarkers(markers);\n\t\t\t}\n\n\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\tthisNeedsRemoving = true;\n\n\t\t\t\tfor (j = needsRemoving.length - 1; j >= 0; j--) {\n\t\t\t\t\tif (needsRemoving[j].layer === markers[i]) {\n\t\t\t\t\t\tthisNeedsRemoving = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (thisNeedsRemoving) {\n\t\t\t\t\tmethod.call(context, markers[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._nonPointGroup.eachLayer(method, context);\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayers\n\t\tgetLayers: function () {\n\t\t\tvar layers = [];\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tlayers.push(l);\n\t\t\t});\n\t\t\treturn layers;\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayer, WARNING: Really bad performance\n\t\tgetLayer: function (id) {\n\t\t\tvar result = null;\n\n\t\t\tid = parseInt(id, 10);\n\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tif (L.stamp(l) === id) {\n\t\t\t\t\tresult = l;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t},\n\n\t\t//Returns true if the given layer is in this MarkerClusterGroup\n\t\thasLayer: function (layer) {\n\t\t\tif (!layer) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar i, anArray = this._needsClustering;\n\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === layer) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tanArray = this._needsRemoving;\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i].layer === layer) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);\n\t\t},\n\n\t\t//Zoom down to show the given layer (spiderfying if necessary) then calls the callback\n\t\tzoomToShowLayer: function (layer, callback) {\n\n\t\t\tvar map = this._map;\n\n\t\t\tif (typeof callback !== 'function') {\n\t\t\t\tcallback = function () {};\n\t\t\t}\n\n\t\t\tvar showMarker = function () {\n\t\t\t\t// Assumes that map.hasLayer checks for direct appearance on map, not recursively calling\n\t\t\t\t// hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true)\n\t\t\t\tif ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) {\n\t\t\t\t\tthis._map.off('moveend', showMarker, this);\n\t\t\t\t\tthis.off('animationend', showMarker, this);\n\n\t\t\t\t\tif (map.hasLayer(layer)) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if (layer.__parent._icon) {\n\t\t\t\t\t\tthis.once('spiderfied', callback, this);\n\t\t\t\t\t\tlayer.__parent.spiderfy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {\n\t\t\t\t//Layer is visible ond on screen, immediate return\n\t\t\t\tcallback();\n\t\t\t} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {\n\t\t\t\t//Layer should be visible at this zoom level. It must not be on screen so just pan over to it\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis._map.panTo(layer.getLatLng());\n\t\t\t} else {\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis.on('animationend', showMarker, this);\n\t\t\t\tlayer.__parent.zoomToBounds();\n\t\t\t}\n\t\t},\n\n\t\t//Overrides FeatureGroup.onAdd\n\t\tonAdd: function (map) {\n\t\t\tthis._map = map;\n\t\t\tvar i, l, layer;\n\n\t\t\tif (!isFinite(this._map.getMaxZoom())) {\n\t\t\t\tthrow \"Map has no maxZoom specified\";\n\t\t\t}\n\n\t\t\tthis._featureGroup.addTo(map);\n\t\t\tthis._nonPointGroup.addTo(map);\n\n\t\t\tif (!this._gridClusters) {\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\tthis._maxLat = map.options.crs.projection.MAX_LATITUDE;\n\n\t\t\t//Restore all the positions as they are in the MCG before removing them\n\t\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\t\tlayer = this._needsRemoving[i];\n\t\t\t\tlayer.newlatlng = layer.layer._latlng;\n\t\t\t\tlayer.layer._latlng = layer.latlng;\n\t\t\t}\n\t\t\t//Remove them, then restore their new positions\n\t\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\t\tlayer = this._needsRemoving[i];\n\t\t\t\tthis._removeLayer(layer.layer, true);\n\t\t\t\tlayer.layer._latlng = layer.newlatlng;\n\t\t\t}\n\t\t\tthis._needsRemoving = [];\n\n\t\t\t//Remember the current zoom level and bounds\n\t\t\tthis._zoom = Math.round(this._map._zoom);\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._map.on('zoomend', this._zoomEnd, this);\n\t\t\tthis._map.on('moveend', this._moveEnd, this);\n\n\t\t\tif (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnAdd();\n\t\t\t}\n\n\t\t\tthis._bindEvents();\n\n\t\t\t//Actually add our markers to the map:\n\t\t\tl = this._needsClustering;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis.addLayers(l, true);\n\t\t},\n\n\t\t//Overrides FeatureGroup.onRemove\n\t\tonRemove: function (map) {\n\t\t\tmap.off('zoomend', this._zoomEnd, this);\n\t\t\tmap.off('moveend', this._moveEnd, this);\n\n\t\t\tthis._unbindEvents();\n\n\t\t\t//In case we are in a cluster animation\n\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\n\t\t\tif (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnRemove();\n\t\t\t}\n\n\t\t\tdelete this._maxLat;\n\n\t\t\t//Clean up all the layers we added to the map\n\t\t\tthis._hideCoverage();\n\t\t\tthis._featureGroup.remove();\n\t\t\tthis._nonPointGroup.remove();\n\n\t\t\tthis._featureGroup.clearLayers();\n\n\t\t\tthis._map = null;\n\t\t},\n\n\t\tgetVisibleParent: function (marker) {\n\t\t\tvar vMarker = marker;\n\t\t\twhile (vMarker && !vMarker._icon) {\n\t\t\t\tvMarker = vMarker.__parent;\n\t\t\t}\n\t\t\treturn vMarker || null;\n\t\t},\n\n\t\t//Remove the given object from the given array\n\t\t_arraySplice: function (anArray, obj) {\n\t\t\tfor (var i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === obj) {\n\t\t\t\t\tanArray.splice(i, 1);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.\n\t\t * @param marker to be removed from _gridUnclustered.\n\t\t * @param z integer bottom start zoom level (included)\n\t\t * @private\n\t\t */\n\t\t_removeFromGridUnclustered: function (marker, z) {\n\t\t\tvar map = this._map,\n\t\t\t    gridUnclustered = this._gridUnclustered,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\tfor (; z >= minZoom; z--) {\n\t\t\t\tif (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_childMarkerDragStart: function (e) {\n\t\t\te.target.__dragStart = e.target._latlng;\n\t\t},\n\n\t\t_childMarkerMoved: function (e) {\n\t\t\tif (!this._ignoreMove && !e.target.__dragStart) {\n\t\t\t\tvar isPopupOpen = e.target._popup && e.target._popup.isOpen();\n\n\t\t\t\tthis._moveChild(e.target, e.oldLatLng, e.latlng);\n\n\t\t\t\tif (isPopupOpen) {\n\t\t\t\t\te.target.openPopup();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_moveChild: function (layer, from, to) {\n\t\t\tlayer._latlng = from;\n\t\t\tthis.removeLayer(layer);\n\n\t\t\tlayer._latlng = to;\n\t\t\tthis.addLayer(layer);\n\t\t},\n\n\t\t_childMarkerDragEnd: function (e) {\n\t\t\tvar dragStart = e.target.__dragStart;\n\t\t\tdelete e.target.__dragStart;\n\t\t\tif (dragStart) {\n\t\t\t\tthis._moveChild(e.target, dragStart, e.target._latlng);\n\t\t\t}\t\t\n\t\t},\n\n\n\t\t//Internal function for removing a marker from everything.\n\t\t//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)\n\t\t_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t\tgridUnclustered = this._gridUnclustered,\n\t\t\t\tfg = this._featureGroup,\n\t\t\t\tmap = this._map,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\t//Remove the marker from distance clusters it might be in\n\t\t\tif (removeFromDistanceGrid) {\n\t\t\t\tthis._removeFromGridUnclustered(marker, this._maxZoom);\n\t\t\t}\n\n\t\t\t//Work our way up the clusters removing them as we go if required\n\t\t\tvar cluster = marker.__parent,\n\t\t\t\tmarkers = cluster._markers,\n\t\t\t\totherMarker;\n\n\t\t\t//Remove the marker from the immediate parents marker list\n\t\t\tthis._arraySplice(markers, marker);\n\n\t\t\twhile (cluster) {\n\t\t\t\tcluster._childCount--;\n\t\t\t\tcluster._boundsNeedUpdate = true;\n\n\t\t\t\tif (cluster._zoom < minZoom) {\n\t\t\t\t\t//Top level, do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required\n\t\t\t\t\t//We need to push the other marker up to the parent\n\t\t\t\t\totherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];\n\n\t\t\t\t\t//Update distance grid\n\t\t\t\t\tgridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));\n\t\t\t\t\tgridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));\n\n\t\t\t\t\t//Move otherMarker up to parent\n\t\t\t\t\tthis._arraySplice(cluster.__parent._childClusters, cluster);\n\t\t\t\t\tcluster.__parent._markers.push(otherMarker);\n\t\t\t\t\totherMarker.__parent = cluster.__parent;\n\n\t\t\t\t\tif (cluster._icon) {\n\t\t\t\t\t\t//Cluster is currently on the map, need to put the marker on the map instead\n\t\t\t\t\t\tfg.removeLayer(cluster);\n\t\t\t\t\t\tif (!dontUpdateMap) {\n\t\t\t\t\t\t\tfg.addLayer(otherMarker);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._iconNeedsUpdate = true;\n\t\t\t\t}\n\n\t\t\t\tcluster = cluster.__parent;\n\t\t\t}\n\n\t\t\tdelete marker.__parent;\n\t\t},\n\n\t\t_isOrIsParent: function (el, oel) {\n\t\t\twhile (oel) {\n\t\t\t\tif (el === oel) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\toel = oel.parentNode;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t//Override L.Evented.fire\n\t\tfire: function (type, data, propagate) {\n\t\t\tif (data && data.layer instanceof L.MarkerCluster) {\n\t\t\t\t//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)\n\t\t\t\tif (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttype = 'cluster' + type;\n\t\t\t}\n\n\t\t\tL.FeatureGroup.prototype.fire.call(this, type, data, propagate);\n\t\t},\n\n\t\t//Override L.Evented.listens\n\t\tlistens: function (type, propagate) {\n\t\t\treturn L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);\n\t\t},\n\n\t\t//Default functionality\n\t\t_defaultIconCreateFunction: function (cluster) {\n\t\t\tvar childCount = cluster.getChildCount();\n\n\t\t\tvar c = ' marker-cluster-';\n\t\t\tif (childCount < 10) {\n\t\t\t\tc += 'small';\n\t\t\t} else if (childCount < 100) {\n\t\t\t\tc += 'medium';\n\t\t\t} else {\n\t\t\t\tc += 'large';\n\t\t\t}\n\n\t\t\treturn new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });\n\t\t},\n\n\t\t_bindEvents: function () {\n\t\t\tvar map = this._map,\n\t\t\t    spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t    showCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t    zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t\t    spiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom;\n\n\t\t\t//Zoom on cluster click or spiderfy if we are at the lowest level\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) {\n\t\t\t\tthis.on('clusterclick clusterkeypress', this._zoomOrSpiderfy, this);\n\t\t\t}\n\n\t\t\t//Show convex hull (boundary) polygon on mouse over\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.on('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.on('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.on('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomOrSpiderfy: function (e) {\n\t\t\tvar cluster = e.layer,\n\t\t\t    bottomCluster = cluster;\n\n\t\t\tif (e.type === 'clusterkeypress' && e.originalEvent && e.originalEvent.keyCode !== 13) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twhile (bottomCluster._childClusters.length === 1) {\n\t\t\t\tbottomCluster = bottomCluster._childClusters[0];\n\t\t\t}\n\n\t\t\tif (bottomCluster._zoom === this._maxZoom &&\n\t\t\t\tbottomCluster._childCount === cluster._childCount &&\n\t\t\t\tthis.options.spiderfyOnMaxZoom) {\n\n\t\t\t\t// All child markers are contained in a single cluster from this._maxZoom to this cluster.\n\t\t\t\tcluster.spiderfy();\n\t\t\t} else if (this.options.zoomToBoundsOnClick) {\n\t\t\t\tcluster.zoomToBounds();\n\t\t\t}\n\n\t\t\tif (this.options.spiderfyOnEveryZoom) {\n\t\t\t\tcluster.spiderfy();\n\t\t\t}\n\n\t\t\t// Focus the map again for keyboard users.\n\t\t\tif (e.originalEvent && e.originalEvent.keyCode === 13) {\n\t\t\t\tthis._map._container.focus();\n\t\t\t}\n\t\t},\n\n\t\t_showCoverage: function (e) {\n\t\t\tvar map = this._map;\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tmap.removeLayer(this._shownPolygon);\n\t\t\t}\n\t\t\tif (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {\n\t\t\t\tthis._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);\n\t\t\t\tmap.addLayer(this._shownPolygon);\n\t\t\t}\n\t\t},\n\n\t\t_hideCoverage: function () {\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tthis._map.removeLayer(this._shownPolygon);\n\t\t\t\tthis._shownPolygon = null;\n\t\t\t}\n\t\t},\n\n\t\t_unbindEvents: function () {\n\t\t\tvar spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t\tshowCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t\tzoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t\t\tspiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom,\n\t\t\t\tmap = this._map;\n\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) {\n\t\t\t\tthis.off('clusterclick clusterkeypress', this._zoomOrSpiderfy, this);\n\t\t\t}\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.off('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.off('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.off('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomEnd: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._mergeSplitClusters();\n\n\t\t\tthis._zoom = Math.round(this._map._zoom);\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\t\t},\n\n\t\t_moveEnd: function () {\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar newBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);\n\n\t\t\tthis._currentShownBounds = newBounds;\n\t\t\treturn;\n\t\t},\n\n\t\t_generateInitialClusters: function () {\n\t\t\tvar maxZoom = Math.ceil(this._map.getMaxZoom()),\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t\tradius = this.options.maxClusterRadius,\n\t\t\t\tradiusFn = radius;\n\n\t\t\t//If we just set maxClusterRadius to a single number, we need to create\n\t\t\t//a simple function to return that number. Otherwise, we just have to\n\t\t\t//use the function we've passed in.\n\t\t\tif (typeof radius !== \"function\") {\n\t\t\t\tradiusFn = function () { return radius; };\n\t\t\t}\n\n\t\t\tif (this.options.disableClusteringAtZoom !== null) {\n\t\t\t\tmaxZoom = this.options.disableClusteringAtZoom - 1;\n\t\t\t}\n\t\t\tthis._maxZoom = maxZoom;\n\t\t\tthis._gridClusters = {};\n\t\t\tthis._gridUnclustered = {};\n\n\t\t\t//Set up DistanceGrids for each zoom\n\t\t\tfor (var zoom = maxZoom; zoom >= minZoom; zoom--) {\n\t\t\t\tthis._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t\tthis._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t}\n\n\t\t\t// Instantiate the appropriate L.MarkerCluster class (animated or not).\n\t\t\tthis._topClusterLevel = new this._markerCluster(this, minZoom - 1);\n\t\t},\n\n\t\t//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)\n\t\t_addLayer: function (layer, zoom) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t    gridUnclustered = this._gridUnclustered,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t    markerPoint, z;\n\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._overrideMarkerIcon(layer);\n\t\t\t}\n\n\t\t\tlayer.on(this._childMarkerEventHandlers, this);\n\n\t\t\t//Find the lowest zoom level to slot this one in\n\t\t\tfor (; zoom >= minZoom; zoom--) {\n\t\t\t\tmarkerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position\n\n\t\t\t\t//Try find a cluster close by\n\t\t\t\tvar closest = gridClusters[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tclosest._addChild(layer);\n\t\t\t\t\tlayer.__parent = closest;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Try find a marker close by to form a new cluster with\n\t\t\t\tclosest = gridUnclustered[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tvar parent = closest.__parent;\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._removeLayer(closest, false);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Create new cluster with these 2 in it\n\n\t\t\t\t\tvar newCluster = new this._markerCluster(this, zoom, closest, layer);\n\t\t\t\t\tgridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));\n\t\t\t\t\tclosest.__parent = newCluster;\n\t\t\t\t\tlayer.__parent = newCluster;\n\n\t\t\t\t\t//First create any new intermediate parent clusters that don't exist\n\t\t\t\t\tvar lastParent = newCluster;\n\t\t\t\t\tfor (z = zoom - 1; z > parent._zoom; z--) {\n\t\t\t\t\t\tlastParent = new this._markerCluster(this, z, lastParent);\n\t\t\t\t\t\tgridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));\n\t\t\t\t\t}\n\t\t\t\t\tparent._addChild(lastParent);\n\n\t\t\t\t\t//Remove closest from this zoom level and any above that it is in, replace with newCluster\n\t\t\t\t\tthis._removeFromGridUnclustered(closest, zoom);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards\n\t\t\t\tgridUnclustered[zoom].addObject(layer, markerPoint);\n\t\t\t}\n\n\t\t\t//Didn't get in anything, add us to the top\n\t\t\tthis._topClusterLevel._addChild(layer);\n\t\t\tlayer.__parent = this._topClusterLevel;\n\t\t\treturn;\n\t\t},\n\n\t\t/**\n\t\t * Refreshes the icon of all \"dirty\" visible clusters.\n\t\t * Non-visible \"dirty\" clusters will be updated when they are added to the map.\n\t\t * @private\n\t\t */\n\t\t_refreshClustersIcons: function () {\n\t\t\tthis._featureGroup.eachLayer(function (c) {\n\t\t\t\tif (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {\n\t\t\t\t\tc._updateIcon();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t//Enqueue code to fire after the marker expand/contract has happened\n\t\t_enqueue: function (fn) {\n\t\t\tthis._queue.push(fn);\n\t\t\tif (!this._queueTimeout) {\n\t\t\t\tthis._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);\n\t\t\t}\n\t\t},\n\t\t_processQueue: function () {\n\t\t\tfor (var i = 0; i < this._queue.length; i++) {\n\t\t\t\tthis._queue[i].call(this);\n\t\t\t}\n\t\t\tthis._queue.length = 0;\n\t\t\tclearTimeout(this._queueTimeout);\n\t\t\tthis._queueTimeout = null;\n\t\t},\n\n\t\t//Merge and split any existing clusters that are too big or small\n\t\t_mergeSplitClusters: function () {\n\t\t\tvar mapZoom = Math.round(this._map._zoom);\n\n\t\t\t//In case we are starting to split before the animation finished\n\t\t\tthis._processQueue();\n\n\t\t\tif (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split\n\t\t\t\tthis._animationStart();\n\t\t\t\t//Remove clusters now off screen\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());\n\n\t\t\t\tthis._animationZoomIn(this._zoom, mapZoom);\n\n\t\t\t} else if (this._zoom > mapZoom) { //Zoom out, merge\n\t\t\t\tthis._animationStart();\n\n\t\t\t\tthis._animationZoomOut(this._zoom, mapZoom);\n\t\t\t} else {\n\t\t\t\tthis._moveEnd();\n\t\t\t}\n\t\t},\n\n\t\t//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)\n\t\t_getExpandedVisibleBounds: function () {\n\t\t\tif (!this.options.removeOutsideVisibleBounds) {\n\t\t\t\treturn this._mapBoundsInfinite;\n\t\t\t} else if (L.Browser.mobile) {\n\t\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds());\n\t\t\t}\n\n\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.\n\t\t},\n\n\t\t/**\n\t\t * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude\n\t\t * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).\n\t\t * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without\n\t\t * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,\n\t\t * making the user think that MCG \"eats\" them and never displays them again.\n\t\t * @param bounds L.LatLngBounds\n\t\t * @returns {L.LatLngBounds}\n\t\t * @private\n\t\t */\n\t\t_checkBoundsMaxLat: function (bounds) {\n\t\t\tvar maxLat = this._maxLat;\n\n\t\t\tif (maxLat !== undefined) {\n\t\t\t\tif (bounds.getNorth() >= maxLat) {\n\t\t\t\t\tbounds._northEast.lat = Infinity;\n\t\t\t\t}\n\t\t\t\tif (bounds.getSouth() <= -maxLat) {\n\t\t\t\t\tbounds._southWest.lat = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Shared animation code\n\t\t_animationAddLayerNonAnimated: function (layer, newCluster) {\n\t\t\tif (newCluster === layer) {\n\t\t\t\tthis._featureGroup.addLayer(layer);\n\t\t\t} else if (newCluster._childCount === 2) {\n\t\t\t\tnewCluster._addToMap();\n\n\t\t\t\tvar markers = newCluster.getAllChildMarkers();\n\t\t\t\tthis._featureGroup.removeLayer(markers[0]);\n\t\t\t\tthis._featureGroup.removeLayer(markers[1]);\n\t\t\t} else {\n\t\t\t\tnewCluster._updateIcon();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extracts individual (i.e. non-group) layers from a Layer Group.\n\t\t * @param group to extract layers from.\n\t\t * @param output {Array} in which to store the extracted layers.\n\t\t * @returns {*|Array}\n\t\t * @private\n\t\t */\n\t\t_extractNonGroupLayers: function (group, output) {\n\t\t\tvar layers = group.getLayers(),\n\t\t\t    i = 0,\n\t\t\t    layer;\n\n\t\t\toutput = output || [];\n\n\t\t\tfor (; i < layers.length; i++) {\n\t\t\t\tlayer = layers[i];\n\n\t\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\t\tthis._extractNonGroupLayers(layer, output);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\toutput.push(layer);\n\t\t\t}\n\n\t\t\treturn output;\n\t\t},\n\n\t\t/**\n\t\t * Implements the singleMarkerMode option.\n\t\t * @param layer Marker to re-style using the Clusters iconCreateFunction.\n\t\t * @returns {L.Icon} The newly created icon.\n\t\t * @private\n\t\t */\n\t\t_overrideMarkerIcon: function (layer) {\n\t\t\tvar icon = layer.options.icon = this.options.iconCreateFunction({\n\t\t\t\tgetChildCount: function () {\n\t\t\t\t\treturn 1;\n\t\t\t\t},\n\t\t\t\tgetAllChildMarkers: function () {\n\t\t\t\t\treturn [layer];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn icon;\n\t\t}\n\t});\n\n\t// Constant bounds used in case option \"removeOutsideVisibleBounds\" is set to false.\n\tL.MarkerClusterGroup.include({\n\t\t_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))\n\t});\n\n\tL.MarkerClusterGroup.include({\n\t\t_noAnimation: {\n\t\t\t//Non Animated versions of everything\n\t\t\t_animationStart: function () {\n\t\t\t\t//Do nothing...\n\t\t\t},\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tthis._animationAddLayerNonAnimated(layer, newCluster);\n\t\t\t}\n\t\t},\n\n\t\t_withAnimation: {\n\t\t\t//Animated versions here\n\t\t\t_animationStart: function () {\n\t\t\t\tthis._map._mapPane.className += ' leaflet-cluster-anim';\n\t\t\t\tthis._inZoomAnimation++;\n\t\t\t},\n\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t\t    fg = this._featureGroup,\n\t\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t\t    i;\n\n\t\t\t\tthis._ignoreMove = true;\n\n\t\t\t\t//Add all children of current clusters to map and remove those clusters from map\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\t\tvar startPos = c._latlng,\n\t\t\t\t\t    markers  = c._markers,\n\t\t\t\t\t    m;\n\n\t\t\t\t\tif (!bounds.contains(startPos)) {\n\t\t\t\t\t\tstartPos = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Fade out old cluster\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Remove all markers that aren't visible any more\n\t\t\t\t\t//TODO: Do we actually need to do this on the higher levels too?\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\t\t\t\t\t\tif (!bounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\tthis._forceLayout();\n\n\t\t\t\t//Update opacities\n\t\t\t\tthis._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);\n\t\t\t\t//TODO Maybe? Update markers in _recursivelyBecomeVisible\n\t\t\t\tfg.eachLayer(function (n) {\n\t\t\t\t\tif (!(n instanceof L.MarkerCluster) && n._icon) {\n\t\t\t\t\t\tn.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {\n\t\t\t\t\tc._recursivelyRestoreChildPositions(newZoomLevel);\n\t\t\t\t});\n\n\t\t\t\tthis._ignoreMove = false;\n\n\t\t\t\t//Remove the old clusters and close the zoom animation\n\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._animationEnd();\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);\n\n\t\t\t\t//Need to add markers for those that weren't on the map before but are now\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t\t//Remove markers that were on the map before but won't be now\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t},\n\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tvar me = this,\n\t\t\t\t    fg = this._featureGroup;\n\n\t\t\t\tfg.addLayer(layer);\n\t\t\t\tif (newCluster !== layer) {\n\t\t\t\t\tif (newCluster._childCount > 2) { //Was already a cluster\n\n\t\t\t\t\t\tnewCluster._updateIcon();\n\t\t\t\t\t\tthis._forceLayout();\n\t\t\t\t\t\tthis._animationStart();\n\n\t\t\t\t\t\tlayer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));\n\t\t\t\t\t\tlayer.clusterHide();\n\n\t\t\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t\t\tfg.removeLayer(layer);\n\t\t\t\t\t\t\tlayer.clusterShow();\n\n\t\t\t\t\t\t\tme._animationEnd();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t} else { //Just became a cluster\n\t\t\t\t\t\tthis._forceLayout();\n\n\t\t\t\t\t\tme._animationStart();\n\t\t\t\t\t\tme._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Private methods for animated versions.\n\t\t_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {\n\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\t//Animate all of the markers in the clusters to move to their cluster center point\n\t\t\tcluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);\n\n\t\t\tvar me = this;\n\n\t\t\t//Update the opacity (If we immediately set it they won't animate)\n\t\t\tthis._forceLayout();\n\t\t\tcluster._recursivelyBecomeVisible(bounds, newZoomLevel);\n\n\t\t\t//TODO: Maybe use the transition timing stuff to make this more reliable\n\t\t\t//When the animations are done, tidy up\n\t\t\tthis._enqueue(function () {\n\n\t\t\t\t//This cluster stopped being a cluster before the timeout fired\n\t\t\t\tif (cluster._childCount === 1) {\n\t\t\t\t\tvar m = cluster._markers[0];\n\t\t\t\t\t//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it\n\t\t\t\t\tthis._ignoreMove = true;\n\t\t\t\t\tm.setLatLng(m.getLatLng());\n\t\t\t\t\tthis._ignoreMove = false;\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._recursively(bounds, newZoomLevel, minZoom, function (c) {\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tme._animationEnd();\n\t\t\t});\n\t\t},\n\n\t\t_animationEnd: function () {\n\t\t\tif (this._map) {\n\t\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\t\t\t}\n\t\t\tthis._inZoomAnimation--;\n\t\t\tthis.fire('animationend');\n\t\t},\n\n\t\t//Force a browser layout of stuff in the map\n\t\t// Should apply the current opacity and location to all elements so we can update them again for an animation\n\t\t_forceLayout: function () {\n\t\t\t//In my testing this works, infact offsetWidth of any element seems to work.\n\t\t\t//Could loop all this._layers and do this for each _icon if it stops working\n\n\t\t\tL.Util.falseFn(document.body.offsetWidth);\n\t\t}\n\t});\n\n\tL.markerClusterGroup = function (options) {\n\t\treturn new L.MarkerClusterGroup(options);\n\t};\n\n\tvar MarkerCluster = L.MarkerCluster = L.Marker.extend({\n\t\toptions: L.Icon.prototype.options,\n\n\t\tinitialize: function (group, zoom, a, b) {\n\n\t\t\tL.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),\n\t            { icon: this, pane: group.options.clusterPane });\n\n\t\t\tthis._group = group;\n\t\t\tthis._zoom = zoom;\n\n\t\t\tthis._markers = [];\n\t\t\tthis._childClusters = [];\n\t\t\tthis._childCount = 0;\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tthis._boundsNeedUpdate = true;\n\n\t\t\tthis._bounds = new L.LatLngBounds();\n\n\t\t\tif (a) {\n\t\t\t\tthis._addChild(a);\n\t\t\t}\n\t\t\tif (b) {\n\t\t\t\tthis._addChild(b);\n\t\t\t}\n\t\t},\n\n\t\t//Recursively retrieve all child markers of this cluster\n\t\tgetAllChildMarkers: function (storageArray, ignoreDraggedMarker) {\n\t\t\tstorageArray = storageArray || [];\n\n\t\t\tfor (var i = this._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\tthis._childClusters[i].getAllChildMarkers(storageArray, ignoreDraggedMarker);\n\t\t\t}\n\n\t\t\tfor (var j = this._markers.length - 1; j >= 0; j--) {\n\t\t\t\tif (ignoreDraggedMarker && this._markers[j].__dragStart) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstorageArray.push(this._markers[j]);\n\t\t\t}\n\n\t\t\treturn storageArray;\n\t\t},\n\n\t\t//Returns the count of how many child markers we have\n\t\tgetChildCount: function () {\n\t\t\treturn this._childCount;\n\t\t},\n\n\t\t//Zoom to the minimum of showing all of the child markers, or the extents of this cluster\n\t\tzoomToBounds: function (fitBoundsOptions) {\n\t\t\tvar childClusters = this._childClusters.slice(),\n\t\t\t\tmap = this._group._map,\n\t\t\t\tboundsZoom = map.getBoundsZoom(this._bounds),\n\t\t\t\tzoom = this._zoom + 1,\n\t\t\t\tmapZoom = map.getZoom(),\n\t\t\t\ti;\n\n\t\t\t//calculate how far we need to zoom down to see all of the markers\n\t\t\twhile (childClusters.length > 0 && boundsZoom > zoom) {\n\t\t\t\tzoom++;\n\t\t\t\tvar newClusters = [];\n\t\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\t\tnewClusters = newClusters.concat(childClusters[i]._childClusters);\n\t\t\t\t}\n\t\t\t\tchildClusters = newClusters;\n\t\t\t}\n\n\t\t\tif (boundsZoom > zoom) {\n\t\t\t\tthis._group._map.setView(this._latlng, zoom);\n\t\t\t} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead\n\t\t\t\tthis._group._map.setView(this._latlng, mapZoom + 1);\n\t\t\t} else {\n\t\t\t\tthis._group._map.fitBounds(this._bounds, fitBoundsOptions);\n\t\t\t}\n\t\t},\n\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\t\t\tbounds.extend(this._bounds);\n\t\t\treturn bounds;\n\t\t},\n\n\t\t_updateIcon: function () {\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tif (this._icon) {\n\t\t\t\tthis.setIcon(this);\n\t\t\t}\n\t\t},\n\n\t\t//Cludge for Icon, we pretend to be an icon for performance\n\t\tcreateIcon: function () {\n\t\t\tif (this._iconNeedsUpdate) {\n\t\t\t\tthis._iconObj = this._group.options.iconCreateFunction(this);\n\t\t\t\tthis._iconNeedsUpdate = false;\n\t\t\t}\n\t\t\treturn this._iconObj.createIcon();\n\t\t},\n\t\tcreateShadow: function () {\n\t\t\treturn this._iconObj.createShadow();\n\t\t},\n\n\n\t\t_addChild: function (new1, isNotificationFromChild) {\n\n\t\t\tthis._iconNeedsUpdate = true;\n\n\t\t\tthis._boundsNeedUpdate = true;\n\t\t\tthis._setClusterCenter(new1);\n\n\t\t\tif (new1 instanceof L.MarkerCluster) {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._childClusters.push(new1);\n\t\t\t\t\tnew1.__parent = this;\n\t\t\t\t}\n\t\t\t\tthis._childCount += new1._childCount;\n\t\t\t} else {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._markers.push(new1);\n\t\t\t\t}\n\t\t\t\tthis._childCount++;\n\t\t\t}\n\n\t\t\tif (this.__parent) {\n\t\t\t\tthis.__parent._addChild(new1, true);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.\n\t\t * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.\n\t\t * @private\n\t\t */\n\t\t_setClusterCenter: function (child) {\n\t\t\tif (!this._cLatLng) {\n\t\t\t\t// when clustering, take position of the first point as the cluster center\n\t\t\t\tthis._cLatLng = child._cLatLng || child._latlng;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Assigns impossible bounding values so that the next extend entirely determines the new bounds.\n\t\t * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.\n\t\t * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.\n\t\t * @private\n\t\t */\n\t\t_resetBounds: function () {\n\t\t\tvar bounds = this._bounds;\n\n\t\t\tif (bounds._southWest) {\n\t\t\t\tbounds._southWest.lat = Infinity;\n\t\t\t\tbounds._southWest.lng = Infinity;\n\t\t\t}\n\t\t\tif (bounds._northEast) {\n\t\t\t\tbounds._northEast.lat = -Infinity;\n\t\t\t\tbounds._northEast.lng = -Infinity;\n\t\t\t}\n\t\t},\n\n\t\t_recalculateBounds: function () {\n\t\t\tvar markers = this._markers,\n\t\t\t    childClusters = this._childClusters,\n\t\t\t    latSum = 0,\n\t\t\t    lngSum = 0,\n\t\t\t    totalCount = this._childCount,\n\t\t\t    i, child, childLatLng, childCount;\n\n\t\t\t// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.\n\t\t\tif (totalCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Reset rather than creating a new object, for performance.\n\t\t\tthis._resetBounds();\n\n\t\t\t// Child markers.\n\t\t\tfor (i = 0; i < markers.length; i++) {\n\t\t\t\tchildLatLng = markers[i]._latlng;\n\n\t\t\t\tthis._bounds.extend(childLatLng);\n\n\t\t\t\tlatSum += childLatLng.lat;\n\t\t\t\tlngSum += childLatLng.lng;\n\t\t\t}\n\n\t\t\t// Child clusters.\n\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\tchild = childClusters[i];\n\n\t\t\t\t// Re-compute child bounds and weighted position first if necessary.\n\t\t\t\tif (child._boundsNeedUpdate) {\n\t\t\t\t\tchild._recalculateBounds();\n\t\t\t\t}\n\n\t\t\t\tthis._bounds.extend(child._bounds);\n\n\t\t\t\tchildLatLng = child._wLatLng;\n\t\t\t\tchildCount = child._childCount;\n\n\t\t\t\tlatSum += childLatLng.lat * childCount;\n\t\t\t\tlngSum += childLatLng.lng * childCount;\n\t\t\t}\n\n\t\t\tthis._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);\n\n\t\t\t// Reset dirty flag.\n\t\t\tthis._boundsNeedUpdate = false;\n\t\t},\n\n\t\t//Set our markers position as given and add it to the map\n\t\t_addToMap: function (startPos) {\n\t\t\tif (startPos) {\n\t\t\t\tthis._backupLatlng = this._latlng;\n\t\t\t\tthis.setLatLng(startPos);\n\t\t\t}\n\t\t\tthis._group._featureGroup.addLayer(this);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar markers = c._markers,\n\t\t\t\t\t\ti, m;\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\n\t\t\t\t\t\t//Only do it if the icon is still on the map\n\t\t\t\t\t\tif (m._icon) {\n\t\t\t\t\t\t\tm._setPos(center);\n\t\t\t\t\t\t\tm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar childClusters = c._childClusters,\n\t\t\t\t\t\tj, cm;\n\t\t\t\t\tfor (j = childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tcm = childClusters[j];\n\t\t\t\t\t\tif (cm._icon) {\n\t\t\t\t\t\t\tcm._setPos(center);\n\t\t\t\t\t\t\tcm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {\n\t\t\tthis._recursively(bounds, newZoomLevel, mapMinZoom,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);\n\n\t\t\t\t\t//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.\n\t\t\t\t\t//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds\n\t\t\t\t\t} else {\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t}\n\n\t\t\t\t\tc._addToMap();\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyBecomeVisible: function (bounds, zoomLevel) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {\n\t\t\t\tc.clusterShow();\n\t\t\t});\n\t\t},\n\n\t\t_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tif (zoomLevel === c._zoom) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Add our child markers at startPos (so they can be animated out)\n\t\t\t\t\tfor (var i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tvar nm = c._markers[i];\n\n\t\t\t\t\t\tif (!bounds.contains(nm._latlng)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (startPos) {\n\t\t\t\t\t\t\tnm._backupLatlng = nm.getLatLng();\n\n\t\t\t\t\t\t\tnm.setLatLng(startPos);\n\t\t\t\t\t\t\tif (nm.clusterHide) {\n\t\t\t\t\t\t\t\tnm.clusterHide();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc._group._featureGroup.addLayer(nm);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._addToMap(startPos);\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyRestoreChildPositions: function (zoomLevel) {\n\t\t\t//Fix positions of child markers\n\t\t\tfor (var i = this._markers.length - 1; i >= 0; i--) {\n\t\t\t\tvar nm = this._markers[i];\n\t\t\t\tif (nm._backupLatlng) {\n\t\t\t\t\tnm.setLatLng(nm._backupLatlng);\n\t\t\t\t\tdelete nm._backupLatlng;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoomLevel - 1 === this._zoom) {\n\t\t\t\t//Reposition child clusters\n\t\t\t\tfor (var j = this._childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\tthis._childClusters[j]._restorePosition();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = this._childClusters.length - 1; k >= 0; k--) {\n\t\t\t\t\tthis._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_restorePosition: function () {\n\t\t\tif (this._backupLatlng) {\n\t\t\t\tthis.setLatLng(this._backupLatlng);\n\t\t\t\tdelete this._backupLatlng;\n\t\t\t}\n\t\t},\n\n\t\t//exceptBounds: If set, don't remove any markers/clusters in it\n\t\t_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {\n\t\t\tvar m, i;\n\t\t\tthis._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove markers at every level\n\t\t\t\t\tfor (i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._markers[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove child clusters at just the bottom level\n\t\t\t\t\tfor (i = c._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._childClusters[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t//Run the given functions recursively to this and child clusters\n\t\t// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to\n\t\t// zoomLevelToStart: zoom level to start running functions (inclusive)\n\t\t// zoomLevelToStop: zoom level to stop running functions (inclusive)\n\t\t// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level\n\t\t// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level\n\t\t_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {\n\t\t\tvar childClusters = this._childClusters,\n\t\t\t    zoom = this._zoom,\n\t\t\t    i, c;\n\n\t\t\tif (zoomLevelToStart <= zoom) {\n\t\t\t\tif (runAtEveryLevel) {\n\t\t\t\t\trunAtEveryLevel(this);\n\t\t\t\t}\n\t\t\t\tif (runAtBottomLevel && zoom === zoomLevelToStop) {\n\t\t\t\t\trunAtBottomLevel(this);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {\n\t\t\t\tfor (i = childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\tc = childClusters[i];\n\t\t\t\t\tif (c._boundsNeedUpdate) {\n\t\t\t\t\t\tc._recalculateBounds();\n\t\t\t\t\t}\n\t\t\t\t\tif (boundsToApplyTo.intersects(c._bounds)) {\n\t\t\t\t\t\tc._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//Returns true if we are the parent of only one cluster and that cluster is the same as us\n\t\t_isSingleParent: function () {\n\t\t\t//Don't need to check this._markers as the rest won't work if there are any\n\t\t\treturn this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;\n\t\t}\n\t});\n\n\t/*\n\t* Extends L.Marker to include two extra methods: clusterHide and clusterShow.\n\t* \n\t* They work as setOpacity(0) and setOpacity(1) respectively, but\n\t* don't overwrite the options.opacity\n\t* \n\t*/\n\n\tL.Marker.include({\n\t\tclusterHide: function () {\n\t\t\tvar backup = this.options.opacity;\n\t\t\tthis.setOpacity(0);\n\t\t\tthis.options.opacity = backup;\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\tclusterShow: function () {\n\t\t\treturn this.setOpacity(this.options.opacity);\n\t\t}\n\t});\n\n\tL.DistanceGrid = function (cellSize) {\n\t\tthis._cellSize = cellSize;\n\t\tthis._sqCellSize = cellSize * cellSize;\n\t\tthis._grid = {};\n\t\tthis._objectPoint = { };\n\t};\n\n\tL.DistanceGrid.prototype = {\n\n\t\taddObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    grid = this._grid,\n\t\t\t    row = grid[y] = grid[y] || {},\n\t\t\t    cell = row[x] = row[x] || [],\n\t\t\t    stamp = L.Util.stamp(obj);\n\n\t\t\tthis._objectPoint[stamp] = point;\n\n\t\t\tcell.push(obj);\n\t\t},\n\n\t\tupdateObject: function (obj, point) {\n\t\t\tthis.removeObject(obj);\n\t\t\tthis.addObject(obj, point);\n\t\t},\n\n\t\t//Returns true if the object was found\n\t\tremoveObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    grid = this._grid,\n\t\t\t    row = grid[y] = grid[y] || {},\n\t\t\t    cell = row[x] = row[x] || [],\n\t\t\t    i, len;\n\n\t\t\tdelete this._objectPoint[L.Util.stamp(obj)];\n\n\t\t\tfor (i = 0, len = cell.length; i < len; i++) {\n\t\t\t\tif (cell[i] === obj) {\n\n\t\t\t\t\tcell.splice(i, 1);\n\n\t\t\t\t\tif (len === 1) {\n\t\t\t\t\t\tdelete row[x];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\teachObject: function (fn, context) {\n\t\t\tvar i, j, k, len, row, cell, removed,\n\t\t\t    grid = this._grid;\n\n\t\t\tfor (i in grid) {\n\t\t\t\trow = grid[i];\n\n\t\t\t\tfor (j in row) {\n\t\t\t\t\tcell = row[j];\n\n\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\tremoved = fn.call(context, cell[k]);\n\t\t\t\t\t\tif (removed) {\n\t\t\t\t\t\t\tk--;\n\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgetNearObject: function (point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    i, j, k, row, cell, len, obj, dist,\n\t\t\t    objectPoint = this._objectPoint,\n\t\t\t    closestDistSq = this._sqCellSize,\n\t\t\t    closest = null;\n\n\t\t\tfor (i = y - 1; i <= y + 1; i++) {\n\t\t\t\trow = this._grid[i];\n\t\t\t\tif (row) {\n\n\t\t\t\t\tfor (j = x - 1; j <= x + 1; j++) {\n\t\t\t\t\t\tcell = row[j];\n\t\t\t\t\t\tif (cell) {\n\n\t\t\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\t\t\tobj = cell[k];\n\t\t\t\t\t\t\t\tdist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);\n\t\t\t\t\t\t\t\tif (dist < closestDistSq ||\n\t\t\t\t\t\t\t\t\tdist <= closestDistSq && closest === null) {\n\t\t\t\t\t\t\t\t\tclosestDistSq = dist;\n\t\t\t\t\t\t\t\t\tclosest = obj;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn closest;\n\t\t},\n\n\t\t_getCoord: function (x) {\n\t\t\tvar coord = Math.floor(x / this._cellSize);\n\t\t\treturn isFinite(coord) ? coord : x;\n\t\t},\n\n\t\t_sqDist: function (p, p2) {\n\t\t\tvar dx = p2.x - p.x,\n\t\t\t    dy = p2.y - p.y;\n\t\t\treturn dx * dx + dy * dy;\n\t\t}\n\t};\n\n\t/* Copyright (c) 2012 the authors listed at the following URL, and/or\n\tthe authors of referenced articles or incorporated external code:\n\thttp://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256\n\n\tPermission is hereby granted, free of charge, to any person obtaining\n\ta copy of this software and associated documentation files (the\n\t\"Software\"), to deal in the Software without restriction, including\n\twithout limitation the rights to use, copy, modify, merge, publish,\n\tdistribute, sublicense, and/or sell copies of the Software, and to\n\tpermit persons to whom the Software is furnished to do so, subject to\n\tthe following conditions:\n\n\tThe above copyright notice and this permission notice shall be\n\tincluded in all copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\tEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\tMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n\tIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n\tCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n\tTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n\tSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tRetrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434\n\t*/\n\n\t(function () {\n\t\tL.QuickHull = {\n\n\t\t\t/*\n\t\t\t * @param {Object} cpt a point to be measured from the baseline\n\t\t\t * @param {Array} bl the baseline, as represented by a two-element\n\t\t\t *   array of latlng objects.\n\t\t\t * @returns {Number} an approximate distance measure\n\t\t\t */\n\t\t\tgetDistant: function (cpt, bl) {\n\t\t\t\tvar vY = bl[1].lat - bl[0].lat,\n\t\t\t\t\tvX = bl[0].lng - bl[1].lng;\n\t\t\t\treturn (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {Array} baseLine a two-element array of latlng objects\n\t\t\t *   representing the baseline to project from\n\t\t\t * @param {Array} latLngs an array of latlng objects\n\t\t\t * @returns {Object} the maximum point and all new points to stay\n\t\t\t *   in consideration for the hull.\n\t\t\t */\n\t\t\tfindMostDistantPointFromBaseLine: function (baseLine, latLngs) {\n\t\t\t\tvar maxD = 0,\n\t\t\t\t\tmaxPt = null,\n\t\t\t\t\tnewPoints = [],\n\t\t\t\t\ti, pt, d;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tpt = latLngs[i];\n\t\t\t\t\td = this.getDistant(pt, baseLine);\n\n\t\t\t\t\tif (d > 0) {\n\t\t\t\t\t\tnewPoints.push(pt);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (d > maxD) {\n\t\t\t\t\t\tmaxD = d;\n\t\t\t\t\t\tmaxPt = pt;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn { maxPoint: maxPt, newPoints: newPoints };\n\t\t\t},\n\n\n\t\t\t/*\n\t\t\t * Given a baseline, compute the convex hull of latLngs as an array\n\t\t\t * of latLngs.\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tbuildConvexHull: function (baseLine, latLngs) {\n\t\t\t\tvar convexHullBaseLines = [],\n\t\t\t\t\tt = this.findMostDistantPointFromBaseLine(baseLine, latLngs);\n\n\t\t\t\tif (t.maxPoint) { // if there is still a point \"outside\" the base line\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\treturn convexHullBaseLines;\n\t\t\t\t} else {  // if there is no more point \"outside\" the base line, the current base line is part of the convex hull\n\t\t\t\t\treturn [baseLine[0]];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Given an array of latlngs, compute a convex hull as an array\n\t\t\t * of latlngs\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tgetConvexHull: function (latLngs) {\n\t\t\t\t// find first baseline\n\t\t\t\tvar maxLat = false, minLat = false,\n\t\t\t\t\tmaxLng = false, minLng = false,\n\t\t\t\t\tmaxLatPt = null, minLatPt = null,\n\t\t\t\t\tmaxLngPt = null, minLngPt = null,\n\t\t\t\t\tmaxPt = null, minPt = null,\n\t\t\t\t\ti;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar pt = latLngs[i];\n\t\t\t\t\tif (maxLat === false || pt.lat > maxLat) {\n\t\t\t\t\t\tmaxLatPt = pt;\n\t\t\t\t\t\tmaxLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLat === false || pt.lat < minLat) {\n\t\t\t\t\t\tminLatPt = pt;\n\t\t\t\t\t\tminLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (maxLng === false || pt.lng > maxLng) {\n\t\t\t\t\t\tmaxLngPt = pt;\n\t\t\t\t\t\tmaxLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLng === false || pt.lng < minLng) {\n\t\t\t\t\t\tminLngPt = pt;\n\t\t\t\t\t\tminLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (minLat !== maxLat) {\n\t\t\t\t\tminPt = minLatPt;\n\t\t\t\t\tmaxPt = maxLatPt;\n\t\t\t\t} else {\n\t\t\t\t\tminPt = minLngPt;\n\t\t\t\t\tmaxPt = maxLngPt;\n\t\t\t\t}\n\n\t\t\t\tvar ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),\n\t\t\t\t\t\t\t\t\tthis.buildConvexHull([maxPt, minPt], latLngs));\n\t\t\t\treturn ch;\n\t\t\t}\n\t\t};\n\t}());\n\n\tL.MarkerCluster.include({\n\t\tgetConvexHull: function () {\n\t\t\tvar childMarkers = this.getAllChildMarkers(),\n\t\t\t\tpoints = [],\n\t\t\t\tp, i;\n\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tp = childMarkers[i].getLatLng();\n\t\t\t\tpoints.push(p);\n\t\t\t}\n\n\t\t\treturn L.QuickHull.getConvexHull(points);\n\t\t}\n\t});\n\n\t//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet\n\t//Huge thanks to jawj for implementing it first to make my job easy :-)\n\n\tL.MarkerCluster.include({\n\n\t\t_2PI: Math.PI * 2,\n\t\t_circleFootSeparation: 25, //related to circumference of circle\n\t\t_circleStartAngle: 0,\n\n\t\t_spiralFootSeparation:  28, //related to size of spiral (experiment!)\n\t\t_spiralLengthStart: 11,\n\t\t_spiralLengthFactor: 5,\n\n\t\t_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.\n\t\t\t\t\t\t\t\t\t// 0 -> always spiral; Infinity -> always circle\n\n\t\tspiderfy: function () {\n\t\t\tif (this._group._spiderfied === this || this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar childMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tcenter = map.latLngToLayerPoint(this._latlng),\n\t\t\t\tpositions;\n\n\t\t\tthis._group._unspiderfy();\n\t\t\tthis._group._spiderfied = this;\n\n\t\t\t//TODO Maybe: childMarkers order by distance to center\n\n\t\t\tif (this._group.options.spiderfyShapePositions) {\n\t\t\t\tpositions = this._group.options.spiderfyShapePositions(childMarkers.length, center);\n\t\t\t} else if (childMarkers.length >= this._circleSpiralSwitchover) {\n\t\t\t\tpositions = this._generatePointsSpiral(childMarkers.length, center);\n\t\t\t} else {\n\t\t\t\tcenter.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.\n\t\t\t\tpositions = this._generatePointsCircle(childMarkers.length, center);\n\t\t\t}\n\n\t\t\tthis._animationSpiderfy(childMarkers, positions);\n\t\t},\n\n\t\tunspiderfy: function (zoomDetails) {\n\t\t\t/// <param Name=\"zoomDetails\">Argument from zoomanim if being called in a zoom animation or null otherwise</param>\n\t\t\tif (this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._animationUnspiderfy(zoomDetails);\n\n\t\t\tthis._group._spiderfied = null;\n\t\t},\n\n\t\t_generatePointsCircle: function (count, centerPt) {\n\t\t\tvar circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),\n\t\t\t\tlegLength = circumference / this._2PI,  //radius from circumference\n\t\t\t\tangleStep = this._2PI / count,\n\t\t\t\tres = [],\n\t\t\t\ti, angle;\n\n\t\t\tlegLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.\n\n\t\t\tres.length = count;\n\n\t\t\tfor (i = 0; i < count; i++) { // Clockwise, like spiral.\n\t\t\t\tangle = this._circleStartAngle + i * angleStep;\n\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t}\n\n\t\t\treturn res;\n\t\t},\n\n\t\t_generatePointsSpiral: function (count, centerPt) {\n\t\t\tvar spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,\n\t\t\t\tlegLength = spiderfyDistanceMultiplier * this._spiralLengthStart,\n\t\t\t\tseparation = spiderfyDistanceMultiplier * this._spiralFootSeparation,\n\t\t\t\tlengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,\n\t\t\t\tangle = 0,\n\t\t\t\tres = [],\n\t\t\t\ti;\n\n\t\t\tres.length = count;\n\n\t\t\t// Higher index, closer position to cluster center.\n\t\t\tfor (i = count; i >= 0; i--) {\n\t\t\t\t// Skip the first position, so that we are already farther from center and we avoid\n\t\t\t\t// being under the default cluster icon (especially important for Circle Markers).\n\t\t\t\tif (i < count) {\n\t\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t\t}\n\t\t\t\tangle += separation / legLength + i * 0.0005;\n\t\t\t\tlegLength += lengthFactor / angle;\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tm, i;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tfg.removeLayer(m);\n\n\t\t\t\tif (m._preSpiderfyLatlng) {\n\t\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\t\tdelete m._preSpiderfyLatlng;\n\t\t\t\t}\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup._spiderfied = null;\n\t\t}\n\t});\n\n\t//Non Animated versions of everything\n\tL.MarkerClusterNonAnimated = L.MarkerCluster.extend({\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tlegOptions = this._group.options.spiderLegPolylineOptions,\n\t\t\t\ti, m, leg, newPos;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([this._latlng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Now add the marker.\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING\n\t\t\t\t}\n\n\t\t\t\tfg.addLayer(m);\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup.fire('spiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t},\n\n\t\t_animationUnspiderfy: function () {\n\t\t\tthis._noanimationUnspiderfy();\n\t\t}\n\t});\n\n\t//Animated versions here\n\tL.MarkerCluster.include({\n\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerLatLng = this._latlng,\n\t\t\t\tthisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tlegOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.\n\t\t\t\tfinalLegOpacity = legOptions.opacity,\n\t\t\t\ti, m, leg, legPath, legLength, newPos;\n\n\t\t\tif (finalLegOpacity === undefined) {\n\t\t\t\tfinalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;\n\t\t\t}\n\n\t\t\tif (svg) {\n\t\t\t\t// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.\n\t\t\t\tlegOptions.opacity = 0;\n\n\t\t\t\t// Add the class for CSS transitions.\n\t\t\t\tlegOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';\n\t\t\t} else {\n\t\t\t\t// Make sure we have a defined opacity.\n\t\t\t\tlegOptions.opacity = finalLegOpacity;\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Add markers and spider legs to map, hidden at our center point.\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([thisLayerLatLng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/\n\t\t\t\t// In our case the transition property is declared in the CSS file.\n\t\t\t\tif (svg) {\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.\n\t\t\t\t\tlegPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t}\n\n\t\t\t\t// If it is a marker, add it now and we'll animate it out\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Vectors just get immediately added\n\t\t\t\tfg.addLayer(m);\n\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._forceLayout();\n\t\t\tgroup._animationStart();\n\n\t\t\t// Reveal markers and spider legs.\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Move marker to new position\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\t\n\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\tm.clusterShow();\n\t\t\t\t}\n\n\t\t\t\t// Animate leg (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegPath.style.strokeDashoffset = 0;\n\t\t\t\t\t//legPath.style.strokeOpacity = finalLegOpacity;\n\t\t\t\t\tleg.setStyle({opacity: finalLegOpacity});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('spiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t},\n\n\t\t_animationUnspiderfy: function (zoomDetails) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),\n\t\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tm, i, leg, legPath, legLength, nonAnimatable;\n\n\t\t\tgroup._ignoreMove = true;\n\t\t\tgroup._animationStart();\n\n\t\t\t//Make us visible and bring the child markers back in\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Marker was added to us after we were spiderfied\n\t\t\t\tif (!m._preSpiderfyLatlng) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll\n\t\t\t\tm.closePopup();\n\n\t\t\t\t//Fix up the location to the real one\n\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\tdelete m._preSpiderfyLatlng;\n\n\t\t\t\t//Hack override the location to be our center\n\t\t\t\tnonAnimatable = true;\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (nonAnimatable) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t}\n\n\t\t\t\t// Animate the spider leg back in (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1;\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t\tleg.setStyle({opacity: 0});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\t//If we have only <= one child left then that marker will be shown on the map so don't remove it!\n\t\t\t\tvar stillThereChildCount = 0;\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\t\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\t\tstillThereChildCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t\tif (!m._spiderLeg) { //Has already been unspiderfied\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stillThereChildCount > 1) {\n\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t}\n\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t}\n\t});\n\n\n\tL.MarkerClusterGroup.include({\n\t\t//The MarkerCluster currently spiderfied (if any)\n\t\t_spiderfied: null,\n\n\t\tunspiderfy: function () {\n\t\t\tthis._unspiderfy.apply(this, arguments);\n\t\t},\n\n\t\t_spiderfierOnAdd: function () {\n\t\t\tthis._map.on('click', this._unspiderfyWrapper, this);\n\n\t\t\tif (this._map.options.zoomAnimation) {\n\t\t\t\tthis._map.on('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\t}\n\t\t\t//Browsers without zoomAnimation or a big zoom don't fire zoomstart\n\t\t\tthis._map.on('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\tif (!L.Browser.touch) {\n\t\t\t\tthis._map.getRenderer(this);\n\t\t\t\t//Needs to happen in the pageload, not after, or animations don't work in webkit\n\t\t\t\t//  http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements\n\t\t\t\t//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable\n\t\t\t}\n\t\t},\n\n\t\t_spiderfierOnRemove: function () {\n\t\t\tthis._map.off('click', this._unspiderfyWrapper, this);\n\t\t\tthis._map.off('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._map.off('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\t//Ensure that markers are back where they should be\n\t\t\t// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane\n\t\t\tthis._noanimationUnspiderfy();\n\t\t},\n\n\t\t//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)\n\t\t//This means we can define the animation they do rather than Markers doing an animation to their actual location\n\t\t_unspiderfyZoomStart: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.on('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t},\n\n\t\t_unspiderfyZoomAnim: function (zoomDetails) {\n\t\t\t//Wait until the first zoomanim after the user has finished touch-zooming before running the animation\n\t\t\tif (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._unspiderfy(zoomDetails);\n\t\t},\n\n\t\t_unspiderfyWrapper: function () {\n\t\t\t/// <summary>_unspiderfy but passes no arguments</summary>\n\t\t\tthis._unspiderfy();\n\t\t},\n\n\t\t_unspiderfy: function (zoomDetails) {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied.unspiderfy(zoomDetails);\n\t\t\t}\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied._noanimationUnspiderfy();\n\t\t\t}\n\t\t},\n\n\t\t//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc\n\t\t_unspiderfyLayer: function (layer) {\n\t\t\tif (layer._spiderLeg) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t\t\t//Position will be fixed up immediately in _animationUnspiderfy\n\t\t\t\tif (layer.setZIndexOffset) {\n\t\t\t\t\tlayer.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tthis._map.removeLayer(layer._spiderLeg);\n\t\t\t\tdelete layer._spiderLeg;\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing\n\t * markers' icon options and refreshing their icon and their parent clusters\n\t * accordingly (case where their iconCreateFunction uses data of childMarkers\n\t * to make up the cluster icon).\n\t */\n\n\n\tL.MarkerClusterGroup.include({\n\t\t/**\n\t\t * Updates the icon of all clusters which are parents of the given marker(s).\n\t\t * In singleMarkerMode, also updates the given marker(s) icon.\n\t\t * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|\n\t\t * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent\n\t\t * clusters need to be updated. If not provided, retrieves all child markers of this.\n\t\t * @returns {L.MarkerClusterGroup}\n\t\t */\n\t\trefreshClusters: function (layers) {\n\t\t\tif (!layers) {\n\t\t\t\tlayers = this._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.MarkerClusterGroup) {\n\t\t\t\tlayers = layers._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.LayerGroup) {\n\t\t\t\tlayers = layers._layers;\n\t\t\t} else if (layers instanceof L.MarkerCluster) {\n\t\t\t\tlayers = layers.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.Marker) {\n\t\t\t\tlayers = [layers];\n\t\t\t} // else: must be an Array(L.Marker)|Map(L.Marker)\n\t\t\tthis._flagParentsIconsNeedUpdate(layers);\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t// In case of singleMarkerMode, also re-draw the markers.\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._refreshSingleMarkerModeMarkers(layers);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * Simply flags all parent clusters of the given markers as having a \"dirty\" icon.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_flagParentsIconsNeedUpdate: function (layers) {\n\t\t\tvar id, parent;\n\n\t\t\t// Assumes layers is an Array or an Object whose prototype is non-enumerable.\n\t\t\tfor (id in layers) {\n\t\t\t\t// Flag parent clusters' icon as \"dirty\", all the way up.\n\t\t\t\t// Dumb process that flags multiple times upper parents, but still\n\t\t\t\t// much more efficient than trying to be smart and make short lists,\n\t\t\t\t// at least in the case of a hierarchy following a power law:\n\t\t\t\t// http://jsperf.com/flag-nodes-in-power-hierarchy/2\n\t\t\t\tparent = layers[id].__parent;\n\t\t\t\twhile (parent) {\n\t\t\t\t\tparent._iconNeedsUpdate = true;\n\t\t\t\t\tparent = parent.__parent;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Re-draws the icon of the supplied markers.\n\t\t * To be used in singleMarkerMode only.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_refreshSingleMarkerModeMarkers: function (layers) {\n\t\t\tvar id, layer;\n\n\t\t\tfor (id in layers) {\n\t\t\t\tlayer = layers[id];\n\n\t\t\t\t// Make sure we do not override markers that do not belong to THIS group.\n\t\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\t\t// Need to re-create the icon first, then re-draw the marker.\n\t\t\t\t\tlayer.setIcon(this._overrideMarkerIcon(layer));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tL.Marker.include({\n\t\t/**\n\t\t * Updates the given options in the marker's icon and refreshes the marker.\n\t\t * @param options map object of icon options.\n\t\t * @param directlyRefreshClusters boolean (optional) true to trigger\n\t\t * MCG.refreshClustersOf() right away with this single marker.\n\t\t * @returns {L.Marker}\n\t\t */\n\t\trefreshIconOptions: function (options, directlyRefreshClusters) {\n\t\t\tvar icon = this.options.icon;\n\n\t\t\tL.setOptions(icon, options);\n\n\t\t\tthis.setIcon(icon);\n\n\t\t\t// Shortcut to refresh the associated MCG clusters right away.\n\t\t\t// To be used when refreshing a single marker.\n\t\t\t// Otherwise, better use MCG.refreshClusters() once at the end with\n\t\t\t// the list of modified markers.\n\t\t\tif (directlyRefreshClusters && this.__parent) {\n\t\t\t\tthis.__parent._group.refreshClusters(this);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t});\n\n\texports.MarkerClusterGroup = MarkerClusterGroup;\n\texports.MarkerCluster = MarkerCluster;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=leaflet.markercluster-src.js.map\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .eobuchung-filter-selection-btns{width:100%;overflow:hidden}.eobuchung-widget .eobuchung-filter-selection-btns .v-btn{flex-grow:1}.eobuchung-widget .eobuchung-filter-selection-btns .v-btn svg{fill:#000}.eobuchung-widget .eobuchung-filter-selection-btns .v-btn.v-btn--active{border-color:var(--accent)}.eobuchung-widget .eobuchung-filter-selection-btns .v-btn.v-btn--active svg{fill:var(--accent)}.eobuchung-widget .eobuchung-filter-selection-btns .v-btn.v-btn--active:before{opacity:0!important}.eobuchung-widget .eobuchung-filter-selection-desktop svg{transform:scale(.7)}.eobuchung-widget .eobuchung-filter-selection-desktop .v-btn{padding:20px 0!important}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListCard.vue?vue&type=style&index=0&id=4f9c7fce&prod&lang=sass\"","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelection.vue?vue&type=style&index=0&id=7d06a19f&prod&lang=sass\"","export * from \"-!../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=style&index=0&id=18e21210&prod&lang=sass\"","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMapPopup.vue?vue&type=style&index=0&id=06ac174c&prod&lang=sass\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBox.vue?vue&type=style&index=0&id=6fd94920&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4044e230\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionButtons.vue?vue&type=style&index=0&id=610c05d7&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"88369e44\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"eobuchung-app eobuchung-widget\",class:{'is-mobile-app': _vm.isMobile}},[_c('v-app',{ref:\"theWidgetMain\",attrs:{\"id\":_vm.id}},[(_vm.error)?_c('v-alert',{attrs:{\"color\":\"error\",\"dark\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_vm._e(),(!_vm.error)?_c('v-main',[_c('div',{directives:[{name:\"resize\",rawName:\"v-resize\",value:(_vm.onResize),expression:\"onResize\"}],ref:\"theWidget\",staticClass:\"pr-0 pl-0\",class:{'d-flex': !_vm.isMobile}},[(_vm.isMobile)?_c('eo-filter',{attrs:{\"total-count\":_vm.totalCount,\"show-map\":_vm.showMap,\"is-loading\":_vm.isLoadingData,\"is-loading-in-foreground\":_vm.isLoadingInForeground},on:{\"toggleMap\":function($event){_vm.showMap = !_vm.showMap},\"filterUpdated\":function($event){return _vm.loadData(1, true, true)},\"filterChipDeleted\":function($event){return _vm.loadData(1, true)},\"sortingUpdated\":function($event){return _vm.loadData(1, true)},\"change\":function($event){return _vm.loadData(1, true)}}}):_c('eo-desktop-filter',{staticClass:\"mr-4\",on:{\"change\":function($event){return _vm.loadData(1, true)}}}),_c('div',{staticClass:\"flex-grow-1\"},[(!_vm.isMobile)?_c('div',[_c('eo-desktop-list-header',{attrs:{\"total-count\":_vm.totalCount,\"show-map\":_vm.showMap,\"is-loading\":_vm.isLoadingData},on:{\"toggleMap\":function($event){_vm.showMap = !_vm.showMap},\"change\":function($event){return _vm.loadData(1, true)},\"sortingUpdated\":function($event){return _vm.loadData(1, true)},\"filterChipDeleted\":function($event){return _vm.loadData(1, true)}}})],1):_vm._e(),(_vm.showMap)?_c('eo-list-map',{ref:\"theMap\",attrs:{\"is-mobile\":_vm.isMobile},on:{\"update\":function($event){return _vm.loadData(1, true, false, true)},\"close\":function($event){_vm.showMap = false}}}):_c('div',{staticStyle:{\"position\":\"relative\"}},[((_vm.isLoading || _vm.isLoadingData) && !_vm.error)?[_c('v-row',_vm._l((9),function(index){return _c('v-col',{key:'skeleton-' + index,attrs:{\"cols\":\"12\"}},[_c('v-card',{staticClass:\"eobuchung-list-card mx-auto mb-4\",attrs:{\"tile\":\"\",\"id\":'eo-card-' + index,\"elevation\":\"24\"}},[_c('div',{staticClass:\"d-md-flex flex-no-wrap justify-start\"},[_c('div',{staticClass:\"ma-3\",staticStyle:{\"width\":\"30%\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"image\"}})],1),_c('div',{staticClass:\"mr-4 mt-3 flex-grow-1\"},[_c('v-skeleton-loader',{attrs:{\"type\":\"article, chip, actions\"}})],1)])])],1)}),1)]:_vm._e(),(_vm.listEntries && _vm.listEntries.length)?_vm._l((_vm.listEntries),function(listEntry,idx){return _c('v-row',{key:listEntry.id,attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('eo-list-card',{attrs:{\"index\":idx,\"tomas-id\":listEntry.tomasId,\"vacancies\":listEntry.vacancies,\"is-narrow\":_vm.isMobile}})],1)],1)}):_c('eo-list-no-hits'),(_vm.nextPage)?_c('v-row',{staticClass:\"mt-6\",attrs:{\"justify\":\"center\"}},[_c('v-btn',{staticClass:\"ma-2\",attrs:{\"color\":\"primary\",\"dark\":\"\",\"aria-label\":\"Next\"},on:{\"click\":function($event){return _vm.loadPage(_vm.nextPage)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"message.showMore\"))+\" \")])],1):_vm._e()],2)],1)],1)]):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"eobuchung-list-card mx-auto mb-4\",style:({'border-color': _vm.primeColor, 'border-width': _vm.primeColor ? '4px' : ''}),attrs:{\"tile\":\"\",\"id\":'eo-card-' + _vm.index,\"data-id\":_vm.tomasId,\"elevation\":\"24\",\"loading\":_vm.isLoading,\"href\":_vm.detailViewURL,\"target\":\"_blank\",\"ripple\":false},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.gotoDetails($event, true)}}},[(_vm.error)?_c('v-alert',{attrs:{\"color\":\"error\",\"dark\":\"\"}},[_c('v-card-text',[_vm._v(\" \"+_vm._s(_vm.error)+\" \")])],1):_vm._e(),(_vm.isLoading)?_c('div',{staticClass:\"d-md-flex flex-no-wrap justify-start\"},[_c('div',{staticClass:\"ma-3\",staticStyle:{\"width\":\"100%\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"image\"}})],1),_c('div',{staticClass:\"mr-4 mt-3 flex-grow-1\"},[_c('v-skeleton-loader',{attrs:{\"type\":\"article, actions\"}})],1)]):_vm._e(),(!_vm.error && _vm.serviceProvider)?_c('div',{staticClass:\"d-sm-flex flex-no-wrap justify-start\"},[_c('div',{staticClass:\"ma-3 flex-sm-grow-1 flex-lg-grow-0 eobuchung-list-card-picture\",class:_vm.isNarrow ? '' : 'mr-0'},[(_vm.pictures)?_c('v-carousel',{ref:\"listCarouselRef\",staticClass:\"listCarousel\",style:({height: _vm.pictureHeight + 'px', width: _vm.pictureWidth}),attrs:{\"show-arrows-on-hover\":\"\",\"height\":_vm.pictureHeight,\"hide-delimiters\":false,\"hide-delimiter-background\":true},on:{\"change\":_vm.showNearDelimiterButtons},scopedSlots:_vm._u([{key:\"prev\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"dark\":\"\",\"color\":\"black\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.logClicked.apply(null, arguments)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(_vm._s(_vm.mdiChevronLeft))])],1)]}},{key:\"next\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"dark\":\"\",\"color\":\"black\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.logClicked.apply(null, arguments)}}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(_vm._s(_vm.mdiChevronRight))])],1)]}}],null,false,1870617060),model:{value:(_vm.counter),callback:function ($$v) {_vm.counter=$$v},expression:\"counter\"}},_vm._l((_vm.pictures),function(picture,idx){return _c('v-carousel-item',{key:idx},[_c('v-img',{attrs:{\"src\":_vm.pictureWithMaxWidth(picture, _vm.pictureWidthSimple),\"aspect-ratio\":4/3,\"eager\":!_vm.loadLazyAssets}})],1)}),1):_vm._e(),(_vm.topIcon)?_c('div',{staticClass:\"eobuchung-list-card-top-icon\",domProps:{\"innerHTML\":_vm._s(_vm.topIcon)}}):_vm._e(),(_vm.topLabel)?_c('div',{staticClass:\"eobuchung-list-card-top-label\",domProps:{\"innerHTML\":_vm._s(_vm.topLabel)}}):_vm._e(),_c('v-btn',{staticClass:\"eobuchung-list-card-top-like\",attrs:{\"fab\":\"\",\"x-small\":\"\",\"aria-label\":\"favorite\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.heartClicked.apply(null, arguments)}}},[_c('v-icon',[_vm._v(_vm._s(_vm.isFavorite ? _vm.mdiHeart : _vm.mdiHeartOutline))])],1)],1),_c('div',{staticClass:\"flex-grow-1\"},[(_vm.trustYouId && !_vm.isNarrow)?_c('div',{staticClass:\"float-right mt-2\"},[_c('iframe',{staticClass:\"mt-2 ml-4\",staticStyle:{\"pointer-events\":\"none\"},attrs:{\"id\":'trustyou-l-' + _vm.trustYouId,\"title\":\"TrustYou Rating\",\"src\":'https://api.trustyou.com/hotels/' + _vm.trustYouId + '/seal.html?size=' + (_vm.isNarrow ? 'xs' : 's') + '&key=' + _vm.trustYouAPIKey + '&lang=' + _vm.$i18n.locale,\"allowtransparency\":\"true\",\"frameborder\":\"0\",\"height\":_vm.isNarrow ? 24 : 42,\"width\":\"215\",\"scrolling\":\"no\"}})]):_vm._e(),_c('v-card-title',{staticClass:\"font-weight-bold text-h5 pb-0\",class:_vm.isNarrow ? 'pt-0' : 'pt-2',domProps:{\"textContent\":_vm._s(_vm.companyName)}}),_c('v-card-text',{staticClass:\"pl-0 pr-0\",staticStyle:{\"min-height\":\"100px\"}},[_c('div',{staticClass:\"pl-4\"},[_c('div',[_vm._v(_vm._s(_vm.location))]),_c('eo-classification-from-to',{attrs:{\"service-provider\":_vm.serviceProvider}}),(_vm.trustYouId && _vm.isNarrow)?_c('div',{staticClass:\"mt-2\"},[_c('iframe',{staticStyle:{\"pointer-events\":\"none\"},attrs:{\"id\":'trustyou-l-' + _vm.trustYouId,\"src\":'https://api.trustyou.com/hotels/' + _vm.trustYouId + '/seal.html?size=' + (_vm.isNarrow ? 'xs' : 's') + '&key=' + _vm.trustYouAPIKey + '&lang=' + _vm.$i18n.locale,\"allowtransparency\":\"true\",\"frameborder\":\"0\",\"height\":_vm.isNarrow ? 24 : 42,\"width\":\"215\",\"scrolling\":\"no\"}})]):_vm._e()],1),(_vm.distance && _vm.distance.distance)?_c('div',{staticClass:\"mt-1 pl-4\"},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.mdiMapMarkerDistance))]),_vm._v(\" \"+_vm._s(_vm.$t('message.distanceTo', {n: _vm.distance['distance'], unit: _vm.distance['unit'], loc: _vm.distanceName}))+\" \")],1):_vm._e(),_vm._v(\" \"+_vm._s(_vm.aboveTheFoldCount)+\" \"),_c('eo-feature-icons',{staticClass:\"pl-4\",attrs:{\"service-provider\":_vm.serviceProvider,\"load-lazy\":_vm.loadLazyAssets,\"x-small\":\"\"}}),(_vm.hasVacancies && _vm.isNarrow)?_c('v-divider',{staticClass:\"mt-2 mb-2\"}):_vm._e(),(_vm.isNarrow)?_c('eo-service-provider-feature-chips',{staticClass:\"mb-0 pl-4\",attrs:{\"service-provider\":_vm.serviceProvider,\"small\":\"\",\"is-mobile\":true}}):_vm._e()],1),(_vm.hasVacancies)?_c('v-card-text',{staticClass:\"mt-0 pt-0 pb-5 d-block eobuchung-list-card-pointer\"},[(!_vm.isNarrow)?_c('v-divider',{staticClass:\"mb-3\"}):_vm._e(),(!_vm.isNarrow)?_c('eo-service-provider-feature-chips',{staticClass:\"mb-0 float-left\",attrs:{\"service-provider\":_vm.serviceProvider,\"small\":\"\",\"is-mobile\":false}}):_vm._e(),(_vm.referenceVacancy)?_c('div',{staticClass:\"mb-2 text-right\",domProps:{\"innerHTML\":_vm._s(_vm.referenceServiceInfo)}}):_vm._e(),(_vm.hasMultipleAccommodations)?_c('div',{staticClass:\"mb-2 text-right\",domProps:{\"innerHTML\":_vm._s(_vm.multipleAccommodationsInfo)}}):_vm._e(),_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"text-right flex-grow-1 pr-4\"},[_c('span',{staticClass:\"d-block eobuchung-list-card-price\"},[_vm._v(_vm._s(_vm.vacancyPrice))]),_c('span',{staticClass:\"eobuchung-list-card-small\",class:{'d-block': _vm.isNarrow}},[_vm._v(_vm._s(_vm.$t('message.forWholePeriod')))])]),_c('v-btn',{attrs:{\"tile\":\"\",\"x-large\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoDetails.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$t('message.showOffer')))])],1),(_vm.numberOfAccommodations === 1)?_c('div',{staticClass:\"text-right text-decoration-underline pt-2\",staticStyle:{\"clear\":\"right\"}},[_vm._v(_vm._s(_vm.$tc('message.showXAccommodations', _vm.vacancies.length - 1, { n: _vm.vacancies.length - 1 })))]):_vm._e()],1):_c('v-card-text',{staticClass:\"mt-0 pt-0 pb-5\"},[(!_vm.isNarrow)?_c('v-divider',{staticClass:\"mb-3\"}):_vm._e(),_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1\"},[(!_vm.isNarrow)?_c('eo-accommodation-types-list',{attrs:{\"service-provider\":_vm.serviceProvider}}):_vm._e(),(!_vm.isNarrow)?_c('eo-service-provider-feature-chips',{staticClass:\"mb-0\",attrs:{\"service-provider\":_vm.serviceProvider,\"small\":\"\",\"is-mobile\":false}}):_vm._e()],1),_c('div',[_c('v-btn',{staticClass:\"white--text\",attrs:{\"color\":\"secondary\",\"x-large\":_vm.isNarrow,\"tile\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoDetails.apply(null, arguments)}}},[_c('span',{staticClass:\"px-2\"},[_vm._v(_vm._s(_vm.$t(\"message.showAccommodations\")))])])],1)])],1)],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {mdiMapMarkerDistance} from \"@mdi/js\";\nimport EoServiceProviderFeatureChips from \"../components/ServiceProviderFeatureChips\";\nimport EoStars from \"../components/Stars\";\nimport formatPrice from \"../lib/format-price.js\";\nimport {addApiUrlToUrl} from \"@/lib/getApiUrl\";\nimport {getSizedPictureUrl} from \"@/lib/get-sized-picture-url\";\n\nexport const serviceProviderMixin = {\n    name: 'serviceProviderMixin',\n    components: {EoServiceProviderFeatureChips, EoStars},\n    props: {\n        tomasId: {\n            type: String,\n            required: true,\n        },\n        vacancies: {},\n    },\n    data: () => ({\n        isLoading: true,\n        error: '',\n        serviceProvider: undefined, // service provider to show\n        // icons\n        mdiMapMarkerDistance: mdiMapMarkerDistance,\n    }),\n    methods: {\n        /**\n         * Load data\n         * @returns {Promise<void>}\n         */\n        async loadData(skipTrustYou = false) {\n            // loading finished\n            this.isLoading = true;\n            // reset TY score, just in case we change the filter (otherwise we will have TY artifacts)\n            this.trustYouId = undefined;\n\n            if (!this.tomasId) {\n                this.error = 'data-id-or-name attribute missing!';\n                return;\n            }\n\n            try {\n                this.serviceProvider = await this.$store.dispatch('getServiceProvider', this.tomasId);\n                if (this.serviceProvider == null) {\n                    this.error = 'no service provider found';\n                    this.isLoading = false;\n                    return;\n                }\n                if (this.serviceProvider.error !== undefined) {\n                    this.error = this.serviceProvider.error + (this.serviceProvider.message ? ' ' + this.serviceProvider.message : '');\n                    this.isLoading = false;\n                    return;\n                }\n\n                // load trust you rating\n                if (!skipTrustYou) {\n                    // reset loading TY rating\n                    this.trustYouIdLoaded = false;\n                    this.loadTrustYouRating();\n                }\n            } catch (e) {\n                this.error = e;\n            } finally {\n                // loading finished\n                this.isLoading = false;\n            }\n        },\n         /**\n         * load service provider detail url\n         */\n        gotoDetails(event, ignoreButtons = false) {\n          // avoid unintended site-navigation\n           // f.e. a card is clicked even when only a button inside is clicked\n          if(ignoreButtons && this.elementIsOrHasButtonParent(event.target)) {\n            return;\n          }\n          this.$store.dispatch('log/do', { tomasId: this.serviceProvider.id, type: 'gg', action: 'click detail' }).catch(() => {});\n          window.open(this.detailViewURL, '_blank');\n        },\n        elementIsOrHasButtonParent(element) {\n          if(element instanceof HTMLButtonElement) {\n            return true;\n          }\n          let parent = element.parentElement;\n          while (parent) {\n            if (parent instanceof HTMLButtonElement) {\n              return true;\n            }\n            parent = parent.parentElement;\n          }\n          return false;\n        },\n        pictureWithMaxWidth(pictureUrl, width = 300) {\n            return getSizedPictureUrl(pictureUrl, 0, width);\n        }\n    },\n    computed: {\n        // return correct company name\n        companyName() {\n            return this.serviceProvider && this.serviceProvider.address && this.serviceProvider.address.companyName1.trim();\n        },\n        /**\n         * computes location settings\n         * @returns {string}\n         */\n        location() {\n            if (this.serviceProvider && this.$store.state.configIsLoaded) {\n                const layout = this.$store.getters.getLayout('listCardLocation');\n                if (layout) {\n                    return this.getLayoutText(layout, this.serviceProvider);\n                }\n            }\n            return '';\n        },\n        primeColor() {\n            if (this.serviceProvider && this.$store.state.configIsLoaded) {\n                const layout = this.$store.getters.getLayout('listCardPrimeColor');\n                if (layout) {\n                    return this.getLayoutText(layout, this.serviceProvider);\n                }\n            }\n            return '';\n        },\n        topIcon() {\n            if (this.serviceProvider && this.$store.state.configIsLoaded) {\n                const layout = this.$store.getters.getLayout('listCardTopIcon');\n                if (layout) {\n                    return this.getLayoutText(layout, this.serviceProvider);\n                }\n            }\n            return '';\n        },\n        topLabel() {\n            if (this.serviceProvider && this.$store.state.configIsLoaded) {\n                const layout = this.$store.getters.getLayout('listCardTopLabel');\n                if (layout) {\n                    return this.getLayoutText(layout, this.serviceProvider);\n                }\n            }\n            return '';\n        },\n        galleryPicture() {\n            if (this.serviceProvider && this.serviceProvider.pictures) {\n                const pics = this.serviceProvider.pictures;\n                let pic = undefined;\n                if (pics.Gallery && pics.Gallery.length) {\n                    pic = pics.Gallery[0];\n                } else if (pics.Preview && pics.Preview.length) {\n                    pic = pics.Preview[0];\n                }\n\n                if (pic) {\n                    return getSizedPictureUrl(pic, 0, 300);\n                }\n            }\n            return null;\n        },\n        distance() {\n            if (this.serviceProvider && this.serviceProvider.address && this.serviceProvider.address.longitude && this.serviceProvider.address.latitude) {\n                const distance = this.$store.getters.getDistance(this.serviceProvider.address.latitude, this.serviceProvider.address.longitude);\n                if (distance < 1) {\n                    return {distance: Math.round(distance * 1000), unit: 'm'};\n                }\n                return {distance: distance, unit: 'km'}; // already rounded\n            }\n            return undefined;\n        },\n        distanceName() {\n            return this.$store.state.searchItem && this.$store.state.searchItem.value;\n        },\n        /**\n         * get reference vacancy - the first vacancy in the list (this will be a bit difference if there is a price sorting implemented)\n         * @return {*|boolean|null}\n         */\n        referenceVacancy() {\n            return (this.vacancies && this.vacancies.length && this.$store.state.searchAccommodation.length === 1 && this.vacancies[0]) || null;\n        },\n        referenceService() {\n            if (this.referenceVacancy && this.referenceVacancy.serviceID) {\n                for (const service of this.serviceProvider.services) {\n                    if (service.id === this.referenceVacancy.serviceID) {\n                        return service;\n                    }\n                }\n            }\n\n            return null;\n        },\n        /**\n         * get text info for reference service\n         * @return {string}\n         */\n        referenceServiceInfo() {\n            const service = this.referenceService;\n            const data = [];\n\n            if (service) {\n                const wrap = (text) => `<span class=\"whitespace-nowrap\">${text}</span>`;\n\n                // Räume\n                const accommodationType = this.$store.getters.getAccommodationType([service.touristic_type]);\n                if (accommodationType?.label?.length) data.push(wrap(accommodationType.label));\n\n                if (service.features) {\n                    const rooms = this.$store.getters.matchFeatureList('serviceBedrooms', service.features, 1, true);\n                    if (rooms && rooms.length) {\n                        data.push(wrap(rooms[0].replace(/\\d+/, \"<strong>$&</strong>\")));\n                    }\n                }\n\n                if (service.data_classes && service.data_classes.WBX00020010000100907) {\n                    const label = this.$store.getters.getLabel(service.data_classes.WBX00020010000100907);\n                    if (label) {\n                        data.push(wrap(label.replace(/\\d+\\.?/, \"<strong>$&</strong>\")));\n                    }\n                }\n\n                if (service.qmeter && service.qmeter !== \"0\") {\n                    data.push(wrap('<strong>' + service.qmeter + '</strong> m²'));\n                }\n\n                if (service.maximum_persons) {\n                    data.push(wrap('Max <strong>' + service.maximum_persons + '</strong> ' + (service.maximum_persons === 1 ? 'Gast' : 'Gäste')));\n                }\n            }\n\n            return data.join(' • ');\n        },\n        /**\n         * get text info for multiple services\n         * @return {string}\n         */\n        multipleAccommodationsInfo() {\n            const data = [];\n\n            // TOMAS returns a number of possible entries to book, but we know that the first X are a perfect match\n            if (this.vacancies && this.$store.state.searchAccommodation && this.$store.state.searchAccommodation.length > 1) {\n                for (let i = 0; i < Math.min(this.$store.state.searchAccommodation.length, this.vacancies.length); i++) {\n                    data.push(this.vacancies[i].serviceName);\n                }\n            }\n\n            return data.join(' • ');\n        },\n        vacancyPrice() {\n            if (this.referenceVacancy && this.referenceVacancy.price) {\n                return formatPrice(this.referenceVacancy.price, 'EUR', this.$i18n.locale);\n            }\n            if (this.vacancies && this.$store.state.searchAccommodation && this.$store.state.searchAccommodation.length) {\n                let price = 0;\n\n                for (let i = 0; i < Math.min(this.$store.state.searchAccommodation.length, this.vacancies.length); i++) {\n                    price += this.vacancies[i].price;\n                }\n\n                return formatPrice(price, 'EUR', this.$i18n.locale);\n            }\n            return '---';\n        },\n        primaryColor () {\n            return this.$vuetify.theme.currentTheme.primary;\n        },\n        hasVacancies() {\n            return this.vacancies && this.vacancies.length;\n        },\n        numberOfAccommodations() {\n            // number of requested accommodations\n            return (this.$store.state.searchAccommodation && this.$store.state.searchAccommodation.length) || 0;\n        },\n        hasMultipleAccommodations() {\n            return this.$store.state.searchAccommodation && this.$store.state.searchAccommodation.length > 1;\n        },\n        detailViewURL() {\n            if (this.serviceProvider) {\n                return addApiUrlToUrl(\n                  this.$store.state.detailUri.replaceAll('xxxSLUGxxx', this.serviceProvider.url).replaceAll(/&cHash=[0-9a-fA-F]+/g, '')\n                );\n            }\n            return '';\n        },\n        trustYouAPIKey() {\n            return this.$store.state.configIsLoaded && this.$store.state.config.trustYouAPIKey;\n        }\n    },\n    watch: {\n        async tomasId(oldId, newId) {\n            if (oldId !== newId) {\n                await this.loadData();\n            }\n        },\n    },\n};\n","<template>\n  <v-card tile class=\"eobuchung-list-card mx-auto mb-4\" :id=\"'eo-card-' + index\" :data-id=\"tomasId\" elevation=\"24\"\n          :loading=\"isLoading\" :href=\"detailViewURL\" target=\"_blank\" :style=\"{'border-color': primeColor, 'border-width': primeColor ? '4px' : ''}\" :ripple=\"false\"\n          @click.prevent.stop=\"gotoDetails($event, true)\">\n    <v-alert v-if=\"error\" color=\"error\" dark>\n      <v-card-text>\n        {{ error }}\n      </v-card-text>\n    </v-alert>\n    <div class=\"d-md-flex flex-no-wrap justify-start\" v-if=\"isLoading\">\n      <div class=\"ma-3\" style=\"width: 100%\">\n        <v-skeleton-loader type=\"image\" />\n      </div>\n      <div class=\"mr-4 mt-3 flex-grow-1\">\n        <v-skeleton-loader type=\"article, actions\" />\n      </div>\n    </div>\n    <div class=\"d-sm-flex flex-no-wrap justify-start\" v-if=\"!error && serviceProvider\">\n      <div class=\"ma-3 flex-sm-grow-1 flex-lg-grow-0 eobuchung-list-card-picture\" :class=\"isNarrow ? '' : 'mr-0'\">\n        <v-carousel v-if=\"pictures\" v-model=\"counter\" @change=\"showNearDelimiterButtons\" show-arrows-on-hover :height=\"pictureHeight\" :hide-delimiters=\"false\" :hide-delimiter-background=\"true\" class=\"listCarousel\" ref=\"listCarouselRef\" :style=\"{height: pictureHeight + 'px', width: pictureWidth}\">\n          <v-carousel-item v-for=\"(picture, idx) of pictures\" :key=\"idx\">\n            <v-img :src=\"pictureWithMaxWidth(picture, pictureWidthSimple)\" :aspect-ratio=\"4/3\" :eager=\"!loadLazyAssets\" />\n          </v-carousel-item>\n          <template v-slot:prev=\"{ on, attrs }\">\n            <v-btn\n                icon\n                dark\n                color=\"black\"\n                v-bind=\"attrs\"\n                v-on=\"on\"\n                @click.prevent.stop=\"logClicked\"\n            ><v-icon>{{ mdiChevronLeft }}</v-icon></v-btn>\n          </template>\n          <template v-slot:next=\"{ on, attrs }\">\n            <v-btn\n                icon dark\n                color=\"black\"\n                v-bind=\"attrs\"\n                v-on=\"on\"\n                @click.prevent.stop=\"logClicked\"\n            ><v-icon>{{ mdiChevronRight }}</v-icon></v-btn>\n          </template>\n        </v-carousel>\n        <div v-if=\"topIcon\" class=\"eobuchung-list-card-top-icon\" v-html=\"topIcon\"></div>\n        <div v-if=\"topLabel\" class=\"eobuchung-list-card-top-label\" v-html=\"topLabel\"></div>\n        <v-btn fab x-small class=\"eobuchung-list-card-top-like\" @click.prevent.stop=\"heartClicked\" aria-label=\"favorite\">\n          <v-icon>{{isFavorite ? mdiHeart : mdiHeartOutline}}</v-icon>\n        </v-btn>\n      </div>\n      <div class=\"flex-grow-1\">\n        <div v-if=\"trustYouId && !isNarrow\" class=\"float-right mt-2\">\n          <iframe class=\"mt-2 ml-4\"\n                  :id=\"'trustyou-l-' + trustYouId\"\n                  title=\"TrustYou Rating\"\n                  :src=\"'https://api.trustyou.com/hotels/' + trustYouId + '/seal.html?size=' + (isNarrow ? 'xs' : 's') + '&key=' + trustYouAPIKey + '&lang=' + $i18n.locale\"\n                  allowtransparency=\"true\" frameborder=\"0\" :height=\"isNarrow ? 24 : 42\" width=\"215\" scrolling=\"no\"\n                  style=\"pointer-events: none\"\n          ></iframe>\n        </div>\n        <v-card-title class=\"font-weight-bold text-h5 pb-0\" :class=\"isNarrow ? 'pt-0' : 'pt-2'\" v-text=\"companyName\"></v-card-title>\n        <v-card-text class=\"pl-0 pr-0\" style=\"min-height: 100px\">\n          <div class=\"pl-4\">\n            <div>{{ location }}</div>\n\n            <eo-classification-from-to :service-provider=\"serviceProvider\" />\n\n            <div v-if=\"trustYouId && isNarrow\" class=\"mt-2\">\n              <iframe :id=\"'trustyou-l-' + trustYouId\"\n                      :src=\"'https://api.trustyou.com/hotels/' + trustYouId + '/seal.html?size=' + (isNarrow ? 'xs' : 's') + '&key=' + trustYouAPIKey + '&lang=' + $i18n.locale\"\n                      allowtransparency=\"true\" frameborder=\"0\" :height=\"isNarrow ? 24 : 42\" width=\"215\" scrolling=\"no\"\n                      style=\"pointer-events: none;\"\n              ></iframe>\n            </div>\n          </div>\n\n          <div v-if=\"distance && distance.distance\" class=\"mt-1 pl-4\">\n            <v-icon small>{{mdiMapMarkerDistance}}</v-icon>\n            {{ $t('message.distanceTo', {n: distance['distance'], unit: distance['unit'], loc: distanceName}) }}\n          </div>\n\n          {{aboveTheFoldCount}}\n          <eo-feature-icons :service-provider=\"serviceProvider\" :load-lazy=\"loadLazyAssets\" class=\"pl-4\" x-small />\n\n          <v-divider v-if=\"hasVacancies && isNarrow\" class=\"mt-2 mb-2\" />\n\n          <eo-service-provider-feature-chips v-if=\"isNarrow\" class=\"mb-0 pl-4\" :service-provider=\"serviceProvider\" small :is-mobile=\"true\" />\n        </v-card-text>\n        <!-- Vacancy Texts -->\n        <v-card-text v-if=\"hasVacancies\" class=\"mt-0 pt-0 pb-5 d-block eobuchung-list-card-pointer\">\n          <v-divider v-if=\"!isNarrow\" class=\"mb-3\" />\n          <eo-service-provider-feature-chips v-if=\"!isNarrow\" class=\"mb-0 float-left\" :service-provider=\"serviceProvider\" small :is-mobile=\"false\" />\n\n          <div v-html=\"referenceServiceInfo\" class=\"mb-2 text-right\" v-if=\"referenceVacancy\"></div>\n          <div v-html=\"multipleAccommodationsInfo\" class=\"mb-2 text-right\" v-if=\"hasMultipleAccommodations\"></div>\n\n          <div class=\"d-flex\">\n            <div class=\"text-right flex-grow-1 pr-4\">\n              <span class=\"d-block eobuchung-list-card-price\">{{vacancyPrice}}</span>\n              <span class=\"eobuchung-list-card-small\" :class=\"{'d-block': isNarrow}\">{{ $t('message.forWholePeriod') }}</span>\n            </div>\n            <v-btn @click.prevent=\"gotoDetails\" tile x-large color=\"primary\">{{ $t('message.showOffer') }}</v-btn>\n          </div>\n\n          <div v-if=\"numberOfAccommodations === 1\" class=\"text-right text-decoration-underline pt-2\" style=\"clear:right\">{{ $tc('message.showXAccommodations', vacancies.length - 1, { n: vacancies.length - 1 }) }}</div>\n        </v-card-text>\n        <!-- Normal (non-vacancy) Texts -->\n        <v-card-text v-else class=\"mt-0 pt-0 pb-5\">\n          <v-divider v-if=\"!isNarrow\" class=\"mb-3\" />\n          <div class=\"d-flex\">\n            <div class=\"flex-grow-1\">\n              <eo-accommodation-types-list v-if=\"!isNarrow\" :service-provider=\"serviceProvider\" />\n\n              <eo-service-provider-feature-chips v-if=\"!isNarrow\" class=\"mb-0\" :service-provider=\"serviceProvider\" small :is-mobile=\"false\"/>\n            </div>\n            <div>\n              <v-btn @click.prevent=\"gotoDetails\" color=\"secondary\" :x-large=\"isNarrow\" tile class=\"white--text\">\n                <span class=\"px-2\">{{ $t(\"message.showAccommodations\") }}</span>\n              </v-btn>\n            </div>\n          </div>\n        </v-card-text>\n      </div>\n    </div>\n  </v-card>\n</template>\n\n<script>\nimport 'unfetch/polyfill';\nimport {layoutDataMixin} from '../mixins/layout-data-mixin';\nimport {serviceProviderMixin} from \"../mixins/service-provider-mixin\";\nimport {favoritesMixin} from \"../mixins/favorites-mixin.js\";\nimport EoAccommodationTypesList from \"./AccommodationTypeList\";\nimport { mdiChevronLeft, mdiChevronRight } from '@mdi/js';\nimport EoFeatureIcons from \"./FeatureIcons\";\nimport {logMixin} from \"../mixins/log-mixin.js\";\nimport EoClassificationFromTo from \"./ClassificationFromTo.vue\";\n\nexport default {\n  name: 'eo-list-card',\n  components: {EoClassificationFromTo, EoFeatureIcons, EoAccommodationTypesList},\n  mixins: [layoutDataMixin, serviceProviderMixin, logMixin, favoritesMixin],\n  props: {\n    index: null,\n    isNarrow: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: () => ({\n    counter: 0,\n    clicked: false,\n    // icons\n    mdiChevronLeft,\n    mdiChevronRight\n  }),\n  computed: {\n    aboveTheFoldCount() {\n      return this.$store.state.aboveTheFoldCount;\n    },\n    loadLazyAssets() {\n      return this.index > this.aboveTheFoldCount;\n    },\n    pictureHeight() {\n      return this.isNarrow ? 260 : 188;\n    },\n    pictureWidth() {\n      return this.isNarrow ? '100%' : '250px';\n    },\n    pictureWidthSimple() {\n      return this.isNarrow ? 650 : 250;\n    },\n  },\n  async created() {\n    // load data\n    await this.loadData();\n  },\n  mounted() {\n    this.initDelimiterButtons();\n    // helps on a lot of translation related console warnings\n    // for key \"prev\" and \"next\" in v-carousel\n    this.$vuetify.lang.defaultLocale = 'de';\n    this.$vuetify.lang.current = 'de';\n  },\n  updated() {\n    this.initDelimiterButtons();\n  },\n  methods: {\n    initDelimiterButtons() {\n      this.hideDelimiterButtons();\n      setTimeout(() => {\n        const controls = this.$refs.listCarouselRef?.$el.querySelector('.v-carousel__controls');\n        this.showNearDelimiterButtons();\n        if(controls)\n          return;\n        this.initDelimiterButtons();\n      }, 500);\n    },\n    hideDelimiterButtons() {\n      const selector = this.$refs.listCarouselRef?.$el.querySelectorAll(`.v-carousel__controls button`);\n      if(selector?.length)\n        [...selector].forEach(e => e.style.display = \"none\");\n    },\n    showDelimiterButton(number) {\n      const element = this.$refs.listCarouselRef?.$el.querySelector(`.v-carousel__controls button[value=\"${number}\"]`);\n      if(element) {\n        element.style.display = \"inline-flex\";\n      }\n      return element;\n    },\n    showNearDelimiterButtons() {\n      if(this.pictures.length<6) {\n        return;\n      }\n      this.hideDelimiterButtons();\n      //show 5 buttons\n      let firstBtn = 0;\n      if(this.counter > 3)\n        firstBtn = this.counter - 3;\n      let buttonAmount = 0;\n      const buttons = [];\n      while(buttons.length<5) {\n        buttons.push(firstBtn + buttonAmount++);\n      }\n      let found = 0;\n      buttons.forEach(val => {\n          if(this.showDelimiterButton(val)) {\n            found++;\n          }\n      });\n      //show buttons before to reach 5 visible buttons\n      if(found<5) {\n        let rest = 5 - found;\n        while(rest>0) {\n          this.showDelimiterButton(firstBtn - rest);\n          rest--;\n        }\n      }\n    },\n    logClicked() {\n      if (!this.clicked) {\n        this.clicked = true;\n        this.log(this.serviceProvider.id, 'gg', 'click detail');\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-list-card\n  .v-carousel__controls\n    top: 80%\n    .v-btn__content\n      .v-icon\n        height: 14px !important\n        width: 14px !important\n  &.v-card\n    border: 2px solid #fff\n\n  &-pointer\n    cursor: pointer\n\n  &-price\n    font-weight: bold\n    font-size: 1.25rem\n\n  &-small\n    font-size: 0.85rem\n    line-height: 1.15rem\n\n  &-top-icon\n    position: absolute\n    top: -2px\n    left: -2px\n\n  &-top-label\n    position: absolute\n    top: 0.5em\n    left: 5px\n\n    div\n      padding: 3px 10px\n\n  &-top-like\n    position: absolute !important\n    top: 0.5rem\n    right: 5px\n    padding: 2px !important\n\n  &-picture\n    position: relative\n\n  &-counter\n    position: absolute\n    bottom: 1em\n    left: 50%\n    -webkit-transform: translate(-50%,0)\n    -ms-transform: translate(-50%,0)\n    transform: translate(-50%,0)\n    color: #fff\n    text-shadow: 0 0 2px #000000, 0 0 50px #000000\n\n.listCarousel\n  .v-window__prev,.v-window__next\n    transform: scale(0.7)\n    margin: 0\n    background: rgba(255, 255, 255, 0.6)\n  .v-carousel__controls\n    transform: scale(0.6)\n    .v-btn--active\n      .v-icon\n        opacity: 1\n        transform: scale(1.1)\n.whitespace-nowrap\n  white-space: nowrap\n.eobuchung-list-card-top-like\n  transform: scale(0.85)\n  top: 4px\n  right: 3px\n@media (max-width: 996px)\n  .eobuchung-list-card-picture\n    min-width: 200px\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ListCard.vue?vue&type=template&id=4f9c7fce\"\nimport script from \"./ListCard.vue?vue&type=script&lang=js\"\nexport * from \"./ListCard.vue?vue&type=script&lang=js\"\nimport style0 from \"./ListCard.vue?vue&type=style&index=0&id=4f9c7fce&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"eobuchung-filter\"},[_c('v-sheet',{staticClass:\"mx-4 my-2 pa-4 eobuchung-filter-buttons\",attrs:{\"rounded\":\"\"}},[_c('v-btn',{staticClass:\"eobuchung-clear-data-btn mb-4\",attrs:{\"text\":\"\",\"x-small\":\"\",\"plain\":\"\"},on:{\"click\":_vm.clearData}},[_vm._v(\" \"+_vm._s(_vm.$t('message.clearAllData'))+\" \")]),_c('v-btn',{staticClass:\"eobuchung-search-btn\",attrs:{\"outlined\":\"\",\"large\":\"\",\"tile\":\"\"},on:{\"click\":_vm.activateSearch}},[_c('span',{staticClass:\"eobuchung-filter-button-text\"},[_vm._v(_vm._s(_vm.compiledAutosuggestData || _vm.$t('message.autoCompleterPlaceholder')))]),_c('v-icon',[_vm._v(_vm._s(_vm.mdiMagnify))])],1),_c('v-btn',{class:{'eobuchung-cta-calendar': _vm.compiledSearchData},style:(_vm.compiledSearchData ? '' : {'border-color': _vm.primaryColor, 'border-width': '2px', 'font-weight': 'bold', 'color': _vm.primaryColor}),attrs:{\"outlined\":\"\",\"large\":\"\",\"tile\":\"\"},on:{\"click\":_vm.activateDateSearch}},[_c('span',{staticClass:\"eobuchung-filter-button-text\"},[_vm._v(_vm._s(_vm.compiledSearchData || _vm.$t('message.arrivalDeparture')))]),_c('v-icon',[_vm._v(_vm._s(_vm.mdiCalendarMonth))])],1)],1),_c('v-item-group',{staticClass:\"mt-6\"},[_c('v-container',{staticClass:\"pa-0 px-4\"},[_c('v-row',[_c('v-col',{staticClass:\"pa-0 pr-sm-2 pl-sm-2\"},[(_vm.isLoadingInForeground)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":20,\"width\":4,\"value\":100}}):_c('eo-filter-selection',{attrs:{\"total-count\":_vm.totalCount,\"is-loading\":_vm.isLoading,\"has-active-filters\":_vm.$store.state.bookableOnly || (_vm.activeFilters && _vm.activeFilters.length > 0)},on:{\"update\":_vm.filterUpdated,\"change\":_vm.filterUpdated}})],1),_c('v-col',{staticClass:\"pa-0 pr-sm-2\",staticStyle:{\"overflow\":\"hidden\"}},[_c('v-item',[_c('v-menu',{attrs:{\"offset-y\":\"\",\"origin\":\"center center\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-card',_vm._g({staticClass:\"d-flex align-center\",style:(_vm.isDefaultSort ? undefined : {'border-color': _vm.accentColor}),attrs:{\"outlined\":\"\",\"tile\":\"\"}},on),[_c('v-card-text',{staticClass:\"text-center\"},[_c('div',[_c('v-icon',{attrs:{\"color\":_vm.isDefaultSort ? '' : 'accent'}},[_vm._v(_vm._s(_vm.getSorting.startsWith('-') ? _vm.mdiSortDescending : _vm.mdiSortAscending)+\" \")])],1),_c('div',{staticStyle:{\"overflow\":\"hidden\",\"text-overflow\":\"ellipsis\",\"white-space\":\"nowrap\"},style:(_vm.isDefaultSort ? '' : 'color:' + _vm.accentColor)},[_vm._v(_vm._s(_vm.currentSortingName))])])],1)]}}])},[_c('v-list',_vm._l((_vm.sortings),function(sorting){return _c('v-list-item',{key:sorting.value,on:{\"click\":function($event){return _vm.setSorting(sorting.value)}}},[_vm._v(_vm._s(sorting.text)+\" \")])}),1)],1)],1)],1),_c('v-col',{staticClass:\"pa-0 pr-sm-2\"},[_c('v-item',[_c('v-card',{staticClass:\"d-flex align-center\",style:(_vm.favoritesFiltered ? {'border-color': _vm.accentColor} : undefined),attrs:{\"outlined\":\"\",\"tile\":\"\",\"disabled\":_vm.totalFavorites < 1},on:{\"click\":_vm.toggleFilterFavorites}},[_c('v-card-text',{staticClass:\"text-center\"},[_c('div',[_c('v-icon',{attrs:{\"color\":_vm.favoritesFiltered ? 'accent' : ''}},[_vm._v(\" \"+_vm._s(_vm.favoritesFiltered ? _vm.mdiHeart : _vm.mdiHeartOutline)+\" \")])],1),_c('div',{style:(_vm.favoritesFiltered ? 'color:' + _vm.accentColor : '')},[_vm._v(\" \"+_vm._s(_vm.$t(\"message.notepad\"))+\" \")])])],1)],1)],1),_c('v-col',{staticClass:\"pa-0 pr-sm-2\"},[_c('v-item',[_c('v-card',{staticClass:\"d-flex align-center\",style:(_vm.showMap ? {'border-color': _vm.accentColor} : undefined),attrs:{\"outlined\":\"\",\"tile\":\"\"},on:{\"click\":_vm.toggleMap}},[_c('v-card-text',{staticClass:\"text-center\"},[_c('div',[_c('v-icon',{attrs:{\"color\":_vm.showMap ? 'accent' : ''}},[_vm._v(_vm._s(_vm.showMap ? _vm.mdiClose : _vm.mdiMapSearch))])],1),_c('div',{style:(_vm.showMap ? 'color:' + _vm.accentColor : '')},[_vm._v(_vm._s(_vm.$t(\"message.map\")))])])],1)],1)],1)],1)],1)],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[(_vm.activeFilters && _vm.activeFilters.length)?_c('v-divider'):_vm._e()],1)],1)],1),(!_vm.isDefaultSort || _vm.bookableOnly || (_vm.activeFilters && _vm.activeFilters.length))?_c('eo-chip-group',{staticClass:\"mb-3 pl-3 pr-3\"},[(_vm.bookableOnly)?_c('v-chip',{attrs:{\"close\":\"\",\"close-icon\":_vm.mdiClose,\"color\":\"grey lighten-3\"},on:{\"click:close\":_vm.deleteBookableOnly}},[_vm._v(_vm._s(_vm.$t('message.onlyBookable')))]):_vm._e(),(!_vm.isDefaultSort)?_c('v-chip',{attrs:{\"close\":\"\",\"close-icon\":_vm.mdiClose,\"color\":\"grey lighten-3\"},on:{\"click:close\":function($event){return _vm.setSorting(null)}}},[_vm._v(_vm._s(_vm.currentSortingFullName))]):_vm._e(),_vm._l((_vm.activeFilters),function(filter){return _c('v-chip',{key:filter.ids,attrs:{\"label\":\"\",\"close\":\"\",\"close-icon\":_vm.mdiClose,\"color\":\"grey lighten-3\"},on:{\"click:close\":function($event){return _vm.closeFilter(filter)}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [(filter.list === 'spClassification')?_c('eo-classification',{attrs:{\"classification\":filter.label}}):_c('span',{domProps:{\"innerHTML\":_vm._s(filter.label)}})]},proxy:true}],null,true)})})],2):_vm._e(),_c('v-dialog',{staticStyle:{\"z-index\":\"5000\"},attrs:{\"fullscreen\":\"\",\"eager\":\"\",\"hide-overlay\":\"\",\"transition\":\"dialog-bottom-transition\"},model:{value:(_vm.inSearchDialog),callback:function ($$v) {_vm.inSearchDialog=$$v},expression:\"inSearchDialog\"}},[_c('eo-search-card',{ref:\"searchCard\",on:{\"update\":_vm.update,\"close\":function($event){_vm.inSearchDialog = false}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{staticStyle:{\"z-index\":\"5000\"},attrs:{\"fullscreen\":\"\",\"hide-overlay\":\"\",\"transition\":\"dialog-bottom-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-card',_vm._g({staticClass:\"d-flex align-center\",style:(_vm.hasActiveFilters ? {'border-color': _vm.accentColor} : undefined),attrs:{\"outlined\":\"\",\"tile\":\"\",\"disabled\":_vm.favoritesFiltered}},on),[_c('v-card-text',{staticClass:\"text-center\",style:(_vm.hasActiveFilters ? {'color': _vm.accentColor} : undefined)},[_c('div',[_c('v-icon',{attrs:{\"color\":_vm.hasActiveFilters ? _vm.accentColor : undefined}},[_vm._v(_vm._s(_vm.mdiFilterOutline))])],1),_c('span',{},[_vm._v(\"Filtern\")])])],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"accent\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.$t(\"message.filterHeader\")))]),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('v-icon',[_vm._v(_vm._s(_vm.mdiClose))])],1)],1),_c('v-card-text',[_c('div',{staticClass:\"mt-3\",class:_vm.showBookableOnlySwitch ? 'text-right' : 'float-right'},[_c('v-btn',{staticClass:\"pr-0\",attrs:{\"text\":\"\",\"tile\":\"\",\"small\":\"\",\"plain\":\"\"},on:{\"click\":_vm.clearAllFilters}},[_vm._v(_vm._s(_vm.$t('message.clearAllFilters')))])],1),(_vm.showBookableOnlySwitch)?_c('div',{staticClass:\"mt-6\"},[_c('v-switch',{staticClass:\"mt-0\",attrs:{\"label\":_vm.$t('message.onlyBookable'),\"hide-details\":true},on:{\"change\":_vm.toggleBookable},model:{value:(_vm.onlyBookable),callback:function ($$v) {_vm.onlyBookable=$$v},expression:\"onlyBookable\"}})],1):_vm._e(),_vm._l((_vm.filters.filter(_filter => _filter.hasResults === undefined || _filter.hasResults === true)),function(filter,idx){return _c('div',{key:idx},[_c('h4',{staticClass:\"bold pt-4 pb-1\"},[_vm._v(_vm._s(filter.label))]),(filter.label === 'Sterne' || filter.display === 'classifications')?_c('eo-filter-selection-classifications',{attrs:{\"filter\":filter,\"desktop\":\"\",\"id\":`widget-${idx}`},on:{\"update\":_vm.updated,\"setFilterResults\":_vm.setFilterResults}}):(filter.display === 'buttons')?_c('eo-filter-selection-buttons',{attrs:{\"filter\":filter},on:{\"update\":_vm.updated}}):(filter.display === 'plusMinus')?_c('FilterSelectionPlus',{staticClass:\"mb-3\",attrs:{\"filter\":filter,\"ids\":['',...filter.list],\"id\":`widget-${idx}`},on:{\"change\":_vm.updated}}):_c('eo-filter-selection-list',{attrs:{\"open-count\":filter.openCount,\"filter\":filter},on:{\"update\":_vm.updated,\"setFilterResults\":_vm.setFilterResults}}),_c('v-divider')],1)}),_c('div',{staticStyle:{\"height\":\"64px\"}})],2),_c('v-app-bar',{attrs:{\"color\":\"white\",\"fixed\":\"\",\"bottom\":\"\"}},[_c('v-btn',{attrs:{\"color\":\"primary\",\"large\":\"\",\"tile\":\"\",\"block\":\"\",\"disabled\":_vm.isLoading},on:{\"click\":function($event){_vm.dialog = false}}},[(_vm.isLoading)?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":20,\"width\":4,\"value\":100}}):_vm._e(),_vm._v(\" \"+_vm._s(_vm.$tc(\"message.showXResults\", _vm.totalCount, { n: _vm.totalCount } ))+\" \")],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-list',{staticClass:\"pt-2 pt-md-0\"},[_vm._l((_vm.getItems(_vm.list)),function(item,idx){return _c('v-list-item',{key:idx+item.ids,staticClass:\"eo-filter-selection-list-compact pa-0\",class:{'pa-0': _vm.desktop}},[(_vm.facetsEmpty || _vm.getFacetData(item.ids) > 0)?[_c('v-list-item-content',{staticClass:\"pa-0\"},[_c('v-checkbox',{staticClass:\"ma-0\",attrs:{\"hide-details\":\"\",\"color\":\"accent\",\"value\":item.ids},on:{\"change\":function($event){return _vm.changed(item.ids)}},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{domProps:{\"innerHTML\":_vm._s(item.label)}})]},proxy:true}],null,true),model:{value:(_vm.checkedValues),callback:function ($$v) {_vm.checkedValues=$$v},expression:\"checkedValues\"}})],1),_c('v-list-item-action',{staticClass:\"ma-0\"},[(_vm.facetsLoading)?_c('v-progress-circular',{attrs:{\"size\":14,\"width\":2,\"color\":\"grey lighten-2\",\"indeterminate\":\"\"}}):(_vm.facetsEmpty)?_c('div',{staticClass:\"text-right\",staticStyle:{\"width\":\"3em\"}}):_c('div',{staticClass:\"text-right\",staticStyle:{\"width\":\"3em\"}},[_vm._v(_vm._s(_vm.getFacetData(item.ids)))])],1)]:_vm._e()],2)}),_c('div',{staticClass:\"eo-filter-selection-list__divider\"}),(!_vm.facetsLoading && _vm.canShowMore && !_vm.showMore && _vm.leftElementsCount >= 1)?_c('span',{staticClass:\"primary--text pl-1\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.showMore = true}}},[_vm._v(_vm._s(_vm.$t('message.showMoreResults', {n: _vm.leftElementsCount}))+\" \"),_c('v-icon',{attrs:{\"color\":\"primary\",\"right\":\"\"}},[_vm._v(_vm._s(_vm.mdiChevronDown))])],1):_vm._e(),(!_vm.facetsLoading && _vm.canShowMore && _vm.showMore)?_c('span',{staticClass:\"primary--text pl-1\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.showMore = false}}},[_vm._v(\" Weniger anzeigen\"),_c('v-icon',{attrs:{\"color\":\"primary\",\"right\":\"\"}},[_vm._v(_vm._s(_vm.mdiChevronUp))])],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const filterSelectionMixin = {\n    name: 'filterSelectionMixin',\n    props: {\n        filter: {\n            type: Object,\n            required: true,\n        },\n        desktop: {\n            type: Boolean\n        }\n    },\n    data: () => ({\n        checkedValues: [],\n    }),\n    computed: {\n        /**\n         * list of items\n         * @return {*[]}\n         */\n        list() {\n            const list = [];\n            for (const id of this.idList) {\n                // entry is id? override reference check\n                if (id && typeof id === 'object') {\n                    list.push(id);\n                } else {\n                    // get from correct list in config\n                    const f = this.$store.getters.getConfigItemById(id, this.filter.type);\n                    if (f) {\n                        // part of fixed list to hide?\n                        if (this.$store.state.defaultSpFeature.indexOf(id) !== -1) {\n                            continue;\n                        }\n\n                        list.push({\n                            ids: id,\n                            ...f\n                        });\n                    }\n                }\n            }\n\n            return list;\n        },\n        /**\n         * list of ids\n         * @return {(function(): *[])|HTMLElement|*|*[]}\n         */\n        idList() {\n            if (this.filter && this.filter.list) {\n                return this.filter.list;\n            }\n            if (this.filter.mapFeatureToList && this.$store.state.config && this.$store.state.config.featureLists && this.$store.state.config.featureLists[this.filter.mapFeatureToList]) {\n                const myList = this.$store.state.config.featureLists[this.filter.mapFeatureToList];\n\n                if (Array.isArray(myList)) {\n                    return myList;\n                }\n            }\n            return [];\n        },\n        facetsLoading() {\n            return this.$store.state.facetsLoading;\n        },\n        facetsEmpty() {\n            return this.facetsLoading || !this.$store.state.facets || Object.keys(this.$store.state.facets).length === 0;\n        },\n        selectedTypeValues() {\n            return this.$store.state[this.filter.type];\n        }\n    },\n    mounted() {\n        // TODO, depend on type\n        this.checkedValues = this.selectedTypeValues;\n    },\n    methods: {\n        changed(value) {\n            if (this.filter.type) {\n                this.$store.commit((this.checkedValues.indexOf(value) > -1 ? 'set' : 'clear') + 'Filter_' + this.filter.type, value);\n                this.$emit('update');\n            }\n        }\n    },\n    watch: {\n        selectedTypeValues() {\n            this.checkedValues = this.selectedTypeValues;\n        }\n    }\n};\n","<template>\n  <v-list class=\"pt-2 pt-md-0\">\n    <v-list-item v-for=\"(item, idx) of getItems(list)\" :key=\"idx+item.ids\" class=\"eo-filter-selection-list-compact pa-0\" :class=\"{'pa-0': desktop}\">\n      <template v-if=\"facetsEmpty || getFacetData(item.ids) > 0\">\n        <v-list-item-content class=\"pa-0\">\n          <v-checkbox hide-details color=\"accent\" class=\"ma-0\" :value=\"item.ids\" @change=\"changed(item.ids)\" v-model=\"checkedValues\">\n            <template v-slot:label>\n              <span v-html=\"item.label\"></span>\n            </template>\n          </v-checkbox>\n        </v-list-item-content>\n        <v-list-item-action class=\"ma-0\">\n          <v-progress-circular v-if=\"facetsLoading\" :size=\"14\" :width=\"2\" color=\"grey lighten-2\" indeterminate/>\n          <div v-else-if=\"facetsEmpty\" class=\"text-right\" style=\"width: 3em\" />\n          <div v-else class=\"text-right\" style=\"width: 3em\">{{ getFacetData(item.ids) }}</div>\n        </v-list-item-action>\n      </template>\n    </v-list-item>\n    <div class=\"eo-filter-selection-list__divider\"></div>\n    <span text color=\"primary\" v-if=\"!facetsLoading && canShowMore && !showMore && leftElementsCount >= 1\" @click=\"showMore = true\" class=\"primary--text pl-1\" style=\"cursor: pointer\">{{\n        $t('message.showMoreResults', {n: leftElementsCount})\n      }} <v-icon color=\"primary\" right>{{mdiChevronDown}}</v-icon></span>\n    <span text color=\"primary\" v-if=\"!facetsLoading && canShowMore && showMore\" @click=\"showMore = false\" class=\"primary--text pl-1\" style=\"cursor: pointer\"> Weniger anzeigen<v-icon color=\"primary\" right>{{mdiChevronUp}}</v-icon></span>\n  </v-list >\n</template>\n\n<script>\nimport {filterSelectionMixin} from '../mixins/filter-selection-mixin';\nimport {mdiChevronUp, mdiChevronDown} from '@mdi/js';\n\nexport default {\n  name: 'eo-filter-selection-list',\n  mixins: [filterSelectionMixin],\n  props: [\"openCount\"],\n  data: () => ({\n    mdiChevronDown,\n    mdiChevronUp,\n    showMore: false,\n    canShowMore: false,\n    leftElementsCount: 0\n  }),\n  methods: {\n    getItems(list) {\n      if (this.facetsLoading) {\n        return list;\n      }\n      if (!this.openCount) {\n        return list;\n      }\n      if (list.length < this.openCount) {\n        return list;\n      }\n      if (this.showMore) {\n        return list;\n      }\n\n      this.canShowMore = true;\n\n      const visibleList = [];\n      let listHelper = [];\n      let i = 0;\n\n      // filter empty facet ids to display correct showMore items\n      if (!this.facetsEmpty) listHelper = list.filter(item => this.getFacetData(item.ids) > 0);\n\n      for (; i < listHelper.length; i++) {\n        if (this.getFacetData(listHelper[i].ids) > 0) {\n          visibleList.push(listHelper[i]);\n        }\n        if (visibleList.length >= this.openCount) {\n          break;\n        }\n      }\n\n      const indexOffset = (i + 1) - visibleList.length;\n      this.leftElementsCount = listHelper.length - this.openCount - indexOffset;\n\n      const listItems = listHelper.slice(0, this.openCount + indexOffset);\n\n      this.$emit(\"setFilterResults\", {label: this.filter.label, hasResults: listItems.length > 0} );\n\n      return listItems;\n    },\n    getFacetData(ids) {\n      return (this.$store.state && this.$store.state.facets && this.$store.state.facets[ids]) || 0;\n    },\n  },\n};\n</script>\n\n<style lang=\"sass\">\n.eo-filter-selection-list\n  &-compact.v-list-item\n    min-height: inherit\n    hyphens: auto\n.eo-filter-selection-list__divider\n  height: 15px\n@media (max-width: 996px)\n  .eo-filter-selection-list__divider\n    height: 10px\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FilterSelectionList.vue?vue&type=template&id=c8f53044\"\nimport script from \"./FilterSelectionList.vue?vue&type=script&lang=js\"\nexport * from \"./FilterSelectionList.vue?vue&type=script&lang=js\"\nimport style0 from \"./FilterSelectionList.vue?vue&type=style&index=0&id=c8f53044&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn-toggle',{staticClass:\"pb-4 eobuchung-filter-selection-btns\",class:{'eobuchung-filter-selection-desktop': _vm.desktop},style:({'--accent': _vm.$vuetify.theme.currentTheme.accent}),attrs:{\"multiple\":\"\"},on:{\"change\":_vm.listChanged},model:{value:(_vm.checkedValues),callback:function ($$v) {_vm.checkedValues=$$v},expression:\"checkedValues\"}},_vm._l((_vm.list),function(item){return _c('v-btn',{key:item.ids,attrs:{\"value\":item.ids,\"aria-label\":item.label,\"x-small\":_vm.desktop,\"ripple\":false,\"color\":\"white\",\"disabled\":_vm.facetEmpty(item.ids)},domProps:{\"innerHTML\":_vm._s(item.label)}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-btn-toggle class=\"pb-4 eobuchung-filter-selection-btns\" :class=\"{'eobuchung-filter-selection-desktop': desktop}\" multiple v-model=\"checkedValues\" @change=\"listChanged\" :style=\"{'--accent': $vuetify.theme.currentTheme.accent}\">\n    <v-btn v-for=\"item of list\" :key=\"item.ids\" :value=\"item.ids\" :aria-label=\"item.label\" :x-small=\"desktop\" :ripple=\"false\" v-html=\"item.label\" color=\"white\" :disabled=\"facetEmpty(item.ids)\" />\n  </v-btn-toggle>\n</template>\n\n<script>\nimport {filterSelectionMixin} from '../mixins/filter-selection-mixin';\n\nexport default {\n  name: 'eo-filter-selection-buttons',\n  mixins: [filterSelectionMixin],\n  methods: {\n    listChanged(values) {\n      // check whether values have been set of removed\n      for (const listEntry of this.list) {\n        const setActive = values.indexOf(listEntry.ids) !== -1;\n        const inStore = this.$store.state[this.filter.type].indexOf(listEntry.ids) !== -1;\n\n        if (setActive !== inStore) {\n          this.$store.commit((setActive ? 'set' : 'clear') + 'Filter_' + this.filter.type, listEntry.ids);\n        }\n      }\n\n      this.$emit('update');\n    },\n    facetEmpty(ids) {\n      // empty facets - or there are currently checked values (to make multichoice possible)\n      if (this.facetsEmpty || !this.$store.state || !this.$store.state.facets || (this.checkedValues && this.checkedValues.length)) return false;\n\n      // split ids in our case\n      for (const id of ids.split(',')) {\n        if (this.$store.state.facets[id]) return false;\n      }\n\n      return true;\n    },\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-filter-selection-btns\n  width: 100%\n  overflow: hidden\n\n  .v-btn\n    flex-grow: 1\n\n    svg\n      fill: #000\n\n    &.v-btn--active\n      border-color: var(--accent)\n\n      svg\n        fill: var(--accent)\n\n      &::before\n        opacity: 0 !important\n\n.eobuchung-filter-selection-desktop\n  svg\n    transform: scale(0.7)\n\n  .v-btn\n    padding: 20px 0 !important\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionButtons.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionButtons.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FilterSelectionButtons.vue?vue&type=template&id=610c05d7\"\nimport script from \"./FilterSelectionButtons.vue?vue&type=script&lang=js\"\nexport * from \"./FilterSelectionButtons.vue?vue&type=script&lang=js\"\nimport style0 from \"./FilterSelectionButtons.vue?vue&type=style&index=0&id=610c05d7&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"filterSelectionPlus d-flex align-center\",class:{'text--disabled': _vm.facetsLoading}},[_c('v-btn',{attrs:{\"icon\":\"\",\"medium\":\"\",\"disabled\":_vm.currentIndex === 0},on:{\"click\":_vm.decrementId}},[_c('v-icon',[_vm._v(_vm._s(_vm.mdiMinus))])],1),_c('div',{staticClass:\"mx-4 text-no-wrap currentSelection\"},[_vm._v(\" \"+_vm._s(_vm.currentIndex)+\" \")]),_c('v-btn',{attrs:{\"icon\":\"\",\"medium\":\"\",\"disabled\":_vm.currentIndex === _vm.ids.length - 1},on:{\"click\":_vm.incrementId}},[_c('v-icon',[_vm._v(_vm._s(_vm.mdiPlus))])],1),(_vm.facetsLoading)?_c('v-progress-circular',{attrs:{\"size\":14,\"width\":1,\"color\":\"grey lighten-2\",\"indeterminate\":\"\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n      <div class=\"filterSelectionPlus d-flex align-center\" :class=\"{'text--disabled': facetsLoading}\">\n        <v-btn\n            icon\n            medium\n            @click=\"decrementId\"\n            :disabled=\"currentIndex === 0\"\n        >\n          <v-icon>{{mdiMinus}}</v-icon>\n        </v-btn>\n\n        <div class=\"mx-4 text-no-wrap currentSelection\">\n          {{ currentIndex }}\n        </div>\n\n        <v-btn\n            icon\n            medium\n            @click=\"incrementId\"\n            :disabled=\"currentIndex === ids.length - 1\"\n        >\n          <v-icon>{{mdiPlus}}</v-icon>\n        </v-btn>\n        <v-progress-circular v-if=\"facetsLoading\" :size=\"14\" :width=\"1\" color=\"grey lighten-2\" indeterminate/>\n      </div>\n</template>\n\n<script>\n\nimport {filterSelectionMixin} from '@/mixins/filter-selection-mixin';\nimport {mdiPlus, mdiMinus} from '@mdi/js';\nexport default {\n  name: 'FilterSelectionPlus',\n  mixins: [filterSelectionMixin],\n  props: {\n    filter: {\n      type: Object,\n      required: true\n    },\n    ids: {\n      type: Array,\n      required: true\n    },\n  },\n  data() {\n    return {\n      mdiPlus,\n      mdiMinus,\n      currentIndex: 0,\n      showMore: false,\n      canShowMore: false,\n      leftElementsCount: 0,\n      debouncedChange: this.debounce(()=>this.$emit('change'), 1000),\n    };\n  },\n  mounted() {\n    this.currentIndex = this.selectedId ? this.ids.indexOf(this.selectedId) : 0;\n  },\n  computed: {\n    selectedId() {\n      const ftypes = this.$store.state[this.filter.type];\n      return ftypes.find((x) => this.ids.includes(x));\n    }\n  },\n  methods: {\n    incrementId() {\n      if (this.currentIndex < this.ids.length - 1) {\n        this.currentIndex++;\n        this.emitChange();\n      }\n    },\n    decrementId() {\n      if (this.currentIndex > -1) {\n        this.currentIndex--;\n        this.emitChange();\n      }\n    },\n    emitChange() {\n      this.updateStoreValues();\n      this.debouncedChange();\n    },\n    debounce(func, delay) {\n      let timeout;\n      return function(...args) {\n        clearTimeout(timeout);\n        timeout = setTimeout(() => func.apply(this, args), delay);\n      };\n    },\n    updateStoreValues() {\n      this.filter.list.map(i => this.$store.commit('clearFilter_' + this.filter.type, i));\n      const currentId = this.ids?.[this.currentIndex];\n      if(currentId)\n      this.$store.commit('setFilter_' + this.filter.type, currentId);\n    },\n  },\n};\n</script>\n\n<style scoped>\n.filterSelectionPlus {\n  width: 100%;\n  margin: 0;\n}\n\n.currentSelection {\n  font-size: 1.3rem;\n}\n.v-btn {\n  transition: all 0.3s ease;\n}\n\n.v-btn:not(.v-btn--disabled) {\n  color: primary;\n}\n\n.v-btn--disabled {\n  opacity: 0.5;\n}\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionPlus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FilterSelectionPlus.vue?vue&type=template&id=028a7b3d&scoped=true\"\nimport script from \"./FilterSelectionPlus.vue?vue&type=script&lang=js\"\nexport * from \"./FilterSelectionPlus.vue?vue&type=script&lang=js\"\nimport style0 from \"./FilterSelectionPlus.vue?vue&type=style&index=0&id=028a7b3d&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"028a7b3d\",\n  null\n  \n)\n\nexport default component.exports","export const filterListMixin = {\n    name: 'filterListMixin',\n    computed: {\n        filters() {\n            if (!this.$store.state || !this.$store.state.config) return [];\n\n            const filters = (this.$store.state.config && this.$store.state.config.filters) || [];\n\n            // hidden groups exist? => filter out hidden ones\n            if (this.$store.state.hiddenFilterGroups) {\n                const actualFilters = [];\n\n                for (const idx in filters) {\n                    // only add non hidden ones, cast to string, because hiddenFilterGroups is a string array\n                    if (this.$store.state.hiddenFilterGroups.indexOf('' + idx) === -1) {\n                        actualFilters.push(filters[idx]);\n                    }\n                }\n\n                return actualFilters;\n            }\n\n            // otherwise return all filters\n            return filters;\n        },\n    },\n    methods: {\n        updated() {\n            this.$emit('update');\n        },\n    },\n};\n","export const onlyBookableMixin = {\n    name: 'onlyBookableMixin',\n    data: () => ({\n        onlyBookable: false,\n    }),\n    mounted() {\n        this.onlyBookable = this.$store.state.bookableOnly;\n    },\n    methods: {\n        toggleBookable() {\n            this.$store.commit('setBookableOnly', this.onlyBookable);\n            this.$emit('change');\n        }\n    }\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"d-flex flex-column-reverse\"},_vm._l((_vm.list),function(item,i){return _c('div',{key:i},[(1<i+1)?_c('v-checkbox',{staticClass:\"ma-0 pa-0 pb-2\",attrs:{\"color\":\"accent\",\"hide-details\":\"\",\"value\":i+1},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('svg',{staticStyle:{\"margin-left\":\"-5px\"},attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"16\",\"height\":\"16\"}},[_c('path',{staticStyle:{\"fill\":\"rgb(255, 170, 0)\"},attrs:{\"d\":\"M7.355 1.975a96.499 96.499 0 0 1-.785 2.168c-.026.05-.58-.19-1.804-.773A209.423 209.423 0 0 0 2.7 2.392l-.3-.133.163.356c.091.197.482 1.024.872 1.835.39.812.758 1.585.815 1.718l.102.242-.993.357-2.168.77c-.645.227-1.168.416-1.16.424.007.007.951.341 2.1.747 1.149.405 2.12.758 2.157.777.05.026-.19.584-.773 1.804l-.978 2.067-.133.295.3-.132c.162-.076 1.091-.512 2.062-.978 1.224-.58 1.782-.82 1.804-.774.02.038.372 1.009.777 2.161.406 1.145.744 2.085.751 2.097 0 .007.197-.531.432-1.19l.77-2.166.349-.966.239.102c.132.06.91.425 1.72.815.812.39 1.639.785 1.836.872l.356.163-.136-.303c-.076-.163-.512-1.092-.979-2.063-.583-1.224-.818-1.781-.773-1.804.038-.02 1.012-.372 2.161-.777 1.145-.406 2.089-.743 2.097-.751a23.1 23.1 0 0 0-1.16-.42l-2.165-.77-.997-.357.106-.242c.057-.133.42-.91.811-1.718.39-.815.785-1.641.872-1.838l.163-.36-.417.193c-.227.106-1.054.496-1.835.872-.78.375-1.528.728-1.66.788l-.243.103-.057-.152L8.14-.02c-.027-.075-.284.58-.785 1.99z\"}})]),_vm._v(\"  \"+_vm._s(i+1)),((i+1) < 5)?_c('span',[_vm._v(\" & \"+_vm._s(_vm.$t('message.more')))]):_vm._e()]},proxy:true}],null,true),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}):_vm._e()],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"d-flex flex-column-reverse\">\n    <div v-for=\"(item,i) of list\" :key=\"i\">\n        <v-checkbox color=\"accent\"\n            v-if=\"1<i+1\"\n            hide-details\n            v-model=\"selected\"\n            :value=\"i+1\"\n            class=\"ma-0 pa-0 pb-2\">\n          <template v-slot:label>\n            <svg style=\"margin-left:-5px\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">\n              <path style=\"fill: rgb(255, 170, 0)\" d=\"M7.355 1.975a96.499 96.499 0 0 1-.785 2.168c-.026.05-.58-.19-1.804-.773A209.423 209.423 0 0 0 2.7 2.392l-.3-.133.163.356c.091.197.482 1.024.872 1.835.39.812.758 1.585.815 1.718l.102.242-.993.357-2.168.77c-.645.227-1.168.416-1.16.424.007.007.951.341 2.1.747 1.149.405 2.12.758 2.157.777.05.026-.19.584-.773 1.804l-.978 2.067-.133.295.3-.132c.162-.076 1.091-.512 2.062-.978 1.224-.58 1.782-.82 1.804-.774.02.038.372 1.009.777 2.161.406 1.145.744 2.085.751 2.097 0 .007.197-.531.432-1.19l.77-2.166.349-.966.239.102c.132.06.91.425 1.72.815.812.39 1.639.785 1.836.872l.356.163-.136-.303c-.076-.163-.512-1.092-.979-2.063-.583-1.224-.818-1.781-.773-1.804.038-.02 1.012-.372 2.161-.777 1.145-.406 2.089-.743 2.097-.751a23.1 23.1 0 0 0-1.16-.42l-2.165-.77-.997-.357.106-.242c.057-.133.42-.91.811-1.718.39-.815.785-1.641.872-1.838l.163-.36-.417.193c-.227.106-1.054.496-1.835.872-.78.375-1.528.728-1.66.788l-.243.103-.057-.152L8.14-.02c-.027-.075-.284.58-.785 1.99z\" ></path>\n            </svg>\n            &nbsp;{{i+1}}<span v-if=\"(i+1) < 5\">&nbsp;&amp; {{ $t('message.more') }}</span>\n          </template>\n        </v-checkbox>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {filterSelectionMixin} from '../mixins/filter-selection-mixin';\n\nexport default {\n  name: 'eo-filter-selection-classifications',\n  mixins: [filterSelectionMixin],\n  data() {\n    return {\n      selected: null,\n      maxCount: -1,\n    };\n  },\n  mounted() {\n      this.updateFilter();\n      this.checkFacets();\n  },\n  methods: {\n    updateFilter() {\n      const currentFilter = this.$store?.state?.[this.filter.type];\n      if (currentFilter && currentFilter.length > 0) {\n        const filterIndex = this.list.findIndex(item => item.ids === currentFilter[0]);\n        // if current filter is not in list, do not set selected\n        if(filterIndex === -1) {\n          return;\n        }\n        this.selected = filterIndex + 1;\n      } else {\n        this.selected = null;\n      }\n    },\n    checkFacets(){\n      const { facetsLoading, facets } = this.$store.state;\n      if (facetsLoading){\n        return;\n      }\n\n      this.maxCount = -1;\n      if (!facets) {\n        return;\n      }\n\n      for (let i = 0; i < this.list.length; i++){\n        const ids = this.list[i].ids.split(',');\n        for (const id of ids){\n          if (facets[id]){\n            this.maxCount = Math.max(this.maxCount, i + 1);\n          }\n        }\n      }\n    }\n  },\n  watch: {\n    selected(newVal) {\n      this.list.forEach((item,i) => {\n            if(newVal === null){\n              this.$store.commit('clearFilter_' + this.filter.type, item.ids);\n              return;\n            }\n            // set stars from i + 1 and more\n            if (i + 1 >= newVal) {\n              this.$store.commit('setFilter_' + this.filter.type, item.ids);\n            } else {\n              // remove stars less than i + 1\n              this.$store.commit('clearFilter_' + this.filter.type, item.ids);\n            }\n          }\n      );\n      this.$emit('update');\n    },\n    '$store.state.spClassification': {\n      handler(value) {\n        // trigger update when classification tag close clicked or whole filter cleared\n        if(value?.length === 0) {\n          this.updateFilter();\n        }\n      },\n      deep: true,\n    },\n    '$store.state.facets': {\n      handler() {\n        this.checkFacets();\n      },\n      deep: true\n    },\n    maxCount(value){\n      this.$emit(\"setFilterResults\", {label: this.filter.label, hasResults: value !== -1} );\n    }\n  },\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionClassifications.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionClassifications.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FilterSelectionClassifications.vue?vue&type=template&id=063df541\"\nimport script from \"./FilterSelectionClassifications.vue?vue&type=script&lang=js\"\nexport * from \"./FilterSelectionClassifications.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <v-dialog v-model=\"dialog\" fullscreen hide-overlay transition=\"dialog-bottom-transition\" style=\"z-index:5000\">\n    <template v-slot:activator=\"{ on }\">\n      <v-card\n          outlined\n          tile\n          class=\"d-flex align-center\"\n          :disabled=\"favoritesFiltered\"\n          :style=\"hasActiveFilters ? {'border-color': accentColor} : undefined\"\n          v-on=\"on\">\n        <v-card-text class=\"text-center\" :style=\"hasActiveFilters ? {'color': accentColor} : undefined\">\n          <div>\n            <v-icon :color=\"hasActiveFilters ? accentColor : undefined\">{{ mdiFilterOutline }}</v-icon>\n\n          </div>\n          <span class=\"\">Filtern</span>\n        </v-card-text>\n      </v-card>\n    </template>\n    <v-card>\n      <v-toolbar dark color=\"accent\" dense>\n        <v-toolbar-title>{{ $t(\"message.filterHeader\") }}</v-toolbar-title>\n        <v-spacer></v-spacer>\n        <v-btn icon dark @click=\"dialog = false\">\n          <v-icon>{{ mdiClose }}</v-icon>\n        </v-btn>\n      </v-toolbar>\n      <v-card-text>\n        <div class=\"mt-3\" :class=\"showBookableOnlySwitch ? 'text-right' : 'float-right'\">\n          <v-btn text tile small plain @click=\"clearAllFilters\" class=\"pr-0\">{{ $t('message.clearAllFilters') }}</v-btn>\n        </div>\n\n        <div v-if=\"showBookableOnlySwitch\" class=\"mt-6\">\n          <v-switch\n              class=\"mt-0\"\n              v-model=\"onlyBookable\"\n              :label=\"$t('message.onlyBookable')\"\n              @change=\"toggleBookable\"\n              :hide-details=\"true\"\n          ></v-switch>\n        </div>\n\n        <div v-for=\"(filter, idx) of filters.filter(_filter => _filter.hasResults === undefined || _filter.hasResults === true)\" :key=\"idx\">\n          <h4 class=\"bold pt-4 pb-1\">{{ filter.label }}</h4>\n\n          <!-- TODO: v2: <eo-filter-selection-multi-ruler v-if=\"filter.display === 'multiRuler'\" :filter=\"filter\" @update=\"updated\"/>-->\n          <eo-filter-selection-classifications v-if=\"filter.label === 'Sterne' || filter.display === 'classifications'\"\n                                               :filter=\"filter\" desktop @update=\"updated\" @setFilterResults=\"setFilterResults\" :id=\"`widget-${idx}`\" />\n          <eo-filter-selection-buttons v-else-if=\"filter.display === 'buttons'\" :filter=\"filter\" @update=\"updated\"/>\n          <FilterSelectionPlus class=\"mb-3\" :filter=\"filter\" v-else-if=\"filter.display === 'plusMinus'\"\n                               :ids=\"['',...filter.list]\"\n                               @change=\"updated\"\n                               :id=\"`widget-${idx}`\"\n          ></FilterSelectionPlus>\n          <eo-filter-selection-list :open-count=\"filter.openCount\" v-else :filter=\"filter\" @update=\"updated\" @setFilterResults=\"setFilterResults\"/>\n\n          <v-divider/>\n        </div>\n\n        <div style=\"height: 64px\" />\n      </v-card-text>\n\n      <v-app-bar color=\"white\" fixed bottom>\n        <v-btn color=\"primary\" large tile block @click=\"dialog = false\" :disabled=\"isLoading\">\n          <v-progress-circular v-if=\"isLoading\" indeterminate :size=\"20\" :width=\"4\" :value=\"100\"/>\n          {{ $tc(\"message.showXResults\", totalCount, { n: totalCount } ) }}\n        </v-btn>\n      </v-app-bar>\n    </v-card>\n  </v-dialog>\n</template>\n\n<script>\nimport {mdiClose, mdiFilterOutline} from \"@mdi/js\";\nimport EoFilterSelectionList from \"./FilterSelectionList\";\nimport EoFilterSelectionButtons from \"./FilterSelectionButtons\";\nimport FilterSelectionPlus from \"./FilterSelectionPlus.vue\";\nimport {filterListMixin} from \"../mixins/filter-list-mixin.js\";\nimport {onlyBookableMixin} from \"../mixins/only-bookable-mixin.js\";\nimport EoFilterSelectionClassifications from \"@/components/FilterSelectionClassifications.vue\";\n// import EoFilterSelectionMultiRuler from \"./FilterSelectionMultiRuler\"; // TODO: v2\n\nexport default {\n  name: 'eo-filter-selection',\n  components: {EoFilterSelectionClassifications, EoFilterSelectionButtons, EoFilterSelectionList, FilterSelectionPlus},\n  mixins: [filterListMixin, onlyBookableMixin],\n  props: {\n    totalCount: {\n      type: Number,\n      default: 0\n    },\n    isLoading: {\n      type: Boolean,\n      default: false,\n    },\n    favoritesFiltered: {\n      type: Boolean,\n      default: false,\n    },\n    hasActiveFilters: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  data: () => ({\n    dialog: false,\n    // icons\n    mdiClose: mdiClose,\n    mdiFilterOutline: mdiFilterOutline,\n  }),\n  computed: {\n    showBookableOnlySwitch() {\n      return !this.$store.state.config.hide || !this.$store.state.config.hide.bookable;\n    },\n    accentColor() {\n      return this.$vuetify.theme.currentTheme.accent;\n    }\n  },\n  methods: {\n    clearAllFilters() {\n      this.$store.commit('clearAllFilters');\n      this.updated();\n    },\n    setFilterResults(obj){\n      const { label, hasResults } = obj;\n      const index = this.filters.findIndex(filter => filter.label === label);\n      if (this.filters[index].hasResults === hasResults) {\n        return;\n      }\n      this.$set(this.filters, index, { ...this.filters[index], hasResults } );\n      this.$forceUpdate();\n    }\n  }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelection.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelection.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FilterSelection.vue?vue&type=template&id=50d5e89d\"\nimport script from \"./FilterSelection.vue?vue&type=script&lang=js\"\nexport * from \"./FilterSelection.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{directives:[{name:\"resize\",rawName:\"v-resize\",value:(_vm.onResize),expression:\"onResize\"}],ref:\"theSearchCard\"},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.$t(\"message.searchToolbarTitle\")))]),_c('v-spacer'),_c('v-btn',{staticClass:\"pr-0\",attrs:{\"text\":\"\",\"depressed\":\"\",\"plain\":\"\"},on:{\"click\":_vm.closeSearch}},[_c('v-icon',{staticClass:\"right\"},[_vm._v(_vm._s(_vm.mdiClose))])],1)],1),_c('v-card-text',{staticClass:\"px-4 pr-8\"},[(_vm.error)?_c('v-alert',{attrs:{\"color\":\"error\",\"dark\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_vm._e(),_c('v-btn',{staticClass:\"mt-6 mb-4 px-0\",attrs:{\"text\":\"\",\"x-small\":\"\",\"plain\":\"\"},on:{\"click\":_vm.clearData}},[_vm._v(\" \"+_vm._s(_vm.$t('message.clearAllData'))+\" \")]),_c('eo-form-autocompleter',{ref:\"autocompleter\",staticClass:\"mb-4\",attrs:{\"initial-data\":_vm.searchItem},on:{\"error\":function($event){_vm.error = $event},\"change\":_vm.autocompleterChanged,\"blur\":_vm.autocompleterBlurred}}),(_vm.isLocationBasedSearch)?_c('div',{staticClass:\"pb-4\"},[_c('div',{staticClass:\"pb-2\"},[_vm._v(_vm._s(_vm.$t(\"message.radiusKm\")))]),_c('v-btn-toggle',{staticClass:\"eobuchung-search-dialog-radius-btns\",attrs:{\"dense\":\"\",\"tile\":\"\"}},_vm._l((_vm.radii),function(val,key){return _c('v-btn',{key:val,class:{accent: val === _vm.searchRadius},attrs:{\"tile\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){_vm.searchRadius = val}}},[_vm._v(_vm._s(key)+\" \")])}),1)],1):_vm._e(),_c('DatePicker',{ref:\"dateinput\",attrs:{\"date-modal-id\":\"dateSearchCard\",\"searchDate\":_vm.searchDate},on:{\"onSearchDate\":_vm.onSearchDate,\"input\":_vm.updateSearchDate}}),(_vm.searchDate)?_c('eo-form-accommdation-select',{attrs:{\"is-mobile\":true,\"expand\":true},model:{value:(_vm.searchAccommodation),callback:function ($$v) {_vm.searchAccommodation=$$v},expression:\"searchAccommodation\"}}):_vm._e(),_c('v-btn',{attrs:{\"x-large\":\"\",\"block\":\"\",\"tile\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.search}},[_vm._v(_vm._s(_vm.$t(\"message.searchSubmit\")))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <!-- mobile search card (in dialog) -->\n  <v-card ref=\"theSearchCard\" v-resize=\"onResize\">\n    <v-toolbar flat dense>\n      <v-toolbar-title>{{ $t(\"message.searchToolbarTitle\") }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn text depressed plain class=\"pr-0\" @click=\"closeSearch\">\n        <v-icon class=\"right\">{{ mdiClose }}</v-icon>\n      </v-btn>\n    </v-toolbar>\n    <v-card-text class=\"px-4 pr-8\">\n      <v-alert v-if=\"error\" color=\"error\" dark>\n        {{ error }}\n      </v-alert>\n\n      <v-btn class=\"mt-6 mb-4 px-0\" text x-small plain @click=\"clearData\">\n        {{ $t('message.clearAllData') }}\n      </v-btn>\n\n      <eo-form-autocompleter ref=\"autocompleter\"\n                             :initial-data=\"searchItem\"\n                             class=\"mb-4\"\n                             @error=\"error = $event\"\n                             @change=\"autocompleterChanged\"\n                             @blur=\"autocompleterBlurred\" />\n\n      <div v-if=\"isLocationBasedSearch\" class=\"pb-4\">\n        <div class=\"pb-2\">{{ $t(\"message.radiusKm\") }}</div>\n\n        <v-btn-toggle class=\"eobuchung-search-dialog-radius-btns\" dense tile>\n          <v-btn tile outlined v-for=\"(val, key) of radii\" :key=\"val\" @click=\"searchRadius = val\"\n                 :class=\"{accent: val === searchRadius}\">{{ key }}\n          </v-btn>\n        </v-btn-toggle>\n      </div>\n\n\n      <DatePicker date-modal-id=\"dateSearchCard\" ref=\"dateinput\" :searchDate=\"searchDate\" @onSearchDate=\"onSearchDate\" @input=\"updateSearchDate\"></DatePicker>\n\n\n      <eo-form-accommdation-select v-if=\"searchDate\" v-model=\"searchAccommodation\" :is-mobile=\"true\" :expand=\"true\" />\n\n      <v-btn x-large block tile color=\"primary\" @click=\"search\">{{ $t(\"message.searchSubmit\") }}</v-btn>\n    </v-card-text>\n  </v-card>\n</template>\n\n<script>\nimport EoFormAccommdationSelect from \"./FormAccommodationSelect\";\nimport EoFormAutocompleter from \"./FormAutocompleter\";\nimport DatePicker from \"./DatePicker.vue\";\nimport {mdiCalendarMonth, mdiClose, mdiChevronLeft, mdiChevronRight, mdiArrowDown, mdiArrowUp} from '@mdi/js';\n\nexport default {\n  name: \"eo-search-card\",\n  components: {EoFormAccommdationSelect, EoFormAutocompleter, DatePicker},\n  data: () => ({\n    searchItem: null, // keeps search item object provided by autocompleter {text: 'xx', value: 'xxx', type: 'sp'}\n    searchRadius: 25, // default is 25 km\n    searchDate: null, // object keeping start and stop dates for search\n    searchAccommodation: [], // keeps accommodation data\n    oldSearchItem: null, // keeps old copy of search item\n    error: false,\n    documentWidth: 0, // width of complete element\n    value: null,\n    // icons\n    mdiClose: mdiClose,\n    mdiCalendarMonth: mdiCalendarMonth,\n    mdiChevronLeft: mdiChevronLeft,\n    mdiChevronRight: mdiChevronRight,\n    mdiArrowDown: mdiArrowDown,\n    mdiArrowUp: mdiArrowUp,\n  }),\n  computed: {\n    /**\n     * true if location based search should be used\n     */\n    isLocationBasedSearch() {\n      return this.searchItem && this.searchItem.type === \"geo\";\n    },\n    /**\n     * Radius settings for location based search\n     */\n    radii() {\n      return {'2': 2, '10': 10, '25': 25, '50': 50, '100': 100, '250': 250};\n    },\n    isNarrow() {\n      return this.documentWidth < 600; // => https://vuetifyjs.com/de-DE/customization/breakpoints/\n    },\n  },\n  created() {\n    // get data from state\n    this.getDataFromStore();\n  },\n  methods: {\n    updateSearchDate(input) {\n      if(!this.searchDate)\n        this.searchDate = {};\n      this.searchDate.start = input.start;\n      this.searchDate.end = input.end;\n      this.searchDate.nights = input.nights;\n    },\n    getDataFromStore() {\n      this.searchItem = this.$store.state.searchItem;\n      this.searchRadius = this.$store.state.searchRadius;\n      this.searchDate = this.$store.state.searchDate;\n      this.searchAccommodation = this.$store.state.searchAccommodation;\n    },\n    /**\n     * Commit search\n     */\n    search(emitUpdate = true) {\n      // persist data to store\n      this.$store.commit('setSearchItem', this.searchItem);\n      this.$store.commit('setSearchRadius', this.searchRadius);\n      this.$store.commit('setSearchDate', this.searchDate);\n      this.$store.commit('setSearchAccommodation', this.searchAccommodation);\n      this.$store.commit('clearGeoEntries'); // clear geo entries\n\n      // emit search update?\n      if (emitUpdate) {\n        this.$emit('update');\n      }\n    },\n    /**\n     * event handler for autocompleter changes\n     * @param value\n     */\n    autocompleterChanged(value) {\n      this.searchItem = value;\n      // has radius changed?\n      if (value && value.radius) {\n        this.searchRadius = value.radius;\n      }\n    },\n    /**\n     * event handler for autocompleter blurs\n     */\n    autocompleterBlurred() {\n      if (this.oldSearchItem) {\n        this.searchItem = this.oldSearchItem;\n        this.oldSearchItem = null;\n      }\n    },\n    closeSearch() {\n      this.$emit('close');\n    },\n    onSearchDate(value) {\n      // do search whenever we deleted the search date from the dialog\n      if (this.desktop && !value) {\n        this.search(true);\n      }\n    },\n    onResize() {\n      this.documentWidth = this.documentWidth = Math.max(\n          document.body.scrollWidth,\n          document.documentElement.scrollWidth,\n          document.body.offsetWidth,\n          document.documentElement.offsetWidth,\n          document.documentElement.clientWidth\n      );\n    },\n    clearData() {\n      this.$store.commit('clearSearch');\n      this.$emit('update');\n    }\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-search-dialog-radius-btns\n  button\n    height: 40px !important\n\n    &.theme--light.v-btn.accent\n      color: #fff\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SearchCard.vue?vue&type=template&id=3f1f8d87\"\nimport script from \"./SearchCard.vue?vue&type=script&lang=js\"\nexport * from \"./SearchCard.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchCard.vue?vue&type=style&index=0&id=3f1f8d87&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import {mdiClose, mdiHeart, mdiHeartOutline, mdiMapSearch, mdiSortAscending, mdiSortDescending} from \"@mdi/js\";\n\nexport const filterMixin = {\n    name: 'filterMixin',\n    props: {\n        totalCount: {\n            type: Number,\n            default: 0,\n        },\n        showMap: {\n            type: Boolean,\n            default: false,\n        },\n        isLoading: {\n            type: Boolean,\n            default: false,\n        }\n    },\n    data: () => ({\n        // icons\n        mdiHeartOutline: mdiHeartOutline,\n        mdiHeart: mdiHeart,\n        mdiMapSearch: mdiMapSearch,\n        mdiClose: mdiClose,\n        mdiSortDescending: mdiSortDescending,\n        mdiSortAscending: mdiSortAscending,\n    }),\n    computed: {\n        sortings() {\n            const sortings = this.$store.getters.getSortings();\n\n            // filter out '10', if we do not have any geo search\n            if (!(this.searchItem && this.searchItem.type === 'geo')) {\n                const actualSortings = [];\n\n                for (const sorting of sortings) {\n                    if (sorting.value !== '10' && sorting.value !== 10) {\n                        actualSortings.push(sorting);\n                    }\n                }\n\n                return actualSortings;\n            }\n\n            return sortings;\n        },\n        getSorting() {\n            return (this.$store.state.sort && this.$store.state.sort !== '' && this.$store.state.sort) || this.$store.getters.getDefaultSorting();\n        },\n        searchItem() {\n            return this.$store.state.searchItem;\n        },\n        isDefaultSort() {\n            return !this.$store.state.sort || this.$store.state.sort === this.$store.getters.getDefaultSorting();\n        },\n        currentSortingName() {\n            let text = this.currentSortingFullName;\n            if (text && text.length > 0) {\n                const pos = text.indexOf('(');\n                if (pos > 0) {\n                    text = text.substr(0, pos).trim();\n                }\n            }\n            return text;\n        },\n        currentSortingFullName() {\n            const sortCode = (this.$store.state.sort && this.$store.state.sort !== '' && this.$store.state.sort) || this.$store.getters.getDefaultSorting();\n            for (const sorting of this.$store.getters.getSortings()) {\n                if (sortCode === sorting.value) {\n                    return sorting.text;\n                }\n            }\n            return '';\n        },\n        totalFavorites() {\n            return this.$store.state.favorites.length;\n        },\n        favoritesFiltered() {\n            return this.$store.state.filterFavorites;\n        },\n        activeFilters() {\n            const activeFilters = [];\n\n            if (this.$store.state.config) {\n                const getters = this.$store.getters;\n                const state = this.$store.state;\n                let spClassification = [];\n\n                ['spFeature', 'sFeature', 'spClassification', 'sClassification', 'accommodationType', 'touristicType', 'board'].forEach(function (f) {\n                    if (state[f] && state[f].length) {\n                        state[f].forEach(function (ids) {\n                            let label = undefined;\n                            let item = undefined;\n                            switch (f) {\n                                case 'spFeature':\n                                    item = getters.getFeature(ids);\n                                    if (item) {\n                                        // hidden or in the list of default features => hide it!\n                                        if (item.hidden || state.defaultSpFeature.indexOf(ids) !== -1) return;\n                                        label = item.label;\n                                    }\n                                    break;\n                                case 'sFeature':\n                                    item = getters.getServiceFeature(ids);\n                                    if (item) {\n                                        if (item.hidden) return;\n                                        label = item.label || 'TODO';\n                                    }\n                                    break;\n                                case 'spClassification':\n                                    label = getters.getClassificationFromIdList(ids);\n                                    break;\n                                case 'accommodationType':\n                                    item = getters.getAccommodationType(ids);\n                                    if (item) {\n                                        if (item.hidden) return;\n                                        label = item.label;\n                                    }\n                                    break;\n                                case 'touristicType':\n                                    item = getters.getTouristicType(ids);\n                                    if (item) {\n                                        if (item.hidden) return;\n                                        label = item.label;\n                                    }\n                                    break;\n                                case 'sClassification':\n                                    label = 'TODO sClassification'; // TODO\n                                    break;\n                                case 'board':\n                                    label = 'TODO board'; // TODO\n                                    break;\n                            }\n                            if(f=== 'spClassification') {\n                              spClassification.push({ids: ids, label: label || ids, list: f, type: 'filter'});\n                            } else {\n                              activeFilters.push({ids: ids, label: label || ids, list: f, type: 'filter'});\n                            }\n                        });\n                        let iLabel = '';\n                        let ids = '';\n                        const idsArray = spClassification.map(i => i.ids);\n                        spClassification.forEach(i => {\n                            if (iLabel) {\n                              iLabel += ', ' + i.label;\n                              ids  += ', ' + i.ids;\n                              return;\n                            }\n                            ids = i.ids;\n                            iLabel = i.label;\n                        });\n                        // add if any spClassification is selected\n                        if(iLabel) {\n                          activeFilters.push({\n                            ids: ids,\n                            label: iLabel,\n                            list: 'spClassification',\n                            type: 'filter',\n                            idsArray\n                          });\n                        }\n                    }\n                });\n            }\n\n            return activeFilters;\n        }\n    },\n    methods: {\n        toggleFilterFavorites() {\n            this.$store.commit('toggleFilterFavorites');\n            this.$emit('change');\n        },\n        toggleMap() {\n            this.$emit('toggleMap');\n        },\n        setSorting(sorting) {\n            this.$store.commit('setSort', sorting || this.$store.getters.getDefaultSorting());\n            this.$emit('sortingUpdated');\n        },\n        updateSearch() {\n            // scroll to top #eobuchung-desktop-list-header\n            const header = document.querySelector('#eobuchung-desktop-list-header');\n            if (header) {\n                header.scrollIntoView({behavior: 'smooth'});\n            }\n\n            this.$emit('change');\n        },\n        closeFilter(filter) {\n            // what type of filter is this?\n            switch (filter.type) {\n                case 'filter':\n                    if(filter.idsArray) {\n                     filter.idsArray.forEach(ids => {\n                        this.$store.commit('clearFilter_' + filter.list, ids);\n                     });\n                     this.$emit('filterChipDeleted');\n                     return;\n                    }\n                    // normal filter\n                    this.$store.commit('clearFilter_' + filter.list, filter.ids);\n                    this.$emit('filterChipDeleted'); // different event because we will want to show progress\n            }\n        },\n    }\n};\n","<template>\n  <div class=\"eobuchung-filter\">\n    <!-- Suchbox -->\n    <v-sheet class=\"mx-4 my-2 pa-4 eobuchung-filter-buttons\" rounded>\n      <v-btn class=\"eobuchung-clear-data-btn mb-4\" text x-small plain @click=\"clearData\">\n        {{ $t('message.clearAllData') }}\n      </v-btn>\n      <v-btn outlined large tile @click=\"activateSearch\" class=\"eobuchung-search-btn\">\n        <span class=\"eobuchung-filter-button-text\">{{ compiledAutosuggestData || $t('message.autoCompleterPlaceholder') }}</span>\n        <v-icon>{{ mdiMagnify }}</v-icon>\n      </v-btn>\n      <v-btn outlined large tile :class=\"{'eobuchung-cta-calendar': compiledSearchData}\" :style=\"compiledSearchData ? '' : {'border-color': primaryColor, 'border-width': '2px', 'font-weight': 'bold', 'color': primaryColor}\" @click=\"activateDateSearch\">\n        <span class=\"eobuchung-filter-button-text\">{{ compiledSearchData || $t('message.arrivalDeparture') }}</span>\n        <v-icon>{{ mdiCalendarMonth }}</v-icon>\n      </v-btn>\n    </v-sheet>\n    <!-- Filter-Icons -->\n    <v-item-group class=\"mt-6\">\n      <v-container class=\"pa-0 px-4\">\n        <v-row>\n          <v-col class=\"pa-0 pr-sm-2 pl-sm-2\">\n            <v-progress-circular v-if=\"isLoadingInForeground\" indeterminate :size=\"20\" :width=\"4\" :value=\"100\"/>\n            <eo-filter-selection v-else :total-count=\"totalCount\" :is-loading=\"isLoading\" :has-active-filters=\"$store.state.bookableOnly || (activeFilters && activeFilters.length > 0)\" @update=\"filterUpdated\" @change=\"filterUpdated\"/>\n          </v-col>\n          <v-col class=\"pa-0 pr-sm-2\" style=\"overflow: hidden\">\n            <v-item>\n              <v-menu\n                  offset-y\n                  origin=\"center center\"\n                  transition=\"scale-transition\"\n              >\n                <template v-slot:activator=\"{ on }\">\n                  <v-card\n                      outlined\n                      tile\n                      class=\"d-flex align-center\"\n                      :style=\"isDefaultSort ? undefined : {'border-color': accentColor}\"\n                      v-on=\"on\"\n                  >\n                    <v-card-text class=\"text-center\">\n                      <div>\n                        <v-icon :color=\"isDefaultSort ? '' : 'accent'\"\n                        >{{\n                            getSorting.startsWith('-')\n                                ? mdiSortDescending\n                                : mdiSortAscending\n                          }}\n                        </v-icon>\n                      </div>\n                      <div style=\"overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\" :style=\"isDefaultSort ? '' : 'color:' + accentColor\">{{ currentSortingName }}</div>\n                    </v-card-text>\n                  </v-card>\n                </template>\n                <v-list>\n                  <v-list-item\n                      v-for=\"sorting of sortings\"\n                      :key=\"sorting.value\"\n                      @click=\"setSorting(sorting.value)\"\n                  >{{ sorting.text }}\n                  </v-list-item>\n                </v-list>\n              </v-menu>\n            </v-item>\n          </v-col>\n          <v-col class=\"pa-0 pr-sm-2\">\n            <v-item>\n              <v-card\n                  outlined\n                  tile\n                  class=\"d-flex align-center\"\n                  @click=\"toggleFilterFavorites\"\n                  :disabled=\"totalFavorites < 1\"\n                  :style=\"favoritesFiltered ? {'border-color': accentColor} : undefined\"\n              >\n                <v-card-text class=\"text-center\">\n                  <div>\n                    <v-icon :color=\"favoritesFiltered ? 'accent' : ''\">\n                      {{ favoritesFiltered ? mdiHeart : mdiHeartOutline }}\n                    </v-icon>\n                  </div>\n                  <div :style=\"favoritesFiltered ? 'color:' + accentColor : ''\">\n                    {{ $t(\"message.notepad\") }}\n                  </div>\n                </v-card-text>\n              </v-card>\n            </v-item>\n          </v-col>\n          <v-col class=\"pa-0 pr-sm-2\">\n            <v-item>\n              <v-card\n                  outlined\n                  tile\n                  class=\"d-flex align-center\"\n                  :style=\"showMap ? {'border-color': accentColor} : undefined\"\n                  @click=\"toggleMap\"\n              >\n                <v-card-text class=\"text-center\">\n                  <div>\n                    <v-icon :color=\"showMap ? 'accent' : ''\">{{\n                        showMap ? mdiClose : mdiMapSearch\n                      }}</v-icon>\n                  </div>\n                  <div :style=\"showMap ? 'color:' + accentColor : ''\">{{ $t(\"message.map\") }}</div>\n                </v-card-text>\n              </v-card>\n            </v-item>\n          </v-col>\n        </v-row>\n      </v-container>\n    </v-item-group>\n    <v-container fluid>\n      <v-row>\n        <v-col>\n          <v-divider v-if=\"activeFilters && activeFilters.length\" />\n        </v-col>\n      </v-row>\n    </v-container>\n    <eo-chip-group v-if=\"!isDefaultSort || bookableOnly || (activeFilters && activeFilters.length)\" class=\"mb-3 pl-3 pr-3\">\n      <v-chip v-if=\"bookableOnly\" close :close-icon=\"mdiClose\" @click:close=\"deleteBookableOnly\" color=\"grey lighten-3\">{{ $t('message.onlyBookable') }}</v-chip>\n      <v-chip v-if=\"!isDefaultSort\" close :close-icon=\"mdiClose\" @click:close=\"setSorting(null)\" color=\"grey lighten-3\">{{ currentSortingFullName }}</v-chip>\n      <v-chip label close :close-icon=\"mdiClose\" v-for=\"filter in activeFilters\" :key=\"filter.ids\" @click:close=\"closeFilter(filter)\" color=\"grey lighten-3\">\n        <template v-slot:default>\n          <eo-classification v-if=\"filter.list === 'spClassification'\" :classification=\"filter.label\" />\n          <span v-else v-html=\"filter.label\" />\n        </template>\n      </v-chip>\n    </eo-chip-group>\n\n    <v-dialog\n        v-model=\"inSearchDialog\"\n        fullscreen\n        eager\n        hide-overlay\n        transition=\"dialog-bottom-transition\"\n        style=\"z-index:5000\"\n    >\n      <eo-search-card ref=\"searchCard\" @update=\"update\" @close=\"inSearchDialog = false\"/>\n    </v-dialog>\n  </div>\n</template>\n\n<script>\nimport {mdiClose, mdiMagnify, mdiCalendarMonth} from \"@mdi/js\";\nimport EoFilterSelection from \"./FilterSelection\";\nimport EoChipGroup from \"./ChipGroup\";\nimport EoSearchCard from \"./SearchCard\";\nimport EoClassification from \"./Classification\";\nimport {filterMixin} from \"../mixins/filter-mixin\";\n\nexport default {\n  name: 'eo-filter',\n  components: {EoClassification, EoChipGroup, EoFilterSelection, EoSearchCard},\n  mixins: [filterMixin],\n  props: {\n    isLoadingInForeground: {\n      type: Boolean,\n      default: false,\n    }\n  },\n  data: () => ({\n    inSearchDialog: false,\n    lastSource: 0,\n    focusAttemptId: 0,\n    // icons\n    mdiClose: mdiClose,\n    mdiMagnify: mdiMagnify,\n    mdiCalendarMonth: mdiCalendarMonth\n  }),\n  computed: {\n    compiledAutosuggestData() {\n      const data = [];\n\n      if (this.$store.state.searchItem && this.$store.state.searchItem.value) {\n        data.push(this.$store.state.searchItem.value);\n      }\n\n      if (this.$store.state.searchItem && this.$store.state.searchItem.type === 'geo') {\n        let radius = this.$store.state.searchRadius;\n        if (radius !== Math.round(radius)) {\n          radius = ('' + Math.round(radius * 100) / 100).replace('.', ',');\n        }\n        data.push(radius + 'km');\n      }\n\n      return data.join(' • ');\n    },\n    compiledSearchData() {\n      const data = [];\n\n      if (this.$store.state.searchDate && this.$store.state.searchDate.start && this.$store.state.searchDate.end) {\n        const searchDate = this.$store.state.searchDate;\n        if (searchDate.start.getFullYear() === searchDate.end.getFullYear()) {\n          data.push(searchDate.start.getDate() + '.' + (searchDate.start.getMonth() + 1) + '.–' + searchDate.end.getDate() + '.' +\n              (searchDate.end.getMonth() + 1) + '.' + (searchDate.start.getFullYear() - 2000));\n        } else {\n          data.push(searchDate.start.getDate() + '.' + (searchDate.start.getMonth() + 1) + '.' +\n              (searchDate.start.getFullYear() - 2000) + '–' + searchDate.end.getDate() + '.' +\n              (searchDate.end.getMonth() + 1) + '.' + (searchDate.end.getFullYear() - 2000));\n        }\n\n        // only if there is a date\n        if (this.$store.state.searchAccommodation && this.$store.state.searchAccommodation.length) {\n          const searchAccommodation = this.$store.state.searchAccommodation;\n\n          if (searchAccommodation.length > 1) {\n            data.push(searchAccommodation.length + ' ' + this.$i18n.t('message.rooms'));\n          }\n\n          let persons = 0;\n          searchAccommodation.forEach(acc => {\n            persons += acc.adults + acc.children;\n          });\n\n          data.push(this.$i18n.tc('message.personsX', persons, {n: persons}));\n        }\n      }\n\n      return data.join(' • ');\n    },\n    bookableOnly() {\n      return this.$store.state.bookableOnly;\n    },\n    primaryColor() {\n      return this.$vuetify.theme.currentTheme.primary;\n    },\n    accentColor() {\n      return this.$vuetify.theme.currentTheme.accent;\n    },\n  },\n  methods: {\n    focusSearchDialogTarget(attempt = 0, attemptId = this.focusAttemptId) {\n      if (!this.inSearchDialog || attemptId !== this.focusAttemptId) {\n        return;\n      }\n\n      this.$nextTick(() => {\n        if (!this.inSearchDialog || attemptId !== this.focusAttemptId) {\n          return;\n        }\n\n        const searchCard = this.$refs.searchCard;\n        if (!searchCard || !searchCard.$refs) {\n          if (attempt < 8) {\n            setTimeout(() => this.focusSearchDialogTarget(attempt + 1, attemptId), 80);\n          }\n          return;\n        }\n\n        if (this.lastSource === 1 && searchCard.$refs.autocompleter && typeof searchCard.$refs.autocompleter.focus === 'function') {\n          searchCard.$refs.autocompleter.focus({ immediate: true });\n          this.lastSource = 0;\n          return;\n        }\n\n        if (this.lastSource === 2 && searchCard.$refs.dateinput && searchCard.$refs.dateinput.$data) {\n          searchCard.$refs.dateinput.$data.showingDatepicker = true;\n          this.lastSource = 0;\n          return;\n        }\n\n        if (this.lastSource === 3 || this.lastSource === 0) {\n          this.lastSource = 0;\n          return;\n        }\n\n        if (attempt < 8) {\n          setTimeout(() => this.focusSearchDialogTarget(attempt + 1, attemptId), 80);\n        }\n      });\n    },\n    activateSearch() {\n      this.lastSource = 1;\n      this.inSearchDialog = true;\n    },\n    activateDateSearch() {\n      this.lastSource = this.compiledSearchData ? 3 : 2;\n      this.inSearchDialog = true;\n    },\n    update() {\n      this.updateSearch();\n      this.inSearchDialog = false;\n    },\n    filterUpdated() {\n      this.$emit('filterUpdated');\n    },\n    deleteBookableOnly() {\n      this.$store.commit('setBookableOnly', false);\n      this.$emit('change');\n      this.$emit('change');\n    },\n    clearData() {\n      this.$store.commit('clearSearch');\n      this.$emit('change');\n    }\n  },\n  watch: {\n    inSearchDialog(newValue) {\n      this.focusAttemptId += 1;\n\n      if (newValue) {\n        this.focusSearchDialogTarget(0, this.focusAttemptId);\n      } else {\n        this.lastSource = 0;\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-filter\n  min-width: 330px\n\n  .eobuchung-filter-buttons\n    .eobuchung-search-btn\n      margin-bottom: 10px\n      border-bottom: 1px solid !important\n    .eobuchung-clear-data-btn\n      background: unset\n      text-transform: uppercase\n      &:hover\n        color: black\n      span\n        justify-content: end !important\n\n  &-search-text\n    .v-input__slot\n      background-color: #fff !important\n\n  &-buttons\n    background-color: #eee !important\n\n    button.v-btn\n      background-color: #fff\n      width: 100%\n      display: block\n      text-transform: inherit\n      font-weight: normal\n\n      .v-btn__content\n        justify-content: space-between\n\n    button.v-btn:not(:last-child)\n      border-bottom: 5px\n\n  &-button-text\n    overflow: hidden\n    text-overflow: ellipsis\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Filter.vue?vue&type=template&id=9c711cb4\"\nimport script from \"./Filter.vue?vue&type=script&lang=js\"\nexport * from \"./Filter.vue?vue&type=script&lang=js\"\nimport style0 from \"./Filter.vue?vue&type=style&index=0&id=9c711cb4&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"position\":\"relative\",\"z-index\":\"10\"}},[(_vm.error)?_c('v-alert',{attrs:{\"color\":\"error\",\"dark\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_c('l-map',{ref:\"myListMap\",staticStyle:{\"width\":\"100%\",\"height\":\"600px\"},attrs:{\"minZoom\":5,\"maxZoom\":18,\"maxBounds\":[[43, 3], [57, 20]],\"zoom\":12,\"center\":_vm.coordinates,\"aria-roledescription\":\"map\",\"role\":\"region\"},on:{\"ready\":_vm.mapLoaded,\"resize\":_vm.mapResized,\"mouseup\":_vm.mapMouseUp,\"mousemove\":_vm.mapMouseMove}},[(_vm.isLoading)?_c('div',{staticClass:\"eo-list-map-spinner\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":100,\"width\":10,\"value\":100}})],1):_vm._e(),_c('l-tile-layer',{attrs:{\"url\":_vm.url,\"attribution\":_vm.attribution}}),_c('v-marker-cluster',{attrs:{\"options\":{showCoverageOnHover: false}}},_vm._l((_vm.geoEntries),function(entry){return _c('eo-list-map-popup',{key:entry.id,attrs:{\"tomas-id\":entry.id,\"name\":entry.name,\"lat\":entry.lat,\"lng\":entry.lng,\"match-type\":entry.t,\"match-id\":entry.match}})}),1),(_vm.circleCenter)?_c('l-circle',{attrs:{\"lat-lng\":_vm.circleCenter,\"radius\":200,\"color\":_vm.mapRadiusColor,\"fill-color\":_vm.mapRadiusColor}},[(_vm.centerPointInfo)?_c('l-tooltip',[_vm._v(_vm._s(_vm.centerPointInfo))]):_vm._e()],1):_vm._e(),(_vm.circleCenter)?_c('l-circle',{ref:\"circle\",attrs:{\"lat-lng\":_vm.circleCenter,\"radius\":_vm.radius * 1000,\"color\":_vm.mapRadiusColor,\"opacity\":0.5,\"fill\":false,\"weight\":5},on:{\"mousedown\":_vm.radiusMouseDown}},[_c('l-tooltip',[_vm._v(_vm._s(_vm.niceRadius)+\" km\")])],1):_vm._e(),(_vm.geoJsonOverlay)?_c('l-geo-json',{attrs:{\"geojson\":_vm.geoJsonOverlay,\"optionsStyle\":_vm.geoJsonOptions}}):_vm._e(),_c('l-control',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMobile && !_vm.isFullScreen),expression:\"isMobile && !isFullScreen\"}],attrs:{\"position\":\"topright\"}},[_c('v-btn',{attrs:{\"text\":\"\",\"plain\":\"\",\"icon\":\"\",\"aria-label\":\"close map fullscreen\"},on:{\"click\":_vm.closeMap}},[_c('v-icon',{attrs:{\"size\":24}},[_vm._v(_vm._s(_vm.mdiCloseCircle))])],1)],1),_c('l-control',{attrs:{\"position\":\"topright\"}},[_c('div',{staticClass:\"eobuchung-list-map-fullscreen\",attrs:{\"title\":_vm.$t(_vm.isFullScreen ? 'message.mapSmaller' : 'message.mapLarger')}},[_c('v-btn',{attrs:{\"text\":\"\",\"plain\":\"\",\"icon\":\"\",\"aria-label\":\"toggle fullscreen map mode\"},on:{\"click\":_vm.fullScreenToggle}},[_c('v-icon',{attrs:{\"size\":32}},[_vm._v(_vm._s(_vm.isFullScreen ? _vm.mdiFullscreenExit : _vm.mdiFullscreen))])],1)],1)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('eo-map-icon',{attrs:{\"lat-lng\":[_vm.lat, _vm.lng],\"match-id\":_vm.matchId,\"match-type\":_vm.matchType,\"view\":\"list\"},on:{\"click\":_vm.loadPopupData}},[_c('l-popup',{ref:\"thePopup\",attrs:{\"options\":{closeButton: false}}},[(_vm.error)?_c('v-alert',{attrs:{\"color\":\"error\",\"dark\":\"\"}},[_c('v-card-text',[_vm._v(\" \"+_vm._s(_vm.error)+\" \")])],1):_vm._e(),(_vm.isLoading)?_c('div',{staticClass:\"d-md-flex flex-no-wrap justify-start\"},[_c('div',{staticClass:\"ma-3\",staticStyle:{\"width\":\"100%\"}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}})],1),_c('div',{staticClass:\"mr-4 mt-3 flex-grow-1\"},[_c('v-skeleton-loader',{attrs:{\"type\":\"article\"}})],1)]):_vm._e(),(!_vm.error && _vm.serviceProvider)?_c('div',{staticClass:\"d-md-flex flex-no-wrap justify-start eobuchung-list-map-popup\",on:{\"click\":_vm.gotoDetails}},[_c('v-avatar',{staticClass:\"mr-md-2\",attrs:{\"height\":\"260\",\"width\":\"100%\",\"tile\":\"\"}},[(_vm.galleryPicture)?_c('v-img',{attrs:{\"src\":_vm.galleryPicture}}):_vm._e(),(_vm.topIcon)?_c('div',{staticClass:\"eobuchung-list-card-top-icon\",domProps:{\"innerHTML\":_vm._s(_vm.topIcon)}}):_vm._e(),_c('v-btn',{staticClass:\"eobuchung-list-card-top-like\",attrs:{\"fab\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.heartClicked.apply(null, arguments)}}},[_c('v-icon',[_vm._v(_vm._s(_vm.isFavorite ? _vm.mdiHeart : _vm.mdiHeartOutline))])],1)],1),_c('div',{staticClass:\"flex-grow-1 px-2 pl-sm-1\"},[_c('div',{staticClass:\"font-weight-bold text-h5 mt-2\",domProps:{\"textContent\":_vm._s(_vm.companyName)}}),_c('v-card-text',{staticClass:\"px-0 pt-0 pb-sm-0\"},[_c('div',[_vm._v(_vm._s(_vm.location))]),_c('eo-classification-from-to',{attrs:{\"service-provider\":_vm.serviceProvider}}),(_vm.trustYouId)?_c('div',{staticClass:\"mt-2\"},[_c('iframe',{staticStyle:{\"pointer-events\":\"none\"},attrs:{\"id\":'trustyou-map-' + _vm.trustYouId,\"src\":'https://api.trustyou.com/hotels/' + _vm.trustYouId + '/seal.html?size=xs&key=' + _vm.trustYouAPIKey + '&lang=' + _vm.$i18n.locale,\"allowtransparency\":\"true\",\"frameborder\":\"0\",\"height\":\"24\",\"width\":\"215\",\"scrolling\":\"no\"}})]):_vm._e(),(_vm.distance && _vm.distance.distance)?_c('div',{staticClass:\"mt-1 pl-2\"},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.mdiMapMarkerDistance))]),_vm._v(\" \"+_vm._s(_vm.$t('message.distanceTo', {n: _vm.distance['distance'], unit: _vm.distance['unit'], loc: _vm.distanceName}))+\" \")],1):_vm._e(),_c('eo-feature-icons',{attrs:{\"service-provider\":_vm.serviceProvider,\"x-small\":\"\"}}),(_vm.hasVacancies)?_c('v-divider',{staticClass:\"mt-2 mb-2\"}):_vm._e(),_c('eo-service-provider-feature-chips',{staticClass:\"mb-0 pl-2\",attrs:{\"service-provider\":_vm.serviceProvider,\"small\":\"\"}})],1),(_vm.hasVacancies)?_c('v-card-text',{staticClass:\"mt-0 pt-0 pb-5 d-block eobuchung-list-card-pointer\",on:{\"click\":_vm.gotoDetails}},[(_vm.referenceVacancy)?_c('div',{staticClass:\"mb-2 text-right\",domProps:{\"innerHTML\":_vm._s(_vm.referenceServiceInfo)}}):_vm._e(),(_vm.hasMultipleAccommodations)?_c('div',{staticClass:\"mb-2 text-right\",domProps:{\"innerHTML\":_vm._s(_vm.multipleAccommodationsInfo)}}):_vm._e(),_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"text-right flex-grow-1 pr-4\"},[_c('span',{staticClass:\"d-block eobuchung-list-card-price\"},[_vm._v(_vm._s(_vm.vacancyPrice)+\"€\")]),_c('span',{staticClass:\"d-block eobuchung-list-card-small\"},[_vm._v(_vm._s(_vm.$t('message.forWholePeriod')))]),(_vm.referenceVacancy)?_c('span',{staticClass:\"d-block eobuchung-list-card-small\"},[_vm._v(_vm._s(_vm.referenceVacancy.board))]):_vm._e()])])]):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <eo-map-icon :lat-lng=\"[lat, lng]\" :match-id=\"matchId\" :match-type=\"matchType\" @click=\"loadPopupData\" view=\"list\">\n    <l-popup ref=\"thePopup\" :options=\"{closeButton: false}\">\n      <v-alert v-if=\"error\" color=\"error\" dark>\n        <v-card-text>\n          {{ error }}\n        </v-card-text>\n      </v-alert>\n      <div class=\"d-md-flex flex-no-wrap justify-start\" v-if=\"isLoading\">\n        <div class=\"ma-3\" style=\"width: 100%\">\n          <v-progress-circular\n              indeterminate\n              color=\"primary\"\n          />\n        </div>\n        <div class=\"mr-4 mt-3 flex-grow-1\">\n          <v-skeleton-loader type=\"article\" />\n        </div>\n      </div>\n      <div class=\"d-md-flex flex-no-wrap justify-start eobuchung-list-map-popup\" v-if=\"!error && serviceProvider\" @click=\"gotoDetails\">\n        <v-avatar class=\"mr-md-2\" height=\"260\" width=\"100%\" tile>\n          <v-img v-if=\"galleryPicture\" :src=\"galleryPicture\"></v-img>\n          <div v-if=\"topIcon\" class=\"eobuchung-list-card-top-icon\" v-html=\"topIcon\"></div>\n          <v-btn fab x-small class=\"eobuchung-list-card-top-like\" @click.prevent.stop=\"heartClicked\">\n            <v-icon>{{isFavorite ? mdiHeart : mdiHeartOutline}}</v-icon>\n          </v-btn>\n        </v-avatar>\n        <div class=\"flex-grow-1 px-2 pl-sm-1\">\n          <div class=\"font-weight-bold text-h5 mt-2\" v-text=\"companyName\"></div>\n          <v-card-text class=\"px-0 pt-0 pb-sm-0\">\n            <div>{{ location }}</div>\n\n            <eo-classification-from-to :service-provider=\"serviceProvider\" />\n\n            <div v-if=\"trustYouId\" class=\"mt-2\">\n              <iframe :id=\"'trustyou-map-' + trustYouId\"\n                      :src=\"'https://api.trustyou.com/hotels/' + trustYouId + '/seal.html?size=xs&key=' + trustYouAPIKey + '&lang=' + $i18n.locale\"\n                      allowtransparency=\"true\" frameborder=\"0\" height=\"24\" width=\"215\" scrolling=\"no\"\n                      style=\"pointer-events: none\"\n              ></iframe>\n            </div>\n\n            <div v-if=\"distance && distance.distance\" class=\"mt-1 pl-2\">\n              <v-icon small>{{mdiMapMarkerDistance}}</v-icon>\n              {{ $t('message.distanceTo', {n: distance['distance'], unit: distance['unit'], loc: distanceName}) }}\n            </div>\n\n            <eo-feature-icons :service-provider=\"serviceProvider\" x-small />\n\n            <v-divider v-if=\"hasVacancies\" class=\"mt-2 mb-2\" />\n\n            <eo-service-provider-feature-chips class=\"mb-0 pl-2\" :service-provider=\"serviceProvider\" small />\n          </v-card-text>\n          <v-card-text v-if=\"hasVacancies\" class=\"mt-0 pt-0 pb-5 d-block eobuchung-list-card-pointer\" @click=\"gotoDetails\">\n            <div v-html=\"referenceServiceInfo\" class=\"mb-2 text-right\" v-if=\"referenceVacancy\"></div>\n            <div v-html=\"multipleAccommodationsInfo\" class=\"mb-2 text-right\" v-if=\"hasMultipleAccommodations\"></div>\n\n            <div class=\"d-flex\">\n              <div class=\"text-right flex-grow-1 pr-4\">\n                <span class=\"d-block eobuchung-list-card-price\">{{vacancyPrice}}€</span>\n                <span class=\"d-block eobuchung-list-card-small\">{{ $t('message.forWholePeriod') }}</span>\n                <span class=\"d-block eobuchung-list-card-small\" v-if=\"referenceVacancy\">{{referenceVacancy.board}}</span>\n              </div>\n            </div>\n          </v-card-text>\n        </div>\n      </div>\n    </l-popup>\n  </eo-map-icon>\n</template>\n\n<script>\nimport {LPopup} from \"vue2-leaflet\";\nimport {layoutDataMixin} from \"../mixins/layout-data-mixin\";\nimport {serviceProviderMixin} from \"../mixins/service-provider-mixin\";\nimport {favoritesMixin} from \"../mixins/favorites-mixin.js\";\nimport EoMapIcon from \"./MapIcon\";\nimport EoFeatureIcons from \"./FeatureIcons\";\nimport EoClassificationFromTo from \"./ClassificationFromTo.vue\";\n\nexport default {\n  name: 'eo-list-map-popup',\n  components: {EoClassificationFromTo, EoFeatureIcons, EoMapIcon, LPopup},\n  mixins: [layoutDataMixin, serviceProviderMixin,favoritesMixin],\n  props: {\n    name: String,\n    lat: Number,\n    lng: Number,\n    matchType: String,\n    matchId: String,\n  },\n  methods: {\n    async loadPopupData() {\n      await this.loadData(false);\n\n      // after loading, re-render popup object\n      this.$refs.thePopup.mapObject.update();\n    }\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-list-map-popup\n  cursor: pointer\n\n@media (min-width: 960px)\n  .leaflet-popup-content-wrapper .leaflet-popup-content\n    width: 600px !important\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMapPopup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMapPopup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ListMapPopup.vue?vue&type=template&id=06ac174c\"\nimport script from \"./ListMapPopup.vue?vue&type=script&lang=js\"\nexport * from \"./ListMapPopup.vue?vue&type=script&lang=js\"\nimport style0 from \"./ListMapPopup.vue?vue&type=style&index=0&id=06ac174c&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div style=\"position: relative; z-index: 10\">\n    <v-alert v-if=\"error\" color=\"error\" dark>\n      {{ error }}\n    </v-alert>\n    <l-map v-else ref=\"myListMap\" style=\"width: 100%; height: 600px\" :minZoom=\"5\" :maxZoom=\"18\"\n           :maxBounds=\"[[43, 3], [57, 20]]\" :zoom=\"12\" @ready=\"mapLoaded\" @resize=\"mapResized\"\n           @mouseup=\"mapMouseUp\" @mousemove=\"mapMouseMove\" :center=\"coordinates\" aria-roledescription=\"map\"\n           role=\"region\">\n\n      <div v-if=\"isLoading\" class=\"eo-list-map-spinner\">\n        <v-progress-circular indeterminate :size=\"100\" :width=\"10\" :value=\"100\"/>\n      </div>\n\n      <l-tile-layer\n          :url=\"url\"\n          :attribution=\"attribution\"\n      />\n\n      <!-- map markers -->\n      <v-marker-cluster :options=\"{showCoverageOnHover: false}\">\n        <eo-list-map-popup v-for=\"entry in geoEntries\" :key=\"entry.id\" :tomas-id=\"entry.id\" :name=\"entry.name\" :lat=\"entry.lat\" :lng=\"entry.lng\" :match-type=\"entry.t\" :match-id=\"entry.match\"/>\n      </v-marker-cluster>\n\n      <!-- center point -->\n      <l-circle v-if=\"circleCenter\" :lat-lng=\"circleCenter\" :radius=\"200\" :color=\"mapRadiusColor\" :fill-color=\"mapRadiusColor\">\n        <l-tooltip v-if=\"centerPointInfo\">{{ centerPointInfo }}</l-tooltip>\n      </l-circle>\n\n      <!-- circle -->\n      <l-circle v-if=\"circleCenter\" :lat-lng=\"circleCenter\" :radius=\"radius * 1000\" :color=\"mapRadiusColor\" :opacity=\"0.5\"\n                :fill=\"false\" :weight=\"5\" ref=\"circle\" @mousedown=\"radiusMouseDown\">\n        <l-tooltip>{{ niceRadius }} km</l-tooltip>\n      </l-circle>\n\n      <l-geo-json v-if=\"geoJsonOverlay\" :geojson=\"geoJsonOverlay\" :optionsStyle=\"geoJsonOptions\" />\n\n      <l-control position=\"topright\" v-show=\"isMobile && !isFullScreen\">\n        <v-btn text plain icon @click=\"closeMap\" aria-label=\"close map fullscreen\">\n          <v-icon :size=\"24\">{{ mdiCloseCircle }}</v-icon>\n        </v-btn>\n      </l-control>\n\n      <l-control position=\"topright\">\n        <div class=\"eobuchung-list-map-fullscreen\"\n             :title=\"$t(isFullScreen ? 'message.mapSmaller' : 'message.mapLarger')\">\n          <v-btn text plain icon @click=\"fullScreenToggle\" aria-label=\"toggle fullscreen map mode\">\n            <v-icon :size=\"32\">{{ isFullScreen ? mdiFullscreenExit : mdiFullscreen }}</v-icon>\n          </v-btn>\n        </div>\n      </l-control>\n    </l-map>\n  </div>\n</template>\n\n<script>\nimport Vue from 'vue';\nimport L from 'leaflet';\nimport Vue2LeafletMarkerCluster from 'vue2-leaflet-markercluster';\nimport {LCircle, LControl, LGeoJson, LMap, LTileLayer, LTooltip} from \"vue2-leaflet\";\nimport {mdiFullscreen, mdiFullscreenExit, mdiOpenInNew, mdiCloseCircle} from \"@mdi/js\";\nimport fullscreen from 'vue-fullscreen';\nimport EoListMapPopup from \"./ListMapPopup\";\nimport 'unfetch/polyfill';\n\nVue.use(fullscreen);\n\nexport default {\n  name: 'eo-list-map',\n  components: {\n    EoListMapPopup,\n    LMap,\n    LTileLayer,\n    LControl,\n    LCircle,\n    LTooltip,\n    LGeoJson,\n    'v-marker-cluster': Vue2LeafletMarkerCluster\n  },\n  props: {\n    isMobile: Boolean,\n  },\n  data: () => ({\n    error: null,\n    isFullScreen: false,\n    isLoading: false,\n    url: 'https://maps.api.eo-heimat.de/tiles/osm-bright/{z}/{x}/{y}.png?apiKey=jcL21qsfvEeafHRrbFv7YdJm1x57m80Ftn9JK1aL',\n    attribution:\n        'Powered by <a href=\"https://www.geoapify.com/\">Geoapify</a>|\\n<a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">© OpenStreetMap contributors</a>|\\n<a href=\"http://openmaptiles.org/\" target=\"_blank\">© OpenMapTiles</a>',\n    mapObject: undefined,\n    geoEntries: [], // list of results from etb_geo.json {\"id\": \"xxx\", \"name\": \"abc\", \"lat\": 0.0, \"lng\": 0.0}\n    geoJsonOverlay: undefined, // optional geo json overlay\n    // keeps current radius data\n    radius: 0.0,\n    oldRadius: 0.0,\n    dragging: false, // currently dragging radius?\n    // icons\n    mdiOpenInNew: mdiOpenInNew,\n    mdiFullscreen: mdiFullscreen,\n    mdiFullscreenExit: mdiFullscreenExit,\n    mdiCloseCircle: mdiCloseCircle,\n  }),\n  computed: {\n    /**\n     * Coordinates of center point\n     * @return {(*|number|string)[]|null}\n     */\n    coordinates() {\n      if (this.searchRadius && this.$store.state.searchItem && this.$store.state.searchItem.lat && this.$store.state.searchItem.lng) {\n        return [this.$store.state.searchItem.lat, this.$store.state.searchItem.lng];\n      }\n      if (this.$store.state.config && this.$store.state.config.geoDefaultLat && this.$store.state.config.geoDefaultLng) {\n        return [this.$store.state.config.geoDefaultLat, this.$store.state.config.geoDefaultLng];\n      }\n      return [51.165691, 10.451526]; // Germany center\n    },\n    circleCenter() {\n      if (this.searchRadius && this.$store.state.searchItem && this.$store.state.searchItem.lat && this.$store.state.searchItem.lng) {\n        return [this.$store.state.searchItem.lat, this.$store.state.searchItem.lng];\n      }\n      return null;\n    },\n    centerPointInfo() {\n      return (this.$store.state.searchItem && this.$store.state.searchItem.value) || '';\n    },\n    niceRadius() {\n      if (this.radius !== Math.round(this.radius)) {\n        return ('' + Math.round(this.radius * 100) / 100).replace('.', ',');\n      }\n      return this.radius;\n    },\n    mapRadiusColor() {\n      return this.$store.state.mapRadiusColor;\n    },\n    searchRadius() {\n      return this.$store.state.searchRadius;\n    },\n    geoJsonOptions() {\n      const options = { fill: false, color: this.$vuetify.theme.currentTheme.primary, weight: 2 };\n\n      // get options set in geo json instead of leaflet default\n      if (this.geoJsonOverlay && this.geoJsonOverlay.features && this.geoJsonOverlay.features.length && this.geoJsonOverlay.features[0].properties) {\n        const p = this.geoJsonOverlay.features[0].properties;\n        if (p.fill && p['fill-opacity']) {\n          options.fill = true;\n          options.fillColor = p.fill;\n          options.fillOpacity = p['fill-opacity'];\n        }\n        if (p.stroke) {\n          options.color = p.stroke;\n        }\n        if (p['stroke-opacity']) {\n          options.opacity = p['stroke-opacity'];\n        }\n        if (p['stroke-width']) {\n          options.weight = p['stroke-width'];\n        }\n      }\n      return options;\n    }\n  },\n  mounted() {\n    this.mapObject = this.$refs.myListMap.mapObject;\n\n    // set radius\n    this.radius = this.searchRadius;\n    // tile server url\n    this.url = this.$store.state.config?.tileServerUrl || this.url;\n    // tile server attribution\n    this.attribution = this.$store.state.config?.tileServerAttribution || this.attribution;\n\n    this.loadData(true);\n  },\n  methods: {\n    fullScreenToggle() {\n      const elem = this.$refs.myListMap.$el;\n\n      this.$fullscreen.toggle(elem, {\n        wrap: false,\n        callback: this.fullscreenChange\n      });\n    },\n    fullscreenChange(isFullScreen) {\n      this.isFullScreen = isFullScreen;\n\n      // change draggable\n      if (!isFullScreen) {\n        // invalidate size\n        this.mapObject.invalidateSize(false);\n      }\n    },\n    mapLoaded() {\n      // invalidate size - load map correctly in some T3 instances\n      this.mapObject.invalidateSize(false);\n\n      this.fitBounds();\n    },\n    mapResized() {\n      this.mapObject.invalidateSize(false);\n    },\n    fitBounds() {\n      // fit bounds to circle\n      if (this.$refs.circle && this.$refs.circle.mapObject) {\n        this.mapObject.fitBounds(this.$refs.circle.mapObject.getBounds());\n      } else if (this.geoEntries && this.geoEntries.length) {\n        const bounds = L.latLngBounds();\n        let boundsSet = false;\n\n        this.geoEntries.forEach(entry => {\n          if (entry.lat && entry.lng) {\n            boundsSet = true;\n            bounds.extend([entry.lat, entry.lng]);\n          }\n        });\n\n        if (boundsSet) {\n          this.mapObject.fitBounds(bounds);\n        }\n      }\n    },\n    /**\n     * Load data from API\n     * @return {Promise<void>}\n     */\n    async loadData(reset = false) {\n      this.isLoading = true;\n\n      if (this.mapObject) {\n        this.mapObject.dragging.disable();\n        this.mapObject.scrollWheelZoom.disable();\n      }\n\n      try {\n        this.geoEntries = await this.$store.dispatch('loadGeoData', reset);\n      } catch (e) {\n        this.geoEntries = [];\n        this.error = e.message;\n      }\n\n      this.fitBounds();\n\n      if (this.mapObject) {\n        this.mapObject.dragging.enable();\n        this.mapObject.scrollWheelZoom.enable();\n      }\n      this.isLoading = false;\n\n      // load geo json - mind the acl stuff!\n      if (this.$store.state.config && this.$store.state.config.mapOverlay) {\n        fetch(this.$store.state.config.mapOverlay)\n            .then(res => res.json())\n            .then(res => (this.geoJsonOverlay = res))\n            .catch(err => {\n              console.error(\"GeoJson not loaded.\", err);\n            });\n      }\n    },\n    /**\n     * activate dragging of radius\n     */\n    radiusMouseDown() {\n      this.dragging = true; // enable dragging mode\n      this.oldRadius = this.radius; // save original radius\n    },\n    /**\n     * register mouse up events - used for radius dragging\n     */\n    mapMouseUp() {\n      if (this.dragging) {\n        this.dragging = false; // disable dragging mode\n        this.mapObject.dragging.enable(); // re-enable dragging - see mapMouseMove\n\n        // only trigger changes if radius has been changed\n        if (this.radius !== this.oldRadius) {\n          this.$store.commit('setSearchRadius', Math.round(this.radius * 100) / 100);\n          this.$store.commit('clearGeoEntries'); // clear geo entries\n\n          this.$emit('update');\n\n          this.loadData();\n        }\n      }\n    },\n    /**\n     * register mouse move events - used for radius dragging\n     */\n    mapMouseMove(e) {\n      if (this.dragging) {\n        // prevent map dragging\n        this.mapObject.dragging.disable();\n\n        this.radius = this.mapObject.distance([this.$store.state.searchItem.lat, this.$store.state.searchItem.lng], e.latlng) / 1000;\n      }\n    },\n    closeMap() {\n      this.$emit('close');\n    }\n  },\n  watch: {\n    // watch external changes of radius\n    searchRadius(newValue) {\n      if (newValue !== this.radius) {\n        this.radius = newValue;\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"sass\">\n@import '~leaflet/dist/leaflet.css'\n@import \"~leaflet.markercluster/dist/MarkerCluster.css\"\n// replaced by custom colors below\n// @import \"~leaflet.markercluster/dist/MarkerCluster.Default.css\"\n\n.leaflet-container\n  z-index: 1\n\n.leaflet-control-attribution, .leaflet-popup-content\n  a\n    border-width: 0 !important\n    text-decoration: underline\n    color: #666\n\n    &:hover, &:active, &:focus\n      color: #000\n\n.leaflet-popup-content-wrapper\n  border-radius: 0\n  padding: 0\n\n.leaflet-popup-content\n  margin: 0\n\n.eo-list-map-spinner\n  z-index: 10000\n  position: absolute\n  left: 0\n  right: 0\n  top: 0\n  bottom: 0\n  background-color: #fff9\n\n  .v-progress-circular\n    left: calc(50% - 50px)\n    top: calc(50% - 50px)\n\n// marker-cluster replacement - start\n.marker-cluster-small\n  background-color: rgba(37, 126, 202)\n\n.marker-cluster-small div\n  background-color: #257eca\n\n.marker-cluster-medium\n  background-color: rgba(37, 126, 202)\n\n.marker-cluster-medium div\n  background-color: #257eca\n\n.marker-cluster-large\n  background-color: rgba(37, 126, 202)\n\n.marker-cluster-large div\n  background-color: #257eca\n\n/* IE 6-8 fallback colors */\n.leaflet-oldie .marker-cluster-small\n  background-color: #257eca\n\n.leaflet-oldie .marker-cluster-small div\n  background-color: #257eca\n\n.leaflet-oldie .marker-cluster-medium\n  background-color: #257eca\n\n.leaflet-oldie .marker-cluster-medium div\n  background-color: #257eca\n\n.leaflet-oldie .marker-cluster-large\n  background-color: #257eca\n\n.leaflet-oldie .marker-cluster-large div\n  background-color: #257eca\n.marker-cluster span\n  color: #fff\n  font-weight: 700\n\n.marker-cluster\n  background-clip: padding-box\n  border-radius: 20px\n\n.marker-cluster div\n  width: 30px\n  height: 30px\n  margin-left: 5px\n  margin-top: 5px\n\n  text-align: center\n  border-radius: 15px\n  font: 12px \"Helvetica Neue\", Arial, Helvetica, sans-serif\n\n.marker-cluster span\n  line-height: 30px\n// marker-cluster replacement - end\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMap.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMap.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ListMap.vue?vue&type=template&id=8eb9456e\"\nimport script from \"./ListMap.vue?vue&type=script&lang=js\"\nexport * from \"./ListMap.vue?vue&type=script&lang=js\"\nimport style0 from \"./ListMap.vue?vue&type=style&index=0&id=8eb9456e&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"eobuchung-desktop-list-header mb-4\",attrs:{\"id\":\"eobuchung-desktop-list-header\"}},[_c('div',{staticClass:\"float-right\"},[_c('v-menu',{attrs:{\"offset-y\":\"\",\"origin\":\"center center\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"outlined\":\"\",\"tile\":\"\",\"color\":_vm.isDefaultSort ? '' : 'accent'}},on),[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.mdiSortAscending)+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('message.sorting'))+\" \")],1)]}}])},[_c('v-list',_vm._l((_vm.sortings),function(sorting){return _c('v-list-item',{key:sorting.value,on:{\"click\":function($event){return _vm.setSorting(sorting.value)}}},[_vm._v(_vm._s(sorting.text)+\" \")])}),1)],1),_c('v-btn',{staticStyle:{\"border-left\":\"none\"},attrs:{\"outlined\":\"\",\"tile\":\"\",\"color\":_vm.showMap ? 'accent' : '',\"id\":\"openMap\"},on:{\"click\":_vm.toggleMap}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.showMap ? _vm.mdiClose : _vm.mdiMapSearch))]),_vm._v(\" \"+_vm._s(_vm.$t('message.mapView'))+\" \")],1)],1),_c('div',{staticClass:\"text-h6 accent--text\"},[_vm._v(\" \"+_vm._s(_vm.searchDataText ? _vm.searchDataText + ': ' : '')+\" \"+_vm._s(_vm.$tc('message.foundXAccommodations', _vm.totalCount, _vm.totalCount))+\" \")]),_c('div',{staticClass:\"d-flex mt-2\"},[_c('div',{staticClass:\"mr-4\"},[_c('v-btn',{attrs:{\"outlined\":\"\",\"tile\":\"\",\"color\":_vm.favoritesFiltered ? 'accent' : ''},on:{\"click\":_vm.toggleFilterFavorites}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.favoritesFiltered ? _vm.mdiHeart : _vm.mdiHeartOutline))]),_vm._v(\" \"+_vm._s(_vm.$t(\"message.xRemembered\", {n: _vm.totalFavorites}))+\" \")],1)],1),(!_vm.$store.state.config.hide || !_vm.$store.state.config.hide.bookable)?_c('div',{staticClass:\"mr-4\"},[_c('v-switch',{staticClass:\"mt-0\",attrs:{\"label\":_vm.$t('message.onlyBookable'),\"hide-details\":true},on:{\"change\":_vm.toggleBookable},model:{value:(_vm.onlyBookable),callback:function ($$v) {_vm.onlyBookable=$$v},expression:\"onlyBookable\"}})],1):_vm._e(),_c('div',{staticClass:\"flex-grow-1\"},[(!_vm.isDefaultSort || (_vm.activeFilters && _vm.activeFilters.length))?_c('eo-chip-group',{staticClass:\"mb-3 pl-3 pr-3\"},[(!_vm.isDefaultSort)?_c('v-chip',{attrs:{\"label\":\"\",\"close\":\"\",\"close-icon\":_vm.mdiClose,\"color\":\"grey lighten-3\"},on:{\"click:close\":function($event){return _vm.setSorting(null)}}},[_vm._v(_vm._s(_vm.currentSortingFullName))]):_vm._e(),_vm._l((_vm.activeFilters),function(filter){return _c('v-chip',{key:filter.ids,attrs:{\"label\":\"\",\"close\":\"\",\"close-icon\":_vm.mdiClose,\"color\":\"grey lighten-3\"},on:{\"click:close\":function($event){return _vm.closeFilter(filter)}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [(filter.list === 'spClassification')?_c('eo-classification',{attrs:{\"classification\":filter.label}}):_c('span',{domProps:{\"innerHTML\":_vm._s(filter.label)}})]},proxy:true}],null,true)})})],2):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"eobuchung-desktop-list-header mb-4\" id=\"eobuchung-desktop-list-header\">\n    <div class=\"float-right\">\n      <v-menu\n          offset-y\n          origin=\"center center\"\n          transition=\"scale-transition\"\n      >\n        <template v-slot:activator=\"{ on }\">\n          <v-btn outlined tile v-on=\"on\" :color=\"isDefaultSort ? '' : 'accent'\">\n            <v-icon class=\"mr-1\"\n            >{{ mdiSortAscending }}\n            </v-icon>\n            {{ $t('message.sorting') }}\n          </v-btn>\n        </template>\n        <v-list>\n          <v-list-item\n              v-for=\"sorting of sortings\"\n              :key=\"sorting.value\"\n              @click=\"setSorting(sorting.value)\"\n          >{{ sorting.text }}\n          </v-list-item>\n        </v-list>\n      </v-menu>\n      <v-btn outlined tile style=\"border-left: none\" @click=\"toggleMap\" :color=\"showMap ? 'accent' : ''\" id=\"openMap\">\n        <v-icon class=\"mr-1\">{{ showMap ? mdiClose : mdiMapSearch }}</v-icon>\n        {{ $t('message.mapView') }}\n      </v-btn>\n    </div>\n    <div class=\"text-h6 accent--text\">\n      {{ searchDataText ? searchDataText + ': ' : '' }}\n      {{ $tc('message.foundXAccommodations', totalCount, totalCount) }}\n    </div>\n\n    <div class=\"d-flex mt-2\">\n      <div class=\"mr-4\">\n        <v-btn outlined tile :color=\"favoritesFiltered ? 'accent' : ''\" @click=\"toggleFilterFavorites\">\n          <v-icon class=\"mr-1\">{{ favoritesFiltered ? mdiHeart : mdiHeartOutline }}</v-icon>\n          {{ $t(\"message.xRemembered\", {n: totalFavorites}) }}\n        </v-btn>\n      </div>\n      <div v-if=\"!$store.state.config.hide || !$store.state.config.hide.bookable\" class=\"mr-4\">\n        <v-switch\n            class=\"mt-0\"\n            v-model=\"onlyBookable\"\n            :label=\"$t('message.onlyBookable')\"\n            @change=\"toggleBookable\"\n            :hide-details=\"true\"\n        ></v-switch>\n      </div>\n      <div class=\"flex-grow-1\">\n        <eo-chip-group v-if=\"!isDefaultSort || (activeFilters && activeFilters.length)\" class=\"mb-3 pl-3 pr-3\">\n          <v-chip v-if=\"!isDefaultSort\" label close :close-icon=\"mdiClose\" @click:close=\"setSorting(null)\" color=\"grey lighten-3\">{{ currentSortingFullName }}</v-chip>\n          <v-chip v-for=\"filter in activeFilters\"\n                  label close :close-icon=\"mdiClose\" :key=\"filter.ids\" @click:close=\"closeFilter(filter)\" color=\"grey lighten-3\">\n            <template v-slot:default>\n              <eo-classification v-if=\"filter.list === 'spClassification'\" :classification=\"filter.label\" />\n              <span v-else v-html=\"filter.label\" />\n            </template>\n          </v-chip>\n        </eo-chip-group>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {mdiClose} from \"@mdi/js\";\nimport {filterMixin} from \"../../mixins/filter-mixin\";\nimport {onlyBookableMixin} from '../../mixins/only-bookable-mixin.js';\nimport EoClassification from \"../Classification\";\nimport EoChipGroup from \"../ChipGroup\";\n\nexport default {\n  name: \"eo-desktop-list-header\",\n  mixins: [filterMixin, onlyBookableMixin],\n  components: {EoClassification, EoChipGroup},\n  data: () => ({\n    // icons\n    mdiClose: mdiClose\n  }),\n  computed: {\n    searchDataText() {\n      return this.$store.state.searchItem && this.$store.state.searchItem.text;\n    }\n  }\n};\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ListHeader.vue?vue&type=template&id=86d51432\"\nimport script from \"./ListHeader.vue?vue&type=script&lang=js\"\nexport * from \"./ListHeader.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"eobuchung-desktop-filter\"},[_c('eo-search-box-desktop',{ref:\"thisCard\",on:{\"update\":_vm.updateSearch,\"reset\":_vm.resetSearch}}),_c('eo-desktop-filter-selection',{staticClass:\"mt-4\",on:{\"update\":_vm.updateSearch,\"reset\":_vm.resetFilters}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{directives:[{name:\"resize\",rawName:\"v-resize\",value:(_vm.onResize),expression:\"onResize\"}],ref:\"theSearchCard\",staticClass:\"eobuchung-search-box\"},[_c('v-card-text',{staticClass:\"px-4\"},[_c('div',{staticClass:\"text-right mb-2\"},[_c('v-btn',{attrs:{\"text\":\"\",\"x-small\":\"\",\"plain\":\"\"},on:{\"click\":_vm.clearData}},[_vm._v(\" \"+_vm._s(_vm.$t('message.clearAllData'))+\" \")])],1),(_vm.error)?_c('v-alert',{attrs:{\"color\":\"error\",\"dark\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_vm._e(),_c('eo-form-autocompleter',{ref:\"autocompleter\",staticClass:\"mb-4\",attrs:{\"initial-data\":_vm.searchItem},on:{\"error\":function($event){_vm.error = $event},\"change\":_vm.autocompleterChanged,\"blur\":_vm.autocompleterBlurred}}),(_vm.isLocationBasedSearch)?_c('div',{staticClass:\"pb-4\"},[_c('div',{staticClass:\"pb-2\"},[_vm._v(_vm._s(_vm.$t(\"message.radiusKm\")))]),_c('v-btn-toggle',{staticClass:\"eobuchung-search-dialog-radius-btns eobuchung-search-dialog-radius-btns-desktop\",attrs:{\"dense\":\"\",\"tile\":\"\"}},_vm._l((_vm.radii),function(val,key){return _c('v-btn',{key:val,class:{accent: val === _vm.searchRadius},attrs:{\"tile\":\"\",\"outlined\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){return _vm.onRadiusChanged(val)}}},[_vm._v(_vm._s(key)+\" \")])}),1)],1):_vm._e(),_c('DatePicker',{attrs:{\"date-modal-id\":\"dateSearchBox\",\"searchDate\":_vm.searchDate},on:{\"onSearchDate\":_vm.delayedSearch,\"input\":_vm.updateSearchDate}}),(_vm.searchDate)?_c('eo-form-accommdation-select',{on:{\"input\":_vm.search},model:{value:(_vm.searchAccommodation),callback:function ($$v) {_vm.searchAccommodation=$$v},expression:\"searchAccommodation\"}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-card ref=\"theSearchCard\" class=\"eobuchung-search-box\" v-resize=\"onResize\">\n    <v-card-text class=\"px-4\">\n      <div class=\"text-right mb-2\">\n        <v-btn text x-small plain @click=\"clearData\">\n          {{ $t('message.clearAllData') }}\n        </v-btn>\n      </div>\n\n      <v-alert v-if=\"error\" color=\"error\" dark>\n        {{ error }}\n      </v-alert>\n\n      <eo-form-autocompleter ref=\"autocompleter\"\n                             :initial-data=\"searchItem\"\n                             class=\"mb-4\"\n                             @error=\"error = $event\"\n                             @change=\"autocompleterChanged\"\n                             @blur=\"autocompleterBlurred\" />\n\n      <div v-if=\"isLocationBasedSearch\" class=\"pb-4\">\n        <div class=\"pb-2\">{{ $t(\"message.radiusKm\") }}</div>\n\n        <v-btn-toggle class=\"eobuchung-search-dialog-radius-btns eobuchung-search-dialog-radius-btns-desktop\" dense tile>\n          <v-btn tile outlined x-small v-for=\"(val, key) of radii\" :key=\"val\" @click=\"onRadiusChanged(val)\"\n                 :class=\"{accent: val === searchRadius}\">{{ key }}\n          </v-btn>\n        </v-btn-toggle>\n      </div>\n\n      <DatePicker date-modal-id=\"dateSearchBox\" :searchDate=\"searchDate\" @onSearchDate=\"delayedSearch\" @input=\"updateSearchDate\"></DatePicker>\n\n      <eo-form-accommdation-select v-if=\"searchDate\" v-model=\"searchAccommodation\" @input=\"search\" />\n    </v-card-text>\n  </v-card>\n</template>\n\n<script>\nimport {mdiClose} from \"@mdi/js\";\nimport EoFormAccommdationSelect from \"../FormAccommodationSelect\";\nimport EoFormAutocompleter from \"../FormAutocompleter\";\nimport DatePicker from \"@/components/DatePicker.vue\";\n\nexport default {\n  name: \"eo-search-box-desktop\",\n  components: {DatePicker, EoFormAccommdationSelect, EoFormAutocompleter},\n  data: () => ({\n    searchItem: null, // keeps search item object provided by autocompleter {text: 'xx', value: 'xxx', type: 'sp'}\n    searchRadius: 25, // default is 25 km\n    searchDate: null, // object keeping start and stop dates for search\n    searchAccommodation: [], // keeps accommodation data\n    oldSearchItem: null, // keeps old copy of search item\n    error: false,\n    documentWidth: 0, // width of complete element\n    // icons\n    mdiClose: mdiClose,\n  }),\n  computed: {\n    /**\n     * true if location based search should be used\n     */\n    isLocationBasedSearch() {\n      return this.searchItem && this.searchItem.type === \"geo\";\n    },\n    /**\n     * Radius settings for location based search\n     */\n    radii() {\n      return {'2': 2, '10': 10, '25': 25, '50': 50, '100': 100, '250': 250};\n    },\n    isNarrow() {\n      return this.documentWidth < 600; // => https://vuetifyjs.com/de-DE/customization/breakpoints/\n    }\n  },\n  created() {\n    // get data from state\n    this.getDataFromStore();\n  },\n  methods: {\n    delayedSearch() {\n      setTimeout(this.search, 50);\n    },\n    updateSearchDate(input) {\n      if(!this.searchDate)\n        this.searchDate = {};\n      this.searchDate.start = input.start;\n      this.searchDate.end = input.end;\n      this.searchDate.nights = input.nights;\n    },\n    getDataFromStore() {\n      this.searchItem = this.$store.state.searchItem;\n      this.searchRadius = this.$store.state.searchRadius;\n      this.searchDate = this.$store.state.searchDate;\n      this.searchAccommodation = this.$store.state.searchAccommodation;\n    },\n    /**\n     * Commit search\n     */\n    search() {\n      // persist data to store\n      this.$store.commit('setSearchItem', this.searchItem);\n      this.$store.commit('setSearchRadius', this.searchRadius);\n      this.$store.commit('setSearchDate', this.searchDate);\n      this.$store.commit('setSearchAccommodation', this.searchAccommodation);\n      this.$store.commit('clearGeoEntries'); // clear geo entries\n\n      // emit search update\n      this.$emit('update');\n    },\n    /**\n     * event handler for autocompleter changes\n     * @param value\n     */\n    autocompleterChanged(value) {\n      this.searchItem = value;\n      // has radius changed?\n      if (value && value.radius) {\n        this.searchRadius = value.radius;\n      }\n      this.search();\n    },\n    /**\n     * event handler for autocompleter blurs\n     */\n    autocompleterBlurred() {\n      if (this.oldSearchItem) {\n        this.searchItem = this.oldSearchItem;\n        this.oldSearchItem = null;\n      }\n    },\n    onRadiusChanged(val) {\n      this.searchRadius = val;\n      this.search();\n    },\n    closeSearch() {\n      this.$emit('close');\n    },\n    onResize() {\n      this.documentWidth = this.documentWidth = Math.max(\n          document.body.scrollWidth,\n          document.documentElement.scrollWidth,\n          document.body.offsetWidth,\n          document.documentElement.offsetWidth,\n          document.documentElement.clientWidth\n      );\n    },\n    clearData() {\n      window?.dateSearchBox?.clear();\n      this.$emit('reset');\n      this.getDataFromStore();\n    }\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-search-dialog-radius-btns-desktop\n  button\n    height: 40px !important\n\n    &.theme--light.v-btn.accent\n      color: #fff\n\n.eobuchung-search-box\n  background-color: #eee !important\n\n  .v-input\n    background-color: #fff !important\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBox.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SearchBox.vue?vue&type=template&id=6fd94920\"\nimport script from \"./SearchBox.vue?vue&type=script&lang=js\"\nexport * from \"./SearchBox.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchBox.vue?vue&type=style&index=0&id=6fd94920&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"eobuchung-desktop-filter-selection\"},[_c('div',{staticClass:\"text-right mr-4 pt-3\"},[_c('v-btn',{attrs:{\"text\":\"\",\"x-small\":\"\",\"plain\":\"\"},on:{\"click\":_vm.clearData}},[_vm._v(\" \"+_vm._s(_vm.$t('message.clearAllFilters'))+\" \")])],1),_c('v-expansion-panels',{attrs:{\"multiple\":\"\",\"accordion\":\"\",\"flat\":\"\",\"role\":\"tree\"},model:{value:(_vm.filterPanels),callback:function ($$v) {_vm.filterPanels=$$v},expression:\"filterPanels\"}},_vm._l((_vm.filters.filter(_filter => _filter.hasResults === undefined || _filter.hasResults === true)),function(filter,idx){return _c('v-expansion-panel',{key:idx,staticClass:\"eobuchung-desktop-filter-selection-panel\",attrs:{\"role\":\"treeitem\",\"aria-controls\":`widget-${idx}`}},[_c('v-expansion-panel-header',{staticClass:\"pl-4 pb-0 font-weight-bold\"},[_vm._v(\" \"+_vm._s(filter.label)+\" \")]),_c('v-expansion-panel-content',[(filter.label === 'Sterne' || filter.display === 'classifications')?_c('eo-filter-selection-classifications',{attrs:{\"filter\":filter,\"desktop\":\"\",\"id\":`widget-${idx}`},on:{\"update\":_vm.updated,\"setFilterResults\":_vm.setFilterResults}}):(filter.display === 'buttons')?_c('eo-filter-selection-buttons',{attrs:{\"filter\":filter,\"desktop\":\"\",\"id\":`widget-${idx}`},on:{\"update\":_vm.updated}}):(filter.display === 'plusMinus')?_c('FilterSelectionPlus',{attrs:{\"filter\":filter,\"ids\":['',...filter.list],\"id\":`widget-${idx}`},on:{\"change\":_vm.updated}}):_c('eo-filter-selection-list',{attrs:{\"filter\":filter,\"openCount\":filter.openCount,\"desktop\":\"\",\"id\":`widget-${idx}`},on:{\"update\":_vm.updated,\"setFilterResults\":_vm.setFilterResults}})],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-card class=\"eobuchung-desktop-filter-selection\">\n    <div class=\"text-right mr-4 pt-3\">\n      <v-btn text x-small plain @click=\"clearData\">\n        {{ $t('message.clearAllFilters') }}\n      </v-btn>\n    </div>\n\n    <v-expansion-panels v-model=\"filterPanels\" multiple accordion flat role=\"tree\">\n      <v-expansion-panel v-for=\"(filter, idx) of filters.filter(_filter => _filter.hasResults === undefined || _filter.hasResults === true)\" :key=\"idx\" class=\"eobuchung-desktop-filter-selection-panel\" role=\"treeitem\" :aria-controls=\"`widget-${idx}`\">\n        <v-expansion-panel-header class=\"pl-4 pb-0 font-weight-bold\">\n          {{ filter.label }}\n        </v-expansion-panel-header>\n        <v-expansion-panel-content>\n          <!-- TODO: v2: <eo-filter-selection-multi-ruler v-if=\"filter.display === 'multiRuler'\" :filter=\"filter\" @update=\"updated\"/>-->\n          <eo-filter-selection-classifications v-if=\"filter.label === 'Sterne' || filter.display === 'classifications'\"\n                                               :filter=\"filter\" desktop @update=\"updated\" @setFilterResults=\"setFilterResults\" :id=\"`widget-${idx}`\" />\n          <eo-filter-selection-buttons v-else-if=\"filter.display === 'buttons'\" :filter=\"filter\" desktop @update=\"updated\" :id=\"`widget-${idx}`\" />\n          <FilterSelectionPlus :filter=\"filter\" v-else-if=\"filter.display === 'plusMinus'\"\n                               :ids=\"['',...filter.list]\"\n                                @change=\"updated\"\n                               :id=\"`widget-${idx}`\"\n                               ></FilterSelectionPlus>\n          <eo-filter-selection-list v-else :filter=\"filter\" :openCount=\"filter.openCount\" desktop @update=\"updated\" @setFilterResults=\"setFilterResults\" :id=\"`widget-${idx}`\" />\n        </v-expansion-panel-content>\n      </v-expansion-panel>\n    </v-expansion-panels>\n  </v-card>\n</template>\n\n<script>\nimport {filterListMixin} from \"../../mixins/filter-list-mixin.js\";\nimport EoFilterSelectionButtons from \"../FilterSelectionButtons\";\nimport EoFilterSelectionList from \"../FilterSelectionList\";\nimport FilterSelectionPlus from \"@/components/FilterSelectionPlus.vue\";\nimport EoFilterSelectionClassifications from \"@/components/FilterSelectionClassifications.vue\";\n// import EoFilterSelectionMultiRuler from \"./FilterSelectionMultiRuler\"; // TODO: v2\n\nexport default {\n  name: \"eo-desktop-filter-selection\",\n  mixins: [filterListMixin],\n  components: {EoFilterSelectionClassifications, EoFilterSelectionButtons, EoFilterSelectionList, FilterSelectionPlus},\n  data: () => ({\n    filterPanels: []\n  }),\n  async mounted() {\n    await this.configIsLoaded();\n    for (let i = 0; i < this.filters.length; i++) {\n      if (this.filters[i].open) {\n        this.filterPanels.push(i);\n      }\n    }\n  },\n  methods: {\n    async configIsLoaded(){\n      return new Promise(resolve => {\n        if (this.$store.state.configIsLoaded) {\n          resolve();\n          return;\n        }\n        const interval = setInterval(() => {\n          if (this.$store.state.configIsLoaded) {\n            clearInterval(interval);\n            resolve();\n          }\n        }, 10);\n      });\n    },\n    clearData() {\n      this.$emit('reset');\n    },\n    setFilterResults(obj){\n      const { label, hasResults } = obj;\n      const index = this.filters.findIndex(filter => filter.label === label);\n      if (this.filters[index].hasResults === hasResults) {\n        return;\n      }\n      this.$set(this.filters, index, { ...this.filters[index], hasResults } );\n      this.$forceUpdate();\n    }\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-desktop-filter-selection\n  .v-expansion-panel-header\n    padding-right: 12px\n\n  .v-expansion-panel-content__wrap\n    padding-left: 12px\n    padding-right: 16px\n\n  &-panel\n    border-bottom: 1px solid #e0e0e0\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelection.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelection.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FilterSelection.vue?vue&type=template&id=7d06a19f\"\nimport script from \"./FilterSelection.vue?vue&type=script&lang=js\"\nexport * from \"./FilterSelection.vue?vue&type=script&lang=js\"\nimport style0 from \"./FilterSelection.vue?vue&type=style&index=0&id=7d06a19f&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"eobuchung-desktop-filter\">\n    <eo-search-box-desktop ref=\"thisCard\" @update=\"updateSearch\" @reset=\"resetSearch\" />\n\n    <eo-desktop-filter-selection class=\"mt-4\" @update=\"updateSearch\" @reset=\"resetFilters\" />\n  </div>\n</template>\n\n<script>\nimport EoSearchBoxDesktop from \"./SearchBox.vue\";\nimport {filterMixin} from \"../../mixins/filter-mixin\";\nimport EoDesktopFilterSelection from \"./FilterSelection\";\nexport default {\n  name: \"eo-desktop-filter\",\n  components: {EoDesktopFilterSelection, EoSearchBoxDesktop},\n  mixins: [filterMixin],\n  methods: {\n    resetFilters() {\n      this.resetSearch(true);\n      this.$refs.thisCard.getDataFromStore();\n    },\n    resetSearch(filtersOnly = false) {\n      this.$store.commit(filtersOnly ? 'clearAllFilters' : 'clearSearch');\n      this.$emit('change');\n    },\n  }\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-desktop-filter\n  width: 260px\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Filter.vue?vue&type=template&id=4efbf83c\"\nimport script from \"./Filter.vue?vue&type=script&lang=js\"\nexport * from \"./Filter.vue?vue&type=script&lang=js\"\nimport style0 from \"./Filter.vue?vue&type=style&index=0&id=4efbf83c&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-alert',{attrs:{\"type\":\"info\",\"colored-border\":\"\",\"border\":\"bottom\"}},[_c('div',{staticClass:\"text-body-1 font-weight-bold\"},[_vm._v(_vm._s(_vm.$t(\"message.noHits\")))]),(_vm.hints && _vm.hints.length)?_c('div',{staticClass:\"text-body-1 mt-6 mb-2\"},[_vm._v(_vm._s(_vm.$t(\"message.noHitsHint\")))]):_vm._e(),(_vm.hints && _vm.hints.length)?_c('ul',{staticClass:\"text-body-1 mb-2\"},_vm._l((_vm.hints),function(hint,idx){return _c('li',{key:idx},[_vm._v(_vm._s(hint))])}),0):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-alert type=\"info\" colored-border border=\"bottom\" >\n    <div class=\"text-body-1 font-weight-bold\">{{ $t(\"message.noHits\") }}</div>\n    <div v-if=\"hints && hints.length\" class=\"text-body-1 mt-6 mb-2\">{{ $t(\"message.noHitsHint\") }}</div>\n    <ul v-if=\"hints && hints.length\" class=\"text-body-1 mb-2\">\n      <li v-for=\"(hint, idx) of hints\" :key=\"idx\">{{hint}}</li>\n    </ul>\n  </v-alert>\n</template>\n\n<script>\nexport default {\n  name: \"eo-list-no-hits\",\n  computed: {\n    hints() {\n      const hints = [];\n      if (this.favoritesFiltered) hints.push(this.$i18n.t('message.noHitsChangeMemorized'));\n      else {\n        if (this.isLocationBasedSearch) hints.push(this.$i18n.t('message.noHitsGeo'));\n        else if (this.searchItem && this.searchItem.text) hints.push(this.$i18n.t('message.noHitsChangeSearch'));\n\n        if (this.hasSearchDate) hints.push(this.$i18n.t('message.noHitsChangeDate'));\n        if (this.hasActiveFilters) hints.push(this.$i18n.t('message.noHitsChangeFilters'));\n      }\n\n      return hints;\n    },\n    searchItem() {\n      return this.$store.state.searchItem;\n    },\n    /**\n     * true if location based search should be used\n     */\n    isLocationBasedSearch() {\n      return this.searchItem && this.searchItem.type === \"geo\";\n    },\n    favoritesFiltered() {\n      return this.$store.state.filterFavorites;\n    },\n    hasSearchDate() {\n      return !!this.$store.state.searchDate;\n    },\n    hasActiveFilters() {\n      if (this.$store.state.bookableOnly) return true;\n\n      for (const f of ['spFeature', 'sFeature', 'spClassification', 'sClassification', 'accommodationType', 'touristicType', 'board']) {\n        if (this.$store.state[f] && this.$store.state[f].length) return true;\n      }\n      return false;\n    }\n  }\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListNoHits.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListNoHits.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ListNoHits.vue?vue&type=template&id=4d84d67f\"\nimport script from \"./ListNoHits.vue?vue&type=script&lang=js\"\nexport * from \"./ListNoHits.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"eobuchung-app eobuchung-widget\" :class=\"{'is-mobile-app': isMobile}\">\n    <v-app :id=\"id\" ref=\"theWidgetMain\">\n      <v-alert v-if=\"error\" color=\"error\" dark>\n        {{ error }}\n      </v-alert>\n\n      <v-main v-if=\"!error\">\n        <div v-resize=\"onResize\" ref=\"theWidget\" class=\"pr-0 pl-0\" :class=\"{'d-flex': !isMobile}\">\n          <eo-filter v-if=\"isMobile\" :total-count=\"totalCount\" :show-map=\"showMap\" :is-loading=\"isLoadingData\"\n                     :is-loading-in-foreground=\"isLoadingInForeground\"\n                     @toggleMap=\"showMap = !showMap\" @filterUpdated=\"loadData(1, true, true)\"\n                     @filterChipDeleted=\"loadData(1, true)\" @sortingUpdated=\"loadData(1, true)\"\n                     @change=\"loadData(1, true)\"/>\n          <eo-desktop-filter v-else class=\"mr-4\" @change=\"loadData(1, true)\" />\n\n          <div class=\"flex-grow-1\">\n            <div v-if=\"!isMobile\">\n              <eo-desktop-list-header :total-count=\"totalCount\" :show-map=\"showMap\" :is-loading=\"isLoadingData\"\n                                      @toggleMap=\"showMap = !showMap\" @change=\"loadData(1, true)\"\n                                      @sortingUpdated=\"loadData(1, true)\" @filterChipDeleted=\"loadData(1, true)\"/>\n            </div>\n\n            <eo-list-map v-if=\"showMap\" ref=\"theMap\" :is-mobile=\"isMobile\" @update=\"loadData(1, true, false, true)\" @close=\"showMap = false\" />\n            <div v-else style=\"position: relative\">\n\n              <template v-if=\"(isLoading || isLoadingData) && !error\">\n                <v-row>\n                  <v-col cols=\"12\" v-for=\"index in 9\" :key=\"'skeleton-' + index\">\n                    <v-card\n                        tile\n                        class=\"eobuchung-list-card mx-auto mb-4\"\n                        :id=\"'eo-card-' + index\"\n                        elevation=\"24\">\n                      <div class=\"d-md-flex flex-no-wrap justify-start\">\n                        <div class=\"ma-3\" style=\"width: 30%\">\n                          <v-skeleton-loader type=\"image\" />\n                        </div>\n                        <div class=\"mr-4 mt-3 flex-grow-1\">\n                          <v-skeleton-loader type=\"article, chip, actions\" />\n                        </div>\n                      </div>\n                    </v-card>\n                  </v-col>\n                </v-row>\n              </template>\n\n              <template v-if=\"listEntries && listEntries.length\">\n                <v-row dense v-for=\"(listEntry, idx) in listEntries\" :key=\"listEntry.id\">\n                  <v-col cols=\"12\">\n                    <eo-list-card :index=\"idx\" :tomas-id=\"listEntry.tomasId\" :vacancies=\"listEntry.vacancies\" :is-narrow=\"isMobile\"/>\n                  </v-col>\n                </v-row>\n              </template>\n              <eo-list-no-hits v-else />\n\n              <v-row  v-if=\"nextPage\" class=\"mt-6\" justify=\"center\">\n                <v-btn\n                    color=\"primary\"\n                    class=\"ma-2\"\n                    dark\n                    aria-label=\"Next\"\n                    @click=\"loadPage(nextPage)\"\n                >\n                  {{ $t(\"message.showMore\")}}\n                </v-btn>\n              </v-row>\n            </div>\n          </div>\n        </div>\n      </v-main>\n    </v-app>\n  </div>\n</template>\n\n<script>\nimport Vue from \"vue\";\nimport VueI18n from \"vue-i18n\";\nimport createLang from \"@/lib/lang\";\nimport apiSearch from \"./lib/api-search\";\nimport EoListCard from \"./components/ListCard\";\nimport EoFilter from \"./components/Filter\";\nimport EoListMap from \"./components/ListMap\";\nimport EoDesktopListHeader from \"./components/Desktop/ListHeader\";\nimport EoDesktopFilter from \"./components/Desktop/Filter\";\nimport EoListNoHits from \"./components/ListNoHits.vue\";\n\nVue.use(VueI18n);\nconst i18n = createLang();\n\nexport default {\n  name: 'list',\n  components: {EoListNoHits, EoDesktopFilter, EoDesktopListHeader, EoListMap, EoFilter, EoListCard},\n  props: {\n    id: {\n      type: String,\n      default: 'eobuchung-list'\n    },\n    locale: {\n      type: String,\n      default: \"de-DE\"\n    },\n  },\n  data: () => ({\n    showMap: false, // showing map?\n    isLoading: true,\n    isLoadingData: false,\n    isLoadingInForeground: false,\n    widgetWidth: 0, // width of complete element\n    documentWidth: 0, // width of page\n    error: '',\n    listEntries: [], // list of list entries\n    totalCount: 0,\n    nextPage: 0, // next page\n  }),\n  computed: {\n    isMobile () {\n      return this.widgetWidth < 1000; // => https://vuetifyjs.com/de-DE/customization/breakpoints/\n    },\n  },\n  async created() {\n    // load config\n    await this.$store.dispatch('loadConfig');\n\n    // load data\n    await this.loadData();\n\n    // loading finished\n    this.isLoading = false;\n  },\n  mounted () {\n    //this.widgetWidth = this.$refs.theWidget.offsetWidth;\n\n    // localization\n    this.$vuetify.lang.current = this.$store.state && this.$store.state.locale || this.locale;\n    this.$i18n.locale = this.$vuetify.lang.current.substring(0, 2);\n  },\n  methods: {\n    /**\n     * Load data\n     * @returns {Promise<void>}\n     */\n    async loadData(page = 1, resetData = true, backgroundSearch = false, fromMap = false) {\n      if (!backgroundSearch) this.isLoadingInForeground = true;\n      this.isLoadingData = true;\n      try {\n        const config = this.$store.getters.getSearchConfig();\n        config['page'] = page;\n\n        // reset facets\n        if (resetData) this.$store.commit('clearFacets');\n\n        const data = await apiSearch(this.$store.state.apiUrl, this.$store.state.apiKey, config);\n\n        if (!config?.entries_per_page) config.entries_per_page = 25; // default, but should always be set before\n\n        if (data.hits > config.entries_per_page && resetData) {\n          // only add new entries within the entries_per_page limit, without we would send way too many requests\n          data.results = data.results.slice(0, config.entries_per_page);\n        } else if (data.hits > config.entries_per_page && !resetData) {\n          // check if first entry is the same\n          const sameFirst = data.results[0].tomasId === this.listEntries[0].tomasId;\n          // if not, dont use offset\n          const offset = !sameFirst || !this.listEntries.length ? 0 : this.listEntries.length;\n          // only add new entries, we also keep the entries_per_page limit here, without we would send way too many requests\n          data.results = data.results.slice(offset, offset + config.entries_per_page);\n        }\n\n        this.setDataFromSource(data, resetData);\n\n        // did we get a session id?\n        if (data.session_id) {\n          this.$store.commit('setSession', data.session_id);\n        }\n\n        if (resetData) this.$store.dispatch('getFacets', true);\n      } catch (e) {\n        this.error = e.message;\n        this.$store.commit('setFacets', {}); // dummy to stop loading\n      } finally {\n        if (!backgroundSearch) this.isLoadingInForeground = false;\n        this.isLoadingData = false;\n      }\n\n      // if we don't come from the map and there is a reference to the map, load data there, too\n      if (!fromMap && this.$refs.theMap) {\n        await this.$refs.theMap.loadData(true);\n      }\n    },\n    /**\n     * load specific page and add results to list\n     * @param page\n     * @returns {Promise<void>}\n     */\n    async loadPage(page) {\n      await this.loadData(page, false);\n    },\n    setDataFromSource(data, resetData) {\n      // set data new or append\n      this.listEntries = resetData ? data.results : this.listEntries.concat(data.results);\n      this.totalCount = data.hits;\n\n      const offset = data?.filter?.offset || 0;\n      const max = data?.filter?.max || 9;\n\n      if (this.totalCount > offset + max) {\n        this.nextPage = Math.floor(offset / max) + 2;\n      } else {\n        this.nextPage = 0;\n      }\n    },\n    onResize() {\n      this.widgetWidth = this.$refs.theWidget.offsetWidth;\n\n      this.documentWidth = Math.max(\n          document.body.scrollWidth,\n          document.documentElement.scrollWidth,\n          document.body.offsetWidth,\n          document.documentElement.offsetWidth,\n          document.documentElement.clientWidth\n      );\n    },\n  },\n  i18n\n};\n</script>\n\n<style lang=\"sass\">\n.eobuchung-app\n  // reset full view - no scroll bars, no full view\n  &.eobuchung-widget\n    overflow: inherit\n\n    // reset from outside CSS\n    [class*=col-]\n      float: none\n\n    .v-label\n      width: unset\n\n    .v-application--wrap\n      display: block\n      flex: inherit\n      min-height: auto\n      min-width: inherit\n      width: 100%\n\n    .v-text-field__details\n      margin: 0 !important\n\n    .eobuchung-wrapper-container\n      &.is-mobile\n        padding: 0\n\n    .eobuchung-container\n      padding: 0\n\n      &.is-mobile\n        padding: 0 12px\n\n        .col-6\n          padding: 2px !important\n\n  &.is-mobile-app\n    .v-application--wrap\n      overflow: hidden\n\n  //// force to top\n  //.v-dialog__content--active\n  //  z-index: 100000 !important\n  //\n  //.v-toolbar__title\n  //  font-size: 1.25em !important\n  //\n  //a.v-btn\n  //  border: inherit\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=18e21210\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\nimport style0 from \"./List.vue?vue&type=style&index=0&id=18e21210&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .eobuchung-list-map-popup{cursor:pointer}@media(min-width:960px){.eobuchung-widget .leaflet-popup-content-wrapper .leaflet-popup-content{width:600px!important}}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBox.vue?vue&type=style&index=0&id=6fd94920&prod&lang=sass\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListCard.vue?vue&type=style&index=0&id=4f9c7fce&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4ebc8259\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionList.vue?vue&type=style&index=0&id=c8f53044&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"19dddfcb\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCard.vue?vue&type=style&index=0&id=3f1f8d87&prod&lang=sass\"","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionButtons.vue?vue&type=style&index=0&id=610c05d7&prod&lang=sass\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMap.vue?vue&type=style&index=0&id=8eb9456e&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"86585244\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-app.eobuchung-widget{overflow:inherit}.eobuchung-app.eobuchung-widget [class*=col-]{float:none}.eobuchung-app.eobuchung-widget .v-label{width:unset}.eobuchung-app.eobuchung-widget .v-application--wrap{display:block;flex:inherit;min-height:auto;min-width:inherit;width:100%}.eobuchung-app.eobuchung-widget .v-text-field__details{margin:0!important}.eobuchung-app.eobuchung-widget .eobuchung-container,.eobuchung-app.eobuchung-widget .eobuchung-wrapper-container.is-mobile{padding:0}.eobuchung-app.eobuchung-widget .eobuchung-container.is-mobile{padding:0 12px}.eobuchung-app.eobuchung-widget .eobuchung-container.is-mobile .col-6{padding:2px!important}.eobuchung-app.is-mobile-app .v-application--wrap{overflow:hidden}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .eobuchung-desktop-filter-selection .v-expansion-panel-header{padding-right:12px}.eobuchung-widget .eobuchung-desktop-filter-selection .v-expansion-panel-content__wrap{padding-left:12px;padding-right:16px}.eobuchung-widget .eobuchung-desktop-filter-selection-panel{border-bottom:1px solid #e0e0e0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=style&index=0&id=18e21210&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2f059b4a\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMap.vue?vue&type=style&index=0&id=8eb9456e&prod&lang=sass\"","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchCard.vue?vue&type=style&index=0&id=3f1f8d87&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5308e9c7\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-search-dialog-radius-btns-desktop button{height:40px!important}.eobuchung-search-dialog-radius-btns-desktop button.theme--light.v-btn.accent{color:#fff}.eobuchung-search-box{background-color:#eee!important}.eobuchung-search-box .v-input{background-color:#fff!important}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=style&index=0&id=4efbf83c&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"151cb8e7\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionPlus.vue?vue&type=style&index=0&id=028a7b3d&prod&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3299a523\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionPlus.vue?vue&type=style&index=0&id=028a7b3d&prod&scoped=true&lang=css\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .leaflet-cluster-anim .leaflet-marker-icon,.eobuchung-widget .leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.eobuchung-widget .leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelectionList.vue?vue&type=style&index=0&id=c8f53044&prod&lang=sass\"","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=style&index=0&id=9c711cb4&prod&lang=sass\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-search-dialog-radius-btns button{height:40px!important}.eobuchung-search-dialog-radius-btns button.theme--light.v-btn.accent{color:#fff}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .eo-filter-selection-list-compact.v-list-item{min-height:inherit;hyphens:auto}.eobuchung-widget .eo-filter-selection-list__divider{height:15px}@media(max-width:996px){.eobuchung-widget .eo-filter-selection-list__divider{height:10px}}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","(function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"leaflet\"),require(\"leaflet.markercluster\"),require(\"vue2-leaflet\")):\"function\"==typeof define&&define.amd?define([\"leaflet\",\"leaflet.markercluster\",\"vue2-leaflet\"],t):\"object\"==typeof exports?exports.Vue2LeafletMarkercluster=t(require(\"leaflet\"),require(\"leaflet.markercluster\"),require(\"vue2-leaflet\")):e.Vue2LeafletMarkercluster=t(e.leaflet,e[\"leaflet.markercluster\"],e[\"vue2-leaflet\"])})(this,function(e,t,r){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=7)}([function(e,t,r){var n=r(2)(r(1),r(3),null,null);e.exports=n.exports},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=r(5),o=r(6),u=r(4),a={options:{type:Object,default:function(){return{}}}};t.default={props:a,data:function(){return{ready:!1}},mounted:function(){var e=this;this.mapObject=new n.MarkerClusterGroup(this.options),u.DomEvent.on(this.mapObject,this.$listeners),(0,o.propsBinder)(this,this.mapObject,a),this.ready=!0,this.parentContainer=(0,o.findRealParent)(this.$parent),this.parentContainer.addLayer(this),this.$nextTick(function(){e.$emit(\"ready\",e.mapObject)})},beforeDestroy:function(){this.parentContainer.removeLayer(this)},methods:{addLayer:function(e,t){t||this.mapObject.addLayer(e.mapObject)},removeLayer:function(e,t){t||this.mapObject.removeLayer(e.mapObject)}}}},function(e,t){e.exports=function(e,t,r,n){var o,u=e=e||{},a=typeof e.default;\"object\"!==a&&\"function\"!==a||(o=e,u=e.default);var i=\"function\"==typeof u?u.options:u;if(t&&(i.render=t.render,i.staticRenderFns=t.staticRenderFns),r&&(i._scopeId=r),n){var f=i.computed||(i.computed={});Object.keys(n).forEach(function(e){var t=n[e];f[e]=function(){return t}})}return{esModule:o,exports:u,options:i}}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement;return(e._self._c||t)(\"div\",{staticStyle:{display:\"none\"}},[e.ready?e._t(\"default\"):e._e()],2)},staticRenderFns:[]}},function(e,t){e.exports=require(\"leaflet\")},function(e,t){e.exports=require(\"leaflet.markercluster\")},function(e,t){e.exports=require(\"vue2-leaflet\")},function(e,t,r){e.exports=r(0)}])});\n//# sourceMappingURL=Vue2LeafletMarkercluster.js.map","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .filterSelectionPlus[data-v-028a7b3d]{width:100%;margin:0}.eobuchung-widget .currentSelection[data-v-028a7b3d]{font-size:1.3rem}.eobuchung-widget .v-btn[data-v-028a7b3d]{transition:all .3s ease}.eobuchung-widget .v-btn[data-v-028a7b3d]:not(.v-btn--disabled){color:primary}.eobuchung-widget .v-btn--disabled[data-v-028a7b3d]{opacity:.5}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSelection.vue?vue&type=style&index=0&id=7d06a19f&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"67185690\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".eobuchung-widget .eobuchung-list-card .v-carousel__controls{top:80%}.eobuchung-widget .eobuchung-list-card .v-carousel__controls .v-btn__content .v-icon{height:14px!important;width:14px!important}.eobuchung-widget .eobuchung-list-card.v-card{border:2px solid #fff}.eobuchung-widget .eobuchung-list-card-pointer{cursor:pointer}.eobuchung-widget .eobuchung-list-card-price{font-weight:700;font-size:1.25rem}.eobuchung-widget .eobuchung-list-card-small{font-size:.85rem;line-height:1.15rem}.eobuchung-widget .eobuchung-list-card-top-icon{position:absolute;top:-2px;left:-2px}.eobuchung-widget .eobuchung-list-card-top-label{position:absolute;top:.5em;left:5px}.eobuchung-widget .eobuchung-list-card-top-label div{padding:3px 10px}.eobuchung-widget .eobuchung-list-card-top-like{position:absolute!important;top:.5rem;right:5px;padding:2px!important}.eobuchung-widget .eobuchung-list-card-picture{position:relative}.eobuchung-widget .eobuchung-list-card-counter{position:absolute;bottom:1em;left:50%;-webkit-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%);color:#fff;text-shadow:0 0 2px #000,0 0 50px #000}.eobuchung-widget .listCarousel .v-window__next,.eobuchung-widget .listCarousel .v-window__prev{transform:scale(.7);margin:0;background:hsla(0,0%,100%,.6)}.eobuchung-widget .listCarousel .v-carousel__controls{transform:scale(.6)}.eobuchung-widget .listCarousel .v-carousel__controls .v-btn--active .v-icon{opacity:1;transform:scale(1.1)}.eobuchung-widget .whitespace-nowrap{white-space:nowrap}.eobuchung-widget .eobuchung-list-card-top-like{transform:scale(.85);top:4px;right:3px}@media(max-width:996px){.eobuchung-widget .eobuchung-list-card-picture{min-width:200px}}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_AT_RULE_IMPORT_0___ = require(\"-!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!leaflet/dist/leaflet.css\");\nvar ___CSS_LOADER_AT_RULE_IMPORT_1___ = require(\"-!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!leaflet.markercluster/dist/MarkerCluster.css\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nexports.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\nexports.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\n// Module\nexports.push([module.id, \".eobuchung-widget .leaflet-container{z-index:1}.eobuchung-widget .leaflet-control-attribution a,.eobuchung-widget .leaflet-popup-content a{border-width:0!important;text-decoration:underline;color:#666}.eobuchung-widget .leaflet-control-attribution a:active,.eobuchung-widget .leaflet-control-attribution a:focus,.eobuchung-widget .leaflet-control-attribution a:hover,.eobuchung-widget .leaflet-popup-content a:active,.eobuchung-widget .leaflet-popup-content a:focus,.eobuchung-widget .leaflet-popup-content a:hover{color:#000}.eobuchung-widget .leaflet-popup-content-wrapper{border-radius:0;padding:0}.eobuchung-widget .leaflet-popup-content{margin:0}.eobuchung-widget .eo-list-map-spinner{z-index:10000;position:absolute;left:0;right:0;top:0;bottom:0;background-color:hsla(0,0%,100%,.6)}.eobuchung-widget .eo-list-map-spinner .v-progress-circular{left:calc(50% - 50px);top:calc(50% - 50px)}.eobuchung-widget .leaflet-oldie .marker-cluster-large,.eobuchung-widget .leaflet-oldie .marker-cluster-large div,.eobuchung-widget .leaflet-oldie .marker-cluster-medium,.eobuchung-widget .leaflet-oldie .marker-cluster-medium div,.eobuchung-widget .leaflet-oldie .marker-cluster-small,.eobuchung-widget .leaflet-oldie .marker-cluster-small div,.eobuchung-widget .marker-cluster-large,.eobuchung-widget .marker-cluster-large div,.eobuchung-widget .marker-cluster-medium,.eobuchung-widget .marker-cluster-medium div,.eobuchung-widget .marker-cluster-small,.eobuchung-widget .marker-cluster-small div{background-color:#257eca}.eobuchung-widget .marker-cluster span{color:#fff;font-weight:700}.eobuchung-widget .marker-cluster{background-clip:padding-box;border-radius:20px}.eobuchung-widget .marker-cluster div{width:30px;height:30px;margin-left:5px;margin-top:5px;text-align:center;border-radius:15px;font:12px Helvetica Neue,Arial,Helvetica,sans-serif}.eobuchung-widget .marker-cluster span{line-height:30px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListMapPopup.vue?vue&type=style&index=0&id=06ac174c&prod&lang=sass\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6ec6de49\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"sourceRoot":""}