{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/DemographicsPanel.vue?5138","webpack:///./src/components/FilterSaveDialog.vue?d2f8","webpack:///./src/components/WalkTimes.vue?c369","webpack:///./src/components/ParcelDetailsDialog.vue?dfb0","webpack:///./src/components/FilterDialog.vue?8e15","webpack:///./src/components/HRMDataInfo.vue?b2a9","webpack:///./src/components/GeoLocation.vue?b930","webpack:///./src/components/GoogleMapPanel.vue?f52d","webpack:///./src/components/ListingDetailsDialog.vue?4473","webpack:///./src/components/PopupMultiListing.vue?08c1","webpack:///./src/components/ShareDialog.vue?398a","webpack:///./src/layouts/Default.vue?d0aa","webpack:///./src/views/Drawer.vue?5dcb","webpack:///./src/components/FavouriteManager.vue?1ee4","webpack:///./src/layouts/Default.vue?846d","webpack:///./src/components/LeafletMap.vue?69e1","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/PopupMultiListing.vue?c472","webpack:///./src/components/PopupSingleListing.vue?aec5","webpack:///./src/components/EmbeddedLeafletMap.vue?c426","webpack:///./src/components/SearchManager.vue?bb30","webpack:///./src/components/ListingFilter.vue?58ba","webpack:///./src/components/PopupParcel.vue?3f51","webpack:///./src/components/LayerManager.vue?556f","webpack:///./src/components/FilterManager.vue?073b","webpack:///./src/components/PopupSingleListing.vue?c24c","webpack:///./src/components/TaxesPanel.vue?6ab4","webpack:///./src/components/LeafletMap.vue?052c","webpack:///./src/components/ListingTable.vue?d539","webpack:///./src/components/ListingTable.vue?165f","webpack:///./src/components/CrimePanel.vue?5794","webpack:///./src/components/ShareDialog.vue?d9f6","webpack:///./src/components/FilterManageButton.vue?61ee","webpack:///./src/components/PhotoPanel.vue?6a9b","webpack:///./src/components/LoginRequiredPanel.vue?c0c6","webpack:///./src/components/RemaxToolbar.vue?2de4","webpack:///./src/components/BookViewingDialog.vue?8a24","webpack:///./src/App.vue?9f40","webpack:///./src/App.vue","webpack:///./src/layouts/Default.vue?5ca3","webpack:///./src/components/RemaxToolbar.vue?0920","webpack:///./src/components/RemaxToolbarActions.vue?b452","webpack:///./src/components/RemaxToolbarActions.vue?8930","webpack:///./src/components/RemaxToolbarActions.vue?748c","webpack:///./src/components/RemaxToolbarActions.vue?9dc3","webpack:///./src/components/RemaxToolbar.vue?6ba9","webpack:///./src/components/RemaxToolbar.vue?0202","webpack:///./src/components/RemaxToolbar.vue?1e44","webpack:///./src/views/Drawer.vue?d462","webpack:///./src/components/ListingFilter.vue?2f56","webpack:///./src/components/ListingFilter.vue?93f7","webpack:///./src/components/ListingFilter.vue?5081","webpack:///./src/components/ListingFilter.vue?f832","webpack:///./src/components/ListingTable.vue?867f","webpack:///./src/models/Listing.ts","webpack:///./src/utils/Defs.ts","webpack:///./src/utils/ListingUtil.ts","webpack:///./src/components/ListingTable.vue?9913","webpack:///./src/components/ListingTable.vue?08ba","webpack:///./src/components/ListingTable.vue?8f6b","webpack:///./src/views/Drawer.vue?c848","webpack:///./src/views/Drawer.vue?9a1b","webpack:///./src/views/Drawer.vue?468b","webpack:///./src/views/Map.vue?aa44","webpack:///./src/components/LeafletMap.vue?037f","webpack:///./src/components/SearchManager.vue?a726","webpack:///./src/services/SearchService.ts","webpack:///./src/components/SearchManager.vue?fdaf","webpack:///./src/components/SearchManager.vue?758e","webpack:///./src/components/SearchManager.vue?e1c4","webpack:///./src/components/LeafletMap.vue?a645","webpack:///./src/components/LeafletMap.vue?d174","webpack:///./src/components/LeafletMap.vue?a1ce","webpack:///./src/views/Map.vue?2ad9","webpack:///./src/views/Map.vue?bf12","webpack:///./src/views/Map.vue","webpack:///./src/components/PopupMultiListing.vue?8688","webpack:///./src/components/PopupMultiListing.vue?107a","webpack:///./src/components/PopupMultiListing.vue?36ed","webpack:///./src/components/PopupMultiListing.vue?52ca","webpack:///./src/components/PopupParcel.vue?1f36","webpack:///./src/components/PopupParcel.vue?4ebf","webpack:///./src/components/PopupParcel.vue?ce8f","webpack:///./src/components/PopupParcel.vue?a4ab","webpack:///./src/components/PopupSingleListing.vue?bdbd","webpack:///./src/components/PopupSingleListing.vue?b080","webpack:///./src/components/PopupSingleListing.vue?cafc","webpack:///./src/components/PopupSingleListing.vue?0319","webpack:///./src/components/FilterDialog.vue?0546","webpack:///./src/models/MinMax.ts","webpack:///./src/models/Filter.ts","webpack:///./src/components/FilterDialog.vue?e7fd","webpack:///./src/components/FilterDialog.vue?ae42","webpack:///./src/components/FilterDialog.vue?a5f7","webpack:///./src/components/ListingDetailsDialog.vue?4c99","webpack:///./src/components/HRMDataInfo.vue?c8b1","webpack:///./src/components/HRMDataInfo.vue?591a","webpack:///./src/components/HRMDataInfo.vue?e503","webpack:///./src/components/HRMDataInfo.vue?fbf4","webpack:///./src/components/GoogleMapPanel.vue?9db0","webpack:///./src/components/GoogleMapPanel.vue?9005","webpack:///./src/components/GoogleMapPanel.vue?31b6","webpack:///./src/components/GoogleMapPanel.vue?70bd","webpack:///./src/components/TaxesPanel.vue?12c4","webpack:///./src/models/TaxAssessment.ts","webpack:///./src/components/LoginRequiredPanel.vue?9ec7","webpack:///./src/components/LoginRequiredPanel.vue?efa5","webpack:///./src/components/LoginRequiredPanel.vue?38d6","webpack:///./src/components/LoginRequiredPanel.vue?c8b7","webpack:///./src/components/ChartBar.vue?0cae","webpack:///./src/components/ChartBar.vue","webpack:///./src/components/ChartBar.vue?322d","webpack:///./src/components/TaxesPanel.vue?9af9","webpack:///./src/components/TaxesPanel.vue?75fd","webpack:///./src/components/TaxesPanel.vue?8f39","webpack:///./src/components/DemographicsPanel.vue?b363","webpack:///./src/components/EmbeddedLeafletMap.vue?e6af","webpack:///./src/components/EmbeddedLeafletMap.vue?6f4a","webpack:///./src/components/EmbeddedLeafletMap.vue?34d9","webpack:///./src/components/EmbeddedLeafletMap.vue?8860","webpack:///./src/components/ChartDoughnut.vue","webpack:///./src/components/ChartDoughnut.vue?8d70","webpack:///./src/components/ChartLine.vue?8c92","webpack:///./src/components/ChartDoughnut.vue?bc6a","webpack:///./src/components/ChartLine.vue","webpack:///./src/components/ChartLine.vue?44f5","webpack:///./src/components/DemographicsPanel.vue?fcdd","webpack:///./src/components/DemographicsPanel.vue?a816","webpack:///./src/components/DemographicsPanel.vue?196a","webpack:///./src/components/SalesHistoryPanel.vue?c483","webpack:///./src/components/SalesHistoryPanel.vue?eeed","webpack:///./src/components/SalesHistoryPanel.vue?285e","webpack:///./src/components/SalesHistoryPanel.vue?a29c","webpack:///./src/components/PhotoPanel.vue?ebe3","webpack:///./src/components/PhotoPanel.vue?6c42","webpack:///./src/components/PhotoPanel.vue?e1e3","webpack:///./src/components/PhotoPanel.vue?80d8","webpack:///./src/components/ListingDetailsDialog.vue?ea26","webpack:///./src/components/ListingDetailsDialog.vue?454c","webpack:///./src/components/ListingDetailsDialog.vue?bbf0","webpack:///./src/components/LoginPromptDialog.vue?47d6","webpack:///./src/components/LoginPromptDialog.vue?7698","webpack:///./src/components/LoginPromptDialog.vue?1757","webpack:///./src/components/LoginPromptDialog.vue?4e02","webpack:///./src/components/CrimePanel.vue?8dd3","webpack:///./src/components/ChartDoughnutCrime.vue","webpack:///./src/components/ChartDoughnutCrime.vue?7903","webpack:///./src/components/ChartDoughnutCrime.vue?653c","webpack:///./src/components/CrimePanel.vue?db55","webpack:///./src/components/CrimePanel.vue?4acc","webpack:///./src/components/CrimePanel.vue?a17d","webpack:///./src/components/ParcelDetailsDialog.vue?b05b","webpack:///./src/components/ParcelDetailsDialog.vue?10cd","webpack:///./src/components/ParcelDetailsDialog.vue?1ba5","webpack:///./src/components/ParcelDetailsDialog.vue?f9b9","webpack:///./src/components/BookViewingDialog.vue?85b6","webpack:///./src/models/RequestViewingViewModel.ts","webpack:///./src/components/BookViewingDialog.vue?c793","webpack:///./src/components/BookViewingDialog.vue?8be3","webpack:///./src/components/BookViewingDialog.vue?144c","webpack:///./src/components/LayerManager.vue?660a","webpack:///./src/models/CrimePoint.ts","webpack:///./src/workers/preloadImagesWorker.js","webpack:///./src/workers/preloadImages.ts","webpack:///./src/components/LayerManager.vue?431c","webpack:///./src/components/LayerManager.vue?e690","webpack:///./src/components/LayerManager.vue?25fb","webpack:///./src/components/FavouriteManager.vue?8e0e","webpack:///./src/components/FavouriteManager.vue?b208","webpack:///./src/components/FavouriteManager.vue?366e","webpack:///./src/components/FavouriteManager.vue?105d","webpack:///./src/components/ShareDialog.vue?1d8d","webpack:///./src/components/ShareDialog.vue?085c","webpack:///./src/components/ShareDialog.vue?2ba4","webpack:///./src/components/ShareDialog.vue?39cd","webpack:///./src/components/FilterManager.vue?5989","webpack:///./src/components/FilterManager.vue?bf51","webpack:///./src/components/FilterManager.vue?9c75","webpack:///./src/components/FilterManager.vue?7817","webpack:///./src/components/FilterManageButton.vue?de8a","webpack:///./src/components/FilterManageButton.vue?ec35","webpack:///./src/components/FilterManageButton.vue?0d47","webpack:///./src/components/FilterManageButton.vue?735d","webpack:///./src/components/MeasureTool.vue?207d","webpack:///./src/components/MeasureTool.vue?b3bd","webpack:///./src/components/MeasureTool.vue?164c","webpack:///./src/components/MeasureTool.vue?1a36","webpack:///./src/components/GeoLocation.vue?2f75","webpack:///./src/components/GeoLocation.vue?5450","webpack:///./src/components/GeoLocation.vue?56c8","webpack:///./src/components/GeoLocation.vue?f808","webpack:///./src/components/WalkTimes.vue?4799","webpack:///./src/components/WalkTimes.vue?97e2","webpack:///./src/components/WalkTimes.vue?0ab7","webpack:///./src/components/WalkTimes.vue?54b9","webpack:///./src/components/FilterSaveDialog.vue?75eb","webpack:///./src/components/FilterSaveDialog.vue?d186","webpack:///./src/components/FilterSaveDialog.vue?686a","webpack:///./src/components/FilterSaveDialog.vue?abea","webpack:///./src/components/TryMobileBanner.vue?238b","webpack:///./src/components/TryMobileBanner.vue?cb99","webpack:///./src/components/TryMobileBanner.vue?ab10","webpack:///./src/components/TryMobileBanner.vue","webpack:///./src/store/modules/configStore.ts","webpack:///./src/models/Demographics.ts","webpack:///./src/models/ParcelAssessment.ts","webpack:///./src/models/ParcelHrmData.ts","webpack:///./src/models/BuildingPermit.ts","webpack:///./src/models/CivicAddress.ts","webpack:///./src/models/ParcelData.ts","webpack:///./src/models/Agent.ts","webpack:///./src/models/ValueChange.ts","webpack:///./src/models/HistoricListing.ts","webpack:///./src/models/ListingDetail.ts","webpack:///./src/auth/UnauthorizedError.ts","webpack:///./src/services/RemaxService.ts","webpack:///./src/store/modules/listingStore.ts","webpack:///./src/store/modules/layerStore.ts","webpack:///./src/models/SavedFilter.ts","webpack:///./src/store/modules/filterStore.ts","webpack:///./src/models/ParcelDetail.ts","webpack:///./src/store/modules/parcelStore.ts","webpack:///./src/models/Favourite.ts","webpack:///./src/store/modules/favStore.ts","webpack:///./src/store/modules/analyticsStore.ts","webpack:///./src/store/index.ts","webpack:///./src/auth/authConfig.ts","webpack:///./src/auth/Auth.ts","webpack:///./src/layouts/Default.vue?d9cd","webpack:///./src/layouts/Default.vue?45b6","webpack:///./src/layouts/Default.vue?a393","webpack:///./src/router/index.ts","webpack:///./src/quasar.js","webpack:///./src/main.ts","webpack:///./src/components/RemaxToolbarActions.vue?f28b","webpack:///./src/components/MeasureTool.vue?06cf","webpack:///./src/components/LoginPromptDialog.vue?cab2","webpack:///./src/components/SalesHistoryPanel.vue?100f"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","script","component","staticClass","staticStyle","ref","class","IsLightBoxOn","lbMedia","on","onClose","_e","isMobile","directives","rawName","$event","externalLink","_v","isLoggedIn","onSignInOrOut","widthThresholdValue","heightThresholdValue","url","location","href","$q","dialog","title","message","cancel","persistent","onOk","$store","dispatch","onCancel","onDismiss","state","screen","width","height","options","components","assign","QBtnDropdown","QList","QItem","QItemSection","QItemLabel","QBtn","QMenu","ClosePopup","RemaxToolbarActions","QHeader","QToolbar","QSpace","shouldShowDrawer","refreshMap","model","callback","$$v","leftDrawerOpen","expression","toggleDrawer","showFilterDialog","filterCount","_s","onClearAll","onSave","filters","activeFilter","config","savedFilters","QBadge","zoom","listingsInMapBounds","columns","initialPagination","scopedSlots","_u","fn","props","onShowGallery","row","getPictureUri","pi","sid","listingStatusClass","listingStatus","onSelectListing","priceShortened","lpmn","bdmn","bhmn","daysOnMarket","onToggleFavorite","isFavourite","onGoToListing","featureProperties","featureGeometry","objectId","ad","br","cl","cm","fd","ld","lls","md","ml","mlan","mli","pc","pid","sp","st","tlan","geometry","ht","undefined","ga","wf","yb","OBJECTID","ANALYTICS_LISTING_MAPCLICK","ANALYTICS_LISTING_TABLECLICK","ANALYTICS_LISTING_VIEWDETAILS","ANALYTICS_OPSLAYER_CRIMEOFF","ANALYTICS_OPSLAYER_CRIMEON","ANALYTICS_OPSLAYER_CROWNLANDOFF","ANALYTICS_OPSLAYER_CROWNLANDON","ANALYTICS_OPSLAYER_HEATOFF","ANALYTICS_OPSLAYER_HEATON","ANALYTICS_OPSLAYER_LISTPNTSOFF","ANALYTICS_OPSLAYER_LISTPNTSON","ANALYTICS_DETAILS_PHOTOS","ANALYTICS_DETAILS_HRM","ANALYTICS_DETAILS_TAX","ANALYTICS_DETAILS_HISTORY","ANALYTICS_DETAILS_SCHOOLS","ANALYTICS_DETAILS_DEMO","ANALYTICS_DETAILS_STREETVIEW","LISTING_NO_VALUE","LISTING_NO_VALUE_NUM","mainLivingArea","price","isMulti","lPriceStr","lPrice","Math","round","status","soldPrice","listClass","ListingUtil","getFormatedPrice","getStatusAsString","classCode","listDate","listStatus","firmDate","lDays","lDaysOnMarket","date_diff_indays","now","Date","nowStr","getMonth","getDate","getFullYear","err","listPrice","parseInt","toString","indexOf","toFixed","replace","substr","featureCollection","sysId","features","properties","feature","featSysId","lListingProps","getListingFromMultiListingSearchSelection","lListings","JSON","parse","imageUrlInit","imageUrl","toBeDashified","str","toLowerCase","replaceAll","baseURL","listingTypeURL","getListingClassTypeURL","ClassCodeL","dashify","Community","address","Address","ListingService","MlsNo","join","sizeInFtSq","sizeInAcres","date1","date2","dt1","_getDateFromUnknownStringFormat","dt2","floor","UTC","dateStr","lDate","epoch","isNaN","required","label","align","field","rowsPerPage","relativePath","addTablePostfixToImage","placeholdListingImg","imageRoot","getPriceShortened","listing","getDaysOnMarket","Status","lIsMatch","x","Class","HeatType","listingHeat","Garage","Waterfront","Price","Min","FilterOptions","PriceNoMinVal","Max","PriceNoMaxVal","Beds","BedNoMinVal","BedNoMaxVal","Baths","BathNoMinVal","BathNoMaxVal","Mla","MlaNoMinVal","MlaNoMaxVal","Tla","TlaNoMinVal","TlaNoMaxVal","Age","AgeNoMinVal","AgeNoMaxVal","action","favouriteIds","systemId","listings","extraMultiListings","multiListings","multiListing","isListingFilteredOut","concat","favourites","QTable","QTd","QIcon","QTooltip","setTimeout","invalidateSize","isLandscape","ListingFilter","ListingTable","QDrawer","QScrollArea","resultOptions","selectedResult","searchInput","clearResult","scope","opt","type","index","addressResults","listingResults","_g","_b","itemProps","itemEvents","domProps","proxy","selectedValue","esriGeocodeClient","a","withCredentials","headers","esriServiceClient","esriGeocoderSuggestions","search","lat","lon","encodeURI","esriGeocoderCandidates","text","magicKey","mlsFuzzyQuery","pidExactQuery","pidCentroidQuery","listingGeometry","objectid","pidResults","unsubscribe","subscribeAction","inputValue","selectedListingMarkerPane","getPane","style","display","SearchService","then","response","candidates","latLon","LatLng","y","setView","catch","error","listingJson","searchListing","coordinates","update","abort","parseFloat","forEach","lSysId","getMatchingSystemIdFromMultilisting","PID","getCenter","lng","suggestions","suggestion","idx","idx2","slimAddress","substring","find","element","sysIdToMatch","lSysIds","split","selectionText","lStart","lEnd","QSelect","lSW","mapDefault","maxBounds","lNE","lMapOptions","zoomControl","LatLngBounds","minZoom","maxZoom","lMap","onLoad","evt","lZoom","getZoom","DomUtil","addClass","getContainer","removeClass","originalEvent","defaultPrevented","latlng","mapCenter","MapLoadingSpinner","Control","extend","position","onAdd","container","addControl","centerLat","centerLon","center","control","addTo","setMapWrapperHeight","loaderDiv","document","getElementById","addEventListener","opacity","HomeControl","backgroundImage","backgroundColor","backgroundPosition","onclick","zoomHome","onRemove","hc","createMap","onresize","$nextTick","innerHeight","SearchManager","QSpinner","LeafletMap","_l","thumbnailUrl","onViewPhotos","onListingSelected","sqFootage","viewDetailsInProgress","onViewDetails","showPopup","popup","individualListings","onMultiListingSelected","payload","onViewDetailsModalOpen","closePopup","listingPreviewImage","getListingPriceBasedOnStatus","sqFt","getSqFootage","favourtiteIds","viewPhotosInProgress","selectedListing","layer","rootListing","individualListingsJson","forSaleListings","pendingListings","soldListings","popupWidth","platform","is","mobile","lLatlng","getBounds","latLng","className","minWidth","maxWidth","setLatLng","setContent","$el","openOn","QCard","QCardSection","selectedPid","civic","CivicNum","StreetName","StreetType","City","selectedParcelDetail","showParcelDetails","_m","parcelSpinnerLayer","selectedParcelLayer","queriedPoints","onMapParcelClick","onMapParcelDataRetrievedError","isMapClickDisabled","removeFrom","lSpinnerMarker","divIcon","iconSize","html","marker","icon","lParcelQuery","ParcelsLayer","intersects","run","onGetParcelAtPoint","lFeature","lClickPoint","pop","showParcelPopup","onMapParcelRetrieved","lPid","padStart","geoJSON","highlightedListingColor","clickPoint","parcels","selectedParcel","ParcelData","CivicAddresses","imageSrc","onImageLoad","isImgLoaded","isSold","lastFeatureId","lastLatLon","onSingleListingSelected","onPopupFromListing","isFullListingDetailsAvailable","listingFeature","openPopup","img","startsWith","QImg","QSkeleton","onFilterDialogHide","showDialog","isActive","isPending","classOptions","filterClass","typeOptions","filterType","styleOptions","filterStyle","priceLabelMin","priceLabelMax","priceRange","bedsRange","max","bathsRange","mlaRange","tlaRange","lotLabelMin","lotLabelMax","lotRange","ageRange","heatOptions","filterHeat","isWaterfront","isGarage","schoolCatchmentOptions","spatialFilterApplied","schoolCatchment","spatialFilterLoading","onApplyFilter","minMaxProps","min","filterProps","beds","baths","mla","tla","LotSize","lotSize","age","Type","Style","heatType","waterfront","garage","SchoolCatchmentId","schoolCatchmentId","spatialFilterLayer","spatialFilterStyle","color","fillColor","weight","fillOpacity","onShowDialog","onClearSpatialFilter","onShowSpatialFilter","newFilter","oldFilter","stringify","priceMin","PriceMinOptions","priceMax","PriceMaxOptions","step","lotMin","LotSizeMinOptions","lotMax","LotSizeMaxOptions","selectedOption","onSchoolFilter","spatialFilter","pane","fitBounds","applyAttributeFilter","schoolQuery","SchoolCatchmentLayer","where","toGeoJSON","ClassOptions","StyleOptions","ResidentialTypeOptions","CommercialTypeOptions","HeatTypeOptions","SchoolOptions","priceOption","lotOption","immediate","deep","QDialog","QCheckbox","QSeparator","QToggle","QRange","QCardActions","selectedListingDetail","onTabChange","tab","PropOvervw","selectedListingStatusClass","ListStatus","formattedPrice","BuildingAge","ClassLong","SqFootage","TotalFinishedSqFt","CondoFee","ListingOfficeName","DaysOnMarket","NumBeds","FullBaths","HalfBaths","formattedParcelSize","WaterSource","SewageGroundSpill","HeatingCoolingType","addSpaceAfterCommas","Utillities","isBuildingsSpecsVisible","Foundation","Roof","ExternalFinish","Flooring","roomsData","GarageDetails","VirTourURL","Inclusions","Exclusions","ElemSchool","ElemSchoolFr","MidSchool","MidSchoolFr","HighSchool","HighSchoolFr","onOpenShareDialog","onOpenBookViewingDialog","buildingPermitsData","buildingPermitsColumns","col","parcelHrmData","Zone","ZoneByLawId","ByLawName","ByLawCode","PollDistName","Councillor","WasteCollect","WasteCollectContractor","detailType","ParcelHrmData","BuildPermits","String","QTr","QTh","onClickMapTab","isMapLoaded","initStreetView","loader","apiKey","load","listingPosition","google","maps","Latitude","Longitude","panoOptions","panControl","addressControl","linksControl","googleStreet","StreetViewPanorama","googleStreetViewService","StreetViewService","getPanorama","preference","StreetViewPreference","NEAREST","radius","panoData","panoCenter","heading","spherical","computeHeading","pov","getPov","setPosition","setPov","mapOptions","mapContainer","Map","Marker","googleMarkerUrl","gMapAPIKey","QTabs","QTab","QTabPanels","QTabPanel","allTaxAssessments","PercentChange","Index","datacollection","year","amount","amountAsText","percentChange","isPosChange","isNegChange","Year","Amount","AmountAsText","IsPosChange","IsNegChange","panelHeader","panelSubheader","onLogin","onRegister","$props","header","subheader","reactiveProp","mixins","extends","Bar","mounted","renderChart","chartData","taxAssessments","allYears","allValues","labels","datasets","scales","yAxes","ticks","beginAtZero","values","gridLines","xAxes","legend","tooltips","enabled","callbacks","tooltipItems","yLabel","responsive","maintainAspectRatio","plugins","fontColor","render","args","initializeTaxAssessments","fillData","ParcelAssessments","parcelAssessment","Value","abs","taxAssessment","reverse","ChartBar","LoginRequiredPanel","mobileMapWidth","geoJsonDA","geoJsonPID","boundsDA","demoData","PopulationSize","MedianAgeStr","AvgHouseholdSizeStr","AvgHouseholdIncomeStr","demoChartTabOptions","selectedDemographicChartTab","populationAgeGroup","populationProjectionDataCollection","lineOptions","educationDataCollection","maritalStatusDataCollection","householdIncomeDataCollection","ownershipDataCollection","constructionDateDataCollection","childrenAtHomeDataCollection","occupationDataCollection","parcelStyle","scrollWheelZoom","geoJson","mapFeature","popupName","bindPopup","bounds","createFilterMap","createDemographicsMap","Chart","defaults","global","percentage","fontStyle","fontSize","Doughnut","determineTextColour","methods","Line","showMap","animation","animateRotate","populationAgeRangeLabels","populationAgeRangeColours","populationProjectionLabels","populationProjectionColours","educationLabels","educationColours","maritalStatusLabels","maritalStatusColours","householdIncomeLabels","householdIncomeColours","ownershipLabels","ownershipColours","constructionDateLabels","constructionDateColours","childrenAtHomeLabels","childrenAtHomeColours","occupationLabels","occupationColours","selectedDetail","updateMap","populationAgeRangeData","populationProjectionData","fill","borderColor","borderWidth","educationData","maritalStatusData","householdIncomeData","ownershipData","constructionDateData","childrenAtHomeData","occupationData","daQuery","DALayer","DAUID","fields","updateParcelLayer","pQuery","ageArray","Pop0to4","Pop5to9","Pop10to14","Pop15to19","Pop20to24","Pop25to29","Pop30to34","Pop35to39","Pop40to44","Pop45to49","Pop50to54","Pop55to59","Pop60to64","Pop65to69","Pop70to74","Pop75to79","Pop80to84","Pop85Plus","populationProjectionArray","Pop2016","Pop2021","Pop2024","Pop2026","Pop2031","educationArray","EdNoCertDipDeg","EdHighSch","EdAppTradeDip","EdCollege","EdUniBelowBach","EdUniDeg","EdUniBach","EdUniBachPlus","maritalStatusArray","StatMarried","StatCommon","StatSingle","StatSeparated","StatDivorce","StatWidow","householdIncomeArray","HouseInc0to20","HouseInc20to40","HouseInc40to60","HouseInc60to80","HouseInc80to100","HouseInc100to150","HouseInc150to200","HouseInc200Plus","ownershipArray","OwnershipRent","OwnershipOwn","ContructDatePre1960","ContructDatePre1961to1980","ContructDatePre1981to1990","ContructDatePre1991to2000","ContructDatePre2001to2005","ContructDatePre2006to2011","ContructDatePre2011to2016","ContructDatePre2016Plus","childrenAtHomeArray","ChildHome0to4","ChildHome5to9","ChildHome10to14","ChildHome15to19","ChildHome20to24","ChildHome25Plus","occupationArray","OccupNA","OccupMangement","OccupBusFinAdmin","OccupNatAppSci","OccupHealth","OccupEdLawGov","OccupArtCultRec","OccupSaleService","OccupTradeTrans","OccupNatResAgri","OccupMan","Demographics","EmbeddedLeafletMap","ChartDoughnut","ChartLine","item","historyStatusClass","ListPriceOrig","generateStatusLabel","ListDateStr","InactiveDateStr","DOM","ValueChanges","valueChangeItem","ChangeDate","ChangeDateStr","OldValueStr","FieldName","NewValueStr","doShowHistoryListingButton","onOpenHistoricListing","historicListingItem","mlsNum","isSelectedListing","isNonMls","doShowButton","open","fieldName","ListStatusLabel","ListPriceLast","historicListingsArray","HistoricListings","Listings","PvsHistoricListings","selectedListingImage","onClick","onShowDialogPhotos","SystemId","setWrapperHeight","details","$refs","detailWrapper","windowWidth","Rooms","ListPrice","parcelSize","Number","ParcelSizeFtSq","getParcelSizeAcres","HRMParcelItems","ByLawId","WasteCollectArea","PollDistId","some","HRMDataInfo","GoogleMapPanel","TaxesPanel","DemographicsPanel","SalesHistoryPanel","PhotoPanel","contentMessage","closeDialog","redirect","dataLayer","QAvatar","selectedCrime","Street","currentCrimes","crimeDataCollection","crimeTableData","crimeColumns","pluginService","register","beforeDraw","chart","elements","ctx","centerConfig","txt","maxFontSize","sidePadding","sidePaddingCalculated","innerRadius","font","stringWidth","measureText","elementWidth","widthRatio","newFontSize","elementHeight","fontSizeToUse","minFontSize","lineHeight","wrapText","textAlign","textBaseline","centerX","chartArea","left","right","centerY","top","bottom","fillStyle","fillText","words","line","lines","testLine","metrics","testWidth","isCrimePanelReady","crimeRecordsTable","crimeData","crimeLabels","crimeColours","pagination","rowsNumber","format","val","getFormatedDateFromEpoch","sortable","initCrimeRecordsLayer","oldValue","onSelectedCrimeChanged","date","month","day","CrimeRecordsTable","query","CrimePointID","dataArray","layers","ChartDoughnutCrime","civicAddressData","civicAddressColumns","onReset","isReponseReceived","isWorkingWithAgent","phoneNumber","emailAddress","todaysDate","qDateProxy","hide","allowableTimes","time","alternateDate","qADateProxy","allowableAlternateTimes","alternateTime","requestSubmittedSuccessfully","onSubmit","workingWithAgent","telephone","email","request1Date","request1Time","request2Date","request2Time","phone","timeOptions","onShowRequestSuccess","onShowRequestError","dateAndTime","currentDateAndTime","timeOptionsToReturn","timeOptionsToCompare","nameValid","validate","phoneNumberValid","emailValid","requestViewingVM","today","dd","mm","yyyy","hours","getHours","minutes","getMinutes","ampm","hoursString","minutesString","strTime","currentTime","todaysAllowableTimes","QInput","QPopupProxy","QDate","layerMenuShowing","basemap","active","nativeOn","onBasemapSelect","thumbnail","onLayerToggle","$set","onLayerInfo","tooltip","crimeObject","NumCrimes","Worker_fn","Worker","worker","PreloadImage","postMessage","initLayers","onSelectedListingChanged","onFilterChanged","onHeatmapDataLoaded","setSelectedFeatureMarkerCoordinates","selectedFeatureMarker","selectedCrimeMarker","lastListingLayerSelected","listingPointsLayer","listingPolygonLayer","pointOpsLayer","currentlyHighlightedPolygonId","parcelVectorLayer","loadingTimerId","listingPolygonErrorTracking","NumLoadsInRowWithError","IsErrorOnCurrentLoad","HasErrorBeenDisplayed","DelayToNextRefresh","LatestError","listingPointErrorTracking","isListingPointLayerLoading","hasPendingFilterUpdate","isHeatLayersInit","isCrimeLayersInit","isCrownLandLayerInit","isForeignBuyerLayerInit","pendingNewSelectedListingPid","layerSoldHeatMap","crimeLayer","crownLandLayer","foreignBuyerLayer","ListingsPointLayer","HeatmapLayer","CrimeRecordsLayer","activeBasemap","activeBasemapLabels","basemaps","initForeignBuyerLayer","initCrownLandLayer","initCrimePointLayer","precision","chunkedLoading","spiderfyOnMaxZoom","animate","disableClusteringAtZoom","polygonOptions","iconCreateFunction","cluster","count","getChildCount","digits","DivIcon","pointToLayer","iconAnchor","onCrimePointClick","CrownLandLayer","addFunction","addCrownLandLayerToLayerManager","metadata","fetch","ForeignBuyerBanLayer","json","geoJSONData","visibility","handleAddForeignBuyerLand","addForeignBuyerBanLayerToLayerManager","ok","heatmapData","heatLayer","entries","removeLayer","BingLayer","mapboxGL","accessToken","mapBoxToken","tileLayer","urlTemplate","ParcelVectorTileLayer","styleWhite","attribution","styleNormal","addLayer","initBaseLayers","initTileLayers","initOpsLayers","initSelectedFeatureMarker","initSelectedCrimeMarker","initQueryParams","$route","canvas","createElement","gl","getContext","WebGLRenderingContext","lBasemap","isWebGLSupported","basemapLayers","MapBox","attributionControl","setPrefix","Streets","createPane","vectorPane","zIndex","isModern","ListingsPolygonLayer","outFields","definitionExpression","simplifyFactor","onListingPolygonClick","onListingPolygonLoadingStarted","onListingPolygonLoaded","errorCb","onPointLayerError","lMarkerHtml","getListingLabel","onListingPointsLoadingStarted","onListingPointsLoaded","onListingPointClick","updateLayerErrorTracking","event","handleLisitngFeatureClick","handleCrimeFeatureClick","loaderElement","getElementsByClassName","setAttribute","clearTimeout","updateFilter","selectListingOnMapByPid","notifyNewFeaturesLoadedIntoMapBounds","errorTracker","featureLayer","refresh","preventDefault","setSelectedCrimeMarkerCoordinates","getLatLng","hasLayer","allMListings","forSaleAndPendingListings","lowestPrice","lHtml","getMultiListingLabelHtml","getLabelClassFromStatus","classFromStaus","charAt","myIcon","iconUrl","selectedListedPane","selectedCrimePane","onSelectedCrimeClick","moveSelectedListingMarkerByPid","highlightSelectedListingParcel","lBounds","lIsFound","eachFeature","contains","_latlng","lCenter","resetStyle","setFeatureStyle","newClause","lWhere","lNumFilters","iFilterSet","addClauseToWhere","LotSizeNoMinVal","LotSizeNoMaxVal","lClassWhere","addClauseToWhereWithOr","lHeatTypeWhere","b","lStyleWhere","StatusOptions","lStatusWhere","k","lTypeWhere","url_in","ids","filteredIds","z","setWhere","objectIds","filter","lSnapshot","_currentSnapshot","getPointFeaturesWithinCurrentBounds","getListingFromResult","currentZoom","QToolbarTitle","Ripple","favouriteCount","onSendNotifications","sendNotifications","fav","PreviewImage","StatusCode","onGoToFavourite","onDeleteFavourite","initFavourites","favouriteNotifications","FavControl","innerHTML","favBtn","network","sharingProperties","description","listingUrl","onCopy","use","showLinkCopiedText","$copyText","getListingUrl","baseFullListingUrl","origin","networks","QField","MFID","Name","Notifications","onRestoreFilter","Polygon","MultiPolygon","GeoJson","onFilterAreaClick","onDeleteFilter","previewMobileDialogStyle","mapHeight","mapWidth","selectedGeoJson","selectedName","initFilters","onCloseDialog","pingSchoolsService","mfid","getGeoJson","dialogElement","scrollTo","pingSchools","isFilterLoading","onManageFilters","onToggleMeasure","showMeasureToolbar","currentMeasurement","showArea","formattedArea","formattedMeasurement","onToggleMeasureType","isImperial","isUndoDisabled","onUndo","onCancelMeasure","currentArea","drawLine","coords","projectedCoords","drawLayer","areaOverlayLayer","drawLineStyle","drawPolygonStyle","onInitMeasure","drawLocal","draw","handlers","polyline","start","cont","end","Draw","Polyline","showLength","allowIntersection","drawError","shapeOptions","enable","defs","firstMarker","Event","DRAWVERTEX","getLayers","v","addVertex","completeShape","projected","recalcDistance","recalcArea","poly","polygon","CREATED","off","a2","addX","addY","subX","subY","sum","utmDistance","x1","y1","x2","y2","xDiff","yDiff","sqrt","deleteLastVertex","disable","QLinearProgress","initGeoLocation","pulsingIcon","pulse","locationSize","locationColor","locationControl","locate","clickBehavior","inView","outOfView","inViewNotFollowing","drawCircle","cacheLocation","markerStyle","markerClass","keepCurrentZoomLevel","locateOptions","locationZoom","navigator","geolocation","onChangeHelp","dontTellMe","walkTimeControl","walkAreasLayer","walkData","initWalkTimes","WalkTimeGeoJson","onSetWalkData","onClearWalkData","showWalkabilityHelp","WalkTimeControl","showWalkData","FromBreak","flyToBounds","onHide","resultsSaved","filterName","showNotifications","notificationAreaType","onDrawArea","onSaveFilter","showDrawToolbar","onCancelDraw","drawPolygon","onResultSaved","extent","rectangle","SpatialFilter","activeSpatialFilter","input","QRadio","gotoStore","dismissBanner","android","mobileLinks","ios","QBanner","Store","gMapUrl","baseUrl","geometryService","searchBounds","locationTimeout","Gray","Topographic","Imagery_Bing","Imagery","Imagery_GeoNova","OSM","version","sources","esri","tiles","isVisible","BuildingPermitLayer","BedMinOptions","BedMaxOptions","BathMinOptions","BathMaxOptions","MultiTypeOptions","FarmTypeOptions","VacantLandTypeOptions","MlaMinOptions","MlaMaxOptions","TlaMinOptions","TlaMaxOptions","AgeMinOptions","AgeMaxOptions","operationalLayers","mutations","actions","demoObject","MedianAge","AvgHouseholdSize","AvgHouseholdIncome","NumHouseholds","dauid","populationSize","medianAge","medianAgeStr","avgHouseholdSize","avgHouseholdSizeStr","avgHouseholdIncome","avgHouseholdIncomeStr","numHouseholds","pop0to4","pop5to9","pop10to14","pop15to19","pop20to24","pop25to29","pop30to34","pop35to39","pop40to44","pop45to49","pop50to54","pop55to59","pop60to64","pop65to69","pop70to74","pop75to79","pop80to84","pop85Plus","pop2016","pop2021","pop2024","pop2026","pop2031","edNoCertDipDeg","edHighSch","edAppTradeDip","edCollege","edUniBelowBach","edUniDeg","edUniBach","edUniBachPlus","statMarried","statCommon","statSeparated","statSingle","statDivorce","statWidow","houseInc0to20","houseInc20to40","houseInc40to60","houseInc60to80","houseInc80to100","houseInc100to150","houseInc150to200","houseInc200Plus","childHome0to4","childHome5to9","childHome10to14","childHome15to19","childHome20to24","childHome25Plus","ownershipRent","ownershipOwn","contructDatePre1960","contructDatePre1961to1980","contructDatePre1981to1990","contructDatePre1991to2000","contructDatePre2001to2005","contructDatePre2006to2011","contructDatePre2011to2016","contructDatePre2016Plus","occupNA","occupMangement","occupBusFinAdmin","occupNatAppSci","occupHealth","occupEdLawGov","occupArtCultRec","occupSaleService","occupTradeTrans","occupMan","occupNatResAgri","assessmentObject","AAN","Acres","aan","acres","hrmParcelObject","byLawId","byLawCode","byLawName","zoneByLawId","zone","pollDistId","pollDistName","councillor","wasteCollect","wasteCollectArea","wasteCollectContractor","permitObject","PermitNumber","DateApplication","DateIssued","ProjectDescription","MostRecentInspect","PermitStatus","EstimatedValue","permitNumber","dateApplication","dateIssued","projectDescription","mostRecentInspect","permitStatus","estimatedValue","civObject","CivicId","Apartment","Municipality","County","LotNum","civicId","apartment","civicNum","streetName","streetType","city","municipality","county","lotNum","parcelDataObject","Communiuty","CivicAddress","ChildParcels","IsParent","communiuty","demographics","civicAddress","civicAddresses","parcelAssessments","assessment","childParcels","buildPermits","permit","walkTimeGeoJson","isParent","areaFtSq","agentObject","AgentId","FirstName","LastName","Email","CellPhone","OfficeId","valueChangeObject","changeDate","changeDateStr","FieldNamestr","fieldNamestr","OldValue","oldValueStr","NewValue","newValue","newValueStr","historicObject","mlsNo","listStatusLabel","listPriceOrig","listPriceLast","ListDate","listDateStr","InactiveDate","inactiveDate","inactiveDateStr","dom","valueChanges","historicObj","listingDetail","IsLoggedIn","MapPID","IsResidential","IsFarm","IsCommercial","ClassShort","PreviewImageURL","Province","SoldPrice","NumRnUnits","NumStories","Parking","FirmDate","FirmDateStr","UpdateDate","UpdateStr","ListStatusCode","District","HasBuildingSpecs","PropertyImages","Agents","OpenHouses","HasFlyer","FlyerUrl","PropDir","HasLatitudeLongitude","PostalCode","ExpireDate","ExpireDateStr","Brokerage","ListingOfficeId","NewConstruction","parcelData","mapPID","historicListings","assessmentObj","isResidential","isFarm","isCommercial","listingService","classShort","classLong","previewImageURL","province","latitude","longitude","numRnUnits","numStories","parking","firmDateStr","updateDate","updateStr","heatingCoolingType","virTourURL","utillities","sewagdspsl","totalFinishedSqFt","watersourc","listStatusCode","community","district","hasBuildingSpecs","rooms","propOvervw","propertyImages","agents","agentObj","listingOfficeName","openHouses","hasFlyer","flyerUrl","buildingAge","numBeds","fullBaths","halfBaths","propDir","foundation","roof","externalFinish","flooring","garageDetails","inclusions","exclusions","hasLatitudeLongitude","postalCode","expireDate","expireDateStr","firmDateAsStr","timeInMilisec","getTime","daysBetweenDates","ceil","brokerage","listingOfficeId","elemSchool","elemSchoolFr","midSchool","midSchoolFr","highSchool","highSchoolFr","condoFee","newConstruction","msg","setPrototypeOf","UnauthorizedError","apiClient","token","getSoldPoints","getListingsDetail","Auth","getAccessToken","Authorization","getParcelData","addFavouriteId","post","getFavouriteSettings","getFavourites","removeFavourite","delete","setFavouriteNotifications","isOnBool","put","isNotifyOn","getFilterData","saveFilterData","deleteFilterData","filterId","requestViewing","remapViewModel","SET_SELECTED_LISTING","SET_SELECTED_LISTING_DETAIL","SET_LISTINGS_IN_MAP_BOUNDS","multiListingSelectedViaMap","context","singleListingSelectedViaMap","setSelectedListing","commit","rootState","setListingsInMapBounds","getListingDetails","RemaxService","listingTimestamp","listingDetailFetchStart","listingDetailFetchComplete","listingDetailFetchError","showListingDialog","showListingDialogPhotos","showBookViewingDialog","goToListing","popupSingleListing","closePopups","initRequestViewing","vm","SET_HEAT_LAYERS_INIT","isInit","SET_CRIME_LAYERS_INIT","SET_HEATMAP_DATA","SET_SELECTED_CRIME","crime","initHeatmapLayer","initCrimeLayer","heatmapDataLoaded","changeSelectedCrime","clearSelectedCrime","showCrimeDialog","savedFilterProps","Filter","mdid","notifications","toJson","multipolygon","SET_ACTIVE_FILTER","SET_PRICE","priceMinMax","set","SET_BEDS","bedsMinMax","SET_BATHS","bathsMinMax","SET_MLA","mlaMinMax","SET_TLA","tlaMinMax","SET_LOT","lotMinMax","SET_AGE","ageMinMax","SET_STATUS","SET_CLASS","classes","SET_TYPE","types","SET_STYLE","styles","SET_HEAT","heat","SET_GARAGE","SET_WATERFRONT","SET_SPATIAL_FILTER","SET_SCHOOL_CATCHMENT_ID","CLEAR_ACTIVE_FILTER","SET_FILTER_COUNT","SET_SAVED_FILTERS","ADD_SAVED_FILTER","REMOVE_SAVED_FILTER","savedFilter","SET_FILTER_LOADING","isLoading","filterChanged","clearFilters","showFilterSaveDialog","showFilterManager","hideFilterManager","setPriceMin","setPriceMax","setBedsMin","bedsMin","setBedsMax","bedsMax","setBaths","setMla","setTla","setLot","setAge","setStatus","setGarage","setWaterfront","setClass","setType","setStyle","setHeat","setSpatialFilter","setSchoolCatchmentId","saveActiveFilter","newPoly","coord","saveFilterSuccess","setActiveFilter","clearActiveFilter","setFilterNumber","multiPolygon","removeSavedFilter","restoreFilter","savedfilter","parcelDetail","pvsHistoricListings","historicListing","SET_SELECTED_PARCEL","parcel","SET_SELECTED_PARCEL_DETAIL","setSelectedParcel","setSelectedParcelDetail","parcelDataError","showParcelDialog","goToParcel","favProps","SET_FAV_IDS","favIds","ADD_FAV_ID","REMOVE_FAV_ID","SET_FAVOURITES","favs","ADD_FAVOURITE","REMOVE_FAVOURITE","favourite","CLEAR_FAVOURITES","SET_FAV_NOTIFICATIONS","isOn","allFavs","sort","localFavsCopy","favId","getFavoriteData","favList","previewImage","numTotalBaths","favouriteAdd","favouriteRemove","sendListingEvent","eventCategory","eventAction","eventLabel","sendBasemapEvent","sendOpsLayerEvent","sendWalkabilityEvent","sendFilterEvent","sendDetailsEvent","vuexLocal","storage","localStorage","reducer","isMobileBannerDismissed","SET_MAP","SET_LEFT_DRAWER_OPEN","isOpen","SET_ZOOM","SET_MAP_CENTER","SET_WALKABILITY_HELP","SET_IS_LOGGED_IN","SET_DISABLE_MAP_CLICK","isDisabled","SET_DISMISS_MOBILE_BANNER","isDismissed","setMap","setLeftDrawerOpen","setIsLoggedIn","showLoginDialog","login","logout","setZoom","goToLatLon","parcelClick","mapMoveEnd","notify","setWalkabilityHelp","showHelp","showLightBox","showShareDialog","showLoginPromptDialog","promptContent","showRequestSuccess","showRequestError","setMarkerLocation","disableMapClick","enableMapClick","dismissMobleBanner","plugin","configStore","listingStore","layerStore","filterStore","parcelStore","favStore","analytics","analyticsStore","tenantName","b2cPolicies","names","signUpSignIn","resetPassword","authorities","authority","authorityDomain","msalConfig","auth","clientId","knownAuthorities","redirectUri","cache","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","containsPii","Info","Verbose","Warning","scopes","loginRequest","tokenRequest","forceRefresh","buildResetRoute","URL","searchParams","append","toUpperCase","accountId","myMSALObj","PublicClientApplication","handleRedirectPromise","idTokenClaims","tfp","handleResponse","acr","setAccessToken","account","homeAccountId","username","store","currentAccounts","getAllAccounts","accounts","includes","iss","aud","every","localAccountId","loginRedirect","logoutRequest","postLogoutRedirectUri","logoutRedirect","checkToken","currentAccount","getAccountByHomeId","silentRequest","loginHint","acquireTokenSilent","InteractionRequiredAuthError","tokenResponse","checkAccount","onShowLightBox","lightbox","showImage","media","slides","removeMapPostfixToImage","thumb","src","slide","RemaxToolbar","Drawer","PopupMultiListing","PopupParcel","PopupSingleListing","FilterDialog","ListingDetailsDialog","LoginPromptDialog","CrimePanel","ParcelDetailsDialog","BookViewingDialog","LayerManager","FavouriteManager","ShareDialog","FilterManager","FilterManageButton","MeasureTool","GeoLocation","WalkTimes","LightBox","FilterSaveDialog","TryMobileBanner","QLayout","QPageContainer","QFooter","routes","path","Default","router","base","Vue","Quasar","Dialog","Notify","iconSet","Icon","_getIconUrl","mergeOptions","iconRetinaUrl","shadowUrl","productionTip","h","App","$mount"],"mappings":"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","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemographicsPanel.vue?vue&type=style&index=0&id=410fb8ca&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemographicsPanel.vue?vue&type=style&index=0&id=410fb8ca&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSaveDialog.vue?vue&type=style&index=0&id=9d76bd88&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSaveDialog.vue?vue&type=style&index=0&id=9d76bd88&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WalkTimes.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WalkTimes.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParcelDetailsDialog.vue?vue&type=style&index=0&id=acbded52&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParcelDetailsDialog.vue?vue&type=style&index=0&id=acbded52&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterDialog.vue?vue&type=style&index=0&id=f252beba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterDialog.vue?vue&type=style&index=0&id=f252beba&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HRMDataInfo.vue?vue&type=style&index=0&id=9f14ea9e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HRMDataInfo.vue?vue&type=style&index=0&id=9f14ea9e&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoLocation.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoLocation.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMapPanel.vue?vue&type=style&index=0&id=60ced04d&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMapPanel.vue?vue&type=style&index=0&id=60ced04d&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingDetailsDialog.vue?vue&type=style&index=0&id=b6cbf3a4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingDetailsDialog.vue?vue&type=style&index=0&id=b6cbf3a4&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupMultiListing.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupMultiListing.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=style&index=1&id=9d37243c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=style&index=1&id=9d37243c&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=style&index=0&id=2cf10559&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=style&index=0&id=2cf10559&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drawer.vue?vue&type=style&index=0&id=6f9e9400&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drawer.vue?vue&type=style&index=0&id=6f9e9400&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavouriteManager.vue?vue&type=style&index=0&id=1c85a7c6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavouriteManager.vue?vue&type=style&index=0&id=1c85a7c6&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=style&index=1&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=style&index=1&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeafletMap.vue?vue&type=style&index=1&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeafletMap.vue?vue&type=style&index=1&lang=css&\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"46785\";","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupMultiListing.vue?vue&type=style&index=1&id=e7fb0aa0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupMultiListing.vue?vue&type=style&index=1&id=e7fb0aa0&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupSingleListing.vue?vue&type=style&index=1&id=04fc671b&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupSingleListing.vue?vue&type=style&index=1&id=04fc671b&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmbeddedLeafletMap.vue?vue&type=style&index=0&id=35c2b9f6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmbeddedLeafletMap.vue?vue&type=style&index=0&id=35c2b9f6&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchManager.vue?vue&type=style&index=0&id=355001ca&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchManager.vue?vue&type=style&index=0&id=355001ca&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingFilter.vue?vue&type=style&index=0&id=9f5c4b1a&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingFilter.vue?vue&type=style&index=0&id=9f5c4b1a&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupParcel.vue?vue&type=style&index=0&id=9426ec76&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupParcel.vue?vue&type=style&index=0&id=9426ec76&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayerManager.vue?vue&type=style&index=0&id=7f931dfd&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayerManager.vue?vue&type=style&index=0&id=7f931dfd&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManager.vue?vue&type=style&index=0&id=62196442&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManager.vue?vue&type=style&index=0&id=62196442&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupSingleListing.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupSingleListing.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TaxesPanel.vue?vue&type=style&index=0&id=6fdc357d&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TaxesPanel.vue?vue&type=style&index=0&id=6fdc357d&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeafletMap.vue?vue&type=style&index=0&id=13264f32&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeafletMap.vue?vue&type=style&index=0&id=13264f32&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingTable.vue?vue&type=style&index=0&id=0613b33b&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingTable.vue?vue&type=style&index=0&id=0613b33b&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingTable.vue?vue&type=style&index=1&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingTable.vue?vue&type=style&index=1&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrimePanel.vue?vue&type=style&index=0&id=5cb35858&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrimePanel.vue?vue&type=style&index=0&id=5cb35858&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManageButton.vue?vue&type=style&index=0&id=7b871776&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManageButton.vue?vue&type=style&index=0&id=7b871776&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoPanel.vue?vue&type=style&index=0&id=a6b8049c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoPanel.vue?vue&type=style&index=0&id=a6b8049c&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginRequiredPanel.vue?vue&type=style&index=0&id=e23491dc&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginRequiredPanel.vue?vue&type=style&index=0&id=e23491dc&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbar.vue?vue&type=style&index=0&id=44d10c82&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbar.vue?vue&type=style&index=0&id=44d10c82&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BookViewingDialog.vue?vue&type=style&index=0&id=656fa9c8&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BookViewingDialog.vue?vue&type=style&index=0&id=656fa9c8&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=306308dc&\"\nvar script = {}\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-layout',{attrs:{\"view\":\"hHh LpR fFf\"}},[_c('RemaxToolbar',{staticClass:\"disable-zoom\"}),_c('Drawer',{staticClass:\"gt-sm\"}),_c('q-page-container',{staticStyle:{\"padding-bottom\":\"0px\"}},[_c('LightBox',{ref:\"lightbox\",class:_vm.IsLightBoxOn? 'vue-lb-container' : '',attrs:{\"media\":_vm.lbMedia,\"showLightBox\":false,\"lengthToLoadMore\":2,\"showThumbs\":true},on:{\"onClosed\":_vm.onClose}}),_c('FilterDialog'),_c('FilterSaveDialog'),_c('ListingDetailsDialog',{staticClass:\"disable-zoom\"}),_c('LoginPromptDialog'),_c('CrimePanel'),_c('ParcelDetailsDialog'),_c('BookViewingDialog'),_c('LayerManager'),_c('FavouriteManager'),_c('ShareDialog'),_c('FilterManager'),_c('FilterManageButton'),_c('MeasureTool'),_c('PopupMultiListing'),_c('PopupParcel'),_c('PopupSingleListing'),_c('GeoLocation'),_c('WalkTimes'),_c('Map'),_c('div',{attrs:{\"id\":\"loader-wrapper\"}},[_c('div',{attrs:{\"id\":\"loader\"}})])],1),_c('q-footer',{staticClass:\"mobile-footer disable-zoom\"},[(_vm.showTryMobileBanner)?_c('TryMobileBanner'):_vm._e(),_c('ListingFilter')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-header',{staticClass:\"bg-light disable-zoom\",attrs:{\"elevated\":\"\"}},[_c('q-toolbar',{staticClass:\"bg-light text-dark-grey\"},[_c('a',{attrs:{\"href\":\"/\"}},[_c('img',{attrs:{\"alt\":\"RE/MAX nova\",\"height\":\"40\",\"src\":\"https://data.remaxnova.com/propimages/map/logos/logo_main.png\"}})]),_c('q-space'),_c('RemaxToolbarActions')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.isMobile)?_c('q-btn-dropdown',{staticClass:\"desktop-action\",attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"BUY\",\"no-caps\":\"\"}},[_c('q-list',[_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/openhouses')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Open Houses\")])],1)],1)],1)],1):_vm._e(),(!_vm.isMobile)?_c('q-btn',{staticClass:\"desktop-action\",attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"SELL\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/sell/what-is-my-home-worth')}}}):_vm._e(),(!_vm.isMobile)?_c('q-btn-dropdown',{staticClass:\"desktop-action\",attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"AFFILIATES\",\"no-caps\":\"\"}},[_c('q-list',[_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/team/brokers/rhonda-lorimer-0')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Mortgage\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/team/affiliates')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Preferred Affiliates\")])],1)],1)],1)],1):_vm._e(),(!_vm.isMobile)?_c('q-btn',{staticClass:\"desktop-action\",attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"REALTORS®\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/team')}}}):_vm._e(),(!_vm.isMobile)?_c('q-btn',{staticClass:\"desktop-action\",attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"CAREERS\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.externalLink('https://join.remaxnova.com/')}}}):_vm._e(),(!_vm.isMobile)?_c('q-btn',{staticClass:\"desktop-action\",attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"BLOG\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/blog')}}}):_vm._e(),(!_vm.isMobile)?_c('q-btn-dropdown',{staticClass:\"desktop-action\",attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"ABOUT\",\"no-caps\":\"\"}},[_c('q-list',[_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/contact')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Contact Us\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/remax-nova')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"RE/MAX Nova\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/privacy-policy')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Privacy Policy\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/terms-of-use')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Terms of Use\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/disclaimer')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Disclaimer\")])],1)],1)],1)],1):_vm._e(),(!_vm.isMobile)?_c('q-btn',{staticClass:\"desktop-action btn-blue-brand\",attrs:{\"flat\":\"\",\"dense\":\"\",\"icon\":_vm.isLoggedIn ? 'fas fa-sign-in': 'fas fa-sign-out',\"label\":_vm.isLoggedIn ? 'Sign Out': 'Sign In'},on:{\"click\":_vm.onSignInOrOut}}):_vm._e(),(_vm.isMobile)?_c('q-btn',{staticClass:\"mobile-action\",attrs:{\"round\":\"\",\"flat\":\"\",\"icon\":\"fas fa-bars\"}},[_c('q-menu',[_c('q-list',[_c('q-item',{attrs:{\"clickable\":\"\"}},[_c('q-item-section',[_c('q-btn-dropdown',{attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"Buy\"}},[_c('q-list',[_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/openhouses')}}},[_c('q-item-section',[_c('q-item-label',{attrs:{\"no-caps\":\"\"}},[_vm._v(\"Open Houses\")])],1)],1)],1)],1)],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"}},[_c('q-item-section',{staticClass:\"caps\"},[_c('q-btn',{attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"Sell\"},on:{\"click\":function($event){return _vm.externalLink('/sell/what-is-my-home-worth')}}})],1)],1),_c('q-item',{attrs:{\"clickable\":\"\"}},[_c('q-item-section',[_c('q-btn-dropdown',{attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"Affiliates\"}},[_c('q-list',[_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/team/brokers/rhonda-lorimer-0')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"Mortgage\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/team/affiliates')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"Preferred Affiliates\")])],1)],1)],1)],1)],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"}},[_c('q-item-section',{staticClass:\"caps\"},[_c('q-btn',{attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"REALTORS®\"},on:{\"click\":function($event){return _vm.externalLink('/team')}}})],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"}},[_c('q-item-section',{staticClass:\"caps\"},[_c('q-btn',{attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"CAREERS\"},on:{\"click\":function($event){return _vm.externalLink('https://join.remaxnova.com/')}}})],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"}},[_c('q-item-section',{staticClass:\"caps\"},[_c('q-btn',{attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"Blog\"},on:{\"click\":function($event){return _vm.externalLink('/blog')}}})],1)],1),_c('q-item',{attrs:{\"clickable\":\"\"}},[_c('q-item-section',[_c('q-btn-dropdown',{attrs:{\"stretch\":\"\",\"flat\":\"\",\"label\":\"About\"}},[_c('q-list',[_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/contact')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"Contact Us\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/remax-nova')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"RE/MAX Nova\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/remax')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"RE/MAX\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/privacy-policy')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"Privacy Policy\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/terms-of-use')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"Terms of Use\")])],1)],1),_c('q-item',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.externalLink('/about/disclaimer')}}},[_c('q-item-section',[_c('q-item-label',{staticClass:\"caps\"},[_vm._v(\"Disclaimer\")])],1)],1)],1)],1)],1)],1),_c('q-item',{attrs:{\"clickable\":\"\"}},[_c('q-item-section',[_c('q-btn',{staticClass:\" btn-blue-brand\",attrs:{\"flat\":\"\",\"dense\":\"\",\"icon\":_vm.isLoggedIn ? 'fas fa-sign-in': 'fas fa-sign-out',\"label\":_vm.isLoggedIn ? 'Sign Out': 'Sign In'},on:{\"click\":_vm.onSignInOrOut}})],1)],1)],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class RemaxToolbarActions extends Vue {\r\n\r\n    public widthThresholdValue: number = 825;\r\n    public heightThresholdValue: number = 400;\r\n\r\n    get isLoggedIn(): boolean {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    public externalLink(url: string) {\r\n        window.location.href = url;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    public onSignInOrOut() {\r\n        if (this.isLoggedIn) {\r\n                this.$q.dialog({\r\n                    title: '',\r\n                    message: 'Are you sure you want to sign out?',\r\n                    cancel: true,\r\n                    persistent: true,\r\n                }).onOk(() => {\r\n                    // console.log('>>>> OK')\r\n                    this.$store.dispatch('logout');\r\n                }).onCancel(() => {\r\n                    // console.log('>>>> Cancel')\r\n                }).onDismiss(() => {\r\n                    // console.log('I am triggered on both OK and Cancel')\r\n                });\r\n        } else {\r\n            this.$store.dispatch('login');\r\n        }\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbarActions.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbarActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RemaxToolbarActions.vue?vue&type=template&id=60e216ff&scoped=true&\"\nimport script from \"./RemaxToolbarActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./RemaxToolbarActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RemaxToolbarActions.vue?vue&type=style&index=0&id=60e216ff&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  \"60e216ff\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtnDropdown,QList,QItem,QItemSection,QItemLabel,QBtn,QMenu,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtnDropdown,QList,QItem,QItemSection,QItemLabel,QBtn,QMenu})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport RemaxToolbarActions from '@/components/RemaxToolbarActions.vue';\r\n\r\n@Component({\r\n    components: {\r\n        RemaxToolbarActions,\r\n    },\r\n})\r\nexport default class RemaxToolbar extends Vue {\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbar.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RemaxToolbar.vue?vue&type=template&id=44d10c82&scoped=true&\"\nimport script from \"./RemaxToolbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./RemaxToolbar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RemaxToolbar.vue?vue&type=style&index=0&id=44d10c82&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  \"44d10c82\",\n  null\n  \n)\n\nexport default component.exports\nimport {QHeader,QToolbar,QSpace} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QHeader,QToolbar,QSpace})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-drawer',{attrs:{\"bordered\":\"\",\"content-class\":\"bg-grey-2\",\"width\":_vm.shouldShowDrawer ? 360 : 0},on:{\"hide\":function($event){return _vm.refreshMap()}},model:{value:(_vm.leftDrawerOpen),callback:function ($$v) {_vm.leftDrawerOpen=$$v},expression:\"leftDrawerOpen\"}},[_c('q-scroll-area',{staticClass:\"absolute-full\",staticStyle:{\"height\":\"calc(100% - 0px)\",\"margin-top\":\"0px\"},attrs:{\"visible\":false}},[_c('ListingTable')],1),_c('div',{staticClass:\"absolute btn-expand\"},[_c('q-btn',{attrs:{\"dense\":\"\",\"color\":\"white\",\"text-color\":\"black\",\"icon\":_vm.leftDrawerOpen ? 'fas fa-arrow-to-left' : 'fas fa-arrow-to-right'},on:{\"click\":function($event){return _vm.toggleDrawer()}}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.isMobile)?_c('div',{staticClass:\"row over-map-left\"},[_c('q-btn',{staticClass:\"q-ml-xs q-pr-xs btn-blue-brand filter-btn\",attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.showFilterDialog()}}},[_c('i',{staticClass:\"q-px-xs fas fa-filter\",staticStyle:{\"font-size\":\"1.3em\"}}),_vm._v(\"Filters \"),(_vm.filterCount && _vm.filterCount > 0)?_c('q-badge',{staticClass:\"badge-text bg-red-brand\",attrs:{\"floating\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.filterCount)+\" \")]):_vm._e()],1),(_vm.filterCount && _vm.filterCount > 0)?_c('q-btn',{staticClass:\"filter-btn q-ml-xs q-pr-xs btn-blue-brand\",attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onClearAll()}}},[_c('i',{staticClass:\"q-px-xs fas fa-times-square\",staticStyle:{\"font-size\":\"1.4em\"}}),_vm._v(\"Clear \")]):_vm._e(),_c('q-space'),_c('q-btn',{staticClass:\"filter-btn q-ml-xs q-pr-xs btn-blue-brand\",attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onSave()}}},[_c('i',{staticClass:\"q-px-xs fas fa-save\",staticStyle:{\"font-size\":\"1.4em\"}}),_vm._v(\"Save \")])],1):_c('q-toolbar',{staticClass:\"bg-grey-4 text-blue-brand mobile-footy\"},[_c('q-btn',{staticClass:\"q-ml-xs q-pr-xs btn-blue-brand filter-btn\",attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.showFilterDialog()}}},[_c('i',{staticClass:\"q-px-xs fas fa-filter\",staticStyle:{\"font-size\":\"1.3em\"}}),_vm._v(\"Filters \"),(_vm.filterCount && _vm.filterCount > 0)?_c('q-badge',{staticClass:\"badge-text bg-red-brand\",attrs:{\"floating\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.filterCount)+\" \")]):_vm._e()],1),(_vm.filterCount && _vm.filterCount > 0)?_c('q-btn',{staticClass:\"filter-btn q-ml-xs q-pr-xs btn-blue-brand\",attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onClearAll()}}},[_c('i',{staticClass:\"q-px-xs fas fa-times-square\",staticStyle:{\"font-size\":\"1.4em\"}}),_vm._v(\"Clear \")]):_vm._e(),_c('q-space'),_c('q-btn',{staticClass:\"filter-btn q-ml-xs q-pr-xs btn-blue-brand\",attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onSave()}}},[_c('i',{staticClass:\"q-px-xs fas fa-save\",staticStyle:{\"font-size\":\"1.4em\"}}),_vm._v(\"Save \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { Filter } from '@/models/Filter';\r\n\r\n@Component\r\nexport default class ListingFilter extends Vue {\r\n\r\n    public widthThresholdValue: number = 1200;\r\n    public heightThresholdValue: number = 415;\r\n\r\n    get activeFilter(): Filter | null {\r\n        return this.$store.state.filters.activeFilter;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get isLoggedIn(): boolean {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get savedFilters() {\r\n        return this.$store.state.filters.savedFilters;\r\n    }\r\n\r\n    get filterCount() {\r\n        return this.$store.state.filters.filterCount;\r\n    }\r\n\r\n     get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    public onSave() {\r\n        if (!this.isLoggedIn) {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to save filters.');\r\n        } else {\r\n            this.$store.dispatch('showFilterSaveDialog');\r\n        }\r\n    }\r\n\r\n    public onClearAll() {\r\n        this.$store.dispatch('clearActiveFilter');\r\n    }\r\n\r\n    public showFilterDialog() {\r\n        console.log('showFilterDialog');\r\n        this.$store.dispatch('showFilterDialog');\r\n    }\r\n\r\n    public mounted() {\r\n        console.log('ListingFilter: mounted()');\r\n        console.log(this.activeFilter);\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingFilter.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingFilter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListingFilter.vue?vue&type=template&id=9f5c4b1a&scoped=true&\"\nimport script from \"./ListingFilter.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListingFilter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ListingFilter.vue?vue&type=style&index=0&id=9f5c4b1a&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  \"9f5c4b1a\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtn,QBadge,QSpace,QToolbar} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtn,QBadge,QSpace,QToolbar})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fill-area\"},[(_vm.zoom >= 13)?_c('q-table',{staticClass:\"sticky-header\",staticStyle:{\"height\":\"calc(100vh - 50px)\",\"background\":\"linear-gradient(45deg,#e8e8e8, transparent)\"},attrs:{\"data\":_vm.leftDrawerOpen ? _vm.listingsInMapBounds : [],\"columns\":_vm.columns,\"title\":\"\",\"row-key\":\"objectid\",\"square\":\"\",\"pagination\":_vm.initialPagination,\"no-data-label\":\"No listings in current map view\",\"hide-header\":\"\"},scopedSlots:_vm._u([{key:\"body-cell-picture\",fn:function(props){return [_c('q-td',{staticClass:\"td-picture\",staticStyle:{\"background-color\":\"white\"},attrs:{\"props\":props},on:{\"click\":function($event){return _vm.onShowGallery(props.row)}}},[(props.row.pi)?_c('img',{staticClass:\"table-image\",attrs:{\"src\":_vm.getPictureUri(props.row.pi),\"alt\":'MLS#:'+props.row.sid}}):_c('span',[_vm._v(\"No pic\")]),_c('div',{staticClass:\"status-overlay\",class:_vm.listingStatusClass(props.row)},[_vm._v(_vm._s(_vm.listingStatus(props.row)))])])]}},{key:\"body-cell-info\",fn:function(props){return [_c('q-td',{staticClass:\"td-info\",staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"2rem\",\"background-color\":\"white\"},attrs:{\"props\":props}},[_c('div',{on:{\"click\":function($event){return _vm.onSelectListing(props.row)}}},[_c('div',{staticClass:\"table-text\"},[_c('q-icon',{staticClass:\"q-mr-xs iconMargin\",attrs:{\"name\":\"fas fa-dollar-sign fa-fw fa-fh\"}}),_c('span',[_vm._v(\" \"+_vm._s(_vm.priceShortened(props.row.lpmn)))])],1),_c('div',{staticClass:\"table-text\"},[_c('span',[_c('q-icon',{staticClass:\"q-mr-xs iconMargin\",attrs:{\"name\":\"fas fa-bed fa-fw\"}}),_vm._v(\" \"+_vm._s(props.row.bdmn))],1)]),_c('div',{staticClass:\"table-text\"},[_c('q-icon',{staticClass:\"q-mr-xs q-pb-sm\",attrs:{\"name\":\"fas fa-bath fa-fw\"}}),_vm._v(\" \"+_vm._s(props.row.bhmn))],1),_c('div',{staticClass:\"table-text\"},[_c('q-icon',{staticClass:\"q-mr-xs q-pb-sm\",attrs:{\"name\":\"fas fa-calendar-alt fa-fw\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.daysOnMarket(props.row))),_c('span',{staticClass:\"domText\"},[_vm._v(\"days on market\")])])],1)]),_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"10px\",\"right\":\"10px\"}},[_c('q-btn',{staticClass:\"q-pa-none q-mb-sm\",staticStyle:{\"background\":\"transparent\",\"color\":\"white\",\"float\":\"right\"},attrs:{\"padding\":\"none\",\"round\":\"\",\"flat\":\"\"},on:{\"click\":function($event){return _vm.onToggleFavorite(props.row)}}},[_c('q-icon',{staticClass:\"q-pb-none q-px-none\",staticStyle:{\"background\":\"rgba(255,255,255,0.0)\"},attrs:{\"name\":_vm.isFavourite(props.row) ? 'fas fa-heart fa-fw' : 'fal fa-heart fa-fw',\"color\":\"red-brand\"}})],1),_c('br'),_c('q-btn',{staticClass:\"q-pa-none q-mb-xl \",staticStyle:{\"background\":\"transparent\",\"color\":\"white\",\"float\":\"right\",\"top\":\"-15px\"},attrs:{\"padding\":\"none\",\"round\":\"\",\"flat\":\"\",\"size\":\"md\"},on:{\"click\":function($event){return _vm.onGoToListing(props.row.sid)}}},[_c('q-tooltip',[_vm._v(\" Show on map \")]),_c('q-icon',{staticClass:\"q-pb-none q-px-none\",staticStyle:{\"background\":\"rgba(255,355,255,0.0)\"},attrs:{\"name\":\"fas fa-map-pin fa-fw\",\"color\":\"blue-brand\"}})],1)],1)])]}}],null,false,3474151575)}):_c('div',{staticClass:\"q-pa-md text-h6\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-search-plus\"}}),_vm._v(\" Zoom in to enable listings table \")],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// TODO i don't know what these mean yet\r\nexport interface IListing {\r\n    objectId: number;\r\n    ad: string;\r\n    bdmn: number; // bedroom\r\n    bhmn: number; // bathroom\r\n    br: string;\r\n    cl: number;\r\n    cm: string;\r\n    fd: number;\r\n    ld: number;\r\n    lls: string;\r\n    lpmn: number;\r\n    md: string | null;\r\n    ml: string | null;\r\n    mlan: number;\r\n    mli: string | null;\r\n    pc: string;\r\n    pi: string;\r\n    pid: string;\r\n    sid: number;\r\n    sp: number;\r\n    st: string;\r\n    tlan: number;\r\n    geometry?: any; // not sure if this is esri geometry?\r\n    viewDetailsInProgress?: boolean; // only used in multi listing popup\r\n    viewPhotosInProgress?: boolean; // only used in multi listing popup\r\n    ht?: string; // heat: only in multilistings\r\n    ga?: number; // garage: only in multilistings\r\n    wf?: number; // waterfront: only in multilistings\r\n    yb?: number; // age: only in multilistings\r\n}\r\n\r\nexport class Listing implements IListing {\r\n    public objectId = -1;\r\n    public ad = '';\r\n    public bdmn = -1;\r\n    public bhmn = -1;\r\n    public br = '';\r\n    public cl = -1;\r\n    public cm = '';\r\n    public fd = -1;\r\n    public ld = -1;\r\n    public lls = '';\r\n    public lpmn = -1;\r\n    public md = null;\r\n    public ml = null;\r\n    public mlan = -1;\r\n    public mli = null;\r\n    public pc = '';\r\n    public pi = '';\r\n    public pid = '';\r\n    public sid = -1;\r\n    public sp = -1;\r\n    public st = '';\r\n    public tlan = -1;\r\n    public geometry = null;\r\n    public viewDetailsInProgress?: boolean;\r\n    public viewPhotosInProgress?: boolean;\r\n    public ht = undefined;\r\n    public ga = undefined;\r\n    public wf = undefined;\r\n    public yb = undefined;\r\n    constructor(\r\n        featureProperties: any,\r\n        featureGeometry?: any,\r\n    ) {\r\n        this.objectId = featureProperties.OBJECTID;\r\n        this.ad = featureProperties.ad;\r\n        this.bdmn = featureProperties.bdmn;\r\n        this.bhmn = featureProperties.bhmn;\r\n        this.br = featureProperties.br;\r\n        this.cl = featureProperties.cl;\r\n        this.cm = featureProperties.cm;\r\n        this.fd = featureProperties.fd;\r\n        this.ld = featureProperties.ld;\r\n        this.lls = featureProperties.lls;\r\n        this.lpmn = featureProperties.lpmn;\r\n        this.md = featureProperties.md;\r\n        this.ml = featureProperties.ml;\r\n        this.mlan = featureProperties.mlan;\r\n        this.mli = featureProperties.mli;\r\n        this.pc = featureProperties.pc;\r\n        this.pi = featureProperties.pi;\r\n        this.pid = featureProperties.pid;\r\n        this.sid = featureProperties.sid;\r\n        this.sp = featureProperties.sp;\r\n        this.st = featureProperties.st;\r\n        this.tlan = featureProperties.tlan;\r\n        this.ht = featureProperties.ht;\r\n        this.ga = featureProperties.ga;\r\n        this.wf = featureProperties.wf;\r\n        this.yb = featureProperties.yb;\r\n        this.geometry = featureGeometry;\r\n    }\r\n}\r\n\r\n","\r\nexport default class Defs {\r\n    public static ANALYTICS_LISTING_MAPCLICK: string = 'MapClick';\r\n    public static ANALYTICS_LISTING_TABLECLICK: string = 'TableClick';\r\n    public static ANALYTICS_LISTING_VIEWDETAILS: string = 'ViewDetails';\r\n    public static ANALYTICS_OPSLAYER_CRIMEOFF: string = 'CrimeOff';\r\n    public static ANALYTICS_OPSLAYER_CRIMEON: string = 'CrimeOn';\r\n    public static ANALYTICS_OPSLAYER_CROWNLANDOFF: string = 'CrownLandOff';\r\n    public static ANALYTICS_OPSLAYER_CROWNLANDON: string = 'CrownLandOn';\r\n    public static ANALYTICS_OPSLAYER_HEATOFF: string = 'HeatOff';\r\n    public static ANALYTICS_OPSLAYER_HEATON: string = 'HeatOn';\r\n    public static ANALYTICS_OPSLAYER_LISTPNTSOFF: string = 'ListPntsOff';\r\n    public static ANALYTICS_OPSLAYER_LISTPNTSON: string = 'ListPntsOn';\r\n    public static ANALYTICS_DETAILS_PHOTOS: string = 'Photos';\r\n    public static ANALYTICS_DETAILS_HRM: string = 'HRM';\r\n    public static ANALYTICS_DETAILS_TAX: string = 'Tax';\r\n    public static ANALYTICS_DETAILS_HISTORY: string = 'History';\r\n    public static ANALYTICS_DETAILS_SCHOOLS: string = 'Schools';\r\n    public static ANALYTICS_DETAILS_DEMO: string = 'Demographics';\r\n    public static ANALYTICS_DETAILS_STREETVIEW: string = 'StreetView';\r\n\r\n    public static LISTING_NO_VALUE: string = 'n/a';\r\n    public static LISTING_NO_VALUE_NUM: number = 0;\r\n}\r\n","import { ListingDetail } from '@/models/ListingDetail';\r\nimport Defs from './Defs';\r\n\r\nexport default class ListingUtil {\r\n\r\n    public static getSqFootage(mainLivingArea: number | null) {\r\n        if (mainLivingArea === null) {\r\n            return Defs.LISTING_NO_VALUE_NUM;\r\n        }\r\n        return mainLivingArea;\r\n    }\r\n\r\n    public static getPriceShortened(price: number, isMulti: number) {\r\n        let lPriceStr = Defs.LISTING_NO_VALUE;\r\n        let lPrice = 0;\r\n        if (price === null) {\r\n            return Defs.LISTING_NO_VALUE;\r\n        }\r\n        if (price >= 1000 && price < 1000000) {\r\n            lPrice = Math.round(price / 1000) * 1000;\r\n            lPrice = lPrice / 1000;\r\n            if (isMulti === 1) {\r\n                lPriceStr = lPrice + 'K+';\r\n            } else {\r\n                lPriceStr = lPrice + 'K';\r\n            }\r\n        } else if (price >= 1000000) {\r\n            lPrice = Math.round(price / 100000) * 100000;\r\n            lPrice = lPrice / 1000000.0;\r\n            if (isMulti === 1) {\r\n                lPriceStr = lPrice + 'M+';\r\n            } else {\r\n                lPriceStr = lPrice + 'M';\r\n            }\r\n        } else {\r\n            if (isMulti === 1) {\r\n                lPriceStr = '<1K+';\r\n            } else {\r\n                lPriceStr = '<1K';\r\n            }\r\n        }\r\n        return lPriceStr;\r\n    }\r\n\r\n    public static getListingPriceBasedOnStatus(status: string, soldPrice: any, price: any, listClass: any, isLoggedIn: boolean) {\r\n\r\n        let lPrice = '';\r\n        if (status === '2' && soldPrice !== null && soldPrice !== 0) {\r\n            lPrice = ListingUtil.getFormatedPrice(soldPrice);\r\n        } else {\r\n            lPrice = ListingUtil.getFormatedPrice(price);\r\n        }\r\n\r\n\r\n        if (status !== '2' || (isLoggedIn && status === '2')) {\r\n            lPrice = this.getStatusAsString(status, listClass) + ' | ' + lPrice;\r\n        } else {\r\n            lPrice = this.getStatusAsString(status, listClass);\r\n        }\r\n\r\n        return lPrice;\r\n    }\r\n\r\n    public static getStatusAsString(status: string | null | undefined, classCode: number) {\r\n\r\n        if (status === null || status === undefined) {\r\n            return 'UNKNOWN';\r\n        }\r\n\r\n        if ((status === '1' || status === '1_0') && classCode === 2) {\r\n            return 'ACTIVE';\r\n        } else if (status === '1' || status === '1_0') {\r\n            return 'FOR SALE';\r\n        } else if (status === '2' || status === '2_0') {\r\n            return 'SOLD';\r\n        } else if (status === '3' || status === '3_0') {\r\n            return 'PENDING';\r\n        } else if (status === '4' || status === '4_0') {\r\n            return 'EXPIRED';\r\n        } else if (status === '5' || status === '5_0') {\r\n            return 'CANCELLED';\r\n        } else if (status === '5_1') {\r\n            return 'WITHDRAWN';\r\n        } else if (status === '6' || status === '6_0') {\r\n            return 'RENTED';\r\n        }\r\n        return 'UNKNOWN';\r\n    }\r\n\r\n    public static getDaysOnMarket(listDate: any, listStatus: any, firmDate: any) {\r\n\r\n        let lDays = null;\r\n        let lDaysOnMarket: string | number | null = '';\r\n        try {\r\n            if (listStatus === '2') {\r\n                lDaysOnMarket = this.date_diff_indays(listDate, firmDate);\r\n                lDays = lDaysOnMarket;\r\n            } else {\r\n                const now = new Date();\r\n                // now.format('m/dd/yy');\r\n                const nowStr = `${now.getMonth() + 1}/${now.getDate()}/${now.getFullYear()}`;\r\n                lDaysOnMarket = this.date_diff_indays(listDate, nowStr);\r\n                lDays = lDaysOnMarket;\r\n            }\r\n            if (lDays === null) {\r\n                return Defs.LISTING_NO_VALUE;\r\n            }\r\n            return lDays;\r\n        } catch (err) {\r\n            // Logger.writeLog(\"ERROR:getDaysOnMarker-\" + err.message);\r\n            console.log('ERROR:getDaysOnMarket-' + err.message);\r\n            return Defs.LISTING_NO_VALUE;\r\n        }\r\n    }\r\n\r\n    public static getFormatedPrice(listPrice: any) {\r\n\r\n        let lPrice: string = '';\r\n\r\n        if (listPrice === null || listPrice === undefined) {\r\n            return Defs.LISTING_NO_VALUE;\r\n        }\r\n\r\n        try {\r\n            if (typeof listPrice === 'string') {\r\n                listPrice = parseInt(listPrice, 10);\r\n            }\r\n\r\n            if (listPrice.toString().indexOf('$') !== -1) {\r\n                return listPrice;\r\n            }\r\n\r\n            lPrice = listPrice.toFixed(2).replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,');\r\n            lPrice = lPrice.substr(0, lPrice.length - 3);\r\n        } catch (err) {\r\n            // Logger.writeLog(\"ERROR:getFormatedPrice-\" + err.message);\r\n            console.log('ERROR:getFormatedPrice-' + err.message);\r\n            return Defs.LISTING_NO_VALUE;\r\n        }\r\n\r\n        return '$' + lPrice;\r\n    }\r\n\r\n    public static getListingFromResult(featureCollection: any, sysId: number) {\r\n        if (!featureCollection || featureCollection.features.length === 0) {\r\n            return null;\r\n        }\r\n\r\n        if (featureCollection.features.length === 1 && featureCollection.features[0].properties.ml === 0) {\r\n            return featureCollection.features[0];\r\n        }\r\n\r\n        for (let i = 0; i <  featureCollection.features.length; i++) {\r\n            const feature = featureCollection.features[i];\r\n            const featSysId = feature.properties.sid;\r\n            if (featSysId === sysId) {\r\n                return feature;\r\n            }\r\n            if (feature.properties.ml === 1) {\r\n                const lListingProps = this.getListingFromMultiListingSearchSelection(sysId, feature);\r\n                if (lListingProps !== null) {\r\n                    feature.properties = lListingProps;\r\n                    return feature;\r\n                }\r\n            }\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    public static getListingFromMultiListingSearchSelection(sysId: number, feature: any) {\r\n        const lListings = JSON.parse(feature.properties.md);\r\n        for (let i = 0; i < lListings.length; i++) {\r\n            if (lListings[i].sid === sysId) {\r\n                return lListings[i];\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    public static addMapPostfixToImage(imageUrlInit: string) {\r\n        if (imageUrlInit) {\r\n            const imageUrl = imageUrlInit.replace('.jpg', '_map.jpg');\r\n            return imageUrl;\r\n        } else {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    public static addTablePostfixToImage(imageUrlInit: string) {\r\n        const imageUrl = imageUrlInit.replace('.jpg', '_tb.jpg');\r\n        return imageUrl;\r\n    }\r\n\r\n    public static removeMapPostfixToImage(imageUrlInit: string) {\r\n        const imageUrl = imageUrlInit.replace('_map.jpg', '.jpg');\r\n        return imageUrl;\r\n    }\r\n\r\n    public static dashify(toBeDashified: string) {\r\n        const str = toBeDashified.toLowerCase()\r\n                .replaceAll(' ', '-')\r\n                .replaceAll('#', '-')\r\n                .replaceAll('`', '-')\r\n                .replaceAll(',', '-')\r\n                .replaceAll('/', '-')\r\n                .replaceAll('\\\\', '-')\r\n                .replaceAll('\\'', '-')\r\n                .replaceAll(':', '-')\r\n                .replaceAll('*', '-')\r\n                .replaceAll('?', '-')\r\n                .replaceAll('&', 'and')\r\n                .replaceAll('+', 'and')\r\n                .replaceAll('.', '-')\r\n                .replaceAll('\"', '-')\r\n                .replaceAll('!', '-')\r\n                .replaceAll('--', '-');\r\n\r\n        return str;\r\n    }\r\n\r\n    public static getListingUrl(baseURL: string, property: ListingDetail) {\r\n        const listingTypeURL = [baseURL,\r\n                              ListingUtil.getListingClassTypeURL(property.ClassCodeL),\r\n                              '/',\r\n                              ListingUtil.dashify(property.Community + ' real estate'),\r\n                               '/',\r\n                               null];\r\n\r\n        const address = property.Address + ' ' + ' ' + property.ListingService + ' ' + property.MlsNo;\r\n        listingTypeURL[5] = ListingUtil.dashify(address);\r\n\r\n        return listingTypeURL.join('');\r\n    }\r\n\r\n    public static getListingClassTypeURL(classCode: number) {\r\n        switch (classCode) {\r\n            case 1:\r\n                return 'residential';\r\n            case 2:\r\n                return 'commercial';\r\n            case 3:\r\n                return 'multi-family';\r\n            case 4:\r\n                return 'farm';\r\n            case 5:\r\n                return 'vacant-land';\r\n            default:\r\n                return 'other';\r\n        }\r\n    }\r\n\r\n    public static getParcelSizeAcres(sizeInFtSq: number) {\r\n        if (sizeInFtSq === null || sizeInFtSq === 0) {\r\n            return Defs.LISTING_NO_VALUE;\r\n        }\r\n\r\n        const sizeInAcres = sizeInFtSq / 43560;\r\n\r\n        return sizeInAcres.toFixed(1) + ' acres';\r\n\r\n    }\r\n\r\n\r\n    private static date_diff_indays(date1: string, date2: string) {\r\n        const dt1 = this._getDateFromUnknownStringFormat(date1);\r\n        const dt2 = this._getDateFromUnknownStringFormat(date2);\r\n        if (dt1 === null || dt2 === null) {\r\n            return null;\r\n        }\r\n        return Math.floor((Date.UTC(dt2.getFullYear(), dt2.getMonth(), dt2.getDate()) - Date.UTC(dt1.getFullYear(), dt1.getMonth(), dt1.getDate())) / (1000 * 60 * 60 * 24));\r\n    }\r\n\r\n    private static _getDateFromUnknownStringFormat(dateStr: string) {\r\n\r\n        let lDate: any = null;\r\n\r\n        // Try to parse in case epoch\r\n        const epoch = parseInt(dateStr, 10);\r\n\r\n        if (epoch < 946684800) { // before 2000-01-01 it was parsed incorectly so try to parse as string\r\n            lDate = new Date(dateStr);\r\n        } else {\r\n            lDate = new Date(epoch);\r\n        }\r\n\r\n        if (isNaN(lDate)) {\r\n            return null;\r\n        }\r\n\r\n        return lDate;\r\n    }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { Listing } from '../models/Listing';\r\nimport { Filter } from '../models/Filter';\r\nimport ListingUtil from '../utils/ListingUtil';\r\nimport Defs from '../utils/Defs';\r\n\r\n@Component\r\nexport default class ListingTable extends Vue {\r\n\r\n    get listingsInMapBounds(): Listing[] {\r\n        const listings: Listing[] = [];\r\n        const extraMultiListings: Listing[] = [];\r\n        if (this.$store.state.listings.listingsInMapBounds) {\r\n            for (const listing of this.$store.state.listings.listingsInMapBounds) {\r\n                if (listing.ml === 1) {\r\n                    const multiListings = JSON.parse(listing.md);\r\n                    for (let j = 0; j < multiListings.length; j++) {\r\n                        const multiListing = new Listing(multiListings[j]);\r\n                        if (this.isListingFilteredOut(multiListing)) {\r\n                            continue;\r\n                        }\r\n                        extraMultiListings.push(multiListing);\r\n                    }\r\n                } else {\r\n                    listings.push(listing);\r\n                }\r\n            }\r\n            return listings.concat(extraMultiListings);\r\n        }\r\n        return []; // table does not get inialized properly if data is null\r\n    }\r\n\r\n    get zoom(): number {\r\n        return this.$store.state.zoom;\r\n    }\r\n\r\n    get leftDrawerOpen(): boolean {\r\n        return this.$store.state.leftDrawerOpen;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get isLoggedIn() {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get activeFilter(): Filter {\r\n        return this.$store.state.filters.activeFilter;\r\n    }\r\n\r\n    get favouriteIds() {\r\n        return this.$store.state.favourites.favouriteIds;\r\n    }\r\n\r\n    public columns = [\r\n        {\r\n            name: 'picture',\r\n            required: true,\r\n            label: '',\r\n            align: 'left',\r\n            field: (row: Listing) => '', // see slot\r\n        },\r\n        {\r\n            name: 'info',\r\n            required: true,\r\n            label: '',\r\n            align: 'left',\r\n            field: (row: Listing) => '', // see slot\r\n        },\r\n    ];\r\n\r\n    public initialPagination = {\r\n        rowsPerPage: 15,\r\n    };\r\n\r\n    public getPictureUri(relativePath: string) {\r\n        relativePath = ListingUtil.addTablePostfixToImage(relativePath);\r\n        if (relativePath.indexOf(this.config.placeholdListingImg) !== -1) {\r\n            return relativePath;\r\n        }\r\n\r\n        return this.config.imageRoot + relativePath;\r\n    }\r\n\r\n    public priceShortened(price: number) {\r\n        return ListingUtil.getPriceShortened(price, 0);\r\n    }\r\n    public daysOnMarket(listing: Listing) {\r\n        return ListingUtil.getDaysOnMarket(listing.ld, listing.st, listing.fd);\r\n    }\r\n\r\n    public isListingFilteredOut(listing: Listing) {\r\n        if (this.activeFilter === null) {\r\n            return false;\r\n        }\r\n        // Status\r\n        if (this.activeFilter.Status.value !== null) {\r\n            let lIsMatch = false;\r\n            for (let x = 0; x < this.activeFilter.Status.value.length; x++) {\r\n                if (this.activeFilter.Status.value[x] === listing.st) {\r\n                    lIsMatch = true;\r\n                }\r\n            }\r\n            if (lIsMatch === false) {\r\n                return true;\r\n            }\r\n        }\r\n        // Class\r\n        if (this.activeFilter.Class.value !== null && this.activeFilter.Class.value.length > 0) {\r\n            let lIsMatch = false;\r\n            for (let i = 0; i < this.activeFilter.Class.value.length; i++) {\r\n                if (this.activeFilter.Class.value[i] === listing.cl) {\r\n                    lIsMatch = true;\r\n                }\r\n            }\r\n            if (lIsMatch === false) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        // Heat\r\n        if (this.activeFilter.HeatType.value !== null) {\r\n            if (listing.ht === null) {\r\n                return true;\r\n            }\r\n            let lIsMatch = false;\r\n            for (let i = 0; i < this.activeFilter.HeatType.value.length; i++) {\r\n                const listingHeat = listing.ht! as string;\r\n                if (-1 !== listingHeat.indexOf(this.activeFilter.HeatType.value[i])) {\r\n                    lIsMatch = true;\r\n                }\r\n            }\r\n            if (lIsMatch === false) {\r\n                return true;\r\n            }\r\n        }\r\n        // Garage\r\n        if (this.activeFilter.Garage.value !== null) {\r\n            if (this.activeFilter.Garage.value !== listing.ga) {\r\n                return true;\r\n            }\r\n        }\r\n        // Waterfront\r\n        if (this.activeFilter.Waterfront.value !== null) {\r\n            if (this.activeFilter.Waterfront.value !== listing.wf) {\r\n                return true;\r\n            }\r\n        }\r\n        // Price\r\n        if (this.activeFilter.Price.Min !== this.config.FilterOptions.PriceNoMinVal &&\r\n            listing.lpmn < this.activeFilter.Price.Min) {\r\n            return true;\r\n        }\r\n        if (this.activeFilter.Price.Max !== this.config.FilterOptions.PriceNoMaxVal &&\r\n            listing.lpmn > this.activeFilter.Price.Max) {\r\n            return true;\r\n        }\r\n        // Beds\r\n        if (this.activeFilter.Beds.Min !== this.config.FilterOptions.BedNoMinVal &&\r\n            listing.bdmn < this.activeFilter.Beds.Min) {\r\n            return true;\r\n        }\r\n        if (this.activeFilter.Beds.Max !== this.config.FilterOptions.BedNoMaxVal &&\r\n            listing.bdmn > this.activeFilter.Beds.Max) {\r\n            return true;\r\n        }\r\n        // Baths\r\n        if (this.activeFilter.Baths.Min !== this.config.FilterOptions.BathNoMinVal &&\r\n            listing.bhmn < this.activeFilter.Baths.Min) {\r\n            return true;\r\n        }\r\n        if (this.activeFilter.Baths.Max !== this.config.FilterOptions.BathNoMaxVal &&\r\n            listing.bhmn > this.activeFilter.Baths.Max) {\r\n            return true;\r\n        }\r\n        // Mla\r\n        if (this.activeFilter.Mla.Min !== this.config.FilterOptions.MlaNoMinVal &&\r\n            listing.mlan < this.activeFilter.Mla.Min) {\r\n            return true;\r\n        }\r\n        if (this.activeFilter.Mla.Max !== this.config.FilterOptions.MlaNoMaxVal &&\r\n            listing.mlan > this.activeFilter.Mla.Max) {\r\n            return true;\r\n        }\r\n        // Tla\r\n        if (this.activeFilter.Tla.Min !== this.config.FilterOptions.TlaNoMinVal &&\r\n            listing.tlan < this.activeFilter.Tla.Min) {\r\n            return true;\r\n        }\r\n        if (this.activeFilter.Tla.Max !== this.config.FilterOptions.TlaNoMaxVal &&\r\n            listing.tlan > this.activeFilter.Tla.Max) {\r\n            return true;\r\n        }\r\n        // Ageto\r\n        if (this.activeFilter.Age.Min !== this.config.FilterOptions.AgeNoMinVal && listing.yb! < this.activeFilter.Age.Min) {\r\n            return true;\r\n        }\r\n        if (this.activeFilter.Age.Max !== this.config.FilterOptions.AgeNoMaxVal && listing.yb! > this.activeFilter.Age.Max) {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    public listingStatusClass(listing: Listing) {\r\n        const status = listing!.st;\r\n        if (status === '1' || status === '1_0') {\r\n            return 'listTblPrice_FORSALE';\r\n        } else if (status === '2' || status === '2_0') {\r\n            return 'listTblPrice_SOLD';\r\n        } else if (status === '3' || status === '3_0') {\r\n            return 'listTblPrice_PEND';\r\n        }\r\n        return 'listTblPrice_NOSTATUS';\r\n    }\r\n\r\n    public listingStatus(listing: Listing) {\r\n        const status = listing!.st;\r\n        if (status === '1' || status === '1_0') {\r\n            return 'FOR SALE';\r\n        } else if (status === '2' || status === '2_0') {\r\n            return 'SOLD';\r\n        } else if (status === '3' || status === '3_0') {\r\n            return 'PENDING';\r\n        } else if (status === '4' || status === '4_0') {\r\n            return 'EXPIRED';\r\n        } else if (status === '5' || status === '5_0') {\r\n            return 'CANCELLED';\r\n        } else if (status === '5_1') {\r\n            return 'WITHDRAWN';\r\n        } else if (status === '6' || status === '6_0') {\r\n            return 'RENTED';\r\n        } else {\r\n            return 'UNKNOWN';\r\n        }\r\n    }\r\n\r\n    public onShowGallery(listing: Listing) {\r\n        console.log('onShowGallery');\r\n        if (!this.isLoggedIn && listing.st === '2') {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to view details of sold listings.');\r\n        } else {\r\n            this.$store.dispatch('setSelectedListing', listing);\r\n            this.$store.dispatch('sendListingEvent', { action: Defs.ANALYTICS_LISTING_TABLECLICK, sysId: listing.sid });\r\n            this.$store.dispatch('showListingDialogPhotos');\r\n        }\r\n    }\r\n\r\n    public onSelectListing(listing: Listing) {\r\n        if (!this.isLoggedIn && listing.st === '2') {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to view details of sold listings.');\r\n        } else {\r\n            this.$store.dispatch('closePopups');\r\n            this.$store.dispatch('setSelectedListing', listing);\r\n            this.$store.dispatch('sendListingEvent', { action: Defs.ANALYTICS_LISTING_TABLECLICK, sysId: listing.sid });\r\n            this.$store.dispatch('showListingDialog');\r\n        }\r\n    }\r\n\r\n    public isFavourite(listing: Listing) {\r\n        if (!this.isLoggedIn) {\r\n            return false;\r\n        }\r\n\r\n        if (listing) {\r\n            return (this.favouriteIds.indexOf(listing.sid) !== -1);\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public onToggleFavorite(listing: Listing) {\r\n        if (!this.isLoggedIn) {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to add to favourites.');\r\n        } else {\r\n            if (this.isFavourite(listing)) {\r\n                this.$store.dispatch('favouriteRemove',  listing.sid);\r\n            } else {\r\n                this.$store.dispatch('favouriteAdd', listing.sid);\r\n            }\r\n        }\r\n    }\r\n\r\n    public onGoToListing(systemId: number) {\r\n        this.$store.dispatch('goToListing', systemId);\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingTable.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListingTable.vue?vue&type=template&id=0613b33b&scoped=true&\"\nimport script from \"./ListingTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListingTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ListingTable.vue?vue&type=style&index=0&id=0613b33b&scoped=true&lang=css&\"\nimport style1 from \"./ListingTable.vue?vue&type=style&index=1&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  \"0613b33b\",\n  null\n  \n)\n\nexport default component.exports\nimport {QTable,QTd,QIcon,QBtn,QTooltip} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QTable,QTd,QIcon,QBtn,QTooltip})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { QVueGlobals } from 'quasar';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport ListingFilter from '@/components/ListingFilter.vue';\r\nimport ListingTable from '@/components/ListingTable.vue';\r\n\r\n@Component({\r\n    components: {\r\n        ListingFilter,\r\n        ListingTable,\r\n    },\r\n})\r\nexport default class Drawer extends Vue {\r\n\r\n    public widthThresholdValue: number = 1200;\r\n    public heightThresholdValue: number = 415;\r\n\r\n    get shouldShowDrawer(): boolean {\r\n        if (this.isLandscape) {\r\n            if ((this.$q.screen.width >= this.widthThresholdValue)) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    get isLandscape(): boolean {\r\n        return this.$q.screen.width > this.$q.screen.height;\r\n    }\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get leftDrawerOpen(): boolean {\r\n        return this.$store.state.leftDrawerOpen;\r\n    }\r\n\r\n    public toggleDrawer() {\r\n        this.$store.dispatch('setLeftDrawerOpen', !this.leftDrawerOpen);\r\n    }\r\n\r\n    public refreshMap() {\r\n        // there is not an after-hide event so we need to wait for the transition effect\r\n        if (this.map) {\r\n            setTimeout(() => {\r\n                this.map.invalidateSize();\r\n            }, 50);\r\n        }\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drawer.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drawer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Drawer.vue?vue&type=template&id=6f9e9400&scoped=true&\"\nimport script from \"./Drawer.vue?vue&type=script&lang=ts&\"\nexport * from \"./Drawer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Drawer.vue?vue&type=style&index=0&id=6f9e9400&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  \"6f9e9400\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDrawer,QScrollArea,QBtn} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDrawer,QScrollArea,QBtn})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('LeafletMap')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"mapWrapper\"}},[_c('SearchManager'),(_vm.isLandscape)?_c('ListingFilter'):_vm._e(),_c('div',{attrs:{\"id\":\"spinner\"}},[_c('q-spinner',{staticClass:\"col justify-center divLayerLoading\",attrs:{\"color\":\"blue-brand\",\"size\":\"3em\",\"thickness\":10}})],1),_c('div',{attrs:{\"id\":\"map\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"over-map-left disable-zoom\"},[_c('q-select',{staticClass:\"search-style disable-zoom\",attrs:{\"input-debounce\":\"500\",\"dense\":\"\",\"outlined\":\"\",\"options\":_vm.resultOptions,\"label\":\"Enter a PID, MLS Number, or Address\",\"clearable\":\"\",\"use-input\":\"\",\"hide-selected\":\"\",\"hide-dropdown-icon\":\"\",\"fill-input\":\"\",\"bg-color\":\"white\",\"color\":\"blue-brand\"},on:{\"input\":_vm.selectedResult,\"filter\":_vm.searchInput,\"clear\":_vm.clearResult},scopedSlots:_vm._u([{key:\"option\",fn:function(scope){return [(scope.opt.type == 'address' && scope.index == 0)?_c('q-item-label',{attrs:{\"header\":\"\"}},[_vm._v(\"Places and Addresses\")]):_vm._e(),(scope.opt.type == 'listing' && scope.index == _vm.addressResults.length)?_c('q-item-label',{attrs:{\"header\":\"\"}},[_vm._v(\"Listings\")]):_vm._e(),(scope.opt.type == 'pid' && scope.index == _vm.addressResults.length + _vm.listingResults.length)?_c('q-item-label',{attrs:{\"header\":\"\"}},[_vm._v(\"Parcels\")]):_vm._e(),_c('q-item',_vm._g(_vm._b({},'q-item',scope.itemProps,false),scope.itemEvents),[_c('q-item-section',[_c('q-item-label',{domProps:{\"innerHTML\":_vm._s(scope.opt.label)}})],1)],1)]}},{key:\"no-option\",fn:function(){return [_c('q-item',[_c('q-item-section',{staticClass:\"text-grey\"},[_vm._v(\" No results \")])],1)]},proxy:true}]),model:{value:(_vm.selectedValue),callback:function ($$v) {_vm.selectedValue=$$v},expression:\"selectedValue\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from 'axios';\r\n\r\nconst esriGeocodeClient = axios.create({\r\n    baseURL: 'https://geocode.arcgis.com',\r\n    withCredentials: false,\r\n    headers: {\r\n        'Accept': 'application/json',\r\n        'Content-Type': 'application/json',\r\n    },\r\n});\r\n\r\nconst esriServiceClient = axios.create({\r\n    withCredentials: false,\r\n    headers: {\r\n        'Accept': 'application/json',\r\n        'Content-Type': 'application/json',\r\n    },\r\n});\r\n\r\nconst searchBounds =  [[43.530209, -66.431514], [47.477872, -59.647943]];\r\n\r\n\r\nexport default {\r\n    esriGeocoderSuggestions(search: string, lat: number, lon: number) {\r\n        return esriGeocodeClient.get(`https://geocode-api.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest?text=${encodeURI(search)}&location=${lon}%2C${lat}&distance=50000&searchExtent=%7B%22xmin%22%3A-69.8232995%2C%22ymin%22%3A41.5563775%2C%22xmax%22%3A-56.2561575%2C%22ymax%22%3A49.4517035%2C%22spatialReference%22%3A%7B%22wkid%22%3A4326%7D%7D&maxSuggestions=5&f=json&token=AAPK1169c3fb47a04a479e3c04f79defa37abYXyZsmpnFHdJQeICgSfKflpSVFxQMe7D5MLKb-pseJXK4rGBChxFMizLYit7U8b`);\r\n    },\r\n    esriGeocoderCandidates(text: string, magicKey: string) {\r\n        return esriGeocodeClient.get(`https://geocode-api.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates?outSr=4326&forStorage=false&outFields=*&maxLocations=5&singleLine=${encodeURI(text)}&magicKey=${encodeURI(magicKey)}&searchExtent=%7B%22xmin%22%3A-66.431514%2C%22ymin%22%3A43.530209%2C%22xmax%22%3A-59.647943%2C%22ymax%22%3A47.477872%2C%22spatialReference%22%3A%7B%22wkid%22%3A4326%7D%7D&f=json&token=AAPK1169c3fb47a04a479e3c04f79defa37abYXyZsmpnFHdJQeICgSfKflpSVFxQMe7D5MLKb-pseJXK4rGBChxFMizLYit7U8b`);\r\n    },\r\n    mlsFuzzyQuery(text: string) {\r\n        // TODO this can be improved\r\n        // TODO don't need the upper for numeric\r\n        // TODO use config\r\n        return esriServiceClient.get(`https://remaxnova-api-dev.azurewebsites.net/api/featureservice/search/query?searchText=${text}`);\r\n    },\r\n    pidExactQuery(pid: string) {\r\n        // this will return geometry\r\n        return esriServiceClient.get(`https://remaxnova-api.azurewebsites.net/api/featureservice/parcels_ro/query?returnGeometry=true&where=PID%3D%27${pid}%27&outSr=4326&outFields=*&f=geojson`);\r\n    },\r\n    pidCentroidQuery(pid: string) {\r\n        return esriServiceClient.get(`https://remaxnova-api.azurewebsites.net/api/parcels/${pid}/centroid`);\r\n    },\r\n    listingGeometry(objectid: number) {\r\n        // gets exact listing with geometry\r\n        return esriServiceClient.get(`https://remaxnova-api-dev.azurewebsites.net/api/featureservice/search/query?objectId=${objectid}&f=geojson`);\r\n    },\r\n};\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport SearchService from '@/services/SearchService';\r\nimport { Listing } from '@/models/Listing';\r\nimport L from 'leaflet';\r\n\r\n@Component\r\nexport default class SearchManager extends Vue {\r\n\r\n    public selectedValue: string = '';\r\n\r\n    // expecting array {label: 'string', value: 'string', type: 'string', magicKey: optional}\r\n    public addressResults: any = [];\r\n    public listingResults: any = [];\r\n    public pidResults: any = [];\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        // if (action.type === 'initSearch') {\r\n        //     this.initSearch();\r\n        // }\r\n    });\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get resultOptions() {\r\n        return this.addressResults.concat(this.listingResults).concat(this.pidResults);\r\n    }\r\n\r\n    public selectedResult(inputValue: any) {\r\n        console.log('SearchManager: selectedResult()');\r\n        console.log(inputValue); // same as this.selectedValue model\r\n\r\n        const selectedListingMarkerPane = this.map.getPane('selectedListing');\r\n        if (selectedListingMarkerPane) {\r\n            selectedListingMarkerPane.style.display = 'block';\r\n        }\r\n\r\n        if (inputValue && inputValue.type && inputValue.type === 'address') {\r\n            // address result selected\r\n            SearchService.esriGeocoderCandidates(inputValue.label, inputValue.magicKey)\r\n            .then((response) => {\r\n                if (response.data && response.data.candidates && response.data.candidates.length > 0) {\r\n                    const latLon = new L.LatLng(response.data.candidates[0].location.y, response.data.candidates[0].location.x);\r\n                    this.$store.dispatch('setMarkerLocation', latLon);\r\n                    this.map.setView(latLon, 16);\r\n                } else {\r\n                    this.$store.dispatch('notify', 'Address not found');\r\n                }\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                // this.$store.dispatch('notify', error.stack.split('\\n', 1).join(''));\r\n            });\r\n        } else if (inputValue && inputValue.type && inputValue.type === 'listing') {\r\n            SearchService.listingGeometry(inputValue.value)\r\n            .then((response) => {\r\n                if (response.data && response.data.features.length) {\r\n                    if (response.data.features[0].properties.ml === 1 && response.data.features[0].properties.mli !== null) {\r\n                        const listingJson = this.getListingFromMultiListingSearchSelection(inputValue.label, response.data.features[0]);\r\n                        const searchListing = new Listing(listingJson);\r\n                        this.$store.dispatch('setSelectedListing', searchListing);\r\n                    } else {\r\n                        const searchListing = new Listing(response.data.features[0].properties);\r\n                        this.$store.dispatch('setSelectedListing', searchListing);\r\n                    }\r\n                    const latLon = new L.LatLng(response.data.features[0].geometry.coordinates[1], response.data.features[0].geometry.coordinates[0]);\r\n                    this.$store.dispatch('setMarkerLocation', latLon);\r\n                    this.map.setView(latLon, 16);\r\n\r\n                }\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                // this.$store.dispatch('notify', error.stack.split('\\n', 1).join(''));\r\n            });\r\n        } else if (inputValue && inputValue.type && inputValue.type === 'pid') {\r\n            const latLon = new L.LatLng(inputValue.value.geometry.coordinates[0][0][1], inputValue.value.geometry.coordinates[0][0][0]);\r\n            this.$store.dispatch('setMarkerLocation', latLon);\r\n            this.map.setView(latLon, 16);\r\n        }\r\n    }\r\n\r\n    public searchInput(inputValue: any, update: any, abort: any) {\r\n        console.log('SearchManager: searchInput()');\r\n        console.log(inputValue);\r\n        if (inputValue && inputValue.length > 1) {\r\n            console.log('SearchManager: fired');\r\n            this.addressResults = [];\r\n            this.listingResults = [];\r\n            this.pidResults = [];\r\n            if (inputValue.length >= 4 && !isNaN(inputValue) && !isNaN(parseFloat(inputValue))) {\r\n                // DO MLS searches for nueric values > 4\r\n                SearchService.mlsFuzzyQuery(inputValue)\r\n                .then((response) => {\r\n                    update(() => {\r\n                        if (response.data && response.data.features.length > 0) {\r\n                            response.data.features.forEach((feature: any) => {\r\n                                if (feature.properties.ml === 1 && feature.properties.pid.indexOf(inputValue) === -1 && feature.properties.mli !== null) {\r\n                                    const lSysId = this.getMatchingSystemIdFromMultilisting(feature, inputValue);\r\n                                    this.listingResults.push({\r\n                                        label: `MLS#: ${lSysId} / PID: ${feature.properties.pid}`,\r\n                                        value: feature.properties.OBJECTID,\r\n                                        type: 'listing',\r\n                                    });\r\n                                } else {\r\n                                    this.listingResults.push({\r\n                                        label: `MLS#: ${feature.properties.sid} / PID: ${feature.properties.pid}`,\r\n                                        value: feature.properties.OBJECTID,\r\n                                        type: 'listing',\r\n                                    });\r\n                                }\r\n                            });\r\n                        }\r\n                    });\r\n                })\r\n                .catch((error) => {\r\n                    console.error(error);\r\n                    // this.$store.dispatch('notify', error.stack.split('\\n', 1).join(''));\r\n                });\r\n            }\r\n            if (inputValue.length === 8 && !isNaN(inputValue) && !isNaN(parseFloat(inputValue))) {\r\n                // DO PID searches for nueric values length == 8\r\n                SearchService.pidExactQuery(inputValue)\r\n                .then((response) => {\r\n                    update(() => {\r\n                        if (response.data && response.data.features.length > 0) {\r\n                            response.data.features.forEach((feature: any) => {\r\n                                this.pidResults.push({\r\n                                    label: `PID: ${feature.properties.PID}`,\r\n                                    value: feature,\r\n                                    type: 'pid',\r\n                                });\r\n                            });\r\n                        }\r\n                    });\r\n                })\r\n                .catch((error) => {\r\n                    console.error(error);\r\n                    // this.$store.dispatch('notify', error.stack.split('\\n', 1).join(''));\r\n                });\r\n            }\r\n            SearchService.esriGeocoderSuggestions(inputValue, this.map.getCenter().lat, this.map.getCenter().lng)\r\n            .then((response) => {\r\n                update(() => {\r\n                    if (response.data && response.data.suggestions.length > 0) {\r\n                        response.data.suggestions.forEach((suggestion: any) => {\r\n                            if (suggestion && suggestion.text) {\r\n                                const idx = suggestion.text.indexOf(', NS');\r\n                                const idx2 = suggestion.text.indexOf(', Nova Scotia');\r\n                                if (idx === -1 && idx2 === -1) {\r\n                                    return;\r\n                                }\r\n                                const slimAddress = suggestion.text.substring(0, idx);\r\n                                if (!this.addressResults.find((element: any) => element.label === slimAddress)) {\r\n                                    this.addressResults.push({\r\n                                        label: slimAddress,\r\n                                        magicKey: suggestion.magicKey,\r\n                                        type: 'address',\r\n                                    });\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                });\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                // this.$store.dispatch('notify', error.stack.split('\\n', 1).join(''));\r\n            });\r\n        } else {\r\n            console.log('SearchManager: aborting');\r\n            abort();\r\n        }\r\n    }\r\n\r\n    public clearResult() {\r\n        console.log('SearchManager: clearResult()');\r\n    }\r\n\r\n    public getMatchingSystemIdFromMultilisting(feature: any, sysIdToMatch: any) {\r\n        const lSysIds = feature.properties.mli.split('|');\r\n        for (const lSysId of lSysIds) {\r\n            if (lSysId.indexOf(sysIdToMatch) !== -1) {\r\n                return lSysId;\r\n            }\r\n        }\r\n        return '';\r\n    }\r\n\r\n    public getListingFromMultiListingSearchSelection(selectionText: any, feature: any) {\r\n        let lSysId = null;\r\n        if (selectionText.indexOf('MLS#:') !== -1) {\r\n            const lStart = selectionText.indexOf('MLS#:') + 6;\r\n            const lEnd = selectionText.indexOf(' / ');\r\n            lSysId = parseInt(selectionText.substring(lStart, lEnd), 10);\r\n        } else {\r\n            lSysId = parseInt(this.getMatchingSystemIdFromMultilisting(feature, selectionText), 10);\r\n        }\r\n        const lListings = JSON.parse(feature.properties.md);\r\n        for (let i = 0; i < lListings.length; i++) {\r\n            if (lListings[i].sid === lSysId) {\r\n                return lListings[i];\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchManager.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchManager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchManager.vue?vue&type=template&id=355001ca&scoped=true&\"\nimport script from \"./SearchManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchManager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchManager.vue?vue&type=style&index=0&id=355001ca&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  \"355001ca\",\n  null\n  \n)\n\nexport default component.exports\nimport {QSelect,QItemLabel,QItem,QItemSection} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QSelect,QItemLabel,QItem,QItemSection})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport 'leaflet/dist/leaflet.css';\r\nimport L from 'leaflet';\r\nimport * as esri from 'esri-leaflet';\r\nimport SearchManager from '@/components/SearchManager.vue';\r\nimport ListingFilter from '@/components/ListingFilter.vue';\r\n\r\n@Component({\r\n    components: {\r\n        SearchManager,\r\n        ListingFilter,\r\n    },\r\n})\r\nexport default class LeafletMap extends Vue {\r\n\r\n\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 415;\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        // if (action.type === 'zoomToSelected') {\r\n        //     this.zoomToSelected();\r\n        // }\r\n    });\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get isLoggedIn(): boolean {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get zoom() {\r\n        return this.$store.state.zoom;\r\n    }\r\n\r\n    get centerLat() {\r\n        return this.$store.state.centerLat;\r\n    }\r\n\r\n    get centerLon() {\r\n        return this.$store.state.centerLon;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    get isLandscape(): boolean {\r\n        return this.$q.screen.width > this.$q.screen.height;\r\n    }\r\n\r\n    public createMap() {\r\n        const lSW: L.LatLngTuple = [this.config.mapDefault.maxBounds[0][0], this.config.mapDefault.maxBounds[0][1]];\r\n        const lNE: L.LatLngTuple = [this.config.mapDefault.maxBounds[1][0], this.config.mapDefault.maxBounds[1][1]];\r\n\r\n        const lMapOptions: L.MapOptions = {\r\n            zoomControl: false,\r\n            maxBounds: new L.LatLngBounds(lSW, lNE),\r\n            minZoom: this.config.mapDefault.minZoom,\r\n            maxZoom: this.config.mapDefault.maxZoom,\r\n        };\r\n\r\n        const lMap: L.Map = L.map('map', lMapOptions);\r\n        lMap.on('load', this.onLoad);\r\n\r\n        lMap.on('zoomend', (evt: L.LeafletEvent) => {\r\n            console.log('zoomend');\r\n            const lZoom = lMap.getZoom();\r\n\r\n            this.$store.dispatch('setZoom', lZoom);\r\n\r\n            if (lZoom >= 16) {\r\n                L.DomUtil.addClass(lMap.getContainer(), 'crosshair-cursor-enabled');\r\n            } else {\r\n                L.DomUtil.removeClass(lMap.getContainer(), 'crosshair-cursor-enabled');\r\n            }\r\n        });\r\n\r\n        lMap.on('click', (e: L.LeafletMouseEvent) => {\r\n\r\n            if (e.originalEvent.defaultPrevented) {\r\n                return;\r\n            }\r\n\r\n            const lZoom = lMap.getZoom();\r\n            if (lZoom >= 16) {\r\n                this.$store.dispatch('parcelClick', e.latlng);\r\n            }\r\n        });\r\n\r\n        lMap.on('moveend', () => {\r\n            console.log('map moveend');\r\n            if (this.map) {\r\n                const mapCenter: L.LatLng = this.map.getCenter();\r\n                this.$store.dispatch('mapMoveEnd', mapCenter);\r\n            }\r\n        });\r\n\r\n        const MapLoadingSpinner = L.Control.extend({\r\n            options: {\r\n                position: 'bottomleft',\r\n            },\r\n            onAdd: (map: L.Map) => {\r\n                const container = L.DomUtil.get('spinner');\r\n                return container;\r\n            },\r\n        });\r\n        lMap.addControl(new MapLoadingSpinner());\r\n\r\n        // restore the stored map state\r\n        if (this.zoom !== -1 && this.centerLat !== -1 && this.centerLon !== -1) {\r\n            lMap.setView([this.centerLat, this.centerLon], this.zoom);\r\n        } else {\r\n            // const lCenter: L.LatLngTuple = [this.config.mapDefault.center[0], this.config.mapDefault.center[1]];\r\n            lMap.setView([this.config.mapDefault.center[0], this.config.mapDefault.center[1]], this.config.mapDefault.zoom);\r\n        }\r\n\r\n        this.$store.dispatch('setMap', lMap);\r\n\r\n        this.$store.dispatch('initLayers');\r\n\r\n        L.control.zoom({\r\n            position: 'topleft',\r\n        }).addTo(lMap);\r\n\r\n        this.$store.dispatch('initGeoLocation');\r\n        this.$store.dispatch('initWalkTimes');\r\n\r\n        this.setMapWrapperHeight();\r\n    }\r\n\r\n    public onLoad() {\r\n        console.log('onLoad');\r\n        // Get a reference to the loader's div\r\n        const loaderDiv: HTMLElement | null = document.getElementById('loader-wrapper');\r\n\r\n        if (loaderDiv === null) {\r\n            return;\r\n        }\r\n\r\n        // When the transition ends remove loader's div from display\r\n        // so that we can access the map with gestures or clicks\r\n        loaderDiv.addEventListener('transitionend', () => {\r\n            if (loaderDiv) {\r\n                loaderDiv.style.display = 'none';\r\n            }\r\n        }, true);\r\n        // Kick off the CSS transition\r\n        loaderDiv.style.opacity = '0.0';\r\n    }\r\n\r\n    // public initMapEvents() {\r\n    // }\r\n\r\n\r\n\r\n    public zoomHome() {\r\n        const latLngs: L.LatLng[] = [];\r\n        // for (const uid of Object.keys(this.deviceLayers)) {\r\n        //     latLngs.push(this.deviceLayers[uid].getLatLng());\r\n        // }\r\n        // if (latLngs.length > 0) {\r\n        //     this.getMap().fitBounds(L.latLngBounds(latLngs));\r\n        // } else {\r\n        //     this.$store.dispatch('notify', 'No device locations found');\r\n        // }\r\n    }\r\n\r\n    public createHomeControl() {\r\n        const HomeControl = L.Control.extend({\r\n            onAdd: (map: L.Map) => {\r\n                const container = L.DomUtil.create('div', 'leaflet-bar leaflet-control leafletControlHome');\r\n                container.style.backgroundImage = 'url(home-24px.svg)';\r\n                container.style.backgroundColor = 'white';\r\n                container.style.backgroundPosition = 'center';\r\n                container.style.width = '26px';\r\n                container.style.height = '26px';\r\n                container.onclick = () => {\r\n                    this.zoomHome();\r\n                };\r\n                return container;\r\n            },\r\n\r\n            onRemove: (map: L.Map) => {\r\n                // Nothing to do here\r\n            },\r\n        });\r\n\r\n        const hc = new HomeControl({ position: 'topleft' });\r\n        hc.addTo(this.map);\r\n    }\r\n\r\n    // public refreshMap() {\r\n    //     if (this.map) {\r\n    //         // there is a 200ms animation effect so this does nothin if you do it right away\r\n    //         setTimeout(() => {\r\n    //             this.map.invalidateSize(true);\r\n    //         }, 200);\r\n    //     }\r\n    // }\r\n\r\n    public mounted() {\r\n        console.log('LeafletMap: mounted()');\r\n        this.createMap();\r\n        window.onresize = this.setMapWrapperHeight;\r\n    }\r\n\r\n    public setMapWrapperHeight() {\r\n        this.$nextTick(function() {\r\n            if (this.isMobile) {\r\n                const height = window.innerHeight - 50;\r\n\r\n                // @ts-ignore\r\n                document.getElementById('mapWrapper').style.height = height + 'px';\r\n            } else {\r\n                const height = window.innerHeight ;\r\n\r\n                // @ts-ignore\r\n                document.getElementById('mapWrapper').style.height = height + 'px';\r\n            }\r\n        });\r\n    }\r\n\r\n    public beforeDestroy() {\r\n        this.unsubscribe();\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeafletMap.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeafletMap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LeafletMap.vue?vue&type=template&id=13264f32&scoped=true&\"\nimport script from \"./LeafletMap.vue?vue&type=script&lang=ts&\"\nexport * from \"./LeafletMap.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LeafletMap.vue?vue&type=style&index=0&id=13264f32&scoped=true&lang=css&\"\nimport style1 from \"./LeafletMap.vue?vue&type=style&index=1&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  \"13264f32\",\n  null\n  \n)\n\nexport default component.exports\nimport {QSpinner} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QSpinner})\n","\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport LeafletMap from '@/components/LeafletMap.vue';\r\n\r\n@Component({\r\n    components: {\r\n        LeafletMap,\r\n    },\r\n})\r\nexport default class Map extends Vue {}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Map.vue?vue&type=template&id=41e46b7b&\"\nimport script from \"./Map.vue?vue&type=script&lang=ts&\"\nexport * from \"./Map.vue?vue&type=script&lang=ts&\"\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showPopup)?_c('div',[_c('q-card',[_c('q-card-section',{staticClass:\"q-pa-none q-ma-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3 q-pa-none q-ma-none\",staticStyle:{\"min-height\":\"20px\"},attrs:{\"dense\":\"\"}},[_c('q-space')],1)],1),_c('q-card-section',{staticClass:\"scroll q-pa-none q-ma-none scrollbar\",staticStyle:{\"height\":\"241px\"}},[_c('q-list',{attrs:{\"bordered\":\"\",\"separator\":\"\"}},_vm._l((_vm.individualListings),function(listing){return _c('q-item',{key:listing.objectId},[_c('q-item-section',{attrs:{\"thumbnail\":\"\"}},[_c('img',{staticClass:\"multiImage q-my-sm rounded-borders\",attrs:{\"src\":_vm.thumbnailUrl(listing.pi)},on:{\"click\":function($event){return _vm.onViewPhotos(listing)}}}),(_vm.daysOnMarket(listing))?_c('div',{staticClass:\"multiListPopupTextOverlay\"},[_vm._v(\" \"+_vm._s(_vm.daysOnMarket(listing))+\" days on market\")]):_vm._e(),_c('div',{staticClass:\"multiListPopuFavOverlay\"},[_c('q-btn',{staticClass:\"btnFavOnPopup q-pt-sm q-pl-md\",staticStyle:{\"background\":\"transparent\",\"color\":\"white\"},attrs:{\"flat\":\"\",\"round\":\"\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.onToggleFavorite(listing)}}},[_c('q-icon',{staticClass:\"q-pb-xs q-px-xs\",staticStyle:{\"background\":\"rgba(255,355,255,0.5)\",\"border-radius\":\"25px\",\"padding-top\":\"5px\"},attrs:{\"name\":_vm.isFavourite(listing) ? 'fas fa-heart' : 'far fa-heart',\"color\":\"red-brand\"}})],1)],1)]),_c('q-item-section',[_c('div',{staticClass:\"divMultiInfo q-mx-xs q-my-sm\",on:{\"click\":function($event){return _vm.onListingSelected(listing)}}},[_c('div',{staticClass:\"multiListPopupTextOverlaySize\",class:{\n                                    \"listImgPrice_NOSTATUS\": listing.st === null || listing.st === undefined,\n                                    \"listImgPrice_FORSALE\": listing.st === \"1\"|| listing.st === \"1_0\",\n                                    \"listImgPrice_SOLD\": listing.st === \"2\" || listing.st === \"2_0\",\n                                    \"listImgPrice_PEND\": listing.st === \"3\" || listing.st === \"3_0\" },staticStyle:{\"text-align\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.price(listing))+\" \")]),_c('div',{},[_c('div',{staticClass:\"multiListPopupBedBath multiListPopupTextOverlaySize q-pa-xs\"},[_vm._v(\" \"+_vm._s(listing.bdmn)+\" \"),_c('i',{staticClass:\"fa fa-bed\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"dividBar\"},[_vm._v(\"|\")]),_vm._v(\" \"),_c('div',{staticClass:\"multiListPopupBedBath multiListPopupTextOverlaySize q-pa-xs\"},[_vm._v(\" \"+_vm._s(listing.bhmn)+\" \"),_c('i',{staticClass:\"fa fa-bath\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"dividBar\"},[_vm._v(\"|\")]),_vm._v(\" \"),_c('div',{staticClass:\"multiListPopupBedBath multiListPopupTextOverlaySize q-pa-xs\"},[_vm._v(\" \"+_vm._s(_vm.sqFootage(listing))+\" \")]),_c('div',{staticClass:\"multiListPopupAddress\",staticStyle:{\"font-size\":\"11px\"}},[_vm._v(\" \"+_vm._s(listing.ad)+\" \")])]),_c('div',{staticClass:\"singleListPopupDetsOverlay\"},[_c('q-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoggedIn || listing.st !== \"2\" && listing.st !== \"2_0\"),expression:\"isLoggedIn || listing.st !== \\\"2\\\" && listing.st !== \\\"2_0\\\"\"}],staticClass:\"btnMultiPopupViewDetails singleListPopupTextOverlaySize\",attrs:{\"id\":\"btnViewDetails\",\"icon\":\"fas fa-list\",\"label\":\"Details\",\"no-caps\":\"\",\"outline\":\"\",\"padding\":\"5px\",\"size\":\"sm\",\"loading\":listing.viewDetailsInProgress,\"disable\":listing.viewDetailsInProgress},on:{\"click\":function($event){return _vm.onViewDetails(listing)}}})],1)])])],1)}),1)],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport { Listing } from '../models/Listing';\r\nimport ListingUtil from '../utils/ListingUtil';\r\nimport Defs from '../utils/Defs';\r\n\r\n@Component\r\nexport default class PopupMultiListing extends Vue {\r\n\r\n    public showPopup: boolean = false;\r\n    public popup: L.Popup | null = null;\r\n    public individualListings: Listing[] = [];\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n\r\n        if (action.type === 'multiListingSelectedViaMap') {\r\n            console.log('multiListingSelectedViaMap!');\r\n            this.onMultiListingSelected(action.payload);\r\n        }\r\n        if (action.type === 'listingDetailFetchComplete') {\r\n            this.onViewDetailsModalOpen();\r\n        }\r\n        if (action.type === 'listingDetailFetchError') {\r\n            this.onViewDetailsModalOpen();\r\n        }\r\n        if (action.type === 'closePopups') {\r\n            this.closePopup();\r\n        }\r\n    });\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get leftDrawerOpen() {\r\n        return this.$store.state.leftDrawerOpen;\r\n    }\r\n\r\n    get isLoggedIn() {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get selectedListing() {\r\n        return this.$store.state.listings.selectedListing;\r\n    }\r\n\r\n    get favourtiteIds() {\r\n        return this.$store.state.favourites.favouriteIds;\r\n    }\r\n\r\n    public closePopup() {\r\n        if (this.popup) {\r\n            this.map.closePopup(this.popup);\r\n        }\r\n\r\n        this.showPopup = false;\r\n    }\r\n\r\n    public thumbnailUrl(listingPreviewImage: string) {\r\n        return this.config.imageRoot + listingPreviewImage.replace(\".jpg\",\"_tb.jpg\");\r\n    }\r\n\r\n    public price(listing: Listing) {\r\n        return ListingUtil.getListingPriceBasedOnStatus(listing.st, listing.sp, listing.lpmn, listing.cl, this.isLoggedIn);\r\n    }\r\n\r\n    public daysOnMarket(listing: Listing) {\r\n        return ListingUtil.getDaysOnMarket(listing.ld, listing.st, listing.fd);\r\n    }\r\n\r\n    public sqFootage(listing: Listing) {\r\n        const sqFt = ListingUtil.getSqFootage(listing.tlan);\r\n        return sqFt + ' Sq.Ft.';\r\n    }\r\n\r\n    public isFavourite(listing: Listing) {\r\n        if (this.favourtiteIds.indexOf(listing.sid) !== -1) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public onToggleFavorite(listing: Listing) {\r\n        if (listing) {\r\n            if (!this.isLoggedIn) {\r\n                this.$store.dispatch('showLoginPromptDialog', 'You must login to add to favourites.');\r\n            } else {\r\n                if (this.isFavourite(listing)) {\r\n                    this.$store.dispatch('favouriteRemove',  listing.sid);\r\n                } else {\r\n                    this.$store.dispatch('favouriteAdd', listing.sid);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public onViewDetails(listing: Listing) {\r\n        console.log('onViewDetails');\r\n        listing.viewDetailsInProgress = true;\r\n        this.$store.dispatch('setSelectedListing', listing);\r\n        this.$store.dispatch('sendListingEvent', {action: Defs.ANALYTICS_LISTING_MAPCLICK, sysId: listing.sid});\r\n\r\n        this.$store.dispatch('showListingDialog');\r\n    }\r\n\r\n    public onViewPhotos(listing: Listing) {\r\n        console.log('onViewPhotos');\r\n        listing.viewPhotosInProgress = true;\r\n        this.$store.dispatch('setSelectedListing', listing);\r\n\r\n        if (this.isLoggedIn || listing.st !== '2') {\r\n            this.$store.dispatch('showLightBox');\r\n        } else {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to view details of sold listings.');\r\n        }\r\n    }\r\n\r\n    public onViewDetailsModalOpen() {\r\n        console.log('onViewListingDetailsModalOpen');\r\n        if (this.individualListings !== null) {\r\n            for (let i = 0; i < this.individualListings.length; i++) {\r\n                this.individualListings[i].viewDetailsInProgress = false;\r\n            }\r\n        }\r\n    }\r\n\r\n    public onListingSelected(listing: Listing) {\r\n        console.log('onListingSelected');\r\n        if (!this.selectedListing || listing.sid !== this.selectedListing.sid) {\r\n            this.$store.dispatch('setSelectedListing', listing);\r\n        }\r\n    }\r\n\r\n    public onMultiListingSelected(layer: L.Layer) {\r\n        // Logger.writeLog('PopupMgr:_onMultiListingSelected');\r\n        console.log('PopupMgr:_onMultiListingSelected');\r\n        console.log(layer);\r\n\r\n        // @ts-ignore - layer from LeafletMouseEvent isn't properly typed\r\n        const rootListing: any = layer.feature;\r\n\r\n        const individualListingsJson = JSON.parse(rootListing.properties.md);\r\n        const forSaleListings = [];\r\n        const pendingListings = [];\r\n        const soldListings = [];\r\n\r\n        for (let i = 0; i < individualListingsJson.length; i++) {\r\n            const listing = new Listing(individualListingsJson[i]);\r\n            listing.viewDetailsInProgress = false;\r\n            listing.viewPhotosInProgress = false;\r\n\r\n            if (listing.st === '1' || listing.st === '1_0') {\r\n                forSaleListings.push(listing);\r\n            } else if (listing.st === '3' || listing.st === '3_0') {\r\n                pendingListings.push(listing);\r\n            } else {\r\n                soldListings.push(listing);\r\n            }\r\n        }\r\n\r\n        this.individualListings = [];\r\n\r\n        for (let i = 0; i < forSaleListings.length; i++) {\r\n            this.individualListings.push(forSaleListings[i]);\r\n        }\r\n\r\n        for (let i = 0; i < pendingListings.length; i++) {\r\n            this.individualListings.push(pendingListings[i]);\r\n        }\r\n\r\n        for (let i = 0; i < soldListings.length; i++) {\r\n            this.individualListings.push(soldListings[i]);\r\n        }\r\n\r\n        this.showPopup = true; // probably not needed??\r\n\r\n        let popupWidth = 300;\r\n        if (this.$q.platform.is.mobile) {\r\n            popupWidth = 275;\r\n        }\r\n\r\n        let lLatlng = null;\r\n        if (rootListing.geometry.type === 'Polygon' || rootListing.geometry.type === 'MultiPolygon') {\r\n            // @ts-ignore - no types\r\n            lLatlng = layer.getBounds().getCenter();\r\n        } else {\r\n            lLatlng = L.latLng(rootListing.geometry.coordinates[1], rootListing.geometry.coordinates[0]);\r\n        }\r\n\r\n        this.popup = L.popup({\r\n            className: 'multiListPopup',\r\n            minWidth: popupWidth,\r\n            maxWidth: popupWidth,\r\n        })\r\n        .setLatLng(lLatlng)\r\n        .setContent(this.$el as HTMLElement)\r\n        .openOn(this.map);\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupMultiListing.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupMultiListing.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PopupMultiListing.vue?vue&type=template&id=e7fb0aa0&scoped=true&\"\nimport script from \"./PopupMultiListing.vue?vue&type=script&lang=ts&\"\nexport * from \"./PopupMultiListing.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PopupMultiListing.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./PopupMultiListing.vue?vue&type=style&index=1&id=e7fb0aa0&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  \"e7fb0aa0\",\n  null\n  \n)\n\nexport default component.exports\nimport {QCard,QCardSection,QToolbar,QSpace,QList,QItem,QItemSection,QBtn,QIcon} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QCard,QCardSection,QToolbar,QSpace,QList,QItem,QItemSection,QBtn,QIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showPopup)?_c('div',[(_vm.selectedPid.length)?_c('div',{staticClass:\"parcel-popup\"},[(_vm.civicAddresses)?_c('div',_vm._l((_vm.civicAddresses),function(civic){return _c('div',{key:civic.CivicNum,staticClass:\"parcel-address\"},[_vm._v(\" \"+_vm._s(civic.CivicNum)+\" \"+_vm._s(civic.StreetName)+\" \"+_vm._s(civic.StreetType)+\", \"+_vm._s(civic.City)+\" \")])}),0):_vm._e(),_c('div',{staticClass:\"parcel-pid\"},[_vm._v(\" PID: \"),_c('b',[_vm._v(_vm._s(_vm.selectedPid))])]),_c('q-btn',{staticClass:\"btn-blue-brand\",attrs:{\"icon\":\"fas fa-info\",\"flat\":\"\",\"no-caps\":\"\",\"dense\":\"\",\"size\":\"md\",\"label\":\"More\",\"loading\":!_vm.selectedParcelDetail,\"disabled\":!_vm.selectedParcelDetail},on:{\"click\":_vm.showParcelDetails}})],1):_c('div',[_vm._m(0)])]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"no-data\"},[_c('b',[_vm._v(\"No Parcel Data Available\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport * as esri from 'esri-leaflet';\r\n\r\n@Component\r\nexport default class PopupParcel extends Vue {\r\n\r\n    public parcelSpinnerLayer: L.Marker | null = null;\r\n    public selectedParcelLayer: L.GeoJSON | null = null;\r\n    public queriedPoints: L.LatLng[] = [];\r\n    public showPopup: boolean = false;\r\n    public selectedPid: string = '';\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get selectedParcel() {\r\n        return this.$store.state.parcels.selectedParcel;\r\n    }\r\n\r\n    get selectedParcelDetail() {\r\n        return this.$store.state.parcels.selectedParcelDetail;\r\n    }\r\n\r\n    get civicAddresses() {\r\n        if (this.$store.state.parcels.selectedParcelDetail &&\r\n            this.$store.state.parcels.selectedParcelDetail.ParcelData &&\r\n            this.$store.state.parcels.selectedParcelDetail.ParcelData.CivicAddresses.length) {\r\n            return this.$store.state.parcels.selectedParcelDetail.ParcelData.CivicAddresses;\r\n        }\r\n        return [];\r\n    }\r\n\r\n    get isMapClickDisabled() {\r\n        return this.$store.state.isMapClickDisabled;\r\n    }\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'parcelClick') {\r\n            this.onMapParcelClick(action.payload);\r\n        }\r\n        if (action.type === 'parcelDataError') {\r\n            this.onMapParcelDataRetrievedError();\r\n        }\r\n    });\r\n\r\n    public showParcelDetails() {\r\n        console.log('PopupParcel: showParcelDetails()');\r\n        this.$store.dispatch('showParcelDialog');\r\n    }\r\n\r\n    public onMapParcelClick(latLon: L.LatLng) {\r\n        console.log('_onMapParcelClick');\r\n        if (this.isMapClickDisabled) {\r\n            return;\r\n        }\r\n\r\n        this.$store.dispatch('setSelectedParcelDetail', null);\r\n\r\n        if (this.parcelSpinnerLayer) {\r\n            this.parcelSpinnerLayer.removeFrom(this.map);\r\n        }\r\n\r\n        const lSpinnerMarker = L.divIcon({\r\n            className: '',\r\n            iconSize: [28, 28],\r\n            html: `<span style='color:#00458b'><i class='fas fa-spinner fa-spin fa-2x'></i></span>`,\r\n        });\r\n\r\n        this.parcelSpinnerLayer = L.marker(latLon, { icon: lSpinnerMarker }).addTo(this.map);\r\n\r\n        this.queriedPoints.push(latLon);\r\n\r\n        const lParcelQuery = esri.query({\r\n            url: this.config.ParcelsLayer.url,\r\n        });\r\n\r\n        lParcelQuery.intersects(latLon).run(this.onGetParcelAtPoint);\r\n\r\n    }\r\n\r\n    public onGetParcelAtPoint(error: any, featureCollection: any) {\r\n        console.log('onGetParcelAtPoint');\r\n\r\n        if (error || !featureCollection.features.length) {\r\n            if (this.parcelSpinnerLayer) {\r\n                this.parcelSpinnerLayer.removeFrom(this.map);\r\n            }\r\n            if (this.selectedParcelLayer) {\r\n                this.selectedParcelLayer.removeFrom(this.map);\r\n            }\r\n            return;\r\n        }\r\n\r\n        let lFeature = null;\r\n        if (!error) {\r\n            lFeature = featureCollection.features[0];\r\n        }\r\n\r\n        let lClickPoint = null;\r\n        if (this.queriedPoints.length > 0) {\r\n            lClickPoint = this.queriedPoints.pop();\r\n        }\r\n\r\n        if (lClickPoint) {\r\n            this.showParcelPopup(lClickPoint, lFeature);\r\n        }\r\n\r\n        if (lFeature) {\r\n            this.onMapParcelRetrieved(lFeature); // parcel recieved, NOT parcelDetail\r\n            const lPid = lFeature.properties.PID.padStart(8, '0');\r\n            this.$store.dispatch('getParcelData', lPid); // now retrieve parcelDetail\r\n        }\r\n    }\r\n\r\n    public onMapParcelRetrieved(feature: any) {\r\n        // Logger.writeLog(\"onMapParcelRetrieved\");\r\n        console.log('onMapParcelRetrieved');\r\n\r\n        this.$store.dispatch('setSelectedParcel', feature);\r\n\r\n        if (this.parcelSpinnerLayer) {\r\n            this.parcelSpinnerLayer.removeFrom(this.map);\r\n        }\r\n\r\n        if (this.selectedParcelLayer) {\r\n            this.selectedParcelLayer.removeFrom(this.map);\r\n        }\r\n\r\n        if (feature) {\r\n            this.selectedParcelLayer = L.geoJSON(feature, {\r\n                style: this.config.highlightedListingColor,\r\n            }).addTo(this.map);\r\n        }\r\n    }\r\n\r\n    public showParcelPopup(clickPoint: L.LatLng, feature: any) {\r\n        if (!feature) {\r\n            return;\r\n        }\r\n\r\n        this.selectedPid = feature.properties.PID;\r\n        this.showPopup = true;\r\n        // Old popup\r\n        // let lHtml =\r\n        // `<div id=\\\"parcelAddress\\\" style=\\\"display:none;margin-bottom:5px;padding-top: 5px;background:\r\n        // #e7e7e7;border-radius: 5px;font-size: 11px;color:#545454;text-align:center;font-style:italic\\\"></div>`;\r\n        // lHtml += `<div style=\\\"margin-bottom:15px;text-align:center;font-size: 12px;color:#545454\\\">PID: <b>${parcelPopupPid}</b></div>`;\r\n        // lHtml +=\r\n        // `<div style=\\\"text-align:center;width:120px\\\"><button id=\\\"btnViewParcelDetails\\\" type=\\\"button\\\" class=\\\"ViewParcelDetails btn btn-primary has-spinner spinit disabled\\\" >\r\n        // <i class=\\\"fa fa-spinner fa-spin\\\"></i></button></div>`;\r\n        // lHtml += `<div id=\\\"lblNoParcelData\\\" style=\\\"display:none;font-size: 15px;color:#1f52a3;text-align:center;\\\"><b>No Parcel Data Available</b></div>`;\r\n\r\n        L.popup({\r\n            maxWidth: 121,\r\n            minWidth: 121,\r\n        })\r\n        .setLatLng(clickPoint)\r\n        .setContent(this.$el as HTMLElement)\r\n        .openOn(this.map);\r\n    }\r\n\r\n    public onMapParcelDataRetrievedError() {\r\n        this.selectedPid = ''; // makes popup show \"no data\"\r\n    }\r\n\r\n    public mounted() {\r\n        console.log('PopupParcel: mounted()');\r\n    }\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupParcel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupParcel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PopupParcel.vue?vue&type=template&id=9426ec76&scoped=true&\"\nimport script from \"./PopupParcel.vue?vue&type=script&lang=ts&\"\nexport * from \"./PopupParcel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PopupParcel.vue?vue&type=style&index=0&id=9426ec76&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  \"9426ec76\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtn} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtn})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showPopup)?_c('div',[_c('q-card',[_c('q-card-section',{staticClass:\"q-pa-none q-ma-none popupHeight\"},[_c('q-img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isImgLoaded),expression:\"isImgLoaded\"}],staticClass:\"popupListingImg\",attrs:{\"src\":_vm.imageSrc,\"basic\":\"\",\"alt\":\"listing\"},on:{\"load\":_vm.onImageLoad}}),_c('q-skeleton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isImgLoaded),expression:\"!isImgLoaded\"}],staticClass:\"popupListingImg\"}),_c('div',{staticClass:\"singleListPopupTextOverlay\"},[_c('span',{staticClass:\"singleListPopupTextOverlaySize\",class:{\n                        \"listImgPrice_NOSTATUS\": this.selectedListing.st === null || this.selectedListing.st === undefined,\n                        \"listImgPrice_FORSALE\": this.selectedListing.st === \"1\"|| this.selectedListing.st === \"1_0\",\n                        \"listImgPrice_SOLD\": this.selectedListing.st === \"2\" || this.selectedListing.st === \"2_0\",\n                        \"listImgPrice_PEND\": this.selectedListing.st === \"3\" || this.selectedListing.st === \"3_0\" },staticStyle:{\"font-size\":\"12px\",\"padding\":\"5px\",\"padding-left\":\"2px\"}},[_vm._v(_vm._s(_vm.price))])]),_c('div',{staticClass:\"singleListPopupInfoOverlay\",on:{\"click\":_vm.onViewPhotos}},[_c('div',{staticClass:\"detailsGroup\"},[_c('div',{staticClass:\"singleListPopupTextOverlaySize q-pt-xs\",staticStyle:{\"font-size\":\"13px\"}},[_vm._v(\" \"+_vm._s(_vm.selectedListing.ad)+\" \")]),_c('div',{staticClass:\"singleListPopupTextOverlaySize q-pb-xs\"},[_vm._v(\" \"+_vm._s(_vm.daysOnMarket)+\" days on market \")])]),(_vm.selectedListing.cl == 1 || _vm.selectedListing.cl == 4)?_c('div',{staticClass:\"detailsGroup\"},[_c('div',{staticClass:\"singleListPopupBedOverlay singleListPopupTextOverlaySize q-pt-xs\"},[_vm._v(\" \"+_vm._s(_vm.selectedListing.bdmn)+\" \"),_c('i',{staticClass:\"fa fa-bed fa-fw\",attrs:{\"aria-hidden\":\"true\"}})]),_c('div',{staticClass:\"singleListPopupBathOverlay singleListPopupTextOverlaySize q-pb-xs\"},[_vm._v(\" \"+_vm._s(_vm.selectedListing.bhmn)+\" \"),_c('i',{staticClass:\"fa fa-bath fa-fw\",attrs:{\"aria-hidden\":\"true\"}})])]):_vm._e()]),_c('div',{staticClass:\"singleListExitOverlay \"},[_c('q-btn',{staticStyle:{\"background\":\"transparent\",\"color\":\"white\"},attrs:{\"round\":\"\",\"flat\":\"\"},on:{\"click\":_vm.closePopup}},[_c('q-icon',{staticClass:\"q-pb-xs q-px-xs\",staticStyle:{\"background\":\"rgba(255,255,255,0.7)\",\"border-radius\":\"25px\",\"padding-top\":\"5px\"},attrs:{\"name\":\"fas fa-times\",\"color\":\"grey-8\"}})],1)],1),_c('div',{staticClass:\"singleListPopupDetsOverlay \"},[_c('q-btn',{staticClass:\"btnPopupViewDetails singleListPopupTextOverlaySize \",attrs:{\"id\":\"btnViewDetails\",\"label\":\"\",\"padding\":\"4px\",\"no-caps\":\"\",\"size\":\"sm\"},on:{\"click\":_vm.onViewDetails}},[_c('q-icon',{staticClass:\"q-pr-xs\",attrs:{\"name\":\"fas fa-list\",\"color\":\"red-brand\"}}),_vm._v(\"Details \")],1)],1),_c('div',{staticClass:\"singleListPopuFavOverlay \"},[_c('q-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isSold),expression:\"!isSold\"}],staticClass:\"btnFavOnPopup\",staticStyle:{\"background\":\"transparent\",\"color\":\"white\"},attrs:{\"round\":\"\",\"flat\":\"\"},on:{\"click\":_vm.onToggleFavorite}},[_c('q-icon',{staticClass:\"q-pb-xs q-px-xs\",staticStyle:{\"background\":\"rgba(255,355,255,0.5)\",\"border-radius\":\"25px\",\"padding-top\":\"5px\"},attrs:{\"name\":_vm.isFavourite ? 'fas fa-heart' : 'fal fa-heart',\"color\":\"red-brand\"}})],1)],1)],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport L, { LatLng } from 'leaflet';\r\nimport { Listing } from '../models/Listing';\r\nimport ListingUtil from '../utils/ListingUtil';\r\n\r\n@Component\r\nexport default class PopupSingleListing extends Vue {\r\n\r\n    public showPopup: boolean = false;\r\n    public popup: L.Popup | null = null;\r\n\r\n    public daysOnMarket: number | string = '';\r\n    public price: string = '';\r\n    public isImgLoaded: boolean = false;\r\n    public isSold: boolean = false;\r\n    public lastFeatureId: number = -1;\r\n    public lastLatLon: L.LatLng = new LatLng(0, 0);\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'singleListingSelectedViaMap') {\r\n            console.log('singleListingSelectedViaMap');\r\n            this.onSingleListingSelected(action.payload);\r\n        }\r\n        if (action.type === 'popupSingleListing') {\r\n            this.onPopupFromListing(action.payload.listing, action.payload.latLng);\r\n        }\r\n        if (action.type === 'closePopups') {\r\n            this.closePopup();\r\n        }\r\n    });\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get leftDrawerOpen() {\r\n        return this.$store.state.leftDrawerOpen;\r\n    }\r\n\r\n    get isLoggedIn() {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get selectedListing() {\r\n        return this.$store.state.listings.selectedListing;\r\n    }\r\n\r\n    get isFullListingDetailsAvailable() {\r\n        return this.isLoggedIn || this.selectedListing.st !== '2';\r\n    }\r\n\r\n\r\n    get imageSrc(): string {\r\n        // TODO: need an optimized image for these popups\r\n        // let img = ListingUtil.addMapPostfixToImage(this.config.imageRoot + this.selectedListing.pi);\r\n        let img = this.config.imageRoot + this.selectedListing.pi;\r\n        if (!this.selectedListing.pi) {\r\n\r\n            img = this.config.imageRoot + this.config.placeholdListingImg;\r\n        } else if (this.selectedListing.pi.startsWith('?')) {\r\n            // img = ListingUtil.addMapPostfixToImage(this.config.imageRoot + this.selectedListing.sid + '.jpg');\r\n            img = this.config.imageRoot + this.selectedListing.sid + '.jpg';\r\n        } else if (this.selectedListing.pi === (this.config.imageRoot + this.config.placeholdListingImg)) {\r\n            img = this.config.imageRoot + this.config.placeholdListingImg;\r\n        }\r\n\r\n        return img;\r\n    }\r\n\r\n    get isFavourite() {\r\n        if (this.selectedListing && this.$store.state.favourites.favouriteIds.indexOf(this.selectedListing.sid) !== -1) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public onImageLoad() {\r\n        this.isImgLoaded = true;\r\n    }\r\n\r\n    public onViewDetails() {\r\n        if (!this.isFullListingDetailsAvailable) {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to view details of sold listings.');\r\n        } else {\r\n            this.$store.dispatch('showListingDialog');\r\n        }\r\n    }\r\n\r\n    public closePopup() {\r\n        if (this.popup) {\r\n            this.map.closePopup(this.popup);\r\n        }\r\n\r\n        this.showPopup = false;\r\n    }\r\n\r\n    public onViewPhotos() {\r\n        if (this.isFullListingDetailsAvailable) {\r\n            this.$store.dispatch('setSelectedListing', this.selectedListing);\r\n            this.$store.dispatch('showListingDialogPhotos');\r\n        } else {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to view details of sold listings.');\r\n        }\r\n    }\r\n\r\n    public onToggleFavorite() {\r\n        if (this.selectedListing) {\r\n            if (!this.isLoggedIn) {\r\n                this.$store.dispatch('showLoginPromptDialog', 'You must login to add to favourites.');\r\n            } else {\r\n                if (this.isFavourite) {\r\n                    this.$store.dispatch('favouriteRemove',  this.selectedListing.sid);\r\n                } else {\r\n                    this.$store.dispatch('favouriteAdd', this.selectedListing.sid);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public onSingleListingSelected(layer: L.Layer) {\r\n        // Logger.writeLog(\"PopupMgr:_onSingleListingSelected\");\r\n        console.log('PopupMgr:_onSingleListingSelected');\r\n\r\n        // @ts-ignore - its an esri layer\r\n        const listingFeature = layer.feature;\r\n\r\n        if (this.lastFeatureId === listingFeature.properties.OBJECTID) {\r\n            this.openPopup(this.lastLatLon);\r\n            return;\r\n        }\r\n\r\n        this.lastFeatureId = listingFeature.properties.OBJECTID;\r\n\r\n        this.isImgLoaded = false;\r\n        this.showPopup = false;\r\n        const selectedListingMarkerPane = this.map.getPane('selectedListing');\r\n        if (selectedListingMarkerPane) {\r\n            selectedListingMarkerPane.style.display = 'block';\r\n        }\r\n\r\n        // if (this.$q.platform.is.desktop && this.leftDrawerOpen) {\r\n        //     return;\r\n        // }\r\n\r\n        this.showPopup = true;\r\n\r\n        // hide the marker so it doesn't get in the way of the popup\r\n        if (selectedListingMarkerPane) {\r\n            selectedListingMarkerPane.style.display = 'block';\r\n        }\r\n        this.price = ListingUtil.getListingPriceBasedOnStatus(listingFeature.properties.st,\r\n        listingFeature.properties.sp, listingFeature.properties.lpmn, listingFeature.properties.cl, this.isLoggedIn);\r\n\r\n        this.daysOnMarket = ListingUtil.getDaysOnMarket(listingFeature.properties.ld, listingFeature.properties.st, listingFeature.properties.fd);\r\n\r\n        this.isSold = false;\r\n        if (listingFeature.properties.st === '2' || listingFeature.properties.st === '2_0') {\r\n            this.isSold = true;\r\n        }\r\n        let lLatlng = null;\r\n        if (listingFeature.geometry.type === 'Polygon' || listingFeature.geometry.type === 'MultiPolygon') {\r\n            // @ts-ignore - L.Polygon\r\n            lLatlng = layer.getBounds().getCenter();\r\n        } else {\r\n            lLatlng = L.latLng(listingFeature.geometry.coordinates[1], listingFeature.geometry.coordinates[0]);\r\n        }\r\n\r\n        this.lastLatLon = lLatlng;\r\n        this.openPopup(lLatlng);\r\n    }\r\n\r\n    // this is only invoked from query params on init\r\n    public onPopupFromListing(listing: Listing, latLng: L.LatLng) {\r\n        console.log('onPopupFromListing');\r\n\r\n        this.isImgLoaded = false;\r\n        this.showPopup = false;\r\n        const selectedListingMarkerPane = this.map.getPane('selectedListing');\r\n        if (selectedListingMarkerPane) {\r\n            selectedListingMarkerPane.style.display = 'block';\r\n        }\r\n\r\n        this.showPopup = true;\r\n\r\n        // hide the marker so it doesn't get in the way of the popup\r\n        if (selectedListingMarkerPane) {\r\n            selectedListingMarkerPane.style.display = 'block';\r\n        }\r\n\r\n        this.price = ListingUtil.getListingPriceBasedOnStatus(listing.st, listing.sp, listing.lpmn, listing.cl, this.isLoggedIn);\r\n\r\n        this.daysOnMarket = ListingUtil.getDaysOnMarket(listing.ld, listing.st, listing.fd);\r\n\r\n        this.isSold = false;\r\n        if (listing.st === '2' || listing.st === '2_0') {\r\n            this.isSold = true;\r\n        }\r\n\r\n        this.openPopup(latLng);\r\n    }\r\n\r\n    public openPopup(latLng: L.LatLng) {\r\n        let popupWidth = 300;\r\n        if (this.$q.platform.is.mobile) {\r\n            popupWidth = 220;\r\n        }\r\n\r\n        this.popup = L.popup({\r\n            className: 'singleListPopup',\r\n            minWidth: popupWidth,\r\n            maxWidth: popupWidth,\r\n        })\r\n        .setLatLng(latLng)\r\n        .setContent(this.$el as HTMLElement)\r\n        .openOn(this.map);\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupSingleListing.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopupSingleListing.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PopupSingleListing.vue?vue&type=template&id=04fc671b&scoped=true&\"\nimport script from \"./PopupSingleListing.vue?vue&type=script&lang=ts&\"\nexport * from \"./PopupSingleListing.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PopupSingleListing.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./PopupSingleListing.vue?vue&type=style&index=1&id=04fc671b&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  \"04fc671b\",\n  null\n  \n)\n\nexport default component.exports\nimport {QCard,QCardSection,QImg,QSkeleton,QBtn,QIcon} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QCard,QCardSection,QImg,QSkeleton,QBtn,QIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"touch-action\":\"none\"}},[_c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},on:{\"hide\":_vm.onFilterDialogHide},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"filter-dialog-size\"},[_c('q-card-section',{staticClass:\"row items-center bg-grey-3\"},[_c('div',{staticClass:\"text-h6\"},[_c('q-icon',{staticClass:\"q-pr-md\",attrs:{\"name\":\"fas fa-filter\"}}),_vm._v(\"Filters\")],1),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1),_c('q-card-section',{staticClass:\"card-section scroll\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col text-bold\"},[_vm._v(\" Status \")])]),_c('div',{staticClass:\"row q-pb-md\"},[_c('div',{staticClass:\"col\"},[_c('q-checkbox',{attrs:{\"keep-color\":\"\",\"label\":\"Active\",\"color\":\"active-brand\"},model:{value:(_vm.isActive),callback:function ($$v) {_vm.isActive=$$v},expression:\"isActive\"}})],1),_c('div',{staticClass:\"col\"},[_c('q-checkbox',{attrs:{\"keep-color\":\"\",\"label\":\"Pending\",\"color\":\"pending-brand\"},model:{value:(_vm.isPending),callback:function ($$v) {_vm.isPending=$$v},expression:\"isPending\"}})],1),_c('div',{staticClass:\"col\"},[_c('q-checkbox',{attrs:{\"keep-color\":\"\",\"label\":\"Sold (last 6 months)\",\"color\":\"sold-brand\"},model:{value:(_vm.isSold),callback:function ($$v) {_vm.isSold=$$v},expression:\"isSold\"}})],1)]),_c('q-separator'),_c('div',{staticClass:\"row q-pb-md\"},[_c('div',{staticClass:\"col col-xs-12 col-sm-12 col-md-4 q-pr-md\"},[_c('span',{staticClass:\"text-bold\"},[_vm._v(\"Class\")]),_c('q-select',{attrs:{\"outlined\":\"\",\"options\":_vm.classOptions,\"label\":_vm.filterClass.length ? 'Classes' : 'All Classes',\"multiple\":\"\",\"dense\":\"\",\"emit-value\":\"\",\"map-options\":\"\",\"options-cover\":\"\",\"color\":\"blue-brand\"},scopedSlots:_vm._u([{key:\"option\",fn:function(scope){return [_c('q-item',_vm._g(_vm._b({},'q-item',scope.itemProps,false),scope.itemEvents),[_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-toggle',{attrs:{\"val\":scope.opt.value,\"color\":\"blue-brand\"},model:{value:(_vm.filterClass),callback:function ($$v) {_vm.filterClass=$$v},expression:\"filterClass\"}})],1),_c('q-item-section',[_c('q-item-label',{domProps:{\"innerHTML\":_vm._s(scope.opt.label)}})],1)],1)]}}]),model:{value:(_vm.filterClass),callback:function ($$v) {_vm.filterClass=$$v},expression:\"filterClass\"}})],1),_c('div',{staticClass:\"col col-xs-12 col-sm-12 col-md-4 q-pr-md\"},[_c('span',{staticClass:\"text-bold\"},[_vm._v(\"Type\")]),_c('q-select',{attrs:{\"outlined\":\"\",\"options\":_vm.typeOptions,\"label\":_vm.filterType.length ? 'Types' : 'All Types',\"multiple\":\"\",\"dense\":\"\",\"emit-value\":\"\",\"map-options\":\"\",\"options-cover\":\"\",\"color\":\"blue-brand\"},scopedSlots:_vm._u([{key:\"option\",fn:function(scope){return [_c('q-item',_vm._g(_vm._b({},'q-item',scope.itemProps,false),scope.itemEvents),[_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-toggle',{attrs:{\"val\":scope.opt.value,\"color\":\"blue-brand\"},model:{value:(_vm.filterType),callback:function ($$v) {_vm.filterType=$$v},expression:\"filterType\"}})],1),_c('q-item-section',[_c('q-item-label',{domProps:{\"innerHTML\":_vm._s(scope.opt.label)}})],1)],1)]}}]),model:{value:(_vm.filterType),callback:function ($$v) {_vm.filterType=$$v},expression:\"filterType\"}})],1),_c('div',{staticClass:\"col col-xs-12 col-sm-12 col-md-4 q-pr-md\"},[_c('span',{staticClass:\"text-bold\"},[_vm._v(\"Style\")]),_c('q-select',{attrs:{\"outlined\":\"\",\"options\":_vm.styleOptions,\"label\":_vm.filterStyle.length ? 'Styles' : 'All Styles',\"multiple\":\"\",\"dense\":\"\",\"emit-value\":\"\",\"map-options\":\"\",\"options-cover\":\"\",\"color\":\"blue-brand\"},scopedSlots:_vm._u([{key:\"option\",fn:function(scope){return [(scope.opt.label == 'Single Family')?_c('q-item-label',{attrs:{\"header\":\"\"}},[_vm._v(\"Residential\")]):_vm._e(),(scope.opt.label == 'Commercial Retail')?_c('q-item-label',{attrs:{\"header\":\"\"}},[_vm._v(\"Commercial\")]):_vm._e(),_c('q-item',_vm._g(_vm._b({},'q-item',scope.itemProps,false),scope.itemEvents),[_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-toggle',{attrs:{\"val\":scope.opt.value,\"color\":\"blue-brand\"},model:{value:(_vm.filterStyle),callback:function ($$v) {_vm.filterStyle=$$v},expression:\"filterStyle\"}})],1),_c('q-item-section',[_c('q-item-label',{domProps:{\"innerHTML\":_vm._s(scope.opt.label)}})],1)],1)]}}]),model:{value:(_vm.filterStyle),callback:function ($$v) {_vm.filterStyle=$$v},expression:\"filterStyle\"}})],1)]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-bold\"},[_c('div',{staticClass:\"q-pb-lg\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-usd-circle\"}}),_vm._v(\" Price\")],1),_c('div',{staticClass:\"q-pl-lg q-pr-lg\"},[_c('q-range',{attrs:{\"min\":0,\"max\":49,\"step\":1,\"left-label-value\":_vm.priceLabelMin,\"right-label-value\":_vm.priceLabelMax,\"label-always\":\"\",\"drag-range\":\"\",\"label\":\"\",\"markers\":\"\",\"snap\":\"\",\"color\":\"blue-brand\"},model:{value:(_vm.priceRange),callback:function ($$v) {_vm.priceRange=$$v},expression:\"priceRange\"}})],1)])]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-bold\"},[_c('div',{staticClass:\"q-pb-lg\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-bed\"}}),_vm._v(\" Beds\")],1),_c('div',{staticClass:\"q-pl-lg q-pr-lg\"},[_c('q-range',{attrs:{\"min\":0,\"max\":10,\"step\":1,\"right-label-value\":_vm.bedsRange.max == 10 ? '10+': _vm.bedsRange.max,\"label-always\":\"\",\"drag-range\":\"\",\"label\":\"\",\"markers\":\"\",\"snap\":\"\",\"color\":\"blue-brand\"},model:{value:(_vm.bedsRange),callback:function ($$v) {_vm.bedsRange=$$v},expression:\"bedsRange\"}})],1)])]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-bold\"},[_c('div',{staticClass:\"q-pb-lg\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-bath\"}}),_vm._v(\" Baths\")],1),_c('div',{staticClass:\"q-pl-lg q-pr-lg\"},[_c('q-range',{attrs:{\"min\":0,\"max\":10,\"step\":1,\"right-label-value\":_vm.bathsRange.max == 10 ? '10+': _vm.bathsRange.max,\"label-always\":\"\",\"drag-range\":\"\",\"label\":\"\",\"markers\":\"\",\"snap\":\"\",\"color\":\"blue-brand\"},model:{value:(_vm.bathsRange),callback:function ($$v) {_vm.bathsRange=$$v},expression:\"bathsRange\"}})],1)])]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-bold\"},[_c('div',{staticClass:\"q-pb-lg\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-house-user\"}}),_vm._v(\" Main Living Area (sq ft)\")],1),_c('div',{staticClass:\"q-pl-lg q-pr-lg\"},[_c('q-range',{attrs:{\"min\":0,\"max\":7500,\"step\":500,\"right-label-value\":_vm.mlaRange.max == 7500 ? '7500+': _vm.mlaRange.max,\"label-always\":\"\",\"drag-range\":\"\",\"label\":\"\",\"markers\":\"\",\"snap\":\"\",\"color\":\"blue-brand\"},model:{value:(_vm.mlaRange),callback:function ($$v) {_vm.mlaRange=$$v},expression:\"mlaRange\"}})],1)])]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-bold\"},[_c('div',{staticClass:\"q-pb-lg\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-home\"}}),_vm._v(\" Total Living Area (sq ft)\")],1),_c('div',{staticClass:\"q-pl-lg q-pr-lg\"},[_c('q-range',{attrs:{\"min\":0,\"max\":7500,\"step\":500,\"right-label-value\":_vm.tlaRange.max == 7500 ? '7500+': _vm.tlaRange.max,\"label-always\":\"\",\"drag-range\":\"\",\"label\":\"\",\"markers\":\"\",\"snap\":\"\",\"color\":\"blue-brand\"},model:{value:(_vm.tlaRange),callback:function ($$v) {_vm.tlaRange=$$v},expression:\"tlaRange\"}})],1)])]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-bold\"},[_c('div',{staticClass:\"q-pb-lg\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-draw-polygon\"}}),_vm._v(\" Provincial Parcel Size\")],1),_c('div',{staticClass:\"q-pl-lg q-pr-lg\"},[_c('q-range',{attrs:{\"min\":0,\"max\":15,\"step\":1,\"left-label-value\":_vm.lotLabelMin,\"right-label-value\":_vm.lotLabelMax,\"label-always\":\"\",\"drag-range\":\"\",\"label\":\"\",\"markers\":\"\",\"snap\":\"\",\"color\":\"blue-brand\"},model:{value:(_vm.lotRange),callback:function ($$v) {_vm.lotRange=$$v},expression:\"lotRange\"}})],1)])]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-bold\"},[_c('div',{staticClass:\"q-pb-lg\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-calendar-day\"}}),_vm._v(\" Age\")],1),_c('div',{staticClass:\"q-pl-lg q-pr-lg\"},[_c('q-range',{attrs:{\"min\":0,\"max\":100,\"step\":1,\"right-label-value\":_vm.ageRange.max == 100 ? '100+': _vm.ageRange.max,\"label-always\":\"\",\"drag-range\":\"\",\"label\":\"\",\"markers\":\"\",\"snap\":\"\",\"color\":\"blue-brand\"},model:{value:(_vm.ageRange),callback:function ($$v) {_vm.ageRange=$$v},expression:\"ageRange\"}})],1)])]),_c('q-separator'),_c('div',{staticClass:\"row q-pb-md\"},[_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-4\"},[_c('span',{staticClass:\"text-bold\"},[_vm._v(\"Heat\")]),_c('q-select',{attrs:{\"outlined\":\"\",\"options\":_vm.heatOptions,\"label\":\"Heat Types\",\"multiple\":\"\",\"dense\":\"\",\"emit-value\":\"\",\"map-options\":\"\",\"options-cover\":\"\",\"color\":\"blue-brand\"},scopedSlots:_vm._u([{key:\"option\",fn:function(scope){return [_c('q-item',_vm._g(_vm._b({},'q-item',scope.itemProps,false),scope.itemEvents),[_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-toggle',{attrs:{\"val\":scope.opt.value,\"color\":\"blue-brand\"},model:{value:(_vm.filterHeat),callback:function ($$v) {_vm.filterHeat=$$v},expression:\"filterHeat\"}})],1),_c('q-item-section',[_c('q-item-label',{domProps:{\"innerHTML\":_vm._s(scope.opt.label)}})],1)],1)]}}]),model:{value:(_vm.filterHeat),callback:function ($$v) {_vm.filterHeat=$$v},expression:\"filterHeat\"}})],1),_c('div',{staticClass:\"col col-xs-12 col-sm-12 col-md-4 q-pt-md\"},[_c('q-checkbox',{attrs:{\"keep-color\":\"\",\"label\":\"Waterfront\",\"color\":\"blue-brand\"},model:{value:(_vm.isWaterfront),callback:function ($$v) {_vm.isWaterfront=$$v},expression:\"isWaterfront\"}})],1),_c('div',{staticClass:\"col col-xs-12 col-sm-12 col-md-4 q-pt-md\"},[_c('q-checkbox',{attrs:{\"keep-color\":\"\",\"label\":\"Garage\",\"color\":\"blue-brand\"},model:{value:(_vm.isGarage),callback:function ($$v) {_vm.isGarage=$$v},expression:\"isGarage\"}})],1)]),_c('q-separator'),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col text-h6\"},[_vm._v(\" Spatial Filters \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_vm._v(\" HRM School Catchment Areas \"),_c('q-btn',{staticClass:\"layer-menu-blue\",attrs:{\"round\":\"\",\"flat\":\"\",\"icon\":\"fas fa-question-circle\"}},[_c('q-tooltip',[_vm._v(\" Filter by school catchment area \")])],1),_c('q-select',{staticClass:\"q-pb-sm\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"options\":_vm.schoolCatchmentOptions,\"disable\":_vm.spatialFilterApplied},model:{value:(_vm.schoolCatchment),callback:function ($$v) {_vm.schoolCatchment=$$v},expression:\"schoolCatchment\"}}),_c('div',[_c('q-icon',{staticClass:\"q-pr-sm q-pl-sm\",attrs:{\"name\":\"fas fa-exclamation-triangle\",\"color\":\"orange\"}}),_vm._v(\"Catchments are approximate, our agents can verify the school for any listing. \")],1)],1)])],1),_c('q-separator'),_c('q-card-actions',{staticStyle:{\"height\":\"50px\"},attrs:{\"align\":\"right\"}},[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"label\":\"Close\",\"no-caps\":\"\"}}),_c('q-btn',{attrs:{\"icon\":\"fas fa-eraser\",\"no-caps\":\"\",\"label\":\"Clear All\"},on:{\"click\":_vm.onClearAll}}),_c('q-btn',{staticClass:\"btn-blue-brand\",attrs:{\"flat\":\"\",\"label\":\"Apply\",\"no-caps\":\"\",\"disable\":_vm.spatialFilterLoading,\"loading\":_vm.spatialFilterLoading},on:{\"click\":_vm.onApplyFilter}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface IMinMax {\r\n    Min: number;\r\n    Max: number;\r\n}\r\n\r\nexport class MinMax implements IMinMax {\r\n    public Min: number;\r\n    public Max: number;\r\n    constructor(\r\n        minMaxProps: any,\r\n    ) {\r\n        this.Min = minMaxProps.min;\r\n        this.Max = minMaxProps.max;\r\n    }\r\n}\r\n","import { MinMax } from './MinMax';\r\n\r\nexport interface IFilter {\r\n    Price: MinMax;\r\n    Beds: MinMax;\r\n    Baths: MinMax;\r\n    Mla: MinMax;\r\n    Tla: MinMax;\r\n    LotSize: MinMax;\r\n    Age: MinMax;\r\n    Type: any; // {\"Value\":[]},\r\n    Style: any; // {\"Value\":[]},\r\n    Class: any; // {\"Value\":[]},\r\n    Status: any; // {\"Value\":[]},\r\n    HeatType: any; // {\"Value\":[]}\r\n    Waterfront: any; // {\"Value\":null}\r\n    Garage: any; // {\"Value\":null}\r\n    SchoolCatchmentId: any; // {\"Value\":null}\r\n}\r\n\r\nexport class Filter implements IFilter {\r\n    public Price: MinMax;\r\n    public Beds: MinMax;\r\n    public Baths: MinMax;\r\n    public Mla: MinMax;\r\n    public Tla: MinMax;\r\n    public LotSize: MinMax;\r\n    public Age: MinMax;\r\n    public Type: any; // {\"Value\":[]},\r\n    public Style: any; // {\"Value\":[]},\r\n    public Class: any; // {\"Value\":[]},\r\n    public Status: any; // {\"Value\":[]},\r\n    public HeatType: any; // {\"Value\":[]}\r\n    public Waterfront: any; // {\"Value\":null}\r\n    public Garage: any; // {\"Value\":null}\r\n    public SchoolCatchmentId: any; // {\"Value\":null}\r\n    constructor(\r\n        filterProps: any,\r\n    ) {\r\n        this.Price = new MinMax(filterProps.price);\r\n        this.Beds = new MinMax(filterProps.beds);\r\n        this.Baths = new MinMax(filterProps.baths);\r\n        this.Mla = new MinMax(filterProps.mla);\r\n        this.Tla = new MinMax(filterProps.tla);\r\n        this.LotSize = new MinMax(filterProps.lotSize);\r\n        this.Age = new MinMax(filterProps.age);\r\n        this.Type = filterProps.type; // {\"Value\":[]},\r\n        this.Style = filterProps.style; // {\"Value\":[]},\r\n        this.Class = filterProps.class; // {\"Value\":[]},\r\n        this.Status = filterProps.status; // {\"Value\":[]},\r\n        this.HeatType = filterProps.heatType; // {\"Value\":[]}\r\n        this.Waterfront = filterProps.waterfront; // {\"Value\":null}\r\n        this.Garage = filterProps.garage; // {\"Value\":null}\r\n        this.SchoolCatchmentId = filterProps.schoolCatchmentId ? filterProps.schoolCatchmentId : { value: null }; // {\"Value\":null}\r\n    }\r\n    public toJson() {\r\n        return {\r\n            price: { min: this.Price.Min, max: this.Price.Max },\r\n            beds: { min: this.Beds.Min, max: this.Beds.Max },\r\n            baths: { min: this.Baths.Min, max: this.Baths.Max },\r\n            mla: { min: this.Mla.Min, max: this.Mla.Max },\r\n            tla: { min: this.Tla.Min, max: this.Tla.Max },\r\n            lotSize: { min: this.LotSize.Min, max: this.LotSize.Max },\r\n            age: { min: this.Age.Min, max: this.Age.Max },\r\n            type: this.Type,\r\n            style: this.Style,\r\n            class: this.Class,\r\n            status: this.Status,\r\n            heatType: this.HeatType,\r\n            waterfront: this.Waterfront,\r\n            garage: this.Garage,\r\n            schoolCatchmentId: this.SchoolCatchmentId,\r\n        };\r\n    }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport * as esri from 'esri-leaflet';\r\nimport { MinMax } from '@/models/MinMax';\r\nimport { Filter } from '@/models/Filter';\r\n\r\n@Component\r\nexport default class FilterDialog extends Vue {\r\n\r\n    public showDialog: boolean = false;\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 415;\r\n\r\n    public spatialFilterApplied: boolean = false;\r\n    public spatialFilterLoading: boolean = false;\r\n    public spatialFilterLayer: L.GeoJSON | null = null;\r\n\r\n    public isActive: boolean = true; // \"1\"\r\n    public isPending: boolean = true; // \"3\"\r\n    public isSold: boolean = false; // \"2\"\r\n\r\n    public isWaterfront: boolean = false;\r\n    public isGarage: boolean = false;\r\n\r\n    public filterClass: any = [];\r\n    public filterType: any = [];\r\n    public filterStyle: any = [];\r\n    public filterHeat: any = [];\r\n\r\n    public priceRange = {\r\n        // steps\r\n        min: 0,\r\n        max: 49,\r\n    };\r\n\r\n    public bedsRange = {\r\n        min: 0,\r\n        max: 10,\r\n    };\r\n\r\n    public bathsRange = {\r\n        min: 0,\r\n        max: 10,\r\n    };\r\n\r\n    public mlaRange = {\r\n        min: 0,\r\n        max: 7500,\r\n    };\r\n\r\n    public tlaRange = {\r\n        min: 0,\r\n        max: 7500,\r\n    };\r\n\r\n    public lotRange = {\r\n        // steps\r\n        min: 0,\r\n        max: 15,\r\n    };\r\n\r\n    public ageRange = {\r\n        min: 0,\r\n        max: 100,\r\n    };\r\n\r\n    public schoolCatchment = {\r\n        label: '- no school selected -',\r\n        value: '0',\r\n    };\r\n\r\n    public spatialFilterStyle = {\r\n        color: '#DC1C2E',\r\n        fillColor: '#DC1C2E',\r\n        weight: 4,\r\n        opacity: 1,\r\n        fillOpacity: 0.15,\r\n    };\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'showFilterDialog') {\r\n            this.onShowDialog();\r\n        }\r\n        if (action.type === 'clearActiveFilter') {\r\n            this.onClearSpatialFilter();\r\n        }\r\n        if (action.type === 'setSpatialFilter') {\r\n            if (action.payload) {\r\n                this.onShowSpatialFilter(action.payload);\r\n            }\r\n        }\r\n    });\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get classOptions() {\r\n        return this.$store.state.config.FilterOptions.ClassOptions;\r\n    }\r\n\r\n    get typeOptions() {\r\n        // UI says these are type options even though they are listed under style\r\n        return this.$store.state.config.FilterOptions.StyleOptions;\r\n    }\r\n\r\n    get styleOptions() {\r\n        // UI says these are style options even though they are listed under type\r\n        return this.$store.state.config.FilterOptions.ResidentialTypeOptions.concat(this.$store.state.config.FilterOptions.CommercialTypeOptions);\r\n    }\r\n\r\n    get heatOptions() {\r\n        return this.$store.state.config.FilterOptions.HeatTypeOptions;\r\n    }\r\n\r\n    get schoolCatchmentOptions() {\r\n        return this.$store.state.config.FilterOptions.SchoolOptions;\r\n    }\r\n\r\n    get priceLabelMin() {\r\n        const priceOption = this.config.FilterOptions.PriceMinOptions.find((options: any) => options.step === this.priceRange.min);\r\n        return priceOption.label;\r\n    }\r\n\r\n    get priceLabelMax() {\r\n        const priceOption = this.config.FilterOptions.PriceMaxOptions.find((options: any) => options.step === this.priceRange.max);\r\n        return priceOption.label;\r\n    }\r\n\r\n    get lotLabelMin() {\r\n        const lotOption = this.config.FilterOptions.LotSizeMinOptions.find((options: any) => options.step === this.lotRange.min);\r\n        return lotOption.label;\r\n    }\r\n\r\n    get lotLabelMax() {\r\n        const lotOption = this.config.FilterOptions.LotSizeMaxOptions.find((options: any) => options.step === this.lotRange.max);\r\n        return lotOption.label;\r\n    }\r\n\r\n    get activeFilter(): Filter | null {\r\n        return this.$store.state.filters.activeFilter;\r\n    }\r\n\r\n    @Watch('activeFilter', { immediate: false, deep: true })\r\n    public activeFilterChanged(newFilter: Filter, oldFilter: Filter) {\r\n        // a filter may get restored, controls needs to sync up...\r\n        console.log('FilterDialog: activeFilter Changed');\r\n        if (!this.showDialog) {\r\n            console.log('FilterDialog: updating filter dialog');\r\n            if (JSON.stringify(newFilter.Status) !== JSON.stringify(oldFilter.Status)) {\r\n                this.isActive = newFilter.Status.value.indexOf('1') !== -1 ? true : false;\r\n                this.isPending = newFilter.Status.value.indexOf('3') !== -1 ? true : false;\r\n                this.isSold = newFilter.Status.value.indexOf('2') !== -1 ? true : false;\r\n            }\r\n            if (JSON.stringify(newFilter.Waterfront) !== JSON.stringify(oldFilter.Waterfront)) {\r\n                this.isWaterfront = newFilter.Waterfront.value === 1 ? true : false;\r\n            }\r\n            if (JSON.stringify(newFilter.Garage) !== JSON.stringify(oldFilter.Garage)) {\r\n                this.isGarage = newFilter.Garage.value === 1 ? true : false;\r\n            }\r\n\r\n            if (JSON.stringify(newFilter.Class) !== JSON.stringify(oldFilter.Class)) {\r\n                this.filterClass = newFilter.Class.value;\r\n            }\r\n            if (JSON.stringify(newFilter.Type) !== JSON.stringify(oldFilter.Type)) {\r\n                this.filterType = newFilter.Style.value;\r\n            }\r\n            if (JSON.stringify(newFilter.Style) !== JSON.stringify(oldFilter.Style)) {\r\n                this.filterStyle = newFilter.Type.value;\r\n            }\r\n            if (JSON.stringify(newFilter.HeatType) !== JSON.stringify(oldFilter.HeatType)) {\r\n                this.filterHeat = newFilter.HeatType.value ? newFilter.HeatType.value : [];\r\n            }\r\n            if (JSON.stringify(newFilter.Beds) !== JSON.stringify(oldFilter.Beds)) {\r\n                this.bedsRange = {\r\n                    min: newFilter.Beds.Min,\r\n                    max: newFilter.Beds.Max === this.config.FilterOptions.BedNoMaxVal ? 10 : newFilter.Beds.Max,\r\n                };\r\n            }\r\n            if (JSON.stringify(newFilter.Baths) !== JSON.stringify(oldFilter.Baths)) {\r\n                this.bathsRange = {\r\n                    min: newFilter.Baths.Min,\r\n                    max: newFilter.Baths.Max === this.config.FilterOptions.BathNoMaxVal ? 10 : newFilter.Baths.Max,\r\n                };\r\n            }\r\n            if (JSON.stringify(newFilter.Mla) !== JSON.stringify(oldFilter.Mla)) {\r\n                this.mlaRange = {\r\n                    min: newFilter.Mla.Min,\r\n                    max: newFilter.Mla.Max === this.config.FilterOptions.MlaNoMaxVal ? 7500 : newFilter.Mla.Max,\r\n                };\r\n            }\r\n            if (JSON.stringify(newFilter.Tla) !== JSON.stringify(oldFilter.Tla)) {\r\n                this.tlaRange = {\r\n                    min: newFilter.Tla.Min,\r\n                    max: newFilter.Tla.Max === this.config.FilterOptions.TlaNoMaxVal ? 7500 : newFilter.Tla.Max,\r\n                };\r\n            }\r\n            if (JSON.stringify(newFilter.Price) !== JSON.stringify(oldFilter.Price)) {\r\n                const priceMin = this.config.FilterOptions.PriceMinOptions.find((options: any) => options.value === newFilter.Price.Min);\r\n                const priceMax = this.config.FilterOptions.PriceMaxOptions.find((options: any) => options.value === newFilter.Price.Max);\r\n                this.priceRange = {\r\n                    min: priceMin.step,\r\n                    max: priceMax.step,\r\n                };\r\n            }\r\n            if (JSON.stringify(newFilter.LotSize) !== JSON.stringify(oldFilter.LotSize)) {\r\n                const lotMin = this.config.FilterOptions.LotSizeMinOptions.find((options: any) => options.value === newFilter.LotSize.Min);\r\n                const lotMax = this.config.FilterOptions.LotSizeMaxOptions.find((options: any) => options.value === newFilter.LotSize.Max);\r\n                this.lotRange = {\r\n                    min: lotMin.step,\r\n                    max: lotMax.step,\r\n                };\r\n            }\r\n            if (JSON.stringify(newFilter.Age) !== JSON.stringify(oldFilter.Age)) {\r\n                this.ageRange = {\r\n                    min: newFilter.Age.Min,\r\n                    max: newFilter.Age.Max === this.config.FilterOptions.AgeNoMaxVal ? 100 : newFilter.Age.Max,\r\n                };\r\n            }\r\n            if (JSON.stringify(newFilter.SchoolCatchmentId) !== JSON.stringify(oldFilter.SchoolCatchmentId)) {\r\n                let selectedOption = this.schoolCatchmentOptions.find((options: any) => options.value === newFilter.SchoolCatchmentId.value);\r\n                if (!selectedOption) {\r\n                    selectedOption =  { label: '- no school selected -', value: '0'};\r\n                    this.schoolCatchment = selectedOption;\r\n                } else {\r\n                    this.schoolCatchment = selectedOption;\r\n                    this.spatialFilterApplied = true;\r\n                    if (this.spatialFilterLayer) {\r\n                        this.spatialFilterLayer.removeFrom(this.map);\r\n                    }\r\n                    this.onSchoolFilter();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public onFilterDialogHide() {\r\n        console.log('FilterDialog: onFilterDialogHide()');\r\n    }\r\n\r\n    public onShowDialog() {\r\n        this.showDialog = true;\r\n    }\r\n\r\n    public onClearSpatialFilter() {\r\n        console.log('FilterDialog: onClearSpatialFilter()');\r\n        if (this.spatialFilterApplied) {\r\n            if (this.spatialFilterLayer) {\r\n                this.spatialFilterLayer.removeFrom(this.map);\r\n                // this.$store.dispatch('setSchoolCatchmentId', null);\r\n                this.$store.dispatch('setSpatialFilter', null);\r\n            }\r\n            this.spatialFilterApplied = false;\r\n        }\r\n    }\r\n\r\n    public onShowSpatialFilter(spatialFilter: string) {\r\n        console.log('FilterDialog: onShowSpatialFilter');\r\n        if (this.spatialFilterLayer) {\r\n            this.spatialFilterLayer.removeFrom(this.map);\r\n        }\r\n\r\n        this.spatialFilterLayer = L.geoJSON(JSON.parse(spatialFilter),\r\n            {\r\n                style: this.spatialFilterStyle,\r\n                pane: 'vector',\r\n            }).addTo(this.map);\r\n        this.map.fitBounds(this.spatialFilterLayer.getBounds());\r\n\r\n        this.spatialFilterApplied = true;\r\n    }\r\n\r\n    public onApplyFilter() {\r\n        console.log('FilterDialog: onApplyFilter()');\r\n        if (this.spatialFilterApplied) {\r\n            if (this.spatialFilterLayer) {\r\n                console.log('set SF draw polygon');\r\n                this.$store.dispatch('setSpatialFilter', this.spatialFilterLayer);\r\n                this.applyAttributeFilter();\r\n                this.showDialog = false;\r\n            }\r\n        } else if (this.schoolCatchment.value !== '0') {\r\n            console.log('set SF school catchment');\r\n            this.spatialFilterLoading = true;\r\n            this.onSchoolFilter(); // if there is an attribute filter it gets applied after school spatial is set\r\n        } else {\r\n            this.applyAttributeFilter();\r\n            this.showDialog = false;\r\n        }\r\n    }\r\n\r\n    public applyAttributeFilter() {\r\n        const priceMin = this.config.FilterOptions.PriceMinOptions.find((options: any) => options.step === this.priceRange.min);\r\n        const priceMax = this.config.FilterOptions.PriceMaxOptions.find((options: any) => options.step === this.priceRange.max);\r\n        const lotMin = this.config.FilterOptions.LotSizeMinOptions.find((options: any) => options.step === this.lotRange.min);\r\n        const lotMax = this.config.FilterOptions.LotSizeMaxOptions.find((options: any) => options.step === this.lotRange.max);\r\n\r\n        const status: string[] = [];\r\n        if (this.isActive) {\r\n            status.push('1');\r\n        }\r\n        if (this.isPending) {\r\n            status.push('3');\r\n        }\r\n        if (this.isSold) {\r\n            status.push('2');\r\n        }\r\n\r\n        const newFilter = new Filter({\r\n            price: { min: priceMin.value, max: priceMax.value },\r\n            beds: { min: this.bedsRange.min, max: this.bedsRange.max === 10 ? this.config.FilterOptions.BedNoMaxVal : this.bedsRange.max },\r\n            baths: { min: this.bathsRange.min, max: this.bathsRange.max === 10 ? this.config.FilterOptions.BathNoMaxVal : this.bathsRange.max },\r\n            mla: { min: this.mlaRange.min, max: this.mlaRange.max === 7500 ? this.config.FilterOptions.MlaNoMaxVal : this.mlaRange.max },\r\n            tla: { min: this.tlaRange.min, max: this.tlaRange.max === 7500 ? this.config.FilterOptions.TlaNoMaxVal : this.tlaRange.max },\r\n            lotSize: { min: lotMin.value, max: lotMax.value },\r\n            age: { min: this.ageRange.min, max: this.ageRange.max === 100 ? this.config.FilterOptions.AgeNoMaxVal : this.ageRange.max },\r\n            type: { value: this.filterStyle },\r\n            style: { value: this.filterType },\r\n            class: { value: this.filterClass },\r\n            status: { value: status },\r\n            heatType: { value: this.filterHeat },\r\n            waterfront: { value: this.isWaterfront ? 1 : null },\r\n            garage: { value: this.isGarage ? 1 : null },\r\n            schoolCatchmentId: { value: this.schoolCatchment.value === '0' ? null : this.schoolCatchment.value },\r\n        });\r\n        console.log(newFilter);\r\n        this.$store.dispatch('setActiveFilter', newFilter);\r\n    }\r\n\r\n    public onSchoolFilter() {\r\n        this.spatialFilterLoading = true;\r\n\r\n        const schoolQuery = esri.query({\r\n            url: this.config.SchoolCatchmentLayer.url,\r\n            proxy: this.config.proxy.url,\r\n        });\r\n\r\n        schoolQuery.where('OBJECTID=' + this.schoolCatchment.value);\r\n\r\n        console.log('FilterDialog: schoolQuery.run');\r\n        schoolQuery.run((error, featureCollection) => {\r\n            if (!error && featureCollection.features.length > 0) {\r\n                this.$store.dispatch('setSpatialFilter', JSON.stringify(L.geoJSON(featureCollection.features[0]).toGeoJSON()));\r\n                this.$store.dispatch('setSchoolCatchmentId', this.schoolCatchment.value);\r\n\r\n                this.spatialFilterLoading = false;\r\n\r\n                this.applyAttributeFilter();\r\n                this.showDialog = false;\r\n\r\n            } else {\r\n                // Logger.writeError(\"failed to get School:\" + error);\r\n                // ErrorMgr.logError(\"failed to get School:\" + error);\r\n                console.error(error);\r\n                this.spatialFilterLoading = false;\r\n                this.applyAttributeFilter();\r\n                this.showDialog = false;\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n    public onClearAll() {\r\n        this.$store.dispatch('clearActiveFilter');\r\n        this.showDialog = false;\r\n    }\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterDialog.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilterDialog.vue?vue&type=template&id=f252beba&scoped=true&\"\nimport script from \"./FilterDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilterDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilterDialog.vue?vue&type=style&index=0&id=f252beba&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  \"f252beba\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QIcon,QSpace,QBtn,QCheckbox,QSeparator,QSelect,QItem,QItemSection,QToggle,QItemLabel,QRange,QTooltip,QCardActions,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QIcon,QSpace,QBtn,QCheckbox,QSeparator,QSelect,QItem,QItemSection,QToggle,QItemLabel,QRange,QTooltip,QCardActions})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"listing-dialog-size\"},[(_vm.selectedListingDetail)?_c('div',[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3\",staticStyle:{\"height\":\"6vh\"}},[(_vm.selectedListingDetail.Address != null)?_c('div',{class:[_vm.isMobile ? 'text-subtitle2' : 'text-h6'],staticStyle:{\"color\":\"#404041\"}},[(!_vm.isMobile)?_c('q-icon',{attrs:{\"name\":\"fas fa-home\"}}):_vm._e(),_vm._v(\" \"+_vm._s(_vm.address)+\" \")],1):_vm._e(),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticStyle:{\"color\":\"#404041\"},attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1)],1),_c('q-card-section',{ref:\"detailWrapper\",staticClass:\"scroll card-section\"},[_c('q-tabs',{staticClass:\"bg-blue-brand text-white rounded-borders\",attrs:{\"no-caps\":\"\",\"indicator-color\":\"red-8\"},on:{\"input\":_vm.onTabChange},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"overview\",\"icon\":\"fas fa-list-alt\",\"label\":_vm.isMobile ? '': 'Overview'}}),(_vm.isContainsHRMData)?_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"hrmData\",\"icon\":\"fas fa-building\",\"label\":_vm.isMobile ? '': 'HRM Data'}}):_vm._e(),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"photos\",\"icon\":\"fas fa-camera\",\"label\":_vm.isMobile ? '': 'Photos'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"taxes\",\"icon\":\"fas fa-money-bill\",\"label\":_vm.isMobile ? '': 'Taxes'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"salesHistory\",\"icon\":\"fas fa-history\",\"label\":_vm.isMobile ? '': 'Sales History'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"demographics\",\"icon\":\"fas fa-users\",\"label\":_vm.isMobile ? '': 'Demographics'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"schools\",\"icon\":\"fas fa-graduation-cap\",\"label\":_vm.isMobile ? '': 'Schools'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"streetView\",\"icon\":\"fas fa-street-view\",\"label\":_vm.isMobile ? '': 'Street View'}})],1),_c('q-tab-panels',{attrs:{\"animated\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('q-tab-panel',{attrs:{\"name\":\"overview\"}},[_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Description\")]),_c('div',[_vm._v(_vm._s(_vm.selectedListingDetail.PropOvervw))]),_c('br'),_c('hr'),_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Listing Details\")]),_c('div',{staticClass:\"row \"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Status\")]),_c('br'),_c('span',{staticClass:\"label text-white rounded-borders q-pa-xs\",class:_vm.selectedListingStatusClass},[_vm._v(_vm._s(_vm.selectedListingDetail.ListStatus))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Listing Price\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.formattedPrice))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"MLS®\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.MlsNo))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"PID\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.PID))])]),(_vm.selectedListingDetail.Type != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Type\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.Type))])]):_vm._e(),(_vm.selectedListingDetail.Style != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Style\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.Style))])]):_vm._e(),(_vm.selectedListingDetail.BuildingAge != null && _vm.selectedListingDetail.ClassLong != 'Vacant Land')?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Age\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.BuildingAge))])]):_vm._e(),(_vm.selectedListingDetail.SqFootage != null && _vm.selectedListingDetail.ClassLong != 'Vacant Land')?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Square Footage (MLA)\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.SqFootage)+\" ft\"),_c('sup',[_vm._v(\"2\")])])]):_vm._e(),(_vm.selectedListingDetail.TotalFinishedSqFt != null && _vm.selectedListingDetail.ClassLong != 'Vacant Land')?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Total Fin SqFt\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.TotalFinishedSqFt)+\" ft\"),_c('sup',[_vm._v(\"2\")])])]):_vm._e(),(_vm.selectedListingDetail.CondoFee != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Condo Fees\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.CondoFee))])]):_vm._e(),_c('div',{staticClass:\"col-xs-12 col-sm-12 col-md-8 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Brokerage\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.ListingOfficeName))])]),(_vm.selectedListingDetail.DaysOnMarket != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Days On Market\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.DaysOnMarket))])]):_vm._e(),(_vm.selectedListingDetail.ClassLong != 'Vacant Land' && _vm.selectedListingDetail.ClassLong != 'Commercial' && _vm.selectedListingDetail.ClassLong != 'Multi-Unit')?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Bedrooms\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.NumBeds))])]):_vm._e(),(_vm.selectedListingDetail.ClassLong != 'Vacant Land' && _vm.selectedListingDetail.ClassLong != 'Commercial' && _vm.selectedListingDetail.ClassLong != 'Multi-Unit')?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Full Baths\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.FullBaths))])]):_vm._e(),(_vm.selectedListingDetail.ClassLong != 'Vacant Land' && _vm.selectedListingDetail.ClassLong != 'Commercial' && _vm.selectedListingDetail.ClassLong != 'Multi-Unit')?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Half Baths\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.HalfBaths))])]):_vm._e(),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Parcel Size\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.formattedParcelSize))])])]),_c('hr'),_c('div',{staticClass:\"row\"},[(_vm.selectedListingDetail.WaterSource != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Water\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.WaterSource))])]):_vm._e(),(_vm.selectedListingDetail.SewageGroundSpill != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Sewer\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.SewageGroundSpill))])]):_vm._e(),_c('div',{staticClass:\"col-md-4\"}),(_vm.selectedListingDetail.HeatingCoolingType != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Heating/Cooling Types\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.addSpaceAfterCommas(_vm.selectedListingDetail.HeatingCoolingType)))])]):_vm._e(),(_vm.selectedListingDetail.Utillities != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Utilities\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.addSpaceAfterCommas(_vm.selectedListingDetail.Utillities)))])]):_vm._e()]),_c('br'),_c('hr'),_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Building Specifications\")]),(_vm.isBuildingsSpecsVisible == true)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Foundation Type\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.Foundation))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-6 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Roof\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.addSpaceAfterCommas(_vm.selectedListingDetail.Roof)))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Exterior Finish\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.addSpaceAfterCommas(_vm.selectedListingDetail.ExternalFinish)))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-6 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Flooring\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.addSpaceAfterCommas(_vm.selectedListingDetail.Flooring)))])])]):_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"No information available\")]),_c('br'),_c('hr'),_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Rooms\")]),(_vm.roomsData.length != 0)?_c('q-table',{attrs:{\"data\":_vm.roomsData,\"columns\":_vm.columns,\"row-key\":\"name\",\"dense\":\"\",\"virtual-scroll\":\"\",\"hide-bottom\":\"\",\"rows-per-page-options\":[0]}}):_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"No information available\")]),_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Garage & Parking\")]),(_vm.selectedListingDetail.Garage != null &&  _vm.selectedListingDetail.GarageDetails != null)?_c('div',{staticClass:\"row\"},[(_vm.selectedListingDetail.Garage != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Garage\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.Garage))])]):_vm._e(),(_vm.selectedListingDetail.GarageDetails != null)?_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-6 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Garage Details\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.GarageDetails))])]):_vm._e()]):_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"No information available\")]),_c('br'),(_vm.selectedListingDetail.VirTourURL != null)?_c('div',[_c('div',{staticClass:\"text-blue-brand text-h6\"},[_vm._v(\"Virtual Tour\")]),_c('a',{staticClass:\"listingValue\",attrs:{\"target\":\"_blank\",\"rel\":\"nofollow\",\"href\":_vm.selectedListingDetail.VirTourURL}},[_vm._v(\"Virtual Tour - \"+_vm._s(_vm.selectedListingDetail.Address)+\" (MLS ® \"+_vm._s(_vm.selectedListingDetail.MlsNo)+\")\")])]):_vm._e(),(_vm.selectedListingDetail.Inclusions != null)?_c('div',[_c('div',{staticClass:\"text-blue-brand text-h6\"},[_vm._v(\"Inclusions\")]),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.Inclusions))]),_c('br')]):_vm._e(),(_vm.selectedListingDetail.Exclusions != null)?_c('div',[_c('div',{staticClass:\"text-blue-brand text-h6\"},[_vm._v(\"Exclusions\")]),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.Exclusions))])]):_vm._e(),_c('br'),_c('br')],1),_c('q-tab-panel',{staticClass:\"panelSize\",attrs:{\"name\":\"hrmData\"}},[_c('HRMDataInfo',{attrs:{\"detailType\":\"listing\"}})],1),_c('q-tab-panel',{attrs:{\"name\":\"photos\"}},[_c('PhotoPanel')],1),_c('q-tab-panel',{staticClass:\"panelSize\",attrs:{\"name\":\"taxes\"}},[_c('TaxesPanel',{attrs:{\"detailType\":\"listing\"}})],1),_c('q-tab-panel',{staticClass:\"panelSize\",attrs:{\"name\":\"salesHistory\"}},[_c('SalesHistoryPanel',{attrs:{\"detailType\":\"listing\"}})],1),_c('q-tab-panel',{attrs:{\"name\":\"demographics\"}},[_c('DemographicsPanel',{attrs:{\"detailType\":\"listing\"}})],1),_c('q-tab-panel',{attrs:{\"name\":\"schools\"}},[_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Elementary\")]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"English\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.ElemSchool))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"French\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.ElemSchoolFr))])])]),_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Junior High\")]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"English\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.MidSchool))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"French\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.MidSchoolFr))])])]),_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Senior High\")]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"English\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.HighSchool))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"French\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.selectedListingDetail.HighSchoolFr))])])])]),_c('q-tab-panel',{attrs:{\"name\":\"streetView\"}},[_c('GoogleMapPanel')],1)],1)],1),_c('q-card-section',{staticClass:\"footer-section no-padding\"},[_c('div',{staticClass:\"q-mt-xs\",staticStyle:{\"float\":\"right\"}},[_c('div',[_c('q-btn',{staticClass:\"q-mr-xs q-pa-xs\",staticStyle:{\"background\":\"#eee\",\"font-size\":\"13px\",\"margin-right\":\"15px\"},attrs:{\"dense\":\"\",\"size\":\"sm\",\"icon\":\"fas fa-share-alt buttonIcon\",\"no-caps\":\"\"},on:{\"click\":_vm.onOpenShareDialog}},[_vm._v(\"Share\")]),(_vm.selectedListingDetail.ListStatus == 'FOR SALE' || _vm.selectedListingDetail.ListStatus == 'PENDING' || _vm.selectedListingDetail.ListStatus == 'FOR LEASE')?_c('q-btn',{staticClass:\"q-pa-xs\",staticStyle:{\"font-size\":\"13px\",\"margin-right\":\"5px\"},attrs:{\"dense\":\"\",\"size\":\"sm\",\"no-caps\":\"\",\"color\":\"red-brand\"},on:{\"click\":_vm.onOpenBookViewingDialog}},[_c('i',{staticClass:\"fa fa-eye buttonIcon\"}),_vm._v(\"Book Viewing \")]):_vm._e()],1)])])],1):_c('div',[_c('q-card-section',{staticClass:\"row items-center q-ma-lg\"},[_c('q-spinner',{staticClass:\"col justify-center\",attrs:{\"color\":\"blue-brand\",\"size\":\"3em\",\"thickness\":10}})],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.buildingPermitsData.length != 0)?_c('div',[_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Building Permits\")]),_c('q-table',{attrs:{\"data\":_vm.buildingPermitsData,\"columns\":_vm.buildingPermitsColumns,\"row-key\":\"name\",\"hide-bottom\":\"\",\"wrap-cells\":\"\"},scopedSlots:_vm._u([{key:\"header\",fn:function(props){return [_c('q-tr',{attrs:{\"props\":props}},_vm._l((props.cols),function(col){return _c('q-th',{key:col.name,staticClass:\"bold-text\",attrs:{\"props\":props}},[_vm._v(\" \"+_vm._s(col.label)+\" \")])}),1)]}}],null,false,3464474138)}),_c('hr')],1):_vm._e(),(_vm.parcelHrmData)?_c('div',[_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Halifax Regional Municipality Data\")]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Zoning\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.parcelHrmData.Zone))]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(\"By-Law Code: \"+_vm._s(_vm.parcelHrmData.ZoneByLawId))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"By-Law Area\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.parcelHrmData.ByLawName))]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.parcelHrmData.ByLawCode))])]),_c('div',{staticClass:\"col-md-4\"}),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Polling District\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.parcelHrmData.PollDistName))]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(\"Councillor: \"+_vm._s(_vm.parcelHrmData.Councillor))])]),_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Waste Collection\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.parcelHrmData.WasteCollect))]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(\"Contractor: \"+_vm._s(_vm.parcelHrmData.WasteCollectContractor))])])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ListingDetail } from '@/models/ListingDetail';\r\nimport { ParcelHrmData } from '@/models/ParcelHrmData';\r\n\r\n@Component\r\nexport default class HRMDataInfo extends Vue {\r\n\r\n    @Prop(String) public readonly detailType: string | undefined;\r\n\r\n    public buildingPermitsColumns = [\r\n        { name: 'PermitNumber', align: 'left', label: 'Permit Number', field: 'PermitNumber', style: 'width: 40px;' },\r\n        { name: 'DateApplication', align: 'left', label: 'Application Date', field: 'DateApplication', style: 'width: 40px;' },\r\n        { name: 'DateIssued', align: 'left', label: 'Issued Date', field: 'DateIssued', style: 'width: 40px' },\r\n        { name: 'ProjectDescription', align: 'left', label: 'Description', field: 'ProjectDescription', style: 'width: 40px' },\r\n        { name: 'PermitStatus', align: 'left', label: 'Permit Status', field: 'PermitStatus', style: 'width: 40px' },\r\n        { name: 'EstimatedValue', align: 'left', label: 'Estimated Value', field: 'EstimatedValue', style: 'width: 40px' },\r\n        { name: 'Address', align: 'left', label: 'Address', field: 'Address', style: 'width: 60px;'},\r\n    ];\r\n\r\n    get parcelHrmData(): ParcelHrmData | null {\r\n        if (this.detailType === 'listing') {\r\n            if (this.$store.state.listings.selectedListingDetail && this.$store.state.listings.selectedListingDetail.ParcelData.ParcelHrmData.PID) {\r\n                return this.$store.state.listings.selectedListingDetail.ParcelData.ParcelHrmData;\r\n            }\r\n        }\r\n        if (this.detailType === 'parcel') {\r\n            if (this.$store.state.parcels.selectedParcelDetail && this.$store.state.parcels.selectedParcelDetail.ParcelData.ParcelHrmData.PID) {\r\n                return this.$store.state.parcels.selectedParcelDetail.ParcelData.ParcelHrmData;\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n\r\n    get buildingPermitsData(): string[] {\r\n        if (this.detailType === 'listing') {\r\n            if (this.$store.state.listings.selectedListingDetail.ParcelData.BuildPermits) {\r\n                return this.$store.state.listings.selectedListingDetail.ParcelData.BuildPermits;\r\n            }\r\n        }\r\n        if (this.detailType === 'parcel') {\r\n            if (this.$store.state.parcels.selectedParcelDetail.ParcelData.BuildPermits) {\r\n                return this.$store.state.parcels.selectedParcelDetail.ParcelData.BuildPermits;\r\n            }\r\n        }\r\n        return [];\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HRMDataInfo.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HRMDataInfo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HRMDataInfo.vue?vue&type=template&id=9f14ea9e&scoped=true&\"\nimport script from \"./HRMDataInfo.vue?vue&type=script&lang=ts&\"\nexport * from \"./HRMDataInfo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HRMDataInfo.vue?vue&type=style&index=0&id=9f14ea9e&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  \"9f14ea9e\",\n  null\n  \n)\n\nexport default component.exports\nimport {QTable,QTr,QTh} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QTable,QTr,QTh})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-card',[_c('q-tabs',{staticClass:\"bg-white-brand text-grey-9 rounded-borders\",attrs:{\"no-caps\":\"\",\"indicator-color\":\"grey-9\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('q-tab',{attrs:{\"name\":\"streetview\",\"icon\":\"fas fa-street-view\",\"label\":\"Street View\"}}),_c('q-tab',{attrs:{\"name\":\"googlemap\",\"icon\":\"fas fa-map-pin\",\"label\":\"Map\"},on:{\"click\":_vm.onClickMapTab}})],1),_c('hr'),_c('q-tab-panels',{attrs:{\"animated\":\"\",\"keep-alive\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('q-tab-panel',{attrs:{\"name\":\"streetview\"}},[_c('div',{ref:\"street-view-map\",staticClass:\"google-map-panel\",attrs:{\"id\":\"street-view-map\"}})]),_c('q-tab-panel',{attrs:{\"name\":\"googlemap\"}},[_c('div',{ref:\"google-map\",staticClass:\"google-map-panel\",attrs:{\"id\":\"google-map\"}})])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ListingDetail } from '@/models/ListingDetail';\r\nimport { Loader } from '@googlemaps/js-api-loader';\r\n\r\n@Component\r\nexport default class GoogleMapPanel extends Vue {\r\n\r\n    public tab: string = 'streetview';\r\n    public isMapLoaded: boolean = false;\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get selectedListingDetail(): ListingDetail {\r\n        return this.$store.state.listings.selectedListingDetail;\r\n    }\r\n\r\n    get apiKey(): string {\r\n        return this.config.gMapAPIKey;\r\n    }\r\n\r\n    get googleMarkerUrl(): string {\r\n        return this.config.googleMarkerUrl;\r\n    }\r\n\r\n    public mounted() {\r\n        this.initStreetView();\r\n    }\r\n\r\n    public initStreetView() {\r\n        const loader = new Loader({\r\n            apiKey: this.apiKey,\r\n        });\r\n\r\n        loader.load().then(() => {\r\n            const listingPosition = new google.maps.LatLng(this.selectedListingDetail.Latitude, this.selectedListingDetail.Longitude);\r\n\r\n            const panoOptions = {\r\n                position: listingPosition,\r\n                panControl: false,\r\n                addressControl: false,\r\n                linksControl: false,\r\n            };\r\n            const googleStreet = new google.maps.StreetViewPanorama(document.getElementById('street-view-map') as Element, panoOptions);\r\n            const googleStreetViewService = new google.maps.StreetViewService();\r\n            const googleNameSpace = google;\r\n            googleStreetViewService.getPanorama({\r\n                location: listingPosition,\r\n                preference: google.maps.StreetViewPreference.NEAREST,\r\n                radius: 50,\r\n                },\r\n                (panoData: any, status: any) => {\r\n                    if (panoData != null) {\r\n                        const panoCenter = panoData.location.latLng;\r\n                        const heading = google.maps.geometry.spherical.computeHeading(panoCenter, listingPosition);\r\n                        const pov = googleStreet.getPov();\r\n                        pov.heading = heading;\r\n                        googleStreet.setPosition(panoCenter);\r\n                        googleStreet.setPov(pov);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    public onClickMapTab() {\r\n        if (!this.isMapLoaded) {\r\n            this.$nextTick( () => {\r\n                const loader = new Loader({\r\n                    apiKey: this.apiKey,\r\n                });\r\n\r\n                loader.load().then(() => {\r\n                    const listingPosition = new google.maps.LatLng(this.selectedListingDetail.Latitude, this.selectedListingDetail.Longitude);\r\n\r\n                    const mapOptions = {\r\n                        center: listingPosition,\r\n                        zoom: 16,\r\n                    };\r\n                    const mapContainer = new google.maps.Map(document.getElementById('google-map') as Element, mapOptions);\r\n\r\n                    const googleMarker = new google.maps.Marker({\r\n                        position: listingPosition,\r\n                        icon: this.googleMarkerUrl,\r\n                        map: mapContainer,\r\n                    });\r\n                    this.isMapLoaded = true;\r\n                }).catch( (e) => {\r\n                    console.log(e);\r\n                });\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMapPanel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMapPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GoogleMapPanel.vue?vue&type=template&id=60ced04d&scoped=true&\"\nimport script from \"./GoogleMapPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./GoogleMapPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GoogleMapPanel.vue?vue&type=style&index=0&id=60ced04d&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  \"60ced04d\",\n  null\n  \n)\n\nexport default component.exports\nimport {QCard,QTabs,QTab,QTabPanels,QTabPanel} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QCard,QTabs,QTab,QTabPanels,QTabPanel})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn)?_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"tableItem\"},[_c('q-table',{attrs:{\"data\":_vm.allTaxAssessments,\"columns\":_vm.columns,\"hide-bottom\":\"\",\"dense\":_vm.isMobile,\"rows-per-page-options\":[0]},scopedSlots:_vm._u([{key:\"body-cell-info\",fn:function(props){return [_c('q-td',{staticClass:\"td-info\",attrs:{\"props\":props}},[(props.row.IsPosChange)?_c('div',[_c('i',{staticClass:\"fa fa-arrow-up fa-lg\",staticStyle:{\"color\":\"#005607\"},attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(props.row.PercentChange.toFixed(1)))]):_vm._e(),(props.row.IsNegChange)?_c('div',[_c('i',{staticClass:\"fa fa-arrow-down fa-lg\",staticStyle:{\"color\":\"#730000\"},attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(props.row.PercentChange.toFixed(1)))]):_vm._e(),(props.row.PercentChange === 0 && props.row.Index !== 0)?_c('div',[_vm._v(\"---\")]):_vm._e(),(props.row.Index === 0)?_c('div',[_vm._v(\"---\")]):_vm._e()])]}}],null,false,3043988280)})],1),_c('div',{staticClass:\"chartItem\"},[_c('ChartBar',{attrs:{\"chart-data\":_vm.datacollection,\"options\":_vm.options}})],1)]):_c('div',[_c('LoginRequiredPanel',{attrs:{\"header\":\"Nova Scotia Assessment information for every property at your finger tips!\",\"subheader\":\"Please login in order to access the property assessment histories.\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface ITaxAssessment {\r\n    Index: number;\r\n    Year: number;\r\n    Amount: number;\r\n    AmountAsText: string;\r\n    PercentChange: number;\r\n    IsPosChange: boolean;\r\n    IsNegChange: boolean;\r\n}\r\n\r\nexport class TaxAssessment implements ITaxAssessment {\r\n\r\n    public Index: number;\r\n    public Year: number;\r\n    public Amount: number;\r\n    public AmountAsText: string;\r\n    public PercentChange: number;\r\n    public IsPosChange: boolean;\r\n    public IsNegChange: boolean;\r\n    constructor(\r\n        index: number, year: number, amount: number, amountAsText: string,\r\n        percentChange: number, isPosChange: boolean, isNegChange: boolean,\r\n    ) {\r\n        this.Index = index;\r\n        this.Year = year;\r\n        this.Amount = amount;\r\n        this.AmountAsText = amountAsText;\r\n        this.PercentChange = percentChange;\r\n        this.IsPosChange = isPosChange;\r\n        this.IsNegChange = isNegChange;\r\n    }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"20px\",\"text-align\":\"center\",\"width\":\"100%\"}},[_c('span',{staticClass:\"large\"},[_vm._v(\" \"+_vm._s(_vm.panelHeader)+\" \")]),_c('hr'),_c('span',{staticClass:\"medium\"},[_vm._v(\" \"+_vm._s(_vm.panelSubheader)+\" \")]),_c('hr'),_vm._m(0),_c('div',{staticClass:\"q-pt-lg\"},[_c('q-btn',{staticClass:\"q-mx-sm\",attrs:{\"color\":\"blue-brand\",\"no-caps\":\"\",\"size\":\"md\",\"label\":\"Sign In\",\"type\":\"a\"},on:{\"click\":_vm.onLogin}}),_c('q-btn',{staticClass:\"q-mx-sm\",attrs:{\"color\":\"blue-brand\",\"no-caps\":\"\",\"size\":\"md\",\"label\":\"Sign Up\",\"type\":\"a\"},on:{\"click\":_vm.onRegister}})],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"small\"},[_vm._v(\" Don't have an account?\"),_c('br'),_vm._v(\"Create one for \"),_c('i',[_vm._v(\"FREE\")]),_vm._v(\" in seconds with no obligation! \")])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\n\r\n@Component({\r\n    props: ['header', 'subheader'],\r\n})\r\nexport default class LoginRequiredPanel extends Vue {\r\n\r\n    get panelHeader(): string {\r\n        return this.$props.header;\r\n    }\r\n\r\n    get panelSubheader(): string {\r\n        return this.$props.subheader;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    public onLogin() {\r\n        return this.$store.dispatch('login');\r\n    }\r\n\r\n    public onRegister() {\r\n        return this.$store.dispatch('login');\r\n    }\r\n\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginRequiredPanel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginRequiredPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginRequiredPanel.vue?vue&type=template&id=e23491dc&scoped=true&\"\nimport script from \"./LoginRequiredPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginRequiredPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginRequiredPanel.vue?vue&type=style&index=0&id=e23491dc&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  \"e23491dc\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtn} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtn})\n","var render, staticRenderFns\nimport script from \"./ChartBar.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartBar.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","\r\nimport { Bar, mixins } from 'vue-chartjs';\r\nconst { reactiveProp } = mixins;\r\n\r\nexport default { extends: Bar,\r\n  mixins: [reactiveProp],\r\n  props: ['options'],\r\n  mounted() {\r\n    this.renderChart(this.chartData, this.options);\r\n  },\r\n};\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartBar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ListingDetail } from '../models/ListingDetail';\r\nimport { ParcelAssessment } from '../models/ParcelAssessment';\r\nimport { TaxAssessment } from '../models/TaxAssessment';\r\nimport LoginRequiredPanel from '@/components/LoginRequiredPanel.vue';\r\nimport ChartBar from '@/components/ChartBar.vue';\r\n\r\n@Component({\r\n    components: {\r\n        ChartBar,\r\n        LoginRequiredPanel,\r\n    },\r\n})\r\nexport default class TaxesPanel extends Vue {\r\n\r\n    @Prop(String) public readonly detailType: string | undefined;\r\n\r\n    public widthThresholdValue: number = 768;\r\n    public taxAssessments: TaxAssessment[] = [];\r\n    public allYears: number[] = [];\r\n    public allValues: number[] = [];\r\n    public columns = [\r\n        {name: 'Year', label: 'Year', align: 'left', field: 'Year'},\r\n        {name: 'AmountAsText', label: 'Amount', align: 'left', field: 'AmountAsText'},\r\n        {name: 'info', label: '% Change', align: 'left', field: (row: TaxAssessment) => ''},\r\n    ];\r\n\r\n    public datacollection: any = {\r\n          labels: this.allYears,\r\n          datasets: [\r\n            {\r\n              label: '',\r\n              backgroundColor: '#007dc3',\r\n              data: [],\r\n            }],\r\n        };\r\n    public options = {\r\n        scales: {\r\n            yAxes: [{\r\n                ticks: {\r\n                    beginAtZero: true,\r\n                    callback: (value: any, index: any, values: any) => {\r\n                        return '$' + value;\r\n                    },\r\n                },\r\n                gridLines: {\r\n                    display: true,\r\n                },\r\n            }],\r\n            xAxes: [{\r\n                ticks: {\r\n                    beginAtZero: true,\r\n                },\r\n                gridLines: {\r\n                    display: false,\r\n                },\r\n            }],\r\n        },\r\n        legend: {\r\n            display: false,\r\n        },\r\n        tooltips: {\r\n            enabled: true,\r\n            mode: 'single',\r\n            callbacks: {\r\n                label: (tooltipItems: any, data: any) => {\r\n                    return '$' + tooltipItems.yLabel;\r\n                },\r\n            },\r\n        },\r\n        responsive: true,\r\n        maintainAspectRatio: false,\r\n        height: 100,\r\n        plugins: {\r\n            labels: {\r\n                fontColor: 'white',\r\n                render: (args: any ) => {\r\n                        return '';\r\n                },\r\n            },\r\n        },\r\n    };\r\n\r\n    get isLoggedIn() {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return this.$q.screen.width <= this.widthThresholdValue;\r\n    }\r\n\r\n    get allTaxAssessments(): TaxAssessment[] {\r\n        return this.taxAssessments!.reverse();\r\n    }\r\n\r\n    get ParcelAssessments(): ParcelAssessment[] {\r\n        if (this.detailType === 'parcel') {\r\n            if (this.$store.state.parcels.selectedParcelDetail && this.$store.state.parcels.selectedParcelDetail.ParcelData.ParcelAssessments) {\r\n                return this.$store.state.parcels.selectedParcelDetail.ParcelData.ParcelAssessments;\r\n            }\r\n        }\r\n        if (this.detailType === 'listing') {\r\n            if (this.$store.state.listings.selectedListingDetail && this.$store.state.listings.selectedListingDetail.ParcelData.ParcelAssessments) {\r\n                return this.$store.state.listings.selectedListingDetail.ParcelData.ParcelAssessments;\r\n            }\r\n        }\r\n        return [];\r\n    }\r\n\r\n    public mounted() {\r\n        this.initializeTaxAssessments();\r\n        this.fillData();\r\n    }\r\n\r\n    public initializeTaxAssessments(): void {\r\n        for (let i = this.ParcelAssessments.length - 1; i >= 0; i--) {\r\n            const parcelAssessment = this.ParcelAssessments[i];\r\n            const index = this.ParcelAssessments.length - 1 - i;\r\n            const formattedPrice = this.formattedPrice(parcelAssessment.Value);\r\n            let percentChange = 0;\r\n            let isPosChange = false;\r\n            let isNegChange = false;\r\n            if (index !== 0) {\r\n                percentChange = (Math.abs((parcelAssessment.Value - this.taxAssessments![index - 1].Amount) / (Math.abs(this.taxAssessments![index - 1].Amount)) * 100));\r\n\r\n                if (parcelAssessment.Value > this.taxAssessments![index - 1].Amount) {\r\n                    isPosChange = true;\r\n                } else if (this.taxAssessments![index - 1].Amount > parcelAssessment.Value) {\r\n                    isNegChange = true;\r\n                }\r\n            }\r\n\r\n            const taxAssessment = new TaxAssessment(index, parcelAssessment.Year, parcelAssessment.Value, formattedPrice,\r\n                                                  parseFloat(percentChange.toFixed(1)), isPosChange, isNegChange);\r\n            this.taxAssessments?.push(taxAssessment);\r\n            this.allValues?.push(parcelAssessment.Value);\r\n            this.allYears?.push(parcelAssessment.Year);\r\n        }\r\n    }\r\n\r\n    public formattedPrice(listPrice: number): string {\r\n        if (listPrice === null || listPrice === undefined) {\r\n            return 'Unknown';\r\n        }\r\n\r\n        try {\r\n            if (typeof listPrice === 'string') {\r\n                listPrice = parseInt(listPrice, 10);\r\n            }\r\n\r\n            if (listPrice.toString().indexOf('$') !== -1) {\r\n                return listPrice.toString();\r\n            }\r\n\r\n            let lPrice = listPrice.toFixed(2).replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,');\r\n            lPrice = '$' + lPrice.substr(0, lPrice.length - 3);\r\n\r\n            return lPrice;\r\n        } catch {\r\n            return 'Unknown';\r\n        }\r\n    }\r\n\r\n    public fillData() {\r\n        this.datacollection = {\r\n            labels: this.allYears,\r\n            datasets: [{\r\n                label: '',\r\n                backgroundColor: '#007dc3',\r\n                data: this.allValues,\r\n            }],\r\n        };\r\n      }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TaxesPanel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TaxesPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TaxesPanel.vue?vue&type=template&id=6fdc357d&scoped=true&\"\nimport script from \"./TaxesPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./TaxesPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TaxesPanel.vue?vue&type=style&index=0&id=6fdc357d&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  \"6fdc357d\",\n  null\n  \n)\n\nexport default component.exports\nimport {QTable,QTd} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QTable,QTd})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Demographic Data\")]),(_vm.demoData)?_c('div',[_vm._m(0),(_vm.showMap)?_c('div',{staticClass:\"q-pt-md\"},[_c('EmbeddedLeafletMap',{attrs:{\"refs\":\"embeddedMap\",\"height\":\"300\",\"width\":this.isMobile ? _vm.mobileMapWidth : '830',\"geoJson\":JSON.stringify(_vm.geoJsonDA),\"geoJsonPID\":JSON.stringify(_vm.geoJsonPID),\"bounds\":_vm.boundsDA,\"popupName\":'hi',\"mode\":\"Demographics\"}})],1):_vm._e(),_c('div',{staticClass:\"row q-mt-lg\"},[_c('div',{staticClass:\"col-xs-5 col-sm-6 col-md-3 demographicContainer\"},[_c('div',{staticClass:\"text-blue-brand\"},[_vm._v(\"Population Size\")]),_c('p',{staticClass:\"demographicSubheader\"},[_vm._v(_vm._s(_vm.demoData.PopulationSize))])]),_c('div',{staticClass:\"col-xs-6 col-sm-6 col-md-3 demographicContainer\"},[_c('div',{staticClass:\"text-blue-brand\"},[_vm._v(\"Median Age\")]),_c('p',{staticClass:\"demographicSubheader\"},[_vm._v(_vm._s(_vm.demoData.MedianAgeStr))])]),_c('div',{staticClass:\"col-xs-5 col-sm-6 col-md-3 demographicContainer\"},[_c('div',{staticClass:\"text-blue-brand\"},[_vm._v(\"Avg Household Size\")]),_c('p',{staticClass:\"demographicSubheader\"},[_vm._v(_vm._s(_vm.demoData.AvgHouseholdSizeStr))])]),_c('div',{staticClass:\"col-xs-6 col-sm-6 col-md-3 demographicContainer\"},[_c('div',{staticClass:\"text-blue-brand\"},[_vm._v(\"Avg Household Income\")]),_c('p',{staticClass:\"demographicSubheader\"},[_vm._v(_vm._s(_vm.demoData.AvgHouseholdIncomeStr))])])]),_c('hr'),_c('div',{staticClass:\"q-mt-lg\",attrs:{\"absolute-center\":\"\"}},[_c('q-select',{staticStyle:{\"width\":\"300px\",\"margin\":\"auto\"},attrs:{\"outlined\":\"\",\"options\":_vm.demoChartTabOptions,\"absolute-center\":\"\"},model:{value:(_vm.selectedDemographicChartTab),callback:function ($$v) {_vm.selectedDemographicChartTab=$$v},expression:\"selectedDemographicChartTab\"}})],1),_c('q-tab-panels',{attrs:{\"animated\":\"\"},model:{value:(_vm.selectedDemographicChartTab),callback:function ($$v) {_vm.selectedDemographicChartTab=$$v},expression:\"selectedDemographicChartTab\"}},[_c('q-tab-panel',{attrs:{\"name\":\"Population by Age Group\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.populationAgeGroup,\"options\":_vm.options}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Population Projection\"}},[_c('ChartLine',{attrs:{\"chart-data\":_vm.populationProjectionDataCollection,\"options\":_vm.lineOptions}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Education\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.educationDataCollection,\"options\":_vm.options}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Marital Status\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.maritalStatusDataCollection,\"options\":_vm.options}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Household Income\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.householdIncomeDataCollection,\"options\":_vm.options}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Ownership\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.ownershipDataCollection,\"options\":_vm.options}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Construction Date\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.constructionDateDataCollection,\"options\":_vm.options}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Children At Home\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.childrenAtHomeDataCollection,\"options\":_vm.options}})],1),_c('q-tab-panel',{attrs:{\"name\":\"Occupation\"}},[_c('ChartDoughnut',{attrs:{\"chart-data\":_vm.occupationDataCollection,\"options\":_vm.options}})],1)],1)],1):_c('div',[_vm._m(1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\" Demographic data is based on the \"),_c('span',{staticStyle:{\"color\":\"#003DA5\",\"font-weight\":\"bold\"}},[_vm._v(\"dissemination area\")]),_vm._v(\" that contains the listing \"),_c('span',{staticStyle:{\"color\":\"#DC1C2E\",\"font-weight\":\"bold\"}},[_vm._v(\"parcel\")]),_vm._v(\". Dissemination Areas are small areas composed of one or more neighbouring dissemination blocks. All of Canada is divided into dissemination areas. \"),_c('span',[_vm._v(\"Date source: Environics Analytics via ArcGIS Online, 2021\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row justify-center\"},[_c('div',{staticClass:\"col-12 text-h6\",staticStyle:{\"text-align\":\"center\"}},[_vm._v(\" Demographic data is not available. \")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:({\n        'height': (_vm.height + \"px\"),\n        'width': (_vm.width + \"px\")\n }),attrs:{\"id\":\"embeddedMap\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport 'leaflet/dist/leaflet.css';\r\nimport L from 'leaflet';\r\nimport * as esri from 'esri-leaflet';\r\n\r\n@Component\r\nexport default class EmbeddedLeafletMap extends Vue {\r\n\r\n    @Prop(String) public readonly height: string | undefined;\r\n    @Prop(String) public readonly width: string | undefined;\r\n    @Prop(String) public readonly geoJson: string | undefined;\r\n    @Prop(String) public readonly geoJsonPID: string | undefined;\r\n    @Prop(L.LatLngBounds) public readonly bounds: L.LatLngBounds | undefined;\r\n    @Prop(String) public readonly popupName: string | undefined;\r\n    @Prop(String) public readonly mode: string | undefined;\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    public parcelStyle = { color: '#DC1C2E', weight: 2, opacity: 0.85 };\r\n\r\n    public createFilterMap() {\r\n        const lSW: L.LatLngTuple = [this.config.mapDefault.maxBounds[0][0], this.config.mapDefault.maxBounds[0][1]];\r\n        const lNE: L.LatLngTuple = [this.config.mapDefault.maxBounds[1][0], this.config.mapDefault.maxBounds[1][1]];\r\n        const lMapOptions: L.MapOptions = {\r\n            zoomControl: true,\r\n            scrollWheelZoom: false,\r\n            maxBounds: new L.LatLngBounds(lSW, lNE),\r\n            minZoom: this.config.mapDefault.minZoom,\r\n        };\r\n\r\n        const lMap: L.Map = L.map('embeddedMap', lMapOptions).setView([44.68, -63.74], 10);\r\n        esri.basemapLayer('Gray').addTo(lMap);\r\n        if (this.geoJson) {\r\n            const mapFeature = L.geoJSON(JSON.parse(this.geoJson)).addTo(lMap);\r\n            lMap.fitBounds(mapFeature.getBounds());\r\n            if (this.popupName && this.popupName.length > 0) {\r\n                mapFeature.bindPopup('<b>' + this.popupName + '</b>').openPopup();\r\n            }\r\n        }\r\n    }\r\n\r\n    public createDemographicsMap() {\r\n\r\n        const lSW: L.LatLngTuple = [this.config.mapDefault.maxBounds[0][0], this.config.mapDefault.maxBounds[0][1]];\r\n        const lNE: L.LatLngTuple = [this.config.mapDefault.maxBounds[1][0], this.config.mapDefault.maxBounds[1][1]];\r\n        const lMapOptions: L.MapOptions = {\r\n            zoomControl: true,\r\n            scrollWheelZoom: false,\r\n            maxBounds: new L.LatLngBounds(lSW, lNE),\r\n            minZoom: this.config.mapDefault.minZoom,\r\n        };\r\n\r\n        const lMap: L.Map = L.map('embeddedMap', lMapOptions).setView([44.68, -63.74], 10);\r\n        esri.basemapLayer('Gray').addTo(lMap);\r\n        if (this.geoJson && this.geoJsonPID && this.bounds) {\r\n            const mapFeature = L.geoJSON(JSON.parse(this.geoJson)).addTo(lMap);\r\n            const pidFeature = L.geoJSON(JSON.parse(this.geoJsonPID), {style: this.parcelStyle}).addTo(lMap);\r\n            lMap.fitBounds(this.bounds);\r\n        }\r\n    }\r\n\r\n    public mounted() {\r\n        console.log('EmbeddedLeafletMap: mounted()');\r\n\r\n        if (this.mode === 'Filter') {\r\n            this.createFilterMap();\r\n        } else if (this.mode === 'Demographics') {\r\n            this.createDemographicsMap();\r\n        }\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmbeddedLeafletMap.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmbeddedLeafletMap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmbeddedLeafletMap.vue?vue&type=template&id=35c2b9f6&scoped=true&\"\nimport script from \"./EmbeddedLeafletMap.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmbeddedLeafletMap.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EmbeddedLeafletMap.vue?vue&type=style&index=0&id=35c2b9f6&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  \"35c2b9f6\",\n  null\n  \n)\n\nexport default component.exports","\r\nimport { Doughnut, mixins } from 'vue-chartjs';\r\nimport 'chartjs-plugin-labels';\r\nconst { reactiveProp } = mixins;\r\n\r\nChart.defaults.global.plugins.labels = {\r\n  render: (args) => {\r\n    if (args.percentage >= 4) {\r\n      return args.value;\r\n    } else {\r\n      return '';\r\n    }\r\n  },\r\n  fontColor: '#ffffffff',\r\n  fontStyle: 'bold',\r\n  fontSize: 14,\r\n};\r\n\r\nexport default { extends: Doughnut,\r\n  mixins: [reactiveProp],\r\n  props: ['options'],\r\n  mounted() {\r\n    this.determineTextColour();\r\n    this.renderChart(this.chartData, this.options);\r\n  },\r\n  methods: {\r\n    determineTextColour() {\r\n      const isMobile = this.$q.screen.width <= 768;\r\n      if (isMobile) {\r\n        Chart.defaults.global.plugins.labels.fontColor = '#ffffff00';\r\n      } else {\r\n        Chart.defaults.global.plugins.labels.fontColor = '#ffffffff';\r\n      }\r\n    },\r\n  },\r\n};\r\n","var render, staticRenderFns\nimport script from \"./ChartDoughnut.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartDoughnut.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, staticRenderFns\nimport script from \"./ChartLine.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartLine.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","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartDoughnut.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartDoughnut.vue?vue&type=script&lang=js&\"","\r\nimport { Line, mixins } from 'vue-chartjs';\r\nconst { reactiveProp } = mixins;\r\n\r\nexport default { extends: Line,\r\n  mixins: [reactiveProp],\r\n  props: ['options'],\r\n  mounted() {\r\n    this.renderChart(this.chartData, this.options);\r\n  },\r\n};\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartLine.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ListingDetail } from '@/models/ListingDetail';\r\nimport { ParcelDetail } from '@/models/ParcelDetail';\r\nimport { Demographics } from '@/models/Demographics';\r\nimport EmbeddedLeafletMap from '@/components/EmbeddedLeafletMap.vue';\r\nimport ChartDoughnut from '@/components/ChartDoughnut.vue';\r\nimport ChartLine from '@/components/ChartLine.vue';\r\nimport 'leaflet/dist/leaflet.css';\r\nimport L from 'leaflet';\r\nimport * as esri from 'esri-leaflet';\r\n\r\n@Component({\r\n    components: {\r\n        EmbeddedLeafletMap,\r\n        ChartDoughnut,\r\n        ChartLine,\r\n    },\r\n})\r\nexport default class DemographicsPanel extends Vue {\r\n\r\n    @Prop(String) public readonly detailType: string | undefined;\r\n    public widthThresholdValue: number = 768;\r\n    public showMap: boolean = false;\r\n    public demoChartTabOptions = ['Population by Age Group', 'Population Projection', 'Education' , 'Marital Status',\r\n                                  'Household Income', 'Ownership', 'Construction Date', 'Children At Home', 'Occupation'];\r\n    public selectedDemographicChartTab = 'Population by Age Group';\r\n\r\n    public geoJsonDA: L.GeoJSON | null = null;\r\n    public boundsDA: L.LatLngBounds | null = null;\r\n    public geoJsonPID: L.GeoJSON | null = null;\r\n\r\n    public options = {\r\n            responsive: true,\r\n            maintainAspectRatio: false,\r\n            animation: {\r\n                animateRotate: false,\r\n            },\r\n            legend: {\r\n                position: this.isMobile ? 'bottom' : 'right',\r\n            },\r\n        };\r\n\r\n    public lineOptions = {\r\n            responsive: true,\r\n            maintainAspectRatio: false,\r\n            animation: {\r\n                animateRotate: false,\r\n            },\r\n            legend: {\r\n                display: false,\r\n            },\r\n        };\r\n\r\n    public populationAgeGroup: any = {};\r\n    public populationAgeRangeLabels = ['0 - 4 years old', '5 - 9 years old', '10 - 19 years old', '20 - 34 years old',\r\n                                       '35 - 49 years old', '50 - 54 years old', '55 - 64 years old', '65 - 69 years old',\r\n                                       '70 - 79 years old', '80+ years old'];\r\n    public populationAgeRangeColours = ['#1F77B4', '#E17F0E', '#2CA02C', '#9467BD', '#D62728',\r\n                                        '#8C564B', '#E377C2', '#7F7F7F', '#BCBD22', '#17BECF'];\r\n\r\n    public populationProjectionDataCollection: any = {};\r\n    public populationProjectionLabels = ['2016', '2021', '2024', '2026', '2031'];\r\n    public populationProjectionColours = '#1F77B4';\r\n\r\n    public educationDataCollection: any = {};\r\n    public educationLabels = ['No Certificate, Diploma Or Degree', 'High School Certificate or Equivalent', 'Apprenticeship or trades cert or diploma',\r\n                              'College, CEGEP, Non-Uni Cert/Diploma', 'Univ. Cert Or Diploma Below Bachelor', 'University Degree',\r\n                              'Bachelor\\'s degree', 'Above Bachelor\\'s'];\r\n    public educationColours = ['#1F77B4', '#E17F0E', '#2CA02C', '#D62728',\r\n                               '#9467BD', '#8C564B', '#E377C2', '#7F7F7F'];\r\n\r\n    public maritalStatusDataCollection: any = {};\r\n    public maritalStatusLabels = ['Married', 'Common Law', 'Single', 'Separated', 'Divorced', 'Widowed'];\r\n    public maritalStatusColours = ['#BCBD22', '#17BECF', '#1F77B4', '#FF7F0E', '#2CA02C', '#D62728'];\r\n\r\n    public householdIncomeDataCollection: any = {};\r\n    public householdIncomeLabels = ['$0 - $19,999', '$20,000 - $39,999', '$40,000 - $59,999', '$60,000 - $79,999', '$80,000 - $99,999', '$100,000 - $149,999', '$150,000 - $199,999', '$200,000+'];\r\n    public householdIncomeColours = ['#9467BD', '#8C564B', '#E377C2', '#7F7F7F', '#BCBD22', '#17BECF', '#1F77B4', '#FF7F0E'];\r\n\r\n    public ownershipDataCollection: any = {};\r\n    public ownershipLabels = ['Rent', 'Own'];\r\n    public ownershipColours = ['#FF7F0E', '#2CA02C'];\r\n\r\n    public constructionDateDataCollection: any = {};\r\n    public constructionDateLabels = ['Before 1960', '1961 - 1980', '1981 - 1990', '1991 - 2000', '2001 - 2005', '2006 - 2011', '2011 - 2016', 'After 2016'];\r\n    public constructionDateColours = ['#D62728', '#9467BD', '#8C564B', '#E377C2', '#7F7F7F', '#BCBD22', '#17BECF', '#1F77B4'];\r\n\r\n    public childrenAtHomeDataCollection: any = {};\r\n    public childrenAtHomeLabels = ['0 - 4 Years Old', '5 - 9 Years Old', '10 - 14 Years Old', '15 - 19 Years Old', '20 - 24 Years Old', '25+ Years Old'];\r\n    public childrenAtHomeColours = ['#1F77B4', '#FF7F0E', '#2CA02C', '#D62728', '#9467BD', '#8C564B'];\r\n\r\n    public occupationDataCollection: any = {};\r\n    public occupationLabels = ['Not Applicable', 'Management', 'Business, Finance And Administration', 'Natural And Applied Sciences',\r\n                               'Health', 'Education, Law And Social, Community/Gov Services', 'Art, Culture, Recreation And Sport',\r\n                               'Sales And Service', 'Trades, Transport And Equipment Operators', 'Natural Resources, Agriculture',\r\n                               'Manufacturing And Utilities'];\r\n    public occupationColours = ['#E377C2', '#7F7F7F', '#BCBD22', '#17BECF', '#1F77B4', '#FF7F0E', '#2CA02C', '#D62728', '#9467BD', '#8C564B', '#00ff44'];\r\n\r\n    get populationAgeRangeData(): any {\r\n        const ageArray = [this.demoData.Pop0to4,\r\n                          this.demoData.Pop5to9,\r\n                          this.demoData.Pop10to14 + this.demoData.Pop15to19,\r\n                          this.demoData.Pop20to24 + this.demoData.Pop25to29 + this.demoData.Pop30to34,\r\n                          this.demoData.Pop35to39 + this.demoData.Pop40to44 + this.demoData.Pop45to49,\r\n                          this.demoData.Pop50to54,\r\n                          this.demoData.Pop55to59 + this.demoData.Pop60to64,\r\n                          this.demoData.Pop65to69,\r\n                          this.demoData.Pop70to74 + this.demoData.Pop75to79,\r\n                          this.demoData.Pop80to84 + this.demoData.Pop85Plus];\r\n        return ageArray;\r\n    }\r\n\r\n    get populationProjectionData(): any {\r\n        const populationProjectionArray = [this.demoData.Pop2016,\r\n                                           this.demoData.Pop2021,\r\n                                           this.demoData.Pop2024,\r\n                                           this.demoData.Pop2026,\r\n                                           this.demoData.Pop2031];\r\n        return populationProjectionArray;\r\n    }\r\n\r\n    get educationData(): any {\r\n        const educationArray = [this.demoData.EdNoCertDipDeg,\r\n                                this.demoData.EdHighSch,\r\n                                this.demoData.EdAppTradeDip,\r\n                                this.demoData.EdCollege,\r\n                                this.demoData.EdUniBelowBach,\r\n                                this.demoData.EdUniDeg,\r\n                                this.demoData.EdUniBach,\r\n                                this.demoData.EdUniBachPlus];\r\n        return educationArray;\r\n    }\r\n\r\n    get maritalStatusData(): any {\r\n        const maritalStatusArray = [this.demoData.StatMarried,\r\n                                    this.demoData.StatCommon,\r\n                                    this.demoData.StatSingle,\r\n                                    this.demoData.StatSeparated,\r\n                                    this.demoData.StatDivorce,\r\n                                    this.demoData.StatWidow];\r\n        return maritalStatusArray;\r\n    }\r\n\r\n    get householdIncomeData(): any {\r\n        const householdIncomeArray = [this.demoData.HouseInc0to20,\r\n                                      this.demoData.HouseInc20to40,\r\n                                      this.demoData.HouseInc40to60,\r\n                                      this.demoData.HouseInc60to80,\r\n                                      this.demoData.HouseInc80to100,\r\n                                      this.demoData.HouseInc100to150,\r\n                                      this.demoData.HouseInc150to200,\r\n                                      this.demoData.HouseInc200Plus];\r\n        return householdIncomeArray;\r\n    }\r\n\r\n    get ownershipData(): any {\r\n        const ownershipArray = [this.demoData.OwnershipRent,\r\n                                this.demoData.OwnershipOwn];\r\n        return ownershipArray;\r\n    }\r\n\r\n    get constructionDateData(): any {\r\n        const ownershipArray = [this.demoData.ContructDatePre1960,\r\n                                this.demoData.ContructDatePre1961to1980,\r\n                                this.demoData.ContructDatePre1981to1990,\r\n                                this.demoData.ContructDatePre1991to2000,\r\n                                this.demoData.ContructDatePre2001to2005,\r\n                                this.demoData.ContructDatePre2006to2011,\r\n                                this.demoData.ContructDatePre2011to2016,\r\n                                this.demoData.ContructDatePre2016Plus];\r\n        return ownershipArray;\r\n    }\r\n\r\n    get childrenAtHomeData(): any {\r\n        const childrenAtHomeArray = [this.demoData.ChildHome0to4,\r\n                                     this.demoData.ChildHome5to9,\r\n                                     this.demoData.ChildHome10to14,\r\n                                     this.demoData.ChildHome15to19,\r\n                                     this.demoData.ChildHome20to24,\r\n                                     this.demoData.ChildHome25Plus];\r\n        return childrenAtHomeArray;\r\n    }\r\n\r\n    get occupationData(): any {\r\n        const occupationArray = [this.demoData.OccupNA,\r\n                                 this.demoData.OccupMangement,\r\n                                 this.demoData.OccupBusFinAdmin,\r\n                                 this.demoData.OccupNatAppSci,\r\n                                 this.demoData.OccupHealth,\r\n                                 this.demoData.OccupEdLawGov,\r\n                                 this.demoData.OccupArtCultRec,\r\n                                 this.demoData.OccupSaleService,\r\n                                 this.demoData.OccupTradeTrans,\r\n                                 this.demoData.OccupNatResAgri,\r\n                                 this.demoData.OccupMan];\r\n        return occupationArray;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return this.$q.screen.width <= this.widthThresholdValue;\r\n    }\r\n\r\n    get selectedDetail(): ListingDetail | ParcelDetail | undefined {\r\n        if (this.detailType === 'listing') {\r\n            return this.$store.state.listings.selectedListingDetail;\r\n        } else if (this.detailType === 'parcel') {\r\n            return this.$store.state.parcels.selectedParcelDetail;\r\n        }\r\n    }\r\n\r\n    get demoData(): Demographics {\r\n        return this.selectedDetail!.ParcelData!.Demographics!;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get mobileMapWidth() {\r\n        return (this.$q.screen.width * 0.9).toFixed(0);\r\n    }\r\n\r\n    public mounted() {\r\n        if (this.selectedDetail && this.demoData) {\r\n            this.updateMap();\r\n            this.fillData();\r\n        }\r\n    }\r\n\r\n    public fillData() {\r\n        this.populationAgeGroup = {\r\n            labels: this.populationAgeRangeLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.populationAgeRangeColours,\r\n                data: this.populationAgeRangeData,\r\n                }],\r\n        };\r\n\r\n        this.populationProjectionDataCollection = {\r\n            labels: this.populationProjectionLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.populationProjectionColours,\r\n                data: this.populationProjectionData,\r\n                fill: false,\r\n                borderColor: this.populationProjectionColours,\r\n                borderWidth: 1,\r\n                }],\r\n        };\r\n\r\n        this.educationDataCollection = {\r\n            labels: this.educationLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.educationColours,\r\n                data: this.educationData,\r\n                }],\r\n        };\r\n\r\n        this.maritalStatusDataCollection = {\r\n            labels: this.maritalStatusLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.maritalStatusColours,\r\n                data: this.maritalStatusData,\r\n                }],\r\n        };\r\n\r\n        this.householdIncomeDataCollection = {\r\n            labels: this.householdIncomeLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.householdIncomeColours,\r\n                data: this.householdIncomeData,\r\n                }],\r\n        };\r\n\r\n        this.ownershipDataCollection = {\r\n            labels: this.ownershipLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.ownershipColours,\r\n                data: this.ownershipData,\r\n                }],\r\n        };\r\n\r\n        this.constructionDateDataCollection = {\r\n            labels: this.constructionDateLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.constructionDateColours,\r\n                data: this.constructionDateData,\r\n                }],\r\n        };\r\n\r\n        this.childrenAtHomeDataCollection = {\r\n            labels: this.childrenAtHomeLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.childrenAtHomeColours,\r\n                data: this.childrenAtHomeData,\r\n                }],\r\n        };\r\n\r\n        this.occupationDataCollection = {\r\n            labels: this.occupationLabels,\r\n            datasets: [\r\n                {\r\n                label: '',\r\n                backgroundColor: this.occupationColours,\r\n                data: this.occupationData,\r\n                }],\r\n        };\r\n    }\r\n\r\n    public updateMap(): void {\r\n        const daQuery = esri.query({\r\n            url: this.config.DALayer.url,\r\n            proxy: this.config.proxy.url,\r\n        });\r\n        daQuery.where('DAUID=' + this.demoData.DAUID).fields('DAUID');\r\n        daQuery.run( (error: any, featureCollection: any) => {\r\n            if (!error && featureCollection.features.length > 0) {\r\n                this.geoJsonDA =  featureCollection;\r\n                this.boundsDA = L.geoJSON(featureCollection).getBounds();\r\n                this.updateParcelLayer();\r\n            }\r\n        });\r\n    }\r\n\r\n    public updateParcelLayer(): void {\r\n        const pQuery = esri.query({\r\n            url: this.config.ParcelsLayer.url,\r\n        });\r\n\r\n        pQuery.where('PID=\\'' + this.selectedDetail!.ParcelData!.PID + '\\'').fields('PID');\r\n        pQuery.run( (error: any, featureCollection: any) => {\r\n            if (!error && featureCollection.features.length > 0) {\r\n                this.geoJsonPID = featureCollection;\r\n                this.showMap = true;\r\n            }\r\n        });\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemographicsPanel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DemographicsPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DemographicsPanel.vue?vue&type=template&id=410fb8ca&scoped=true&\"\nimport script from \"./DemographicsPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./DemographicsPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DemographicsPanel.vue?vue&type=style&index=0&id=410fb8ca&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  \"410fb8ca\",\n  null\n  \n)\n\nexport default component.exports\nimport {QSelect,QTabPanels,QTabPanel} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QSelect,QTabPanels,QTabPanel})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn)?_c('div',[(_vm.historicListings)?_c('div',_vm._l((_vm.historicListings),function(item){return _c('div',{key:item.MlsNo},[_c('q-card',{staticClass:\"q-pt-xs no-shadow\"},[_c('q-card-section',{staticClass:\"q-pa-xs\",class:_vm.historyStatusClass(item.ListStatus)},[_c('div',{staticClass:\"tableContainer \"},[_c('div',{staticClass:\"row q-pa-xs\"},[_c('div',{staticClass:\"col-xs-6 col-sm-2 col-md-2 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"MlsNo\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(item.MlsNo))])]),_c('div',{staticClass:\"col-xs-6 col-sm-2 col-md-2 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"List Price\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.formattedPrice(item.ListPriceOrig)))])]),_c('div',{staticClass:\"col-xs-6 col-sm-2 col-md-2 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Status\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.generateStatusLabel(item)))])]),_c('div',{staticClass:\"col-xs-6 col-sm-2 col-md-2 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Start\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(item.ListDateStr))])]),_c('div',{staticClass:\"col-xs-6 col-sm-2 col-md-2 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"End\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(item.InactiveDateStr))])]),_c('div',{staticClass:\"col-xs-6 col-sm-2 col-md-2 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Days on Market\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(item.DOM))])])]),(item.ValueChanges.length >= 1)?_c('div',[_c('table',{staticClass:\"changeTable q-mt-sm\"},[_c('colgroup',[_c('col',{staticClass:\"changeDateColumn\",attrs:{\"span\":\"1\"}}),_c('col',{staticStyle:{\"width\":\"70%\"},attrs:{\"span\":\"1\"}})]),_c('thead',[_c('tr',[_c('th',{staticClass:\"q-pl-md\"},[_vm._v(\"Change Date\")]),_c('th',{staticClass:\"q-pl-sm\"},[_vm._v(\"Change\")])])]),_vm._l((item.ValueChanges.slice().reverse()),function(valueChangeItem){return _c('tbody',{key:valueChangeItem.ChangeDate},[_c('tr',[_c('td',{staticClass:\"text-dark\",staticStyle:{\"padding\":\"5px 0px 5px 20px\"}},[_vm._v(_vm._s(valueChangeItem.ChangeDateStr))]),_c('td',{staticClass:\"q-pl-sm text-dark\"},[_vm._v(_vm._s(_vm.getStatusAsString(valueChangeItem.OldValueStr, valueChangeItem.FieldName))+\" \"),_c('i',{staticClass:\"fa fa-long-arrow-right\"}),_vm._v(\" \"+_vm._s(_vm.getStatusAsString(valueChangeItem.NewValueStr, valueChangeItem.FieldName)))])])])})],2)]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.doShowHistoryListingButton(item.MlsNo)),expression:\"doShowHistoryListingButton(item.MlsNo)\"}]},[_c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('q-btn',{staticClass:\"q-pa-xs\",staticStyle:{\"background\":\"#eee\",\"font-size\":\"13px\",\"margin-right\":\"5px\"},attrs:{\"dense\":\"\",\"size\":\"sm\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onOpenHistoricListing(item.MlsNo)}}},[_c('i',{staticClass:\"fa fa-history buttonIcon\"}),_vm._v(\"View Historic Listing\")])],1)])])])],1)],1)}),0):_c('div',[_vm._m(0)])]):_c('div',[_c('LoginRequiredPanel',{attrs:{\"header\":\"MLS® Sales Information is only a few clicks away!\",\"subheader\":\"Please login in order to access the sales history for up to 15 years.\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row justify-center\"},[_c('div',{staticClass:\"col-12 text-h6\",staticStyle:{\"text-align\":\"center\"}},[_vm._v(\" Sales history data is not available. \")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport LoginRequiredPanel from '@/components/LoginRequiredPanel.vue';\r\nimport { HistoricListing } from '@/models/HistoricListing';\r\n\r\n@Component({\r\n    components: {\r\n        LoginRequiredPanel,\r\n    },\r\n})\r\nexport default class SalesHistoryPanel extends Vue {\r\n\r\n    @Prop(String) public readonly detailType: string | undefined;\r\n    public widthThresholdValue: number = 768;\r\n    public historicListingItem: HistoricListing | null  = null;\r\n\r\n    get isMobile(): boolean {\r\n        return this.$q.screen.width <= this.widthThresholdValue;\r\n    }\r\n\r\n    get historicListings(): HistoricListing[] | undefined {\r\n        let historicListingsArray;\r\n        if (this.detailType === 'listing') {\r\n            historicListingsArray = this.$store.state.listings.selectedListingDetail.HistoricListings;\r\n        } else if (this.detailType === 'parcel') {\r\n            if (this.$store.state.parcels.selectedParcelDetail.Listings && this.$store.state.parcels.selectedParcelDetail.Listings.length) {\r\n                historicListingsArray = this.$store.state.parcels.selectedParcelDetail.Listings[0].HistoricListings;\r\n            }\r\n            if ((this.$store.state.parcels.selectedParcelDetail.PvsHistoricListings && this.$store.state.parcels.selectedParcelDetail.PvsHistoricListings.length)) {\r\n                historicListingsArray = this.$store.state.parcels.selectedParcelDetail.PvsHistoricListings;\r\n            }\r\n        }\r\n\r\n        if (!historicListingsArray) {\r\n            return undefined;\r\n        }\r\n\r\n        // active listings need a DOM fix because it is shown as 0\r\n        if (this.detailType === 'listing' && historicListingsArray[0].DOM === 0) {\r\n            historicListingsArray[0].DOM = this.$store.state.listings.selectedListingDetail.DaysOnMarket;\r\n        }\r\n\r\n        return historicListingsArray;\r\n    }\r\n\r\n    get isLoggedIn() {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    public doShowHistoryListingButton(mlsNum: string): boolean {\r\n\r\n        const isSelectedListing: boolean = (this.$store.state.listings.selectedListingDetail != null && this.$store.state.listings.selectedListingDetail.MlsNo === mlsNum);\r\n\r\n        const isNonMls: boolean = mlsNum === 'n/a';\r\n\r\n        const doShowButton: boolean = (!isSelectedListing && !isNonMls);\r\n        return doShowButton;\r\n    }\r\n\r\n    public onOpenHistoricListing(mlsNum: string) {\r\n        window.open('https://www.remaxnova.com/historic/' + mlsNum, '_blank');\r\n    }\r\n\r\n    public formattedPrice(listPrice: number|string): string {\r\n        if (listPrice === null || listPrice === undefined) {\r\n            return 'Unknown';\r\n        }\r\n\r\n        try {\r\n            if (typeof listPrice === 'string') {\r\n                listPrice = parseInt(listPrice, 10);\r\n            }\r\n\r\n            if (listPrice.toString().indexOf('$') !== -1) {\r\n                return listPrice.toString();\r\n            }\r\n\r\n            let lPrice = listPrice.toFixed(2).replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,');\r\n            lPrice = '$' + lPrice.substr(0, lPrice.length - 3);\r\n\r\n            return lPrice;\r\n        } catch {\r\n            return 'Unknown';\r\n        }\r\n    }\r\n\r\n    public getStatusAsString(status: string, fieldName: number) {\r\n        if (fieldName === 1) {\r\n            return this.formattedPrice(status);\r\n        } else {\r\n            if (status === null || status === undefined) {\r\n                return 'UNKNOWN';\r\n            }\r\n            if (status === '1' || status === '1_0') {\r\n                return 'FOR SALE';\r\n            } else if (status === '2' || status === '2_0') {\r\n                return 'SOLD';\r\n            } else if (status === '3' || status === '3_0') {\r\n                return 'PENDING';\r\n            } else if (status === '4' || status === '4_0') {\r\n                return 'EXPIRED';\r\n            } else if (status === '5' || status === '5_0') {\r\n                return 'CANCELLED';\r\n            } else if (status === '5_1') {\r\n                return 'WITHDRAWN';\r\n            } else if (status === '6' || status === '6_0') {\r\n                return 'RENTED';\r\n            } else {\r\n                return 'UNKNOWN';\r\n            }\r\n        }\r\n    }\r\n\r\n    public historyStatusClass(status: number): string {\r\n        if (status === null || status === undefined) {\r\n            return 'listingStatusType_NOSTATUS';\r\n        }\r\n\r\n        if (status === 1) {\r\n            return 'tblHistFORSALE';\r\n        } else if (status === 2) {\r\n            return 'tblHistSOLD';\r\n        } else if (status === 3) {\r\n            return 'tblHistPENDING';\r\n        } else if (status === 4) {\r\n            return 'tblHistEXPIRED';\r\n        } else if (status === 5) {\r\n            return 'tblHistCANCELLED';\r\n        } else if (status === 5) {\r\n            return 'tblHistPENDING';\r\n        } else if (status === 6) {\r\n            return 'tblHistPENDING';\r\n        } else {\r\n            return 'tblHistNOSTATUS';\r\n        }\r\n    }\r\n\r\n    public generateStatusLabel(item: HistoricListing): string {\r\n        let label = item.ListStatusLabel;\r\n\r\n        if (label === 'n/a') {\r\n            label = 'Change / Transfer';\r\n        } else if (label === 'SOLD') {\r\n            label = 'SOLD - ' + this.formattedPrice(item.ListPriceLast);\r\n        }\r\n\r\n        return label;\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SalesHistoryPanel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SalesHistoryPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SalesHistoryPanel.vue?vue&type=template&id=c66166a4&scoped=true&\"\nimport script from \"./SalesHistoryPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./SalesHistoryPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SalesHistoryPanel.vue?vue&type=style&index=0&id=c66166a4&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  \"c66166a4\",\n  null\n  \n)\n\nexport default component.exports\nimport {QCard,QCardSection,QBtn} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QCard,QCardSection,QBtn})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedListing != null),expression:\"selectedListing != null\"}]},[_c('q-img',{staticClass:\"picture-container\",attrs:{\"src\":_vm.selectedListingImage},on:{\"click\":_vm.onClick}},[_c('div',{staticClass:\"absolute-center text-subtitle1 text-center bg-transparent\"},[_c('i',{staticClass:\"fas fa-camera-alt\",staticStyle:{\"font-size\":\"100px\",\"color\":\"rgba(255, 255, 255, 0.8)\"}})])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { Listing } from '../models/Listing';\r\n\r\n@Component\r\nexport default class PhotoPanel extends Vue {\r\n\r\n    get selectedListingImage(): string | null {\r\n        if (this.selectedListing?.pi && this.config.imageRoot) {\r\n            let relativePath = this.selectedListing.pi;\r\n            if (relativePath.indexOf(this.config.placeholdListingImg) === -1) {\r\n                relativePath = this.config.imageRoot + relativePath;\r\n            }\r\n            return relativePath;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    get selectedListing(): Listing | null {\r\n        return this.$store.state.listings.selectedListing;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    public mounted() {\r\n        this.$store.dispatch('showLightBox');\r\n    }\r\n\r\n    public onClick() {\r\n        this.$store.dispatch('showLightBox');\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoPanel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhotoPanel.vue?vue&type=template&id=a6b8049c&scoped=true&\"\nimport script from \"./PhotoPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhotoPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PhotoPanel.vue?vue&type=style&index=0&id=a6b8049c&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  \"a6b8049c\",\n  null\n  \n)\n\nexport default component.exports\nimport {QImg} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QImg})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ListingDetail } from '@/models/ListingDetail';\r\nimport HRMDataInfo from '@/components/HRMDataInfo.vue';\r\nimport GoogleMapPanel from '@/components/GoogleMapPanel.vue';\r\nimport TaxesPanel from '@/components/TaxesPanel.vue';\r\nimport DemographicsPanel from '@/components/DemographicsPanel.vue';\r\nimport SalesHistoryPanel from '@/components/SalesHistoryPanel.vue';\r\nimport PhotoPanel from '@/components/PhotoPanel.vue';\r\nimport Defs from '../utils/Defs';\r\nimport ListingUtil from '../utils/ListingUtil';\r\n\r\n@Component({\r\n    components: {\r\n        HRMDataInfo,\r\n        GoogleMapPanel,\r\n        TaxesPanel,\r\n        DemographicsPanel,\r\n        SalesHistoryPanel,\r\n        PhotoPanel,\r\n    },\r\n})\r\nexport default class ListingDetailsDialog extends Vue {\r\n\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 415;\r\n\r\n    public columns = [\r\n        { name: 'Level', align: 'left', label: 'Level', field: 'level', style: 'width: 130px;'},\r\n        { name: 'Type', align: 'left', label: 'Type', field: 'type', style: 'width: 130px' },\r\n        { name: 'Dimensions', align: 'left', label: 'Dimensions', field: 'dimensions' },\r\n    ];\r\n\r\n    public showDialog: boolean = false;\r\n    public tab: string = 'overview';\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'showListingDialog') {\r\n            this.onShowDialog();\r\n        }\r\n        if (action.type === 'showListingDialogPhotos') {\r\n            this.onShowDialogPhotos();\r\n        }\r\n    });\r\n\r\n    public onTabChange(tab: string) {\r\n        // analytics events\r\n        if (tab === 'taxes') {\r\n            this.$store.dispatch('sendDetailsEvent', {action: Defs.ANALYTICS_DETAILS_TAX, sysId: this.selectedListingDetail.SystemId});\r\n        }\r\n        if (tab === 'photos') {\r\n            this.$store.dispatch('sendDetailsEvent', {action: Defs.ANALYTICS_DETAILS_PHOTOS, sysId: this.selectedListingDetail.SystemId});\r\n        }\r\n        if (tab === 'streetView') {\r\n            this.$store.dispatch('sendDetailsEvent', {action: Defs.ANALYTICS_DETAILS_STREETVIEW, sysId: this.selectedListingDetail.SystemId});\r\n        }\r\n        if (tab === 'hrmData') {\r\n            this.$store.dispatch('sendDetailsEvent', {action: Defs.ANALYTICS_DETAILS_HRM, sysId: this.selectedListingDetail.SystemId});\r\n        }\r\n        if (tab === 'salesHistory') {\r\n            this.$store.dispatch('sendDetailsEvent', {action: Defs.ANALYTICS_DETAILS_HISTORY, sysId: this.selectedListingDetail.SystemId});\r\n        }\r\n        if (tab === 'schools') {\r\n            this.$store.dispatch('sendDetailsEvent', {action: Defs.ANALYTICS_DETAILS_SCHOOLS, sysId: this.selectedListingDetail.SystemId});\r\n        }\r\n        if (tab === 'demographics') {\r\n            this.$store.dispatch('sendDetailsEvent', {action: Defs.ANALYTICS_DETAILS_DEMO, sysId: this.selectedListingDetail.SystemId});\r\n        }\r\n    }\r\n\r\n    public onOpenBookViewingDialog() {\r\n        this.$store.dispatch('showBookViewingDialog');\r\n    }\r\n\r\n    public onOpenShareDialog() {\r\n        this.$store.dispatch('showShareDialog', 'LISTING');\r\n    }\r\n\r\n    public mounted() {\r\n        window.onresize = this.setWrapperHeight;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get windowWidth() {\r\n        return this.$store.state.windowWidth;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    get selectedListingDetail(): ListingDetail {\r\n        if (this.$store.state.listings.selectedListingDetail && this.$store.state.listings.selectedListingDetail.SystemId && this.showDialog) {\r\n            this.$store.dispatch('sendListingEvent', {action: Defs.ANALYTICS_LISTING_VIEWDETAILS, sysId: this.$store.state.listings.selectedListingDetail.SystemId});\r\n        }\r\n        return this.$store.state.listings.selectedListingDetail;\r\n    }\r\n\r\n    get address() {\r\n        if (this.selectedListingDetail) {\r\n            return this.selectedListingDetail.Address;\r\n        }\r\n    }\r\n\r\n    get roomsData(): string[] {\r\n        if (this.$store.state.listings.selectedListingDetail.Rooms) {\r\n            return this.$store.state.listings.selectedListingDetail.Rooms;\r\n        }\r\n        return []; // table does not get inialized properly if data is null\r\n    }\r\n\r\n    get isBuildingsSpecsVisible(): boolean {\r\n        return (this.selectedListingDetail.Foundation !== '---' || this.selectedListingDetail.Roof !== '---' ||\r\n                this.selectedListingDetail.ExternalFinish !== '---' || this.selectedListingDetail.Flooring !== '---');\r\n    }\r\n\r\n    get selectedListingStatusClass(): string {\r\n        const status = this.selectedListingDetail.ListStatus;\r\n        if (status === null || status === undefined) {\r\n            return 'listingStatusType_NOSTATUS';\r\n        }\r\n\r\n        if (status === 'FOR SALE') {\r\n            return 'listingStatusType_FORSALE';\r\n        } else if (status === 'SOLD') {\r\n            return 'listingStatusType_SOLD';\r\n        } else if (status === 'PENDING') {\r\n            return 'listingStatusType_PENDING';\r\n        } else {\r\n            return 'listingStatusType_NOSTATUS';\r\n        }\r\n    }\r\n\r\n    get formattedPrice(): string {\r\n        const listPrice = this.selectedListingDetail.ListPrice;\r\n        return ListingUtil.getFormatedPrice(listPrice);\r\n    }\r\n\r\n    get formattedParcelSize(): string {\r\n        const parcelSize = Number(this.selectedListingDetail.ParcelData?.ParcelSizeFtSq);\r\n        return ListingUtil.getParcelSizeAcres(parcelSize);\r\n    }\r\n\r\n    get isContainsHRMData(): boolean {\r\n        const parcelHrmData = this.selectedListingDetail.ParcelData?.ParcelHrmData;\r\n        const HRMParcelItems = [parcelHrmData?.PID, parcelHrmData?.ByLawId, parcelHrmData?.WasteCollectArea, parcelHrmData?.WasteCollectContractor,\r\n                                parcelHrmData?.ByLawCode, parcelHrmData?.ByLawName, parcelHrmData?.ZoneByLawId,\r\n                                parcelHrmData?.PollDistId, parcelHrmData?.PollDistName, parcelHrmData?.Councillor, parcelHrmData?.WasteCollect];\r\n        return HRMParcelItems.some((item) => item !== undefined);\r\n    }\r\n\r\n    public addSpaceAfterCommas(details: string) {\r\n        return details.replace(/,[s]*/g, ', ');\r\n    }\r\n\r\n    public onShowDialog() {\r\n        this.showDialog = true;\r\n        this.tab = 'overview';\r\n        this.setWrapperHeight();\r\n    }\r\n\r\n    public setWrapperHeight() {\r\n        if (this.isMobile) {\r\n            const height = window.innerHeight - 110;\r\n            this.$nextTick(function() {\r\n                // @ts-ignore\r\n                this.$refs.detailWrapper.$el.style.height = height + 'px';\r\n            });\r\n        }\r\n    }\r\n\r\n    public onShowDialogPhotos() {\r\n        this.showDialog = true;\r\n        this.tab = 'photos';\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingDetailsDialog.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListingDetailsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListingDetailsDialog.vue?vue&type=template&id=b6cbf3a4&scoped=true&\"\nimport script from \"./ListingDetailsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListingDetailsDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ListingDetailsDialog.vue?vue&type=style&index=0&id=b6cbf3a4&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  \"b6cbf3a4\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QTabs,QTab,QTabPanels,QTabPanel,QTable,QSpinner,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QTabs,QTab,QTabPanels,QTabPanel,QTable,QSpinner})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-dialog',{attrs:{\"persistent\":\"\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"disable-zoom\"},[_c('q-card-section',{staticClass:\"row items-center disable-zoom\"},[_c('q-avatar',{staticClass:\"signOutIcon\",attrs:{\"icon\":\"fas fa-sign-out\"}}),_c('div',[_c('span',{staticClass:\"q-ml-sm\"},[_vm._v(_vm._s(_vm.contentMessage))]),_c('br')])],1),_c('q-card-actions',{staticClass:\"disable-zoom\",attrs:{\"align\":\"right\"}},[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"no-caps\":\"\",\"label\":\"Cancel\",\"color\":\"grey-6\"},on:{\"click\":_vm.closeDialog}}),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticClass:\"btn-blue-brand\",attrs:{\"no-caps\":\"\",\"label\":\"Login\"},on:{\"click\":_vm.redirect}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class LoginPromptDialog extends Vue {\r\n    public showDialog: boolean = false;\r\n    public contentMessage: string = 'You must login to view this';\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'showLoginPromptDialog') {\r\n            this.onShowDialog(action.payload);\r\n        }\r\n    });\r\n\r\n    public onShowDialog(contentMessage: string) {\r\n        this.showDialog = true;\r\n        this.contentMessage = contentMessage;\r\n    }\r\n\r\n    public closeDialog() {\r\n        this.showDialog = false;\r\n    }\r\n\r\n    public redirect() {\r\n        // @ts-ignore\r\n        window.dataLayer = window.dataLayer || [];\r\n        // @ts-ignore\r\n        window.dataLayer.push({'event': 'login'});\r\n\r\n        this.$store.dispatch('login');\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginPromptDialog.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginPromptDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginPromptDialog.vue?vue&type=template&id=ccf69fa4&scoped=true&\"\nimport script from \"./LoginPromptDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginPromptDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginPromptDialog.vue?vue&type=style&index=0&id=ccf69fa4&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  \"ccf69fa4\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QAvatar,QCardActions,QBtn,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QAvatar,QCardActions,QBtn})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"crime-dialog\"},[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3\"},[_c('div',{staticClass:\"q-mr-sm\",class:[_vm.isMobile ? 'text-subtitle2' : 'text-h6'],staticStyle:{\"color\":\"#404041\"}},[(!_vm.isMobile)?_c('q-icon',{attrs:{\"name\":\"fas fa-siren-on\"}}):_vm._e()],1),(_vm.selectedCrime != null && _vm.selectedCrime.Street != null)?_c('div',{class:[_vm.isMobile ? 'text-subtitle2' : 'text-body text-weight-bold'],staticStyle:{\"color\":\"#404041\"}},[_vm._v(\"Crime on: \"+_vm._s(_vm.selectedCrime.Street)+\" \")]):_vm._e(),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticStyle:{\"color\":\"#404041\"},attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1)],1),_c('q-card-section',{staticClass:\"scroll card-section\"},[_c('div',{staticClass:\"q-pa-md\"},[(_vm.selectedCrime && _vm.currentCrimes)?_c('div',[_c('ChartDoughnutCrime',{attrs:{\"chart-data\":_vm.crimeDataCollection,\"options\":_vm.options}}),_c('q-table',{attrs:{\"data\":_vm.crimeTableData,\"columns\":_vm.crimeColumns,\"row-key\":\"EventID\",\"hide-bottom\":\"\",\"rows-per-page-options\":[0]},scopedSlots:_vm._u([{key:\"header\",fn:function(props){return [_c('q-tr',{attrs:{\"props\":props}},_vm._l((props.cols),function(col){return _c('q-th',{key:col.name,staticClass:\"bold-text\",attrs:{\"props\":props}},[_vm._v(\" \"+_vm._s(col.label)+\" \")])}),1)]}}],null,false,3464474138)})],1):_c('div',[_vm._v(\" No data is available for this crime point. \")])])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Doughnut, mixins } from 'vue-chartjs';\r\nimport 'chartjs-plugin-labels';\r\nconst { reactiveProp } = mixins;\r\n\r\nChart.pluginService.register({\r\n      beforeDraw: (chart) => {\r\n        if (chart.config.options.elements.center) {\r\n          // Get ctx from string\r\n          const ctx = chart.chart.ctx;\r\n\r\n          // Get options from the center object in options\r\n          const centerConfig = chart.config.options.elements.center;\r\n          const fontStyle = centerConfig.fontStyle || 'Arial';\r\n          const txt = centerConfig.text;\r\n          const color = centerConfig.color || '#000';\r\n          const maxFontSize = centerConfig.maxFontSize || 75;\r\n          const sidePadding = centerConfig.sidePadding || 20;\r\n          const sidePaddingCalculated = (sidePadding / 100) * (chart.innerRadius * 2);\r\n          // Start with a base font of 30px\r\n          ctx.font = '30px ' + fontStyle;\r\n\r\n          // Get the width of the string and also the width of the element minus 10 to give it 5px side padding\r\n          const stringWidth = ctx.measureText(txt).width;\r\n          const elementWidth = (chart.innerRadius * 2) - sidePaddingCalculated;\r\n\r\n          // Find out how much the font can grow in width.\r\n          const widthRatio = elementWidth / stringWidth;\r\n          const newFontSize = Math.floor(30 * widthRatio);\r\n          const elementHeight = (chart.innerRadius * 2);\r\n\r\n          // Pick a new font size so it will not be larger than the height of label.\r\n          let fontSizeToUse = Math.min(newFontSize, elementHeight, maxFontSize);\r\n          let minFontSize = centerConfig.minFontSize;\r\n          const lineHeight = centerConfig.lineHeight || 25;\r\n          let wrapText = false;\r\n\r\n          if (minFontSize === undefined) {\r\n            minFontSize = 20;\r\n          }\r\n\r\n          if (minFontSize && fontSizeToUse < minFontSize) {\r\n            fontSizeToUse = minFontSize;\r\n            wrapText = true;\r\n          }\r\n\r\n          // Set font settings to draw it correctly.\r\n          ctx.textAlign = 'center';\r\n          ctx.textBaseline = 'middle';\r\n          const centerX = ((chart.chartArea.left + chart.chartArea.right) / 2);\r\n          let centerY = ((chart.chartArea.top + chart.chartArea.bottom) / 2);\r\n          ctx.font = fontSizeToUse + 'px ' + fontStyle;\r\n          ctx.fillStyle = color;\r\n\r\n          if (!wrapText) {\r\n            ctx.fillText(txt, centerX, centerY);\r\n            return;\r\n          }\r\n\r\n          const words = txt.split(' ');\r\n          let line = '';\r\n          const lines = [];\r\n\r\n          // Break words up into multiple lines if necessary\r\n          for (let n = 0; n < words.length; n++) {\r\n            const testLine = line + words[n] + ' ';\r\n            const metrics = ctx.measureText(testLine);\r\n            const testWidth = metrics.width;\r\n            if (testWidth > elementWidth && n > 0) {\r\n              lines.push(line);\r\n              line = words[n] + ' ';\r\n            } else {\r\n              line = testLine;\r\n            }\r\n          }\r\n\r\n          // Move the center up depending on line height and number of lines\r\n          centerY -= (lines.length / 2) * lineHeight;\r\n\r\n          for (let n = 0; n < lines.length; n++) {\r\n            ctx.fillText(lines[n], centerX, centerY);\r\n            centerY += lineHeight;\r\n          }\r\n          // Draw text in center\r\n          ctx.fillText(line, centerX, centerY);\r\n        }\r\n      },\r\n    });\r\n\r\nChart.defaults.global.plugins.labels = {\r\n  render: (args) => {\r\n    if (args.percentage >= 6) {\r\n      return args.percentage + '%';\r\n    } else {\r\n      return '';\r\n    }\r\n  },\r\n  fontColor: '#ffffffff',\r\n  fontStyle: 'bold',\r\n  fontSize: 14,\r\n};\r\n\r\nexport default { extends: Doughnut,\r\n  mixins: [reactiveProp],\r\n  props: ['options'],\r\n  mounted() {\r\n    this.determineTextColour();\r\n    this.renderChart(this.chartData, this.options);\r\n  },\r\n  methods: {\r\n    determineTextColour() {\r\n      const isMobile = this.$q.screen.width <= 768;\r\n      if (isMobile) {\r\n        Chart.defaults.global.plugins.labels.fontColor = '#ffffff00';\r\n      } else {\r\n        Chart.defaults.global.plugins.labels.fontColor = '#ffffffff';\r\n      }\r\n    },\r\n  },\r\n};\r\n","var render, staticRenderFns\nimport script from \"./ChartDoughnutCrime.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartDoughnutCrime.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","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartDoughnutCrime.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartDoughnutCrime.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { CrimePoint } from '../models/CrimePoint';\r\nimport ChartDoughnutCrime from '@/components/ChartDoughnutCrime.vue';\r\nimport L from 'leaflet';\r\nimport * as esri from 'esri-leaflet';\r\n\r\n@Component({\r\n    components: {\r\n        ChartDoughnutCrime,\r\n    },\r\n})\r\nexport default class CrimePanel extends Vue {\r\n\r\n    public widthThresholdValue: number = 768;\r\n    public showDialog: boolean = false;\r\n    public isCrimePanelReady: boolean = false;\r\n    public crimeRecordsTable: esri.FeatureLayer | null = null;\r\n    public currentCrimes: any = null; // this could probably become CrimePoint[]\r\n\r\n    public crimeDataCollection: any = {};\r\n    public crimeData: number[] = [];\r\n    public crimeLabels: string[] = [];\r\n    public crimeColours = ['#D62728', '#9467BD', '#E377C2', '#BCBD22', '#17BECF'];\r\n    public options = {\r\n            responsive: true,\r\n            maintainAspectRatio: false,\r\n            animation: {\r\n                animateRotate: false,\r\n            },\r\n            legend: {\r\n                position: 'bottom',\r\n            }, elements: {\r\n                center: {\r\n                    text: '',\r\n                    color: '#000',\r\n                    fontStyle: 'Arial',\r\n                    sidePadding: 20,\r\n                    minFontSize: 13,\r\n                    lineHeight: 25,\r\n                },\r\n            },\r\n        };\r\n    public pagination = {\r\n        rowsPerPage: 100,\r\n        rowsNumber: 100,\r\n    };\r\n\r\n    public crimeColumns = [\r\n        { name: 'EventDate', align: 'left', label: 'Date', field: 'EventDate', format: (val: number) => `${this.getFormatedDateFromEpoch(val)}`, style: 'width: 40px;', sortable: true},\r\n        { name: 'Type', align: 'left', label: 'Crime',  field: 'Type', style: 'width: 40px;', sortable: true },\r\n    ];\r\n\r\n    get crimeTableData(): string[] {\r\n        const dataArray = [];\r\n        for (let i = 0; i < this.currentCrimes.length; i++) {\r\n            dataArray.push(this.currentCrimes[i].properties);\r\n        }\r\n        return dataArray;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return this.$q.screen.width <= this.widthThresholdValue;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get selectedCrime(): CrimePoint {\r\n        return this.$store.state.layers.selectedCrime;\r\n    }\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'initCrimeLayer') {\r\n            if (!this.isCrimePanelReady) {\r\n                this.initCrimeRecordsLayer();\r\n            }\r\n        }\r\n\r\n        if (action.type === 'showCrimeDialog') {\r\n            this.onShowDialog();\r\n        }\r\n    });\r\n\r\n    @Watch('selectedCrime', { immediate: false, deep: false })\r\n    public selectedCrimeChanged(value: CrimePoint, oldValue: CrimePoint) {\r\n        if (value !== oldValue) {\r\n            this.onSelectedCrimeChanged();\r\n        }\r\n    }\r\n\r\n    public getFormatedDateFromEpoch(dateStr: number) {\r\n        const date = new Date(dateStr);\r\n        const year = date.getFullYear();\r\n        let month = (1 + date.getMonth()).toString();\r\n        month = month.length > 1 ? month : '0' + month;\r\n        let day = date.getDate().toString();\r\n        day = day.length > 1 ? day : '0' + day;\r\n\r\n        return year + '-' + month + '-' + day;\r\n    }\r\n\r\n    public onShowDialog() {\r\n        this.showDialog = true;\r\n    }\r\n\r\n    public mounted() {\r\n        console.log('CrimePanel: mounted()');\r\n        this.crimeLabels = [];\r\n    }\r\n\r\n    public initCrimeRecordsLayer() {\r\n        console.log('CrimePanel: initCrimeRecordsLayer');\r\n        this.crimeRecordsTable = esri.featureLayer({\r\n            url: this.config.CrimeRecordsTable.url,\r\n            proxy: this.config.proxy.url,\r\n        });\r\n        this.isCrimePanelReady = true;\r\n    }\r\n\r\n    public onSelectedCrimeChanged() {\r\n        console.log('onSelectedCrimeChanged');\r\n        if (this.crimeRecordsTable) {\r\n            this.crimeRecordsTable\r\n            .query()\r\n            .where('CrimePointID=' + this.selectedCrime.CrimePointID)\r\n            .run((error, featureCollection) => {\r\n                this.currentCrimes = featureCollection.features;\r\n                this.crimeLabels = [];\r\n                this.crimeData = [];\r\n\r\n                for (let i = 0; i < this.currentCrimes.length; i++) {\r\n                    if (this.crimeLabels.indexOf(this.currentCrimes[i].properties.Type)  === -1) {\r\n                        this.crimeLabels.push(this.currentCrimes[i].properties.Type);\r\n                        this.crimeData.push(1);\r\n                    } else {\r\n                        const index = this.crimeLabels.indexOf(this.currentCrimes[i].properties.Type);\r\n                        this.crimeData[index] = this.crimeData[index] + 1;\r\n                    }\r\n                }\r\n\r\n                this.crimeDataCollection = {\r\n                    labels: this.crimeLabels,\r\n                    datasets: [\r\n                        {\r\n                        label: '',\r\n                        backgroundColor: this.crimeColours,\r\n                        data: this.crimeData,\r\n                        }],\r\n                };\r\n                this.options.elements.center.text = 'Total crimes: ' + this.currentCrimes.length;\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrimePanel.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrimePanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CrimePanel.vue?vue&type=template&id=5cb35858&scoped=true&\"\nimport script from \"./CrimePanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./CrimePanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CrimePanel.vue?vue&type=style&index=0&id=5cb35858&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  \"5cb35858\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QTable,QTr,QTh,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QTable,QTr,QTh})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"listing-dialog-size\"},[(_vm.selectedParcelDetail)?_c('div',[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3\"},[(_vm.selectedParcelDetail.ParcelData.PID)?_c('div',{class:[_vm.isMobile ? 'text-subtitle2' : 'text-h6'],staticStyle:{\"color\":\"#404041\"}},[(!_vm.isMobile)?_c('q-icon',{attrs:{\"name\":\"fas fa-map-marker\"}}):_vm._e(),_vm._v(\" PID: \"+_vm._s(_vm.selectedParcelDetail.ParcelData.PID)+\" \")],1):_vm._e(),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticStyle:{\"color\":\"#404041\"},attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1)],1),_c('q-card-section',{staticClass:\"scroll card-section\"},[_c('q-tabs',{staticClass:\"bg-blue-brand text-white rounded-borders\",attrs:{\"no-caps\":\"\",\"indicator-color\":\"red-8\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"overview\",\"icon\":\"fas fa-list-alt\",\"label\":_vm.isMobile ? '': 'Overview'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"taxes\",\"icon\":\"fas fa-money-bill\",\"label\":_vm.isMobile ? '': 'Taxes'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"salesHistory\",\"icon\":\"fas fa-history\",\"label\":_vm.isMobile ? '': 'Sales History'}}),_c('q-tab',{staticClass:\"q-tab-padding\",attrs:{\"name\":\"demographics\",\"icon\":\"fas fa-users\",\"label\":_vm.isMobile ? '': 'Demographics'}})],1),_c('q-tab-panels',{attrs:{\"animated\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('q-tab-panel',{attrs:{\"name\":\"overview\"}},[_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Parcel Information\")]),_c('div',{staticClass:\"row \"},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-mb-sm\"},[_c('span',{staticClass:\"listingLabel\"},[_vm._v(\"Parcel Size\")]),_c('br'),_c('span',{staticClass:\"listingValue\"},[_vm._v(_vm._s(_vm.formattedParcelSize))])])]),(_vm.civicAddressData)?_c('div',[_c('div',{staticClass:\"text-blue-brand text-h6 section-title\"},[_vm._v(\"Civic Addresses\")]),_c('q-table',{attrs:{\"data\":_vm.civicAddressData,\"columns\":_vm.civicAddressColumns,\"row-key\":\"name\",\"hide-bottom\":\"\",\"wrap-cells\":\"\"}})],1):_vm._e(),(_vm.selectedParcelDetail.ParcelData.ParcelHrmData.PID)?_c('div',[_c('HRMDataInfo',{attrs:{\"detailType\":\"parcel\"}})],1):_vm._e()]),_c('q-tab-panel',{attrs:{\"name\":\"taxes\"}},[_c('TaxesPanel',{attrs:{\"detailType\":\"parcel\"}})],1),_c('q-tab-panel',{attrs:{\"name\":\"salesHistory\"}},[_c('SalesHistoryPanel',{attrs:{\"detailType\":\"parcel\"}})],1),_c('q-tab-panel',{attrs:{\"name\":\"demographics\"}},[_c('DemographicsPanel',{attrs:{\"detailType\":\"parcel\"}})],1)],1)],1),_c('q-card-section',{staticClass:\"footer-section no-padding\"},[_c('div',{staticClass:\"q-mt-xs\",staticStyle:{\"float\":\"right\"}},[_c('div',[_c('q-btn',{staticClass:\"q-mr-xs q-pa-xs\",staticStyle:{\"background\":\"#eee\",\"font-size\":\"13px\",\"margin-right\":\"15px\"},attrs:{\"dense\":\"\",\"size\":\"sm\",\"icon\":\"fas fa-share-alt buttonIcon\",\"no-caps\":\"\"},on:{\"click\":_vm.onOpenShareDialog}},[_vm._v(\" Share \")])],1)])])],1):_c('div',[_c('q-card-section',{staticClass:\"row items-center q-ma-lg\"},[_c('q-spinner',{staticClass:\"col justify-center\",attrs:{\"color\":\"blue-brand\",\"size\":\"3em\",\"thickness\":10}})],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ParcelDetail } from '@/models/ParcelDetail';\r\nimport { CivicAddress } from '@/models/CivicAddress';\r\nimport HRMDataInfo from '@/components/HRMDataInfo.vue';\r\nimport TaxesPanel from '@/components/TaxesPanel.vue';\r\nimport DemographicsPanel from '@/components/DemographicsPanel.vue';\r\nimport SalesHistoryPanel from '@/components/SalesHistoryPanel.vue';\r\nimport ListingUtil from '../utils/ListingUtil';\r\n\r\n@Component({\r\n    components: {\r\n        HRMDataInfo,\r\n        TaxesPanel,\r\n        DemographicsPanel,\r\n        SalesHistoryPanel,\r\n    },\r\n})\r\nexport default class ParcelDetailsDialog extends Vue {\r\n\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 415;\r\n\r\n    public showDialog: boolean = false;\r\n    public tab: string = 'overview';\r\n\r\n    public civicAddressColumns = [\r\n        { name: 'CivicNum', align: 'left', label: 'Civic Number', field: 'CivicNum', style: 'width: 40px;' },\r\n        { name: 'StreetName', align: 'left', label: 'Street Name', field: 'StreetName', style: 'width: 40px;' },\r\n        { name: 'StreetType', align: 'left', label: 'Street Type', field: 'StreetType', style: 'width: 40px' },\r\n        { name: 'City', align: 'left', label: 'Community', field: 'City', style: 'width: 40px' },\r\n        { name: 'Municipality', align: 'left', label: 'Municipality', field: 'Municipality', style: 'width: 40px' },\r\n        { name: 'LotNum', align: 'left', label: 'Lot Number', field: 'LotNum', style: 'width: 40px' },\r\n        { name: 'PID', align: 'left', label: 'PID', field: 'PID', style: 'width: 60px;'},\r\n    ];\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'showParcelDialog') {\r\n            this.onShowDialog();\r\n        }\r\n    });\r\n\r\n    public onOpenShareDialog() {\r\n        this.$store.dispatch('showShareDialog', 'PARCEL');\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    get selectedParcelDetail(): ParcelDetail | null {\r\n        return this.$store.state.parcels.selectedParcelDetail;\r\n    }\r\n\r\n    get civicAddressData(): CivicAddress[] | null {\r\n        if (this.$store.state.parcels.selectedParcelDetail && this.$store.state.parcels.selectedParcelDetail.ParcelData.CivicAddresses) {\r\n            return this.$store.state.parcels.selectedParcelDetail.ParcelData.CivicAddresses;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    get formattedParcelSize(): string {\r\n        const parcelSize = Number(this.selectedParcelDetail?.ParcelData?.ParcelSizeFtSq);\r\n        return ListingUtil.getParcelSizeAcres(parcelSize);\r\n    }\r\n\r\n    public onShowDialog() {\r\n        this.showDialog = true;\r\n        this.tab = 'overview';\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParcelDetailsDialog.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParcelDetailsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ParcelDetailsDialog.vue?vue&type=template&id=acbded52&scoped=true&\"\nimport script from \"./ParcelDetailsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ParcelDetailsDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ParcelDetailsDialog.vue?vue&type=style&index=0&id=acbded52&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  \"acbded52\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QTabs,QTab,QTabPanels,QTabPanel,QTable,QSpinner,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QTabs,QTab,QTabPanels,QTabPanel,QTable,QSpinner})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"book-viewing-dialog-size\"},[_c('q-card-section',{staticClass:\"q-pb-none\"},[_c('q-toolbar',{staticClass:\"toolbar\"},[_c('div',{staticClass:\"text-h6 text-grey-1\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-eye\"}}),_vm._v(\" Book Viewing\")],1),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticClass:\"text-grey-1\",attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"},on:{\"click\":_vm.onReset}})],1)],1),(!_vm.isReponseReceived)?_c('q-card-section',{ref:\"detailWrapper\",staticClass:\"scroll card-section\"},[_c('div',{staticClass:\"q-pa-md q-mb-sm\"},[_vm._v(\" Please fill the following form if you would like to schedule a time to view this property. \"),_c('hr'),_c('div',{staticClass:\"row q-pa-md\"},[_c('div',{staticClass:\"col text-h6\"},[_c('q-select',{attrs:{\"outlined\":\"\",\"options\":['No', 'Yes'],\"label\":\"Are you currently working with an agent?\"},model:{value:(_vm.isWorkingWithAgent),callback:function ($$v) {_vm.isWorkingWithAgent=$$v},expression:\"isWorkingWithAgent\"}}),_c('hr'),(_vm.isWorkingWithAgent != 'Yes')?_c('div',[_c('q-input',{ref:\"name\",staticClass:\"q-mt-sm\",attrs:{\"outlined\":\"\",\"autofocus\":!_vm.isMobile,\"label\":\"Name\",\"rules\":[function (val) { return !!val || ''; }]},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('q-input',{ref:\"phoneNumber\",staticClass:\"q-mt-sm\",attrs:{\"outlined\":\"\",\"label\":\"Phone Number\",\"mask\":\"(###) ### - ####\",\"type\":\"tel\",\"rules\":[function (val) { return !!val || ''; }]},model:{value:(_vm.phoneNumber),callback:function ($$v) {_vm.phoneNumber=$$v},expression:\"phoneNumber\"}}),_c('q-input',{ref:\"emailAddress\",staticClass:\"q-mt-sm\",attrs:{\"outlined\":\"\",\"label\":\"Email\",\"type\":\"email\",\"rules\":[function (val) { return !!val || ''; }]},model:{value:(_vm.emailAddress),callback:function ($$v) {_vm.emailAddress=$$v},expression:\"emailAddress\"}}),_c('div',{staticClass:\"q-pt-sm\"},[_c('small',[_vm._v(\"Date and Time\")]),_c('div',{staticClass:\"row items-start \"},[_c('q-input',{staticClass:\"q-ma-sm\",staticStyle:{\"width\":\"175px\"},attrs:{\"filled\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('i',{staticClass:\"far fa-calendar cursor-pointer\"}),_c('q-popup-proxy',{ref:\"qDateProxy\",attrs:{\"transition-show\":\"scale\",\"transition-hide\":\"scale\"}},[_c('q-date',{attrs:{\"today-btn\":\"\",\"options\":function (date) { return date >= _vm.todaysDate; },\"color\":\"red-brand\"},on:{\"input\":function () { return _vm.$refs.qDateProxy.hide(); }},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}},[_c('div',{staticClass:\"row items-center justify-end\"},[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"label\":\"Close\",\"color\":\"primary\",\"flat\":\"\"}})],1)])],1)]},proxy:true}],null,false,871590084),model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}}),_c('q-select',{staticClass:\"q-ma-sm\",staticStyle:{\"width\":\"175px\"},attrs:{\"filled\":\"\",\"options\":_vm.allowableTimes},model:{value:(_vm.time),callback:function ($$v) {_vm.time=$$v},expression:\"time\"}})],1)]),_c('div',{staticClass:\"q-pt-sm\"},[_c('small',[_vm._v(\"Alternate Date and Time\")]),_c('div',{staticClass:\"row items-start \"},[_c('q-input',{staticClass:\"q-ma-sm\",staticStyle:{\"width\":\"175px\"},attrs:{\"filled\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('i',{staticClass:\"far fa-calendar cursor-pointer\"}),_c('q-popup-proxy',{ref:\"qADateProxy\",attrs:{\"transition-show\":\"scale\",\"transition-hide\":\"scale\"}},[_c('q-date',{attrs:{\"today-btn\":\"\",\"options\":function (alternateDate) { return alternateDate >= _vm.todaysDate; },\"color\":\"red-brand\"},on:{\"input\":function () { return _vm.$refs.qADateProxy.hide(); }},model:{value:(_vm.alternateDate),callback:function ($$v) {_vm.alternateDate=$$v},expression:\"alternateDate\"}},[_c('div',{staticClass:\"row items-center justify-end\"},[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"label\":\"Close\",\"color\":\"#1A3668\",\"flat\":\"\"}})],1)])],1)]},proxy:true}],null,false,3304034880),model:{value:(_vm.alternateDate),callback:function ($$v) {_vm.alternateDate=$$v},expression:\"alternateDate\"}}),_c('q-select',{staticClass:\"q-ma-sm\",staticStyle:{\"width\":\"175px\"},attrs:{\"filled\":\"\",\"options\":_vm.allowableAlternateTimes},model:{value:(_vm.alternateTime),callback:function ($$v) {_vm.alternateTime=$$v},expression:\"alternateTime\"}})],1)])],1):_c('div',{staticClass:\"q-pt-sm\"},[_c('small',[_vm._v(\"Please contact your agent directly in order to book a viewing for this listing if you are currently working with an agent.\")])])],1)])])]):_c('q-card-section',{attrs:{\"scroll\":\"\",\"card-section\":\"\"}},[(_vm.requestSubmittedSuccessfully)?_c('div',{staticClass:\"q-pa-md showingRequestSubmittedPanel\"},[_c('small',[_vm._v(\"Thank you! \"),_c('strong',[_vm._v(\"Your showing request was successfully submitted.\")]),_vm._v(\" One of our agents will be in contact with you shortly.\")])]):_c('div',{staticClass:\"q-pa-md showingRequestErrorPanel\"},[_c('small',[_vm._v(\"We're sory, but an error occurred while processing your booking request. Please try again.\")])])]),_c('q-card-section',{staticClass:\"footer-section\"},[_c('div',{staticStyle:{\"float\":\"right\"}},[(!_vm.requestSubmittedSuccessfully)?_c('div',[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticClass:\"q-ma-xs\",attrs:{\"color\":\"white\",\"no-caps\":\"\",\"text-color\":\"black\",\"label\":\"Cancel\"},on:{\"click\":_vm.onReset}}),_c('q-btn',{staticClass:\"q-ma-xs actionButton\",attrs:{\"no-caps\":\"\",\"label\":\"Send Request\",\"disable\":_vm.isWorkingWithAgent === 'Yes'},on:{\"click\":_vm.onSubmit}})],1):_c('div',[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticClass:\"q-ma-xs actionButton\",attrs:{\"no-caps\":\"\",\"label\":\"Done\"},on:{\"click\":_vm.onReset}})],1)])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface IRequestViewingViewModel {\r\n    systemId: string;\r\n    workingWithAgent: string;\r\n    name: string;\r\n    phone: string;\r\n    email: string;\r\n    request1Date: string;\r\n    request1Time: string;\r\n    request2Date: string;\r\n    request2Time: string;\r\n}\r\n\r\nexport class RequestViewingViewModel implements IRequestViewingViewModel {\r\n    public systemId = '';\r\n    public workingWithAgent = '';\r\n    public name = '';\r\n    public phone = '';\r\n    public email = '';\r\n    public request1Date = '';\r\n    public request1Time = '';\r\n    public request2Date = '';\r\n    public request2Time = '';\r\n    constructor(\r\n        systemId: string,\r\n        workingWithAgent: string,\r\n        name: string,\r\n        telephone: string,\r\n        email: string,\r\n        request1Date: string,\r\n        request1Time: string,\r\n        request2Date: string,\r\n        request2Time: string,\r\n    ) {\r\n        this.systemId = systemId;\r\n        this.workingWithAgent = workingWithAgent;\r\n        this.name = name;\r\n        this.phone = telephone;\r\n        this.email = email;\r\n        this.request1Date = request1Date;\r\n        this.request1Time = request1Time;\r\n        this.request2Date = request2Date;\r\n        this.request2Time = request2Time;\r\n    }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ListingDetail } from '@/models/ListingDetail';\r\nimport { RequestViewingViewModel } from '@/models/RequestViewingViewModel';\r\n\r\n@Component\r\nexport default class BookViewingDialog extends Vue {\r\n\r\n    public showDialog: boolean = false;\r\n    public requestSubmittedSuccessfully: boolean = false;\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 415;\r\n    public isWorkingWithAgent = 'No';\r\n\r\n    public name = '';\r\n    public phoneNumber = '';\r\n    public emailAddress = '';\r\n\r\n    public date = '';\r\n    public time = '09:00 AM';\r\n    public alternateDate = '';\r\n    public alternateTime = '09:00 AM';\r\n\r\n    public timeOptions = ['09:00 AM', '09:30 AM', '10:00 AM', '10:30 AM', '11:00 AM', '11:30 AM', '12:00 PM', '12:30 PM', '01:00 PM', '01:30 PM',\r\n                         '02:00 PM', '02:30 PM', '03:00 PM', '03:30 PM', '04:00 PM', '04:30 PM', '05:00 PM', '05:30 PM', '06:00 PM', '06:30 PM',\r\n                         '07:00 PM', '07:30 PM', '08:00 PM', '08:30 PM', '09:00 PM'];\r\n\r\n    public isReponseReceived: boolean = false;\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'showBookViewingDialog') {\r\n            this.onShowDialog();\r\n        }\r\n        if (action.type === 'showRequestSuccess') {\r\n            this.onShowRequestSuccess();\r\n        }\r\n        if (action.type === 'showRequestError') {\r\n            this.onShowRequestError();\r\n        }\r\n    });\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get selectedListingDetail(): ListingDetail {\r\n        return this.$store.state.listings.selectedListingDetail;\r\n    }\r\n\r\n    get todaysDate(): string {\r\n        const today = new Date();\r\n        const dd = String(today.getDate()).padStart(2, '0');\r\n        const mm = String(today.getMonth() + 1).padStart(2, '0');\r\n        const yyyy = today.getFullYear();\r\n\r\n        return yyyy + '/' + mm + '/' + dd;\r\n    }\r\n\r\n    get currentTime(): string {\r\n        const today = new Date();\r\n        let hours = today.getHours();\r\n        const minutes = today.getMinutes();\r\n        const ampm = hours >= 12 ? 'PM' : 'AM';\r\n        hours = hours % 12;\r\n        hours = hours ? hours : 12;\r\n        const hoursString = hours < 10 ? '0' + hours : hours;\r\n        const minutesString = minutes < 10 ? '0' + minutes : minutes;\r\n        const strTime = hoursString + ':' + minutesString + ' ' + ampm;\r\n        return strTime;\r\n    }\r\n\r\n    get currentDateAndTime(): string {\r\n        return this.todaysDate + ' ' + this.currentTime;\r\n    }\r\n\r\n    get allowableTimes(): string[] {\r\n        if (this.date !== this.todaysDate) {\r\n            this.time = this.timeOptions[0];\r\n            return this.timeOptions;\r\n        } else {\r\n            const timeOptionsToReturn = this.todaysAllowableTimes();\r\n            this.time = timeOptionsToReturn[0];\r\n            return timeOptionsToReturn;\r\n        }\r\n    }\r\n\r\n    get allowableAlternateTimes(): string[] {\r\n        if (this.alternateDate !== this.todaysDate) {\r\n            this.alternateTime = this.timeOptions[0];\r\n            return this.timeOptions;\r\n        } else {\r\n            const timeOptionsToReturn = this.todaysAllowableTimes();\r\n            this.alternateTime = timeOptionsToReturn[0];\r\n            return timeOptionsToReturn;\r\n        }\r\n    }\r\n\r\n    public todaysAllowableTimes() {\r\n        const dateAndTime = this.currentDateAndTime;\r\n\r\n        const timeOptionsToReturn = [];\r\n\r\n        for (let i = 0; i < this.timeOptions.length; i++) {\r\n            const timeOptionsToCompare = this.todaysDate + ' ' + this.timeOptions[i];\r\n\r\n            if (Date.parse(timeOptionsToCompare) > Date.parse(dateAndTime)) {\r\n                timeOptionsToReturn.push(this.timeOptions[i]);\r\n            }\r\n        }\r\n\r\n        return timeOptionsToReturn;\r\n    }\r\n\r\n    public onShowDialog() {\r\n        this.showDialog = true;\r\n        this.setWrapperHeight();\r\n    }\r\n\r\n    public onShowRequestSuccess() {\r\n        // @ts-ignore\r\n        window.dataLayer = window.dataLayer || [];\r\n        // @ts-ignore\r\n        window.dataLayer.push({'event': 'showingrequest'});\r\n        this.isReponseReceived = true;\r\n        this.requestSubmittedSuccessfully = true;\r\n    }\r\n\r\n    public onShowRequestError() {\r\n        this.isReponseReceived = true;\r\n        this.requestSubmittedSuccessfully = false;\r\n    }\r\n\r\n    public mounted() {\r\n        this.isWorkingWithAgent = 'No';\r\n        this.name = '';\r\n        this.phoneNumber = '';\r\n        this.emailAddress = '';\r\n\r\n        this.date = this.todaysDate;\r\n        this.alternateDate = this.todaysDate;\r\n        window.onresize = this.setWrapperHeight;\r\n    }\r\n\r\n    public onSubmit() {\r\n        const nameValid = (this.$refs.name as Vue & { validate: () => boolean }).validate();\r\n        const phoneNumberValid = (this.$refs.phoneNumber as Vue & { validate: () => boolean }).validate();\r\n        const emailValid = (this.$refs.emailAddress as Vue & { validate: () => boolean }).validate();\r\n        if (nameValid && phoneNumberValid && emailValid) {\r\n            const requestViewingVM = new RequestViewingViewModel(this.selectedListingDetail.MlsNo, this.isWorkingWithAgent, this.name,\r\n                                                 this.phoneNumber, this.emailAddress, this.date, this.time, this.alternateDate, this.alternateTime);\r\n            this.$store.dispatch('initRequestViewing', requestViewingVM);\r\n        }\r\n    }\r\n\r\n    public onReset() {\r\n        this.isReponseReceived = false;\r\n        this.isWorkingWithAgent = 'No';\r\n        this.name = '';\r\n        this.phoneNumber = '';\r\n        this.emailAddress = '';\r\n\r\n        this.date = this.todaysDate;\r\n        this.alternateDate = this.todaysDate;\r\n    }\r\n\r\n    public setWrapperHeight() {\r\n        if (this.isMobile) {\r\n            const height = window.innerHeight - 110;\r\n            this.$nextTick(function() {\r\n                // @ts-ignore\r\n                this.$refs.detailWrapper.$el.style.height = height + 'px';\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BookViewingDialog.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BookViewingDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookViewingDialog.vue?vue&type=template&id=656fa9c8&scoped=true&\"\nimport script from \"./BookViewingDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookViewingDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BookViewingDialog.vue?vue&type=style&index=0&id=656fa9c8&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  \"656fa9c8\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QSelect,QInput,QPopupProxy,QDate,QTab,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QSelect,QInput,QPopupProxy,QDate,QTab})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"over-map-right transparent shadow-box shadow-5 rounded-borders disable-zoom\",attrs:{\"id\":\"layers-section\"}},[_c('q-btn',{staticClass:\"hover-color\",attrs:{\"color\":\"red-brand\",\"round\":\"\",\"icon\":_vm.layerMenuShowing ? 'fas fa-times' : 'fas fa-layer-group'}},[_c('q-menu',{attrs:{\"transition-show\":\"flip-right\",\"transition-hide\":\"flip-left\"},model:{value:(_vm.layerMenuShowing),callback:function ($$v) {_vm.layerMenuShowing=$$v},expression:\"layerMenuShowing\"}},[_c('q-card',{staticClass:\"my-card bg-grey-1\",attrs:{\"flat\":\"\",\"bordered\":\"\"}},[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"text-white shadow-2\",staticStyle:{\"height\":\"20px\"}},[_c('q-toolbar-title',{staticClass:\"layer-menu-blue\"},[_c('q-icon',{staticClass:\"q-pr-sm\",attrs:{\"name\":\"fas fa-map\"}}),_vm._v(\"Layers\")],1)],1)],1),_c('q-separator',{attrs:{\"color\":\"blue-10\"}}),_c('q-card-section',{staticClass:\"q-pt-sm q-pb-none\"},[_c('div',{staticClass:\"row items-center no-wrap\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"text-subtitle1 layer-menu-blue\"},[_c('q-icon',{staticClass:\"layer-menu-blue\",attrs:{\"name\":\"fas fa-globe\"}}),_vm._v(\" Basemaps\")],1)])])]),_c('q-card-section',{staticClass:\"q-pa-sm\"},_vm._l((_vm.basemaps),function(basemap){return _c('q-item',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],key:basemap.name,staticClass:\"q-my-xs q-py-xs\",staticStyle:{\"min-height\":\"38px\"},attrs:{\"active\":basemap.active,\"active-class\":\"active-basemap\"},nativeOn:{\"click\":function($event){return _vm.onBasemapSelect(basemap)}}},[_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-img',{staticClass:\"layer-thumbnail\",attrs:{\"src\":basemap.thumbnail,\"alt\":basemap.label}})],1),_c('q-item-section',[_c('q-item-label',[_vm._v(_vm._s(basemap.label))])],1)],1)}),1),_c('q-separator'),_c('q-card-section',{staticClass:\"q-pt-sm q-pb-none\"},[_c('div',{staticClass:\"row items-center no-wrap\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"text-subtitle1 layer-menu-blue\"},[_c('q-icon',{staticClass:\"layer-menu-blue\",attrs:{\"name\":\"fas fa-map\"}}),_vm._v(\" More Layers\")],1)])])]),_c('q-card-section',{staticClass:\"q-ma-none q-pa-none q-pb-sm\"},_vm._l((_vm.layers),function(layer){return _c('q-item',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],key:layer.name,staticClass:\"q-my-none q-py-none \",staticStyle:{\"min-height\":\"38px\"},attrs:{\"tag\":\"label\"}},[_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-toggle',{attrs:{\"color\":\"blue-10\"},nativeOn:{\"click\":function($event){return _vm.onLayerToggle(layer)}},model:{value:(layer.active),callback:function ($$v) {_vm.$set(layer, \"active\", $$v)},expression:\"layer.active\"}})],1),_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-img',{staticClass:\"layer-thumbnail\",attrs:{\"src\":layer.thumbnail,\"alt\":layer.label}})],1),_c('q-item-section',[_c('q-item-label',[_vm._v(_vm._s(layer.label))])],1),_c('q-item-section',{attrs:{\"side\":\"\"}},[_c('q-btn',{staticClass:\"layer-menu-blue\",attrs:{\"round\":\"\",\"flat\":\"\",\"icon\":\"fas fa-question-circle\"},on:{\"click\":function($event){return _vm.onLayerInfo(layer.tooltip)}}},[(layer.tooltip.length < 100)?_c('q-tooltip',[_vm._v(\" \"+_vm._s(layer.tooltip)+\" \")]):_vm._e()],1)],1)],1)}),1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface ICrimePoint {\r\n    CrimePointID: number;\r\n    NumCrimes: number;\r\n    OBJECTID: number;\r\n    Street: string;\r\n}\r\n\r\nexport class CrimePoint implements ICrimePoint {\r\n    public CrimePointID: number;\r\n    public NumCrimes: number;\r\n    public OBJECTID: number;\r\n    public Street: string;\r\n    constructor(\r\n        crimeObject: any,\r\n    ) {\r\n        this.CrimePointID = crimeObject.CrimePointID;\r\n        this.NumCrimes = crimeObject.NumCrimes;\r\n        this.OBJECTID = crimeObject.OBJECTID;\r\n        this.Street = crimeObject.Street;\r\n    }\r\n}\r\n","export default function Worker_fn() {\n  return new Worker(__webpack_public_path__ + \"js/preloadImagesWorker.worker.js\");\n}\n","// @ts-ignore - vanilla js for workers\r\nimport Worker from 'worker-loader!./preloadImagesWorker.js';\r\n\r\nconst worker = new Worker();\r\n\r\nexport default function PreloadImage(url: string) {\r\n    worker.postMessage({\r\n        type: 'url',\r\n        url,\r\n    });\r\n}\r\n\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport '../../node_modules/leaflet-plugins/layer/tile/Bing.js';\r\nimport 'leaflet.markercluster'; // This isn't used directly, but it is needed when using esriCluster\r\nimport * as esri from 'esri-leaflet';\r\n// @ts-ignore - no types!\r\nimport * as esriCluster from 'esri-leaflet-cluster';\r\nimport 'leaflet.heat';\r\n\r\nimport 'mapbox-gl';\r\nimport 'mapbox-gl-leaflet';\r\nimport { Listing } from '../models/Listing';\r\nimport { Filter } from '../models/Filter';\r\nimport { CrimePoint } from '../models/CrimePoint';\r\nimport Defs from '../utils/Defs';\r\nimport ListingUtil from '../utils/ListingUtil';\r\nimport PreloadImage from '../workers/preloadImages';\r\n\r\n@Component\r\nexport default class LayerManager extends Vue {\r\n\r\n    public layerMenuShowing: boolean = false;\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'initLayers') {\r\n            this.initLayers();\r\n        }\r\n        if (action.type === 'setSelectedListing') {\r\n            console.log('selectedListingChanged!');\r\n            console.log(action.payload);\r\n            this.onSelectedListingChanged(action.payload);\r\n        }\r\n        if (action.type === 'filterChanged') {\r\n            this.onFilterChanged();\r\n        }\r\n        if (action.type === 'heatmapDataLoaded') {\r\n            this.onHeatmapDataLoaded();\r\n        }\r\n        if (action.type === 'goToListing') {\r\n            this.onGoToListing(action.payload);\r\n        }\r\n        if (action.type === 'setMarkerLocation') {\r\n            this.setSelectedFeatureMarkerCoordinates(action.payload);\r\n        }\r\n        // I'm pretty sure this sub isn't needed anymore\r\n        // if (action.type === 'mapMoveEnd') {\r\n        //     if (!this.isListingPointLayerLoading) {\r\n        //         console.log('LayerMgr:_onMapMovedEnd - map NOT loading...');\r\n        //         // _notifyNewFeaturesLoadedIntoMapBounds();\r\n        //         // ->\r\n        //         // var lFeatures = _getPointFeaturesWithinCurrentBounds();\r\n        //         // RemapState.featuresWithinMapBoundsChanged(lFeatures);\r\n        //     } else {\r\n        //         // Logger.writeLog(\"LayerMgr:_onMapMovedEnd - map loading already...\");\r\n        //         console.log('LayerMgr:_onMapMovedEnd - map loading already...');\r\n        //     }\r\n        // }\r\n    });\r\n\r\n    public selectedFeatureMarker: L.Marker | null = null;\r\n    public selectedCrimeMarker: L.Marker | null = null;\r\n    public lastListingLayerSelected: esri.FeatureLayer | null = null;\r\n    public listingPointsLayer: esri.FeatureLayer | null = null;\r\n    public listingPolygonLayer: esri.FeatureLayer | null = null;\r\n    public pointOpsLayer: esriCluster.featureLayer | null = null;\r\n    public currentlyHighlightedPolygonId: string | null = null;\r\n    public parcelVectorLayer: any = null; // type: mapboxGL\r\n    public loadingTimerId: number | null = null;\r\n\r\n    public listingPolygonErrorTracking = {\r\n        NumLoadsInRowWithError: 0,\r\n        IsErrorOnCurrentLoad: false,\r\n        HasErrorBeenDisplayed: false,\r\n        DelayToNextRefresh: 100,\r\n        LatestError: '',\r\n    };\r\n\r\n    public listingPointErrorTracking = {\r\n        NumLoadsInRowWithError: 0,\r\n        IsErrorOnCurrentLoad: false,\r\n        HasErrorBeenDisplayed: false,\r\n        DelayToNextRefresh: 100,\r\n        LatestError: '',\r\n    };\r\n    public isListingPointLayerLoading: boolean = true;\r\n    public hasPendingFilterUpdate: boolean = false;\r\n    public isHeatLayersInit = false;\r\n    public isCrimeLayersInit = false;\r\n    public isCrownLandLayerInit = false;\r\n    public isForeignBuyerLayerInit = false;\r\n    public pendingNewSelectedListingPid: string | null = null;\r\n    public selectedParcelLayer: any = null;\r\n    public layerSoldHeatMap: any | null = null; // L.HeatLayer types aren't working ?!\r\n    public crimeLayer: esriCluster.featureLayer | null = null;\r\n    public crownLandLayer: any = null;\r\n    public foreignBuyerLayer: any = null;\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get isLoggedIn(): boolean {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get activeFilter(): Filter {\r\n        return this.$store.state.filters.activeFilter;\r\n    }\r\n\r\n    get spatialFilter(): L.GeoJSON | null {\r\n        return this.$store.state.filters.spatialFilter;\r\n    }\r\n\r\n    get heatmapData(): number[][] | null {\r\n        return this.$store.state.layers.heatmapData;\r\n    }\r\n\r\n    // grab the inital state from config, but active state may be changed locally\r\n    public layers = [ Object.assign({}, this.$store.state.config.ListingsPointLayer),\r\n            Object.assign({}, this.$store.state.config.HeatmapLayer),\r\n            Object.assign({}, this.$store.state.config.CrimeRecordsLayer)];\r\n\r\n    public activeBasemap: esri.BasemapLayer | L.TileLayer | esri.TiledMapLayer | null = null;\r\n    public activeBasemapLabels: esri.BasemapLayer | null = null;\r\n    public basemaps: any = {};\r\n\r\n    @Watch('layerMenuShowing', { immediate: false, deep: false })\r\n    public layerMenuShowingChanged(value: boolean, oldValue: boolean) {\r\n        if (value) {\r\n            if (!this.isForeignBuyerLayerInit) {\r\n                this.initForeignBuyerLayer();\r\n            }\r\n            if (!this.isCrownLandLayerInit) {\r\n                this.initCrownLandLayer();\r\n            }\r\n            if (!this.isHeatLayersInit) {\r\n                this.$store.dispatch('initHeatmapLayer');\r\n                this.isHeatLayersInit = true;\r\n            }\r\n            if (!this.isCrimeLayersInit) {\r\n                this.initCrimePointLayer();\r\n                this.$store.dispatch('initCrimeLayer');\r\n            }\r\n        }\r\n    }\r\n\r\n    @Watch('activeFilter', { immediate: false, deep: true })\r\n    public activeFilterChanged(value: Filter, oldValue: Filter) {\r\n        console.log('LayerManager(): activeFilter changed!');\r\n        this.onFilterChanged();\r\n    }\r\n\r\n    public initCrimePointLayer() {\r\n        // Logger.writeLog(\"Init Crime Layer\");\r\n        console.log('LayerManager: initCrimePointLayer()');\r\n\r\n        this.isCrimeLayersInit = true;\r\n        this.crimeLayer = esriCluster.featureLayer({\r\n            url: this.config.CrimeRecordsLayer.url,\r\n            fields: ['*'],\r\n            proxy: this.config.proxy.url,\r\n            minZoom: this.config.ListingsPointLayer.minZoom,\r\n            maxZoom: this.config.ListingsPointLayer.maxZoom,\r\n            precision: this.config.ListingsPointLayer.precision,\r\n            chunkedLoading: true,\r\n            spiderfyOnMaxZoom: false,\r\n            animate: false,\r\n            disableClusteringAtZoom: 17,\r\n            polygonOptions: {\r\n                color: '#fba02f',\r\n                weight: 4,\r\n                opacity: 1,\r\n                fillOpacity: 0.5,\r\n            },\r\n            // this function defines how the icons\r\n            // representing  clusters are created\r\n            iconCreateFunction: (cluster: any) => {\r\n                // get the number of items in the cluster\r\n                const count = cluster.getChildCount();\r\n                // figure out how many digits long the number is\r\n                const digits = (count + '').length;\r\n                // return a new L.DivIcon with our classes so we can\r\n                // style them with CSS. Take a look at the CSS in\r\n                // the <head> to see these styles. You have to set\r\n                // iconSize to null if you want to use CSS to set the\r\n                // width and height.\r\n                return new L.DivIcon({\r\n                    html: count,\r\n                    className: 'crimeCluster digits-' + digits,\r\n                    iconSize: undefined,\r\n                });\r\n            },\r\n            pointToLayer: (feature: any, latlng: any) => {\r\n                return L.marker(latlng, {\r\n                    icon: L.divIcon({\r\n                        iconAnchor: [20, 20], // point of the icon which will correspond to marker's location\r\n                        iconSize: [33, 35],\r\n                        className: 'iconCrime',\r\n                        html: `<div class='lblCrimePin'>` + feature.properties.NumCrimes + `</div>`,\r\n                    }),\r\n                });\r\n            },\r\n        });\r\n        this.crimeLayer.on('click', this.onCrimePointClick);\r\n    }\r\n\r\n    public initCrownLandLayer() {\r\n        this.isCrownLandLayerInit = true;\r\n\r\n        this.crownLandLayer = new esri.FeatureLayer({\r\n            url: this.config.CrownLandLayer.url,\r\n            minZoom: this.config.CrownLandLayer.minZoom,\r\n            maxZoom: this.config.CrownLandLayer.maxZoom,\r\n            style: () => {\r\n                return {color: 'orange'};\r\n            },\r\n        });\r\n\r\n        const addFunction = this.addCrownLandLayerToLayerManager;\r\n        this.crownLandLayer.metadata((error: any, metadata: any) => {\r\n            if (metadata !== undefined && error === undefined) {\r\n                addFunction();\r\n            }\r\n        });\r\n    }\r\n\r\n    public async initForeignBuyerLayer() {\r\n        this.isForeignBuyerLayerInit = true;\r\n\r\n        const response = await fetch(this.config.ForeignBuyerBanLayer.url);\r\n        const geoJSONData = await response.json();\r\n\r\n        this.foreignBuyerLayer = L.geoJSON(geoJSONData, {\r\n            style: () => {\r\n                return { color: '#A600FF', fillColor: '#55ff00', weight: 2, fillOpacity: 0.2 };\r\n            },\r\n        });\r\n\r\n        this.foreignBuyerLayer.visibility = false;\r\n\r\n        this.map.on('zoomend', () => {\r\n            if (this.config.ForeignBuyerBanLayer.active) {\r\n                this.handleAddForeignBuyerLand();\r\n            }\r\n        });\r\n\r\n        const addFunction = this.addForeignBuyerBanLayerToLayerManager;\r\n        if (geoJSONData !== null && response.ok === true) {\r\n            addFunction();\r\n        }\r\n    }\r\n\r\n    public addCrownLandLayerToLayerManager() {\r\n        this.layers.push(Object.assign({}, this.config.CrownLandLayer));\r\n    }\r\n\r\n    public addForeignBuyerBanLayerToLayerManager() {\r\n        this.layers.push(Object.assign({}, this.config.ForeignBuyerBanLayer));\r\n    }\r\n\r\n    public onHeatmapDataLoaded() {\r\n        if (this.heatmapData) {\r\n            // @ts-ignore - L.HeatLayer types aren't working ?!\r\n            this.layerSoldHeatMap = L.heatLayer(this.heatmapData, { radius: 25, maxZoom: 17 });\r\n        }\r\n    }\r\n\r\n    // input is basemap config object\r\n    public onBasemapSelect(basemap: any) {\r\n        console.log('onBasemapSelect');\r\n        if (basemap.active) {\r\n            return;\r\n        }\r\n\r\n        for (const [key, value] of Object.entries(this.basemaps)) {\r\n            (value as any).active = false;\r\n        }\r\n\r\n        if (this.activeBasemap) {\r\n            this.map.removeLayer(this.activeBasemap);\r\n        }\r\n\r\n        this.$store.dispatch('sendBasemapEvent', { action: basemap.name });\r\n\r\n        basemap.active = true;\r\n        if (basemap.name === 'Imagery_Bing') {\r\n            // @ts-ignore\r\n            this.activeBasemap = new L.BingLayer(basemap.key, {type: basemap.type}).addTo(this.map);\r\n        } else if (basemap.name === 'MapBox') {\r\n            // @ts-ignore - no types for mapboxGL installed\r\n            this.activeBasemap = L.mapboxGL({\r\n                accessToken: this.config.mapBoxToken,\r\n                style: basemap.style,\r\n                maxZoom: basemap.options.maxZoom,\r\n            }).addTo(this.map);\r\n        } else if (basemap.hasOwnProperty('urlTemplate')) {\r\n            this.activeBasemap = L.tileLayer(basemap.urlTemplate, {\r\n                maxZoom: basemap.options.maxZoom,\r\n            }).addTo(this.map);\r\n        } else if (basemap.hasOwnProperty('url')) {\r\n            this.activeBasemap = esri.tiledMapLayer({\r\n                url: basemap.url,\r\n                maxZoom: basemap.options.maxZoom,\r\n            }).addTo(this.map);\r\n        } else {\r\n            this.activeBasemap = esri.basemapLayer(basemap.name).addTo(this.map);\r\n        }\r\n\r\n        if (basemap.name === 'Imagery_GeoNova' || basemap.name === 'Imagery') {\r\n            this.parcelVectorLayer.removeFrom(this.map);\r\n            // @ts-ignore - no types\r\n            this.parcelVectorLayer = L.mapboxGL({\r\n                style: this.config.ParcelVectorTileLayer.styleWhite,\r\n                attribution: ' Built by <a href=\"https://www.mapdev.ca\" target=\"_blank\">MapDev</a>',\r\n                pane: 'vector',\r\n            }).addTo(this.map);\r\n        } else {\r\n            this.parcelVectorLayer.removeFrom(this.map);\r\n            // @ts-ignore - no types\r\n            this.parcelVectorLayer = L.mapboxGL({\r\n                style: this.config.ParcelVectorTileLayer.styleNormal,\r\n                attribution: ' Built by <a href=\"https://www.mapdev.ca\" target=\"_blank\">MapDev</a>',\r\n                pane: 'vector',\r\n            }).addTo(this.map);\r\n        }\r\n\r\n        if (this.activeBasemapLabels) {\r\n            this.map.removeLayer(this.activeBasemapLabels);\r\n        }\r\n\r\n        if (basemap.name === 'ShadedRelief' ||\r\n            basemap.name === 'Oceans' ||\r\n            basemap.name === 'Gray' ||\r\n            basemap.name === 'DarkGray' ||\r\n            basemap.name === 'Imagery' ||\r\n            basemap.name === 'Terrain') {\r\n            // @ts-ignore - esri types don't like it, but its good\r\n            this.activeBasemapLabels = esri.basemapLayer(basemap.name + 'Labels');\r\n            this.map.addLayer(this.activeBasemapLabels);\r\n        }\r\n\r\n        this.layerMenuShowing = false;\r\n    }\r\n\r\n    // TODO this could be made a little more generic to handle other layers\r\n    public onLayerToggle(layer: any) {\r\n        console.log('onLayerToggle');\r\n\r\n        // Logger.writeLog(\"LayerMgr:chkBoxListingPoints\");\r\n        if (layer.name === this.config.ListingsPointLayer.name) {\r\n            if (layer.active) {\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_LISTPNTSON});\r\n                this.map.addLayer(this.pointOpsLayer);\r\n            } else {\r\n                this.map.removeLayer(this.pointOpsLayer);\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_LISTPNTSOFF});\r\n            }\r\n        }\r\n\r\n        if (layer.name === this.config.HeatmapLayer.name) {\r\n            if (layer.active) {\r\n                this.map.addLayer(this.layerSoldHeatMap);\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_HEATON});\r\n            } else {\r\n                this.map.removeLayer(this.layerSoldHeatMap);\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_HEATOFF});\r\n            }\r\n        }\r\n\r\n        if (layer.name === this.config.CrimeRecordsLayer.name) {\r\n            if (this.crimeLayer === null) {\r\n                return;\r\n            }\r\n            if (layer.active) {\r\n                this.map.addLayer(this.crimeLayer);\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_CRIMEON});\r\n            } else {\r\n                this.map.removeLayer(this.crimeLayer);\r\n                if (this.selectedCrimeMarker) {\r\n                    this.map.removeLayer(this.selectedCrimeMarker);\r\n                }\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_CRIMEOFF});\r\n            }\r\n        }\r\n\r\n        if (layer.name === this.config.CrownLandLayer.name) {\r\n            if (this.crownLandLayer === null) {\r\n                return;\r\n            }\r\n            if (layer.active) {\r\n                this.map.addLayer(this.crownLandLayer);\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_CROWNLANDON});\r\n            } else {\r\n                this.map.removeLayer(this.crownLandLayer);\r\n                this.$store.dispatch('sendOpsLayerEvent', { action: Defs.ANALYTICS_OPSLAYER_CROWNLANDOFF});\r\n            }\r\n        }\r\n\r\n        if (layer.name === this.config.ForeignBuyerBanLayer.name) {\r\n            if (this.foreignBuyerLayer === null) {\r\n                return;\r\n            }\r\n            if (layer.active) {\r\n                this.config.ForeignBuyerBanLayer.active = true;\r\n                this.handleAddForeignBuyerLand();\r\n            } else {\r\n                this.config.ForeignBuyerBanLayer.active = false;\r\n                this.foreignBuyerLayer.visibility = false;\r\n                this.map.removeLayer(this.foreignBuyerLayer);\r\n            }\r\n        }\r\n    }\r\n\r\n    public onLayerInfo(tooltip: string) {\r\n        console.log('onLayerInfo');\r\n        if (tooltip.length > 100) {\r\n            console.log(tooltip);\r\n            // TODO Needs formatting\r\n            this.$q.dialog({\r\n                title: 'Info',\r\n                message: tooltip,\r\n            }).onOk(() => {\r\n            // console.log('OK')\r\n            }).onCancel(() => {\r\n            // console.log('Cancel')\r\n            }).onDismiss(() => {\r\n            // console.log('I am triggered on both OK and Cancel')\r\n            });\r\n        }\r\n    }\r\n\r\n    public initLayers() {\r\n        this.initBaseLayers();\r\n        this.initTileLayers();\r\n        this.initOpsLayers();\r\n        this.initSelectedFeatureMarker();\r\n        this.initSelectedCrimeMarker();\r\n        this.initQueryParams();\r\n    }\r\n\r\n    public initQueryParams() {\r\n        const sysId = this.$route.query.sid as string;\r\n        const pid = this.$route.query.pid as string;\r\n        const lat = this.$route.query.lat as string;\r\n        const lon = this.$route.query.lon as string;\r\n        if (sysId) {\r\n            this.onGoToListing(parseInt(sysId, 10));\r\n        } else if (pid) {\r\n            if (pid.length === 8) {\r\n                this.$store.dispatch('goToParcel', pid);\r\n            }\r\n        } else if (lat && lon) {\r\n            const latLon = new L.LatLng(parseFloat(lat), parseFloat(lon));\r\n            this.$store.dispatch('setMarkerLocation', latLon);\r\n            this.$store.dispatch('goToLatLon', latLon);\r\n        }\r\n    }\r\n\r\n    public isWebGLSupported(): boolean {\r\n        const canvas = document.createElement('canvas');\r\n        const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n        if (gl && gl instanceof WebGLRenderingContext) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public initBaseLayers() {\r\n        const lBasemap: esri.Basemaps = (this.config.mapDefault.basemap) as L.esri.Basemaps;\r\n        if (this.isWebGLSupported()) {\r\n            // @ts-ignore - no types for mapboxGL installed\r\n            this.activeBasemap = L.mapboxGL({\r\n                accessToken: this.config.mapBoxToken,\r\n                style: this.config.basemapLayers.MapBox.style,\r\n                maxZoom: this.config.basemapLayers.MapBox.options.maxZoom,\r\n            }).addTo(this.map);\r\n            this.map.attributionControl.setPrefix('<a href=\"https://www.mapbox.com/about/maps/\" style=\"color:black\" target=\"_blank\">© Mapbox</a> | <a href=\"http://www.openstreetmap.org/copyright\" style=\"color:black\" target=\"_blank\">© OpenStreetMap</a> | <a href=\"https://www.mapbox.com/map-feedback/\" style=\"color:black\" target=\"_blank\">Improve this map</a> | Powered by <a href=\"https://www.esri.com\" target=\"_blank\" style=\"color:black\">Esri</a>');\r\n            this.basemaps = Object.assign({}, this.$store.state.config.basemapLayers);\r\n            this.basemaps.MapBox.active = true;\r\n        } else {\r\n            this.activeBasemap = esri.basemapLayer(lBasemap).addTo(this.map);\r\n            this.map.attributionControl.setPrefix('Powered by <a href=\"https://www.esri.com\" target=\"_blank\" style=\"color:black\">Esri</a>');\r\n            this.basemaps = Object.assign({}, this.$store.state.config.basemapLayers);\r\n            // @ts-ignore\r\n            delete this.basemaps.MapBox;\r\n            this.basemaps.Streets.active = true;\r\n        }\r\n    }\r\n\r\n    public initTileLayers() {\r\n        console.log('initTileLayers');\r\n        // Logger.writeLog(\"_initTileLayers\");\r\n\r\n        this.map.createPane('vector');\r\n        const vectorPane = this.map.getPane('vector');\r\n        if (vectorPane) {\r\n            vectorPane.style.zIndex = '300';\r\n        }\r\n\r\n\r\n        // @ts-ignore - no types for mapboxGL installed\r\n        this.parcelVectorLayer = L.mapboxGL({\r\n            style: this.config.ParcelVectorTileLayer.styleNormal,\r\n            attribution: ' Built by <a href=\"https://www.mapdev.ca\" target=\"_blank\">MapDev</a>',\r\n            // NOTE: don't include min/max zoom here, it messes with the spec\r\n            pane: 'vector',\r\n        }).addTo(this.map);\r\n\r\n    }\r\n\r\n    public initOpsLayers() {\r\n        // Logger.writeLog(\"_initOpsLayers\");\r\n        // Logger.writeLog(\"Init Listing Polygon Layer\");\r\n\r\n        console.log('_initOpsLayers');\r\n\r\n        console.log('Init Listing Points Layer');\r\n        this.listingPointsLayer = esri.featureLayer({\r\n            url: this.config.ListingsPointLayer.url,\r\n            isModern: true,\r\n        });\r\n\r\n        console.log('Init Listing Polygon Layer');\r\n        this.listingPolygonLayer = esri.featureLayer({\r\n            url: this.config.ListingsPolygonLayer.url,\r\n            fields: this.config.ListingsPolygonLayer.outFields,\r\n            where: this.config.ListingsPolygonLayer.definitionExpression,\r\n            minZoom: this.config.ListingsPolygonLayer.minZoom,\r\n            maxZoom: this.config.ListingsPolygonLayer.maxZoom,\r\n            simplifyFactor: this.config.ListingsPolygonLayer.simplifyFactor,\r\n            isModern: true,\r\n            precision: this.config.ListingsPolygonLayer.precision,\r\n            style: (feature) => {\r\n                if (feature.properties.st === '2') {\r\n                    return { color: 'darkred', weight: 2, fillOpacity: 0 };\r\n                } else if (feature.properties.st === '23' || feature.properties.st === '3') {\r\n                    return { color: 'darkgoldenrod', weight: 2, fillOpacity: 0 };\r\n                } else {\r\n                    return { color: '#002b78', weight: 2, fillOpacity: 0 };\r\n                }\r\n            },\r\n        });\r\n\r\n        this.listingPolygonLayer.on('click', this.onListingPolygonClick);\r\n\r\n        this.listingPolygonLayer.on('loading', this.onListingPolygonLoadingStarted);\r\n\r\n        this.listingPolygonLayer.on('load', this.onListingPolygonLoaded);\r\n\r\n        // Logger.writeLog(\"Init Listing Point Layer\");\r\n        console.log('Init Listing Point Layer');\r\n\r\n        this.pointOpsLayer = esriCluster.featureLayer({\r\n            url: this.config.ListingsPointLayer.url,\r\n            fields: this.config.ListingsPointLayer.outFields,\r\n            where: this.config.ListingsPointLayer.definitionExpression,\r\n            minZoom: this.config.ListingsPointLayer.minZoom,\r\n            maxZoom: this.config.ListingsPointLayer.maxZoom,\r\n            errorCb: this.onPointLayerError,\r\n            chunkedLoading: true,\r\n            spiderfyOnMaxZoom: false,\r\n            animate: false,\r\n            isModern: true,\r\n            disableClusteringAtZoom: 16,\r\n            polygonOptions: {\r\n                color: '#626366',\r\n                weight: 4,\r\n                opacity: 1,\r\n                fillOpacity: 0.5,\r\n            },\r\n            // this function defines how the icons\r\n            // representing  clusters are created\r\n            iconCreateFunction: (cluster: any) => {\r\n                // get the number of items in the cluster\r\n                const count = cluster.getChildCount();\r\n\r\n                // figure out how many digits long the number is\r\n                const digits = (count + '').length;\r\n\r\n                // return a new L.DivIcon with our classes so we can\r\n                // style them with CSS. Take a look at the CSS in\r\n                // the <head> to see these styles. You have to set\r\n                // iconSize to null if you want to use CSS to set the\r\n                // width and height.\r\n                return new L.DivIcon({\r\n                    html: count,\r\n                    className: 'cluster digits-' + digits,\r\n                    iconSize: undefined,\r\n                });\r\n            },\r\n            // TODO types please\r\n            pointToLayer: (feature: any, latlng: any) => {\r\n                const lMarkerHtml = this.getListingLabel(feature);\r\n\r\n                return L.marker(latlng,\r\n                    {\r\n                        icon: L.divIcon({\r\n                            iconSize: undefined,\r\n                            className: 'label',\r\n                            iconAnchor: [24, 10],\r\n                            html: lMarkerHtml,\r\n                        }),\r\n                    });\r\n            },\r\n        });\r\n\r\n\r\n        this.pointOpsLayer.on('loading', this.onListingPointsLoadingStarted);\r\n\r\n        this.pointOpsLayer.on('load', this.onListingPointsLoaded);\r\n\r\n        this.pointOpsLayer.on('click', this.onListingPointClick);\r\n\r\n        this.pointOpsLayer.addTo(this.map);\r\n        this.listingPolygonLayer.addTo(this.map);\r\n    }\r\n\r\n    public onListingPolygonLoadingStarted() {\r\n        this.listingPolygonErrorTracking.IsErrorOnCurrentLoad = false;\r\n    }\r\n\r\n    public onListingPolygonLoaded() {\r\n        if (this.listingPolygonLayer) {\r\n            this.updateLayerErrorTracking(this.listingPolygonErrorTracking, this.listingPolygonLayer);\r\n        }\r\n    }\r\n\r\n    public onListingPointClick(event: L.LeafletMouseEvent) {\r\n        // Logger.writeLog(\"_onListingPointClick\");\r\n        console.log('_onListingPointClick');\r\n        this.lastListingLayerSelected = event.layer;\r\n        this.handleLisitngFeatureClick(event.layer);\r\n    }\r\n\r\n    public onCrimePointClick(event: L.LeafletMouseEvent) {\r\n        // Logger.writeLog(\"_onCrimePointClick\");\r\n        console.log('_onCrimePointClick');\r\n        this.handleCrimeFeatureClick(event.layer);\r\n    }\r\n\r\n    public onPointLayerError(error: any) {\r\n        console.error('onPointLayerError');\r\n        console.error(error);\r\n        this.listingPointErrorTracking.IsErrorOnCurrentLoad = true;\r\n        this.listingPointErrorTracking.LatestError = error;\r\n    }\r\n\r\n    public onListingPointsLoadingStarted() {\r\n\r\n        // Logger.writeLog(\"_onListingPointsLoadingStarted\");\r\n        console.log('_onListingPointsLoadingStarted');\r\n\r\n        const loaderElement: Element = document.getElementsByClassName('divLayerLoading')[0];\r\n        loaderElement.setAttribute('style', 'display: block');\r\n\r\n        this.loadingTimerId = setTimeout(() => {\r\n            // there is a bug in esri.featureLayer where its not hitting the loaded event if the\r\n            // browser cancels or uses a cached result so the spinner will never go away\r\n            loaderElement.setAttribute('style', 'display: none');\r\n        }, 5000);\r\n\r\n        this.isListingPointLayerLoading = true;\r\n        this.listingPointErrorTracking.IsErrorOnCurrentLoad = false;\r\n    }\r\n\r\n    public onListingPointsLoaded() {\r\n\r\n        // Logger.writeLog(\"_onListingPointsLoaded\");\r\n        console.log('_onListingPointsLoaded');\r\n\r\n        const loaderElement: Element = document.getElementsByClassName('divLayerLoading')[0];\r\n        loaderElement.setAttribute('style', 'display: none');\r\n        if (this.loadingTimerId) {\r\n            clearTimeout(this.loadingTimerId);\r\n        }\r\n        this.loadingTimerId = null;\r\n\r\n        this.updateLayerErrorTracking(this.listingPointErrorTracking, this.pointOpsLayer);\r\n\r\n        this.isListingPointLayerLoading = false;\r\n\r\n        // Check for pending filter changes and apply if needed\r\n        if (this.hasPendingFilterUpdate) {\r\n            this.updateFilter();\r\n            this.hasPendingFilterUpdate = false;\r\n        }\r\n\r\n        // Need to check for pending selected listing changes\r\n        // that were attempted during the layer load.\r\n        if (this.pendingNewSelectedListingPid !== null) {\r\n            this.selectListingOnMapByPid(this.pendingNewSelectedListingPid);\r\n            this.pendingNewSelectedListingPid = null;\r\n        }\r\n\r\n        this.notifyNewFeaturesLoadedIntoMapBounds();\r\n    }\r\n\r\n\r\n    public updateLayerErrorTracking(errorTracker: any, featureLayer: esri.FeatureLayer) {\r\n\r\n        // Increment num of load errors if one occured during the current layer\r\n        // load\r\n        if (errorTracker.IsErrorOnCurrentLoad === true) {\r\n            errorTracker.NumLoadsInRowWithError++;\r\n            setTimeout(() => { featureLayer.refresh(); }, errorTracker.DelayToNextRefresh);\r\n        } else {\r\n            errorTracker.NumLoadsInRowWithError = 0;\r\n            errorTracker.DelayToNextRefresh = 100;\r\n        }\r\n\r\n        if (errorTracker.NumLoadsInRowWithError === 5) {\r\n            if (errorTracker.HasErrorBeenDisplayed === false) {\r\n                // TODO ErrorMgr\r\n                // ErrorMgr.showLayerDrawError(errorTracker.LatestError);\r\n                errorTracker.HasErrorBeenDisplayed = true;\r\n            }\r\n            errorTracker.DelayToNextRefresh *= 10;\r\n            errorTracker.NumLoadsInRowWithError = 0;\r\n        }\r\n    }\r\n\r\n    public onListingPolygonClick(event: L.LeafletMouseEvent) {\r\n        // Stops the click event from hitting other callbacks\r\n        event.originalEvent.preventDefault();\r\n        console.log('_onListingPolygonClick');\r\n        this.lastListingLayerSelected = event.layer;\r\n        this.handleLisitngFeatureClick(event.layer);\r\n    }\r\n\r\n    public handleLisitngFeatureClick(layer: any) {\r\n        // Logger.writeLog(\"LayerMge:_handleLisitngFeatureClick\");\r\n        console.log('LayerMge:_handleLisitngFeatureClick');\r\n\r\n        // Multi-listing, need to fire event so popup opens\r\n        // allowing selection of specific listing\r\n        if (layer.feature.properties.ml === 1) {\r\n            this.$store.dispatch('multiListingSelectedViaMap', layer);\r\n        } else {\r\n\r\n            // Otherwise, single listing so change selected listing\r\n            this.$store.dispatch('sendListingEvent', {action: Defs.ANALYTICS_LISTING_MAPCLICK, sysId: layer.feature.properties.sid});\r\n            const selectedListing = new Listing(layer.feature.properties);\r\n            this.$store.dispatch('setSelectedListing', selectedListing);\r\n\r\n            this.$store.dispatch('singleListingSelectedViaMap', layer);\r\n        }\r\n    }\r\n\r\n    public handleCrimeFeatureClick(layer: any) {\r\n        // Logger.writeLog(\"LayMge:_handleCrimeFeatureClick\");\r\n        console.log('LayMge:_handleCrimeFeatureClick');\r\n        this.$store.dispatch('changeSelectedCrime', new CrimePoint(layer.feature.properties));\r\n        this.$store.dispatch('showCrimeDialog');\r\n        this.setSelectedCrimeMarkerCoordinates(layer.getLatLng());\r\n    }\r\n\r\n    public setSelectedCrimeMarkerCoordinates(latLon: L.LatLng) {\r\n        console.log('setSelectedCrimeMarkerCoordinates');\r\n        if (this.selectedCrimeMarker) {\r\n            if (this.map.hasLayer(this.selectedCrimeMarker)) {\r\n                this.selectedCrimeMarker.setLatLng(latLon);\r\n            } else {\r\n                this.selectedCrimeMarker.setLatLng(latLon);\r\n                this.selectedCrimeMarker.addTo(this.map);\r\n            }\r\n        }\r\n    }\r\n\r\n    public getListingLabel(feature: any) {\r\n\r\n        let lPrice = Defs.LISTING_NO_VALUE;\r\n\r\n        // if (feature.properties.md !== null && feature.properties.mli !== null) {\r\n        if (feature.properties.ml === 1) {\r\n            const allMListings = JSON.parse(feature.properties.md);\r\n            const forSaleAndPendingListings = [];\r\n\r\n            for (let i = 0; i < allMListings.length; i++) {\r\n                if (allMListings[i].st === '1' || allMListings[i].st === '1_0'\r\n                    || allMListings[i].st === '3' || allMListings[i].st === '3_0') {\r\n                    forSaleAndPendingListings.push(allMListings[i]);\r\n                }\r\n            }\r\n\r\n            let lowestPrice = forSaleAndPendingListings[0].lpmn;\r\n            for (let i = 0; i < forSaleAndPendingListings.length; i++) {\r\n                if (forSaleAndPendingListings[i].lpmn < lowestPrice) {\r\n                    lowestPrice = forSaleAndPendingListings[i].lpmn;\r\n                }\r\n            }\r\n\r\n            lPrice = ListingUtil.getPriceShortened(lowestPrice, 1);\r\n        } else {\r\n            if (feature.properties.st === '2' && this.isLoggedIn === false) {\r\n                lPrice = 'SOLD';\r\n            } else if (feature.properties.st === '2') {\r\n                if (feature.properties.sp === null || feature.properties.sp === 0) {\r\n                    lPrice = ListingUtil.getPriceShortened(feature.properties.lpmn, feature.properties.ml);\r\n                } else {\r\n                    lPrice = ListingUtil.getPriceShortened(feature.properties.sp, feature.properties.ml);\r\n                }\r\n            } else {\r\n                lPrice = ListingUtil.getPriceShortened(feature.properties.lpmn, feature.properties.ml);\r\n            }\r\n        }\r\n\r\n        let lHtml = '';\r\n\r\n        if (feature.properties.ml === 1 && feature.properties.st.length > 1) {\r\n            lHtml = this.getMultiListingLabelHtml(lPrice, feature.properties.st);\r\n        } else {\r\n            lHtml = '<div class=\"' + this.getLabelClassFromStatus(feature.properties.st) + '\">' + lPrice + '</div>';\r\n        }\r\n\r\n        return lHtml;\r\n    }\r\n\r\n    public getMultiListingLabelHtml(price: string, listStatus: string) {\r\n        let classFromStaus = this.getLabelClassFromStatus(listStatus);\r\n\r\n        if (listStatus !== null && listStatus.length > 1) {\r\n\r\n            classFromStaus = classFromStaus + ' adjustPaddingForMulti';\r\n        }\r\n\r\n        let lHtml = '<div class=\"' + classFromStaus + '\" ><div>' + price + '</div><div>';\r\n\r\n        // @ts-ignore FIX\r\n        for (let i = 1; i < listStatus.length; i++) {\r\n            if (listStatus.charAt(i) === '2') {\r\n                lHtml += '<div class=\"markerMultiSOLD\"></div>';\r\n            } else if (listStatus.charAt(i) === '3') {\r\n                lHtml += '<div class=\"markerMultiPENDING\"></div>';\r\n            }\r\n        }\r\n\r\n        lHtml += '</div></div>';\r\n        return lHtml;\r\n    }\r\n\r\n\r\n    public getLabelClassFromStatus(status: string) {\r\n\r\n        if (status === '1' ||\r\n            status === '12' ||\r\n            status === '123' ||\r\n            status === '13' ||\r\n            status === '23') {\r\n            return 'lblSingleListing remaxblue';\r\n        } else if (status === '2') {\r\n            return 'lblSingleListing remaxred';\r\n        } else if (status === '23' ||\r\n                status === '3') {\r\n            return 'lblSingleListing remaxyellow';\r\n        } else {\r\n            return 'lblSingleListing remaxblue';\r\n        }\r\n    }\r\n\r\n    public initSelectedFeatureMarker() {\r\n        // Logger.writeLog(\"_initSelectedFeatureMarker\");\r\n        console.log('_initSelectedFeatureMarker');\r\n\r\n        const myIcon = L.icon({\r\n            iconUrl: 'https://data.remaxnova.com/propimages/map/pins/res.png',\r\n            iconAnchor: [20, 58], // point of the icon which will correspond to marker's location\r\n        });\r\n\r\n        this.map.createPane('selectedListing');\r\n\r\n        const selectedListedPane = this.map.getPane('selectedListing');\r\n\r\n        if (selectedListedPane) {\r\n            selectedListedPane.style.zIndex = '650';\r\n        }\r\n\r\n        this.selectedFeatureMarker = L.marker([44.662143, -63.597600], { icon: myIcon, pane: 'selectedListing' });\r\n    }\r\n\r\n    public initSelectedCrimeMarker() {\r\n        // Logger.writeLog(\"_initSelectedCrimeMarker\");\r\n        console.log('_initSelectedCrimeMarker');\r\n\r\n        const myIcon = L.icon({\r\n            iconUrl: 'https://data.remaxnova.com/propimages/map/pins/crime_sel.png',\r\n            iconAnchor: [20, 20], // point of the icon which will correspond to marker's location\r\n            iconSize: [33, 35],\r\n        });\r\n\r\n        this.map.createPane('selectedCrime');\r\n        const selectedCrimePane = this.map.getPane('selectedListing');\r\n        if (selectedCrimePane) {\r\n            selectedCrimePane.style.zIndex = '450';\r\n        }\r\n\r\n        this.selectedCrimeMarker = L.marker([44.662143, -63.597600], { icon: myIcon, pane: 'selectedCrime' });\r\n\r\n        this.selectedCrimeMarker.on('click', this.onSelectedCrimeClick);\r\n    }\r\n\r\n    public onSelectedCrimeClick(data: L.LeafletMouseEvent) {\r\n        console.log('onSelectedCrimeClick');\r\n        if (this.selectedCrimeMarker && this.lastListingLayerSelected !== null) {\r\n            this.map.removeLayer(this.selectedCrimeMarker);\r\n            this.handleLisitngFeatureClick(this.lastListingLayerSelected);\r\n        }\r\n    }\r\n\r\n    public onSelectedListingChanged(listing: Listing) {\r\n\r\n        // Logger.writeLog(\"LayerMgr:_onSelectedListingChanged\");\r\n        console.log('LayerMgr:_onSelectedListingChanged');\r\n\r\n        // If the point layer is still loading there is the\r\n        // chance that the selected point is not there yet so\r\n        // store it as pending so it can be selected once the load is\r\n        // done.\r\n        if (this.isListingPointLayerLoading === true) {\r\n            this.pendingNewSelectedListingPid = listing.pid;\r\n            return;\r\n        }\r\n\r\n        this.selectListingOnMapByPid(listing.pid);\r\n    }\r\n\r\n    public selectListingOnMapByPid(pid: string) {\r\n        // Logger.writeLog(\"LayerMgr:_selectListingOnMapByPid\");\r\n        console.log('LayerMgr:_selectListingOnMapByPid');\r\n        this.moveSelectedListingMarkerByPid(pid);\r\n        this.highlightSelectedListingParcel(pid);\r\n    }\r\n\r\n    public moveSelectedListingMarkerByPid(pid: string) {\r\n        const lBounds = this.map.getBounds();\r\n        let lIsFound = false;\r\n        this.pointOpsLayer.eachFeature((layer: any) => {\r\n            if (lBounds.contains(layer._latlng)) {\r\n                if (layer.feature.properties.pid === pid) {\r\n                    this.setSelectedFeatureMarkerCoordinates(layer._latlng);\r\n                    lIsFound = true;\r\n                }\r\n            }\r\n        });\r\n\r\n        // May not find the pid by the point if a filter was set and\r\n        // the click was done on the polygon\r\n        if (this.listingPolygonLayer && lIsFound === false) {\r\n            this.listingPolygonLayer.eachFeature((layer) => {\r\n                const lCenter = layer.getBounds().getCenter();\r\n                if (lBounds.contains(lCenter)) {\r\n                    if (layer.feature.properties.pid === pid) {\r\n                        this.setSelectedFeatureMarkerCoordinates(lCenter);\r\n                        lIsFound = true;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    public setSelectedFeatureMarkerCoordinates(latLon: L.LatLng) {\r\n        if (this.selectedFeatureMarker) {\r\n            if (this.map.hasLayer(this.selectedFeatureMarker)) {\r\n                this.selectedFeatureMarker.setLatLng(latLon);\r\n            } else {\r\n                this.selectedFeatureMarker.setLatLng(latLon);\r\n                this.selectedFeatureMarker.addTo(this.map);\r\n            }\r\n\r\n            if (this.selectedCrimeMarker) {\r\n                this.map.removeLayer(this.selectedCrimeMarker);\r\n            }\r\n        }\r\n    }\r\n\r\n    public highlightSelectedListingParcel(pid: string) {\r\n\r\n        // Logger.writeLog(\"_highlightSelectedListingParcel\");\r\n        console.log('_highlightSelectedListingParcel');\r\n\r\n        // Clear any selected parcel\r\n        if (this.selectedParcelLayer) {\r\n            this.selectedParcelLayer.removeFrom(this.map);\r\n        }\r\n\r\n        if (this.listingPolygonLayer) {\r\n            this.listingPolygonLayer.eachFeature((layer) => {\r\n                if (this.listingPolygonLayer && layer.feature.properties.pid === pid) {\r\n\r\n                    if (this.currentlyHighlightedPolygonId) {\r\n                        // @ts-ignore - this is valid\r\n                        this.listingPolygonLayer.resetStyle(this.currentlyHighlightedPolygonId);\r\n                    }\r\n\r\n                    this.listingPolygonLayer.setFeatureStyle(layer.feature.properties.OBJECTID, this.config.highlightedListingColor);\r\n                    this.currentlyHighlightedPolygonId = layer.feature.properties.OBJECTID;\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    public addClauseToWhere(where: string | null, newClause: string) {\r\n        if (where === null || where === '') {\r\n            where = newClause;\r\n        } else {\r\n            where = where + ' and ' + newClause;\r\n        }\r\n        return where;\r\n    }\r\n\r\n    public addClauseToWhereWithOr(where: string | null, newClause: string) {\r\n        if (where === null || where === '') {\r\n            where = newClause;\r\n        } else {\r\n            where = where + ' or ' + newClause;\r\n        }\r\n        return where;\r\n    }\r\n\r\n    public onFilterChanged() {\r\n        this.updateFilter();\r\n    }\r\n\r\n    // TODO this should eventually get moved to filterStore actions\r\n    public updateFilter() {\r\n        console.log('LayerManager: updateFilter()');\r\n        console.log(this.activeFilter);\r\n\r\n        // Want to precent setting a where clause on the feature layer\r\n        // while it is updating because current requests coming in with botch the filter.\r\n        // if (this.isListingPointLayerLoading === true) {\r\n        //     console.log('isListingPointLayerLoading===true');\r\n        //     this.hasPendingFilterUpdate = true;\r\n        //     return;\r\n        // }\r\n        // this.hasPendingFilterUpdate = false;\r\n\r\n        let lWhere: string | null = null;\r\n\r\n        let lNumFilters: number = 0;\r\n\r\n        // Price\r\n        let iFilterSet = false;\r\n        if (this.activeFilter.Price.Min !== this.config.FilterOptions.PriceNoMinVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'lpmx >= ' + this.activeFilter.Price.Min);\r\n            iFilterSet = true;\r\n        }\r\n        if (this.activeFilter.Price.Max !== this.config.FilterOptions.PriceNoMaxVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'lpmn <= ' + this.activeFilter.Price.Max);\r\n            iFilterSet = true;\r\n        }\r\n        if (iFilterSet) {\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Beds\r\n        iFilterSet = false;\r\n        if (this.activeFilter.Beds.Min !== this.config.FilterOptions.BedNoMinVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'bdmx >= ' + this.activeFilter.Beds.Min);\r\n            iFilterSet = true;\r\n        }\r\n        if (this.activeFilter.Beds.Max !== this.config.FilterOptions.BedNoMaxVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'bdmn <= ' + this.activeFilter.Beds.Max);\r\n            iFilterSet = true;\r\n        }\r\n        if (iFilterSet) {\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Baths\r\n        iFilterSet = false;\r\n        if (this.activeFilter.Baths.Min !== this.config.FilterOptions.BathNoMinVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'bhmx >= ' + this.activeFilter.Baths.Min);\r\n            iFilterSet = true;\r\n        }\r\n        if (this.activeFilter.Baths.Max !== this.config.FilterOptions.BathNoMaxVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'bhmn <= ' + this.activeFilter.Baths.Max);\r\n            iFilterSet = true;\r\n        }\r\n        if (iFilterSet) {\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Mla\r\n        iFilterSet = false;\r\n        if (this.activeFilter.Mla.Min !== this.config.FilterOptions.MlaNoMinVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'mlax >= ' + this.activeFilter.Mla.Min);\r\n            iFilterSet = true;\r\n        }\r\n        if (this.activeFilter.Mla.Max !== this.config.FilterOptions.MlaNoMaxVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'mlan <= ' + this.activeFilter.Mla.Max);\r\n            iFilterSet = true;\r\n        }\r\n        if (iFilterSet) {\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Tla\r\n        iFilterSet = false;\r\n        if (this.activeFilter.Tla.Min !== this.config.FilterOptions.TlaNoMinVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'tlax >= ' + this.activeFilter.Tla.Min);\r\n            iFilterSet = true;\r\n        }\r\n        if (this.activeFilter.Tla.Max !== this.config.FilterOptions.TlaNoMaxVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'tlan <= ' + this.activeFilter.Tla.Max);\r\n            iFilterSet = true;\r\n        }\r\n        if (iFilterSet) {\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Lot Size\r\n        iFilterSet = false;\r\n        if (this.activeFilter.LotSize.Min !== this.config.FilterOptions.LotSizeNoMinVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'pls >= ' + this.activeFilter.LotSize.Min);\r\n            iFilterSet = true;\r\n        }\r\n        if (this.activeFilter.LotSize.Max !== this.config.FilterOptions.LotSizeNoMaxVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'pls <= ' + this.activeFilter.LotSize.Max);\r\n            iFilterSet = true;\r\n        }\r\n        if (iFilterSet) {\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Age\r\n        iFilterSet = false;\r\n        if (this.activeFilter.Age.Min !== this.config.FilterOptions.AgeNoMinVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'yb >= ' + this.activeFilter.Age.Min);\r\n            iFilterSet = true;\r\n        }\r\n        if (this.activeFilter.Age.Max !== this.config.FilterOptions.AgeNoMaxVal) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'yb <= ' + this.activeFilter.Age.Max);\r\n            iFilterSet = true;\r\n        }\r\n        if (iFilterSet) {\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Waterfront\r\n        if (this.activeFilter.Waterfront.value !== null) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'wf = 1');\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Garage\r\n        if (this.activeFilter.Garage.value !== null) {\r\n            lWhere = this.addClauseToWhere(lWhere, 'ga = 1');\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Class\r\n        if (this.activeFilter.Class !== null && this.activeFilter.Class.value !== null && this.activeFilter.Class.value.length !== 0 &&\r\n            this.activeFilter.Class.value.length !== this.config.FilterOptions.ClassOptions.length) {\r\n            let lClassWhere = '';\r\n            for (let i = 0; i < this.activeFilter.Class.value.length; i++) {\r\n                lClassWhere = this.addClauseToWhereWithOr(lClassWhere, 'cl = ' + this.activeFilter.Class.value[i]);\r\n            }\r\n\r\n            lWhere = this.addClauseToWhere(lWhere, '(' + lClassWhere + ')');\r\n            lNumFilters++;\r\n        }\r\n\r\n        // HeatType\r\n        if (this.activeFilter.HeatType !== null && this.activeFilter.HeatType.value !== null  && this.activeFilter.HeatType.value.length !== 0\r\n        && this.activeFilter.HeatType.value.length !== this.config.FilterOptions.HeatTypeOptions.length) {\r\n            let lHeatTypeWhere = '';\r\n            for (let b = 0; b < this.activeFilter.HeatType.value.length; b++) {\r\n                lHeatTypeWhere = this.addClauseToWhereWithOr(lHeatTypeWhere, `ht like '%` + this.activeFilter.HeatType.value[b]) + `%'`;\r\n            }\r\n\r\n            lWhere = this.addClauseToWhere(lWhere, '(' + lHeatTypeWhere + ')');\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Style\r\n        if (this.activeFilter.Style !== null && this.activeFilter.Style.value !== null && this.activeFilter.Style.value.length !== 0 &&\r\n            this.activeFilter.Style.value.length !== this.config.FilterOptions.StyleOptions.length) {\r\n            let lStyleWhere = '';\r\n            for (let j = 0; j < this.activeFilter.Style.value.length; j++) {\r\n                lStyleWhere = this.addClauseToWhereWithOr(lStyleWhere, `sty = '` + this.activeFilter.Style.value[j]) + `'`;\r\n            }\r\n            lWhere = this.addClauseToWhere(lWhere, '(' + lStyleWhere + ')');\r\n            lNumFilters++;\r\n        }\r\n\r\n        // Status\r\n        if (this.activeFilter.Status !== null && this.activeFilter.Status.value !== null && this.activeFilter.Status.value.length !== 0 &&\r\n            this.activeFilter.Status.value.length !== this.config.FilterOptions.StatusOptions.length) {\r\n            let lStatusWhere = '';\r\n            for (let k = 0; k < this.activeFilter.Status.value.length; k++) {\r\n                lStatusWhere = this.addClauseToWhereWithOr(lStatusWhere, `st like '%` + this.activeFilter.Status.value[k]) + `%'`;\r\n            }\r\n            lWhere = this.addClauseToWhere(lWhere, '(' + lStatusWhere + ')');\r\n            if (this.activeFilter.Status.value.length === 2 && this.activeFilter.Status.value[0] !== '2' && this.activeFilter.Status.value[1] !== '2') {\r\n                // do nothing, the default is For sale and pending\r\n            } else {\r\n                lNumFilters++;\r\n            }\r\n        }\r\n\r\n        // Type\r\n        if (this.activeFilter.Type !== null && this.activeFilter.Type.value !== null && this.activeFilter.Type.value.length !== 0 &&\r\n        this.activeFilter.Type.value.length !== (this.config.FilterOptions.ResidentialTypeOptions.length + this.config.FilterOptions.CommercialTypeOptions.length)) {\r\n            let lTypeWhere = '';\r\n            for (let d = 0; d < this.activeFilter.Type.value.length; d++) {\r\n                lTypeWhere = this.addClauseToWhereWithOr(lTypeWhere, 'ty = ' + this.activeFilter.Type.value[d]);\r\n            }\r\n\r\n            lWhere = this.addClauseToWhere(lWhere, '(' + lTypeWhere + ')');\r\n            lNumFilters++;\r\n        }\r\n\r\n        // SpatialFilter\r\n        if (this.spatialFilter) {\r\n            console.log('Adding spatial query');\r\n            lNumFilters++;\r\n\r\n            // Do query here and set spatial filter as list of IDs.\r\n            const query = esri.query({\r\n                url: this.config.ListingsPointLayer.url_in,\r\n            });\r\n\r\n            if (lWhere === null) {\r\n                lWhere = '1=1';\r\n            }\r\n\r\n            // this.map.removeLayer(this.pointOpsLayer);\r\n            // @ts-ignore\r\n            query.intersects(L.geoJSON(JSON.parse(this.spatialFilter))).where(lWhere).ids((error: any, ids: any, response: any) => {\r\n                if (!error) {\r\n                    console.log(response);\r\n                    console.log(ids);\r\n                    const filteredIds: any = {};\r\n                    for (let z = 0; z < ids.length; z++) {\r\n                        filteredIds[ids[z]] = 1;\r\n                    }\r\n                    console.log('OBJECTID in ('  + response.objectIds.join(`,`) + ')');\r\n                    // TODO setSpatialFilter() does not exist on featureLayer. Was this a kpower custom?\r\n                    // workaround is to create a where clause based on the objectids\r\n                    // this.pointOpsLayer.setSpatialFilter(filteredIds);\r\n                    this.pointOpsLayer.setWhere('OBJECTID in ('  + response.objectIds.join(`,`) + ')');\r\n\r\n                    // this.map.addLayer(this.pointOpsLayer);\r\n                } else {\r\n                    // ErrorMgr.logError(\"failed to get School:\" + error);\r\n                    console.error('failed to get School:' + error);\r\n                    this.map.addLayer(this.pointOpsLayer);\r\n                }\r\n            });\r\n\r\n            // TODO setSpatialFilter() does not exist on featureLayer. Was this a kpower custom?\r\n            // this.pointOpsLayer.setSpatialFilter(this.filters.schoolCatchment);\r\n\r\n            // this.filterSpatial = this.spatialFilter;\r\n            // this.filterSpatial = L.geoJson(filter.SchoolCatchment);\r\n\r\n        } else {\r\n            // TODO clearSpatialFilter() does not exist on featureLayer. Was this a kpower custom?\r\n            // this.pointOpsLayer.clearSpatialFilter();\r\n            console.log(lWhere);\r\n            this.pointOpsLayer.setWhere(lWhere);\r\n        }\r\n\r\n        this.$store.dispatch('setFilterNumber', lNumFilters);\r\n        this.$store.dispatch('sendFilterEvent', { filter: lWhere });\r\n    }\r\n\r\n    public getPointFeaturesWithinCurrentBounds() {\r\n        // Logger.writeLog(\"_getFeaturesWithinCurrentBounds\");\r\n        console.log('_getFeaturesWithinCurrentBounds');\r\n\r\n        const lBounds = this.map.getBounds();\r\n        const listings: Listing[] = [];\r\n        const lSnapshot = this.pointOpsLayer._currentSnapshot; // getCurrentSnapshot(); <= this was a kpower change in esri-leaflet.js. Was there more??\r\n        this.pointOpsLayer.eachFeature((layer: any) => {\r\n            if (lBounds.contains(layer._latlng) && -1 !== lSnapshot.indexOf(layer.feature.id)) {\r\n                listings.push(new Listing(layer.feature.properties));\r\n            }\r\n        });\r\n\r\n        console.log(listings);\r\n        return listings;\r\n    }\r\n\r\n\r\n    public notifyNewFeaturesLoadedIntoMapBounds() {\r\n        // Logger.writeLog(\"_notifyNewFeaturesLoadedIntoMapBounds\");\r\n        console.log('_notifyNewFeaturesLoadedIntoMapBounds');\r\n        const listings = this.getPointFeaturesWithinCurrentBounds();\r\n        if (this.map.getZoom() >= 14) {\r\n            listings.forEach( (listing) => {\r\n                if (listing.sid !== null) {\r\n                    PreloadImage(this.$store.state.config.imageRoot + listing.pi);\r\n                    // not sure if we want to bother preloading the _map image too\r\n                    // PreloadImage(this.$store.state.config.imageRoot + ListingUtil.addMapPostfixToImage(listing.pi));\r\n                }\r\n            });\r\n        }\r\n        this.$store.dispatch('setListingsInMapBounds', listings);\r\n    }\r\n\r\n    public onGoToListing(systemId: number) {\r\n        console.log('onGoToListing');\r\n        const where = `sid=` + systemId + ` or mli like '%` + systemId + `%'`;\r\n        this.listingPointsLayer?.query()\r\n        .where(where)\r\n        .run((error, featureCollection) => {\r\n            const feature = ListingUtil.getListingFromResult(featureCollection, systemId);\r\n            if (feature === null) {\r\n                // ErrorMgr.showError(\"Unable to find listing: \" + systemId, data.error);\r\n                console.error('null listing');\r\n                this.$store.dispatch('notify', 'Unable to find listing: ' + systemId);\r\n                return;\r\n            }\r\n            const latLng = L.latLng(feature.geometry.coordinates[1], feature.geometry.coordinates[0]);\r\n            this.map.setView(latLng, 16);\r\n\r\n            const listing = new Listing(feature.properties);\r\n            this.$store.dispatch('setSelectedListing', listing);\r\n            this.$store.dispatch('popupSingleListing', {listing, latLng});\r\n            // RemapState.changeSelectedListing(listing.properties);\r\n\r\n            // This is redundant if the listing is already in the map bounds.\r\n            // The call to RemapState.changeSelectedListing will attempt to move the\r\n            // marker so this is called in the event it fails.\r\n            // RemapState.setMarkerCoordinates(latlng);\r\n            this.setSelectedFeatureMarkerCoordinates(latLng);\r\n        });\r\n    }\r\n\r\n    public mounted() {\r\n        console.log('LayerManager: mounted()');\r\n    }\r\n\r\n    public beforeDestroy() {\r\n        console.log('LayerManager: destroying()');\r\n        this.unsubscribe();\r\n    }\r\n\r\n    private handleAddForeignBuyerLand() {\r\n        const currentZoom = this.map.getZoom();\r\n        if (currentZoom >= this.config.ForeignBuyerBanLayer.minZoom &&\r\n            currentZoom <= this.config.ForeignBuyerBanLayer.maxZoom &&\r\n            !this.foreignBuyerLayer.visibility) {\r\n            this.map.addLayer(this.foreignBuyerLayer);\r\n            this.foreignBuyerLayer.visibility = true;\r\n        } else if (!(currentZoom >= this.config.ForeignBuyerBanLayer.minZoom &&\r\n                    currentZoom <= this.config.ForeignBuyerBanLayer.maxZoom) &&\r\n                    this.foreignBuyerLayer.visibility) {\r\n            this.map.removeLayer(this.foreignBuyerLayer);\r\n            this.foreignBuyerLayer.visibility = false;\r\n        }\r\n    }\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayerManager.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayerManager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LayerManager.vue?vue&type=template&id=7f931dfd&scoped=true&\"\nimport script from \"./LayerManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./LayerManager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LayerManager.vue?vue&type=style&index=0&id=7f931dfd&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  \"7f931dfd\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtn,QMenu,QCard,QCardSection,QToolbar,QToolbarTitle,QIcon,QSeparator,QItem,QItemSection,QImg,QItemLabel,QToggle,QTooltip,Ripple} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtn,QMenu,QCard,QCardSection,QToolbar,QToolbarTitle,QIcon,QSeparator,QItem,QItemSection,QImg,QItemLabel,QToggle,QTooltip})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {Ripple})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"over-map-right shadow-box shadow-5 rounded-borders disable-zoom\"},[_c('q-btn',{staticClass:\"hover-color\",attrs:{\"color\":\"white\",\"size\":\"md\",\"round\":\"\"},on:{\"click\":_vm.onShowDialog}},[_c('q-icon',{staticStyle:{\"font-size\":\"1.5em\"},attrs:{\"name\":\"fas fa-heart\",\"color\":\"red-alternate\"}}),(_vm.isLoggedIn && _vm.favouriteCount > 0)?_c('q-badge',{staticClass:\"q-mt-lg q-px-xs\",attrs:{\"color\":\"blue-brand\",\"floating\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.favouriteCount)+\" \")]):_vm._e()],1),_c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"favourite-dialog-size\"},[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3\"},[_c('div',{staticClass:\"text-h6\"},[(!_vm.isMobile)?_c('q-icon',{staticStyle:{\"color\":\"#DC1C2E\"},attrs:{\"name\":\"fas fa-heart\"}}):_vm._e(),_vm._v(\" \"),(!_vm.isMobile)?_c('span',[_vm._v(\"Favourite Listings\")]):_c('span',[_vm._v(\"Favourites\")])],1),_c('q-space'),_c('q-toggle',{attrs:{\"color\":\"blue-brand\",\"label\":\"Notifications\",\"icon\":\"fas fa-bell\",\"unchecked-icon\":\"fas fa-times\"},on:{\"input\":_vm.onSendNotifications},model:{value:(_vm.sendNotifications),callback:function ($$v) {_vm.sendNotifications=$$v},expression:\"sendNotifications\"}}),_c('q-btn',{staticClass:\"layer-menu-blue\",attrs:{\"round\":\"\",\"flat\":\"\",\"icon\":\"fas fa-question-circle\"}},[_c('q-tooltip',[_vm._v(\" We'll email you when a status or price changes or there's an open house \")])],1),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1)],1),(_vm.favourites.length > 0)?_c('q-card-section',{staticClass:\"scroll card-section\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.favourites),function(fav){return _c('div',{key:fav.SystemId},[_c('div',{staticClass:\"col-xs-12 col-sm-4 col-md-4 q-ma-sm q-pa-sm favourite-holder\"},[_c('img',{attrs:{\"src\":fav.PreviewImage,\"height\":\"175\",\"width\":\"250\"}}),_c('div',{staticClass:\"text-subtitle1\",staticStyle:{\"height\":\"40px\"}},[_vm._v(_vm._s(fav.Address))]),_c('hr'),_c('div',[_c('div',{staticClass:\"text-bold q-pa-sm \"},[_c('span',{staticClass:\"status-overlay rounded-borders\",class:_vm.listingStatusClass(fav.StatusCode)},[_vm._v(_vm._s(fav.Status))]),_vm._v(\" \"+_vm._s(fav.Price)+\" \")]),_c('div',{staticClass:\"q-pa-sm\"},[_vm._v(\" \"+_vm._s(fav.Beds)+\" \"),_c('q-icon',{attrs:{\"name\":\"fas fa-bed\"}}),_vm._v(\" \"+_vm._s(fav. Baths)+\" \"),_c('q-icon',{attrs:{\"name\":\"fas fa-bath\"}})],1),_c('div',{staticClass:\"q-pa-sm\"},[_vm._v(\" On market \"+_vm._s(fav.DOM)+\" for days \")]),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticClass:\"btn-blue-brand q-ma-sm\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"flat\":\"\",\"icon\":\"fas fa-map-marker-alt\",\"label\":\"Go To\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onGoToFavourite(fav.SystemId)}}}),_c('q-btn',{staticClass:\"btn-blue-brand float-right q-ma-sm\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"flat\":\"\",\"icon\":\"fas fa-trash fa-sm\",\"label\":\"Remove\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onDeleteFavourite(fav.SystemId)}}})],1)])])}),0)]):_c('q-card-section',[_c('div',[_c('q-card-section',{staticClass:\"row items-center q-ma-sm\"},[_vm._v(\" You have not selected any favourites. \")])],1)])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport { Favourite } from '@/models/Favourite';\r\n\r\n@Component\r\nexport default class FavouriteManager extends Vue {\r\n\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 415;\r\n    public showDialog: boolean = false;\r\n    public sendNotifications: boolean = false;\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'initFavourites') {\r\n            this.initFavourites();\r\n        }\r\n    });\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get isLoggedIn(): boolean {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get favourites(): Favourite[] {\r\n        return this.$store.state.favourites.favourites;\r\n    }\r\n\r\n    get favouriteCount(): number {\r\n        return this.$store.state.favourites.favouriteCount;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    public listingStatusClass(status: any) {\r\n        if (status === '1' || status === '1_0') {\r\n            return 'listTblPrice_FORSALE';\r\n        } else if (status === '2' || status === '2_0') {\r\n            return 'listTblPrice_SOLD';\r\n        } else if (status === '3' || status === '3_0') {\r\n            return 'listTblPrice_PEND';\r\n        }\r\n        return 'listTblPrice_NOSTATUS';\r\n    }\r\n\r\n    public initFavourites() {\r\n        console.log('FavouriteManager: initFavourites()');\r\n        if (this.isLoggedIn) {\r\n            this.$store.dispatch('getFavouriteSettings');\r\n        }\r\n    }\r\n\r\n    public onShowDialog() {\r\n        if (this.isLoggedIn) {\r\n            if (this.favouriteCount !== this.favourites.length) {\r\n                this.$store.dispatch('getFavoriteData');\r\n            }\r\n            this.sendNotifications = this.$store.state.favourites.favouriteNotifications;\r\n            this.showDialog = true;\r\n        } else {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to view favourites.');\r\n        }\r\n    }\r\n\r\n    public onGoToFavourite(systemId: number) {\r\n        console.log('FavouriteManager: onGoToFavourite()');\r\n        this.$store.dispatch('goToListing', systemId);\r\n    }\r\n\r\n    public onDeleteFavourite(systemId: number) {\r\n        console.log('FavouriteManager: onDeleteFavourite()');\r\n        this.$store.dispatch('favouriteRemove', systemId);\r\n    }\r\n\r\n    public onSendNotifications() {\r\n        this.$store.dispatch('setFavouriteNotifications', this.sendNotifications);\r\n    }\r\n\r\n    public initFavControl() {\r\n        // TODO this will go, moving away from leaflet...\r\n        if (!this.isLoggedIn) {\r\n            return;\r\n        }\r\n\r\n        const FavControl = L.Control.extend({\r\n            options: {\r\n                position: 'topright',\r\n            },\r\n            onAdd: () => {\r\n                const container = L.DomUtil.create('div', 'divFavControl');\r\n                container.innerHTML = `<span id='spanFavControl' class='spanFavControl' title='Favourites'>` +\r\n                    `<i class='fas fa-heart fa-lg'></i>` +\r\n                    `<div id='divFavCount' class='lblFavCount'></div>` +\r\n                    `</span>`;\r\n                return container;\r\n            },\r\n        });\r\n\r\n        this.map.addControl(new FavControl());\r\n\r\n        const favBtn = document.getElementById('spanFavControl');\r\n        if (favBtn) {\r\n            favBtn.addEventListener('click', (event) => {\r\n                event.preventDefault();\r\n                this.$store.dispatch('getFavoriteData');\r\n                this.showDialog = true;\r\n            });\r\n        }\r\n    }\r\n\r\n}\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavouriteManager.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavouriteManager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FavouriteManager.vue?vue&type=template&id=1c85a7c6&scoped=true&\"\nimport script from \"./FavouriteManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./FavouriteManager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FavouriteManager.vue?vue&type=style&index=0&id=1c85a7c6&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  \"1c85a7c6\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtn,QIcon,QBadge,QDialog,QCard,QCardSection,QToolbar,QSpace,QToggle,QTooltip,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtn,QIcon,QBadge,QDialog,QCard,QCardSection,QToolbar,QSpace,QToggle,QTooltip})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('q-dialog',{model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"share-dialog-size\"},[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3\"},[_c('div',{staticClass:\"text-h6\"},[_c('q-icon',{staticClass:\"q-pr-sm\",attrs:{\"name\":\"fas fa-share-alt\"}}),_c('span',[_vm._v(\"Share\")])],1),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1)],1),_c('q-card-section',{staticClass:\"scroll card-section\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.networks),function(network){return _c('ShareNetwork',{key:network.network,staticClass:\"col-xs-12 col-sm-12 col-md-3 ShareNetwork\",style:({backgroundColor: network.color, width: _vm.isMobile ? '70vw' : '115px'}),attrs:{\"network\":network.network,\"url\":_vm.sharingProperties.url,\"title\":_vm.sharingProperties.title,\"description\":_vm.sharingProperties.description}},[_c('i',{class:network.icon,attrs:{\"id\":\"shareNetworkIcon\"}}),_c('span',{attrs:{\"id\":\"shareNetworkTitle\"}},[_vm._v(_vm._s(network.name))])])}),1),_c('hr'),_c('div',[_c('q-input',{ref:\"listingUrlText\",staticClass:\"no-border no-outline \",staticStyle:{\"background\":\"rgba(100,100,100,0.1)\"},attrs:{\"dense\":\"\",\"readonly\":\"\",\"outlined\":\"\",\"label\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{attrs:{\"id\":\"urlLabel\"}},[_vm._v(_vm._s(_vm.listingUrl))])]},proxy:true}])},[_c('q-btn',{staticClass:\"q-ma-none q-pa-none float-right\",staticStyle:{\"color\":\"#eeeeee\",\"margin-right\":\"-10px\"},attrs:{\"flat\":\"\",\"no-caps\":\"\"},on:{\"click\":_vm.onCopy}},[_c('span',{staticClass:\"text-blue-brand text-weight-bold\"},[_vm._v(\"Copy\")])])],1)],1),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showLinkCopiedText)?_c('div',{staticClass:\"q-pt-xs text-subtitle2\"},[_vm._v(\"Link copied to clipboard.\")]):_c('div',[_c('br')])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ListingDetail } from '@/models/ListingDetail';\r\nimport { ParcelDetail } from '@/models/ParcelDetail';\r\nimport ShareNetwork from 'vue-social-sharing/types';\r\nimport VueClipboard from 'vue-clipboard2';\r\nimport VueSocialSharing from 'vue-social-sharing';\r\nimport ListingUtil from '../utils/ListingUtil';\r\n\r\nVue.use(VueClipboard);\r\n// @ts-ignore\r\nVue.use(VueSocialSharing);\r\n\r\n\r\n@Component\r\nexport default class ShareDialog extends Vue {\r\n\r\n    public showDialog: boolean = false;\r\n    public showLinkCopiedText: boolean = false;\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 400;\r\n    public mode: string = 'LISTING';\r\n\r\n    get selectedListingDetail(): ListingDetail {\r\n        return this.$store.state.listings.selectedListingDetail;\r\n    }\r\n\r\n    get selectedParcelDetail(): ParcelDetail {\r\n        return this.$store.state.parcels.selectedParcelDetail;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    get sharingProperties() {\r\n        const url = this.listingUrl;\r\n        let description = '';\r\n        let title = '';\r\n        if (this.mode === 'LISTING') {\r\n            title = 'ReMax Listing';\r\n            description = 'Check out this listing!';\r\n            if (this.selectedListingDetail) {\r\n                title = 'ReMax Listing - ' + this.selectedListingDetail.Address;\r\n            }\r\n\r\n        } else {\r\n            title = 'ReMax Parcel - ' + this.selectedParcelDetail;\r\n            description = 'Check out this property!';\r\n        }\r\n        const properties = {\r\n            url,\r\n            title,\r\n            description,\r\n        };\r\n\r\n        return properties;\r\n    }\r\n\r\n    get listingUrl(): string {\r\n        if (this.mode === 'LISTING') {\r\n            if (this.selectedListingDetail && this.selectedListingDetail.MlsNo) {\r\n                return ListingUtil.getListingUrl(this.config.baseFullListingUrl, this.selectedListingDetail);\r\n            } else {\r\n                return 'Listing URL not found.';\r\n            }\r\n        } else if (this.mode === 'PARCEL') {\r\n            if (this.selectedParcelDetail && this.selectedParcelDetail.ParcelData) {\r\n                return window.location.origin + '/map/?pid=' + this.selectedParcelDetail.ParcelData.PID;\r\n            } else {\r\n                return 'Parcel URL not found.';\r\n            }\r\n        }\r\n\r\n        return 'URL not found.';\r\n    }\r\n\r\n    get networks() {\r\n        const networks = [\r\n            { network: 'email', name: 'Email', icon: 'far fah fa-lg fa-envelope', color: '#333333' },\r\n            { network: 'facebook', name: 'Facebook', icon: 'fab fah fa-lg fa-facebook-f', color: '#1877f2' },\r\n            { network: 'linkedin', name: 'LinkedIn', icon: 'fab fah fa-lg fa-linkedin', color: '#007bb5' },\r\n            { network: 'twitter', name: 'Twitter', icon: 'fab fah fa-lg fa-twitter', color: '#1da1f2' },\r\n            { network: 'whatsapp', name: 'Whatsapp', icon: 'fab fah fa-lg fa-whatsapp', color: '#25d366' },\r\n        ];\r\n\r\n        if (this.isMobile) {\r\n            networks.push({ network: 'sms', name: 'SMS', icon: 'far fah fa-lg fa-comment-dots', color: '#333333' });\r\n        }\r\n\r\n        return networks;\r\n    }\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'showShareDialog') {\r\n            this.onShowDialog(action.payload);\r\n        }\r\n    });\r\n\r\n    public onCopy() {\r\n        this.$copyText(this.listingUrl);\r\n        this.showLinkCopiedText = true;\r\n        setTimeout(() => {\r\n            this.showLinkCopiedText = false;\r\n        }, 5000);\r\n    }\r\n\r\n    public onShowDialog(mode: string) {\r\n        this.mode = mode;\r\n        this.showDialog = true;\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShareDialog.vue?vue&type=template&id=9d37243c&scoped=true&\"\nimport script from \"./ShareDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShareDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ShareDialog.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./ShareDialog.vue?vue&type=style&index=1&id=9d37243c&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  \"9d37243c\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QInput,QField,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,QInput,QField})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"filter-dialog-size\",attrs:{\"id\":\"filterManagerDialog\"}},[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3\"},[_c('div',{staticClass:\"text-h6\"},[_c('q-icon',{staticStyle:{\"color\":\"#DC1C2E\"},attrs:{\"name\":\"fas fa-heart\"}}),_vm._v(\" Saved Searches\")],1),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1)],1),(_vm.savedFilters.length > 0)?_c('q-card-section',{staticClass:\"scroll card-section\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.savedFilters),function(filter){return _c('div',{key:filter.MFID},[_c('div',{staticClass:\"col-xs-12 col-sm-6 col-md-4 q-ma-sm q-pa-sm search-holder\"},[_c('div',[_c('div',{staticClass:\"text-h6\"},[_vm._v(_vm._s(filter.Name))]),_vm._v(\" \"+_vm._s(filter.Notifications ? 'Notifications ON' : 'Notifications OFF')+\" \")]),_c('hr'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticClass:\"btn-blue-brand q-px-xs q-mr-sm\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onRestoreFilter(filter.MFID)}}},[_c('i',{staticClass:\"fas fa-filter q-mr-sm\",staticStyle:{\"font-size\":\"1.3em\"}}),_vm._v(\"Restore\")]),(filter.Polygon || filter.MultiPolygon || filter.GeoJson)?_c('q-btn',{staticClass:\"btn-blue-brand q-px-xs\",staticStyle:{\"font-size\":\"12px\"},attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onFilterAreaClick(filter)}}},[_c('i',{staticClass:\"fas fa-map q-mr-sm\",staticStyle:{\"font-size\":\"1.3em\"}}),_vm._v(\"Preview\")]):_vm._e(),_c('q-btn',{staticClass:\"btn-blue-brand q-px-xs float-right\",attrs:{\"flat\":\"\",\"dense\":\"\",\"no-caps\":\"\"},on:{\"click\":function($event){return _vm.onDeleteFilter(filter.MFID)}}},[_c('i',{staticClass:\"fas fa-trash\",staticStyle:{\"font-size\":\"1.3em\"}})])],1)])}),0)]):_c('q-card-section',[_vm._v(\"You have not saved any searches.\")])],1)],1),_c('q-dialog',{attrs:{\"maximized\":_vm.isMobile},model:{value:(_vm.showMap),callback:function ($$v) {_vm.showMap=$$v},expression:\"showMap\"}},[_c('q-card',{staticClass:\"preview-dialog \",style:(!_vm.isMobile ? '' : _vm.previewMobileDialogStyle)},[_c('q-card-section',{staticClass:\"q-pa-none\"},[_c('q-toolbar',{staticClass:\"bg-grey-3\"},[_c('div',{staticClass:\"text-h6\"},[_vm._v(\"Preview\")]),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1)],1),_c('q-card-section',{staticClass:\"scroll\"},[_c('div',[_c('EmbeddedLeafletMap',{attrs:{\"refs\":\"embeddedMap\",\"height\":_vm.mapHeight,\"width\":_vm.mapWidth,\"geoJson\":JSON.stringify(_vm.selectedGeoJson),\"popupName\":_vm.selectedName,\"mode\":\"Filter\"}})],1)])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport * as esri from 'esri-leaflet';\r\nimport { SavedFilter } from '@/models/SavedFilter';\r\nimport EmbeddedLeafletMap from '@/components/EmbeddedLeafletMap.vue';\r\n\r\n@Component({\r\n    components: {\r\n        EmbeddedLeafletMap,\r\n    },\r\n})\r\nexport default class FilterManager extends Vue {\r\n\r\n    public widthThresholdValue: number = 768;\r\n    public heightThresholdValue: number = 415;\r\n    public showDialog: boolean = false;\r\n    public showMap: boolean = false;\r\n    public selectedGeoJson: any = null; // Leaflet types are messed up, will be Feature<Polygon | MultiPolygon, any> | null\r\n    public selectedName: string = '';\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'initFilters') {\r\n            this.initFilters();\r\n        }\r\n        if (action.type === 'showFilterManager') {\r\n            this.onShowDialog();\r\n        }\r\n        if (action.type === 'hideFilterManager') {\r\n            this.onCloseDialog();\r\n        }\r\n    });\r\n\r\n    get map(): L.Map {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get isLoggedIn(): boolean {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get savedFilters(): SavedFilter[] {\r\n        if (this.$store.state.filters.savedFilters.length === 0) {\r\n            this.showDialog = false;\r\n        }\r\n        return this.$store.state.filters.savedFilters;\r\n    }\r\n\r\n    get isLoading(): boolean {\r\n        return this.$store.state.filters.isFilterLoading;\r\n    }\r\n\r\n    get isMobile(): boolean {\r\n        return (this.$q.screen.width <= this.widthThresholdValue) || (this.$q.screen.height <= this.heightThresholdValue);\r\n    }\r\n\r\n    get mapWidth(): string {\r\n        if (!this.isMobile) {\r\n            return '550';\r\n        } else {\r\n            return (this.$q.screen.width * 0.7).toFixed(0);\r\n        }\r\n    }\r\n\r\n    get mapHeight(): string {\r\n        if (!this.isMobile) {\r\n            return '300';\r\n        } else {\r\n            return '500';\r\n        }\r\n    }\r\n\r\n    get previewMobileDialogStyle(): string {\r\n        return 'height: ' + (this.$q.screen.height - 10) + 'px; width: ' + (this.$q.screen.width - 10) + 'px;';\r\n    }\r\n\r\n    public onShowDialog() {\r\n        this.showMap = false;\r\n        this.showDialog = true;\r\n    }\r\n\r\n    public onCloseDialog() {\r\n        this.showDialog = false;\r\n    }\r\n\r\n    public initFilters() {\r\n        this.$store.dispatch('getFilterData');\r\n\r\n        // TODO not sure why this is needed...\r\n        this.pingSchoolsService();\r\n    }\r\n\r\n    public onRestoreFilter(mfid: number) {\r\n        console.log('FilterManager: onRestoreFilter()');\r\n        this.$store.dispatch('restoreFilter', mfid);\r\n    }\r\n\r\n    public onDeleteFilter(mfid: number) {\r\n        console.log('FilterManager: onDeleteFilter()');\r\n        this.$store.dispatch('removeSavedFilter', mfid);\r\n    }\r\n\r\n    public onFilterAreaClick(filter: SavedFilter) {\r\n        console.log('FilterManager: onFilterAreaClick()');\r\n        if (this.showMap) {\r\n            // this will destroy component if it was previously created so it can be mounted/initalized again\r\n            this.showMap = false;\r\n            setTimeout(() => {\r\n                this.selectedGeoJson = filter.getGeoJson();\r\n                this.selectedName = filter.Name;\r\n                this.showMap = true;\r\n            }, 50);\r\n        } else {\r\n            this.selectedGeoJson = filter.getGeoJson();\r\n            this.selectedName = filter.Name;\r\n            this.showMap = true;\r\n        }\r\n        const dialogElement = document.getElementById('filterManagerDialog');\r\n        if (dialogElement) {\r\n            dialogElement.scrollTo(0, 0);\r\n        }\r\n    }\r\n\r\n\r\n    public pingSchoolsService() {\r\n        const pingSchools = esri.query({\r\n            url: this.config.SchoolCatchmentLayer.url,\r\n            proxy: this.config.proxy.url,\r\n        });\r\n        pingSchools.where('1=1').count((error) => {\r\n            if (!error) {\r\n                // Logger.writeLog(\"_pingSchoolsService..success\");\r\n                console.log('_pingSchoolsService..success');\r\n            } else {\r\n                // Logger.writeLog(\"_pingSchoolsService..failed\");\r\n                console.log('_pingSchoolsService..failed');\r\n            }\r\n        });\r\n    }\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManager.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilterManager.vue?vue&type=template&id=62196442&scoped=true&\"\nimport script from \"./FilterManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilterManager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilterManager.vue?vue&type=style&index=0&id=62196442&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  \"62196442\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QToolbar,QIcon,QSpace,QBtn})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"over-map-right shadow-box shadow-5 rounded-borders secondPosition disable-zoom\"},[_c('q-btn',{staticClass:\"hover-color\",attrs:{\"color\":\"white\",\"size\":\"md\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onManageFilters()}}},[_c('q-icon',{staticStyle:{\"font-size\":\"1.5em\"},attrs:{\"name\":\"fas fa-filter\",\"color\":\"blue-alternate\"}}),(_vm.isLoggedIn && _vm.savedFilters && _vm.savedFilters.length > 0)?_c('q-badge',{staticClass:\"q-mt-lg q-px-xs\",attrs:{\"floating\":\"\",\"color\":\"blue-brand\"}},[_vm._v(\" \"+_vm._s(_vm.savedFilters.length)+\" \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { Filter } from '@/models/Filter';\r\n\r\n@Component\r\nexport default class FilterManageButton extends Vue {\r\n    get activeFilter(): Filter | null {\r\n        return this.$store.state.filters.activeFilter;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get isLoggedIn(): boolean {\r\n        return this.$store.state.isLoggedIn;\r\n    }\r\n\r\n    get favouriteCount(): number {\r\n        return this.$store.state.favourites.favouriteCount;\r\n    }\r\n\r\n    get savedFilters() {\r\n        return this.$store.state.filters.savedFilters;\r\n    }\r\n\r\n    get filterCount() {\r\n        return this.$store.state.filters.filterCount;\r\n    }\r\n\r\n    public onManageFilters() {\r\n        console.log('onManageFilters');\r\n        if (this.isLoggedIn) {\r\n            this.$store.dispatch('showFilterManager');\r\n        } else {\r\n            this.$store.dispatch('showLoginPromptDialog', 'You must login to view saved filters.');\r\n        }\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManageButton.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterManageButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilterManageButton.vue?vue&type=template&id=7b871776&scoped=true&\"\nimport script from \"./FilterManageButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilterManageButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilterManageButton.vue?vue&type=style&index=0&id=7b871776&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  \"7b871776\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtn,QIcon,QBadge} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtn,QIcon,QBadge})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"over-map-right shadow-box shadow-5 rounded-borders thirdPosition disable-zoom\"},[_c('q-btn',{staticClass:\"hover-color\",attrs:{\"color\":\"white\",\"size\":\"md\",\"round\":\"\"},on:{\"click\":function($event){return _vm.onToggleMeasure()}}},[_c('q-icon',{staticStyle:{\"font-size\":\"1.5em\"},attrs:{\"name\":\"fas fa-ruler\",\"color\":\"blue-alternate\"}})],1),_c('q-dialog',{attrs:{\"seamless\":\"\",\"position\":\"bottom\"},model:{value:(_vm.showMeasureToolbar),callback:function ($$v) {_vm.showMeasureToolbar=$$v},expression:\"showMeasureToolbar\"}},[_c('q-card',{staticStyle:{\"width\":\"410px\"}},[_c('q-linear-progress',{attrs:{\"value\":1,\"color\":\"red-brand\"}}),_c('q-card-section',{staticClass:\"row items-center no-wrap\"},[_c('div',[(_vm.currentMeasurement == 0)?_c('div',{staticClass:\"text-weight-bold\"},[_vm._v(\"Draw to measure\")]):(!_vm.showArea)?_c('div',{staticClass:\"text-weight-bold\"},[_vm._v(\"Measure distance: \"+_vm._s(this.formattedMeasurement))]):_c('div',{staticClass:\"text-weight-bold\"},[_vm._v(\"Measure area: \"+_vm._s(this.formattedArea)),(_vm.formattedArea.substring(_vm.formattedArea.length-1) != 's')?_c('sup',[_vm._v(\"2\")]):_vm._e()])]),_c('q-space'),_c('q-toggle',{attrs:{\"checked-icon\":\"fas fa-draw-polygon\",\"color\":\"blue-brand\",\"label\":\"\",\"keep-color\":\"\",\"unchecked-icon\":\"fas fa-wave-triangle\"},on:{\"input\":_vm.onToggleMeasureType},model:{value:(_vm.showArea),callback:function ($$v) {_vm.showArea=$$v},expression:\"showArea\"}}),_c('q-toggle',{attrs:{\"color\":\"blue-brand\",\"icon\":_vm.isImperial ? 'ft' : 'm',\"keep-color\":\"\",\"left-label\":\"\"},model:{value:(_vm.isImperial),callback:function ($$v) {_vm.isImperial=$$v},expression:\"isImperial\"}}),_c('q-btn',{staticClass:\"btn-blue-brand q-mr-sm\",attrs:{\"round\":\"\",\"size\":\"sm\",\"icon\":\"fas fa-undo\",\"disabled\":_vm.isUndoDisabled},on:{\"click\":_vm.onUndo}}),_c('q-btn',{attrs:{\"round\":\"\",\"size\":\"sm\",\"flat\":\"\",\"icon\":\"fas fa-times\"},on:{\"click\":_vm.onCancelMeasure}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport 'leaflet-draw';\r\nimport 'leaflet-draw/dist/leaflet.draw.css';\r\nimport proj4 from 'proj4';\r\n\r\n@Component\r\nexport default class MeasureTool extends Vue {\r\n    public showMeasureToolbar: boolean = false;\r\n    public showArea: boolean = false;\r\n    public isImperial: boolean = false;\r\n    public currentMeasurement: number = 0;\r\n    public currentArea: number = 0;\r\n    public isUndoDisabled: boolean = true;\r\n    public drawLine: any = null;\r\n    public coords: any = [];\r\n    public projectedCoords: any = [];\r\n    public drawLayer: L.GeoJSON | null = null;\r\n    public areaOverlayLayer: L.GeoJSON | null = null;\r\n    public drawLineStyle = {\r\n        color: '#DC1C2E',\r\n        weight: 4,\r\n        opacity: 1,\r\n    };\r\n    public drawPolygonStyle = {\r\n        color: '#000000',\r\n        fillColor: '#000000',\r\n        weight: 0,\r\n        opacity: 1,\r\n        fillOpacity: 0.3,\r\n    };\r\n\r\n    get formattedMeasurement() {\r\n        if (!this.isImperial) {\r\n            if (this.currentMeasurement >= 1000) {\r\n                return `${Math.round((this.currentMeasurement / 1000) * 100) / 100} km`;\r\n            }\r\n            return `${Math.round(this.currentMeasurement * 100) / 100} m`;\r\n        }\r\n        return `${Math.round(this.currentMeasurement * 100 * 3.28084) / 100} ft`;\r\n    }\r\n\r\n    get formattedArea() {\r\n        if (!this.isImperial) {\r\n            if (this.currentArea >= 1000000) {\r\n                return `${Math.round((this.currentArea / 1000000) * 100) / 100} km`;\r\n            }\r\n            return `${Math.round(this.currentArea * 100) / 100} m`;\r\n        }\r\n        if (this.currentArea * 0.000247105 >= 1.0) {\r\n            return `${Math.round(this.currentArea * 0.000247105 * 100) / 100} acres`;\r\n        }\r\n        return `${Math.round(this.currentArea * 10.7639 * 100) / 100} ft`;\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    public onToggleMeasure() {\r\n        console.log('onToggleMeasure');\r\n        this.showMeasureToolbar = !this.showMeasureToolbar;\r\n        this.showMeasureToolbar ? this.onInitMeasure() : this.onCancelMeasure();\r\n    }\r\n\r\n    public onInitMeasure() {\r\n        this.$store.dispatch('disableMapClick');\r\n        this.showArea = false;\r\n        this.isImperial = false;\r\n\r\n        // @ts-ignore - no typedefs\r\n        L.drawLocal.draw.handlers.polyline.tooltip.start = 'Click to start drawing a line';\r\n        // @ts-ignore - no typedefs\r\n        L.drawLocal.draw.handlers.polyline.tooltip.cont = '';\r\n        // @ts-ignore - no typedefs\r\n        L.drawLocal.draw.handlers.polyline.tooltip.end = '';\r\n        // @ts-ignore - no typedefs\r\n        this.drawLine = new L.Draw.Polyline(this.map, {\r\n            showLength: false,\r\n            allowIntersection: true,\r\n            drawError: {\r\n                color: '#ffa500',\r\n                message: '<strong>Opps...sorry!<strong> you can\\'t draw that!',\r\n            },\r\n            shapeOptions: {\r\n                color: '#003DA5',\r\n                opacity: 1.0,\r\n                weight: 6,\r\n            },\r\n        });\r\n        this.drawLine.enable();\r\n\r\n        // @ts-ignore\r\n        proj4.defs('EPSG:2961', '+proj=utm +zone=20 +ellps=GRS80 +units=m +no_defs');\r\n\r\n        let firstMarker = null;\r\n        // @ts-ignore - no typedefs\r\n        this.map.on(L.Draw.Event.DRAWVERTEX, (e) => {\r\n            if (e.layers.getLayers().length === 1) {\r\n                firstMarker = e.layers.getLayers()[0];\r\n                firstMarker.on('click', (v: any) => {\r\n                    this.drawLine.addVertex(v.latlng);\r\n                    this.drawLine.completeShape();\r\n                });\r\n            }\r\n            this.coords = [];\r\n            this.projectedCoords = [];\r\n            for (const feature of e.layers.toGeoJSON().features) {\r\n                this.coords.push([feature.geometry.coordinates[1], feature.geometry.coordinates[0]]);\r\n                const projected = proj4('EPSG:2961', feature.geometry.coordinates);\r\n                this.projectedCoords.push(projected);\r\n            }\r\n            this.recalcDistance();\r\n            if (this.projectedCoords.length > 1) {\r\n                this.isUndoDisabled = false;\r\n            }\r\n            this.recalcArea();\r\n            if (this.showArea) {\r\n                this.areaOverlayLayer?.removeFrom(this.map);\r\n                const poly  = L.polygon(this.coords);\r\n                this.areaOverlayLayer = L.geoJSON(poly.toGeoJSON(),\r\n                    {\r\n                        style: this.drawPolygonStyle,\r\n                    });\r\n                this.areaOverlayLayer.addTo(this.map);\r\n            }\r\n        });\r\n\r\n        // @ts-ignore - no typedefs\r\n        this.map.on(L.Draw.Event.CREATED, (e) => {\r\n            // drawstop gets fired when created so disable it!\r\n            this.map.off('draw:drawstop');\r\n            this.drawLayer = L.geoJSON(e.layer.toGeoJSON(),\r\n                {\r\n                    style: this.drawLineStyle,\r\n                });\r\n\r\n            this.map.removeLayer(e.layer);\r\n            this.drawLayer.addTo(this.map);\r\n        });\r\n\r\n        // @ts-ignore - no typedefs\r\n        this.map.on('draw:drawstop', (e) => {\r\n            this.onCancelMeasure();\r\n        });\r\n    }\r\n\r\n    public recalcArea() {\r\n        if (this.coords.length > 2) {\r\n            // Compare with turf calculation\r\n            // const polygon = turf.polygon([ this.coords.concat([this.coords[0]]) ]); // turf wants a closed polygon\r\n            // const a: any = area(polygon);\r\n            // console.log(a);\r\n            let a2 = 0;\r\n            for (let i = 0, l = this.projectedCoords.length; i < l; i++) {\r\n                const addX = this.projectedCoords[i][0];\r\n                const addY = this.projectedCoords[i === this.projectedCoords.length - 1 ? 0 : i + 1][1];\r\n                const subX = this.projectedCoords[i === this.projectedCoords.length - 1 ? 0 : i + 1][0];\r\n                const subY = this.projectedCoords[i][1];\r\n                a2 += (addX * addY * 0.5);\r\n                a2 -= (subX * subY * 0.5);\r\n            }\r\n            this.currentArea = Math.abs(a2);\r\n        } else {\r\n            this.currentArea = 0;\r\n        }\r\n    }\r\n\r\n    public recalcDistance() {\r\n        if (this.projectedCoords.length > 1) {\r\n            let sum = 0;\r\n            for (let i = 0; i < this.projectedCoords.length - 1; i++) {\r\n                sum += this.utmDistance(this.projectedCoords[i][0], this.projectedCoords[i][1], this.projectedCoords[i + 1][0], this.projectedCoords[i + 1][1]);\r\n            }\r\n            this.currentMeasurement = sum;\r\n        } else {\r\n            this.currentMeasurement = 0;\r\n        }\r\n    }\r\n\r\n    public utmDistance(x1: number, y1: number, x2: number, y2: number) {\r\n        const xDiff = Math.abs(x1 - x2);\r\n        const yDiff = Math.abs(y1 - y2);\r\n        return Math.sqrt((xDiff * xDiff) + (yDiff * yDiff));\r\n    }\r\n\r\n    public onToggleMeasureType() {\r\n        console.log('onToggleMeasureType');\r\n        if (this.showArea) {\r\n            const poly  = L.polygon(this.coords);\r\n            this.areaOverlayLayer = L.geoJSON(poly.toGeoJSON(),\r\n                {\r\n                    style: this.drawPolygonStyle,\r\n                });\r\n            this.areaOverlayLayer.addTo(this.map);\r\n        } else {\r\n            this.areaOverlayLayer?.removeFrom(this.map);\r\n        }\r\n    }\r\n\r\n    public onUndo() {\r\n        if (this.drawLayer) {\r\n            this.map.removeLayer(this.drawLayer);\r\n            this.drawLayer = null;\r\n            this.areaOverlayLayer?.removeFrom(this.map);\r\n            this.areaOverlayLayer = null;\r\n            this.currentMeasurement = 0;\r\n            this.currentArea = 0;\r\n            // @ts-ignore\r\n            this.map.off(L.Draw.Event.CREATED);\r\n            // @ts-ignore\r\n            this.map.off(L.Draw.Event.DRAWVERTEX);\r\n            this.map.off('draw:drawstop');\r\n            this.onInitMeasure();\r\n        } else {\r\n            if (this.drawLine) {\r\n                this.drawLine.deleteLastVertex();\r\n            }\r\n        }\r\n    }\r\n\r\n    public onCancelMeasure() {\r\n        console.log('MeasureTool: onCancelMeasure()');\r\n        this.$store.dispatch('enableMapClick');\r\n        if (this.drawLine) {\r\n            // @ts-ignore\r\n            this.map.off(L.Draw.Event.CREATED);\r\n            // @ts-ignore\r\n            this.map.off(L.Draw.Event.DRAWVERTEX);\r\n            this.map.off('draw:drawstop');\r\n            this.drawLine.disable();\r\n            this.drawLine = null;\r\n        }\r\n        if (this.drawLayer) {\r\n            this.map.removeLayer(this.drawLayer);\r\n            this.drawLayer = null;\r\n        }\r\n        if (this.areaOverlayLayer) {\r\n            this.map.removeLayer(this.areaOverlayLayer);\r\n            this.areaOverlayLayer = null;\r\n        }\r\n        this.showMeasureToolbar = false;\r\n        this.currentMeasurement = 0;\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MeasureTool.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MeasureTool.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MeasureTool.vue?vue&type=template&id=d89bb582&scoped=true&\"\nimport script from \"./MeasureTool.vue?vue&type=script&lang=ts&\"\nexport * from \"./MeasureTool.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MeasureTool.vue?vue&type=style&index=0&id=d89bb582&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  \"d89bb582\",\n  null\n  \n)\n\nexport default component.exports\nimport {QBtn,QIcon,QDialog,QCard,QLinearProgress,QCardSection,QSpace,QToggle} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBtn,QIcon,QDialog,QCard,QLinearProgress,QCardSection,QSpace,QToggle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(\"div\")}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport 'leaflet-pulse-icon';\r\nimport 'leaflet-pulse-icon/src/L.Icon.Pulse.css';\r\nimport 'leaflet.locatecontrol';\r\n\r\n@Component\r\nexport default class GeoLocation extends Vue {\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'initGeoLocation') {\r\n            this.initGeoLocation();\r\n        }\r\n    });\r\n\r\n    public initGeoLocation() {\r\n        console.log('GeoLocation: initGeoLocation()');\r\n        // @ts-ignore - pulse icon has no typedefs\r\n        const pulsingIcon = L.icon.pulse({\r\n            iconSize: [this.config.locationSize, this.config.locationSize],\r\n            color: this.config.locationColor,\r\n            fillColor: this.config.locationColor,\r\n        });\r\n\r\n        // @ts-ignore - no typedefs\r\n        const locationControl = L.control.locate({\r\n            clickBehavior: {\r\n                inView: 'stop',\r\n                outOfView: 'setView',\r\n                inViewNotFollowing: 'inView',\r\n            },\r\n            // enableHighAccuracy: true,\r\n            drawCircle: false,\r\n            cacheLocation: true,\r\n            icon: 'fa fa-crosshairs',\r\n            markerStyle: {\r\n                icon: pulsingIcon,\r\n            },\r\n            markerClass: L.Marker,\r\n            keepCurrentZoomLevel: false,\r\n            locateOptions: {\r\n                maxZoom: this.config.locationZoom,\r\n                minZoom: this.config.locationZoom,\r\n            },\r\n        });\r\n\r\n        if (navigator.geolocation) {\r\n            locationControl.addTo(this.map);\r\n        }\r\n    }\r\n\r\n    // Unused parts of the old GeoLocationMgr\r\n\r\n    // var _toggleGeoLocateControl = function () {\r\n    //     if (RemapState.getDeviceMode() == \"mobile\") {\r\n    //         _locationControl.addTo(_map);\r\n    //     } else {\r\n    //         _locationControl.remove();\r\n    //     }\r\n    // };\r\n\r\n    // var _getLocation = function () {\r\n    //     if (_locationControl && _locationControl._marker && _locationControl._marker._latlng) {\r\n    //         _location = _locationControl._marker._latlng;\r\n    //         return _location;\r\n    //     }\r\n    //     return null;\r\n    // };\r\n\r\n    // var _checkLocation = function () {\r\n    //     var l = _getLocation();\r\n    //     if (l) {\r\n    //         if (!_map.getBounds().contains(l)) {\r\n    //             setTimeout(function () {\r\n    //                 _disableLocation();\r\n    //             }, RN_Config.locationTimeout);\r\n    //         }\r\n    //     }\r\n    // };\r\n\r\n    // var _disableLocation = function () {\r\n    //     var l = _getLocation();\r\n    //     if (l) {\r\n    //         if (!_map.getBounds().contains(l)) {\r\n    //             _locationControl.stop();\r\n    //         }\r\n    //     }\r\n    // };\r\n\r\n    // /*\r\n    //  * UNUSED - gets nearby property ids within 1000m if location is active\r\n    //  */\r\n    // var _getNearbyProperties = function () {\r\n    //     console.log(\"_getNeabyProperties\");\r\n    //     var l = _getLocation();\r\n    //     var distance = 1000;\r\n    //     if (l) {\r\n    //         console.log(l);\r\n    //         var query = L.esri.query({\r\n    //             url: RN_Config.ListingsPointLayer.url_in,\r\n    //             proxy: RN_Config.proxy.url\r\n    //         });\r\n\r\n    //         query.nearby(l, distance).ids(function (error, ids, response) {\r\n    //             if (!error) {\r\n    //                 console.log(response);\r\n    //                 var filteredIds = {};\r\n    //                 for (var i = 0; i < ids.length; i++) {\r\n    //                     console.log(ids[i]);\r\n    //                     filteredIds[ids[i]] = 1;\r\n    //                 }\r\n    //             }\r\n    //             else {\r\n    //                 console.log(error);\r\n    //                 ErrorMgr.logError(\"failed to get nearby locations:\" + error);\r\n    //             }\r\n    //         });\r\n    //     }\r\n    // };\r\n\r\n    public mounted() {\r\n        console.log('GeoLocation: mounted()');\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoLocation.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GeoLocation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GeoLocation.vue?vue&type=template&id=014a2907&\"\nimport script from \"./GeoLocation.vue?vue&type=script&lang=ts&\"\nexport * from \"./GeoLocation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GeoLocation.vue?vue&type=style&index=0&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  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('q-dialog',{model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"walk-times-dialog-size\"},[_c('q-card-section',{staticClass:\"row items-center q-pb-none\"},[_c('div',{staticClass:\"text-h6\"},[_c('q-icon',{attrs:{\"name\":\"fas fa-walking\"}}),_vm._v(\"Walkability\")],1),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1),_c('q-card-section',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h6',{staticClass:\"q-pt-sm q-mt-sm q-pb-sm q-mb-sm\"},[_vm._v(\"Walkability of this location\")]),_c('p',[_vm._v(\"The areas show an estimate of where you could walk within a given number of minutes.\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('q-badge',{staticStyle:{\"color\":\"lightblue\"},attrs:{\"text-color\":\"white\",\"label\":\"5 mins\"}})],1),_c('div',{staticClass:\"col\"},[_c('q-badge',{attrs:{\"color\":\"red\",\"text-color\":\"white\",\"label\":\"10 mins\"}})],1),_c('div',{staticClass:\"col\"},[_c('q-badge',{attrs:{\"color\":\"blue\",\"text-color\":\"white\",\"label\":\"20 mins\"}})],1)]),_c('q-separator',{attrs:{\"inset\":\"\"}}),_c('div',{staticStyle:{\"text-align\":\"center\",\"height\":\"240px\"}},[_c('span',{staticClass:\"fa-layers fa-fw\",staticStyle:{\"margin-top\":\"100px\"}},[_c('q-icon',{staticStyle:{\"color\":\"blue\"},attrs:{\"name\":\"fas fa-circle\",\"data-fa-transform\":\"grow-240\"}}),_c('q-icon',{staticStyle:{\"color\":\"red\"},attrs:{\"name\":\"fas fa-circle\",\"data-fa-transform\":\"grow-160\"}}),_c('q-icon',{staticStyle:{\"color\":\"lightblue\"},attrs:{\"name\":\"fas fa-circle\",\"data-fa-transform\":\"grow-80\"}}),_c('q-icon',{staticStyle:{\"color\":\"#666666\"},attrs:{\"name\":\"fas fa-home\",\"data-fa-transform\":\"grow-10\"}})],1)]),_c('q-separator',{attrs:{\"inset\":\"\"}}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col items-center\"},[_c('q-checkbox',{attrs:{\"label\":\"Don't tell me again\"},on:{\"input\":_vm.onChangeHelp},model:{value:(_vm.dontTellMe),callback:function ($$v) {_vm.dontTellMe=$$v},expression:\"dontTellMe\"}})],1)]),_c('div',{staticClass:\"row justify-center\"},[_c('div',{staticClass:\"col items-center\"},[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"color\":\"blue\",\"no-caps\":\"\",\"label\":\"Got it\"}})],1)])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport L from 'leaflet';\r\nimport { Listing } from '../models/Listing';\r\n\r\n@Component\r\nexport default class WalkTimes extends Vue {\r\n\r\n    public walkTimeControl: any = null;\r\n    public walkAreasLayer: any = null;\r\n    public walkData: any = null; // as GeoJsonObject\r\n    public sysId: number | null = null;\r\n\r\n    public showDialog: boolean = false;\r\n    public dontTellMe: boolean = false;\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get showWalkabilityHelp(): boolean {\r\n        return this.$store.state.showWalkabilityHelp;\r\n    }\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'initWalkTimes') {\r\n            this.initWalkTimes();\r\n        }\r\n        if (action.type === 'setSelectedListing') {\r\n            this.onListingSelected(action.payload);\r\n        }\r\n        if (action.type === 'listingDetailFetchComplete') {\r\n            if (action.payload && action.payload.ParcelData && action.payload.ParcelData.WalkTimeGeoJson) {\r\n                const walkData = JSON.parse(action.payload.ParcelData.WalkTimeGeoJson);\r\n                console.log(walkData);\r\n                this.onSetWalkData(walkData);\r\n            } else {\r\n                this.onClearWalkData();\r\n            }\r\n        }\r\n\r\n    });\r\n\r\n    public onChangeHelp(value: boolean) {\r\n        console.log(value);\r\n        this.$store.dispatch('setWalkabilityHelp', !value);\r\n    }\r\n\r\n    public initWalkTimes() {\r\n        console.log('WalkTimes: initWalkTimes()');\r\n\r\n        this.dontTellMe = !this.showWalkabilityHelp;\r\n\r\n        const WalkTimeControl = L.Control.extend({\r\n            options: {\r\n                position: 'topleft',\r\n            },\r\n\r\n            onAdd: () => {\r\n                console.log('WalkTimeControl: onAdd()');\r\n                const container = L.DomUtil.create('div', 'divWalkTimeControl');\r\n                container.innerHTML =\r\n                    `<span id='spanWalkTimeControl' class='spanWalkTimeControl' title='Walk Times'>` +\r\n                    `<i class='fas fa-walking fa-2x'></i>` +\r\n                    `</span>`;\r\n\r\n                container.style.display = 'none';\r\n                return container;\r\n            },\r\n        });\r\n\r\n        this.walkTimeControl = new WalkTimeControl();\r\n        this.map.addControl(this.walkTimeControl);\r\n\r\n        // initiall invisible\r\n        const favBtn: any = document.getElementById('spanWalkTimeControl');\r\n        favBtn.addEventListener('click', (event: any) => {\r\n            this.$store.dispatch('sendWalkabilityEvent', { sysId: this.sysId });\r\n\r\n            if (this.walkAreasLayer && this.map.hasLayer(this.walkAreasLayer)) {\r\n                this.map.removeLayer(this.walkAreasLayer);\r\n                return;\r\n            }\r\n\r\n            if (this.showWalkabilityHelp) {\r\n                this.showDialog = true;\r\n            }\r\n\r\n            this.showWalkData();\r\n\r\n            event.preventDefault();\r\n        });\r\n    }\r\n\r\n    public onClearWalkData() {\r\n        if (this.walkAreasLayer !== null) {\r\n            this.walkAreasLayer.removeFrom(this.map);\r\n            this.walkAreasLayer = null;\r\n        }\r\n    }\r\n\r\n    public onListingSelected(listing: Listing) {\r\n        console.log('WalkTimes: onListingSelected');\r\n        console.log(listing);\r\n        if (this.sysId !== null && this.sysId !== listing.sid && this.walkTimeControl) {\r\n            this.walkTimeControl.getContainer().style.display = 'none';\r\n        }\r\n        this.sysId = listing.sid;\r\n    }\r\n\r\n    public onSetWalkData(walkData: any) {\r\n\r\n        this.walkTimeControl.getContainer().style.display = 'block';\r\n\r\n        if (this.walkAreasLayer) {\r\n            this.walkAreasLayer.removeFrom(this.map);\r\n        }\r\n\r\n        this.walkData = walkData;\r\n\r\n        this.walkAreasLayer = L.geoJSON(walkData, {\r\n            // @ts-ignore - not sure what feature should be\r\n            style: (feature: any) => {\r\n                switch (feature.properties.FromBreak) {\r\n                    case 0: return {\r\n                        color: '#A4D7F4',\r\n                        weight: 1,\r\n                        fillOpacity: 0.65,\r\n                    };\r\n                    case 5: return {\r\n                        color: '#DC1C2E',\r\n                        weight: 1,\r\n                        fillOpacity: 0.65,\r\n                    };\r\n                    case 10: return {\r\n                        color: '#003DA5',\r\n                        weight: 1,\r\n                        opacity: 1,\r\n                        fillOpacity: 0.65,\r\n                    };\r\n                }\r\n            },\r\n        });\r\n\r\n    }\r\n\r\n\r\n    public showWalkData() {\r\n        if (this.walkAreasLayer && this.map.hasLayer(this.walkAreasLayer)) {\r\n            return;\r\n        }\r\n\r\n        if (!this.walkData) {\r\n            console.error('Trying to show walk data without data?');\r\n            // ErrorMgr.logError(\"Trying to show walk data without data?\");\r\n            return;\r\n        }\r\n\r\n        this.onSetWalkData(this.walkData);\r\n        this.walkAreasLayer.addTo(this.map);\r\n        this.map.flyToBounds(this.walkAreasLayer.getBounds());\r\n    }\r\n\r\n\r\n    public mounted() {\r\n        console.log('WalkTimes: mounted()');\r\n    }\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WalkTimes.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WalkTimes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WalkTimes.vue?vue&type=template&id=a441c71c&\"\nimport script from \"./WalkTimes.vue?vue&type=script&lang=ts&\"\nexport * from \"./WalkTimes.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WalkTimes.vue?vue&type=style&index=0&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  null,\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QIcon,QSpace,QBtn,QBadge,QSeparator,QCheckbox,ClosePopup} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QIcon,QSpace,QBtn,QBadge,QSeparator,QCheckbox})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('q-dialog',{on:{\"hide\":_vm.onHide},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('q-card',{staticClass:\"filter-save-dialog-size\"},[_c('q-card-section',{staticClass:\"row items-center bg-grey-3\"},[_c('div',{staticClass:\"text-h6\"},[_c('q-icon',{staticClass:\"q-pr-md\",attrs:{\"name\":\"fas fa-filter\"}}),_vm._v(\"Save Search\")],1),_c('q-space'),_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"}})],1),(!_vm.resultsSaved)?_c('q-card-section',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('q-input',{attrs:{\"outlined\":\"\",\"label\":\"Search Name\",\"color\":\"blue-brand\",\"dense\":\"\"},model:{value:(_vm.filterName),callback:function ($$v) {_vm.filterName=$$v},expression:\"filterName\"}}),_c('q-toggle',{attrs:{\"color\":\"blue-brand\",\"label\":\"Send Notifications?\",\"icon\":\"fas fa-bell\",\"unchecked-icon\":\"fas fa-times\"},model:{value:(_vm.showNotifications),callback:function ($$v) {_vm.showNotifications=$$v},expression:\"showNotifications\"}}),_c('q-btn',{staticClass:\"layer-menu-blue\",attrs:{\"round\":\"\",\"flat\":\"\",\"icon\":\"fas fa-question-circle\"}},[_c('q-tooltip',[_vm._v(\" We'll notify you by email when there are new listings or changes that match your search \")])],1)],1)]),(_vm.showNotifications)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"text-bold q-pt-md\"},[_vm._v(\"Notification Settings\")]),_c('q-list',[_c('q-item',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],attrs:{\"tag\":\"label\"}},[_c('q-item-section',{attrs:{\"avatar\":\"\"}},[_c('q-radio',{attrs:{\"val\":\"extent\",\"color\":\"blue-brand\"},model:{value:(_vm.notificationAreaType),callback:function ($$v) {_vm.notificationAreaType=$$v},expression:\"notificationAreaType\"}})],1),_c('q-item-section',[_c('q-item-label',[_vm._v(\"Current Map View\")]),_c('q-item-label',{attrs:{\"caption\":\"\"}},[_vm._v(\"This is the area of the map you can currently see on the screen.\")])],1)],1),_c('q-item',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],attrs:{\"tag\":\"label\"}},[_c('q-item-section',{attrs:{\"avatar\":\"\"}},[_c('q-radio',{attrs:{\"val\":\"draw\",\"color\":\"blue-brand\"},on:{\"input\":_vm.onDrawArea},model:{value:(_vm.notificationAreaType),callback:function ($$v) {_vm.notificationAreaType=$$v},expression:\"notificationAreaType\"}})],1),_c('q-item-section',[_c('q-item-label',[_vm._v(\"Draw an Area\")]),_c('q-item-label',{attrs:{\"caption\":\"\"}},[_vm._v(\"Draw a shape on the map to indicate the area you're interested in.\")])],1)],1),(_vm.activeSpatialFilter)?_c('q-item',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],attrs:{\"tag\":\"label\"}},[_c('q-item-section',{attrs:{\"avatar\":\"\"}},[_c('q-radio',{attrs:{\"val\":\"school\",\"color\":\"blue-brand\"},model:{value:(_vm.notificationAreaType),callback:function ($$v) {_vm.notificationAreaType=$$v},expression:\"notificationAreaType\"}})],1),_c('q-item-section',[_c('q-item-label',[_vm._v(\"School Catchment\")]),_c('q-item-label',{attrs:{\"caption\":\"\"}},[_vm._v(\"Use the school catchment area from the filter.\")])],1)],1):_vm._e()],1)],1):_vm._e()]):_c('q-card-section',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col text-h6\"},[_vm._v(\" Search Saved! \")])]),_c('div',{staticClass:\"row q-pt-md\"},[_c('div',{staticClass:\"col\"},[_vm._v(\" View/restore your saved searches by clicking on the filter button \"),_c('span',[_c('q-btn',{attrs:{\"color\":\"white\",\"size\":\"md\",\"round\":\"\"}},[_c('q-icon',{staticStyle:{\"font-size\":\"1.5em\"},attrs:{\"name\":\"fas fa-filter\",\"color\":\"blue-alternate\"}})],1)],1),_vm._v(\" on the right side of the map. \")])])]),(!_vm.resultsSaved)?_c('q-card-actions',{attrs:{\"align\":\"right\"}},[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],attrs:{\"flat\":\"\",\"label\":\"Cancel\",\"no-caps\":\"\"}}),_c('q-btn',{staticClass:\"btn-blue-brand\",attrs:{\"flat\":\"\",\"label\":\"Save\",\"disable\":_vm.filterName.length <= 0,\"no-caps\":\"\"},on:{\"click\":_vm.onSaveFilter}})],1):_c('q-card-actions',{attrs:{\"align\":\"right\"}},[_c('q-btn',{directives:[{name:\"close-popup\",rawName:\"v-close-popup\"}],staticClass:\"btn-blue-brand\",attrs:{\"flat\":\"\",\"label\":\"Close\",\"no-caps\":\"\"}})],1)],1)],1),_c('q-dialog',{attrs:{\"seamless\":\"\",\"position\":\"bottom\"},model:{value:(_vm.showDrawToolbar),callback:function ($$v) {_vm.showDrawToolbar=$$v},expression:\"showDrawToolbar\"}},[_c('q-card',{staticStyle:{\"width\":\"350px\"}},[_c('q-linear-progress',{attrs:{\"value\":1,\"color\":\"red-brand\"}}),_c('q-card-section',{staticClass:\"row items-center no-wrap\"},[_c('div',[_c('div',{staticClass:\"text-weight-bold\"},[_vm._v(\"Draw your filter area\")])]),_c('q-space'),_c('q-btn',{staticClass:\"btn-blue-brand\",attrs:{\"label\":\"Cancel\",\"no-caps\":\"\"},on:{\"click\":_vm.onCancelDraw}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { SavedFilter } from '@/models/SavedFilter';\r\nimport L from 'leaflet';\r\nimport 'leaflet-draw';\r\nimport 'leaflet-draw/dist/leaflet.draw.css';\r\n\r\n@Component\r\nexport default class FilterSaveDialog extends Vue {\r\n\r\n    public showDialog: boolean = false;\r\n    public showDrawToolbar: boolean = false;\r\n\r\n    public drawPolygon: any = null; // as L.Draw.Polygon\r\n    public spatialFilterLayer: L.GeoJSON | null = null;\r\n    public spatialFilterStyle = {\r\n        color: '#DC1C2E',\r\n        fillColor: '#DC1C2E',\r\n        weight: 4,\r\n        opacity: 1,\r\n        fillOpacity: 0.15,\r\n    };\r\n\r\n    public resultsSaved: boolean = false;\r\n    public filterName: string = '';\r\n    public showNotifications: boolean = false;\r\n    public notificationAreaType: string = 'extent';\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'showFilterSaveDialog') {\r\n            this.onShowDialog();\r\n        }\r\n        if (action.type === 'saveFilterSuccess') {\r\n            this.onResultSaved();\r\n        }\r\n    });\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    get map() {\r\n        return this.$store.state.map;\r\n    }\r\n\r\n    get activeSpatialFilter() {\r\n        return this.$store.state.filters.spatialFilter;\r\n    }\r\n\r\n    public onShowDialog() {\r\n        this.filterName = '';\r\n        this.showNotifications = false;\r\n        this.resultsSaved = false;\r\n        this.notificationAreaType = 'extent';\r\n        this.showDialog = true;\r\n    }\r\n\r\n    public onSaveFilter() {\r\n        let payload: any = {\r\n            Notifications: this.showNotifications,\r\n            Name: this.filterName,\r\n        };\r\n\r\n        if (this.showNotifications) {\r\n            if (this.notificationAreaType === 'extent') {\r\n                const extent = L.rectangle(this.map.getBounds()).toGeoJSON();\r\n                payload = {\r\n                    Notifications: this.showNotifications,\r\n                    Name: this.filterName,\r\n                    SpatialFilter: extent,\r\n                };\r\n            } else if (this.notificationAreaType === 'school') {\r\n                payload = {\r\n                    Notifications: this.showNotifications,\r\n                    Name: this.filterName,\r\n                    SpatialFilter: this.activeSpatialFilter.toGeoJSON(),\r\n                };\r\n            } else if (this.spatialFilterLayer) {\r\n                payload = {\r\n                    Notifications: this.showNotifications,\r\n                    Name: this.filterName,\r\n                    SpatialFilter: this.spatialFilterLayer.toGeoJSON(),\r\n                };\r\n            }\r\n        }\r\n        this.$store.dispatch('saveActiveFilter', payload);\r\n    }\r\n\r\n    public onResultSaved() {\r\n        this.resultsSaved = true;\r\n    }\r\n\r\n    public onDrawArea(input: string) {\r\n        console.log('FilterSaveDialog: onDrawArea()');\r\n        this.showDialog = false;\r\n        this.showDrawToolbar = true;\r\n\r\n        // @ts-ignore - no typedefs\r\n        L.drawLocal.draw.handlers.polygon.tooltip.start = 'Click to start drawing filter area';\r\n        // @ts-ignore - no typedefs\r\n        L.drawLocal.draw.handlers.polygon.tooltip.cont = 'Click to continue drawing filter area.';\r\n        // @ts-ignore - no typedefs\r\n        L.drawLocal.draw.handlers.polygon.tooltip.end = 'Click first point to finish.';\r\n\r\n        const drawOptions = {\r\n            position: 'topleft',\r\n            draw: {\r\n                polygon: {\r\n                    allowIntersection: false,\r\n                    drawError: {\r\n                        color: '#ffa500',\r\n                        message: '<strong>Opps...sorry!<strong> you can\\'t draw that!',\r\n                    },\r\n                    shapeOptions: {\r\n                        color: '#003DA5',\r\n                        opacity: 1.0,\r\n                        weight: 6,\r\n                        fillColor: '#B22B2E',\r\n                        fillOpacity: 0.4,\r\n                    },\r\n                },\r\n                polyline: false,\r\n                rectangle: false,\r\n                circle: false,\r\n                marker: false,\r\n                circlemarker: false,\r\n            },\r\n        };\r\n\r\n        // @ts-ignore - no typedefs\r\n        this.drawPolygon = new L.Draw.Polygon(this.map, {\r\n            allowIntersection: false,\r\n            drawError: {\r\n                color: '#ffa500',\r\n                message: '<strong>Opps...sorry!<strong> you can\\'t draw that!',\r\n            },\r\n            shapeOptions: {\r\n                color: '#003DA5',\r\n                opacity: 1.0,\r\n                weight: 6,\r\n                fillColor: '#B22B2E',\r\n                fillOpacity: 0.4,\r\n            },\r\n        });\r\n        this.drawPolygon.enable();\r\n\r\n        // @ts-ignore - no typedefs\r\n        this.map.on(L.Draw.Event.CREATED, (e) => {\r\n            // console.log('CREATED');\r\n            // drawstop gets fired when created so disable it!\r\n            this.map.off('draw:drawstop');\r\n\r\n            this.spatialFilterLayer = L.geoJSON(e.layer.toGeoJSON(),\r\n                {\r\n                    style: this.spatialFilterStyle,\r\n                    pane: 'vector',\r\n                });\r\n\r\n            this.map.removeLayer(e.layer);\r\n            this.spatialFilterLayer.addTo(this.map);\r\n\r\n            // give it 1 sec to show the final shape drawn\r\n            setTimeout(() => {\r\n                this.onCancelDraw();\r\n            }, 1000);\r\n\r\n        });\r\n\r\n        // @ts-ignore - no typedefs\r\n        this.map.on('draw:drawstop', (e) => {\r\n            console.log('CANCEL');\r\n            this.onCancelDraw();\r\n        });\r\n    }\r\n\r\n    public onCancelDraw() {\r\n        console.log('FilterDialog: onCancelDraw()');\r\n        if (this.drawPolygon) {\r\n            // @ts-ignore\r\n            this.map.off(L.Draw.Event.CREATED);\r\n            this.map.off('draw:drawstop');\r\n\r\n            this.drawPolygon.disable();\r\n            this.drawPolygon = null;\r\n        }\r\n        this.showDialog = true;\r\n        this.showDrawToolbar = false;\r\n    }\r\n\r\n    public onHide() {\r\n        if (this.spatialFilterLayer) {\r\n            this.spatialFilterLayer.removeFrom(this.map);\r\n        }\r\n    }\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSaveDialog.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterSaveDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilterSaveDialog.vue?vue&type=template&id=9d76bd88&scoped=true&\"\nimport script from \"./FilterSaveDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilterSaveDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilterSaveDialog.vue?vue&type=style&index=0&id=9d76bd88&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  \"9d76bd88\",\n  null\n  \n)\n\nexport default component.exports\nimport {QDialog,QCard,QCardSection,QIcon,QSpace,QBtn,QInput,QToggle,QTooltip,QList,QItem,QItemSection,QRadio,QItemLabel,QCardActions,QLinearProgress,ClosePopup,Ripple} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QDialog,QCard,QCardSection,QIcon,QSpace,QBtn,QInput,QToggle,QTooltip,QList,QItem,QItemSection,QRadio,QItemLabel,QCardActions,QLinearProgress})\ncomponent.options.directives = Object.assign(Object.create(component.options.directives || null), component.options.directives || {}, {ClosePopup,Ripple})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('q-banner',{staticClass:\"bg-white-brand text-grey-9 q-pr-xs \",attrs:{\"inline-actions\":\"\"},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('q-img',{attrs:{\"src\":\"https://data.remaxnova.com/public/Images/mobile/remap_horizontal_logo.png\",\"width\":\"120px\"}})]},proxy:true},{key:\"action\",fn:function(){return [_c('q-btn',{attrs:{\"color\":\"red-brand\",\"push\":\"\",\"text-color\":\"grey-1\",\"no-caps\":\"\",\"label\":\"Try the App!\"},on:{\"click\":function($event){return _vm.gotoStore()}}}),_c('q-btn',{attrs:{\"icon\":\"fas fa-times\",\"flat\":\"\",\"round\":\"\",\"dense\":\"\"},on:{\"click\":function($event){return _vm.dismissBanner()}}})]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport { openURL } from 'quasar';\r\n\r\n@Component\r\nexport default class TryMobileBanner extends Vue {\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    public gotoStore() {\r\n        if (this.$q.platform.is.android) {\r\n            openURL(this.config.mobileLinks.android);\r\n        } else if (this.$q.platform.is.ios) {\r\n            openURL(this.config.mobileLinks.ios);\r\n        }\r\n    }\r\n\r\n    public dismissBanner() {\r\n        this.$store.dispatch('dismissMobleBanner');\r\n    }\r\n\r\n    public mounted() {\r\n        console.log('TryMobileBanner: mounted()');\r\n    }\r\n\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TryMobileBanner.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TryMobileBanner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TryMobileBanner.vue?vue&type=template&id=5d60c79f&\"\nimport script from \"./TryMobileBanner.vue?vue&type=script&lang=ts&\"\nexport * from \"./TryMobileBanner.vue?vue&type=script&lang=ts&\"\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\nimport {QBanner,QImg,QIcon,QBtn} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QBanner,QImg,QIcon,QBtn})\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\n\r\nVue.use(Vuex);\r\n\r\n// TODO\r\n// export interface ConfigState {\r\n// }\r\n\r\nexport default new Vuex.Store({\r\n    state: {\r\n        // url to your proxy page, must be on same machine hosting you app. See proxy folder for readme.\r\n        proxy: {\r\n            // url: 'https://remaxproxy-dev.azurewebsites.net/proxy.ashx',\r\n            url: 'https://proxy.remaxnova.com/proxy.ashx',\r\n        },\r\n\r\n        mobileLinks: {\r\n            ios: 'https://apps.apple.com/us/app/remap/id6443455631',\r\n            android: 'https://play.google.com/store/apps/details?id=com.remaxnova.remap',\r\n        },\r\n\r\n        imageRoot: 'https://data.remaxnova.com/propimages/',\r\n        gMapUrl: 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAn-0SRNJTThntgtl7lQubiY9mGCMcvvKc',\r\n        gMapAPIKey: 'AIzaSyAn-0SRNJTThntgtl7lQubiY9mGCMcvvKc',\r\n        googleMarkerUrl: 'https://data.remaxnova.com/propimages/map/pins/res.png',\r\n        placeholdListingImg: 'placeholder-listing.png',\r\n        baseUrl: 'https://remaxdev.azureedge.net',\r\n        baseFullListingUrl: 'https://remaxnova.com/',\r\n\r\n        // url to your geometry server.\r\n        geometryService: {\r\n            url: 'https://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer',\r\n        },\r\n\r\n        searchBounds: [[43.530209, -66.431514], [47.477872, -59.647943]],\r\n\r\n        highlightedListingColor: {\r\n            color: '#34DDDD',\r\n            weight: 3,\r\n        },\r\n\r\n        mapDefault: {\r\n            basemap: 'Streets',\r\n            center: [44.662143, -63.597600],\r\n            zoom: 13,\r\n            maxBounds: [[42.4, -67.6], [47.7, -58.4]],\r\n            minZoom: 7,\r\n            maxZoom: 19,\r\n        },\r\n        locationTimeout: 10000, // ms\r\n        locationZoom: 15,\r\n        locationColor: '#DC1C2E',\r\n        locationSize: 10,\r\n        mapBoxToken: 'pk.eyJ1Ijoia3Bvd2VyIiwiYSI6ImNrZ3p0bGltZjE2djkydG4wd2tkOXBpemYifQ.XsGmMaDmBa7E1jCGVI4Z5A',\r\n        basemapLayers: {\r\n            MapBox: {\r\n                name: 'MapBox',\r\n                label: 'Streets (New!)',\r\n                options: {\r\n                    maxZoom: 19,\r\n                },\r\n                // style: 'mapbox://styles/mapbox/light-v10',\r\n                style: 'mapbox://styles/mapbox/streets-v11',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/mapbox-streets.png',\r\n                active: false,\r\n            },\r\n            Streets: {\r\n                name: 'Streets',\r\n                label: 'Streets',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/street.jpg',\r\n                active: false,\r\n            },\r\n            Gray: {\r\n                name: 'Gray',\r\n                label: 'Gray',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/gray.jpg',\r\n                active: false,\r\n            },\r\n            Topographic: {\r\n                name: 'Topographic',\r\n                label: 'Topographic',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/topo.jpg',\r\n                active: false,\r\n            },\r\n            Imagery_Bing: {\r\n                name: 'Imagery_Bing',\r\n                label: 'Satellite (Bing)',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/sat.jpg',\r\n                active: false,\r\n                key: 'Ar1wtMyCAMh4mqjglcASyG6_62YgoaLX4s2nBdxOO4fT7xB66HWWi4Db6J_t7TEy',\r\n                type: 'Aerial',\r\n            },\r\n            Imagery: {\r\n                name: 'Imagery',\r\n                label: 'Satellite (ArcGIS)',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/sat.jpg',\r\n                active: false,\r\n            },\r\n            Imagery_GeoNova: {\r\n                name: 'Imagery_GeoNova',\r\n                url: 'https://nsgiwa.novascotia.ca/arcgis/rest/services/BASE/BASE_NSODB_10k_WM84/MapServer',\r\n                options: {\r\n                    maxZoom: 19,\r\n                },\r\n                label: 'Satellite (GeoNova)',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/sat.jpg',\r\n                active: false,\r\n            },\r\n            OSM: {\r\n                name: 'OSM',\r\n                urlTemplate: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\r\n                options: {\r\n                    maxZoom: 19,\r\n                },\r\n                label: 'Open Street Map',\r\n                thumbnail: 'https://data.remaxnova.com/propimages/map/layers/osm.jpg',\r\n                active: false,\r\n            },\r\n        },\r\n\r\n        ParcelVectorTileLayer: {\r\n            name: 'Parcel Vector Tiles',\r\n            url: 'https://remaxnova-api.azurewebsites.net/api/featureservice/parcels_tiles',\r\n            styleNormal: {\r\n                // see mapbox style spec https://docs.mapbox.com/mapbox-gl-js/style-spec/root\r\n                version: 8,\r\n                sources: {\r\n                    esri: {\r\n                        type: 'vector',\r\n                        tiles: [\r\n                            'https://remaxnova-api.azurewebsites.net/api/featureservice/parcels_tiles/tile/{z}/{y}/{x}.pbf',\r\n                        ],\r\n                    },\r\n                },\r\n                // layer information comes from this esri URL (un-parsable by MapBoxGL)\r\n                // https://tiles.arcgis.com/tiles/mTfTWCbg7Pb330oT/arcgis/rest/services/parcels_nov_2019/VectorTileServer/resources/styles\r\n                layers: [\r\n                    {\r\n                        'id': 'level 12-15',\r\n                        'source': 'esri',\r\n                        'source-layer': 'level 12-15',\r\n                        'type': 'line',\r\n                        'minzoom': 14,\r\n                        'maxzoom': 16,\r\n                        'layout': {\r\n                            'line-cap': 'round',\r\n                            'line-join': 'round',\r\n                        },\r\n                        'paint': {\r\n                            'line-color': 'rgba(52,52,52,0.5)',\r\n                            'line-width': 0.266667,\r\n                        },\r\n                    }, {\r\n                        'id': 'level 17-19',\r\n                        'type': 'line',\r\n                        'source': 'esri',\r\n                        'source-layer': 'level 17-19',\r\n                        'minzoom': 16,\r\n                        'layout': {\r\n                            'line-cap': 'round',\r\n                            'line-join': 'round',\r\n                        },\r\n                        'paint': {\r\n                            'line-color': 'rgba(52,52,52,0.8)',\r\n                            'line-width': 0.666667,\r\n                        },\r\n                    },\r\n                ],\r\n            },\r\n            styleWhite: {\r\n                // see mapbox style spec https://docs.mapbox.com/mapbox-gl-js/style-spec/root\r\n                version: 8,\r\n                sources: {\r\n                    esri: {\r\n                        type: 'vector',\r\n                        tiles: [\r\n                            'https://remaxnova-api.azurewebsites.net/api/featureservice/parcels_tiles/tile/{z}/{y}/{x}.pbf',\r\n                        ],\r\n                    },\r\n                },\r\n                // layer information comes from this esri URL (un-parsable by MapBoxGL)\r\n                // https://tiles.arcgis.com/tiles/mTfTWCbg7Pb330oT/arcgis/rest/services/parcels_nov_2019/VectorTileServer/resources/styles\r\n                layers: [\r\n                    {\r\n                        'id': 'level 12-15',\r\n                        'source': 'esri',\r\n                        'source-layer': 'level 12-15',\r\n                        'type': 'line',\r\n                        'minzoom': 14,\r\n                        'maxzoom': 16,\r\n                        'layout': {\r\n                            'line-cap': 'round',\r\n                            'line-join': 'round',\r\n                        },\r\n                        'paint': {\r\n                            'line-color': 'rgba(255,255,255,0.5)',\r\n                            'line-width': 0.266667,\r\n                        },\r\n                    }, {\r\n                        'id': 'level 17-19',\r\n                        'type': 'line',\r\n                        'source': 'esri',\r\n                        'source-layer': 'level 17-19',\r\n                        'minzoom': 16,\r\n                        'layout': {\r\n                            'line-cap': 'round',\r\n                            'line-join': 'round',\r\n                        },\r\n                        'paint': {\r\n                            'line-color': 'rgba(255,255,255,0.8)',\r\n                            'line-width': 0.666667,\r\n                        },\r\n                    },\r\n                ],\r\n            },\r\n        },\r\n\r\n        DALayer: {\r\n            name: 'Disemination Areas',\r\n            url: 'https://services2.arcgis.com/mTfTWCbg7Pb330oT/arcgis/rest/services/DisseminationAreas/FeatureServer/0',\r\n        },\r\n\r\n        ParcelsLayer: {\r\n            name: 'Parcels',\r\n            url: 'https://remaxnova-api.azurewebsites.net/api/featureservice/parcels_ro',\r\n            minZoom: 19,\r\n            maxZoom: 20,\r\n            definitionExpression: '',\r\n            simplifyFactor: 0.80,\r\n            precision: 5,\r\n        },\r\n\r\n        ListingsPointLayer: {\r\n            name: 'Parcel Listing Points',\r\n            url: 'https://remaxnova-api.azurewebsites.net/api/featureservice/ListingPnt_ro_ex',\r\n            url_in: 'https://remaxnova-api.azurewebsites.net/api/featureservice/ListingPnt_ro_ex',\r\n            minZoom: 7,\r\n            maxZoom: 20,\r\n            precision: 5,\r\n            outFields: ['*'],\r\n            definitionExpression: `st like '%1%' or st like '%3%'`,\r\n            thumbnail: 'https://data.remaxnova.com/propimages/map/layers/listings.jpg',\r\n            label: 'Listing Points',\r\n            tooltip: 'Price labels for active/sold lisings',\r\n            active: true,\r\n            isVisible: true,\r\n        },\r\n\r\n        HeatmapLayer: {\r\n            name: 'heatmap',\r\n            thumbnail: 'https://data.remaxnova.com/propimages/map/layers/heatmap.jpg',\r\n            label: 'SOLD Heatmap',\r\n            tooltip: 'Properties SOLD in the last year',\r\n            active: false,\r\n        },\r\n\r\n        ListingsPolygonLayer: {\r\n            name: 'Parcel Listing Polygons',\r\n            url: 'https://remaxnova-api.azurewebsites.net/api/featureservice/ListingPly_ro_ex',\r\n            url_in: 'https://remaxnova-api.azurewebsites.net/api/featureservice/ListingPly_ro_ex',\r\n            minZoom: 15,\r\n            maxZoom: 20,\r\n            // DO NOT remove OBJECTID\r\n            outFields: ['OBJECTID', 'sid', 'mli', 'mlan', 'tlan', 'lls', 'bdmn', 'bhmn', 'st', 'fd', 'ld', 'ad', 'cm', 'pc', 'lpmn', 'sp', 'ml', 'md', 'cl', 'pi', 'pid', 'br'],\r\n            definitionExpression: '',\r\n            simplifyFactor: 0.65,\r\n            precision: 5,\r\n        },\r\n\r\n        CrimeRecordsTable: {\r\n            name: 'Crime Records Table',\r\n            url: 'https://services2.arcgis.com/mTfTWCbg7Pb330oT/ArcGIS/rest/services/HRM_Crimes/FeatureServer/1',\r\n        },\r\n\r\n        CrimeRecordsLayer: {\r\n            name: 'Crime Records Layer',\r\n            url: 'https://services2.arcgis.com/mTfTWCbg7Pb330oT/ArcGIS/rest/services/HRM_Crimes_ro/FeatureServer/0',\r\n            thumbnail: 'https://data.remaxnova.com/propimages/map/pins/crime_legend.png',\r\n            label: 'HRM Crime',\r\n            tooltip: 'Crimes from Nov 6, 2017 - present. Updated weekly. The information about the event itself is accurate; however the location information is purposefully generic. The location of the crime points is generalized using a methodology that places it at the mid-point of the nearest street segment. Contains information licenced under the Open Government Licence—Halifax (https://www.halifax.ca/home/open-data/open-data-license)',\r\n            active: false,\r\n        },\r\n\r\n        BuildingPermitLayer: {\r\n            name: 'Permit Layer',\r\n            minZoom: 17,\r\n            maxZoom: 20,\r\n            url: 'https://services2.arcgis.com/mTfTWCbg7Pb330oT/arcgis/rest/services/HRM_Permits_ro/FeatureServer/0',\r\n        },\r\n\r\n        SchoolCatchmentLayer: {\r\n            name: 'School Layer',\r\n            url: 'https://services2.arcgis.com/mTfTWCbg7Pb330oT/ArcGIS/rest/services/Schools/FeatureServer/1',\r\n        },\r\n\r\n        CrownLandLayer: {\r\n            name: 'Crown Land Layer',\r\n            url: 'https://nsgiwa.novascotia.ca/arcgis/rest/services/PLAN/PLANCrownLandsWM84V1/MapServer/0',\r\n            minZoom: 14,\r\n            maxZoom: 20,\r\n            tooltip: 'Crown Land within Nova Scotia',\r\n            label: 'Crown Land',\r\n            thumbnail: 'https://data.remaxnova.com/propimages/map/layers/crownlands.png',\r\n            active: false,\r\n        },\r\n        ForeignBuyerBanLayer: {\r\n            name: 'Foreign Buyer Ban Layer',\r\n            url: 'https://data.remaxnova.com/map/foreign-buyers.json',\r\n            minZoom: 8,\r\n            maxZoom: 20,\r\n            tooltip: 'Foreign Buyer Ban Areas',\r\n            label: 'Foreign Buyer Ban',\r\n            thumbnail: 'https://data.remaxnova.com/propimages/map/layers/foreign-buyer.png',\r\n            active: false,\r\n        },\r\n\r\n        FilterOptions: {\r\n            PriceNoMinVal: 0,\r\n            PriceNoMaxVal: 99999999,\r\n            PriceMinOptions: [\r\n                { step: 0, value: 0, label: 'No Min' },\r\n                { step: 1, value: 25000, label: '$25K' },\r\n                { step: 2, value: 50000, label: '$50K' },\r\n                { step: 3, value: 75000, label: '$75K' },\r\n                { step: 4, value: 100000, label: '$100K' },\r\n                { step: 5, value: 125000, label: '$125K' },\r\n                { step: 6, value: 150000, label: '$150K' },\r\n                { step: 7, value: 175000, label: '$175K' },\r\n                { step: 8, value: 200000, label: '$200K' },\r\n                { step: 9, value: 225000, label: '$225K' },\r\n                { step: 10, value: 250000, label: '$250K' },\r\n                { step: 11, value: 275000, label: '$275K' },\r\n                { step: 12, value: 300000, label: '$300K' },\r\n                { step: 13, value: 325000, label: '$325K' },\r\n                { step: 14, value: 350000, label: '$350K' },\r\n                { step: 15, value: 375000, label: '$375K' },\r\n                { step: 16, value: 400000, label: '$400K' },\r\n                { step: 17, value: 425000, label: '$425K' },\r\n                { step: 18, value: 450000, label: '$450K' },\r\n                { step: 19, value: 475000, label: '$475K' },\r\n                { step: 20, value: 500000, label: '$500K' },\r\n                { step: 21, value: 550000, label: '$550K' },\r\n                { step: 22, value: 600000, label: '$600K' },\r\n                { step: 23, value: 650000, label: '$650K' },\r\n                { step: 24, value: 700000, label: '$700K' },\r\n                { step: 25, value: 750000, label: '$750K' },\r\n                { step: 26, value: 800000, label: '$800K' },\r\n                { step: 27, value: 850000, label: '$850K' },\r\n                { step: 28, value: 900000, label: '$900K' },\r\n                { step: 29, value: 950000, label: '$950K' },\r\n                { step: 30, value: 1000000, label: '$1M' },\r\n                { step: 31, value: 1500000, label: '$1.5M' },\r\n                { step: 32, value: 2000000, label: '$2M' },\r\n                { step: 33, value: 2500000, label: '$2.5M' },\r\n                { step: 34, value: 3000000, label: '$3M' },\r\n                { step: 35, value: 3500000, label: '$3.5M' },\r\n                { step: 36, value: 4000000, label: '$4M' },\r\n                { step: 37, value: 4500000, label: '$4.5M' },\r\n                { step: 38, value: 5000000, label: '$5M' },\r\n                { step: 39, value: 5500000, label: '$5.5M' },\r\n                { step: 40, value: 6000000, label: '$6M' },\r\n                { step: 41, value: 6500000, label: '$6.5M' },\r\n                { step: 42, value: 7000000, label: '$7M' },\r\n                { step: 43, value: 7500000, label: '$7.5M' },\r\n                { step: 44, value: 8000000, label: '$8M' },\r\n                { step: 45, value: 8500000, label: '$8.5M' },\r\n                { step: 46, value: 9000000, label: '$9M' },\r\n                { step: 47, value: 9500000, label: '$9.5M' },\r\n                { step: 48, value: 10000000, label: '$10M' },\r\n                { step: 49, value: 99999999, label: 'No Max' },\r\n            ],\r\n            PriceMaxOptions: [\r\n                { step: 0, value: 0, label: 'No Min' },\r\n                { step: 1, value: 25000, label: '$25K' },\r\n                { step: 2, value: 50000, label: '$50K' },\r\n                { step: 3, value: 75000, label: '$75K' },\r\n                { step: 4, value: 100000, label: '$100K' },\r\n                { step: 5, value: 125000, label: '$125K' },\r\n                { step: 6, value: 150000, label: '$150K' },\r\n                { step: 7, value: 175000, label: '$175K' },\r\n                { step: 8, value: 200000, label: '$200K' },\r\n                { step: 9, value: 225000, label: '$225K' },\r\n                { step: 10, value: 250000, label: '$250K' },\r\n                { step: 11, value: 275000, label: '$275K' },\r\n                { step: 12, value: 300000, label: '$300K' },\r\n                { step: 13, value: 325000, label: '$325K' },\r\n                { step: 14, value: 350000, label: '$350K' },\r\n                { step: 15, value: 375000, label: '$375K' },\r\n                { step: 16, value: 400000, label: '$400K' },\r\n                { step: 17, value: 425000, label: '$425K' },\r\n                { step: 18, value: 450000, label: '$450K' },\r\n                { step: 19, value: 475000, label: '$475K' },\r\n                { step: 20, value: 500000, label: '$500K' },\r\n                { step: 21, value: 550000, label: '$550K' },\r\n                { step: 22, value: 600000, label: '$600K' },\r\n                { step: 23, value: 650000, label: '$650K' },\r\n                { step: 24, value: 700000, label: '$700K' },\r\n                { step: 25, value: 750000, label: '$750K' },\r\n                { step: 26, value: 800000, label: '$800K' },\r\n                { step: 27, value: 850000, label: '$850K' },\r\n                { step: 28, value: 900000, label: '$900K' },\r\n                { step: 29, value: 950000, label: '$950K' },\r\n                { step: 30, value: 1000000, label: '$1M' },\r\n                { step: 31, value: 1500000, label: '$1.5M' },\r\n                { step: 32, value: 2000000, label: '$2M' },\r\n                { step: 33, value: 2500000, label: '$2.5M' },\r\n                { step: 34, value: 3000000, label: '$3M' },\r\n                { step: 35, value: 3500000, label: '$3.5M' },\r\n                { step: 36, value: 4000000, label: '$4M' },\r\n                { step: 37, value: 4500000, label: '$4.5M' },\r\n                { step: 38, value: 5000000, label: '$5M' },\r\n                { step: 39, value: 5500000, label: '$5.5M' },\r\n                { step: 40, value: 6000000, label: '$6M' },\r\n                { step: 41, value: 6500000, label: '$6.5M' },\r\n                { step: 42, value: 7000000, label: '$7M' },\r\n                { step: 43, value: 7500000, label: '$7.5M' },\r\n                { step: 44, value: 8000000, label: '$8M' },\r\n                { step: 45, value: 8500000, label: '$8.5M' },\r\n                { step: 46, value: 9000000, label: '$9M' },\r\n                { step: 47, value: 9500000, label: '$9.5M' },\r\n                { step: 48, value: 10000000, label: '$10M' },\r\n                { step: 49, value: 99999999, label: 'No Max' },\r\n            ],\r\n\r\n            BedNoMinVal: 0,\r\n            BedNoMaxVal: 99,\r\n            BedMinOptions: [\r\n                { value: 0, label: 'No Min' },\r\n                { value: 1, label: '1' },\r\n                { value: 2, label: '2' },\r\n                { value: 3, label: '3' },\r\n                { value: 4, label: '4' },\r\n                { value: 5, label: '5' },\r\n                { value: 6, label: '6' },\r\n                { value: 7, label: '7' },\r\n                { value: 8, label: '8' },\r\n                { value: 9, label: '9' },\r\n                { value: 10, label: '10' },\r\n            ],\r\n            BedMaxOptions: [\r\n                { value: 99, label: 'No Max' },\r\n                { value: 1, label: '1' },\r\n                { value: 2, label: '2' },\r\n                { value: 3, label: '3' },\r\n                { value: 4, label: '4' },\r\n                { value: 5, label: '5' },\r\n                { value: 6, label: '6' },\r\n                { value: 7, label: '7' },\r\n                { value: 8, label: '8' },\r\n                { value: 9, label: '9' },\r\n                { value: 10, label: '10' },\r\n            ],\r\n            BathNoMinVal: 0,\r\n            BathNoMaxVal: 99,\r\n            BathMinOptions: [\r\n                { value: 0, label: 'No Min' },\r\n                { value: 1, label: '1' },\r\n                { value: 2, label: '2' },\r\n                { value: 3, label: '3' },\r\n                { value: 4, label: '4' },\r\n                { value: 5, label: '5' },\r\n                { value: 6, label: '6' },\r\n                { value: 7, label: '7' },\r\n                { value: 8, label: '8' },\r\n                { value: 9, label: '9' },\r\n                { value: 10, label: '10' },\r\n            ],\r\n            BathMaxOptions: [\r\n                { value: 99, label: 'No Max' },\r\n                { value: 1, label: '1' },\r\n                { value: 2, label: '2' },\r\n                { value: 3, label: '3' },\r\n                { value: 4, label: '4' },\r\n                { value: 5, label: '5' },\r\n                { value: 6, label: '6' },\r\n                { value: 7, label: '7' },\r\n                { value: 8, label: '8' },\r\n                { value: 9, label: '9' },\r\n                { value: 10, label: '10' },\r\n            ],\r\n            ClassOptions: [\r\n                { value: '1', label: 'Residential' },\r\n                { value: '2', label: 'Commercial' },\r\n                { value: '3', label: 'Multi-Unit' },\r\n                { value: '4', label: 'Farm' },\r\n                { value: '5', label: 'Vacant Land' },\r\n            ],\r\n            ResidentialTypeOptions: [\r\n                { value: '0', label: 'Single Family' },\r\n                { value: '1', label: 'Condominium' },\r\n                { value: '2', label: 'Mobile / Mini' },\r\n                { value: '3', label: 'Cottage / Rec. Properties' },\r\n                { value: '4', label: 'Duplex' },\r\n                { value: '5', label: 'Other' },\r\n                { value: '25', label: 'Co-Op' },\r\n                { value: '28', label: 'Apartment' },\r\n            ],\r\n            CommercialTypeOptions: [\r\n                { value: '6', label: 'Commercial Retail' },\r\n                { value: '7', label: 'Commercial Condo' },\r\n                { value: '8', label: 'Industrial' },\r\n                { value: '9', label: 'Institutional' },\r\n                { value: '10', label: 'Other' },\r\n                { value: '24', label: 'Business Only' },\r\n                { value: '26', label: 'Office' },\r\n                { value: '27', label: 'Business' },\r\n            ],\r\n            MultiTypeOptions: [\r\n                { value: '11', label: 'Duplex' },\r\n                { value: '12', label: 'Triplex' },\r\n                { value: '13', label: 'Fourplex' },\r\n                { value: '14', label: '5-8 Units' },\r\n                { value: '17', label: 'Other' },\r\n                { value: '15', label: '9-12 Units' },\r\n                { value: '16', label: 'Over 12 Units' },\r\n            ],\r\n            FarmTypeOptions: [\r\n                { value: '18', label: 'No Building Onsite' },\r\n                { value: '19', label: 'Single Family' },\r\n                { value: '20', label: 'Mobile/Mini' },\r\n                { value: '21', label: 'Other' },\r\n            ],\r\n            VacantLandTypeOptions: [\r\n                { value: '22', label: 'Vacant Lot(s)' },\r\n                { value: '23', label: 'Acreage' },\r\n            ],\r\n            StyleOptions: [\r\n                { value: 'BARELAND', label: 'Bareland' },\r\n                { value: 'CAMP', label: 'Camp' },\r\n                { value: 'CAPRT', label: 'Condo Apartment' },\r\n                { value: 'CTWNH', label: 'Condo Townhouse' },\r\n                { value: 'DTCHD', label: 'Detached' },\r\n                { value: 'FREEHOLD', label: 'Freehold' },\r\n                { value: 'LEASEHOLD', label: 'Leasehold' },\r\n                { value: 'LINK', label: 'Link' },\r\n                { value: 'MINI', label: 'Mini' },\r\n                { value: 'MOBILE', label: 'Mobile' },\r\n                { value: 'None', label: 'None' },\r\n                { value: 'OTHER', label: 'Other' },\r\n                { value: 'RECREATNAL', label: 'Recreational' },\r\n                { value: 'RESIDENTL', label: 'Residential' },\r\n                { value: 'SDTCH', label: 'Semi-Detached' },\r\n                { value: 'TWNHS', label: 'Townhouse' },\r\n                { value: 'APARTMENT', label: 'Apartment' },\r\n                { value: 'OVER', label: 'Over-Under' },\r\n                { value: 'SBS', label: 'Side By Side' },\r\n                { value: 'BB', label: 'B & B' },\r\n            ],\r\n            HeatTypeOptions: [\r\n                { label: 'Window Cooling', value: '1436' },\r\n                { label: 'None', value: '105' },\r\n                { label: 'Other', value: '104' },\r\n                { label: 'Stove', value: '103' },\r\n                { label: 'Space Heater', value: '102' },\r\n                { label: 'Radiator', value: '1278' },\r\n                { label: 'Radiant', value: '101' },\r\n                { label: 'In Floor', value: '100' },\r\n                { label: 'Hot Water', value: '99' },\r\n                { label: 'Heat Pump -Ductless', value: '98' },\r\n                { label: 'Heat Pump -Ducted', value: '97' },\r\n                { label: 'Furnace', value: '95' },\r\n                { label: 'Forced Air', value: '94' },\r\n                { label: 'Fireplace', value: '93' },\r\n                { label: 'ETS (Elec Therm Storage)', value: '92' },\r\n                { label: 'Ductless Cooling', value: '1435' },\r\n                { label: 'Ducted Cooling', value: '91' },\r\n                { label: 'Baseboard', value: '90' },\r\n                { label: 'None', value: '460' },\r\n                { label: 'Other', value: '459' },\r\n                { label: 'Stove', value: '458' },\r\n                { label: 'Space Heater', value: '457' },\r\n                { label: 'Radiator', value: '1279' },\r\n                { label: 'Radiant', value: '456' },\r\n                { label: 'In Floor', value: '455' },\r\n                { label: 'Hot Water', value: '454' },\r\n                { label: 'Heat Pump -Ductless', value: '453' },\r\n                { label: 'Heat Pump -Ducted', value: '452' },\r\n                { label: 'Furnace', value: '450' },\r\n                { label: 'Forced Air', value: '449' },\r\n                { label: 'Fireplace', value: '448' },\r\n                { label: 'ETS (Elec Therm Storage)', value: '447' },\r\n                { label: 'Central Air', value: '446' },\r\n                { label: 'Baseboard', value: '445' },\r\n                { label: 'Window Cooling', value: '1442' },\r\n                { label: 'None', value: '955' },\r\n                { label: 'Other', value: '954' },\r\n                { label: 'Stove', value: '953' },\r\n                { label: 'Space Heater', value: '952' },\r\n                { label: 'Radiator', value: '1281' },\r\n                { label: 'Radiant', value: '951' },\r\n                { label: 'In Floor', value: '950' },\r\n                { label: 'Hot Water', value: '949' },\r\n                { label: 'Heat Pump -Ductless', value: '948' },\r\n                { label: 'Heat Pump -Ducted', value: '947' },\r\n                { label: 'Furnace', value: '945' },\r\n                { label: 'Forced Air', value: '944' },\r\n                { label: 'Fireplace', value: '943' },\r\n                { label: 'ETS (Elec Therm Storage)', value: '942' },\r\n                { label: 'Ductless Cooling', value: '1443' },\r\n                { label: 'Ducted Cooling', value: '941' },\r\n                { label: 'Baseboard', value: '940' },\r\n                { label: 'Window Cooling', value: '1439' },\r\n                { label: 'None', value: '632' },\r\n                { label: 'Other', value: '631' },\r\n                { label: 'Stove', value: '630' },\r\n                { label: 'Space Heater', value: '629' },\r\n                { label: 'Radiator', value: '1280' },\r\n                { label: 'Radiant', value: '628' },\r\n                { label: 'In Floor', value: '627' },\r\n                { label: 'Hot Water', value: '626' },\r\n                { label: 'Heat Pump -Ductless', value: '625' },\r\n                { label: 'Heat Pump -Ducted', value: '624' },\r\n                { label: 'Furnace', value: '622' },\r\n                { label: 'Forced Air', value: '621' },\r\n                { label: 'Fireplace', value: '620' },\r\n                { label: 'ETS (Elec Therm Storage)', value: '619' },\r\n                { label: 'Ductless Cooling', value: '1441' },\r\n                { label: 'Ducted Cooling', value: '618' },\r\n                { label: 'Baseboard', value: '617' },\r\n            ],\r\n            StatusOptions: [\r\n                { label: '<span class=\"selectFORSALE\">For Sale</span>', value: '1' },\r\n                { label: '<span class=\"selectSOLD\">Sold</span> (past 6 months)', value: '2' },\r\n                { label: '<span class=\"selectPENDING\">Pending</span>', value: '3' },\r\n            ],\r\n            MlaNoMinVal: 0,\r\n            MlaNoMaxVal: 99999,\r\n            MlaMinOptions: [\r\n                { value: '0', label: 'No min' },\r\n                { value: '500', label: '500' },\r\n                { value: '750', label: '750' },\r\n                { value: '1000', label: '1,000' },\r\n                { value: '1250', label: '1,250' },\r\n                { value: '1500', label: '1,500' },\r\n                { value: '1750', label: '1,750' },\r\n                { value: '2000', label: '2,000' },\r\n                { value: '2250', label: '2,250' },\r\n                { value: '2500', label: '2,500' },\r\n                { value: '2750', label: '2,750' },\r\n                { value: '3000', label: '3,000' },\r\n                { value: '3500', label: '3,500' },\r\n                { value: '4000', label: '4,000' },\r\n                { value: '5000', label: '5,000' },\r\n                { value: '7500', label: '7,500' },\r\n            ],\r\n            MlaMaxOptions: [\r\n                { value: '99999', label: 'No Max' },\r\n                { value: '500', label: '500' },\r\n                { value: '750', label: '750' },\r\n                { value: '1000', label: '1,000' },\r\n                { value: '1250', label: '1,250' },\r\n                { value: '1500', label: '1,500' },\r\n                { value: '1750', label: '1,750' },\r\n                { value: '2000', label: '2,000' },\r\n                { value: '2250', label: '2,250' },\r\n                { value: '2500', label: '2,500' },\r\n                { value: '2750', label: '2,750' },\r\n                { value: '3000', label: '3,000' },\r\n                { value: '3500', label: '3,500' },\r\n                { value: '4000', label: '4,000' },\r\n                { value: '5000', label: '5,000' },\r\n                { value: '7500', label: '7,500' },\r\n            ],\r\n            TlaNoMinVal: 0,\r\n            TlaNoMaxVal: 99999,\r\n            TlaMinOptions: [\r\n                { value: '0', label: 'No min' },\r\n                { value: '500', label: '500' },\r\n                { value: '750', label: '750' },\r\n                { value: '1000', label: '1,000' },\r\n                { value: '1250', label: '1,250' },\r\n                { value: '1500', label: '1,500' },\r\n                { value: '1750', label: '1,750' },\r\n                { value: '2000', label: '2,000' },\r\n                { value: '2250', label: '2,250' },\r\n                { value: '2500', label: '2,500' },\r\n                { value: '2750', label: '2,750' },\r\n                { value: '3000', label: '3,000' },\r\n                { value: '3500', label: '3,500' },\r\n                { value: '4000', label: '4,000' },\r\n                { value: '5000', label: '5,000' },\r\n                { value: '7500', label: '7,500' },\r\n            ],\r\n            TlaMaxOptions: [\r\n                { value: '99999', label: 'No Max' },\r\n                { value: '500', label: '500' },\r\n                { value: '750', label: '750' },\r\n                { value: '1000', label: '1,000' },\r\n                { value: '1250', label: '1,250' },\r\n                { value: '1500', label: '1,500' },\r\n                { value: '1750', label: '1,750' },\r\n                { value: '2000', label: '2,000' },\r\n                { value: '2250', label: '2,250' },\r\n                { value: '2500', label: '2,500' },\r\n                { value: '2750', label: '2,750' },\r\n                { value: '3000', label: '3,000' },\r\n                { value: '3500', label: '3,500' },\r\n                { value: '4000', label: '4,000' },\r\n                { value: '5000', label: '5,000' },\r\n                { value: '7500', label: '7,500' },\r\n            ],\r\n            AgeNoMinVal: 0,\r\n            AgeNoMaxVal: 999,\r\n            AgeMinOptions: [\r\n                { value: '0', label: 'No Min' },\r\n                { value: '1', label: '1' },\r\n                { value: '2', label: '2' },\r\n                { value: '3', label: '3' },\r\n                { value: '5', label: '5' },\r\n                { value: '10', label: '10' },\r\n                { value: '15', label: '15' },\r\n                { value: '20', label: '20' },\r\n                { value: '25', label: '25' },\r\n                { value: '35', label: '35' },\r\n                { value: '45', label: '45' },\r\n                { value: '55', label: '55' },\r\n                { value: '65', label: '65' },\r\n                { value: '75', label: '75' },\r\n                { value: '100', label: '100' },\r\n            ],\r\n            AgeMaxOptions: [\r\n                { value: '999', label: 'No Max' },\r\n                { value: '1', label: '1' },\r\n                { value: '2', label: '2' },\r\n                { value: '3', label: '3' },\r\n                { value: '5', label: '5' },\r\n                { value: '10', label: '10' },\r\n                { value: '15', label: '15' },\r\n                { value: '20', label: '20' },\r\n                { value: '25', label: '25' },\r\n                { value: '35', label: '35' },\r\n                { value: '45', label: '45' },\r\n                { value: '55', label: '55' },\r\n                { value: '65', label: '65' },\r\n                { value: '75', label: '75' },\r\n                { value: '100', label: '100' },\r\n            ],\r\n            LotSizeNoMinVal: 0,\r\n            LotSizeNoMaxVal: 99999999,\r\n            LotSizeMinOptions: [\r\n                { step: 0, value: 0, label: 'No Min' },\r\n                { step: 1, value: 2000, label: '2,000 sq ft' },\r\n                { step: 2, value: 4500, label: '4,500 sq ft' },\r\n                { step: 3, value: 6500, label: '6,500 sq ft' },\r\n                { step: 4, value: 8000, label: '8,000 sq ft' },\r\n                { step: 5, value: 10890, label: '10,890 sq ft / .25 acres' },\r\n                { step: 6, value: 21780, label: '21,780 sq ft / .5 acres' },\r\n                { step: 7, value: 43560, label: '1 acre' },\r\n                { step: 8, value: 87120, label: '2 acres' },\r\n                { step: 9, value: 130680, label: '3 acres' },\r\n                { step: 10, value: 174240, label: '4 acres' },\r\n                { step: 11, value: 217800, label: '5 acres' },\r\n                { step: 12, value: 435600, label: '10 acres' },\r\n                { step: 13, value: 1742400, label: '40 acres' },\r\n                { step: 14, value: 4356000, label: '100 acres' },\r\n                { step: 15, value: 99999999, label: 'No Max' },\r\n            ],\r\n            LotSizeMaxOptions: [\r\n                { step: 0, value: 0, label: 'No Min' },\r\n                { step: 1, value: 2000, label: '2,000 sq ft' },\r\n                { step: 2, value: 4500, label: '4,500 sq ft' },\r\n                { step: 3, value: 6500, label: '6,500 sq ft' },\r\n                { step: 4, value: 8000, label: '8,000 sq ft' },\r\n                { step: 5, value: 10890, label: '10,890 sq ft / .25 acres' },\r\n                { step: 6, value: 21780, label: '21,780 sq ft / .5 acres' },\r\n                { step: 7, value: 43560, label: '1 acre' },\r\n                { step: 8, value: 87120, label: '2 acres' },\r\n                { step: 9, value: 130680, label: '3 acres' },\r\n                { step: 10, value: 174240, label: '4 acres' },\r\n                { step: 11, value: 217800, label: '5 acres' },\r\n                { step: 12, value: 435600, label: '10 acres' },\r\n                { step: 13, value: 1742400, label: '40 acres' },\r\n                { step: 14, value: 4356000, label: '100 acress' },\r\n                { step: 15, value: 99999999, label: 'No Max' },\r\n            ],\r\n\r\n            SchoolOptions: [\r\n                { label: '- no school selected -', value: '0' },\r\n                { label: 'A. J. Smeltzer Junior High School (English, Grade 7 - 9)', value: '175' },\r\n                { label: 'A. J. Smeltzer Junior High School (Late French, Grade 7 - 9)', value: '176' },\r\n                { label: 'Admiral Westphal Elementary School (English, Grade P - 6)', value: '73' },\r\n                { label: 'Alderney School (English, Grade P - 6)', value: '74' },\r\n                { label: 'Ash-Lee Jefferson Elementary School (Early French, Grade P - 6)', value: '131' },\r\n                { label: 'Ash-Lee Jefferson Elementary School (English, Grade P - 6)', value: '132' },\r\n                { label: 'Astral Drive Elementary School (English, Grade P - 6)', value: '37' },\r\n                { label: 'Astral Drive Junior High School (English, Grade 7 - 9)', value: '33' },\r\n                { label: 'Astral Drive Junior High School (Late French, Grade 7 - 9)', value: '34' },\r\n                { label: 'Atlantic Memorial - Terence Bay Elementary (Atlantic Memorial) School (English, Grade P - 6)', value: '213' },\r\n                { label: 'Atlantic Memorial - Terence Bay Elementary (Terence Bay) School (English, Grade P - 6)', value: '202' },\r\n                { label: 'Atlantic View School (English, Grade P - 6)', value: '17' },\r\n                { label: 'Auburn Drive High School (Early French, Grade 10 - 12)', value: '38' },\r\n                { label: 'Auburn Drive High School (English, Grade 10 - 12)', value: '41' },\r\n                { label: 'Auburn Drive High School (Late French, Grade 10 - 12)', value: '43' },\r\n                { label: 'Basinview Drive Community School (English, Grade P - 6)', value: '183' },\r\n                { label: 'Beaver Bank-Kinsac Elementary School (English, Grade P - 6)', value: '189' },\r\n                { label: 'Beaver Bank-Monarch Drive Elementary School (English, Grade P - 6)', value: '184' },\r\n                { label: 'Bedford South School (English, Grade P - 6)', value: '182' },\r\n                { label: 'Beechville-Lakeside-Timberlea Jr School (Early French, Grade P - 2)', value: '209' },\r\n                { label: 'Beechville-Lakeside-Timberlea Jr School (English, Grade P - 2)', value: '210' },\r\n                { label: 'Beechville-Lakeside-Timberlea Sr School (Early French, Grade 3 - 6)', value: '207' },\r\n                { label: 'Beechville-Lakeside-Timberlea Sr School (English, Grade 3 - 6)', value: '208' },\r\n                { label: 'Bel Ayr School (English, Grade P - 6)', value: '58' },\r\n                { label: 'Bell Park Academic Centre (Early French, Grade P - 6)', value: '18' },\r\n                { label: 'Bell Park Academic Centre (English, Grade P - 6)', value: '19' },\r\n                { label: 'Bicentennial School (English, Grade 7 - 9)', value: '84' },\r\n                { label: 'Bicentennial School (English, Grade P - 6)', value: '83' },\r\n                { label: 'Brookhouse School (English, Grade P - 6)', value: '66' },\r\n                { label: 'Brookside Junior High School (English, Grade 7 - 9)', value: '205' },\r\n                { label: 'Brookside Junior High School (Late French, Grade 7 - 9)', value: '206' },\r\n                { label: 'Burton Ettinger School (Early French, Grade P - 6)', value: '145' },\r\n                { label: 'Burton Ettinger School (English, Grade P - 6)', value: '146' },\r\n                { label: 'Caldwell Road Elementary School (English, Grade P - 6)', value: '52' },\r\n                { label: 'Caledonia Junior High School (English, Grade 7 - 9)', value: '68' },\r\n                { label: 'Caledonia Junior High School (Late French, Grade 7 - 9)', value: '69' },\r\n                { label: 'Caudle Park Elementary School (English, Grade P - 6)', value: '163' },\r\n                { label: 'Cavalier Drive Elementary-Junior High School (Early French, Grade P - 6)', value: '166' },\r\n                { label: 'Cavalier Drive Elementary-Junior High School (English, Grade P - 6)', value: '167' },\r\n                { label: 'Central Spryfield School (English, Grade P - 6)', value: '130' },\r\n                { label: 'Charles P. Allen High School (Early French, Grade 10 - 12)', value: '193' },\r\n                { label: 'Charles P. Allen High School (English, Grade 10 - 12)', value: '194' },\r\n                { label: 'Charles P. Allen High School (Late French, Grade 10 - 12)', value: '195' },\r\n                { label: 'Chebucto Heights Elementary School (Early French, Grade P - 6)', value: '140' },\r\n                { label: 'Chebucto Heights Elementary School (Early French, Grade P - 6)', value: '141' },\r\n                { label: 'Chebucto Heights Elementary School (English, Grade P - 6)', value: '142' },\r\n                { label: 'Citadel High School (Early French, Grade 10 - 12)', value: '93' },\r\n                { label: 'Citadel High School (English, Grade 10 - 12)', value: '94' },\r\n                { label: 'Clayton Park Junior High School (English, Grade 7 - 9)', value: '150' },\r\n                { label: 'Colby Village Elementary School (English, Grade P - 6)', value: '45' },\r\n                { label: 'Cole Harbour District High School (Early French, Grade 10 - 12)', value: '47' },\r\n                { label: 'Cole Harbour District High School (English, Grade 10 - 12)', value: '48' },\r\n                { label: 'Cole Harbour District High School (English, Grade 10 - 12)', value: '49' },\r\n                { label: 'Cole Harbour District High School (Late French, Grade 10 - 12)', value: '50' },\r\n                { label: 'Colonel John Stuart Elementary School (English, Grade P - 6)', value: '36' },\r\n                { label: 'Crichton Park School (English, Grade P - 6)', value: '81' },\r\n                { label: 'Cunard Junior High School (English, Grade 7 - 9)', value: '112' },\r\n                { label: 'Dartmouth High School (Early French, Grade 10 - 12)', value: '86' },\r\n                { label: 'Dartmouth High School (Late French, Grade 10 - 12)', value: '88' },\r\n                { label: 'Duc D\\'Anville Elementary School (English, Grade P - 6)', value: '151' },\r\n                { label: 'Duncan Macmillan High School (English, Grade 10 - 12)', value: '2' },\r\n                { label: 'Duncan Macmillan High School (English, Grade 7 - 9)', value: '1' },\r\n                { label: 'Dutch Settlement Elementary School (English, Grade P - 6)', value: '20' },\r\n                { label: 'East St. Margaret\\'s Elementary School (English, Grade P - 6)', value: '227' },\r\n                { label: 'Eastern Passage Education Centre (Early French, Grade 7 - 9)', value: '24' },\r\n                { label: 'Eastern Passage Education Centre (English, Grade 7 - 9)', value: '25' },\r\n                { label: 'Eastern Passage Education Centre (Late French, Grade 7 - 9)', value: '26' },\r\n                { label: 'Eastern Shore District High School (English, Grade 10 - 12)', value: '11' },\r\n                { label: 'Eastern Shore District High School (Late French, Grade 10 - 12)', value: '12' },\r\n                { label: 'Elizabeth Sutherland School (Early French, Grade 10 - 12)', value: '134' },\r\n                { label: 'Elizabeth Sutherland School (Early French, Grade 7 - 9)', value: '133' },\r\n                { label: 'Elizabeth Sutherland School (English, Grade 7 - 9)', value: '136' },\r\n                { label: 'Elizabeth Sutherland School (English, Grade P - 6)', value: '135' },\r\n                { label: 'Ellenvale Junior High School (English, Grade 7 - 9)', value: '64' },\r\n                { label: 'Ellenvale Junior High School (Late French, Grade 7 - 9)', value: '65' },\r\n                { label: 'Eric Graves Memorial Junior High School (English, Grade 7 - 9)', value: '59' },\r\n                { label: 'Fairview Heights School (Annex Building) (English, Grade P - 2)', value: '152' },\r\n                { label: 'Fairview Heights School (Main Building) (English, Grade 3 - 6)', value: '158' },\r\n                { label: 'Fairview Junior High School (Early French, Grade 10 - 12)', value: '156' },\r\n                { label: 'Fairview Junior High School (Early French, Grade 7 - 9)', value: '155' },\r\n                { label: 'Fairview Junior High School (English, Grade 7 - 9)', value: '157' },\r\n                { label: 'Five Bridges Junior High School (Early French, Grade 7 - 9)', value: '219' },\r\n                { label: 'Five Bridges Junior High School (English, Grade 7 - 9)', value: '220' },\r\n                { label: 'Five Bridges Junior High School (Late French, Grade 7 - 9)', value: '221' },\r\n                { label: 'Gaetz Brook Junior High School (English, Grade 7 - 9)', value: '13' },\r\n                { label: 'Gaetz Brook Junior High School (Late French, Grade 7 - 9)', value: '14' },\r\n                { label: 'George Bissett Elementary School (English, Grade P - 6)', value: '46' },\r\n                { label: 'Georges P. Vanier Junior High School (Early French, Grade 7 - 9)', value: '127' },\r\n                { label: 'Georges P. Vanier Junior High School (English, Grade 7 - 9)', value: '128' },\r\n                { label: 'Georges P. Vanier Junior High School (Late French, Grade 7 - 9)', value: '129' },\r\n                { label: 'Gorsebrook Junior High School (Early French, Grade 7 - 9)', value: '91' },\r\n                { label: 'Gorsebrook Junior High School (English, Grade 7 - 9)', value: '92' },\r\n                { label: 'Graham Creighton Junior High School (Early French, Grade 7 - 9)', value: '29' },\r\n                { label: 'Graham Creighton Junior High School (English, Grade 7 - 9)', value: '30' },\r\n                { label: 'Graham Creighton Junior High School (Late French, Grade 7 - 9)', value: '31' },\r\n                { label: 'Grosvenor-Wentworth Park Elementary School (Early French, Grade P - 6)', value: '173' },\r\n                { label: 'Grosvenor-Wentworth Park Elementary School (English, Grade P - 6)', value: '174' },\r\n                { label: 'Halifax Central Junior High (English, Grade 7 - 9)', value: '100' },\r\n                { label: 'Halifax West High School (English, Grade 10 - 12)', value: '168' },\r\n                { label: 'Halifax West High School (Late French, Grade 10 - 12)', value: '170' },\r\n                { label: 'Hammonds Plains Consolidated School (Early French, Grade P - 6)', value: '214' },\r\n                { label: 'Hammonds Plains Consolidated School (English, Grade P - 6)', value: '215' },\r\n                { label: 'Harbour View School (English, Grade P - 6)', value: '96' },\r\n                { label: 'Harold T. Barrett Junior High School (English, Grade 7 - 9)', value: '190' },\r\n                { label: 'Harold T. Barrett Junior High School (Late French, Grade 7 - 9)', value: '191' },\r\n                { label: 'Harrietsfield Elementary School (English, Grade P - 6)', value: '143' },\r\n                { label: 'Harry R. Hamilton School (English, Grade P - 6)', value: '203' },\r\n                { label: 'Hawthorn School (English, Grade P - 6)', value: '77' },\r\n                { label: 'Herring Cove Junior High School (English, Grade 7 - 9)', value: '79' },\r\n                { label: 'Herring Cove Junior High School (Late French, Grade 7 - 9)', value: '80' },\r\n                { label: 'Highland Park Junior High School (English, Grade 7 - 9)', value: '116' },\r\n                { label: 'Hillside Park Elementary School (English, Grade P - 6)', value: '164' },\r\n                { label: 'Holland Road Elementary School (English, Grade P - 6)', value: '104' },\r\n                { label: 'Humber Park Elementary School (English, Grade P - 6)', value: '54' },\r\n                { label: 'Ian Forsyth School (English, Grade P - 6)', value: '70' },\r\n                { label: 'J. L. Ilsley High School (English, Grade 10 - 12)', value: '114' },\r\n                { label: 'J. L. Ilsley High School (Late French, Grade 10 - 12)', value: '115' },\r\n                { label: 'John MacNeil School (English, Grade P - 6)', value: '90' },\r\n                { label: 'John Martin Junior High School (English, Grade 7 - 9)', value: '95' },\r\n                { label: 'John W. MacLeod - Fleming Tower School (Fleming Tower) (Early French, Grade P - 6)', value: '120' },\r\n                { label: 'John W. MacLeod - Fleming Tower School (Fleming Tower) (English, Grade P - 6)', value: '121' },\r\n                { label: 'John W. MacLeod - Fleming Tower School (John W. MacLeod) (Early French, Grade P - 6)', value: '117' },\r\n                { label: 'John W. MacLeod - Fleming Tower School (John W. MacLeod) (English, Grade P - 6)', value: '118' },\r\n                { label: 'Joseph Giles Elementary School (English, Grade P - 6)', value: '53' },\r\n                { label: 'Joseph Howe School (English, Grade P - 6)', value: '97' },\r\n                { label: 'Kingswood Elementary School (Early French, Grade P - 6)', value: '211' },\r\n                { label: 'Kingswood Elementary School (English, Grade P - 6)', value: '212' },\r\n                { label: 'Lakefront Consolidated Elementary School (English, Grade P - 6)', value: '3' },\r\n                { label: 'LeMarchant-St. Thomas School (Early French, Grade P - 6)', value: '98' },\r\n                { label: 'LeMarchant-St. Thomas School (English, Grade P - 6)', value: '99' },\r\n                { label: 'Leslie Thomas Junior High School (Early French, Grade 7 - 9)', value: '177' },\r\n                { label: 'Leslie Thomas Junior High School (English, Grade 7 - 9)', value: '178' },\r\n                { label: 'Leslie Thomas Junior High School (Late French, Grade 7 - 9)', value: '179' },\r\n                { label: 'Lockview High School (English, Grade 10 - 12)', value: '138' },\r\n                { label: 'Lockview High School (Late French, Grade 10 - 12)', value: '139' },\r\n                { label: 'Madeline Symonds Middle School (Early French, Grade 7 - 9)', value: '216' },\r\n                { label: 'Madeline Symonds Middle School (English, Grade 7 - 9)', value: '217' },\r\n                { label: 'Madeline Symonds Middle School (Late French, Grade 7 - 9)', value: '218' },\r\n                { label: 'Michael Wallace School (English, Grade P - 6)', value: '76' },\r\n                { label: 'Millwood Elementary School (English, Grade P - 6)', value: '198' },\r\n                { label: 'Millwood High School (English, Grade 10 - 12)', value: '199' },\r\n                { label: 'Millwood High School (Late French, Grade 10 - 12)', value: '200' },\r\n                { label: 'Mount Edward School (English, Grade P - 6)', value: '62' },\r\n                { label: 'Musquodoboit Rural High School (English, Grade 10 - 12)', value: '9' },\r\n                { label: 'Musquodoboit Rural High School (English, Grade 7 - 9)', value: '8' },\r\n                { label: 'Musquodoboit Valley Education Centre (English, Grade P - 6)', value: '10' },\r\n                { label: 'Nelson Whynder Elementary School (English, Grade P - 6)', value: '27' },\r\n                { label: 'O\\'Connell Drive Elementary (English, Grade P - 6)', value: '16' },\r\n                { label: 'Ocean View Elementary School (English, Grade P - 6)', value: '32' },\r\n                { label: 'Oldfield Consolidated School (English, Grade P - 6)', value: '72' },\r\n                { label: 'Oxford School (Early French, Grade 7 - 9)', value: '106' },\r\n                { label: 'Oxford School (English, Grade 7 - 9)', value: '108' },\r\n                { label: 'Oxford School (English, Grade P - 6)', value: '107' },\r\n                { label: 'Oyster Pond Academy (English, Grade 7 - 9)', value: '6' },\r\n                { label: 'Oyster Pond Academy (English, Grade P - 6)', value: '5' },\r\n                { label: 'Oyster Pond Academy (Late French, Grade 7 - 9)', value: '7' },\r\n                { label: 'Park West School (English, Grade 7 - 9)', value: '172' },\r\n                { label: 'Park West School (English, Grade P - 6)', value: '171' },\r\n                { label: 'Porters Lake Elementary School (English, Grade P - 6)', value: '15' },\r\n                { label: 'Portland Estates School (English, Grade P - 6)', value: '61' },\r\n                { label: 'Prince Andrew High School (English, Grade 10 - 12)', value: '67' },\r\n                { label: 'Prospect Road Elementary School (English, Grade P - 6)', value: '204' },\r\n                { label: 'Ridgecliff Middle School (Early French, Grade 7 - 9)', value: '186' },\r\n                { label: 'Ridgecliff Middle School (English, Grade 7 - 9)', value: '187' },\r\n                { label: 'Ridgecliff Middle School (Late French, Grade 7 - 9)', value: '188' },\r\n                { label: 'Robert K. Turner Elementary School (English, Grade P - 6)', value: '55' },\r\n                { label: 'Rockingham School (Early French, Grade P - 6)', value: '159' },\r\n                { label: 'Rockingham School (English, Grade P - 6)', value: '160' },\r\n                { label: 'Rockingstone Heights School (English, Grade 7 - 9)', value: '126' },\r\n                { label: 'Rockingstone Heights School (English, Grade P - 6)', value: '125' },\r\n                { label: 'Rocky Lake Junior High School (Early French, Grade 7 - 9)', value: '147' },\r\n                { label: 'Rocky Lake Junior High School (English, Grade 7 - 9)', value: '148' },\r\n                { label: 'Rocky Lake Junior High School (Late French, Grade 7 - 9)', value: '149' },\r\n                { label: 'Ross Road School (English, Grade 7 - 9)', value: '22' },\r\n                { label: 'Ross Road School (English, Grade P - 6)', value: '21' },\r\n                { label: 'Ross Road School (Late French, Grade 7 - 9)', value: '23' },\r\n                { label: 'Sackville Heights Elementary School (English, Grade P - 6)', value: '201' },\r\n                { label: 'Sackville Heights Junior High School (English, Grade 7 - 9)', value: '196' },\r\n                { label: 'Sackville Heights Junior High School (Late French, Grade 7 - 9)', value: '197' },\r\n                { label: 'Sackville High School (English, Grade 10 - 12)', value: '180' },\r\n                { label: 'Sackville High School (Late French, Grade 10 - 12)', value: '181' },\r\n                { label: 'Saint Mary\\'s School (English, Grade P - 6)', value: '89' },\r\n                { label: 'Sambro Elementary School (English, Grade P - 6)', value: '113' },\r\n                { label: 'Seaside Elementary School (Early French, Grade P - 6)', value: '28' },\r\n                { label: 'Shannon Park School (Early French, Grade P - 6)', value: '109' },\r\n                { label: 'Shannon Park School (English, Grade P - 6)', value: '111' },\r\n                { label: 'Shatford Memorial Elementary School (English, Grade P - 6)', value: '228' },\r\n                { label: 'Sir Charles Tupper School (English, Grade P - 6)', value: '105' },\r\n                { label: 'Sir John A. Macdonald High School (English, Grade 10 - 12)', value: '222' },\r\n                { label: 'Sir Robert Borden Junior High School (English, Grade 7 - 9)', value: '56' },\r\n                { label: 'Sir Robert Borden Junior High School (Late French, Grade 7 - 9)', value: '57' },\r\n                { label: 'Smokey Drive Elementary School (English, Grade P - 6)', value: '192' },\r\n                { label: 'South Woodside School (English, Grade P - 6)', value: '71' },\r\n                { label: 'Southdale-North Woodside School (English, Grade P - 6)', value: '75' },\r\n                { label: 'Springvale School (English, Grade P - 6)', value: '144' },\r\n                { label: 'St. Agnes School (English, Grade 7 - 9)', value: '137' },\r\n                { label: 'St. Catherine\\'s School (Early French, Grade P - 6)', value: '122' },\r\n                { label: 'St. Catherine\\'s School (English, Grade P - 6)', value: '123' },\r\n                { label: 'St. Joseph\\'s-Alexander McKay School (Early French, Grade P - 6)', value: '101' },\r\n                { label: 'St. Joseph\\'s-Alexander McKay School (English, Grade P - 6)', value: '102' },\r\n                { label: 'St. Margaret\\'s Bay Elementary School (English, Grade P - 6)', value: '226' },\r\n                { label: 'St. Stephen\\'s School (English, Grade P - 6)', value: '119' },\r\n                { label: 'Sunnyside Elementary School (Eaglewood Drive) (Early French, Grade P - 6)', value: '153' },\r\n                { label: 'Sunnyside Elementary School (Eaglewood Drive) (English, Grade P - 6)', value: '154' },\r\n                { label: 'Sunnyside Elementary School (Fort Sackville) (Early French, Grade P - 6)', value: '161' },\r\n                { label: 'Sunnyside Elementary School (Fort Sackville) (English, Grade P - 6)', value: '162' },\r\n                { label: 'Sycamore Lane Elementary School (English, Grade P - 6)', value: '185' },\r\n                { label: 'Tallahassee Community School (English, Grade P - 6)', value: '35' },\r\n                { label: 'Tantallon Junior Elementary School (Early French, Grade P - 2)', value: '223' },\r\n                { label: 'Tantallon Junior Elementary School (English, Grade P - 2)', value: '224' },\r\n                { label: 'Tantallon Senior Elementary School (English, Grade 3 - 6)', value: '225' },\r\n                { label: 'Upper Musquodoboit Consolidated School (English, Grade P - 6)', value: '4' },\r\n                { label: 'Waverley Memorial Elementary School (English, Grade P - 6)', value: '103' },\r\n                { label: 'Westmount School (English, Grade P - 6)', value: '124' },\r\n                { label: 'William King Elementary School (English, Grade P - 6)', value: '78' },\r\n            ],\r\n        },\r\n        operationalLayers: [],\r\n\r\n    },\r\n    mutations: {\r\n    },\r\n    actions: {\r\n    },\r\n});\r\n","export interface IDemographics {\r\n    DAUID: number;\r\n    PopulationSize: number;\r\n    MedianAge: number;\r\n    MedianAgeStr: string;\r\n    AvgHouseholdSize: number;\r\n    AvgHouseholdSizeStr: string;\r\n    AvgHouseholdIncome: number;\r\n    AvgHouseholdIncomeStr: string;\r\n    NumHouseholds: number;\r\n    Pop0to4: number;\r\n    Pop5to9: number;\r\n    Pop10to14: number;\r\n    Pop15to19: number;\r\n    Pop20to24: number;\r\n    Pop25to29: number;\r\n    Pop30to34: number;\r\n    Pop35to39: number;\r\n    Pop40to44: number;\r\n    Pop45to49: number;\r\n    Pop50to54: number;\r\n    Pop55to59: number;\r\n    Pop60to64: number;\r\n    Pop65to69: number;\r\n    Pop70to74: number;\r\n    Pop75to79: number;\r\n    Pop80to84: number;\r\n    Pop85Plus: number;\r\n    Pop2016: number;\r\n    Pop2021: number;\r\n    Pop2024: number;\r\n    Pop2026: number;\r\n    Pop2031: number;\r\n    EdNoCertDipDeg: number;\r\n    EdHighSch: number;\r\n    EdAppTradeDip: number;\r\n    EdCollege: number;\r\n    EdUniBelowBach: number;\r\n    EdUniDeg: number;\r\n    EdUniBach: number;\r\n    EdUniBachPlus: number;\r\n    StatMarried: number;\r\n    StatCommon: number;\r\n    StatSeparated: number;\r\n    StatSingle: number;\r\n    StatDivorce: number;\r\n    StatWidow: number;\r\n    HouseInc0to20: number;\r\n    HouseInc20to40: number;\r\n    HouseInc40to60: number;\r\n    HouseInc60to80: number;\r\n    HouseInc80to100: number;\r\n    HouseInc100to150: number;\r\n    HouseInc150to200: number;\r\n    HouseInc200Plus: number;\r\n    ChildHome0to4: number;\r\n    ChildHome5to9: number;\r\n    ChildHome10to14: number;\r\n    ChildHome15to19: number;\r\n    ChildHome20to24: number;\r\n    ChildHome25Plus: number;\r\n    OwnershipRent: number;\r\n    OwnershipOwn: number;\r\n    ContructDatePre1960: number;\r\n    ContructDatePre1961to1980: number;\r\n    ContructDatePre1981to1990: number;\r\n    ContructDatePre1991to2000: number;\r\n    ContructDatePre2001to2005: number;\r\n    ContructDatePre2006to2011: number;\r\n    ContructDatePre2011to2016: number;\r\n    ContructDatePre2016Plus: number;\r\n    OccupNA: number;\r\n    OccupMangement: number;\r\n    OccupBusFinAdmin: number;\r\n    OccupNatAppSci: number;\r\n    OccupHealth: number;\r\n    OccupEdLawGov: number;\r\n    OccupArtCultRec: number;\r\n    OccupSaleService: number;\r\n    OccupTradeTrans: number;\r\n    OccupMan: number;\r\n    OccupNatResAgri: number;\r\n}\r\n\r\nexport class Demographics implements IDemographics {\r\n    public DAUID = -1;\r\n    public PopulationSize = -1;\r\n    public MedianAge = -1;\r\n    public MedianAgeStr = '';\r\n    public AvgHouseholdSize = -1;\r\n    public AvgHouseholdSizeStr = '';\r\n    public AvgHouseholdIncome = -1;\r\n    public AvgHouseholdIncomeStr = '';\r\n    public NumHouseholds = -1;\r\n    public Pop0to4 = -1;\r\n    public Pop5to9 = -1;\r\n    public Pop10to14 = -1;\r\n    public Pop15to19 = -1;\r\n    public Pop20to24 = -1;\r\n    public Pop25to29 = -1;\r\n    public Pop30to34 = -1;\r\n    public Pop35to39 = -1;\r\n    public Pop40to44 = -1;\r\n    public Pop45to49 = -1;\r\n    public Pop50to54 = -1;\r\n    public Pop55to59 = -1;\r\n    public Pop60to64 = -1;\r\n    public Pop65to69 = -1;\r\n    public Pop70to74 = -1;\r\n    public Pop75to79 = -1;\r\n    public Pop80to84 = -1;\r\n    public Pop85Plus = -1;\r\n    public Pop2016 = -1;\r\n    public Pop2021 = -1;\r\n    public Pop2024 = -1;\r\n    public Pop2026 = -1;\r\n    public Pop2031 = -1;\r\n    public EdNoCertDipDeg = -1;\r\n    public EdHighSch = -1;\r\n    public EdAppTradeDip = -1;\r\n    public EdCollege = -1;\r\n    public EdUniBelowBach = -1;\r\n    public EdUniDeg = -1;\r\n    public EdUniBach = -1;\r\n    public EdUniBachPlus = -1;\r\n    public StatMarried = -1;\r\n    public StatCommon = -1;\r\n    public StatSeparated = -1;\r\n    public StatSingle = -1;\r\n    public StatDivorce = -1;\r\n    public StatWidow = -1;\r\n    public HouseInc0to20 = -1;\r\n    public HouseInc20to40 = -1;\r\n    public HouseInc40to60 = -1;\r\n    public HouseInc60to80 = -1;\r\n    public HouseInc80to100 = -1;\r\n    public HouseInc100to150 = -1;\r\n    public HouseInc150to200 = -1;\r\n    public HouseInc200Plus = -1;\r\n    public ChildHome0to4 = -1;\r\n    public ChildHome5to9 = -1;\r\n    public ChildHome10to14 = -1;\r\n    public ChildHome15to19 = -1;\r\n    public ChildHome20to24 = -1;\r\n    public ChildHome25Plus = -1;\r\n    public OwnershipRent = -1;\r\n    public OwnershipOwn = -1;\r\n    public ContructDatePre1960 = -1;\r\n    public ContructDatePre1961to1980 = -1;\r\n    public ContructDatePre1981to1990 = -1;\r\n    public ContructDatePre1991to2000 = -1;\r\n    public ContructDatePre2001to2005 = -1;\r\n    public ContructDatePre2006to2011 = -1;\r\n    public ContructDatePre2011to2016 = -1;\r\n    public ContructDatePre2016Plus = -1;\r\n    public OccupNA = -1;\r\n    public OccupMangement = -1;\r\n    public OccupBusFinAdmin = -1;\r\n    public OccupNatAppSci = -1;\r\n    public OccupHealth = -1;\r\n    public OccupEdLawGov = -1;\r\n    public OccupArtCultRec = -1;\r\n    public OccupSaleService = -1;\r\n    public OccupTradeTrans = -1;\r\n    public OccupMan = -1;\r\n    public OccupNatResAgri = -1;\r\n\r\n    constructor(\r\n        demoObject: any,\r\n    ) {\r\n        this.DAUID = demoObject.dauid;\r\n        this.PopulationSize = demoObject.populationSize;\r\n        this.MedianAge = demoObject.medianAge;\r\n        this.MedianAgeStr = demoObject.medianAgeStr;\r\n        this.AvgHouseholdSize = demoObject.avgHouseholdSize;\r\n        this.AvgHouseholdSizeStr = demoObject.avgHouseholdSizeStr;\r\n        this.AvgHouseholdIncome = demoObject.avgHouseholdIncome;\r\n        this.AvgHouseholdIncomeStr = demoObject.avgHouseholdIncomeStr;\r\n        this.NumHouseholds = demoObject.numHouseholds;\r\n        this.Pop0to4 = demoObject.pop0to4;\r\n        this.Pop5to9 = demoObject.pop5to9;\r\n        this.Pop10to14 = demoObject.pop10to14;\r\n        this.Pop15to19 = demoObject.pop15to19;\r\n        this.Pop20to24 = demoObject.pop20to24;\r\n        this.Pop25to29 = demoObject.pop25to29;\r\n        this.Pop30to34 = demoObject.pop30to34;\r\n        this.Pop35to39 = demoObject.pop35to39;\r\n        this.Pop40to44 = demoObject.pop40to44;\r\n        this.Pop45to49 = demoObject.pop45to49;\r\n        this.Pop50to54 = demoObject.pop50to54;\r\n        this.Pop55to59 = demoObject.pop55to59;\r\n        this.Pop60to64 = demoObject.pop60to64;\r\n        this.Pop65to69 = demoObject.pop65to69;\r\n        this.Pop70to74 = demoObject.pop70to74;\r\n        this.Pop75to79 = demoObject.pop75to79;\r\n        this.Pop80to84 = demoObject.pop80to84;\r\n        this.Pop85Plus = demoObject.pop85Plus;\r\n        this.Pop2016 = demoObject.pop2016;\r\n        this.Pop2021 = demoObject.pop2021;\r\n        this.Pop2024 = demoObject.pop2024;\r\n        this.Pop2026 = demoObject.pop2026;\r\n        this.Pop2031 = demoObject.pop2031;\r\n        this.EdNoCertDipDeg = demoObject.edNoCertDipDeg;\r\n        this.EdHighSch = demoObject.edHighSch;\r\n        this.EdAppTradeDip = demoObject.edAppTradeDip;\r\n        this.EdCollege = demoObject.edCollege;\r\n        this.EdUniBelowBach = demoObject.edUniBelowBach;\r\n        this.EdUniDeg = demoObject.edUniDeg;\r\n        this.EdUniBach = demoObject.edUniBach;\r\n        this.EdUniBachPlus = demoObject.edUniBachPlus;\r\n        this.StatMarried = demoObject.statMarried;\r\n        this.StatCommon = demoObject.statCommon;\r\n        this.StatSeparated = demoObject.statSeparated;\r\n        this.StatSingle = demoObject.statSingle;\r\n        this.StatDivorce = demoObject.statDivorce;\r\n        this.StatWidow = demoObject.statWidow;\r\n        this.HouseInc0to20 = demoObject.houseInc0to20;\r\n        this.HouseInc20to40 = demoObject.houseInc20to40;\r\n        this.HouseInc40to60 = demoObject.houseInc40to60;\r\n        this.HouseInc60to80 = demoObject.houseInc60to80;\r\n        this.HouseInc80to100 = demoObject.houseInc80to100;\r\n        this.HouseInc100to150 = demoObject.houseInc100to150;\r\n        this.HouseInc150to200 = demoObject.houseInc150to200;\r\n        this.HouseInc200Plus = demoObject.houseInc200Plus;\r\n        this.ChildHome0to4 = demoObject.childHome0to4;\r\n        this.ChildHome5to9 = demoObject.childHome5to9;\r\n        this.ChildHome10to14 = demoObject.childHome10to14;\r\n        this.ChildHome15to19 = demoObject.childHome15to19;\r\n        this.ChildHome20to24 = demoObject.childHome20to24;\r\n        this.ChildHome25Plus = demoObject.childHome25Plus;\r\n        this.OwnershipRent = demoObject.ownershipRent;\r\n        this.OwnershipOwn = demoObject.ownershipOwn;\r\n        this.ContructDatePre1960 = demoObject.contructDatePre1960;\r\n        this.ContructDatePre1961to1980 = demoObject.contructDatePre1961to1980;\r\n        this.ContructDatePre1981to1990 = demoObject.contructDatePre1981to1990;\r\n        this.ContructDatePre1991to2000 = demoObject.contructDatePre1991to2000;\r\n        this.ContructDatePre2001to2005 = demoObject.contructDatePre2001to2005;\r\n        this.ContructDatePre2006to2011 = demoObject.contructDatePre2006to2011;\r\n        this.ContructDatePre2011to2016 = demoObject.contructDatePre2011to2016;\r\n        this.ContructDatePre2016Plus = demoObject.contructDatePre2016Plus;\r\n        this.OccupNA = demoObject.occupNA;\r\n        this.OccupMangement = demoObject.occupMangement;\r\n        this.OccupBusFinAdmin = demoObject.occupBusFinAdmin;\r\n        this.OccupNatAppSci = demoObject.occupNatAppSci;\r\n        this.OccupHealth = demoObject.occupHealth;\r\n        this.OccupEdLawGov = demoObject.occupEdLawGov;\r\n        this.OccupArtCultRec = demoObject.occupArtCultRec;\r\n        this.OccupSaleService = demoObject.occupSaleService;\r\n        this.OccupTradeTrans = demoObject.occupTradeTrans;\r\n        this.OccupMan = demoObject.occupMan;\r\n        this.OccupNatResAgri = demoObject.occupNatResAgri;\r\n    }\r\n}\r\n\r\n","export interface IParcelAssessment {\r\n    PID: string;\r\n    AAN: string;\r\n    Year: number;\r\n    Value: number;\r\n    Acres: number;\r\n    PercentChange: number;\r\n}\r\n\r\nexport class ParcelAssessment implements IParcelAssessment {\r\n    public PID = '';\r\n    public AAN = '';\r\n    public Year = -1;\r\n    public Value = -1;\r\n    public Acres = -1;\r\n    public PercentChange = -1;\r\n    constructor(\r\n        assessmentObject: any,\r\n    ) {\r\n        this.PID = assessmentObject.pid;\r\n        this.AAN = assessmentObject.aan;\r\n        this.Year = assessmentObject.year;\r\n        this.Value = assessmentObject.value;\r\n        this.Acres = assessmentObject.acres;\r\n        this.PercentChange = assessmentObject.percentChange;\r\n    }\r\n}\r\n\r\n","export interface IParcelHrmData {\r\n    PID: string;\r\n    ByLawId: number;\r\n    ByLawCode: string;\r\n    ByLawName: string;\r\n    ZoneByLawId: number;\r\n    Zone: string;\r\n    PollDistId: number;\r\n    PollDistName: string;\r\n    Councillor: string;\r\n    WasteCollect: string;\r\n    WasteCollectArea: string;\r\n    WasteCollectContractor: string;\r\n}\r\n\r\nexport class ParcelHrmData implements IParcelHrmData {\r\n    public PID = '';\r\n    public ByLawId = -1;\r\n    public ByLawCode = '';\r\n    public ByLawName = '';\r\n    public ZoneByLawId = -1;\r\n    public Zone = '';\r\n    public PollDistId = -1;\r\n    public PollDistName = '';\r\n    public Councillor = '';\r\n    public WasteCollect = '';\r\n    public WasteCollectArea = '';\r\n    public WasteCollectContractor = '';\r\n    constructor(\r\n        hrmParcelObject: any,\r\n    ) {\r\n        this.PID = hrmParcelObject.pid;\r\n        this.ByLawId = hrmParcelObject.byLawId;\r\n        this.ByLawCode = hrmParcelObject.byLawCode;\r\n        this.ByLawName = hrmParcelObject.byLawName;\r\n        this.ZoneByLawId = hrmParcelObject.zoneByLawId;\r\n        this.Zone = hrmParcelObject.zone;\r\n        this.PollDistId = hrmParcelObject.pollDistId;\r\n        this.PollDistName = hrmParcelObject.pollDistName;\r\n        this.Councillor = hrmParcelObject.councillor;\r\n        this.WasteCollect = hrmParcelObject.wasteCollect;\r\n        this.WasteCollectArea = hrmParcelObject.wasteCollectArea;\r\n        this.WasteCollectContractor = hrmParcelObject.wasteCollectContractor;\r\n    }\r\n}\r\n\r\n","export interface IBuildingPermit {\r\n    PermitNumber: string;\r\n    DateApplication: string;\r\n    DateIssued: string;\r\n    ProjectDescription: string;\r\n    MostRecentInspect: string;\r\n    PermitStatus: string;\r\n    EstimatedValue: string;\r\n    Address: string;\r\n}\r\n\r\nexport class BuildingPermit implements IBuildingPermit {\r\n    public PermitNumber = '';\r\n    public DateApplication = '';\r\n    public DateIssued = '';\r\n    public ProjectDescription = '';\r\n    public MostRecentInspect = '';\r\n    public PermitStatus = '';\r\n    public EstimatedValue = '';\r\n    public Address = '';\r\n    constructor(\r\n        permitObject: any,\r\n    ) {\r\n        this.PermitNumber = permitObject.permitNumber;\r\n        this.DateApplication = permitObject.dateApplication;\r\n        this.DateIssued = permitObject.dateIssued;\r\n        this.ProjectDescription = permitObject.projectDescription;\r\n        this.MostRecentInspect = permitObject.mostRecentInspect;\r\n        this.PermitStatus = permitObject.permitStatus;\r\n        this.EstimatedValue = permitObject.estimatedValue;\r\n        this.Address = permitObject.address;\r\n    }\r\n}\r\n","export interface ICivicAddress {\r\n    CivicId?: number | null;\r\n    Apartment?: string | null;\r\n    CivicNum: string;\r\n    StreetName: string;\r\n    StreetType: string;\r\n    City: string;\r\n    Municipality: string;\r\n    County: string;\r\n    LotNum: string;\r\n    PID: string;\r\n}\r\n\r\nexport class CivicAddress implements ICivicAddress {\r\n    public CivicId = null;\r\n    public Apartment = null;\r\n    public CivicNum = '';\r\n    public StreetName = '';\r\n    public StreetType = '';\r\n    public City = '';\r\n    public Municipality = '';\r\n    public County = '';\r\n    public LotNum = '';\r\n    public PID = '';\r\n    constructor(\r\n        civObject: any,\r\n    ) {\r\n        this.CivicId = civObject.civicId;\r\n        this.Apartment = civObject.apartment;\r\n        this.CivicNum = civObject.civicNum;\r\n        this.StreetName = civObject.streetName;\r\n        this.StreetType = civObject.streetType;\r\n        this.City = civObject.city;\r\n        this.Municipality = civObject.municipality;\r\n        this.County = civObject.county;\r\n        this.LotNum = civObject.lotNum;\r\n        this.PID = civObject.pid;\r\n    }\r\n}\r\n\r\n\r\n\r\n","import { Demographics } from './Demographics';\r\nimport { ParcelAssessment } from './ParcelAssessment';\r\nimport { ParcelHrmData } from './ParcelHrmData';\r\nimport { BuildingPermit } from './BuildingPermit';\r\nimport { CivicAddress } from './CivicAddress';\r\n\r\nexport interface IParcelData {\r\n    PID: string;\r\n    Communiuty: string;\r\n    Demographics?: Demographics;\r\n    CivicAddress: string; // listing only\r\n    CivicAddresses: CivicAddress[] | null; // parcel only\r\n    ParcelAssessments: ParcelAssessment[];\r\n    ParcelHrmData: ParcelHrmData;\r\n    ChildParcels: any; // ?? TODO pid array ?? need an exmple or is this even used ??\r\n    BuildPermits: BuildingPermit[];\r\n    WalkTimeGeoJson: string;\r\n    IsParent: boolean;\r\n}\r\n\r\n\r\nexport class ParcelData implements IParcelData {\r\n    public PID = '';\r\n    public Communiuty = '';\r\n    public Demographics?: Demographics;\r\n    public CivicAddress = '';\r\n    public CivicAddresses = [];\r\n    public ParcelAssessments = [];\r\n    public ParcelHrmData = new ParcelHrmData({});\r\n    public ChildParcels = null; // ?? pid array ??\r\n    public BuildPermits = [];\r\n    public WalkTimeGeoJson = '';\r\n    public IsParent = false;\r\n    public ParcelSizeFtSq = 0;\r\n\r\n    constructor(\r\n        parcelDataObject: any,\r\n    ) {\r\n        this.PID = parcelDataObject.pid;\r\n        this.Communiuty = parcelDataObject.communiuty;\r\n        if (parcelDataObject.demographics) {\r\n            this.Demographics = new Demographics(parcelDataObject.demographics);\r\n        }\r\n        this.CivicAddress = parcelDataObject.civicAddress;\r\n        if (parcelDataObject.civicAddresses && parcelDataObject.civicAddresses.length) {\r\n            this.CivicAddresses = parcelDataObject.civicAddresses.map( (civic: any) => new CivicAddress(civic) );\r\n        }\r\n        if (parcelDataObject.parcelAssessments && parcelDataObject.parcelAssessments.length) {\r\n            this.ParcelAssessments = parcelDataObject.parcelAssessments.map( (assessment: any) => new ParcelAssessment(assessment) );\r\n        }\r\n        this.ParcelHrmData = parcelDataObject.parcelHrmData ? new ParcelHrmData(parcelDataObject.parcelHrmData) : new ParcelHrmData({});\r\n        this.ChildParcels = parcelDataObject.childParcels;\r\n        this.BuildPermits = parcelDataObject.buildPermits.map( (permit: any) => new BuildingPermit(permit) );\r\n        this.WalkTimeGeoJson = parcelDataObject.walkTimeGeoJson;\r\n        this.IsParent = parcelDataObject.isParent;\r\n        this.ParcelSizeFtSq = parcelDataObject.areaFtSq;\r\n    }\r\n}\r\n","export interface IAgent {\r\n    AgentId: number;\r\n    FirstName: string;\r\n    LastName: string;\r\n    Email: string;\r\n    CellPhone: string;\r\n    OfficeId: number;\r\n}\r\n\r\nexport class Agent implements IAgent {\r\n    public AgentId = -1;\r\n    public FirstName = '';\r\n    public LastName = '';\r\n    public Email = '';\r\n    public CellPhone = '';\r\n    public OfficeId = -1;\r\n    constructor(\r\n        agentObject: any,\r\n    ) {\r\n        this.AgentId = agentObject.AgentId;\r\n        this.FirstName = agentObject.FirstName;\r\n        this.LastName = agentObject.LastName;\r\n        this.Email = agentObject.Email;\r\n        this.CellPhone = agentObject.CellPhone;\r\n        this.OfficeId = agentObject.OfficeId;\r\n    }\r\n}\r\n","export interface IValueChange {\r\n    ChangeDate: string; // \"\\/Date(1477267200000)\\/\",\r\n    ChangeDateStr: string;\r\n    FieldName: number;\r\n    FieldNamestr: string;\r\n    OldValue: string;\r\n    OldValueStr: string;\r\n    NewValue: string;\r\n    NewValueStr: string;\r\n}\r\n\r\nexport class ValueChange implements IValueChange {\r\n    public ChangeDate: string;\r\n    public ChangeDateStr: string;\r\n    public FieldName: number;\r\n    public FieldNamestr: string;\r\n    public OldValue: string;\r\n    public OldValueStr: string;\r\n    public NewValue: string;\r\n    public NewValueStr: string;\r\n    constructor(\r\n        valueChangeObject: any,\r\n    ) {\r\n        this.ChangeDate = valueChangeObject.changeDate;\r\n        this.ChangeDateStr = valueChangeObject.changeDateStr;\r\n        this.FieldName = valueChangeObject.fieldName;\r\n        this.FieldNamestr = valueChangeObject.fieldNamestr;\r\n        this.OldValue = valueChangeObject.oldValue;\r\n        this.OldValueStr = valueChangeObject.oldValueStr;\r\n        this.NewValue = valueChangeObject.newValue;\r\n        this.NewValueStr = valueChangeObject.newValueStr;\r\n    }\r\n}\r\n","import { ValueChange } from './ValueChange';\r\n\r\nexport interface IHistoricListing {\r\n    MlsNo: string;\r\n    ListStatus: number;\r\n    ListStatusLabel: string;\r\n    ListPriceOrig: number;\r\n    ListPriceLast: number;\r\n    ListDate: string; // \"\\/Date(1477267200000)\\/\",\r\n    ListDateStr: string;\r\n    InactiveDate: string; // \"\\/Date(1479427200000)\\/\",\r\n    InactiveDateStr: string;\r\n    DOM: number;\r\n    ValueChanges: ValueChange[];\r\n}\r\n\r\nexport class HistoricListing implements IHistoricListing {\r\n    public MlsNo: string;\r\n    public ListStatus: number;\r\n    public ListStatusLabel: string;\r\n    public ListPriceOrig: number;\r\n    public ListPriceLast: number;\r\n    public ListDate: string;\r\n    public ListDateStr: string;\r\n    public InactiveDate: string;\r\n    public InactiveDateStr: string;\r\n    public DOM: number;\r\n    public ValueChanges: ValueChange[] = [];\r\n    constructor(\r\n        historicObject: any,\r\n    ) {\r\n        this.MlsNo = historicObject.mlsNo;\r\n        this.ListStatus = historicObject.listStatus;\r\n        this.ListStatusLabel = historicObject.listStatusLabel;\r\n        this.ListPriceOrig = historicObject.listPriceOrig;\r\n        this.ListPriceLast = historicObject.listPriceLast;\r\n        this.ListDate = historicObject.listDate;\r\n        this.ListDateStr = historicObject.listDateStr;\r\n        this.InactiveDate = historicObject.inactiveDate;\r\n        this.InactiveDateStr = historicObject.inactiveDateStr;\r\n        this.DOM = historicObject.dom;\r\n        if (historicObject.valueChanges && historicObject.valueChanges.length) {\r\n            this.ValueChanges = historicObject.valueChanges.map((historicObj: any) => new ValueChange(historicObj));\r\n        }\r\n    }\r\n}\r\n","import { ParcelData } from './ParcelData';\r\nimport { Agent } from './Agent';\r\nimport { ParcelAssessment } from './ParcelAssessment';\r\nimport { HistoricListing } from './HistoricListing';\r\n\r\nexport interface IListingDetail {\r\n    ParcelData?: ParcelData;\r\n    IsLoggedIn: boolean; // false,\r\n    SystemId: number; // 202006416,\r\n    PID: string; // \"00416388\",\r\n    MapPID: string; // \"00416388\",\r\n    HistoricListings: HistoricListing[] | null;\r\n    ParcelAssessments: ParcelAssessment[] | null;\r\n    IsResidential: boolean; // false,\r\n    IsFarm: boolean; // false,\r\n    IsCommercial: boolean; // false,\r\n    MlsNo: string; // \"202006416\",\r\n    ListingService: string; // \"mls\",\r\n    ClassShort: string; // \"MF\",\r\n    ClassLong: string; // \"Multi-Unit\",\r\n    ClassCodeL: number; // 3,\r\n    PreviewImageURL: string; // \"https://data.remaxnova.com/propimages/202006416.jpg?1587399511800\",\r\n    Address: string; // \"219 Rocky Lake Drive, Bedford\",\r\n    City: any; // ?? null,\r\n    Province: any; // ? null,\r\n    Latitude: number; // 44.737148,\r\n    Longitude: number; // -63.649724,\r\n    ListPrice: number; // 349000,\r\n    SoldPrice: any; // ?? null,\r\n    NumRnUnits: any; // ?? null,\r\n    NumStories: any; // ? null,\r\n    Parking: any; // ? null,\r\n    Garage: string; // \"N\",\r\n    ListDate: string; // \"\\/Date(1587340800000)\\/\",\r\n    ListDateStr: string; // \"Apr 20 2020\",\r\n    FirmDate: any; // ?? null,\r\n    FirmDateStr: string; // \"---\",\r\n    UpdateDate: string; // \"\\/Date(1597151101800)\\/\",\r\n    UpdateStr: string; // \"Aug 11 2020\",\r\n    HeatingCoolingType: string; // \"---\",\r\n    VirTourURL: any; // null,\r\n    Utillities: string; // \"---\",\r\n    SewageGroundSpill: string; // \"---\",\r\n    TotalFinishedSqFt: any; // ?? \"null,\r\n    WaterSource: string; // \"---\",\r\n    ListStatus: string; // \"FOR SALE\",\r\n    ListStatusCode: number; // 1,\r\n    Type: string; // \"Other\",\r\n    Style: string; // \"---\",\r\n    Community: string; // \"BEDFORD\",\r\n    District: string; // \"20\",\r\n    HasBuildingSpecs: boolean; // \":false,\r\n    Rooms: string[]; // [],\r\n    PropOvervw: string;\r\n    PropertyImages: string[]; // [\"https://data.remaxnova.com/propimages/202006416.jpg?1587399511800\"],\r\n    Agents: Agent[];\r\n    ListingOfficeName: string; // \"Coldwell Banker Supercity Realty\",\r\n    OpenHouses: any; // ?? [],\r\n    HasFlyer: boolean; // false,\r\n    FlyerUrl: any; // ?? null,\r\n    BuildingAge: any; // ?? null,\r\n    SqFootage: any; // ?? null,\r\n    NumBeds: number; // 0,\r\n    FullBaths: number; // 0,\r\n    HalfBaths: number; // 0,\r\n    PropDir: any; // ?? null,\r\n    Foundation: string; // \"---\",\r\n    Roof: string; // \"---\",\r\n    ExternalFinish: string; // \"---\",\r\n    Flooring: string; // \"---\",\r\n    GarageDetails: string; // null,\r\n    Inclusions: any; // ?? null,\r\n    Exclusions: any; // ?? null,\r\n    HasLatitudeLongitude: boolean; // false,\r\n    PostalCode: string; // \"B4A 2S9\",\r\n    ExpireDate: any; // ? null,\r\n    ExpireDateStr: string; // \"---\",\r\n    DaysOnMarket: number; // 147,\r\n    Brokerage: string; // \"Coldwell Banker Supercity Realty\",\r\n    ListingOfficeId: number; // 187,\r\n    ElemSchool: string; // \"Basinview Drive Community School\",\r\n    ElemSchoolFr: string; // \"Sunnyside (Early)\",\r\n    MidSchool: string; // \"Rocky Lake Junior High School\",\r\n    MidSchoolFr: string; // \"Rocky Lake Junior High School\",\r\n    HighSchool: string; // \"Charles P. Allen High School\",\r\n    HighSchoolFr: string; // \"Charles P. Allen High (Late)\",\r\n    CondoFee: any; // ?? null,\r\n    NewConstruction: boolean; // false\r\n}\r\n\r\n\r\nexport class ListingDetail implements IListingDetail {\r\n    public ParcelData?: ParcelData;\r\n    public IsLoggedIn = false;\r\n    public SystemId = -1;\r\n    public PID = '';\r\n    public MapPID = '';\r\n    public HistoricListings = null;\r\n    public ParcelAssessments = null;\r\n    public IsResidential = false;\r\n    public IsFarm = false;\r\n    public IsCommercial = false;\r\n    public MlsNo = '';\r\n    public ListingService = '';\r\n    public ClassShort = '';\r\n    public ClassLong = '';\r\n    public ClassCodeL = -1;\r\n    public PreviewImageURL = '';\r\n    public Address = '';\r\n    public City = null;\r\n    public Province = null;\r\n    public Latitude = -1;\r\n    public Longitude = -1;\r\n    public ListPrice = -1;\r\n    public SoldPrice = null;\r\n    public NumRnUnits = null;\r\n    public NumStories = null;\r\n    public Parking = null;\r\n    public Garage = '';\r\n    public ListDate = '';\r\n    public ListDateStr = '';\r\n    public FirmDate = null;\r\n    public FirmDateStr = '';\r\n    public UpdateDate = '';\r\n    public UpdateStr = '';\r\n    public HeatingCoolingType = '';\r\n    public VirTourURL = null;\r\n    public Utillities = '';\r\n    public SewageGroundSpill = '';\r\n    public TotalFinishedSqFt = null;\r\n    public WaterSource = '';\r\n    public ListStatus = '';\r\n    public ListStatusCode = -1;\r\n    public Type = '';\r\n    public Style = '';\r\n    public Community = '';\r\n    public District = '';\r\n    public HasBuildingSpecs = false;\r\n    public Rooms = [];\r\n    public PropOvervw = '';\r\n    public PropertyImages = [];\r\n    public Agents = [];\r\n    public ListingOfficeName = '';\r\n    public OpenHouses = null;\r\n    public HasFlyer = false;\r\n    public FlyerUrl = null;\r\n    public BuildingAge = null;\r\n    public SqFootage = null;\r\n    public NumBeds = -1;\r\n    public FullBaths = -1;\r\n    public HalfBaths = -1;\r\n    public PropDir = null;\r\n    public Foundation = '';\r\n    public Roof = '';\r\n    public ExternalFinish = '';\r\n    public Flooring = '';\r\n    public GarageDetails = '';\r\n    public Inclusions = null;\r\n    public Exclusions = null;\r\n    public HasLatitudeLongitude = false;\r\n    public PostalCode = '';\r\n    public ExpireDate = null;\r\n    public ExpireDateStr = '';\r\n    public DaysOnMarket = -1;\r\n    public Brokerage = '';\r\n    public ListingOfficeId = -1;\r\n    public ElemSchool = '';\r\n    public ElemSchoolFr = '';\r\n    public MidSchool = '';\r\n    public MidSchoolFr = '';\r\n    public HighSchool = '';\r\n    public HighSchoolFr = '';\r\n    public CondoFee = null;\r\n    public NewConstruction = false;\r\n    constructor(\r\n        listingDetail: any,\r\n    ) {\r\n        if (listingDetail.parcelData) {\r\n            this.ParcelData = new ParcelData(listingDetail.parcelData);\r\n        }\r\n        this.IsLoggedIn = listingDetail.isLoggedIn;\r\n        this.SystemId = listingDetail.systemId;\r\n        this.PID = listingDetail.pid;\r\n        this.MapPID = listingDetail.mapPID;\r\n        if (listingDetail.historicListings && listingDetail.historicListings.length) {\r\n            this.HistoricListings = listingDetail.historicListings.map((historicObj: any) => new HistoricListing(historicObj));\r\n        }\r\n        if (listingDetail.parcelAssessments && listingDetail.parcelAssessments.length) {\r\n            this.ParcelAssessments = listingDetail.parcelAssessments.map((assessmentObj: any) => new ParcelAssessment(assessmentObj));\r\n        }\r\n        this.IsResidential = listingDetail.isResidential;\r\n        this.IsFarm = listingDetail.isFarm;\r\n        this.IsCommercial = listingDetail.isCommercial;\r\n        this.MlsNo = listingDetail.mlsNo;\r\n        this.ListingService = listingDetail.listingService;\r\n        this.ClassShort = listingDetail.classShort;\r\n        this.ClassLong = listingDetail.classLong;\r\n        this.ClassCodeL = listingDetail.classCode;\r\n        this.PreviewImageURL = listingDetail.previewImageURL;\r\n        this.Address = listingDetail.address;\r\n        this.City = listingDetail.city;\r\n        this.Province = listingDetail.province;\r\n        this.Latitude = listingDetail.latitude;\r\n        this.Longitude = listingDetail.longitude;\r\n        this.ListPrice = listingDetail.listPrice;\r\n        this.SoldPrice = listingDetail.soldPrice;\r\n        this.NumRnUnits = listingDetail.numRnUnits;\r\n        this.NumStories = listingDetail.numStories;\r\n        this.Parking = listingDetail.parking;\r\n        this.Garage = listingDetail.garage;\r\n        this.ListDate = listingDetail.listDate;\r\n        this.ListDateStr = listingDetail.listDateStr;\r\n        this.FirmDate = listingDetail.firmDate;\r\n        this.FirmDateStr = listingDetail.firmDateStr;\r\n        this.UpdateDate = listingDetail.updateDate;\r\n        this.UpdateStr = listingDetail.updateStr;\r\n        this.HeatingCoolingType = listingDetail.heatingCoolingType;\r\n        this.VirTourURL = listingDetail.virTourURL;\r\n        this.Utillities = listingDetail.utillities;\r\n        this.SewageGroundSpill = listingDetail.sewagdspsl;\r\n        this.TotalFinishedSqFt = listingDetail.totalFinishedSqFt;\r\n        this.WaterSource = listingDetail.watersourc;\r\n        this.ListStatus = listingDetail.listStatus;\r\n        this.ListStatusCode = listingDetail.listStatusCode;\r\n        this.Type = listingDetail.type;\r\n        this.Style = listingDetail.style;\r\n        this.Community = listingDetail.community;\r\n        this.District = listingDetail.district;\r\n        this.HasBuildingSpecs = listingDetail.hasBuildingSpecs;\r\n        this.Rooms = listingDetail.rooms;\r\n        this.PropOvervw = listingDetail.propOvervw;\r\n        this.PropertyImages = listingDetail.propertyImages;\r\n        this.Agents = listingDetail.agents.map((agentObj: any) => new Agent(agentObj));\r\n        this.ListingOfficeName = listingDetail.listingOfficeName;\r\n        this.OpenHouses = listingDetail.openHouses;\r\n        this.HasFlyer = listingDetail.hasFlyer;\r\n        this.FlyerUrl = listingDetail.flyerUrl;\r\n        this.BuildingAge = listingDetail.buildingAge;\r\n        this.SqFootage = listingDetail.sqFootage;\r\n        this.NumBeds = listingDetail.numBeds;\r\n        this.FullBaths = listingDetail.fullBaths;\r\n        this.HalfBaths = listingDetail.halfBaths;\r\n        this.PropDir = listingDetail.propDir;\r\n        this.Foundation = listingDetail.foundation;\r\n        this.Roof = listingDetail.roof;\r\n        this.ExternalFinish = listingDetail.externalFinish;\r\n        this.Flooring = listingDetail.flooring;\r\n        this.GarageDetails = listingDetail.garageDetails;\r\n        this.Inclusions = listingDetail.inclusions;\r\n        this.Exclusions = listingDetail.exclusions;\r\n        this.HasLatitudeLongitude = listingDetail.hasLatitudeLongitude;\r\n        this.PostalCode = listingDetail.postalCode;\r\n        this.ExpireDate = listingDetail.expireDate;\r\n        this.ExpireDateStr = listingDetail.expireDateStr;\r\n        this.DaysOnMarket = listingDetail.daysOnMarket;\r\n\r\n        if (this.ListStatusCode === 2 && this.FirmDate !== null) {\r\n            const firmDateAsStr: any = this.FirmDate;\r\n            const firmDate = new Date(firmDateAsStr);\r\n            const listDate = new Date(this.ListDate);\r\n\r\n            const timeInMilisec: number = firmDate.getTime() - listDate.getTime();\r\n            const daysBetweenDates: number = Math.ceil(timeInMilisec / (1000 * 60 * 60 * 24));\r\n\r\n            this.DaysOnMarket = daysBetweenDates;\r\n        } else {\r\n            const listDate = new Date(this.ListDate);\r\n\r\n            const timeInMilisec: number = new Date().getTime() - listDate.getTime();\r\n            const daysBetweenDates: number = Math.ceil(timeInMilisec / (1000 * 60 * 60 * 24));\r\n            this.DaysOnMarket = daysBetweenDates;\r\n        }\r\n\r\n        this.Brokerage = listingDetail.brokerage;\r\n        this.ListingOfficeId = listingDetail.listingOfficeId;\r\n        this.ElemSchool = listingDetail.elemSchool;\r\n        this.ElemSchoolFr = listingDetail.elemSchoolFr;\r\n        this.MidSchool = listingDetail.midSchool;\r\n        this.MidSchoolFr = listingDetail.midSchoolFr;\r\n        this.HighSchool = listingDetail.highSchool;\r\n        this.HighSchoolFr = listingDetail.highSchoolFr;\r\n        this.CondoFee = listingDetail.condoFee;\r\n        this.NewConstruction = listingDetail.newConstruction;\r\n    }\r\n}\r\n\r\n","export default class UnauthorizedError extends Error {\r\n    constructor(msg: string) {\r\n        super(msg);\r\n        Object.setPrototypeOf(this, UnauthorizedError.prototype);\r\n    }\r\n}\r\n","import axios from 'axios';\r\nimport { RequestViewingViewModel } from '@/models/RequestViewingViewModel';\r\nimport Auth from '@/auth/Auth';\r\nimport UnauthorizedError from '@/auth/UnauthorizedError';\r\n\r\nconst apiClient = axios.create({\r\n    baseURL: process.env.VUE_APP_API_ROOT,\r\n    withCredentials: false, // This is the default\r\n    headers: {\r\n        'Accept': 'application/json',\r\n        'Content-Type': 'application/json',\r\n    },\r\n});\r\n\r\nlet token = '';\r\n\r\nexport default {\r\n    getSoldPoints() {\r\n        return apiClient.get('/api/listings/soldpoints');\r\n    },\r\n    async getListingsDetail(systemId: string, isLoggedIn: boolean) {\r\n        if (isLoggedIn) {\r\n            token = await Auth.getAccessToken();\r\n            if (token) {\r\n                return apiClient.get(`/api/listings/${systemId}`, { headers: {Authorization: `Bearer ${token}`} });\r\n            }\r\n        }\r\n        return apiClient.get(`/api/listings/${systemId}`);\r\n    },\r\n    async getParcelData(pid: string, isLoggedIn: boolean) {\r\n        if (isLoggedIn) {\r\n            token = await Auth.getAccessToken();\r\n            if (token) {\r\n                return apiClient.get(`/api/parcels/${pid}`, { headers: {Authorization: `Bearer ${token}`} });\r\n            }\r\n        }\r\n        return apiClient.get(`/api/parcels/${pid}`);\r\n    },\r\n    async addFavouriteId(sysId: number) {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n            return apiClient.post('/api/users/myUser/favourites', { systemId: sysId }, { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    async getFavouriteSettings() {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n            return apiClient.get('/api/users/myUser/favourites/settings', { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    async getFavourites() {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n            return apiClient.get('/api/users/myUser/favourites', { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    async removeFavourite(sysId: number) {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n            return apiClient.delete(`/api/users/myUser/favourites/${sysId}`, { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    async setFavouriteNotifications(isOnBool: boolean) {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n            return apiClient.put('/api/users/myUser/favourites/settings', { isNotifyOn: isOnBool }, { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    async getFilterData() {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n            return apiClient.get('/api/users/myUser/filters', { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    async saveFilterData(filter: any) {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n           return apiClient.post('/api/users/myUser/filters', filter, { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    async deleteFilterData(filterId: number) {\r\n        token = await Auth.getAccessToken();\r\n        if (token) {\r\n            return apiClient.delete(`/api/users/myUser/filters/${filterId}`, { headers: {Authorization: `Bearer ${token}`} });\r\n        } else {\r\n            throw new UnauthorizedError('Not logged in');\r\n        }\r\n    },\r\n    requestViewing(remapViewModel: RequestViewingViewModel) {\r\n        return apiClient.post('/api/showing', remapViewModel);\r\n    },\r\n};\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport { Listing } from '../../models/Listing';\r\nimport { ListingDetail } from '../../models/ListingDetail';\r\nimport { RequestViewingViewModel } from '../../models/RequestViewingViewModel';\r\nimport RemaxService from '../../services/RemaxService';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface ListingState {\r\n    selectedListing: Listing | null;\r\n    selectedListingDetail: ListingDetail | null;\r\n    listingsInMapBounds: Listing[] | null;\r\n}\r\n\r\nexport default {\r\n    state: {\r\n        selectedListing: null,\r\n        selectedListingDetail: null,\r\n        listingsInMapBounds: null,\r\n    } as ListingState,\r\n    mutations: {\r\n        SET_SELECTED_LISTING(state: ListingState, listing: Listing) {\r\n            state.selectedListing = listing;\r\n        },\r\n        SET_SELECTED_LISTING_DETAIL(state: ListingState, listingDetail: ListingDetail) {\r\n            state.selectedListingDetail = listingDetail;\r\n        },\r\n        SET_LISTINGS_IN_MAP_BOUNDS(state: ListingState, listings: Listing[]) {\r\n            state.listingsInMapBounds = listings;\r\n        },\r\n    },\r\n    actions: {\r\n        // was EVENT_multi_listing_selected_via_map\r\n        multiListingSelectedViaMap(context: any, layer: L.Layer) {\r\n            //\r\n        },\r\n\r\n        // was EVENT_single_listing_selected_via_map\r\n        singleListingSelectedViaMap(context: any, layer: L.Layer) {\r\n            //\r\n        },\r\n\r\n        // were both events needed?\r\n        // EVENT_selected_listing_changed\r\n        // EVENT_listing_selected\r\n        setSelectedListing(context: any, listing: Listing) {\r\n            context.commit('SET_SELECTED_LISTING', listing);\r\n            if (context.rootState.isLoggedIn || listing.st !== '2') {\r\n                context.dispatch('getListingDetails', listing.sid);\r\n            }\r\n\r\n            context.dispatch('clearSelectedCrime');\r\n        },\r\n\r\n        // EVENT_features_within_map_bounds_changed\r\n        setListingsInMapBounds(context: any, listings: Listing[]) {\r\n            context.commit('SET_LISTINGS_IN_MAP_BOUNDS', listings);\r\n        },\r\n\r\n        getListingDetails(context: any, systemId: string) {\r\n            context.commit('SET_SELECTED_LISTING_DETAIL', null);\r\n            context.dispatch('listingDetailFetchStart', systemId);\r\n            // TODO needs some improved queue logic\r\n            RemaxService.getListingsDetail(systemId, context.rootState.isLoggedIn)\r\n            .then((response) => {\r\n                console.log(response);\r\n                if (response.data && response.data.error) {\r\n                    context.dispatch('listingDetailFetchError');\r\n                    context.dispatch('notify', response.data.error);\r\n                }\r\n                // TODO temp workaround to sync backend timestamps\r\n                if (context.state.selectedListing &&\r\n                    context.state.selectedListing.pi !== null &&\r\n                    context.state.selectedListing.pi.indexOf('?') !== -1 &&\r\n                    context.state.selectedListing.sid === systemId) {\r\n                    const listingTimestamp = context.state.selectedListing.pi.substring(context.state.selectedListing.pi.length - 14, context.state.selectedListing.pi.length);\r\n                    response.data.previewImageURL = response.data.previewImageURL.split('?')[0] + listingTimestamp;\r\n                    for (let i = 0; i < response.data.propertyImages.length; i++) {\r\n                        response.data.propertyImages[i] = response.data.propertyImages[i].split('?')[0] + listingTimestamp;\r\n                    }\r\n                }\r\n\r\n                const listingDetail: ListingDetail = new ListingDetail(response.data);\r\n                console.log(listingDetail);\r\n                context.commit('SET_SELECTED_LISTING_DETAIL', listingDetail);\r\n                context.dispatch('listingDetailFetchComplete', listingDetail);\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.dispatch('listingDetailFetchError');\r\n                context.dispatch('notify', error.message);\r\n            });\r\n        },\r\n\r\n        // EVENT_full_list_data_fetch_start\r\n        listingDetailFetchStart(context: any, systemId: string) {\r\n            //\r\n        },\r\n        // EVENT_full_list_data_fetch_complete\r\n        listingDetailFetchComplete(context: any, listingDetail: ListingDetail) {\r\n            //\r\n        },\r\n        // EVENT_full_list_data_fetch_error\r\n        listingDetailFetchError(context: any) {\r\n            //\r\n        },\r\n        // EVENT_show_listing_dialog\r\n        showListingDialog(context: any, listing: Listing) {\r\n            //\r\n        },\r\n        // EVENT_show_listing_dialog_photos\r\n        showListingDialogPhotos(context: any, listing: Listing) {\r\n            //\r\n        },\r\n        // EVENT_show_book_viewing_dialog\r\n        showBookViewingDialog(context: any, listing: Listing) {\r\n            //\r\n        },\r\n        // EVENT_goto_listing\r\n        goToListing(context: any, systemId: number) {\r\n            //\r\n        },\r\n        popupSingleListing(context: any, payload: any) {\r\n            //\r\n        },\r\n        closePopups(context: any) {\r\n            //\r\n        },\r\n        // EVENT_init_request_viewing\r\n        initRequestViewing(context: any, vm: RequestViewingViewModel) {\r\n            RemaxService.requestViewing(vm)\r\n            .then((response) => {\r\n                if (response.data === 'ERROR') {\r\n                    context.dispatch('showRequestError');\r\n                } else {\r\n                    context.dispatch('showRequestSuccess');\r\n                }\r\n            }).catch((error) => {\r\n                context.dispatch('showRequestError');\r\n            });\r\n        },\r\n    },\r\n};\r\n","import { CrimePoint } from '@/models/CrimePoint';\r\nimport Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport RemaxService from '../../services/RemaxService';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface LayerState {\r\n    isHeatLayersInit: boolean;\r\n    isCrimeLayersInit: boolean;\r\n    heatmapData: number[][] | null;\r\n    selectedCrime: CrimePoint | null;\r\n}\r\n\r\nexport default {\r\n    state: {\r\n        isHeatLayersInit: false,\r\n        isCrimeLayersInit: false,\r\n        heatmapData: null,\r\n        selectedCrime: null,\r\n    } as LayerState,\r\n    mutations: {\r\n        SET_HEAT_LAYERS_INIT(state: LayerState, isInit: boolean) {\r\n            state.isHeatLayersInit = isInit;\r\n        },\r\n        SET_CRIME_LAYERS_INIT(state: LayerState, isInit: boolean) {\r\n            state.isCrimeLayersInit = isInit;\r\n        },\r\n        SET_HEATMAP_DATA(state: LayerState, data: number[][]) {\r\n            state.heatmapData = data;\r\n        },\r\n        SET_SELECTED_CRIME(state: LayerState, crime: CrimePoint | null) {\r\n            state.selectedCrime = crime;\r\n        },\r\n    },\r\n    actions: {\r\n        initHeatmapLayer(context: any) {\r\n            console.log('initHeatmapLayer');\r\n            RemaxService.getSoldPoints()\r\n            .then((response) => {\r\n                // if (response && response.error) {\r\n                //     console.error(response.error);\r\n                //     context.dispatch('notify', response.error);\r\n                // }\r\n                // Logger.writeLog(\"GetSoldPoints- Data Loaded.\");\r\n\r\n                // Adding weight values for the heatmap\r\n                for (let i = 0; i < response.data.length; i++) {\r\n                    response.data[i].push(1);\r\n                }\r\n                console.log(response.data);\r\n                context.commit('SET_HEATMAP_DATA', response.data);\r\n                context.commit('SET_HEAT_LAYERS_INIT', true);\r\n                context.dispatch('heatmapDataLoaded', response.data);\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.dispatch('notify', error);\r\n            });\r\n        },\r\n        initCrimeLayer(context: any) {\r\n            context.commit('SET_CRIME_LAYERS_INIT', true);\r\n        },\r\n        heatmapDataLoaded(context: any) {\r\n            //\r\n        },\r\n        changeSelectedCrime(context: any, crime: CrimePoint) {\r\n            console.log(crime);\r\n            context.commit('SET_SELECTED_CRIME', crime);\r\n            // TODO\r\n            // _clearWalkData();\r\n        },\r\n        clearSelectedCrime(context: any) {\r\n            context.commit('SET_SELECTED_CRIME', null);\r\n        },\r\n        // EVENT_show_Crime_dialog\r\n        showCrimeDialog(context: any, crime: CrimePoint) {\r\n            //\r\n        },\r\n    },\r\n};\r\n","import { Filter } from '@/models/Filter';\r\nimport L from 'leaflet';\r\n\r\nexport interface ISavedFilter {\r\n    MFID: number;\r\n    Notifications: boolean;\r\n    Name: string;\r\n    Filter: Filter;\r\n    Polygon: L.Polygon | L.LatLngExpression[] | null;\r\n    MultiPolygon: any | null;\r\n}\r\n\r\nexport class SavedFilter implements ISavedFilter {\r\n    public MFID: number;\r\n    public Notifications: boolean;\r\n    public Name: string;\r\n    public Filter: Filter;\r\n    public Polygon: L.Polygon | L.LatLngExpression[] | null;\r\n    public MultiPolygon: any | null;\r\n    constructor(\r\n        savedFilterProps: any,\r\n    ) {\r\n        this.MFID = savedFilterProps.MFID;\r\n        this.Notifications = savedFilterProps.Notifications;\r\n        this.Name = savedFilterProps.Name;\r\n        this.Filter = new Filter(savedFilterProps.Filter);\r\n        this.Polygon = savedFilterProps.Polygon;\r\n        this.MultiPolygon = savedFilterProps.MultiPolygon;\r\n    }\r\n    public toJson() {\r\n        return {\r\n            mdid: this.MFID,\r\n            notifications: this.Notifications,\r\n            name: this.Name,\r\n            filter: this.Filter.toJson(),\r\n            polygon: this.Polygon,\r\n            multipolygon: this.MultiPolygon,\r\n        };\r\n    }\r\n    public getGeoJson() {\r\n        if (this.Polygon) {\r\n            // @ts-ignore\r\n            return L.polygon(this.Polygon).toGeoJSON();\r\n        }\r\n        return null;\r\n    }\r\n}\r\n\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport RemaxService from '@/services/RemaxService';\r\nimport { SavedFilter } from '@/models/SavedFilter';\r\nimport { Filter } from '@/models/Filter';\r\nimport { MinMax } from '@/models/MinMax';\r\nimport L from 'leaflet';\r\nimport FilterUtil from '@/utils/FilterUtil';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface FilterState {\r\n    isFilterLoading: boolean;\r\n    savedFilters: SavedFilter[];\r\n    activeFilter: Filter;\r\n    spatialFilter: L.GeoJSON | null;\r\n    filterCount: number | null;\r\n}\r\n\r\nexport default {\r\n    state: {\r\n        isFilterLoading: false,\r\n        savedFilters: [],\r\n        activeFilter: new Filter({\r\n            price: {\r\n                min: 0,\r\n                max: 99999999,\r\n            },\r\n            beds: {\r\n                min: 0,\r\n                max: 99,\r\n            },\r\n            baths: {\r\n                min: 0,\r\n                max: 99,\r\n            },\r\n            mla: {\r\n                min: 0,\r\n                max: 99999,\r\n            },\r\n            tla: {\r\n                min: 0,\r\n                max: 99999,\r\n            },\r\n            lotSize: {\r\n                min: 0,\r\n                max: 99999999,\r\n            },\r\n            age: {\r\n                min: 0,\r\n                max: 999,\r\n            },\r\n            type: {value: []},\r\n            style: {value: []},\r\n            class: {value: []},\r\n            status: {value: ['1', '3']}, // active, pending default shown\r\n            heatType: {value: []},\r\n            waterfront: {value: null}, // null = false, 1 = true\r\n            garage:  {value: null}, // null = false, 1 = true\r\n            schoolCatchmentId: {value: null},\r\n        }),\r\n        spatialFilter: null,\r\n        filterCount: null,\r\n    } as FilterState,\r\n    mutations: {\r\n        SET_ACTIVE_FILTER(state: FilterState, filter: Filter) {\r\n            state.activeFilter = filter;\r\n        },\r\n        SET_PRICE(state: FilterState, priceMinMax: MinMax) {\r\n            Vue.set(state.activeFilter, 'Price', priceMinMax);\r\n        },\r\n        SET_BEDS(state: FilterState, bedsMinMax: MinMax) {\r\n            Vue.set(state.activeFilter, 'Beds', bedsMinMax);\r\n        },\r\n        SET_BATHS(state: FilterState, bathsMinMax: MinMax) {\r\n            Vue.set(state.activeFilter, 'Baths', bathsMinMax);\r\n        },\r\n        SET_MLA(state: FilterState, mlaMinMax: MinMax) {\r\n            Vue.set(state.activeFilter, 'Mla', mlaMinMax);\r\n        },\r\n        SET_TLA(state: FilterState, tlaMinMax: MinMax) {\r\n            Vue.set(state.activeFilter, 'Tla', tlaMinMax);\r\n        },\r\n        SET_LOT(state: FilterState, lotMinMax: MinMax) {\r\n            Vue.set(state.activeFilter, 'LotSize', lotMinMax);\r\n        },\r\n        SET_AGE(state: FilterState, ageMinMax: MinMax) {\r\n            Vue.set(state.activeFilter, 'Age', ageMinMax);\r\n        },\r\n        SET_STATUS(state: FilterState, status: string[]) {\r\n            Vue.set(state.activeFilter, 'Status', {Value: status});\r\n        },\r\n        SET_CLASS(state: FilterState, classes: string[]) {\r\n            Vue.set(state.activeFilter, 'Class', {Value: classes});\r\n        },\r\n        SET_TYPE(state: FilterState, types: string[]) {\r\n            Vue.set(state.activeFilter, 'Type', {Value: types});\r\n        },\r\n        SET_STYLE(state: FilterState, styles: string[]) {\r\n            Vue.set(state.activeFilter, 'Style', {Value: styles});\r\n        },\r\n        SET_HEAT(state: FilterState, heat: string[]) {\r\n            Vue.set(state.activeFilter, 'HeatType', {Value: heat});\r\n        },\r\n        SET_GARAGE(state: FilterState, isGarage: boolean) {\r\n            Vue.set(state.activeFilter, 'Garage', {Value: isGarage ? 1 : null});\r\n        },\r\n        SET_WATERFRONT(state: FilterState, isWaterfront: boolean) {\r\n            Vue.set(state.activeFilter, 'Waterfront', {Value: isWaterfront ? 1 : null});\r\n        },\r\n        SET_SPATIAL_FILTER(state: FilterState, spatialFilter: L.GeoJSON | null) {\r\n            state.spatialFilter = spatialFilter;\r\n        },\r\n        SET_SCHOOL_CATCHMENT_ID(state: FilterState, schoolCatchmentId: string) {\r\n            Vue.set(state.activeFilter, 'SchoolCatchmentId', {value: schoolCatchmentId});\r\n        },\r\n        CLEAR_ACTIVE_FILTER(state: FilterState) {\r\n            state.activeFilter = new Filter({\r\n                price: {\r\n                    min: 0,\r\n                    max: 99999999,\r\n                },\r\n                beds: {\r\n                    min: 0,\r\n                    max: 99,\r\n                },\r\n                baths: {\r\n                    min: 0,\r\n                    max: 99,\r\n                },\r\n                mla: {\r\n                    min: 0,\r\n                    max: 99999,\r\n                },\r\n                tla: {\r\n                    min: 0,\r\n                    max: 99999,\r\n                },\r\n                lotSize: {\r\n                    min: 0,\r\n                    max: 99999999,\r\n                },\r\n                age: {\r\n                    min: 0,\r\n                    max: 999,\r\n                },\r\n                type: {value: []},\r\n                style: {value: []},\r\n                class: {value: []},\r\n                status: {value: ['1', '3']}, // active, pending default shown\r\n                heatType: {value: []},\r\n                waterfront: {value: null}, // null = false, 1 = true\r\n                garage: {value: null}, // null = false, 1 = true\r\n                schoolCatchmentId: {value: null},\r\n            });\r\n        },\r\n        SET_FILTER_COUNT(state: FilterState, filterCount: number) {\r\n            state.filterCount = filterCount;\r\n        },\r\n        SET_SAVED_FILTERS(state: FilterState, filters: SavedFilter[]) {\r\n            state.savedFilters = filters;\r\n        },\r\n        ADD_SAVED_FILTER(state: FilterState, filter: SavedFilter) {\r\n            state.savedFilters.push(filter);\r\n        },\r\n        REMOVE_SAVED_FILTER(state: FilterState, mfid: number) {\r\n            state.savedFilters = state.savedFilters.filter((savedFilter: SavedFilter) => savedFilter.MFID !== mfid);\r\n        },\r\n        SET_FILTER_LOADING(state: FilterState, isLoading: boolean) {\r\n            state.isFilterLoading = isLoading;\r\n        },\r\n    },\r\n    actions: {\r\n        // was EVENT_filter_changed\r\n        filterChanged(context: any) {\r\n            // TODO no mutations needed?\r\n        },\r\n        clearFilters(context: any) {\r\n            // TODO mutate all filters back to default state\r\n        },\r\n        showFilterDialog(context: any) {\r\n            // no mutations\r\n        },\r\n        showFilterSaveDialog(context: any) {\r\n            // no mutations\r\n        },\r\n        showFilterManager(context: any) {\r\n            // no mutations\r\n        },\r\n        hideFilterManager(context: any) {\r\n            // no mutations\r\n        },\r\n        setPriceMin(context: any, priceMin: number) {\r\n            context.commit('SET_PRICE_MIN', priceMin);\r\n        },\r\n        setPriceMax(context: any, priceMax: number) {\r\n            context.commit('SET_PRICE_MAX', priceMax);\r\n        },\r\n        setBedsMin(context: any, bedsMin: number) {\r\n            context.commit('SET_BEDS_MIN', bedsMin);\r\n        },\r\n        setBedsMax(context: any, bedsMax: number) {\r\n            context.commit('SET_BEDS_MAX', bedsMax);\r\n        },\r\n        setBaths(context: any, bathsMinMax: MinMax) {\r\n            context.commit('SET_BATHS', bathsMinMax);\r\n        },\r\n        setMla(context: any, mlaMinMax: MinMax) {\r\n            context.commit('SET_MLA', mlaMinMax);\r\n        },\r\n        setTla(context: any, tlaMinMax: MinMax) {\r\n            context.commit('SET_TLA', tlaMinMax);\r\n        },\r\n        setLot(context: any, lotMinMax: MinMax) {\r\n            context.commit('SET_LOT', lotMinMax);\r\n        },\r\n        setAge(context: any, ageMinMax: MinMax) {\r\n            context.commit('SET_AGE', ageMinMax);\r\n        },\r\n        setStatus(context: any, status: string[]) {\r\n            context.commit('SET_STATUS', status);\r\n        },\r\n        setGarage(context: any, isGarage: boolean) {\r\n            context.commit('SET_GARAGE', isGarage);\r\n        },\r\n        setWaterfront(context: any, isWaterfront: boolean) {\r\n            context.commit('SET_WATERFRONT', isWaterfront);\r\n        },\r\n        setClass(context: any, classes: string[]) {\r\n            context.commit('SET_CLASS', classes);\r\n        },\r\n        setType(context: any, types: string[]) {\r\n            context.commit('SET_TYPE', types);\r\n        },\r\n        setStyle(context: any, styles: string[]) {\r\n            context.commit('SET_STYLE', styles);\r\n        },\r\n        setHeat(context: any, heat: string[]) {\r\n            context.commit('SET_HEAT', heat);\r\n        },\r\n        setSpatialFilter(context: any, spatialFilter: L.GeoJSON | null) {\r\n            context.commit('SET_SPATIAL_FILTER', spatialFilter);\r\n        },\r\n        setSchoolCatchmentId(context: any, schoolCatchmentId: string) {\r\n            context.commit('SET_SCHOOL_CATCHMENT_ID', schoolCatchmentId);\r\n        },\r\n        saveActiveFilter(context: any, payload: any) {\r\n            const newFilter = new SavedFilter({\r\n                Filter: context.state.activeFilter.toJson(),\r\n                Notifications: payload.Notifications,\r\n                Name: payload.Name,\r\n                Polygon: null,\r\n                MultiPolygon: null,\r\n            });\r\n            let newPoly = null;\r\n            if (payload.SpatialFilter && payload.SpatialFilter.geometry) {\r\n                newPoly = payload.SpatialFilter.geometry.coordinates[0].map((coord: any) => ({lng: coord[0], lat: coord[1]}));\r\n            }\r\n            if (payload.SpatialFilter && payload.SpatialFilter.features) {\r\n                newPoly = payload.SpatialFilter.features[0].geometry.coordinates[0].map((coord: any) => ({lng: coord[0], lat: coord[1]}));\r\n            }\r\n            newFilter.Polygon = newPoly;\r\n\r\n            RemaxService.saveFilterData(newFilter.toJson())\r\n            .then((response) => {\r\n                newFilter.MFID = response.data;\r\n                // on return add the filter that has MFID, dispatch success/error\r\n                context.commit('ADD_SAVED_FILTER', newFilter);\r\n                context.dispatch('saveFilterSuccess');\r\n            });\r\n        },\r\n        saveFilterSuccess(context: any) {\r\n            //\r\n        },\r\n        setActiveFilter(context: any, filter: Filter) {\r\n            context.commit('SET_ACTIVE_FILTER', filter);\r\n        },\r\n        clearActiveFilter(context: any) {\r\n            // FilterDialog subscribes and clears any map layers\r\n            context.commit('SET_SPATIAL_FILTER', null);\r\n            context.commit('CLEAR_ACTIVE_FILTER');\r\n        },\r\n        setFilterNumber(context: any, filterCount: number) {\r\n            context.commit('SET_FILTER_COUNT', filterCount);\r\n        },\r\n        getFilterData(context: any) {\r\n            context.commit('SET_FILTER_LOADING', true);\r\n            RemaxService.getFilterData()\r\n            .then((response) => {\r\n                const filters = response.data;\r\n                const savedFilters: SavedFilter[] = [];\r\n                for (let i = 0; i < filters.length; i++) {\r\n                    const filter = new SavedFilter({\r\n                        Name: filters[i].name,\r\n                        Notifications: filters[i].notifications,\r\n                        Polygon: filters[i].polygon,\r\n                        MultiPolygon: filters[i].multiPolygon,\r\n                        MFID: filters[i].mfid,\r\n                        Filter: filters[i].filter,\r\n                    });\r\n                    savedFilters.push(filter);\r\n                }\r\n\r\n                context.commit('SET_SAVED_FILTERS', savedFilters);\r\n                context.commit('SET_FILTER_LOADING', false);\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.commit('SET_FILTER_LOADING', false);\r\n                context.dispatch('notify', 'Failed to get filter data');\r\n            });\r\n        },\r\n        // EVENT_filter_remove\r\n        removeSavedFilter(context: any, mfid: number) {\r\n            RemaxService.deleteFilterData(mfid);\r\n            context.commit('REMOVE_SAVED_FILTER', mfid);\r\n        },\r\n        // EVENT_filter_restore\r\n        restoreFilter(context: any, mfid: number) {\r\n            const savedfilter: SavedFilter = context.state.savedFilters.find((filter: SavedFilter) => filter.MFID === mfid);\r\n            const updateFilter = savedfilter.Filter;\r\n            if (savedfilter.Polygon) {\r\n                context.dispatch('setSpatialFilter', JSON.stringify(savedfilter.getGeoJson()));\r\n                } else {\r\n                context.dispatch('clearActiveFilter');\r\n            }\r\n            context.commit('SET_ACTIVE_FILTER', updateFilter);\r\n        },\r\n    },\r\n};\r\n","import { ParcelData } from './ParcelData';\r\nimport { ListingDetail } from './ListingDetail';\r\nimport { HistoricListing } from './HistoricListing';\r\n\r\nexport interface IParcelDetail {\r\n    ParcelData?: ParcelData;\r\n    Listings?: ListingDetail[];\r\n}\r\n\r\nexport class ParcelDetail implements IParcelDetail {\r\n    public ParcelData?: ParcelData;\r\n    public Listings?: ListingDetail[];\r\n    public PvsHistoricListings?: HistoricListing[];\r\n    constructor(\r\n        parcelDetail: any,\r\n    ) {\r\n        if (parcelDetail.parcelData) {\r\n            this.ParcelData = new ParcelData(parcelDetail.parcelData);\r\n        }\r\n        if (parcelDetail.listings && parcelDetail.listings.length) {\r\n            this.Listings = parcelDetail.listings.map( (listing: any) => new ListingDetail(listing) );\r\n        }\r\n        if (parcelDetail.pvsHistoricListings && parcelDetail.pvsHistoricListings.length) {\r\n            this.PvsHistoricListings = parcelDetail.pvsHistoricListings.map( (historicListing: any) => new HistoricListing(historicListing) );\r\n        }\r\n    }\r\n}\r\n\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport RemaxService from '../../services/RemaxService';\r\nimport { ParcelDetail } from '../../models/ParcelDetail';\r\nimport SearchService from '@/services/SearchService';\r\nimport L from 'leaflet';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface ParcelState {\r\n    selectedParcel: any | null; // this is an esri Feature type, no definition for it\r\n    selectedParcelDetail: ParcelDetail | null;\r\n}\r\n\r\nexport default {\r\n    state: {\r\n        selectedParcel: null,\r\n        selectedParcelDetail: null,\r\n    } as ParcelState,\r\n    mutations: {\r\n        SET_SELECTED_PARCEL(state: ParcelState, parcel: any) {\r\n            state.selectedParcel = parcel;\r\n        },\r\n        SET_SELECTED_PARCEL_DETAIL(state: ParcelState, parcelDetail: ParcelDetail | null) {\r\n            state.selectedParcelDetail = parcelDetail;\r\n        },\r\n    },\r\n    actions: {\r\n        setSelectedParcel(context: any, parcel: any) {\r\n            context.commit('SET_SELECTED_PARCEL', parcel);\r\n        },\r\n        setSelectedParcelDetail(context: any, parcelDetail: ParcelDetail | null) {\r\n            context.commit('SET_SELECTED_PARCEL_DETAIL', parcelDetail);\r\n        },\r\n        getParcelData(context: any, pid: string) {\r\n            RemaxService.getParcelData(pid, context.rootState.isLoggedIn)\r\n            .then((response: any) => {\r\n                // console.log(response);\r\n                if (response.error) {\r\n                    console.error(response.error);\r\n                    context.dispatch('parcelDataError');\r\n                    context.dispatch('notify', response.error);\r\n                } else {\r\n                    const parcelDetail = new ParcelDetail(response.data);\r\n                    context.commit('SET_SELECTED_PARCEL_DETAIL', parcelDetail);\r\n                }\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.dispatch('parcelDataError');\r\n                context.dispatch('notify', error);\r\n            });\r\n        },\r\n\r\n        // EVENT_map_parcel_data_retrieved_error\r\n        parcelDataError() {\r\n            //\r\n        },\r\n        showParcelDialog() {\r\n            //\r\n        },\r\n        goToParcel(context: any, pid: string) {\r\n            SearchService.pidCentroidQuery(pid)\r\n            .then((response) => {\r\n                if (response && response.data && response.data.x && response.data.y) {\r\n                    const latLon = new L.LatLng(response.data.y, response.data.x);\r\n                    context.dispatch('goToLatLon', latLon);\r\n                    context.dispatch('parcelClick', latLon);\r\n                } else {\r\n                    context.dispatch('notify', 'PID not found');\r\n                }\r\n            });\r\n\r\n        },\r\n    },\r\n};\r\n","export interface IFavourite {\r\n    SystemId: number;\r\n    PreviewImage: string;\r\n    Address: string;\r\n    Price: string;\r\n    Beds: number;\r\n    Baths: number;\r\n    DOM: number;\r\n    Status: string;\r\n    StatusCode: string;\r\n}\r\n\r\nexport class Favourite implements IFavourite {\r\n    public SystemId: number;\r\n    public PreviewImage: string;\r\n    public Address: string;\r\n    public Price: string;\r\n    public Beds: number;\r\n    public Baths: number;\r\n    public DOM: number;\r\n    public Status: string;\r\n    public StatusCode: string;\r\n    constructor(\r\n        favProps: any,\r\n    ) {\r\n        this.SystemId = favProps.SystemId;\r\n        this.PreviewImage = favProps.PreviewImage;\r\n        this.Address = favProps.Address;\r\n        this.Price = favProps.Price;\r\n        this.Beds = favProps.Beds;\r\n        this.Baths = favProps.Baths;\r\n        this.DOM = favProps.DOM;\r\n        this.Status = favProps.Status;\r\n        this.StatusCode = favProps.StatusCode;\r\n    }\r\n}\r\n\r\n","import RemaxService from '@/services/RemaxService';\r\nimport Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport ListingUtil from '../../utils/ListingUtil';\r\nimport { Favourite } from '../../models/Favourite';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface FavouriteState {\r\n    favouriteIds: number[];\r\n    favourites: Favourite[];\r\n    favouriteCount: number;\r\n    favouriteNotifications: boolean;\r\n}\r\n\r\nexport default {\r\n    state: {\r\n        favouriteIds: [],\r\n        favourites: [],\r\n        favouriteCount: 0,\r\n        favouriteNotifications: true,\r\n    } as FavouriteState,\r\n    mutations: {\r\n        SET_FAV_IDS(state: FavouriteState, favIds: number[]) {\r\n            state.favouriteIds = favIds;\r\n            state.favouriteCount = state.favouriteIds.length;\r\n        },\r\n        ADD_FAV_ID(state: FavouriteState, sysId: number) {\r\n            if (state.favouriteIds.indexOf(sysId) === -1) {\r\n                state.favouriteIds.push(sysId);\r\n            }\r\n            state.favouriteCount = state.favouriteIds.length;\r\n        },\r\n        REMOVE_FAV_ID(state: FavouriteState, sysId: number) {\r\n            const index = state.favouriteIds.indexOf(sysId);\r\n            if (index > -1) {\r\n                state.favouriteIds.splice(index, 1);\r\n            }\r\n            state.favouriteCount = state.favouriteIds.length;\r\n        },\r\n        SET_FAVOURITES(state: FavouriteState, favs: Favourite[]) {\r\n            state.favourites = favs;\r\n        },\r\n        ADD_FAVOURITE(state: FavouriteState, fav: Favourite) {\r\n            state.favourites.push(fav);\r\n        },\r\n        REMOVE_FAVOURITE(state: FavouriteState, systemId: number) {\r\n            state.favourites = state.favourites.filter((favourite: Favourite) => favourite.SystemId !== systemId );\r\n        },\r\n        CLEAR_FAVOURITES(state: FavouriteState) {\r\n            state.favourites = [];\r\n        },\r\n\r\n        SET_FAV_NOTIFICATIONS(state: FavouriteState, isOn: boolean) {\r\n            state.favouriteNotifications = isOn;\r\n        },\r\n    },\r\n    actions: {\r\n        getFavouriteSettings(context: any) {\r\n            RemaxService.getFavouriteSettings()\r\n            .then((response) => {\r\n                if (context.state.favouriteIds && response.data && response.data.favourites) {\r\n                    const allFavs = response.data.favourites;\r\n                    const isNotifyOn = response.data.isNotifyOn;\r\n                    // NOTE: There is a new property not yet used in web -> response.data.agent\r\n                    // if the local favs don't match, sync up with server now\r\n                    // NOTE this section can be removed after some time (added 2021-09-10)\r\n                    if (context.state.favouriteIds.sort().join() !== response.data.favourites.sort().join()) {\r\n                        const localFavsCopy = [...context.state.favouriteIds];\r\n                        for (const favId of localFavsCopy) {\r\n                            if (allFavs.indexOf(favId) === -1) {\r\n                                allFavs.push(favId);\r\n                                RemaxService.addFavouriteId(favId);\r\n                            }\r\n                        }\r\n                        context.commit('SET_FAV_IDS', allFavs);\r\n                        context.commit('SET_FAV_NOTIFICATIONS', isNotifyOn);\r\n                    } else {\r\n                        // server and local match\r\n                        context.commit('SET_FAV_IDS', allFavs);\r\n                        context.commit('SET_FAV_NOTIFICATIONS', isNotifyOn);\r\n                    }\r\n                }\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.dispatch('notify', 'Failed to get favs');\r\n            });\r\n\r\n        },\r\n        setFavouriteNotifications(context: any, isOn: boolean) {\r\n            context.commit('SET_FAV_NOTIFICATIONS', isOn);\r\n            RemaxService.setFavouriteNotifications(isOn)\r\n            .then((response) => {\r\n                context.commit('SET_FAV_NOTIFICATIONS', isOn);\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.dispatch('notify', 'Failed to set favs notification');\r\n            });\r\n        },\r\n        getFavoriteData(context: any) {\r\n            context.commit('CLEAR_FAVOURITES');\r\n            RemaxService.getFavourites()\r\n            .then((response) => {\r\n                console.log(response);\r\n                const favs = response.data;\r\n                const favList: Favourite[] = [];\r\n                for (let i = 0; i < favs.length; i++) {\r\n                    favList.push(new Favourite({\r\n                        SystemId: favs[i].systemId,\r\n                        PreviewImage: favs[i].previewImage,\r\n                        Address: favs[i].address,\r\n                        Price: ListingUtil.getFormatedPrice(favs[i].price),\r\n                        Beds: favs[i].numBeds,\r\n                        Baths: favs[i].numTotalBaths,\r\n                        DOM: favs[i].daysOnMarket,\r\n                        Status: ListingUtil.getStatusAsString(favs[i].listStatusCode.toString(), favs[i].classCode),\r\n                        StatusCode: favs[i].listStatusCode.toString(),\r\n                    }));\r\n                }\r\n                context.commit('SET_FAVOURITES', favList);\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.dispatch('notify', 'Failed to get favourites data');\r\n            });\r\n        },\r\n        // EVENT_favourites_add\r\n        favouriteAdd(context: any, systemId: number) {\r\n            RemaxService.addFavouriteId(systemId)\r\n            .then(() => {\r\n                context.commit('ADD_FAV_ID', systemId);\r\n            })\r\n            .catch((error: any) => {\r\n                console.error(error);\r\n                context.dispatch('notify', 'Failed to add favourite data');\r\n            });\r\n        },\r\n        // EVENT_favourites_remove\r\n        favouriteRemove(context: any, systemId: number) {\r\n            RemaxService.removeFavourite(systemId)\r\n            .then((response) => {\r\n                context.commit('REMOVE_FAV_ID', systemId);\r\n                context.commit('REMOVE_FAVOURITE', systemId);\r\n            })\r\n            .catch((error) => {\r\n                console.error(error);\r\n                context.dispatch('notify', 'Failed to remove favourite');\r\n            });\r\n        },\r\n    },\r\n};\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport { event } from 'vue-analytics';\r\n\r\n// Google Analytics ID is configured in main.ts\r\n\r\nVue.use(Vuex);\r\n\r\nexport default {\r\n    state: {\r\n    },\r\n    mutations: {\r\n    },\r\n    actions: {\r\n        sendListingEvent(context: any, payload: any) {\r\n            event({\r\n                eventCategory: 'Listing',\r\n                eventAction: payload.action,\r\n                eventLabel: payload.sysId,\r\n                // eventValue:\r\n            });\r\n        },\r\n        sendBasemapEvent(context: any, payload: any) {\r\n            event({\r\n                eventCategory: 'Basemap',\r\n                eventAction: payload.action,\r\n                // eventLabel:\r\n                // eventValue:\r\n            });\r\n        },\r\n        sendOpsLayerEvent(context: any, payload: any) {\r\n            event({\r\n                eventCategory: 'OpsLayer',\r\n                eventAction: payload.action,\r\n                // eventLabel:\r\n                // eventValue:\r\n            });\r\n        },\r\n        sendWalkabilityEvent(context: any, payload: any) {\r\n            event({\r\n                eventCategory: 'Walkability',\r\n                eventAction: payload.sysId,\r\n                // eventLabel:\r\n                // eventValue:\r\n            });\r\n        },\r\n        sendFilterEvent(context: any, payload: any) {\r\n            event({\r\n                eventCategory: 'Filter',\r\n                eventAction: payload.filter,\r\n                // eventLabel:\r\n                // eventValue:\r\n            });\r\n        },\r\n        sendDetailsEvent(context: any, payload: any) {\r\n            event({\r\n                eventCategory: 'InDetails',\r\n                eventAction: payload.action,\r\n                eventLabel: payload.sysId,\r\n                // eventValue:\r\n            });\r\n        },\r\n    },\r\n};\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport VuexPersistence from 'vuex-persist';\r\nimport configStore from './modules/configStore';\r\nimport listingStore from './modules/listingStore';\r\nimport layerStore from './modules/layerStore';\r\nimport filterStore from './modules/filterStore';\r\nimport parcelStore from './modules/parcelStore';\r\nimport favStore from './modules/favStore';\r\nimport analyticsStore from './modules/analyticsStore';\r\nimport Auth from '@/auth/Auth';\r\n\r\nVue.use(Vuex);\r\n\r\nconst vuexLocal = new VuexPersistence({\r\n    storage: window.localStorage,\r\n    reducer: (state: any) => ({\r\n        // add any states that need to be persisted beyond the current session\r\n        zoom: state.zoom,\r\n        centerLat: state.centerLat,\r\n        centerLon: state.centerLon,\r\n    }),\r\n    // modules: ['listingStore'],\r\n});\r\n\r\nexport interface State {\r\n    leftDrawerOpen: boolean;\r\n    map: L.Map | null;\r\n    zoom: number;\r\n    centerLat: number;\r\n    centerLon: number;\r\n    isLoggedIn: boolean;\r\n    showWalkabilityHelp: boolean;\r\n    isMapClickDisabled: boolean;\r\n    isMobileBannerDismissed: boolean;\r\n}\r\n\r\nexport default new Vuex.Store({\r\n    state: {\r\n        leftDrawerOpen: true,\r\n        map: null,\r\n        zoom: -1,\r\n        centerLat: -1,\r\n        centerLon: -1,\r\n        isLoggedIn: false,\r\n        showWalkabilityHelp: true,\r\n        isMapClickDisabled: false,\r\n        isMobileBannerDismissed: false,\r\n    } as State,\r\n    mutations: {\r\n        SET_MAP(state: State, map: L.Map) {\r\n            state.map = map;\r\n        },\r\n        SET_LEFT_DRAWER_OPEN(state: State, isOpen: boolean) {\r\n            state.leftDrawerOpen = isOpen;\r\n        },\r\n        SET_ZOOM(state: State, zoom: number) {\r\n            state.zoom = zoom;\r\n        },\r\n        SET_MAP_CENTER(state: State, mapCenter: L.LatLng) {\r\n            state.centerLat = mapCenter.lat;\r\n            state.centerLon = mapCenter.lng;\r\n        },\r\n        SET_WALKABILITY_HELP(state: State, showWalkabilityHelp: boolean) {\r\n            state.showWalkabilityHelp = showWalkabilityHelp;\r\n        },\r\n        SET_IS_LOGGED_IN(state: State, isLoggedIn: boolean) {\r\n            state.isLoggedIn = isLoggedIn;\r\n        },\r\n        SET_DISABLE_MAP_CLICK(state: State, isDisabled: boolean) {\r\n            state.isMapClickDisabled = isDisabled;\r\n        },\r\n        SET_DISMISS_MOBILE_BANNER(state: State, isDismissed: boolean) {\r\n            state.isMobileBannerDismissed = isDismissed;\r\n        },\r\n    },\r\n    actions: {\r\n        setMap(context, map: L.Map) {\r\n            context.commit('SET_MAP', map);\r\n        },\r\n        setLeftDrawerOpen(context, isOpen: boolean) {\r\n            context.commit('SET_LEFT_DRAWER_OPEN', isOpen);\r\n        },\r\n        setIsLoggedIn(context, isLoggedIn: boolean) {\r\n            context.commit('SET_IS_LOGGED_IN', isLoggedIn);\r\n        },\r\n        initLayers(context) {\r\n            //\r\n        },\r\n        initGeoLocation(context) {\r\n            //\r\n        },\r\n        initWalkTimes(context) {\r\n            //\r\n        },\r\n        initFilters(context) {\r\n            //\r\n        },\r\n        initFavourites(context) {\r\n            //\r\n        },\r\n        showLoginDialog(context) {\r\n            // UNUSED\r\n        },\r\n        login(context, payload) {\r\n            Auth.login();\r\n        },\r\n        logout(context) {\r\n            // TEMP remove persisted data on logout, it should have successfully been added to DB\r\n            context.commit('SET_SAVED_FILTERS', []);\r\n            Auth.logout();\r\n        },\r\n\r\n        // EVENT_map_zoom_level_changed\r\n        setZoom(context, zoom: number) {\r\n            context.commit('SET_ZOOM', zoom);\r\n        },\r\n\r\n        goToLatLon(context, latLon: L.LatLng) {\r\n            if (context.state.map) {\r\n                context.state.map.setView(latLon, 16);\r\n            }\r\n        },\r\n\r\n        // EVENT_map_parcel_click\r\n        parcelClick(context, latLon: L.LatLng) {\r\n            //\r\n        },\r\n\r\n        // EVENT_map_move_end\r\n        mapMoveEnd(context, mapCenter: L.LatLng) {\r\n            // components also subscribe to this action\r\n            context.commit('SET_MAP_CENTER', mapCenter);\r\n        },\r\n        notify(context, message: string) {\r\n            //\r\n        },\r\n        setWalkabilityHelp(context, showHelp: boolean) {\r\n            context.commit('SET_WALKABILITY_HELP', showHelp);\r\n        },\r\n        showLightBox(context) {\r\n            //\r\n        },\r\n        showShareDialog(context, mode) {\r\n            //\r\n        },\r\n        showLoginPromptDialog(context, promptContent: string) {\r\n            //\r\n        },\r\n        showRequestSuccess(context) {\r\n            //\r\n        },\r\n        showRequestError(context) {\r\n            //\r\n        },\r\n        setMarkerLocation(context, location: L.LatLng) {\r\n            //\r\n        },\r\n        disableMapClick(context) {\r\n            context.commit('SET_DISABLE_MAP_CLICK', true);\r\n        },\r\n        enableMapClick(context) {\r\n            context.commit('SET_DISABLE_MAP_CLICK', false);\r\n        },\r\n        dismissMobleBanner(context) {\r\n            console.log('action dismissMobleBanner');\r\n            context.commit('SET_DISMISS_MOBILE_BANNER', true);\r\n        },\r\n    },\r\n    plugins: [vuexLocal.plugin],\r\n    modules: {\r\n      config: configStore,\r\n      listings: listingStore,\r\n      layers: layerStore,\r\n      filters: filterStore,\r\n      parcels: parcelStore,\r\n      favourites: favStore,\r\n      analytics: analyticsStore,\r\n    },\r\n});\r\n","import { LogLevel } from '@azure/msal-browser';\r\n\r\nconst tenantName = 'remaxnovaapp';\r\n\r\n/**\r\n * Enter here the user flows and custom policies for your B2C application\r\n * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview\r\n * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview\r\n */\r\nexport const b2cPolicies = {\r\n    names: {\r\n        signUpSignIn: 'B2C_1_SignUpSignIn',\r\n        resetPassword: 'B2C_1_PasswordReset',\r\n    },\r\n    authorities: {\r\n        signUpSignIn: {\r\n            authority: `https://${tenantName}.b2clogin.com/${tenantName}.onmicrosoft.com/B2C_1_SignUpSignIn`,\r\n        },\r\n        resetPassword: {\r\n            authority: `https://${tenantName}.b2clogin.com/${tenantName}.onmicrosoft.com/B2C_1_PasswordReset`,\r\n        },\r\n    },\r\n    authorityDomain: `${tenantName}.b2clogin.com`,\r\n};\r\n\r\n// export const b2cPolicies = {\r\n//     names: {\r\n//         signUpSignIn: 'B2C_1A_SeamlessMigration_signuporsignin',\r\n//         resetPassword: 'B2C_1_PasswordReset',\r\n//     },\r\n//     authorities: {\r\n//         signUpSignIn: {\r\n//             authority: 'https://mapdev2.b2clogin.com/mapdev2.onmicrosoft.com/B2C_1A_SeamlessMigration_signuporsignin',\r\n//             // authority: 'https://mapdev2.b2clogin.com/mapdev2.onmicrosoft.com/B2C_1A_signup_signin',\r\n//             // authority: 'https://mapdev2.b2clogin.com/mapdev2.onmicrosoft.com/B2C_1_SignUpSignIn',\r\n//         },\r\n//         resetPassword: {\r\n//             authority: 'https://mapdev2.b2clogin.com/mapdev2.onmicrosoft.com/B2C_1_PasswordReset',\r\n//         },\r\n//     },\r\n//     authorityDomain: 'mapdev2.b2clogin.com',\r\n// };\r\n\r\n/**\r\n * Configuration object to be passed to MSAL instance on creation.\r\n * For a full list of MSAL.js configuration parameters, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\r\n * For more details on using MSAL.js with Azure AD B2C, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/working-with-b2c.md\r\n */\r\n\r\nexport const msalConfig = {\r\n    auth: {\r\n        clientId: '8dfbbc0c-9215-41a4-87fa-6234672e83c1', // remaxnova SPA app in renamxnova tenent\r\n        // clientId: 'b15e76c3-872f-4373-b254-25af490267bb', // registered as remaxtester in mapdev2 tenent\r\n        authority: b2cPolicies.authorities.signUpSignIn.authority,\r\n        knownAuthorities: [b2cPolicies.authorityDomain],\r\n        redirectUri: process.env.VUE_APP_REDIRECT_URI, // You must register this URI on Azure Portal/App Registration. Defaults to \"window.location.href\".\r\n    },\r\n    cache: {\r\n        cacheLocation: 'localStorage', // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n        storeAuthStateInCookie: false, // If you wish to store cache items in cookies as well as browser cache, set this to \"true\".\r\n    },\r\n    system: {\r\n        loggerOptions: {\r\n            loggerCallback: (level: LogLevel, message: string, containsPii: boolean) => {\r\n                if (containsPii) {\r\n                    return;\r\n                }\r\n                switch (level) {\r\n                    case LogLevel.Error:\r\n                        console.error(message);\r\n                        return;\r\n                    case LogLevel.Info:\r\n                        console.info(message);\r\n                        return;\r\n                    case LogLevel.Verbose:\r\n                        console.debug(message);\r\n                        return;\r\n                    case LogLevel.Warning:\r\n                        console.warn(message);\r\n                        return;\r\n                }\r\n            },\r\n        },\r\n    },\r\n};\r\n\r\nexport const scopes = [\r\n    `https://${tenantName}.onmicrosoft.com/f81693a0-5ce4-41e4-8857-144cee04b975/access_as_user`,\r\n    // `https://${tenantName}.onmicrosoft.com/b15e76c3-872f-4373-b254-25af490267bb/access_as_user`,\r\n];\r\n\r\n/**\r\n * Scopes you add here will be prompted for user consent during sign-in.\r\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\r\n * For more information about OIDC scopes, visit:\r\n * https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\r\n */\r\nexport const loginRequest = {\r\n    scopes: ['openid', ...scopes],\r\n};\r\n\r\n/**\r\n * Scopes you add here will be used to request a token from Azure AD B2C to be used for accessing a protected resource.\r\n * To learn more about how to work with scopes and resources, see:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\r\n */\r\nexport const tokenRequest = {\r\n    scopes: [...scopes],\r\n    forceRefresh: false, // Set this to \"true\" to skip a cached token and go to the server to get a new token\r\n};\r\n\r\nexport const buildResetRoute = () => {\r\n    const url = new URL(`https://${b2cPolicies.authorityDomain}/${tenantName}.onmicrosoft.com/oauth2/v2.0/authorize`);\r\n    url.searchParams.append('p', b2cPolicies.names.resetPassword.toUpperCase());\r\n    url.searchParams.append('client_id', msalConfig.auth.clientId);\r\n    url.searchParams.append('nonce', 'defaultNonce');\r\n    url.searchParams.append('redirect_uri', msalConfig.auth.redirectUri);\r\n    url.searchParams.append('scope', 'openid');\r\n    url.searchParams.append('response_type', 'id_token');\r\n    url.searchParams.append('prompt', 'login');\r\n    return url.href;\r\n};\r\n","import store from '../store';\r\nimport { PublicClientApplication, InteractionRequiredAuthError, SilentRequest, AccountInfo } from '@azure/msal-browser';\r\nimport { b2cPolicies, msalConfig, loginRequest, tokenRequest, buildResetRoute } from './authConfig';\r\n\r\nlet accountId = '';\r\nlet accountDetails = {};\r\nlet username = '';\r\nlet accessToken = '';\r\n\r\nconst myMSALObj = new PublicClientApplication(msalConfig);\r\n\r\nmyMSALObj.handleRedirectPromise()\r\n    .then((response: any) => {\r\n        if (response) {\r\n            /**\r\n             * For the purpose of setting an active account for UI update, we want to consider only the auth response resulting\r\n             * from SUSI flow. \"tfp\" claim in the id token tells us the policy (NOTE: legacy policies may use \"acr\" instead of \"tfp\").\r\n             * To learn more about B2C tokens, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview\r\n             */\r\n            // NOTE: custom policies seem to want to use \"acr\" too\r\n            if (response.idTokenClaims.tfp) {\r\n                if (response.idTokenClaims.tfp.toUpperCase() === b2cPolicies.names.signUpSignIn.toUpperCase()) {\r\n                    handleResponse(response);\r\n                }\r\n            } else if (response.idTokenClaims.acr) {\r\n                if (response.idTokenClaims.acr.toUpperCase() === b2cPolicies.names.signUpSignIn.toUpperCase()) {\r\n                    handleResponse(response);\r\n                }\r\n            }\r\n        }\r\n    })\r\n    .catch((error) => {\r\n        console.log(error);\r\n        // handle the forgotten PW error code\r\n        if (error.name === 'ServerError' && error.message.indexOf('AADB2C90118') !== -1) {\r\n            window.location.href = buildResetRoute();\r\n        }\r\n    });\r\n\r\nconst handleResponse = async (response: any) => {\r\n    /**\r\n     * To see the full list of response object properties, visit:\r\n     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/request-response-object.md#response\r\n     */\r\n\r\n    if (response !== null) {\r\n        setAccessToken(response.accessToken);\r\n        setAccount(response.account);\r\n    } else {\r\n        selectAccount();\r\n    }\r\n};\r\n\r\nconst setAccount = (account: any) => {\r\n    accountId = account.homeAccountId;\r\n    username = account.username;\r\n    accountDetails = account;\r\n\r\n    if (store) {\r\n        store.dispatch('setIsLoggedIn', true);\r\n        store.dispatch('initFavourites');\r\n        store.dispatch('initFilters');\r\n    }\r\n};\r\n\r\nconst setAccessToken = (token: any) => {\r\n    accessToken = token;\r\n};\r\n\r\nconst selectAccount = () => {\r\n    /**\r\n     * See here for more information on account retrieval:\r\n     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/Accounts.md\r\n     */\r\n\r\n    const currentAccounts = myMSALObj.getAllAccounts();\r\n\r\n    if (currentAccounts.length < 1) {\r\n        return;\r\n    } else if (currentAccounts.length > 1) {\r\n        /**\r\n         * Due to the way MSAL caches account objects, the auth response from initiating a user-flow\r\n         * is cached as a new account, which results in more than one account in the cache. Here we make\r\n         * sure we are selecting the account with homeAccountId that contains the sign-up/sign-in user-flow,\r\n         * as this is the default flow the user initially signed-in with.\r\n         */\r\n        // @ts-ignore\r\n        const accounts = currentAccounts.filter((account) =>\r\n            account.homeAccountId.toUpperCase().includes(b2cPolicies.names.signUpSignIn.toUpperCase())\r\n            &&\r\n            // @ts-ignore\r\n            account.idTokenClaims.iss.toUpperCase().includes(b2cPolicies.authorityDomain.toUpperCase())\r\n            &&\r\n            // @ts-ignore\r\n            account.idTokenClaims.aud === msalConfig.auth.clientId,\r\n            );\r\n\r\n        if (accounts.length > 1) {\r\n            // localAccountId identifies the entity for which the token asserts information.\r\n            if (accounts.every((account) => account.localAccountId === accounts[0].localAccountId)) {\r\n                // All accounts belong to the same user\r\n                setAccount(accounts[0]);\r\n            } else {\r\n                // Multiple users detected. Logout all to be safe.\r\n                signOut();\r\n            }\r\n        } else if (accounts.length === 1) {\r\n            setAccount(accounts[0]);\r\n        }\r\n\r\n    } else if (currentAccounts.length === 1) {\r\n        setAccount(currentAccounts[0]);\r\n    }\r\n};\r\n\r\n// in case of page refresh\r\nselectAccount();\r\n\r\n\r\nconst signIn = () => {\r\n    /**\r\n     * You can pass a custom request object below. This will override the initial configuration. For more information, visit:\r\n     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/request-response-object.md#request\r\n     */\r\n\r\n    myMSALObj.loginRedirect(loginRequest);\r\n};\r\n\r\nconst signOut = () => {\r\n    /**\r\n     * You can pass a custom request object below. This will override the initial configuration. For more information, visit:\r\n     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/request-response-object.md#request\r\n     */\r\n\r\n    const logoutRequest = {\r\n        postLogoutRedirectUri: msalConfig.auth.redirectUri,\r\n    };\r\n\r\n    myMSALObj.logoutRedirect(logoutRequest);\r\n};\r\n\r\nconst getTokenRedirect = async () => {\r\n    /**\r\n     * See here for more info on account retrieval:\r\n     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/Accounts.md\r\n     */\r\n    const request: SilentRequest = {\r\n        ...tokenRequest,\r\n        account: myMSALObj.getAccountByHomeId(accountId) as AccountInfo,\r\n    };\r\n\r\n    try {\r\n        // In case the response from B2C server has an empty accessToken field\r\n        // throw an error to initiate token acquisition\r\n        const response = await myMSALObj.acquireTokenSilent(request);\r\n        if (!response.accessToken || response.accessToken === '') {\r\n            throw new InteractionRequiredAuthError();\r\n        } else {\r\n            console.log('access_token acquired at: ' + new Date().toString());\r\n            accessToken = response.accessToken;\r\n            return accessToken;\r\n        }\r\n    } catch (error) {\r\n        console.log('Silent token acquisition fails. Acquiring token using redirect. \\n', error);\r\n        if (error instanceof InteractionRequiredAuthError) {\r\n            // fallback to interaction when silent call fails\r\n            return myMSALObj.acquireTokenRedirect(request);\r\n        } else {\r\n            console.log(error);\r\n        }\r\n    }\r\n};\r\n\r\nconst checkToken = async () => {\r\n    // https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/token-lifetimes.md#token-renewal\r\n    // this will use the access token if cached and use the refresh token if needed\r\n\r\n    const currentAccount = myMSALObj.getAccountByHomeId(accountId) as AccountInfo;\r\n    const silentRequest: SilentRequest = {\r\n        ...tokenRequest,\r\n        account: currentAccount,\r\n    };\r\n    const request = {\r\n        ...loginRequest,\r\n        loginHint: currentAccount.username,\r\n    };\r\n\r\n    const tokenResponse = await myMSALObj.acquireTokenSilent(silentRequest).catch((error) => {\r\n        if (error instanceof InteractionRequiredAuthError) {\r\n            // fallback to interaction when silent call fails\r\n            return;\r\n        }\r\n    });\r\n    if (!tokenResponse || !tokenResponse.accessToken || tokenResponse.accessToken === '') {\r\n        autoLogout();\r\n    } else {\r\n        // console.log('access_token acquired at: ' + new Date().toString());\r\n        accessToken = tokenResponse.accessToken;\r\n        return accessToken;\r\n    }\r\n};\r\n\r\nconst autoLogout = () => {\r\n    if (store) {\r\n        store.dispatch('setIsLoggedIn', false);\r\n    }\r\n};\r\n\r\n\r\nexport default {\r\n    async checkAccount() {\r\n        if (accountId && accountId !== '') {\r\n            await checkToken(); // logs out if access and refresh token are not good\r\n        }\r\n\r\n        if (store && accessToken && accessToken.length > 0) {\r\n            store.dispatch('setIsLoggedIn', true);\r\n            store.dispatch('initFavourites');\r\n            store.dispatch('initFilters');\r\n        }\r\n    },\r\n    async getAccessToken() {\r\n        await checkToken(); // logs out if access and refresh token are not good\r\n\r\n        if (accessToken && accessToken.length > 0) {\r\n            return accessToken;\r\n        }\r\n\r\n        return '';\r\n    },\r\n    login() {\r\n        signIn();\r\n    },\r\n    logout() {\r\n        signOut();\r\n    },\r\n};\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { QVueGlobals } from 'quasar';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport RemaxToolbar from '@/components/RemaxToolbar.vue';\r\nimport Drawer from '../views/Drawer.vue';\r\nimport Map from '../views/Map.vue';\r\nimport PopupMultiListing from '@/components/PopupMultiListing.vue';\r\nimport PopupParcel from '@/components/PopupParcel.vue';\r\nimport PopupSingleListing from '@/components/PopupSingleListing.vue';\r\nimport FilterDialog from '@/components/FilterDialog.vue';\r\nimport ListingDetailsDialog from '@/components/ListingDetailsDialog.vue';\r\nimport LoginPromptDialog from '@/components/LoginPromptDialog.vue';\r\nimport CrimePanel from '@/components/CrimePanel.vue';\r\nimport ParcelDetailsDialog from '@/components/ParcelDetailsDialog.vue';\r\nimport BookViewingDialog from '@/components/BookViewingDialog.vue';\r\nimport LayerManager from '@/components/LayerManager.vue';\r\nimport FavouriteManager from '@/components/FavouriteManager.vue';\r\nimport ShareDialog from '@/components/ShareDialog.vue';\r\nimport FilterManager from '@/components/FilterManager.vue';\r\nimport FilterManageButton from '@/components/FilterManageButton.vue';\r\nimport MeasureTool from '@/components/MeasureTool.vue';\r\nimport ListingFilter from '@/components/ListingFilter.vue';\r\nimport GeoLocation from '@/components/GeoLocation.vue';\r\nimport WalkTimes from '@/components/WalkTimes.vue';\r\nimport FilterSaveDialog from '@/components/FilterSaveDialog.vue';\r\nimport TryMobileBanner from '@/components/TryMobileBanner.vue';\r\nimport ListingUtil from '../utils/ListingUtil';\r\nimport Auth from '@/auth/Auth';\r\n\r\n// @ts-ignore - this thing aint got no types?!\r\nimport LightBox from 'vue-image-lightbox';\r\nimport 'vue-image-lightbox/dist/vue-image-lightbox.min.css';\r\n\r\n@Component({\r\n    components: {\r\n        RemaxToolbar,\r\n        Drawer,\r\n        Map,\r\n        PopupMultiListing,\r\n        PopupParcel,\r\n        PopupSingleListing,\r\n        FilterDialog,\r\n        ListingDetailsDialog,\r\n        LoginPromptDialog,\r\n        CrimePanel,\r\n        ParcelDetailsDialog,\r\n        BookViewingDialog,\r\n        LayerManager,\r\n        FavouriteManager,\r\n        ShareDialog,\r\n        FilterManager,\r\n        FilterManageButton,\r\n        MeasureTool,\r\n        ListingFilter,\r\n        GeoLocation,\r\n        WalkTimes,\r\n        LightBox,\r\n        FilterSaveDialog,\r\n        TryMobileBanner,\r\n    },\r\n})\r\nexport default class LayoutDefault extends Vue {\r\n    public IsLightBoxOn: boolean = false;\r\n\r\n    get lbMedia() {\r\n        const media: any = [];\r\n        if (this.$store.state.listings.selectedListingDetail) {\r\n            if (this.$store.state.listings.selectedListingDetail.PropertyImages.length > 0) {\r\n                const slides = this.$store.state.listings.selectedListingDetail.PropertyImages;\r\n                for (let i = 0; i < slides.length; i++) {\r\n                    slides[i] = ListingUtil.removeMapPostfixToImage(slides[i]);\r\n                }\r\n                for (const url of slides) {\r\n                    media.push({\r\n                        thumb: url,\r\n                        src: url,\r\n                    });\r\n                }\r\n            } else {\r\n                const slide = this.config.imageRoot + this.config.placeholdListingImg;\r\n                media.push({\r\n                    thumb: slide,\r\n                    src: slide,\r\n                });\r\n            }\r\n        }\r\n        return media;\r\n    }\r\n\r\n    get showTryMobileBanner() {\r\n        if (!(this.$q.platform.is.android || this.$q.platform.is.ios)) {\r\n            return false;\r\n        }\r\n        if (this.$store.state.isMobileBannerDismissed) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    get config() {\r\n        return this.$store.state.config;\r\n    }\r\n\r\n    public unsubscribe = this.$store.subscribeAction((action, state) => {\r\n        if (action.type === 'notify') {\r\n            this.notify(action.payload);\r\n        }\r\n        if (action.type === 'showLightBox') {\r\n            this.onShowLightBox();\r\n        }\r\n    });\r\n\r\n    public mounted() {\r\n        console.log('LayoutDefault: mounted()');\r\n        Auth.checkAccount();\r\n    }\r\n\r\n    public notify(message: any) {\r\n        this.$q.notify(message);\r\n    }\r\n\r\n    public onShowLightBox() {\r\n        // @ts-ignore - man I really want a lightbox with types\r\n\r\n        this.$refs.lightbox.showImage(0);\r\n        this.IsLightBoxOn = true;\r\n    }\r\n\r\n    public onClose() {\r\n        this.IsLightBoxOn = false;\r\n    }\r\n}\r\n\r\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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=script&lang=ts&\"; 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/ts-loader/index.js??ref--13-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Default.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Default.vue?vue&type=template&id=2cf10559&scoped=true&\"\nimport script from \"./Default.vue?vue&type=script&lang=ts&\"\nexport * from \"./Default.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Default.vue?vue&type=style&index=0&id=2cf10559&scoped=true&lang=css&\"\nimport style1 from \"./Default.vue?vue&type=style&index=1&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  \"2cf10559\",\n  null\n  \n)\n\nexport default component.exports\nimport {QLayout,QPageContainer,QFooter,QDrawer} from 'quasar'\ncomponent.options.components = Object.assign(Object.create(component.options.components || null), component.options.components || {}, {QLayout,QPageContainer,QFooter,QDrawer})\n","import Vue from 'vue';\r\nimport VueRouter, { RouteConfig } from 'vue-router';\r\nimport DefaultLayout from '../layouts/Default.vue';\r\n\r\nVue.use(VueRouter);\r\n\r\nconst routes: RouteConfig[] = [\r\n    // TODO setup url redirect in CDN so all /map routes point to /\r\n    {\r\n        path: '/',\r\n        name: 'Home',\r\n        component: DefaultLayout,\r\n    },\r\n    {\r\n        path: '/map',\r\n        name: 'Home',\r\n        component: DefaultLayout,\r\n    },\r\n];\r\n\r\nconst router = new VueRouter({\r\n    mode: 'history',\r\n    base: process.env.BASE_URL,\r\n    routes,\r\n});\r\n\r\nexport default router;\r\n","import Vue from 'vue';\r\n\r\nimport './styles/quasar.sass';\r\nimport 'quasar/dist/quasar.ie.polyfills';\r\nimport iconSet from 'quasar/icon-set/fontawesome-v5.js';\r\nimport '@quasar/extras/fontawesome-v5/fontawesome-v5.css';\r\nimport '@fortawesome/fontawesome-pro/css/fontawesome.css';\r\nimport '@fortawesome/fontawesome-pro/css/light.css';\r\nimport '@fortawesome/fontawesome-pro/css/brands.css';\r\nimport '@fortawesome/fontawesome-pro/css/solid.css';\r\nimport '@fortawesome/fontawesome-pro/css/regular.css';\r\n\r\nimport { Quasar, Dialog, Notify } from 'quasar';\r\n\r\nVue.use(Quasar, {\r\n    config: {},\r\n    components: { /* not needed if importStrategy is not 'manual' */ },\r\n    directives: { /* not needed if importStrategy is not 'manual' */ },\r\n    plugins: {\r\n        Dialog,\r\n        Notify\r\n    },\r\n    iconSet: iconSet,\r\n})","import Vue from 'vue';\r\nimport App from './App.vue';\r\nimport router from './router';\r\nimport store from './store';\r\nimport './quasar';\r\nimport VueLazyLoad from 'vue-lazyload';\r\nimport VueAnalytics from 'vue-analytics';\r\nimport L from 'leaflet';\r\n\r\n// FIX for leaflet/webpack marker bug\r\n// see https://github.com/PaulLeCam/react-leaflet/issues/255\r\n// @ts-ignore\r\ndelete L.Icon.Default.prototype._getIconUrl;\r\n\r\nL.Icon.Default.mergeOptions({\r\n    iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),\r\n    iconUrl: require('leaflet/dist/images/marker-icon.png'),\r\n    shadowUrl: require('leaflet/dist/images/marker-shadow.png'),\r\n});\r\n\r\nVue.config.productionTip = false;\r\n\r\nVue.use(VueAnalytics, {\r\n    id: process.env.NODE_ENV === 'production' ? 'UA-45336474-1' : 'UA-183774000-1',\r\n    // UA-183774000-1 is linked to chris@mapdev.ca account\r\n});\r\n\r\nVue.use(VueLazyLoad);\r\n\r\nnew Vue({\r\n    router,\r\n    store,\r\n    render: (h) => h(App),\r\n}).$mount('#app');\r\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbarActions.vue?vue&type=style&index=0&id=60e216ff&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemaxToolbarActions.vue?vue&type=style&index=0&id=60e216ff&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MeasureTool.vue?vue&type=style&index=0&id=d89bb582&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MeasureTool.vue?vue&type=style&index=0&id=d89bb582&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginPromptDialog.vue?vue&type=style&index=0&id=ccf69fa4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginPromptDialog.vue?vue&type=style&index=0&id=ccf69fa4&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SalesHistoryPanel.vue?vue&type=style&index=0&id=c66166a4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../node_modules/cache-loader/dist/cjs.js??ref--0-1!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SalesHistoryPanel.vue?vue&type=style&index=0&id=c66166a4&scoped=true&lang=css&\""],"sourceRoot":""}