{"version":3,"sources":["dcc.mapLegacy.js"],"names":["MapsLegacy","contentWindow","addMarkerToMap","map","location","iconPath","google","maps","Marker","position","draggable","icon","addstaticwindow","content","marker","InfoWindow","open","getServiceLocationMarkers","scope","existingQueryString","UrlSearchParams","ourQueryString","set","get","f","dataset","nodeid","document","getElementById","value","nodeId","mapIcon","addInfoWindow","mapInfoWindow","clickToShowInfo","mapClickToShowInfo","fetch","then","response","json","makers","bounds","LatLngBounds","filter","x","latitude","longitude","forEach","i","latLng","LatLng","Latitude","Longitude","Colour","id","push","extend","event","addListener","close","text","addPopupWindow","querySelector","style","display","infoSection","top","offsetTop","left","offsetLeft","fitBounds","createMultipMarkerMap","mapLatitude","mapLongitude","zoom","mapZoom","mapType","scrollWheel","mapScrollwheel","options","mapTypeId","MapTypeId","scrollwheel","disableDefaultUI","zoomControl","maxZoom","mapMaxzoom","canvas","Map","actualMode","mapMode","markers","mapMarkers","querySelectorAll","elm","pointlatitude","pointlongitude","mapcontent","addMarkersFromPage","JSON","parse","item","imageUrl","console","error","lazyLoadingScopes","bindMap","toLowerCase","parseInt","center","createSingleMarkerMap","length","scriptElm","createElement","src","mapkey","trim","tyle","appendChild","lazyLoaded","window","lazyLoadedLegacyGoogleMaps","bind","mapContainer","closest","addEventListener","mapProvider","ControlBinders","register"],"mappings":"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","sourcesContent":["const MapsLegacy = (() => {\r\n let contentWindow = null;\r\n\r\n const addMarkerToMap = (map, location, iconPath) => new google.maps.Marker({\r\n position: location,\r\n map: map,\r\n draggable: false,\r\n icon: iconPath\r\n });\r\n\r\n const addstaticwindow = (content, map, marker) => {\r\n contentWindow = new google.maps.InfoWindow({\r\n content: content\r\n });\r\n contentWindow.open(map, marker);\r\n }\r\n\r\n const addPopupWindow = (nodeId, marker, map) => {\r\n google.maps.event.addListener(marker, 'click', () => {\r\n if (typeof contentWindow === \"object\") {\r\n contentWindow.close();\r\n contentWindow = null;\r\n }\r\n\r\n fetch(`/umbraco/api/MapPointer/ServiceLocationContent?nodeId=${nodeId}`)\r\n .then(response => response.text())\r\n .then(response => addstaticwindow(response, map, marker));\r\n });\r\n }\r\n\r\n const addMarkersFromPage = (map, scope) => {\r\n const bounds = new google.maps.LatLngBounds();\r\n const icon = scope.dataset.mapIcon;\r\n\r\n document.querySelectorAll('[data-plugin=\"filteritem\"]')\r\n .forEach(elm => {\r\n const latLng = new google.maps.LatLng(elm.dataset.pointlatitude, elm.dataset.pointlongitude);\r\n\r\n const marker = new google.maps.Marker({\r\n 'position': latLng,\r\n 'icon': icon,\r\n map: map\r\n });\r\n bounds.extend(marker.position);\r\n marker.addListener('click', () => {\r\n addstaticwindow(elm.dataset.mapcontent, map, marker);\r\n });\r\n });\r\n\r\n map.fitBounds(bounds);\r\n }\r\n\r\n const getServiceLocationMarkers = (map, scope) => {\r\n const existingQueryString = new UrlSearchParams(location);\r\n const ourQueryString = new UrlSearchParams();\r\n\r\n ourQueryString.set(\"services\", existingQueryString.get(\"services\"));\r\n ourQueryString.set(\"facilities\", existingQueryString.get(\"facilities\") || existingQueryString.get(\"Condition\"));\r\n ourQueryString.set(\"nodeId\", f.dataset.nodeid);\r\n ourQueryString.set(\"sectionId\", existingQueryString.get(\"SectionId\") || document.getElementById(\"SectionId\").value);\r\n\r\n const nodeId = scope.dataset.nodeid;\r\n const icon = scope.dataset.mapIcon;\r\n const addInfoWindow = scope.dataset.mapInfoWindow;\r\n const clickToShowInfo = scope.dataset.mapClickToShowInfo;\r\n\r\n return fetch(`/umbraco/api/MapPointer/ServiceLocation?${ourQueryString}`)\r\n .then(response => response.json())\r\n .then(response => {\r\n const makers = [];\r\n const bounds = new google.maps.LatLngBounds();\r\n\r\n response\r\n .filter(x => x.latitude && x.longitude)\r\n .forEach((x, i) => {\r\n const latLng = new google.maps.LatLng(x.Latitude, x.Longitude);\r\n\r\n const marker = new google.maps.Marker({\r\n 'position': latLng,\r\n 'icon': icon + scope.Colour,\r\n map: map,\r\n id: `point${i + 1}`\r\n });\r\n makers.push(marker);\r\n bounds.extend(marker.position);\r\n\r\n if (addInfoWindow) {\r\n addPopupWindow(nodeId, marker, map);\r\n }\r\n\r\n if (clickToShowInfo) {\r\n marker.addListener('click', () => {\r\n document.querySelector(\".map-info-pop\").style.display = \"none\";\r\n\r\n const infoSection = document.getElementById(marker.get(\"id\"));\r\n infoSection.style.top = (map.offsetTop + 200);\r\n infoSection.style.left = (map.offsetLeft + 50);\r\n infoSection.style.display = \"\";\r\n });\r\n }\r\n });\r\n\r\n map.fitBounds(bounds);\r\n });\r\n }\r\n\r\n const createMultipMarkerMap = (scope) => {\r\n const latitude = scope.dataset.mapLatitude;\r\n const longitude = scope.dataset.mapLongitude;\r\n const zoom = scope.dataset.mapZoom;\r\n const mapType = scope.dataset.mapType;\r\n const icon = scope.dataset.mapIcon;\r\n const scrollWheel = scope.dataset.mapScrollwheel;\r\n\r\n const location = new google.maps.LatLng(latitude, longitude);\r\n\r\n const options = {\r\n zoom: zoom,\r\n mapTypeId: google.maps.MapTypeId[mapType],\r\n scrollwheel: scrollWheel,\r\n disableDefaultUI: true,\r\n zoomControl: true,\r\n maxZoom: scope.dataset.mapMaxzoom\r\n };\r\n\r\n const canvas = scope.querySelector(\".map\");\r\n\r\n const map = new google.maps.Map(canvas, options);\r\n\r\n const actualMode = scope.dataset.mapMode;\r\n const markers = scope.dataset.mapMarkers;\r\n\r\n if (actualMode === \"serviceLocations\") {\r\n getServiceLocationMarkers(map, scope);\r\n }\r\n else if (actualMode === \"pageread\") {\r\n addMarkersFromPage(map, scope);\r\n }\r\n else if (actualMode === \"multiple\") {\r\n addMarkerToMap(map, location, icon);\r\n\r\n if (markers) {\r\n JSON.parse(markers).forEach(item => {\r\n addMarkerToMap(map, item.position, item.imageUrl);\r\n });\r\n }\r\n }\r\n else {\r\n console.error(\"current multi-mode not supported.\");\r\n }\r\n }\r\n\r\n const createSingleMarkerMap = scope => {\r\n const latitude = scope.dataset.mapLatitude;\r\n const longitude = scope.dataset.mapLongitude;\r\n const mapType = scope.dataset.mapType;\r\n const icon = scope.dataset.mapIcon;\r\n\r\n const location = new google.maps.LatLng(latitude, longitude);\r\n\r\n const options = {\r\n zoom: parseInt(scope.dataset.mapZoom),\r\n center: location,\r\n mapTypeId: google.maps.MapTypeId[mapType],\r\n scrollwheel: scope.dataset.mapScrollwheel === \"true\"\r\n };\r\n\r\n const canvas = scope.querySelector(\".map\");\r\n\r\n const map = new google.maps.Map(canvas, options);\r\n addMarkerToMap(map, location, icon);\r\n\r\n return map;\r\n }\r\n\r\n let lazyLoadingScopes = [];\r\n\r\n const bindMap = scope => {\r\n if (typeof google !== \"object\" || typeof google.maps !== \"object\") {\r\n if (!lazyLoadingScopes.length) {\r\n const scriptElm = document.createElement(\"script\");\r\n scriptElm.src = `https://maps.googleapis.com/maps/api/js?${scope.dataset.mapkey.trim() ? `key=${scope.dataset.mapkey.trim()}&` : \"\"}callback=lazyLoadedLegacyGoogleMaps`;\r\n scriptElm.tyle = \"text/javascript\";\r\n\r\n document.querySelector(\"head\").appendChild(scriptElm);\r\n }\r\n\r\n lazyLoadingScopes.push(scope);\r\n return;\r\n }\r\n\r\n if (scope.dataset.mapMode.toLowerCase() !== 'single') {\r\n return createMultipMarkerMap(scope);\r\n }\r\n\r\n return createSingleMarkerMap(scope);\r\n }\r\n\r\n const lazyLoaded = () => {\r\n lazyLoadingScopes.forEach(scope => bindMap(scope));\r\n lazyLoadingScopes = [];\r\n }\r\n\r\n window.lazyLoadedLegacyGoogleMaps = lazyLoaded;\r\n\r\n const bind = (scope) => {\r\n if (scope.id === \"map-placeholder\") {\r\n const mapContainer = scope.closest(\".map\");\r\n\r\n scope.addEventListener(\"click\", () => {\r\n scope.style.display = \"none\";\r\n mapContainer.querySelector(\"#map-canvas\").style.display = \"\";\r\n mapContainer.dataset.mapProvider = \"google\";\r\n\r\n bindMap(mapContainer);\r\n });\r\n }\r\n else {\r\n bindMap(scope);\r\n }\r\n }\r\n\r\n return { bind, lazyLoaded };\r\n})();\r\n\r\nControlBinders.register(\"[data-map-provider='google']\", MapsLegacy.bind);\r\nControlBinders.register(\"img#map-placeholder\", MapsLegacy.bind);"],"file":"dcc.mapLegacy-min.js"}