{"version":3,"sources":["preventScroll.js","map.js","tooltip.js","productPrices.js"],"names":["bsd","status","document","querySelector","scrollTop","window","pageYOffset","documentElement","scrollLeft","pageXOffset","onscroll","scrollTo","initMap","mapId","endpoint","L","Map","addInitHook","this","getContainer","_leaflet_map","map","minZoom","maxZoom","tap","fitWorld","mapboxGL","attribution","style","addTo","setMarkers","poiOptions","autoPanPadding","markerIcon","icon","iconUrl","iconSize","iconAnchor","popupAnchor","ajaxRequest","XMLHttpRequest","onreadystatechange","readyState","mapMarkers","featureGroup","markers","JSON","parse","responseText","length","i","poi","marker","latitude","longitude","bindPopup","text","fitBounds","getBounds","padding","open","send","loadTooltips","querySelectorAll","forEach","tooltipWrapper","button","tooltip","popperInstance","Popper","createPopper","placement","modifiers","name","options","offset","allowedAutoPlacements","rootBoundary","show","setAttribute","setOptions","enabled","update","hide","removeAttribute","event","addEventListener","priceData","prices","reload","sessionStorage","removeItem","productId","init","cachedPrices","getItem","getPrices","fetch","area","then","response","json","setItem","stringify"],"mappings":"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","file":"scripts.min.js","sourcesContent":["function bsd(status) {\r\n var body = document.querySelector(\"body\");\r\n\r\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\r\n\r\n window.onscroll = function () { };\r\n\r\n if (status === true) {\r\n // Check window scroll exists else use traditional method\r\n if (window.onscroll !== null) {\r\n // if any scroll is attempted, set this to the previous value\r\n window.onscroll = function () {\r\n window.scrollTo(scrollLeft, scrollTop);\r\n };\r\n }\r\n } else {\r\n //body.classList.remove(\"fixed\", \"overflow-y-scroll\");\r\n window.onscroll = function () { };\r\n }\r\n}\r\n","function initMap(mapId, endpoint) {\r\n L.Map.addInitHook(function () {\r\n // Store a reference of the Leaflet map object on the map container,\r\n // so that it could be retrieved from DOM selection.\r\n // https://leafletjs.com/reference.html#map-getcontainer\r\n this.getContainer()._leaflet_map = this;\r\n });\r\n\r\n var map = L.map(mapId, {\r\n minZoom: 3,\r\n maxZoom: 18,\r\n tap: false\r\n }).fitWorld();\r\n\r\n var gl = L.mapboxGL({\r\n attribution: \"\\u003ca href=\\\"https://www.maptiler.com/copyright/\\\" target=\\\"_blank\\\"\\u003e\\u0026copy; MapTiler\\u003c/a\\u003e \\u003ca href=\\\"https://www.openstreetmap.org/copyright\\\" target=\\\"_blank\\\"\\u003e\\u0026copy; OpenStreetMap contributors\\u003c/a\\u003e\",\r\n style: 'https://api.maptiler.com/maps/76839e4d-9be2-47cb-b03f-6e3edff2fc45/style.json?key=fga3W1z8bUf9A5zJthaz'\r\n }).addTo(map);\r\n\r\n //L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\r\n // attribution: '© OpenStreetMap contributors'\r\n //}).addTo(map);\r\n\r\n setMarkers(endpoint, map);\r\n}\r\n\r\nfunction setMarkers(endpoint, map) {\r\n\r\n let poiOptions = {\r\n 'autoPanPadding': [60, 15]\r\n }\r\n\r\n var markerIcon = L.icon({\r\n iconUrl: '/dist/img/marker-icon.svg',\r\n //shadowUrl: '/dist/img/marker-shadow.png',\r\n\r\n iconSize: [25, 37],\r\n //shadowSize: [41, 41],\r\n iconAnchor: [13, 41],\r\n //shadowAnchor: [13, 41],\r\n popupAnchor: [0, -45]\r\n });\r\n\r\n var ajaxRequest = new XMLHttpRequest();\r\n ajaxRequest.onreadystatechange = function () {\r\n\r\n if (ajaxRequest.readyState == 4) {\r\n //the request is completed, now check its status\r\n if (ajaxRequest.status == 200) {\r\n var mapMarkers = L.featureGroup().addTo(map);\r\n var markers = JSON.parse(ajaxRequest.responseText);\r\n\r\n var length = markers.length;\r\n for (var i = 0; i < length; i++) {\r\n var poi = markers[i];\r\n var marker = L.marker([poi.marker.latitude, poi.marker.longitude], { icon: markerIcon });\r\n marker.bindPopup(poi.text, poiOptions);\r\n\r\n marker.addTo(mapMarkers)\r\n }\r\n\r\n if (length > 0) {\r\n map.fitBounds(mapMarkers.getBounds(), { padding: [0, 0] });\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n ajaxRequest.open('GET', endpoint);\r\n ajaxRequest.send();\r\n}\r\n","document.addEventListener('DOMContentLoaded', (event) => {\r\n loadTooltips();\r\n const button = document.querySelector('#button');\r\n const tooltip = document.querySelector('#tooltip');\r\n})\r\n\r\nfunction loadTooltips() {\r\n const tooltips = document.querySelectorAll('.tooltip-wrapper');\r\n tooltips.forEach(tooltipWrapper => {\r\n const button = tooltipWrapper.querySelector('.tooltip-button');\r\n const tooltip = tooltipWrapper.querySelector('.tooltip');\r\n\r\n const popperInstance = Popper.createPopper(button, tooltip, {\r\n placement: \"auto\",\r\n modifiers: [\r\n {\r\n name: 'offset',\r\n options: {\r\n offset: [0, 8],\r\n },\r\n },\r\n {\r\n name: \"flip\", //flips popper with allowed placements\r\n options: {\r\n allowedAutoPlacements: [\"right\", \"left\", \"top\", \"bottom\"],\r\n rootBoundary: \"viewport\"\r\n }\r\n }\r\n ],\r\n });\r\n\r\n function show() {\r\n // Make the tooltip visible\r\n tooltip.setAttribute('data-show', '');\r\n\r\n // Enable the event listeners\r\n popperInstance.setOptions((options) => ({\r\n ...options,\r\n modifiers: [\r\n ...options.modifiers,\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n }));\r\n\r\n // Update its position\r\n popperInstance.update();\r\n }\r\n\r\n function hide() {\r\n // Hide the tooltip\r\n tooltip.removeAttribute('data-show');\r\n\r\n // Disable the event listeners\r\n popperInstance.setOptions((options) => ({\r\n ...options,\r\n modifiers: [\r\n ...options.modifiers,\r\n { name: 'eventListeners', enabled: false },\r\n ],\r\n }));\r\n }\r\n\r\n const showEvents = ['click', 'focus'];\r\n const hideEvents = ['blur'];\r\n\r\n showEvents.forEach((event) => {\r\n button.addEventListener(event, show);\r\n });\r\n\r\n hideEvents.forEach((event) => {\r\n button.addEventListener(event, hide);\r\n });\r\n });\r\n}\r\n","document.addEventListener('alpine:init', () => {\r\n const priceData = {\r\n prices: {},\r\n reload() {\r\n sessionStorage.removeItem(this.productId);\r\n this.init(this.productId);\r\n },\r\n init() {\r\n const cachedPrices = JSON.parse(sessionStorage.getItem(this.productId));\r\n\r\n if (cachedPrices) {\r\n // make it accessible to x-data\r\n this.prices = cachedPrices;\r\n return;\r\n }\r\n\r\n // get product data\r\n this.getPrices()\r\n },\r\n getPrices() {\r\n fetch('/umbraco/api/pricesapi/GetProductPrice?key=' + this.productId + '&area=' + this.area)\r\n .then(response => response.json())\r\n .then(response => {\r\n this.prices = response;\r\n sessionStorage.setItem(this.productId, JSON.stringify(this.prices));\r\n sessionStorage.setItem(\"area\", this.area);\r\n });\r\n }\r\n }\r\n window.priceData = priceData;\r\n});\r\n"]}