{"version":3,"sources":["webpack:///../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./scripts/maps/map.style.js","webpack:///../node_modules/@googlemaps/js-api-loader/dist/index.esm.js","webpack:///./scripts/maps/GMap.js","webpack:///./scripts/config/google.config.js","webpack:///./scripts/maps/templates/hotel-single.template.js","webpack:///./scripts/maps/Maps.js","webpack:///./scripts/maps/templates/main.template.js","webpack:///./scripts/maps/templates/map-modal.template.js","webpack:///./scripts/maps/index.js","webpack:///../node_modules/gsap/ScrollToPlugin.js"],"names":["_arrayLikeToArray","arr","len","length","i","arr2","Array","_toConsumableArray","isArray","arrayLikeToArray","iter","Symbol","iterator","from","unsupportedIterableToArray","TypeError","_unsupportedIterableToArray","o","minLen","n","Object","prototype","toString","call","slice","constructor","name","test","fastDeepEqual","equal","a","b","keys","RegExp","source","flags","valueOf","hasOwnProperty","key","DEFAULT_ID","Loader","apiKey","channel","client","id","libraries","language","region","version","mapIds","nonce","retries","url","this","CALLBACK","callbacks","done","loading","errors","instance","options","Error","JSON","stringify","join","loadPromise","Promise","resolve","reject","loadCallback","err","fn","push","execute","document","getElementById","callback","createUrl","script","createElement","type","src","onerror","loadErrorCallback","bind","defer","async","head","appendChild","remove","deleteScript","onerrorEvent","failed","reset","e","delay","Math","pow","console","log","setTimeout","setScript","window","__googleMapsCallback","forEach","cb","resetIfRetryingFailed","google","maps","warn","setCallback","GMap","mapEle","loaderOptions","$map","Map","MapLoader","googleMapLoaderOptions","setupOptions","center","lat","lng","zoom","styles","mapStyles","disableDefaultUI","svgMarker","path","fillColor","fillOpacity","strokeWeight","rotation","scale","svgMarkerActive","markers","selectedMarker","events","init","mapEventsCreator","GoogleMap","res","rej","load","then","catch","promise","mapOptions","assign","loc","locString","split","long","setCenter","LatLng","marker","find","details","latitude","longitude","toggleMarkerActive","trim","Marker","position","icon","pin","setMap","addMarkerListener","CustomEvent","bubbles","detail","getValue","setIcon","setZIndex","dispatchEvent","event","trigger","addListener","markerClick","local","backToListBtn","goToWebsiteBtn","gsap","Flip","ScrollToPlugin","ScrollTrigger","HotelFinder","CLASS_MODAL_PRE","HotSpots","defaultHotelFinderOptions","defaultHotSpotOptions","CLASS_PRE","APIServices","API","Maps","container","$el","$container","$toolbar","$filter","$header","$body","$mapContainer","$title","$mobileBackLinkText","$hotelList","$hotelSingle","$hotelSingleDetail","$hotelSingleBackLink","isMobile","innerWidth","settings","data","dataset","value","others","filterItems","filter","hotelsLoading","hotelCat","children","hotelCatChild","grid","hotelListToggleClass","hotelListTweeingClass","hotelItemClass","hotelStateListClass","hotelList","locSingleDetail","showSingle","singleContentWidthPercent","flipGridStates","selectChildCat","fetchItems","setupHtml","setupMap","initAnimations","updateHtmls","_createContainer","_createToolBar","_createFilters","_createSingleHotelArticle","assignElems","clearMap","_createMap","display","width","autoAlpha","initGoogleMap","yPercent","xPercent","querySelector","isJson","getFetch","parseData","_createList","parse","items","dataItems","item","country","hotels","states","hotel","findIndex","state","h","map","obj","childFilter","childFilterObj","loadMap","updateMarkers","removeAllMarkers","addMarker","querySelectorAll","parallelList","classList","add","innerHTML","toolBar","backLink","setAttribute","utilities","addEventListener","callMainMenu","Ripple","filterDiv","list","_createFilterItem","_createFilterSeparator","cat","filterItem","filterTrigger","title","filterSelect","seperator","childCat","cleanHotelListItems","_createItemList","listItem","classPre","childList","childClass","child","_createHotelItem","hotelItem","class_pre","$accordianDetail","_createAccordianDetail","$accordianDetailImg","$address","$description","$link","address","description","link","selectLocation","accordianToggle","hotelDetail","singleTpl","localisationJson","showSingleSheet","height","right","top","background","mapGrid","listGrid","getListItemPrevStates","tl","onStart","onComplete","accordionReset","absolute","duration","flipAnim","stagger","nested","ease","mapReveal","$listContainer","$singleDetail","to","x","maxHeight","show","mapWidth","gridSizeCalc","transformOrigin","overwrite","gridSize","listWidth","getBoundingClientRect","$imagePanel","$image","imgSrc","imageLoaded","style","backgroundImage","filterTriggers","childFilterTriggers","updateTitle","updateSingleDetails","toggleClasses","c","childItem","$trigger","childFilterSelect","str","$titleM","scrollTo","match","featuredImage","noSingle","flipGrids","setMapCenter","$item","$panel","accordionOpen","$listItem","panelOpen","contains","$panelImg","image","open","ele","panel","parentNode","val","fi","fI","setCat","singleDetailsToggle","$mainNav","getNav","setDelayOverride","$hotspots","$mapCanvas","$spotDetail","$spotDetailClose","mapLoaderOptions","dataLoading","activeSpot","modal","modalTl","scrollController","start","onEnter","mapSetup","createHTML","makeModalTl","fetchData","initMap","updateHTMLs","_addEventListeners","createMap","createSpotDetail","spotDetail","kill","$animElems","clearProps","resetTween","paused","left","borderRadius","y","focusMap","play","reverse","offsetY","spotDetailUpdate","spot","$headerTitle","$detail","addMarkers","selectMarker","getMarkers","hotSpots","hotspots","place","openModal","closeModal","onMarkerClick","_responsiveFunc","$subNavLinks","$mobileBackLink","preventDefault","filterVal","getAttribute","$HotelSheet","$hotelsMainListItems","$itemId","overflow","_coreInitted","_window","_docEl","_body","_toArray","_config","_windowExists","_getGSAP","registerPlugin","_isString","_isFunction","_max","element","axis","dim","scroll","max","_buildGetter","p","pageXOffset","toUpperCase","_getOffset","rect","isRoot","cRect","clientTop","pageYOffset","scrollTop","clientLeft","scrollLeft","offsets","_parseVal","target","currentVal","offset","isNaN","charAt","parseFloat","substr","min","_initCore","body","documentElement","utils","toArray","config","autoKillThreshold","rawVars","register","core","tween","index","targets","isWin","nodeType","result","_clean","vars","autoKill","getX","getY","xPrev","yPrev","offsetX","_props","skipX","skipY","render","ratio","yDif","xDif","threshold","pt","_pt","r","d","_next","onAutoKill","apply","onAutoKillParams","property","both","getOffset","buildGetter"],"mappings":"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","file":"js/maps.9ecc4710da11032694d9.bundle.js","sourcesContent":["export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default [\n {\n \"featureType\": \"water\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#e9e9e9\"\n },\n {\n \"lightness\": 17\n }\n ]\n },\n {\n \"featureType\": \"landscape\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n },\n {\n \"lightness\": 20\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 17\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"geometry.stroke\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 29\n },\n {\n \"weight\": 0.2\n }\n ]\n },\n {\n \"featureType\": \"road.arterial\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 18\n }\n ]\n },\n {\n \"featureType\": \"road.local\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 16\n }\n ]\n },\n {\n \"featureType\": \"poi\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f5f5f5\"\n },\n {\n \"lightness\": 21\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#dedede\"\n },\n {\n \"lightness\": 21\n }\n ]\n },\n {\n \"elementType\": \"labels.text.stroke\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n },\n {\n \"color\": \"#ffffff\"\n },\n {\n \"lightness\": 16\n }\n ]\n },\n {\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"saturation\": 36\n },\n {\n \"color\": \"#333333\"\n },\n {\n \"lightness\": 40\n }\n ]\n },\n {\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"transit\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"color\": \"#f2f2f2\"\n },\n {\n \"lightness\": 19\n }\n ]\n },\n {\n \"featureType\": \"administrative\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#fefefe\"\n },\n {\n \"lightness\": 20\n }\n ]\n },\n {\n \"featureType\": \"administrative\",\n \"elementType\": \"geometry.stroke\",\n \"stylers\": [\n {\n \"color\": \"#fefefe\"\n },\n {\n \"lightness\": 17\n },\n {\n \"weight\": 1.2\n }\n ]\n }\n];","// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\n/**\r\n * Copyright 2019 Google LLC. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at.\r\n *\r\n * Http://www.apache.org/licenses/LICENSE-2.0.\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_ID = \"__googleMapsScriptId\";\r\n/**\r\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\r\n * dynamically using\r\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\r\n * It works by dynamically creating and appending a script node to the the\r\n * document head and wrapping the callback function so as to return a promise.\r\n *\r\n * ```\r\n * const loader = new Loader({\r\n * apiKey: \"\",\r\n * version: \"weekly\",\r\n * libraries: [\"places\"]\r\n * });\r\n *\r\n * loader.load().then(() => {\r\n * const map = new google.maps.Map(...)\r\n * })\r\n * ```\r\n */\r\nclass Loader {\r\n /**\r\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\r\n * using this library, instead the defaults are set by the Google Maps\r\n * JavaScript API server.\r\n *\r\n * ```\r\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\r\n * ```\r\n */\r\n constructor({ apiKey, channel, client, id = DEFAULT_ID, libraries = [], language, region, version, mapIds, nonce, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", }) {\r\n this.CALLBACK = \"__googleMapsCallback\";\r\n this.callbacks = [];\r\n this.done = false;\r\n this.loading = false;\r\n this.errors = [];\r\n this.version = version;\r\n this.apiKey = apiKey;\r\n this.channel = channel;\r\n this.client = client;\r\n this.id = id || DEFAULT_ID; // Do not allow empty string\r\n this.libraries = libraries;\r\n this.language = language;\r\n this.region = region;\r\n this.mapIds = mapIds;\r\n this.nonce = nonce;\r\n this.retries = retries;\r\n this.url = url;\r\n if (Loader.instance) {\r\n if (!fastDeepEqual(this.options, Loader.instance.options)) {\r\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\r\n }\r\n return Loader.instance;\r\n }\r\n Loader.instance = this;\r\n }\r\n get options() {\r\n return {\r\n version: this.version,\r\n apiKey: this.apiKey,\r\n channel: this.channel,\r\n client: this.client,\r\n id: this.id,\r\n libraries: this.libraries,\r\n language: this.language,\r\n region: this.region,\r\n mapIds: this.mapIds,\r\n nonce: this.nonce,\r\n url: this.url,\r\n };\r\n }\r\n get failed() {\r\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\r\n }\r\n /**\r\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\r\n *\r\n * @ignore\r\n */\r\n createUrl() {\r\n let url = this.url;\r\n url += `?callback=${this.CALLBACK}`;\r\n if (this.apiKey) {\r\n url += `&key=${this.apiKey}`;\r\n }\r\n if (this.channel) {\r\n url += `&channel=${this.channel}`;\r\n }\r\n if (this.client) {\r\n url += `&client=${this.client}`;\r\n }\r\n if (this.libraries.length > 0) {\r\n url += `&libraries=${this.libraries.join(\",\")}`;\r\n }\r\n if (this.language) {\r\n url += `&language=${this.language}`;\r\n }\r\n if (this.region) {\r\n url += `®ion=${this.region}`;\r\n }\r\n if (this.version) {\r\n url += `&v=${this.version}`;\r\n }\r\n if (this.mapIds) {\r\n url += `&map_ids=${this.mapIds.join(\",\")}`;\r\n }\r\n return url;\r\n }\r\n /**\r\n * Load the Google Maps JavaScript API script and return a Promise.\r\n */\r\n load() {\r\n return this.loadPromise();\r\n }\r\n /**\r\n * Load the Google Maps JavaScript API script and return a Promise.\r\n *\r\n * @ignore\r\n */\r\n loadPromise() {\r\n return new Promise((resolve, reject) => {\r\n this.loadCallback((err) => {\r\n if (!err) {\r\n resolve();\r\n }\r\n else {\r\n reject(err);\r\n }\r\n });\r\n });\r\n }\r\n /**\r\n * Load the Google Maps JavaScript API script with a callback.\r\n */\r\n loadCallback(fn) {\r\n this.callbacks.push(fn);\r\n this.execute();\r\n }\r\n /**\r\n * Set the script on document.\r\n */\r\n setScript() {\r\n if (document.getElementById(this.id)) {\r\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\r\n this.callback();\r\n return;\r\n }\r\n const url = this.createUrl();\r\n const script = document.createElement(\"script\");\r\n script.id = this.id;\r\n script.type = \"text/javascript\";\r\n script.src = url;\r\n script.onerror = this.loadErrorCallback.bind(this);\r\n script.defer = true;\r\n script.async = true;\r\n if (this.nonce) {\r\n script.nonce = this.nonce;\r\n }\r\n document.head.appendChild(script);\r\n }\r\n deleteScript() {\r\n const script = document.getElementById(this.id);\r\n if (script) {\r\n script.remove();\r\n }\r\n }\r\n /**\r\n * Reset the loader state.\r\n */\r\n reset() {\r\n this.deleteScript();\r\n this.done = false;\r\n this.loading = false;\r\n this.errors = [];\r\n this.onerrorEvent = null;\r\n }\r\n resetIfRetryingFailed() {\r\n if (this.failed) {\r\n this.reset();\r\n }\r\n }\r\n loadErrorCallback(e) {\r\n this.errors.push(e);\r\n if (this.errors.length <= this.retries) {\r\n const delay = this.errors.length * Math.pow(2, this.errors.length);\r\n console.log(`Failed to load Google Maps script, retrying in ${delay} ms.`);\r\n setTimeout(() => {\r\n this.deleteScript();\r\n this.setScript();\r\n }, delay);\r\n }\r\n else {\r\n this.onerrorEvent = e;\r\n this.callback();\r\n }\r\n }\r\n setCallback() {\r\n window.__googleMapsCallback = this.callback.bind(this);\r\n }\r\n callback() {\r\n this.done = true;\r\n this.loading = false;\r\n this.callbacks.forEach((cb) => {\r\n cb(this.onerrorEvent);\r\n });\r\n this.callbacks = [];\r\n }\r\n execute() {\r\n this.resetIfRetryingFailed();\r\n if (this.done) {\r\n this.callback();\r\n }\r\n else {\r\n // short circuit and warn if google.maps is already loaded\r\n if (window.google && window.google.maps && window.google.maps.version) {\r\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\r\n \"This may result in undesirable behavior as options and script parameters may not match.\");\r\n this.callback();\r\n return;\r\n }\r\n if (this.loading) ;\r\n else {\r\n this.loading = true;\r\n this.setCallback();\r\n this.setScript();\r\n }\r\n }\r\n }\r\n}\n\nexport { DEFAULT_ID, Loader };\n//# sourceMappingURL=index.esm.js.map\n","import * as GoogleMap from '@googlemaps/js-api-loader';\r\nimport { GOOGLE_API_KEY } from '@/scripts/config/google.config'\r\nimport mapStyles from './map.style'\r\n\r\nexport default class GMap {\r\n constructor(mapEle, loaderOptions) {\r\n this.$map = mapEle\r\n this.Map = null\r\n this.MapLoader = null\r\n this.googleMapLoaderOptions = loaderOptions\r\n this.setupOptions = {\r\n center: { lat: 41.8719, lng: 12.5674 },\r\n zoom: 7,\r\n styles: mapStyles,\r\n disableDefaultUI: true,\r\n }\r\n\r\n this.svgMarker = {\r\n path:\"M8.1 4.1c0 2.2-1.8 4-4 4s-4-1.8-4-4 1.8-4 4-4 4 1.7 4 4z\",\r\n fillColor: \"#000\",\r\n fillOpacity: 1,\r\n strokeWeight: 0,\r\n rotation: 0,\r\n scale: 1.5\r\n }\r\n\r\n this.svgMarkerActive = {\r\n path:\"M10.4 5.4c0 2.8-2.3 5.1-5.1 5.1s-5-2.4-5-5.1S2.6.3 5.4.3s5 2.3 5 5.1z\",\r\n fillColor: \"red\",\r\n fillOpacity: 1,\r\n strokeWeight: 0,\r\n rotation: 0,\r\n scale: 2\r\n }\r\n\r\n this.markers = []\r\n this.selectedMarker = null\r\n\r\n this.events = []\r\n\r\n this.init()\r\n }\r\n\r\n init() {\r\n //this.initGoogleMap()\r\n this.mapEventsCreator()\r\n }\r\n\r\n // Google maps\r\n async loadMap() {\r\n this.MapLoader = new GoogleMap.Loader({\r\n apiKey: GOOGLE_API_KEY,\r\n version: \"weekly\",\r\n ...this.googleMapLoaderOptions\r\n })\r\n\r\n const promise = await new Promise((res, rej) => {\r\n this.MapLoader.load().then(() => {\r\n res(google)\r\n }).catch((err) => {\r\n rej(err)\r\n })\r\n })\r\n\r\n return promise\r\n }\r\n\r\n setMap(google, options) {\r\n this.Map = null\r\n const mapOptions = Object.assign(this.setupOptions, options)\r\n\r\n this.Map = new google.maps.Map(this.$map, mapOptions)\r\n }\r\n\r\n setMapCenter(loc) {\r\n const locString = loc.split(\" \")\r\n const lat = locString[0]\r\n const long = locString[1]\r\n \r\n this.Map.setCenter(new google.maps.LatLng(lat, long))\r\n const marker = this.markers.find(marker => (marker.details.latitude.toString() === lat && marker.details.longitude.toString() === long))\r\n if(marker) {\r\n this.toggleMarkerActive(marker)\r\n }\r\n }\r\n\r\n\r\n getMap() {\r\n return this.Map\r\n }\r\n\r\n getMarkers() {\r\n return this.markers\r\n }\r\n\r\n addMarker(loc, details) {\r\n const locString = loc.trim().split(\" \")\r\n const lat = locString[0]\r\n const long = locString[1]\r\n\r\n const marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(lat, long),\r\n //label: labels[labelIndex++ % labels.length],\r\n icon: details.pin || this.svgMarker,\r\n details: {\r\n ...details\r\n }\r\n })\r\n marker.setMap(this.Map) \r\n this.markers.push(marker)\r\n this.addMarkerListener()\r\n return marker\r\n \r\n }\r\n\r\n removeAllMarkers() {\r\n this.selectedMarker = null\r\n this.markers.forEach((marker) => {\r\n marker.setMap(null)\r\n })\r\n this.markers = []\r\n }\r\n\r\n // Events\r\n mapEventsCreator() {\r\n\r\n this.events['markerClick'] = new CustomEvent('markerClick', {\r\n bubbles: true,\r\n detail: {\r\n getValue: () => this.selectedMarker.details\r\n }\r\n })\r\n\r\n }\r\n \r\n // Event handlers\r\n toggleMarkerActive(marker) {\r\n \r\n if(this.selectedMarker === marker) return\r\n this.selectedMarker = marker\r\n this.markers.forEach((marker) => {\r\n marker.setIcon(marker.details.pin || this.svgMarker)\r\n marker.setZIndex(1)\r\n })\r\n this.selectedMarker.setIcon(this.selectedMarker.details.pin || this.svgMarkerActive)\r\n this.selectedMarker.setZIndex(2)\r\n }\r\n\r\n markerClick(marker) {\r\n this.toggleMarkerActive(marker)\r\n this.$map.dispatchEvent(this.events['markerClick'])\r\n }\r\n\r\n // Marker Utilities\r\n selectMarker(marker) {\r\n new google.maps.event.trigger( marker, 'click' )\r\n }\r\n\r\n // Listeners\r\n addMarkerListener() {\r\n this.markers.forEach((marker) => marker.addListener(\"click\", () => this.markerClick(marker)))\r\n }\r\n}","export const GOOGLE_API_KEY = \"AIzaSyBMVUVUvF7H8eO9k2PXZpQZ4d3ld6yg83s\"","export default ({local}) => {\n console.log(local)\n return `
\n
\n

\n \n \n \n \n ${ local.backToListBtn || 'Back to list'}\n
\n
\n \n
\n
\n

\n

\n
\n
\n
${ local.goToWebsiteBtn || 'Go to website'}
\n
`\n}","import { gsap } from \"gsap\"\r\nimport { Flip } from \"gsap/Flip\"\r\nimport { ScrollToPlugin } from \"gsap/ScrollToPlugin\"\r\nimport { ScrollTrigger } from \"gsap/ScrollTrigger\"\r\nimport settings from \"@/scripts/common/settings\"\r\nimport { utilities } from \"@/scripts/common/utilities\"\r\nimport mapStyles from './map.style'\r\nimport GMap from \"./GMap\"\r\nimport Ripple from \"../ripple\"\r\n\r\nimport mainTpl from \"./templates/main.template\"\r\nimport singleTpl from \"./templates/hotel-single.template\"\r\nimport modalTpl from \"./templates/map-modal.template\"\r\n\r\nimport { API } from '@/scripts/common/api/api.services'\r\n\r\ngsap.registerPlugin(Flip)\r\ngsap.registerPlugin(ScrollToPlugin)\r\ngsap.registerPlugin(ScrollTrigger)\r\n\r\nconst CLASS_PRE = 'hotels'\r\nconst CLASS_PRE_HOTSPOTS = 'hotspots'\r\n\r\nconst APIServices = new API.Controller()\r\n\r\nexport const Maps = (() => {\r\n class HotelFinder {\r\n constructor(container) {\r\n this.$el = container\r\n this.$container = null\r\n this.$toolbar = null\r\n this.$filter = null\r\n this.$header = null\r\n this.$body = null\r\n this.$map = null\r\n this.$mapContainer = null\r\n this.$title = null\r\n this.$mobileBackLinkText = null\r\n this.$hotelList = null\r\n this.$hotelSingle = null\r\n this.$hotelSingleDetail = null\r\n this.$hotelSingleBackLink = null\r\n\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n\r\n this.data = this.$el.dataset.value\r\n this.options = Object.assign({}, defaultHotelFinderOptions.others)\r\n this.filterItems = [\r\n ...defaultHotelFinderOptions.filter\r\n ]\r\n this.hotelsLoading = false\r\n\r\n this.hotelCat = this.filterItems[0].children[0].value // default first cat value\r\n this.hotelCatChild = ''\r\n\r\n this.grid = 'list'\r\n this.hotelListToggleClass = `${CLASS_PRE}__list--compact`\r\n this.hotelListTweeingClass = `${CLASS_PRE}__list--tweening`\r\n this.hotelItemClass = `hotel-item`\r\n this.hotelStateListClass = 'state-list'\r\n this.hotelList = []\r\n this.locSingleDetail = null\r\n this.showSingle = false\r\n this.singleContentWidthPercent = window.innerWidth > 1024 ? 35 : 100\r\n\r\n // Timelines and states\r\n this.flipGridStates = null\r\n\r\n // Google maps\r\n this.Map = null\r\n this.googleMapLoaderOptions = {}\r\n\r\n\r\n\r\n this.init()\r\n }\r\n\r\n init() {\r\n this.selectChildCat()\r\n this.fetchItems()\r\n this.setupHtml()\r\n this.setupMap()\r\n this.initAnimations()\r\n this.updateHtmls()\r\n this.addListener()\r\n }\r\n\r\n setupHtml() {\r\n this._createContainer()\r\n if (this.isMobile) this._createToolBar()\r\n this._createFilters()\r\n this._createSingleHotelArticle()\r\n this.$container && this.$el.appendChild(this.$container)\r\n this.assignElems()\r\n this.$toolbar && this.$header.appendChild(this.$toolbar)\r\n this.$filter && this.$header.appendChild(this.$filter)\r\n this.$hotelSingleDetail && this.$hotelSingle.appendChild(this.$hotelSingleDetail)\r\n }\r\n\r\n setupMap() {\r\n this.clearMap()\r\n this.$mapContainer.appendChild(this._createMap())\r\n gsap.set(this.$mapContainer, { display: 'none', width: 0, autoAlpha: 0 })\r\n gsap.set(this.$map, { autoAlpha: 0 })\r\n this.initGoogleMap() // calling google maps\r\n }\r\n\r\n initAnimations() {\r\n if (!this.isMobile) {\r\n gsap.set(this.$hotelSingle, { xPercent: -100 })\r\n } else {\r\n gsap.set(this.$hotelSingle, { yPercent: 100 })\r\n }\r\n\r\n }\r\n\r\n assignElems() {\r\n this.$header = this.$header || this.$container.querySelector(`.${CLASS_PRE}__header`)\r\n this.$body = this.$body || this.$container.querySelector(`.${CLASS_PRE}__body`)\r\n this.$mapContainer = this.$mapContainer || this.$container.querySelector(`.${CLASS_PRE}__map`)\r\n this.$title = this.$title || this.$container.querySelector(`.${CLASS_PRE}__title`)\r\n this.$hotelList = this.$hotelList || this.$container.querySelector(`.${CLASS_PRE}__list`)\r\n this.$hotelSingle = this.$hotelSingle || this.$container.querySelector(`.${CLASS_PRE}__single`)\r\n }\r\n\r\n\r\n\r\n // Fethcing data\r\n async fetchItems() {\r\n\r\n if (!APIServices.isJson(this.data)) {\r\n this.hotelsLoading = true\r\n const data = await APIServices.getFetch(this.data)\r\n this.parseData(data)\r\n this._createList()\r\n this.hotelsLoading = false\r\n return\r\n }\r\n\r\n this.parseData(JSON.parse(this.data))\r\n this._createList()\r\n }\r\n // Parsing recieved data\r\n parseData(items) {\r\n const dataItems = []\r\n items.forEach((item, i) => {\r\n const country = item.country\r\n const hotels = item.hotels\r\n const states = []\r\n hotels.forEach((hotel, i) => {\r\n if (states.findIndex(state => state.name === hotel.state) === -1) { // Adding states\r\n states.push(Object.assign({\r\n name: hotel.state,\r\n hotels: hotels.filter(h => h.state === hotel.state), // Filtering hotels by the state and adding\r\n },\r\n ...this.filterItems[0].children.map((filter) => {\r\n const obj = {}\r\n if(filter.children) {\r\n Object.assign(obj,\r\n ...filter.children.map((childFilter) => {\r\n const childFilterObj = {}\r\n childFilterObj[childFilter.value] = hotels.filter(h => h.state === hotel.state && h[`${filter.value}Type`] === childFilter.value).length\r\n return childFilterObj\r\n })\r\n )\r\n } \r\n obj[filter.value] = hotels.filter(h => h.state === hotel.state && h.type === filter.value).length\r\n return obj\r\n })\r\n ))\r\n }\r\n })\r\n\r\n \r\n\r\n\r\n dataItems.push(Object.assign({\r\n name: country,\r\n states\r\n },\r\n ...this.filterItems[0].children.map((filter) => {\r\n const obj = {}\r\n if(filter.children) {\r\n Object.assign(obj,\r\n ...filter.children.map((childFilter) => {\r\n const childFilterObj = {}\r\n childFilterObj[childFilter.value] = hotels.filter((h) => h[`${filter.value}Type`] === childFilter.value).length\r\n return childFilterObj\r\n })\r\n )\r\n } \r\n obj[filter.value] = hotels.filter(h => h.type === filter.value).length\r\n return obj\r\n })\r\n ))\r\n })\r\n\r\n this.hotelList = dataItems\r\n }\r\n\r\n // Google maps\r\n\r\n async initGoogleMap() {\r\n this.Map = null\r\n this.Map = new GMap(this.$map, this.googleMapLoaderOptions)\r\n const google = await this.Map.loadMap()\r\n this.Map.setMap(google, {\r\n center: { lat: 41.8719, lng: 12.5674 },\r\n zoom: 7,\r\n styles: mapStyles\r\n })\r\n\r\n\r\n this.updateMarkers()\r\n }\r\n\r\n updateMarkers() {\r\n if (!this.Map) return\r\n this.Map.removeAllMarkers()\r\n const countryies = this.hotelList\r\n countryies.forEach((country) => {\r\n const states = country.states\r\n states.forEach(state => {\r\n const hotels = state.hotels\r\n hotels.forEach((hotel) => {\r\n if (hotel.type === this.hotelCat) {\r\n this.Map.addMarker(`${hotel.latitude} ${hotel.longitude}`, {\r\n ...hotel\r\n })\r\n }\r\n })\r\n })\r\n })\r\n }\r\n\r\n\r\n // Clears and resets\r\n cleanHotelListItems() {\r\n const $items = this.$hotelList.querySelectorAll(`.${this.hotelItemClass}`)\r\n $items.forEach(item => item.remove())\r\n }\r\n\r\n clearMap() {\r\n this.$map && this.$map.remove()\r\n }\r\n\r\n // Html cooking and preperation\r\n // Container main\r\n _createContainer() {\r\n const parallelList = this.$el.querySelector('.hotel-parallel-list')\r\n if (parallelList) parallelList.remove() // Removing SEO element\r\n document.querySelector(`.${CLASS_PRE}__container`) && document.querySelector(`.${CLASS_PRE}__container`).remove()\r\n const container = document.createElement('div')\r\n container.classList.add(`${CLASS_PRE}__container`)\r\n container.innerHTML = mainTpl()\r\n this.$container = container\r\n }\r\n\r\n // Toolbars for mobile\r\n _createToolBar() {\r\n const toolBar = document.createElement('div')\r\n toolBar.classList.add(`${CLASS_PRE}__toolbar`)\r\n const backLink = document.createElement('span')\r\n backLink.classList.add(`${CLASS_PRE}__back-link`)\r\n backLink.setAttribute('data-ripple', '')\r\n backLink.innerHTML = ` ${ utilities.localeSwitch('back', 'Back') }`\r\n backLink.addEventListener(\"click\", () => this.callMainMenu())\r\n new Ripple(backLink)\r\n\r\n this.$mobileBackLinkText = backLink.querySelector(`.${CLASS_PRE}__back-link-text`)\r\n\r\n toolBar.appendChild(backLink)\r\n this.$toolbar = toolBar\r\n }\r\n\r\n // Filters section\r\n _createFilters() {\r\n const filterDiv = document.createElement('div')\r\n filterDiv.classList.add(`${CLASS_PRE}__filter`)\r\n\r\n this.filterItems.forEach((item, i) => {\r\n const list = document.createElement('ul')\r\n list.classList.add(`${CLASS_PRE}__filter-list`)\r\n list.dataset.filter = item.name\r\n item.children.forEach(filter => {\r\n list.appendChild(this._createFilterItem(filter, item.name))\r\n })\r\n\r\n i && filterDiv.appendChild(this._createFilterSeparator())\r\n\r\n filterDiv.appendChild(list)\r\n })\r\n\r\n this.$filter = filterDiv\r\n }\r\n\r\n _createFilterItem(filter, cat) {\r\n const filterItem = document.createElement('li')\r\n filterItem.classList.add(`${CLASS_PRE}__filter-item`)\r\n const filterTrigger = document.createElement('span')\r\n filterTrigger.classList.add(`${CLASS_PRE}__filter-trigger`)\r\n filterTrigger.dataset.value = filter.value\r\n filterTrigger.innerHTML = `${filter.title}`\r\n filterTrigger.addEventListener('click', () => this.filterSelect(filter.value, cat))\r\n\r\n filterTrigger.setAttribute('data-ripple', '')\r\n new Ripple(filterTrigger)\r\n\r\n filterItem.appendChild(filterTrigger)\r\n return filterItem\r\n }\r\n\r\n _createFilterSeparator() {\r\n const seperator = document.createElement('span')\r\n seperator.classList.add(`${CLASS_PRE}__filter-seperator`)\r\n return seperator\r\n }\r\n\r\n // Creating list\r\n _createList() {\r\n const cat = this.hotelCat\r\n const childCat = this.hotelCatChild\r\n\r\n this.cleanHotelListItems()\r\n this.hotelList.forEach((hotel) => {\r\n if(childCat) {\r\n if(hotel[cat] !== 0 && hotel[childCat] !== 0) this.$hotelList.appendChild(this._createItemList(hotel, this.hotelItemClass))\r\n return\r\n }\r\n if (hotel[cat] !== 0) this.$hotelList.appendChild(this._createItemList(hotel, this.hotelItemClass))\r\n })\r\n this.updateHtmls()\r\n }\r\n\r\n // Building Hotel list\r\n _createItemList(listItem, classPre) {\r\n const item = document.createElement('li')\r\n const children = listItem.states || listItem.hotels || []\r\n item.classList.add(`${classPre}`)\r\n item.innerHTML = listItem.hotels ? `
${listItem.name}
` : `

${listItem.name}

`\r\n\r\n if (children.length) {\r\n const childList = document.createElement('ul')\r\n const childClass = listItem.hotels ? `${this.hotelStateListClass}__hotels` : `${this.hotelStateListClass}`\r\n childList.classList.add(`${childClass}`)\r\n children.forEach(child => {\r\n if (child.hotels) {\r\n if(this.hotelCatChild) {\r\n if (child[this.hotelCat] !== 0 && child[this.hotelCatChild] !== 0) childList.appendChild(this._createItemList(child, `${this.hotelStateListClass}__item`)) // recursive calling for state list\r\n return\r\n }\r\n if (child[this.hotelCat] !== 0) childList.appendChild(this._createItemList(child, `${this.hotelStateListClass}__item`)) // recursive calling for state list\r\n return\r\n }\r\n \r\n if(this.hotelCatChild) {\r\n (child.type === this.hotelCat) && (child[`${child.type}Type`] === this.hotelCatChild) && childList.appendChild(this._createHotelItem(child)) // For hotel list\r\n return\r\n }\r\n (child.type === this.hotelCat) && childList.appendChild(this._createHotelItem(child)) // For hotel list\r\n })\r\n item.appendChild(childList)\r\n }\r\n return item\r\n }\r\n\r\n // Hotel list Item\r\n _createHotelItem(hotel) {\r\n const hotelItem = document.createElement('li')\r\n hotelItem.classList.add(`${this.hotelStateListClass}__hotels-item`)\r\n hotelItem.detail = {\r\n ...hotel\r\n }\r\n hotelItem.innerHTML = `${hotel.name}\r\n \r\n \r\n `\r\n hotelItem.setAttribute('data-ripple', '')\r\n new Ripple(hotelItem)\r\n\r\n if (this.isMobile) { // Creating accordion content for mobiles\r\n const class_pre = \"hotel-detail\"\r\n const $accordianDetail = this._createAccordianDetail()\r\n const $accordianDetailImg = $accordianDetail.querySelector(`.${class_pre}__featured-image`)\r\n const $address = $accordianDetail.querySelector(`.${class_pre}__address`)\r\n const $description = $accordianDetail.querySelector(`.${class_pre}__description`)\r\n const $link = $accordianDetail.querySelector(`.${class_pre}__link`)\r\n $accordianDetailImg.setAttribute('data-image', `${hotelItem.detail[\"featuredImage\"]}`)\r\n $address.innerHTML = `${hotelItem.detail.address}`\r\n $description.innerHTML = `${hotelItem.detail.description}`\r\n $link.setAttribute('href', `${hotelItem.detail.link}`)\r\n hotelItem.appendChild($accordianDetail)\r\n }\r\n\r\n hotelItem.querySelector(`.${this.hotelStateListClass}__hotel-name`).addEventListener(\"click\", () => {\r\n this.selectLocation(hotelItem.detail, this.isMobile ? true : false)\r\n if (this.isMobile) this.accordianToggle(hotelItem)\r\n }) // Giving hotelitem click listener\r\n return hotelItem\r\n }\r\n\r\n // Create single list item\r\n _createSingleHotelArticle() {\r\n const hotelDetail = utilities.createNodeParsing(singleTpl({\r\n local: {\r\n ...window.localisationJson ? window.localisationJson[settings.locale] : ''\r\n }\r\n }))\r\n this.$hotelSingleDetail = hotelDetail\r\n this.$hotelSingleBackLink = hotelDetail.querySelector('.hotel-detail__back-link')\r\n this.$hotelSingleBackLink.setAttribute('data-ripple', '')\r\n new Ripple(this.$hotelSingleBackLink)\r\n\r\n this.$hotelSingleBackLink.addEventListener(\"click\", () => this.showSingleSheet(false))\r\n }\r\n\r\n // Accordian single component\r\n _createAccordianDetail() {\r\n const hotelDetail = utilities.createNodeParsing(singleTpl())\r\n hotelDetail.querySelector('.hotel-detail__header').remove()\r\n hotelDetail.querySelector('.hotel-detail__title').remove()\r\n return hotelDetail\r\n }\r\n\r\n // Create map\r\n _createMap() {\r\n const map = document.createElement(\"div\")\r\n map.setAttribute('id', 'hotels-map')\r\n map.classList.add('hotels-map')\r\n gsap.set(map, {\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"absolute\",\r\n right: 0,\r\n top: 0,\r\n background: 'blue'\r\n })\r\n\r\n map.innerHTML = '

Map

'\r\n\r\n this.$map = map\r\n\r\n return map\r\n }\r\n\r\n\r\n // Getting prev states of the hotel item\r\n getListItemPrevStates() {\r\n this.flipGridStates = null\r\n this.flipGridStates = Flip.getState([this.$hotelList, this.$hotelList.querySelectorAll('.hotel-item')])\r\n }\r\n\r\n // Animations Cooking and triggers\r\n flipGrids() {\r\n const mapGrid = this.grid === \"map\"\r\n const listGrid = this.grid === \"list\"\r\n this.getListItemPrevStates()\r\n !listGrid ? this.$hotelList.classList.add(`${this.hotelListToggleClass}`) : this.$hotelList.classList.remove(`${this.hotelListToggleClass}`)\r\n const tl = gsap.timeline({\r\n onStart: () => this.$hotelList.classList.add(`${this.hotelListTweeingClass}`),\r\n onComplete: () => this.$hotelList.classList.remove(`${this.hotelListTweeingClass}`)\r\n })\r\n\r\n this.showSingle && this.listGrid && this.showSingleSheet(false)\r\n this.isMobile && this.accordionReset()\r\n\r\n if (!this.isMobile)\r\n tl.add(Flip.from(this.flipGridStates, {\r\n absolute: false,\r\n duration: this.options.flipAnim ? 0.6 : 0,\r\n stagger: 0.05,\r\n nested: true,\r\n ease: 'power2.inOut',\r\n //onLeave: (e) => gsap.to(e, {duration: 1, autoAlpha: 0}),\r\n //onEnter: (e) => gsap.to(e, {duration: 1, autoAlpha: 1}),\r\n }), 'gridswitch')\r\n\r\n if (mapGrid) {\r\n tl.add(this.mapReveal(true), 'gridswitch')\r\n } else if (listGrid) {\r\n tl.add(this.mapReveal(false), 'gridswitch')\r\n }\r\n\r\n }\r\n\r\n singleDetailsToggle() {\r\n const $listContainer = this.$hotelList\r\n const $mapContainer = this.$mapContainer\r\n const $singleDetail = this.$hotelSingle\r\n const ease = 'power2.inOut'\r\n\r\n const tl = gsap.timeline()\r\n if (!this.isMobile) {\r\n tl.to($singleDetail, {\r\n duration: 0.4,\r\n xPercent: this.showSingle ? 0 : -100,\r\n ease\r\n })\r\n } else {\r\n tl.to($singleDetail, {\r\n duration: 0.4,\r\n x: 0,\r\n yPercent: this.showSingle ? 0 : 100,\r\n ease\r\n })\r\n .to($mapContainer, {\r\n duration: 0.4,\r\n height: this.showSingle ? '50%' : '100%',\r\n ease\r\n }, 0)\r\n .to($listContainer, {\r\n duration: 0.4,\r\n maxHeight: this.showSingle ? '40%' : '100%',\r\n ease\r\n }, 0)\r\n }\r\n\r\n return tl\r\n }\r\n\r\n mapReveal(show) {\r\n const mapWidth = this.gridSizeCalc().mapWidth\r\n gsap.set(this.$map, { width: mapWidth })\r\n const tl = gsap.timeline()\r\n .to(this.$mapContainer, {\r\n autoAlpha: 1,\r\n duration: 0.6,\r\n width: show ? mapWidth : 0,\r\n transformOrigin: '100% 50%',\r\n display: show ? 'block' : 'none',\r\n overwrite: 'all',\r\n ease: 'power2.inOut'\r\n })\r\n .to(this.$map, {\r\n autoAlpha: show ? 1 : 0,\r\n duration: 0.4,\r\n ease: 'power2.inOut',\r\n overwrite: 'all',\r\n }, show ? 0 : 0.2)\r\n\r\n\r\n return tl\r\n }\r\n\r\n // GridWidthCalc\r\n gridSizeCalc() {\r\n const gridSize = {\r\n listWidth: 0,\r\n mapWidth: 0\r\n }\r\n gridSize.mapWidth = this.$body.getBoundingClientRect().width - (this.$body.getBoundingClientRect().width * (this.singleContentWidthPercent / 100)) || this.$body.getBoundingClientRect().width\r\n gridSize.listWidth = (this.$body.getBoundingClientRect().width * (this.singleContentWidthPercent / 100))\r\n\r\n //if(this.isMobile) gridSize.mapWidth = window.innerWidth\r\n\r\n return gridSize\r\n }\r\n\r\n // Single detail featured image loading\r\n async featuredImage($imagePanel, src) {\r\n const class_pre = \"hotel-detail\"\r\n const $image = $imagePanel || this.$hotelSingleDetail.querySelector(`.${class_pre}__featured-image`)\r\n const imgSrc = src || this.locSingleDetail[\"featuredImage\"]\r\n $image.classList.remove(`bg-img--loaded`)\r\n $image.classList.add(`bg-img--preload-small`)\r\n let imageLoaded = ''\r\n try {\r\n imageLoaded = await utilities.loadImage(imgSrc)\r\n } catch (err) {\r\n imageLoaded = ''\r\n $image.style.backgroundImage = `url(${settings.noImageUrl})`\r\n }\r\n\r\n if (imageLoaded === 'loaded') $image.style.backgroundImage = `url(${imgSrc})`\r\n $image.classList.add(`bg-img--loaded`)\r\n $image.classList.remove(`bg-img--preload-small`)\r\n\r\n }\r\n\r\n // Class toggles\r\n toggleClasses() {\r\n const filterTriggers = this.$header.querySelectorAll(`.${CLASS_PRE}__filter-trigger`)\r\n const childFilterTriggers = this.$body.querySelectorAll(`.${CLASS_PRE}__child-filter`)\r\n filterTriggers.forEach(trigger => {\r\n trigger.dataset.value === this.hotelCat || trigger.dataset.value === this.grid ?\r\n trigger.classList.add(`${CLASS_PRE}__filter-trigger--active`) :\r\n trigger.classList.remove(`${CLASS_PRE}__filter-trigger--active`)\r\n })\r\n childFilterTriggers.forEach(trigger => {\r\n trigger.dataset.value === this.hotelCatChild ? trigger.classList.add(`${CLASS_PRE}__child-filter--active`) : trigger.classList.remove(`${CLASS_PRE}__child-filter--active`)\r\n })\r\n }\r\n\r\n // Html updates\r\n updateHtmls() {\r\n this.updateTitle()\r\n this.updateSingleDetails()\r\n this.toggleClasses()\r\n }\r\n\r\n updateTitle() {\r\n if (this.$title) {\r\n const filterItem = this.filterItems[0].children.find(c => c.value === this.hotelCat)\r\n this.$title.innerHTML = ''\r\n if(filterItem.children) {\r\n this.$title.classList.add('d-block')\r\n filterItem.children.forEach((childItem) => {\r\n const $trigger = document.createElement('span')\r\n $trigger.classList.add(`${CLASS_PRE}__child-filter`)\r\n $trigger.setAttribute('data-value', childItem.value)\r\n $trigger.innerHTML = `${childItem.title}`\r\n $trigger.addEventListener(\"click\", () => this.childFilterSelect(childItem.value))\r\n this.$title.appendChild($trigger)\r\n })\r\n } else {\r\n this.$title.innerHTML = filterItem.title\r\n }\r\n }\r\n if (this.$mobileBackLinkText) this.$mobileBackLinkText.innerHTML = this.filterItems[0].children.find(c => c.value === this.hotelCat).title\r\n }\r\n\r\n updateSingleDetails() {\r\n if (!this.$hotelSingleDetail || !this.locSingleDetail) return\r\n const class_pre = \"hotel-detail\"\r\n const detail = this.locSingleDetail\r\n const $title = this.$hotelSingleDetail.querySelector(`.${class_pre}__title`)\r\n const $titleM = this.$hotelSingleDetail.querySelector(`.${class_pre}__header-title`)\r\n const $body = this.$hotelSingleDetail.querySelector(`.${class_pre}__body`)\r\n const $address = this.$hotelSingleDetail.querySelector(`.${class_pre}__address`)\r\n const $image = this.$hotelSingleDetail.querySelector(`.${class_pre}__featured-image`)\r\n const $description = this.$hotelSingleDetail.querySelector(`.${class_pre}__description`)\r\n const $link = this.$hotelSingleDetail.querySelector(`.${class_pre}__link`)\r\n\r\n gsap.to($body, {\r\n duration: 0.3,\r\n scrollTo: 0\r\n })\r\n\r\n $title.innerHTML = detail.name || ''\r\n $titleM.innerHTML = detail.name || ''\r\n $address.innerHTML = detail.address || ''\r\n $description.innerHTML = detail.description || ''\r\n function isEmptyOrSpaces(str){\r\n return str === null || str.match(/^ *$/) !== null || str === \"null\" || str === \"Null\";\r\n }\r\n if(!isEmptyOrSpaces(`${detail.link}`)) {\r\n $link.style.display=\"inline-flex\";\r\n\r\n $link.setAttribute('href', `${detail.link}`)\r\n }\r\n else{\r\n $link.style.display=\"none\";\r\n }\r\n // $link.setAttribute('href', `${detail.link}`)\r\n this.featuredImage()\r\n }\r\n\r\n // Listeners\r\n selectLocation(detail, noSingle) {\r\n const value = detail\r\n if (!this.isMobile) {\r\n if (this.grid !== \"map\") {\r\n this.grid = \"map\"\r\n this.flipGrids()\r\n }\r\n }\r\n\r\n this.locSingleDetail = value\r\n\r\n this.Map && this.Map.setMapCenter(`${this.locSingleDetail.latitude} ${this.locSingleDetail.longitude}`)\r\n if (!noSingle) this.showSingleSheet(true)\r\n this.updateHtmls()\r\n }\r\n\r\n // Accordions\r\n accordionReset() {\r\n const $allHotelItems = this.$hotelList.querySelectorAll(`.${this.hotelStateListClass}__hotels-item`)\r\n $allHotelItems.forEach($item => {\r\n $item.classList.remove(`${this.hotelStateListClass}__hotels-item--active`)\r\n const $panel = $item.querySelector('.hotel-detail')\r\n this.accordionOpen(false, $panel)\r\n })\r\n }\r\n accordianToggle($listItem) {\r\n const panelOpen = $listItem.classList.contains(`${this.hotelStateListClass}__hotels-item--active`)\r\n const $panel = $listItem.querySelector('.hotel-detail')\r\n const $panelImg = $listItem.querySelector('.hotel-detail__featured-image')\r\n\r\n this.accordionReset()\r\n if (!panelOpen) {\r\n $listItem.classList.add(`${this.hotelStateListClass}__hotels-item--active`)\r\n this.accordionOpen(true, $panel)\r\n\r\n if (!$panelImg.classList.contains('bg-img--loaded')) {\r\n this.featuredImage($panelImg, $panelImg.dataset.image)\r\n }\r\n } else {\r\n $listItem.classList.remove(`${this.hotelStateListClass}__hotels-item--active`)\r\n this.accordionOpen(false, $panel)\r\n }\r\n\r\n }\r\n\r\n accordionOpen(open, ele) {\r\n const panel = ele\r\n gsap.to(panel, {\r\n duration: 0.3,\r\n height: open ? 'auto' : 0,\r\n onComplete: () => {\r\n if (open) gsap.to(this.$hotelList, {\r\n duration: 0.3,\r\n scrollTo: panel.parentNode\r\n })\r\n }\r\n })\r\n }\r\n\r\n // cat set\r\n setCat(val) {\r\n this.hotelCat = val\r\n this.selectChildCat()\r\n this._createList()\r\n this.showSingleSheet(false)\r\n this.updateMarkers()\r\n this.updateHtmls()\r\n }\r\n\r\n selectChildCat(val) {\r\n if(val) {\r\n this.hotelCatChild = val\r\n return\r\n }\r\n let childCat = ''\r\n const catFilters = this.filterItems.find((fi) => fi.name === \"catFilter\")\r\n catFilters.children.forEach((fI) => {\r\n if(fI.value === this.hotelCat && fI.children?.length ) {\r\n childCat = fI.children[0].value\r\n return\r\n }\r\n childCat = ''\r\n })\r\n\r\n this.hotelCatChild = childCat\r\n }\r\n\r\n // Filter click event\r\n filterSelect(val, cat) {\r\n\r\n switch (cat) {\r\n case \"catFilter\":\r\n if (this.hotelCat === val) return\r\n this.setCat(val)\r\n break\r\n case \"gridFilter\":\r\n if (this.grid === val) return\r\n this.grid = val\r\n this.updateHtmls() // Update htmls which will update classes for grids\r\n this.showSingleSheet(false)\r\n this.flipGrids()\r\n break\r\n default:\r\n this.hotelCat = null\r\n this.grid = null\r\n }\r\n\r\n }\r\n\r\n childFilterSelect(val) {\r\n this.selectChildCat(val)\r\n this._createList()\r\n this.showSingleSheet(false)\r\n this.updateMarkers()\r\n this.updateHtmls()\r\n }\r\n\r\n // Single Show click\r\n showSingleSheet(show) {\r\n this.showSingle = show\r\n this.showSingle ? this.$hotelList.classList.add(`${CLASS_PRE}__list--hidden`) : this.$hotelList.classList.remove(`${CLASS_PRE}__list--hidden`)\r\n this.singleDetailsToggle()\r\n }\r\n\r\n // Main menu call\r\n callMainMenu() {\r\n const $mainNav = document.querySelector('#side-nav')\r\n if ($mainNav) {\r\n $mainNav.getNav().setDelayOverride(true)\r\n $mainNav.getNav().open()\r\n $mainNav.getNav().setDelayOverride(false)\r\n }\r\n }\r\n\r\n // Listeners\r\n addListener() {\r\n this.$map.addEventListener(\"markerClick\", (e) => this.selectLocation(e.detail.getValue()))\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n // Hot spots map\r\n const CLASS_MODAL_PRE = \"map-modal\"\r\n class HotSpots {\r\n constructor(container) {\r\n this.$hotspots = container\r\n this.$mapCanvas = null\r\n this.$spotDetail = null\r\n this.$spotDetailClose = null\r\n this.Map = null\r\n this.mapLoaderOptions = {}\r\n this.data = this.$hotspots.dataset.value\r\n this.dataLoading = false\r\n this.activeSpot = null\r\n this.modal = false\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n this.modalTl = null\r\n this.options = Object.assign({}, {\r\n ...defaultHotSpotOptions\r\n })\r\n this.scrollController = null\r\n this.init()\r\n }\r\n\r\n init() {\r\n this.scrollController = ScrollTrigger.create({\r\n start: 'top 80%',\r\n trigger: this.$hotspots,\r\n onEnter: () => {\r\n !this.$mapCanvas && this.mapSetup()\r\n }\r\n })\r\n\r\n }\r\n\r\n async mapSetup() {\r\n this.createHTML()\r\n this.makeModalTl()\r\n await this.fetchData()\r\n this.initMap()\r\n this.updateHTMLs()\r\n this._addEventListeners()\r\n }\r\n\r\n // Create Htmls\r\n\r\n createHTML() {\r\n this.createMap()\r\n this.createSpotDetail()\r\n }\r\n\r\n createMap() {\r\n if (this.$mapCanvas) this.$mapCanvas.remove()\r\n this.$mapCanvas = document.createElement('div')\r\n this.$mapCanvas.classList.add(`${CLASS_PRE_HOTSPOTS}__map`)\r\n this.$hotspots.appendChild(this.$mapCanvas)\r\n }\r\n\r\n createSpotDetail() {\r\n const spotDetail = utilities.createNodeParsing(modalTpl({\r\n local: {\r\n ...window.localisationJson ? window.localisationJson[settings.locale] : ''\r\n }\r\n }))\r\n this.$spotDetail = spotDetail\r\n this.$spotDetailClose = this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__close`)\r\n this.$spotDetailClose.setAttribute('data-ripple', '')\r\n this.$spotDetailClose.setAttribute('data-ripple-center', 'true')\r\n new Ripple(this.$spotDetailClose)\r\n this.$hotspots.appendChild(this.$spotDetail)\r\n }\r\n\r\n // Modal Animation\r\n resetTween() {\r\n this.modalTl.kill()\r\n const $animElems = [this.$spotDetail,\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__title`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__detail`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__description`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__featured-image`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__action`)]\r\n\r\n gsap.set($animElems, { clearProps: \"all\" });\r\n this.modalTl = null\r\n }\r\n\r\n makeModalTl() {\r\n if (this.modalTl) this.resetTween()\r\n this.modalTl = new gsap.timeline({ paused: true })\r\n const $animElems = [this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__title`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__detail`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__description`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__featured-image`),\r\n this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__action`)]\r\n\r\n this.modalTl.from(this.$spotDetail, {\r\n duration: 0.5,\r\n ease: 'power2.inOut',\r\n autoAlpha: 0,\r\n //y: 50,\r\n xPercent: -50,\r\n left: '50%',\r\n scale: 0,\r\n borderRadius: '50%',\r\n display: 'none'\r\n })\r\n .from($animElems, {\r\n duration: 0.4,\r\n y: 50,\r\n stagger: 0.1,\r\n autoAlpha: 0,\r\n ease: 'power2.inOut'\r\n }, 0.1)\r\n }\r\n\r\n // Modal Actions\r\n openModal() {\r\n this.modal = true\r\n this.focusMap()\r\n this.modalTl.play()\r\n }\r\n\r\n closeModal() {\r\n this.modal = false\r\n this.modalTl.reverse()\r\n }\r\n\r\n // UI actions\r\n focusMap() {\r\n gsap.to(window, {\r\n duration: 0.3,\r\n scrollTo: {\r\n y: this.$hotspots,\r\n offsetY: 150\r\n }\r\n })\r\n }\r\n\r\n // Update Html\r\n updateHTMLs() {\r\n this.spotDetailUpdate()\r\n }\r\n\r\n spotDetailUpdate() {\r\n if (!this.$spotDetail || !this.activeSpot) return\r\n const spot = this.activeSpot\r\n const $title = this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__title`)\r\n const $headerTitle = this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__header-title`)\r\n const $detail = this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__detail`)\r\n const $body = this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__body`)\r\n const $description = this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__description`)\r\n const $link = this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__link`)\r\n\r\n $title.innerHTML = spot.name || ''\r\n $headerTitle.innerHTML = spot.name || ''\r\n $detail.innerHTML = spot.details || ''\r\n $description.innerHTML = spot.description || ''\r\n function isEmptyOrSpaces(str){\r\n return str === null || str.match(/^ *$/) !== null || str === \"null\" || str === \"Null\";\r\n }\r\n if(!isEmptyOrSpaces(`${spot.link}`)) {\r\n $link.style.display=\"inline-flex\";\r\n\r\n $link.setAttribute('href', `${spot.link}`)\r\n }\r\n else{\r\n $link.style.display=\"none\";\r\n }\r\n // $link.setAttribute('href', `${spot.link}`)\r\n this.featuredImage()\r\n }\r\n\r\n async featuredImage($imagePanel, src) {\r\n const $image = $imagePanel || this.$spotDetail.querySelector(`.${CLASS_MODAL_PRE}__featured-image`)\r\n const imgSrc = src || this.activeSpot[\"image\"]\r\n $image.classList.remove(`bg-img--loaded`)\r\n $image.classList.add(`bg-img--preload-small`)\r\n let imageLoaded = ''\r\n try {\r\n imageLoaded = await utilities.loadImage(imgSrc)\r\n } catch (err) {\r\n imageLoaded = ''\r\n $image.style.backgroundImage = `url(${settings.noImageUrl})`\r\n }\r\n\r\n if (imageLoaded === 'loaded') $image.style.backgroundImage = `url(${imgSrc})`\r\n $image.classList.add(`bg-img--loaded`)\r\n $image.classList.remove(`bg-img--preload-small`)\r\n }\r\n\r\n // Map\r\n async initMap() {\r\n\r\n this.Map = null\r\n this.Map = new GMap(this.$mapCanvas, this.mapLoaderOptions)\r\n const google = await this.Map.loadMap()\r\n this.Map.setMap(google, {\r\n center: { lat: this.data.latitude, lng: this.data.longitude },\r\n zoom: 12,\r\n styles: mapStyles\r\n })\r\n this.addMarkers()\r\n\r\n if (!this.isMobile) this.Map.selectMarker(this.Map.getMarkers()[0]) // For displaying initial modal on start\r\n }\r\n\r\n // Markers\r\n addMarkers() {\r\n const hotSpots = this.data.hotspots\r\n // Main Marker\r\n\r\n this.Map?.addMarker(`${this.data.latitude} ${this.data.longitude}`, {\r\n latitude: this.data.latitude,\r\n longitude: this.data.longitude,\r\n name: this.data.name || this.data.place,\r\n link: this.data.link,\r\n description: this.data.description,\r\n image: this.data.image,\r\n details: this.data.details,\r\n pin: this.data.pin\r\n })\r\n hotSpots.forEach(spot => {\r\n this.Map.addMarker(`${spot.latitude} ${spot.longitude}`, {\r\n ...spot\r\n })\r\n })\r\n }\r\n\r\n // Fethcing data\r\n async fetchData() {\r\n if (!APIServices.isJson(this.data)) {\r\n this.dataLoading = true\r\n return APIServices.getFetch(this.data)\r\n .then((data) => {\r\n this.parseData(data)\r\n this.dataLoading = false\r\n })\r\n }\r\n return this.parseData(JSON.parse(this.data))\r\n }\r\n\r\n parseData(data) {\r\n this.data = data\r\n }\r\n\r\n // Callbacks\r\n onMarkerClick(e) {\r\n const value = e.detail.getValue()\r\n this.activeSpot = value\r\n this.Map && this.Map.setMapCenter(`${this.activeSpot.latitude} ${this.activeSpot.longitude}`)\r\n this.updateHTMLs()\r\n if (!this.modal) this.openModal()\r\n }\r\n\r\n _responsiveFunc() {\r\n return utilities.debounce(() => {\r\n // Resize actions\r\n this.isMobile = window.innerWidth < settings.breakpoints.mobile\r\n if (this.modal) this.closeModal()\r\n this.makeModalTl()\r\n }, 250)\r\n }\r\n\r\n _addEventListeners() {\r\n this.$mapCanvas.addEventListener(\"markerClick\", (e) => this.onMarkerClick(e))\r\n this.$spotDetailClose.addEventListener(\"click\", () => this.modal && this.closeModal())\r\n\r\n window.addEventListener('resize', this._responsiveFunc())\r\n }\r\n }\r\n\r\n\r\n const defaultHotelFinderOptions = {\r\n filter: [{\r\n name: 'catFilter',\r\n children: [{\r\n title: 'Hotel, Resort & Villas',\r\n value: 'resorts'\r\n }, {\r\n title: 'Restaurants ',\r\n value: 'restaurants',\r\n // children: [{\r\n // title: 'Restuarants',\r\n // value: 'restuarants'\r\n // },{\r\n // title: 'Bars',\r\n // value: 'bars'\r\n // }]\r\n }]\r\n }, {\r\n name: 'gridFilter',\r\n children: [{\r\n title: 'Map',\r\n value: 'map'\r\n }, {\r\n title: 'List',\r\n value: 'list'\r\n }]\r\n }],\r\n\r\n others: {\r\n flipAnim: true\r\n },\r\n ...window.defaultHotelFinderOptions\r\n }\r\n\r\n const defaultHotSpotOptions = {\r\n\r\n }\r\n\r\n return {\r\n HotelFinder,\r\n HotSpots\r\n }\r\n})()","export default () => {\n return `
\n
\n

Title

\n \n
\n
\n
`\n}","export default ({local}) => {\n return `
\n
\n

\n \n \n \n \n \n
\n
\n
\n

\n

\n

\n
\n \n
\n
${ local.goToWebsiteBtn || 'Go to website'}
\n
`\n}","import {Maps} from './Maps'\r\n\r\n\r\n(function () {\r\n // Function to call main menu from hotels\r\n function callMainMenu(e) {\r\n e.preventDefault()\r\n const $mainNav = document.querySelector('#side-nav')\r\n if ($mainNav) {\r\n $mainNav.getNav().setDelayOverride(true)\r\n $mainNav.getNav().open()\r\n $mainNav.getNav().setDelayOverride(false)\r\n }\r\n }\r\n \r\n // Hotels Group\r\n if (document.querySelector('#hotels')) {\r\n const $subNavLinks = document.querySelectorAll('[href*=\"#hotels?\"]')\r\n const $mobileBackLink = document.querySelector('#hotels .mobile-back-link')\r\n \r\n $subNavLinks.forEach(function ($link) {\r\n $link.addEventListener('click', function (e) {\r\n e.preventDefault()\r\n const filterVal = this.getAttribute('href').split('?')[1]\r\n const $HotelSheet = document.querySelector('#hotel-list-sheet')\r\n const $hotelsMainListItems = document.querySelectorAll('.hotels__main-list-item')\r\n $HotelSheet.getNav().setDelayOverride(true)\r\n $HotelSheet.getNav().open()\r\n $HotelSheet.getNav().setDelayOverride(false)\r\n \r\n $hotelsMainListItems.forEach(($item) => {\r\n const $itemId = $item.getAttribute('id')\r\n\r\n console.log($itemId === `main-${filterVal}`)\r\n if($itemId === `${filterVal}`) {\r\n $item.style.display = 'block'\r\n $item.style.overflow = 'auto'\r\n return\r\n }\r\n $item.style.overflow = 'hidden'\r\n $item.style.display = 'none'\r\n }) // Reset items\r\n \r\n })\r\n })\r\n\r\n $mobileBackLink?.addEventListener('click', callMainMenu)\r\n }\r\n \r\n if(document.querySelector('#hotspots')){\r\n new Maps.HotSpots(document.querySelector('#hotspots'))\r\n }\r\n\r\n})()\r\n\r\n","/*!\n * ScrollToPlugin 3.6.1\n * https://greensock.com\n *\n * @license Copyright 2008-2021, GreenSock. All rights reserved.\n * Subject to the terms at https://greensock.com/standard-license or for\n * Club GreenSock members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar gsap,\n _coreInitted,\n _window,\n _docEl,\n _body,\n _toArray,\n _config,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _getGSAP = function _getGSAP() {\n return gsap || _windowExists() && (gsap = window.gsap) && gsap.registerPlugin && gsap;\n},\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _max = function _max(element, axis) {\n var dim = axis === \"x\" ? \"Width\" : \"Height\",\n scroll = \"scroll\" + dim,\n client = \"client\" + dim;\n return element === _window || element === _docEl || element === _body ? Math.max(_docEl[scroll], _body[scroll]) - (_window[\"inner\" + dim] || _docEl[client] || _body[client]) : element[scroll] - element[\"offset\" + dim];\n},\n _buildGetter = function _buildGetter(e, axis) {\n //pass in an element and an axis (\"x\" or \"y\") and it'll return a getter function for the scroll position of that element (like scrollTop or scrollLeft, although if the element is the window, it'll use the pageXOffset/pageYOffset or the documentElement's scrollTop/scrollLeft or document.body's. Basically this streamlines things and makes a very fast getter across browsers.\n var p = \"scroll\" + (axis === \"x\" ? \"Left\" : \"Top\");\n\n if (e === _window) {\n if (e.pageXOffset != null) {\n p = \"page\" + axis.toUpperCase() + \"Offset\";\n } else {\n e = _docEl[p] != null ? _docEl : _body;\n }\n }\n\n return function () {\n return e[p];\n };\n},\n _clean = function _clean(value, index, target, targets) {\n _isFunction(value) && (value = value(index, target, targets));\n\n if (typeof value !== \"object\") {\n return _isString(value) && value !== \"max\" && value.charAt(1) !== \"=\" ? {\n x: value,\n y: value\n } : {\n y: value\n }; //if we don't receive an object as the parameter, assume the user intends \"y\".\n } else if (value.nodeType) {\n return {\n y: value,\n x: value\n };\n } else {\n var result = {},\n p;\n\n for (p in value) {\n result[p] = p !== \"onAutoKill\" && _isFunction(value[p]) ? value[p](index, target, targets) : value[p];\n }\n\n return result;\n }\n},\n _getOffset = function _getOffset(element, container) {\n element = _toArray(element)[0];\n\n if (!element || !element.getBoundingClientRect) {\n return console.warn(\"scrollTo target doesn't exist. Using 0\") || {\n x: 0,\n y: 0\n };\n }\n\n var rect = element.getBoundingClientRect(),\n isRoot = !container || container === _window || container === _body,\n cRect = isRoot ? {\n top: _docEl.clientTop - (_window.pageYOffset || _docEl.scrollTop || _body.scrollTop || 0),\n left: _docEl.clientLeft - (_window.pageXOffset || _docEl.scrollLeft || _body.scrollLeft || 0)\n } : container.getBoundingClientRect(),\n offsets = {\n x: rect.left - cRect.left,\n y: rect.top - cRect.top\n };\n\n if (!isRoot && container) {\n //only add the current scroll position if it's not the window/body.\n offsets.x += _buildGetter(container, \"x\")();\n offsets.y += _buildGetter(container, \"y\")();\n }\n\n return offsets;\n},\n _parseVal = function _parseVal(value, target, axis, currentVal, offset) {\n return !isNaN(value) && typeof value !== \"object\" ? parseFloat(value) - offset : _isString(value) && value.charAt(1) === \"=\" ? parseFloat(value.substr(2)) * (value.charAt(0) === \"-\" ? -1 : 1) + currentVal - offset : value === \"max\" ? _max(target, axis) - offset : Math.min(_max(target, axis), _getOffset(value, target)[axis] - offset);\n},\n _initCore = function _initCore() {\n gsap = _getGSAP();\n\n if (_windowExists() && gsap && document.body) {\n _window = window;\n _body = document.body;\n _docEl = document.documentElement;\n _toArray = gsap.utils.toArray;\n gsap.config({\n autoKillThreshold: 7\n });\n _config = gsap.config();\n _coreInitted = 1;\n }\n};\n\nexport var ScrollToPlugin = {\n version: \"3.6.1\",\n name: \"scrollTo\",\n rawVars: 1,\n register: function register(core) {\n gsap = core;\n\n _initCore();\n },\n init: function init(target, value, tween, index, targets) {\n _coreInitted || _initCore();\n var data = this;\n data.isWin = target === _window;\n data.target = target;\n data.tween = tween;\n value = _clean(value, index, target, targets);\n data.vars = value;\n data.autoKill = !!value.autoKill;\n data.getX = _buildGetter(target, \"x\");\n data.getY = _buildGetter(target, \"y\");\n data.x = data.xPrev = data.getX();\n data.y = data.yPrev = data.getY();\n\n if (value.x != null) {\n data.add(data, \"x\", data.x, _parseVal(value.x, target, \"x\", data.x, value.offsetX || 0), index, targets);\n\n data._props.push(\"scrollTo_x\");\n } else {\n data.skipX = 1;\n }\n\n if (value.y != null) {\n data.add(data, \"y\", data.y, _parseVal(value.y, target, \"y\", data.y, value.offsetY || 0), index, targets);\n\n data._props.push(\"scrollTo_y\");\n } else {\n data.skipY = 1;\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt,\n target = data.target,\n tween = data.tween,\n autoKill = data.autoKill,\n xPrev = data.xPrev,\n yPrev = data.yPrev,\n isWin = data.isWin,\n x,\n y,\n yDif,\n xDif,\n threshold;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n x = isWin || !data.skipX ? data.getX() : xPrev;\n y = isWin || !data.skipY ? data.getY() : yPrev;\n yDif = y - yPrev;\n xDif = x - xPrev;\n threshold = _config.autoKillThreshold;\n\n if (data.x < 0) {\n //can't scroll to a position less than 0! Might happen if someone uses a Back.easeOut or Elastic.easeOut when scrolling back to the top of the page (for example)\n data.x = 0;\n }\n\n if (data.y < 0) {\n data.y = 0;\n }\n\n if (autoKill) {\n //note: iOS has a bug that throws off the scroll by several pixels, so we need to check if it's within 7 pixels of the previous one that we set instead of just looking for an exact match.\n if (!data.skipX && (xDif > threshold || xDif < -threshold) && x < _max(target, \"x\")) {\n data.skipX = 1; //if the user scrolls separately, we should stop tweening!\n }\n\n if (!data.skipY && (yDif > threshold || yDif < -threshold) && y < _max(target, \"y\")) {\n data.skipY = 1; //if the user scrolls separately, we should stop tweening!\n }\n\n if (data.skipX && data.skipY) {\n tween.kill();\n data.vars.onAutoKill && data.vars.onAutoKill.apply(tween, data.vars.onAutoKillParams || []);\n }\n }\n\n if (isWin) {\n _window.scrollTo(!data.skipX ? data.x : x, !data.skipY ? data.y : y);\n } else {\n data.skipY || (target.scrollTop = data.y);\n data.skipX || (target.scrollLeft = data.x);\n }\n\n data.xPrev = data.x;\n data.yPrev = data.y;\n },\n kill: function kill(property) {\n var both = property === \"scrollTo\";\n\n if (both || property === \"scrollTo_x\") {\n this.skipX = 1;\n }\n\n if (both || property === \"scrollTo_y\") {\n this.skipY = 1;\n }\n }\n};\nScrollToPlugin.max = _max;\nScrollToPlugin.getOffset = _getOffset;\nScrollToPlugin.buildGetter = _buildGetter;\n_getGSAP() && gsap.registerPlugin(ScrollToPlugin);\nexport { ScrollToPlugin as default };"],"sourceRoot":""}