{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/ViewerService.ts","webpack:///./src/components/Map.vue?2e63","webpack:///./src/assets/icons/google_chrome.svg","webpack:///./src/assets/icons/rooms.svg","webpack:///./src/assets/icons/opera.svg","webpack:///./src/components/ErrorPage.vue?05dc","webpack:///./src/helpers/supportedBrowsers.ts","webpack:///./src/services/MapService.ts","webpack:///./src/assets/icons/logo-yslab.svg","webpack:///./src/helpers/assetsVersionForCache.ts","webpack:///./src/assets/icons/area.svg","webpack:///./src/components/NotSupportedBrowser.vue?568f","webpack:///./src/assets/icons/floor.svg","webpack:///./src/services/ApartmentService.ts","webpack:///./src/helpers/decrypt-resimo-data.ts","webpack:///./src/services/ResimoService.ts","webpack:///./src/helpers/getDefaultMarkerNameFromMarkersArray.ts","webpack:///./src/helpers/idGenerator.ts","webpack:///./src/transformers/transformNameIntoLabel.ts","webpack:///./src/transformers/MarkersConfigTransformer.ts","webpack:///./src/services/AppService.ts","webpack:///./src/components/RotateTooltip.vue?9300","webpack:///./src/components/icons/CloseIcon.vue?703f","webpack:///./src/assets/icons/mozilla_firefox.svg","webpack:///./src/helpers/mobile-device-detect.ts","webpack:///./src/services/RouteService.ts","webpack:///./src/App.vue","webpack:///./src/components/Map.vue","webpack:///./src/components/icons/CloseIcon.vue","webpack:///./src/components/icons/CloseIcon.vue?b1ff","webpack:///./src/components/icons/CloseIcon.vue?329b","webpack:///./src/components/icons/CloseIcon.vue?1321","webpack:///./src/components/Map.vue?4cdb","webpack:///./src/components/Map.vue?d2de","webpack:///./src/components/Map.vue?718c","webpack:///./src/components/Loader.vue","webpack:///./src/components/Loader.vue?4753","webpack:///./src/components/Loader.vue?5ff8","webpack:///./src/components/Loader.vue?4f5b","webpack:///./src/components/YslabLogo.vue","webpack:///./src/components/YslabLogo.vue?e67f","webpack:///./src/components/YslabLogo.vue?cdbb","webpack:///./src/components/YslabLogo.vue?3f43","webpack:///./src/components/Compass.vue","webpack:///./src/components/Compass.vue?ef27","webpack:///./src/components/Compass.vue?5b3a","webpack:///./src/components/Compass.vue?228a","webpack:///./src/components/ErrorPage.vue","webpack:///./src/components/ErrorPage.vue?4c4a","webpack:///./src/components/ErrorPage.vue?468e","webpack:///./src/components/ErrorPage.vue?392b","webpack:///./src/components/RotateTooltip.vue","webpack:///./src/components/RotateTooltip.vue?e801","webpack:///./src/components/RotateTooltip.vue?8e55","webpack:///./src/components/RotateTooltip.vue?42c5","webpack:///./src/components/NotSupportedBrowser.vue","webpack:///./src/components/NotSupportedBrowser.vue?fa61","webpack:///./src/components/NotSupportedBrowser.vue?75a2","webpack:///./src/components/NotSupportedBrowser.vue?97c8","webpack:///./src/App.vue?dad8","webpack:///./src/App.vue?0083","webpack:///./src/App.vue?315a","webpack:///./src/main.ts","webpack:///./src/components/YslabLogo.vue?756a","webpack:///./src/App.vue?7f9b","webpack:///./src/components/Compass.vue?bdaf"],"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","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","Image","loadImage","url","viewerService","room","defaultRoom","thisImg","this","xhr","XMLHttpRequest","open","responseType","setDefaultRoomLoadingFinished","loadingData","imagesLoadedCount","loadedImages","imagesToLoadCount","setOtherRoomsLoadingFinished","blob","Blob","response","URL","createObjectURL","onprogress","setDefaultRoomLoadingProgress","Math","ceil","loaded","total","onloadstart","setLoadingViewError","send","ViewerService","constructor","viewerConfig","rooms","started","finished","loadingProgress","otherRooms","config","initRooms","setActiveRoom","roomName","resetActiveRoomRotation","forEach","active","roomData","createRoom","loadDefaultRoom","label","image","texture","imgPath","markers","default","getDefaultRoomName","defaultRotation","rotation","currentRotation","floor","find","setDefaultRoomLoadingStarted","loadRoomImage","loadMissingRooms","setOtherRoomsLoadingStarted","val","activeRoom","getActiveRoom","state","getDefaultRoomLoadingProgress","defaultRoomName","getActiveRoomPhoto","getActiveRoomMarkers","setRoomTexture","activeRoomIndex","findIndex","_detectWebpSuppot","browser","browserName","toLowerCase","version","Number","browserVersion","split","toDataURL","indexOf","isWebpSupported","getImageExtension","hasWebpImages","getMapImageExtension","checkBrowserSupport","os","osName","notSupportedDesktop","chrome","below","opera","firefox","safari","edge","fullySupported","yandex","notSupported","ie","notSupportedMobile","ios","android","rules","isMobile","isNaN","MapService","mapConfig","points","initPoints","setActivePoint","point","mapPoint","defaultPoint","position","top","left","getPoints","getImagePathWithSupportedExtension","path","extension","replace","getMapData","basePath","pathData","map","verQuery","ver","process","ApartmentService","apartment","internalNumber","mappingName","area","id","status","symbol","setData","getDetails","roomsTranslationText","datails","translate","TOKEN_P1","TOKEN_P2","TOKEN_P3","getEncryptTimestamp","date","Date","localeString","toLocaleString","timeZone","getTime","toString","decryptResponseData","timestamp","token","bytes","CryptoJS","AES","decrypt","JSON","parse","enc","Utf8","ResimoService","fetchData","apiUrl","apartmentSymbol","fetch","headers","async","responseAsText","encryptedResponse","text","decodedData","normalize","ORDER_OF_MARKERS","getDefaultMarkerNameFromMarkersArray","_firstFloorMarkers$","firstFloorMarkers","filter","matchedMarker","markerName","includes","idGenerator","TRANSLATIONS","transformNameIntoLabel","translation","markersConfigTransformer","transform","markersConfig","assetsPath","breakpoint","defaultMarkerName","defaultMarker","transformed","northAngle","getId","marker","visibleMarkers","visibleMarker","html","x","y","redirectTo","next","AppService","resimoDataLoadError","apartmentNotFoundError","panoramaMappingsLoadError","markersConfigLoadError","mapService","transformedMarkersConfig","routeService","RouteService","apartmentService","resimoService","assetsDirectoryName","fetchPanoramaMappingsData","matched","PanoramaMappings","el","Apartments","DirectoryName","catch","fetchMarkersConfig","MarkersConfigTransformer","getApartmentsPath","appConfig","getApiEndpoint","getApartmentMappingDataJsonPath","json","markersPath","_this$appConfig","endpoints","assets","_this$appConfig2","getAssetsEndpoint","panoramaMappingsFile","_this$appConfig3","_this$appConfig4","_this$appConfig5","api","roomLabel","_this$viewerService","_this$mapService","getMapPoints","_this$mapService2","_this$mapService3","getViewAreaRotateDegOffset","_this$viewerService2","getCompassRotateDegOffset","_this$transformedMark","__APP_CONFIG__","UA","UAParser","DEVICE_TYPES","MOBILE","TABLET","SMART_TV","CONSOLE","WEARABLE","BROWSER","BROWSER_TYPES","CHROME","FIREFOX","OPERA","YANDEX","SAFARI","INTERNET_EXPLORER","EDGE","CHROMIUM","IE","MOBILE_SAFARI","EDGE_CHROMIUM","getBrowser","getOS","device","getDevice","isMobileAndTabletType","getNavigatorInstance","navigator","isIOS13Check","nav","platform","maxTouchPoints","MSStream","getIPad13","setRouteParams","_queryParams","_queryParams2","_queryParams3","routeParams","location","pathname","routeParam","search","stringObjectParams","decodeURI","queryParams","clientId","investmentHash","number","targetWidth","wasAutoRefreshed","render","_vm","_c","_self","_setupProxy","ref","class","classListWithUserDevice","attrs","appConfigLoaded","isSupported","directives","rawName","showMap","expression","appService","activeFloor","floors","loadedTextures","activePointViewAreaRotateDeg","on","onMapPointClickHandler","$event","onFloorChange","getCompassRotateDeg","appSizeBreakpoint","loadingTextures","wasMapPointClicked","toggleMap","rotateActivePointViewArea","ready","viewerIsReady","textureLoaded","_e","defaultImageLoaded","initialViewerIsReady","errorVisible","supportedBrowserChecked","defaultRoomLoadingProgress","configErrorVisible","staticRenderFns","staticClass","floorsCount","emitFloorChange","_v","_s","$t","_l","nativeOn","$emit","refInFor","style","styles","mapImageLoadHandler","getPointsForFloor","isRoomLoading","getPositionTop","getPositionLeft","_m","details","detail","index","require","domProps","stroke","circleCrossColor","strokeWidth","lineWidth","strokeLinecap","lineCap","lineOne","x1","y1","x2","y2","lineTwo","Vue","extend","props","background","String","circleBorderColor","circleBorderWidth","lineLength","methods","calcCrossSize","SVG_SIZE","LINE","created","component","components","CloseIcon","mapSizes","Array","required","mapImageRef","$refs","width","naturalWidth","height","naturalHeight","setStyle","px","$set","getStyle","setStyles","APP_PADDING","DETAILS_HEIGHT","DETAILS_MARGIN_TOP_BOTTOM","BUTTON_SIZE","maxMapHeight","innerHeight","innerWidth","mapSize","maxMapHeightExceeded","heightResizeRatio","maxMapWidth","maxMapWidthExceeded","widthResizeRatio","resizeRatio","heightInPx","widthInPx","setupMapSizes","addEventListener","beforeDestroy","removeEventListener","staticStyle","loaderElement","querySelector","loaderProgressValue","hide","Boolean","progress","watch","hideLoader","clearInterval","progressDotsInterval","showLoader","v","innerText","display","rotateDeg","configError","refresh","reload","initTooltip","isTooltipOpen","closeTooltipFromClick","closeTooltip","classList","contains","showUI","preloadingViewError","computed","PhotoViewer","Map","Loader","YslabLogo","Compass","RotateTooltip","ErrorPage","NotSupportedBrowser","rotationDeg","setupApartmentService","setupMarkersConfig","closeMapIfMobile","_this$appService","_this$appService2","updatePageTitle","title","setAppSizeBreakpoint","appContainer","app","appWidth","getBoundingClientRect","_this$appService3","_this$appService4","getLanguageFromUrl","queryString","urlParams","URLSearchParams","lang","$i18n","locale","handleUI","toggleUI","HTML","setProperty","newFloor","_this$appService5","_this$appService6","searchParams","set","newUrl","origin","history","pushState","mounted","initAppService","_this$appService7","$watch","deep","immediate","Sentry","dsn","integrations","BrowserTracing","tracesSampleRate","library","add","faPersonWalking","faTimes","faStairs","dom","productionTip","use","VueI18n","i18n","messages","en","pl","fr","es","Intl","DateTimeFormat","resolvedOptions","language","h","App","$mount"],"mappings":"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","file":"js/app.66cac6ec.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 CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0,\n \t\t\"a-s\": 0,\n \t\t\"m-s\": 0,\n \t\t\"v-s\": 0\n \t}\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\t\"a-s\": 0,\n \t\t\"m-s\": 0,\n \t\t\"v-s\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"p-h\":\"p-h\"}[chunkId]||chunkId) + \".\" + {\"p-h\":\"a1b99f4b\"}[chunkId] + \".js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"p-h\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"p-h\":\"p-h\"}[chunkId]||chunkId) + \".\" + {\"p-h\":\"1163fcf5\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 = \"/client/murapol/zielony-zurawiniec/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\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([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { RoomData, TransformedMarkersData } from '@/models/markers-data.model';\nimport { LoadingData, ViewerRoom } from '@/models/viewer.model';\n\nImage.prototype.loadImage = function loadImage(\n url: string,\n viewerService: ViewerService,\n room: ViewerRoom,\n defaultRoom: boolean,\n) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const thisImg = this;\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onload = function onload() {\n if (defaultRoom) {\n viewerService.setDefaultRoomLoadingFinished();\n }\n\n viewerService.loadingData.imagesLoadedCount += 1;\n viewerService.loadingData.loadedImages.push(room.name);\n\n if (\n viewerService.loadingData.imagesToLoadCount\n === viewerService.loadingData.imagesLoadedCount\n ) {\n viewerService.setOtherRoomsLoadingFinished();\n }\n\n const blob = new Blob([this.response]);\n thisImg.src = window.URL.createObjectURL(blob);\n };\n\n if (defaultRoom) {\n xhr.onprogress = function onprogress(e: ProgressEvent) {\n viewerService.setDefaultRoomLoadingProgress(Math.ceil((e.loaded / e.total) * 100));\n };\n xhr.onloadstart = function onloadstart() {\n viewerService.setDefaultRoomLoadingProgress(0);\n };\n xhr.onerror = function onerror() {\n viewerService.setLoadingViewError(true);\n };\n }\n xhr.send();\n};\n\nclass ViewerService {\n config: TransformedMarkersData;\n\n rooms: Array = [];\n\n loadingData: LoadingData = {\n defaultRoom: {\n started: false,\n finished: false,\n loadingProgress: 0,\n },\n otherRooms: {\n started: false,\n finished: false,\n },\n imagesToLoadCount: 0,\n imagesLoadedCount: 0,\n loadedImages: [],\n };\n\n error: boolean;\n\n constructor(viewerConfig: TransformedMarkersData) {\n this.error = false;\n this.config = viewerConfig;\n this.initRooms();\n }\n\n public setActiveRoom(roomName: string) {\n this.resetActiveRoomRotation();\n this.rooms.forEach((room) => {\n room.active = room.name === roomName;\n });\n }\n\n private initRooms() {\n this.config.rooms.forEach((room) => {\n const roomData = this.createRoom(room);\n this.rooms.push(roomData);\n this.loadingData.imagesToLoadCount += 1;\n });\n\n this.loadDefaultRoom();\n }\n\n private createRoom(roomData: RoomData): ViewerRoom {\n return {\n label: roomData.label,\n name: roomData.name,\n image: new Image(),\n texture: null,\n imgPath: roomData.imgPath,\n markers: roomData.markers,\n default: roomData.name === this.getDefaultRoomName(),\n loaded: false,\n active: roomData.name === this.getDefaultRoomName(),\n defaultRotation: roomData.rotation,\n currentRotation: roomData.rotation,\n floor: roomData.floor,\n };\n }\n\n private loadDefaultRoom() {\n const defaultRoom = this.rooms.find((room) => room.default);\n\n if (defaultRoom) {\n this.setDefaultRoomLoadingStarted();\n this.loadRoomImage(defaultRoom, true);\n } else {\n console.error('No default room found');\n }\n }\n\n private loadRoomImage(room: ViewerRoom, defaultRoom = false) {\n // @ts-ignore\n room.image.loadImage(room.imgPath, this, room, defaultRoom);\n }\n\n public loadMissingRooms() {\n if (!this.loadingData.otherRooms.finished) {\n this.setOtherRoomsLoadingStarted();\n this.rooms.forEach((room) => {\n if (room.default) return;\n this.loadRoomImage(room);\n });\n }\n }\n\n private setDefaultRoomLoadingStarted() {\n this.loadingData.defaultRoom.started = true;\n }\n\n public setDefaultRoomLoadingProgress(val: number) {\n this.loadingData.defaultRoom.loadingProgress = val;\n }\n\n public setDefaultRoomLoadingFinished() {\n this.loadingData.defaultRoom.finished = true;\n }\n\n private setOtherRoomsLoadingStarted() {\n this.loadingData.otherRooms.started = true;\n }\n\n public setOtherRoomsLoadingFinished() {\n this.loadingData.otherRooms.finished = true;\n }\n\n private resetActiveRoomRotation() {\n const activeRoom = this.getActiveRoom();\n if (activeRoom) {\n activeRoom.currentRotation = activeRoom.defaultRotation;\n }\n }\n\n public setLoadingViewError(state: boolean) {\n this.error = state;\n }\n\n public getDefaultRoomLoadingProgress() {\n return this.loadingData.defaultRoom.loadingProgress;\n }\n\n public getDefaultRoomName() {\n return this.config.defaultRoomName;\n }\n\n public getActiveRoomPhoto() {\n const activeRoom = this.rooms.find((room) => room.active);\n return activeRoom?.image.src;\n }\n\n public getActiveRoomMarkers() {\n const activeRoom = this.rooms.find((room) => room.active);\n return activeRoom?.markers || [];\n }\n\n public getActiveRoom() {\n return this.rooms.find((room) => room.active);\n }\n\n public setRoomTexture(roomName: string, texture: Record) {\n const activeRoomIndex = this.rooms.findIndex((room) => room.name === roomName);\n if (activeRoomIndex >= 0) {\n this.rooms[activeRoomIndex].texture = texture;\n }\n }\n}\n\nexport default ViewerService;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=style&index=0&id=0c89fce8&prod&lang=sass&scoped=true\"","module.exports = __webpack_public_path__ + \"img/google_chrome.712c0a31.svg\";","module.exports = __webpack_public_path__ + \"img/rooms.7fb9df90.svg\";","module.exports = __webpack_public_path__ + \"img/opera.89d0a447.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorPage.vue?vue&type=style&index=0&id=7462aa62&prod&lang=sass&scoped=true\"","import { NotSupportedConfig } from '@/models/supported-browsers.model';\nimport {\n browserName, browserVersion, osName, isMobile,\n} from '@/helpers/mobile-device-detect';\n\nconst _detectWebpSuppot = () => {\n const browser = browserName.toLowerCase();\n const version = Number(browserVersion.split('.')[0]);\n if (browser === 'safari' && version >= 16) return true;\n return document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') === 0;\n};\n\nexport const isWebpSupported = _detectWebpSuppot();\nexport const getImageExtension = (hasWebpImages: boolean) => (isWebpSupported && hasWebpImages ? '.webp' : '.jpg');\nexport const getMapImageExtension = (hasWebpImages: boolean) => (isWebpSupported && hasWebpImages ? '.webp' : '.png');\n\nexport default function checkBrowserSupport() {\n const browser = browserName.toLowerCase();\n const version = Number(browserVersion.split('.')[0]);\n const os = osName.toLowerCase();\n\n const notSupportedDesktop: NotSupportedConfig = {\n chrome: { below: 55 },\n opera: { below: 42 },\n firefox: { below: 52 },\n safari: { below: 10 },\n edge: { fullySupported: true },\n yandex: { notSupported: true },\n ie: { notSupported: true },\n };\n\n const notSupportedMobile: NotSupportedConfig = {\n ios: { below: 10 },\n android: { below: 4 },\n };\n\n const rules = isMobile ? notSupportedMobile[os] : notSupportedDesktop[browser];\n\n if (!rules) return true;\n if (rules.notSupported) return false;\n if (rules.fullySupported) return true;\n if (Number.isNaN(version)) return true;\n if (rules.below != null && version < rules.below) return false;\n return true;\n}\n","import { MapServicePoint } from '@/models/map-service.model';\nimport { TransformedMarkersData } from '@/models/markers-data.model';\nimport { getMapImageExtension } from '@/helpers/supportedBrowsers';\nimport { verQuery } from '@/helpers/assetsVersionForCache';\n\nclass MapService {\n config: TransformedMarkersData;\n\n points: Array = [];\n\n hasWebpImages: boolean;\n\n constructor(mapConfig: TransformedMarkersData, hasWebpImages: boolean) {\n this.config = mapConfig;\n this.initPoints();\n this.hasWebpImages = hasWebpImages;\n }\n\n public setActivePoint(roomName: string) {\n this.points.forEach((point) => {\n point.active = point.roomName === roomName;\n });\n }\n\n private initPoints() {\n this.config.points.forEach((mapPoint) => {\n this.points.push({\n label: mapPoint.label,\n roomName: mapPoint.roomName,\n image: new Image(),\n default: mapPoint.roomName === this.config.defaultPoint,\n active: mapPoint.roomName === this.config.defaultPoint,\n floor: mapPoint.floor,\n position: {\n top: mapPoint.position.top,\n left: mapPoint.position.left,\n },\n });\n });\n }\n\n public getPoints() {\n return this.points;\n }\n\n private getImagePathWithSupportedExtension(path: string) {\n const extension = getMapImageExtension(this.hasWebpImages);\n if (extension === '.png') return path;\n return path.replace('.png', '.webp');\n }\n\n public getMapData(basePath: string) {\n const pathData = this.config.map.image.path;\n if (typeof pathData === 'string') {\n return [{\n path: `${basePath}${this.getImagePathWithSupportedExtension(pathData)}?${verQuery}`,\n }];\n }\n\n return pathData.map((d) => ({\n path: `${basePath}${this.getImagePathWithSupportedExtension(d)}?${verQuery}`,\n }));\n }\n}\n\nexport default MapService;\n","module.exports = __webpack_public_path__ + \"img/logo-yslab.08a9501b.svg\";","const ver = process.env.BUILD_DATE;\n\nexport const verQuery = `v=${ver}`;\nexport default ver;\n","module.exports = __webpack_public_path__ + \"img/area.64285085.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotSupportedBrowser.vue?vue&type=style&index=0&id=3dbf993c&prod&lang=sass&scoped=true\"","module.exports = __webpack_public_path__ + \"img/floor.f15a602b.svg\";","import { Apartment } from '@/models/apartment.model';\nimport { Detail } from '@/models/app.model';\n\nclass ApartmentService {\n apartment: Apartment = {\n internalNumber: '',\n name: '',\n mappingName: '',\n area: 0,\n rooms: '0',\n floor: '-1',\n id: 0,\n status: '',\n symbol: '',\n };\n\n public setData(apartment: Apartment) {\n this.apartment = apartment;\n }\n\n public get isDefined() {\n return !!this.apartment;\n }\n\n public getDetails() {\n let roomsTranslationText = 'pokój';\n if (Number(this.apartment.rooms) >= 2 && Number(this.apartment.rooms) <= 4) {\n roomsTranslationText = 'pokoje';\n } else if (Number(this.apartment.rooms) > 4) {\n roomsTranslationText = 'pokoi';\n }\n\n const datails: Array = [\n {\n value: this.apartment.name,\n translate: '',\n },\n {\n value: `${this.apartment.area} m2`,\n translate: '',\n },\n {\n value: this.apartment.rooms,\n translate: roomsTranslationText,\n },\n {\n value: Number(this.apartment.floor) > 0 ? this.apartment.floor : '',\n translate: Number(this.apartment.floor) > 0 ? 'piętro' : 'parter',\n },\n ];\n\n return datails;\n }\n}\n\nexport default ApartmentService;\n","import CryptoJS from 'crypto-js';\n\nconst TOKEN_P1 = 'plxs';\nconst TOKEN_P2 = '1lio';\nconst TOKEN_P3 = 'sxs';\n\nexport const getEncryptTimestamp = () => {\n const date = new Date();\n const localeString = date.toLocaleString('en-US', {\n timeZone: 'Asia/Singapore',\n });\n return new Date(localeString).getTime().toString();\n};\n\nexport const decryptResponseData = (response: string, timestamp: string): T => {\n // If response is already a JSON object, return it directly\n if (typeof response === 'object') {\n return response;\n }\n\n // If it's a string, try to decrypt first\n try {\n const token = `${TOKEN_P1}-${TOKEN_P2}-${TOKEN_P3}`;\n const key = `${token},${timestamp}`;\n const bytes = CryptoJS.AES.decrypt(response, key);\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\n } catch {\n // If decryption fails, treat as regular JSON\n return JSON.parse(response);\n }\n};\n","import { decryptResponseData, getEncryptTimestamp } from '@/helpers/decrypt-resimo-data';\nimport { Apartment } from '@/models/apartment.model';\n\nclass ResimoService {\n // eslint-disable-next-line class-methods-use-this\n public fetchData(apiUrl: string, apartmentSymbol: string) {\n const timestamp = getEncryptTimestamp();\n\n return fetch(apiUrl, {\n headers: {\n timestamp,\n },\n })\n .then(async (encryptedResponse) => {\n const responseAsText = await encryptedResponse.text();\n const decodedData = decryptResponseData>(responseAsText, timestamp);\n\n return decodedData\n .find((apartment) => apartment.name.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n === apartmentSymbol.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''));\n });\n }\n}\n\nexport default ResimoService;\n","import { MarkerFromMarkersData } from '@/models/markers-data.model';\n\nconst ORDER_OF_MARKERS = [\n '_MARKER_LivingRoom',\n '_MARKER_LivingRoom_0',\n '_MARKER_Hall',\n '_MARKER_Hall_0',\n '_MARKER_Kitchen',\n '_MARKER_Kitchen_0',\n '_MARKER_Bedroom',\n '_MARKER_Bedroom_0',\n '_MARKER_DiningRoom',\n '_MARKER_DiningRoom_0',\n '_MARKER_Bathroom',\n '_MARKER_Bathroom_0',\n '_MARKER_Office',\n '_MARKER_Office_0',\n '_MARKER_ChildsRoom',\n '_MARKER_ChildsRoom_0',\n '_MARKER_Laundry',\n '_MARKER_Laundry_0',\n '_MARKER_Garden',\n '_MARKER_Garden_0',\n '_MARKER_Garage',\n '_MARKER_Garage_0',\n '_MARKER_Toilet',\n '_MARKER_Toilet_0',\n '_MARKER_Terrace',\n '_MARKER_Terrace_0',\n '_MARKER_Balcony',\n '_MARKER_Balcony_0',\n '_MARKER_Closet',\n '_MARKER_Closet_0',\n '_MARKER_Wardrobe',\n '_MARKER_Wardrobe_0',\n];\n\nconst getDefaultMarkerNameFromMarkersArray = (markers: Array) => {\n const firstFloorMarkers = markers.filter((m) => m.floor == null || m.floor === 0);\n let matchedMarker = firstFloorMarkers[0]?.name;\n\n ORDER_OF_MARKERS.find((markerName) => {\n for (let i = 0; i < firstFloorMarkers.length; i += 1) {\n if (firstFloorMarkers[i].name.includes(markerName)) {\n matchedMarker = firstFloorMarkers[i].name;\n return true;\n }\n }\n\n return false;\n });\n\n if (matchedMarker) return matchedMarker;\n return '_MARKER_LivingRoom';\n};\n\nexport default getDefaultMarkerNameFromMarkersArray;\n","let id = 1;\n\nexport default function* idGenerator() {\n while (true) {\n yield id;\n id += 1;\n }\n}\n","const TRANSLATIONS = [\n {\n name: '_MARKER_Balcony',\n label: 'Balkon',\n },\n {\n name: '_MARKER_Bathroom',\n label: 'Łazienka',\n },\n {\n name: '_MARKER_Bedroom',\n label: 'Sypialnia',\n },\n {\n name: '_MARKER_ChildsRoom',\n label: 'Pokój dziecięcy',\n },\n {\n name: '_MARKER_Closet',\n label: 'Schowek',\n },\n {\n name: '_MARKER_DiningRoom',\n label: 'Jadalnia',\n },\n {\n name: '_MARKER_Garage',\n label: 'Garaż',\n },\n {\n name: '_MARKER_Garden',\n label: 'Ogród',\n },\n {\n name: '_MARKER_Hall',\n label: 'Przedpokój',\n },\n {\n name: '_MARKER_Kitchen',\n label: 'Kuchnia',\n },\n {\n name: '_MARKER_Laundry',\n label: 'Pralnia',\n },\n {\n name: '_MARKER_LivingRoom',\n label: 'Salon',\n },\n {\n name: '_MARKER_Office',\n label: 'Biuro',\n },\n {\n name: '_MARKER_Terrace',\n label: 'Taras',\n },\n {\n name: '_MARKER_Toilet',\n label: 'Toaleta',\n },\n {\n name: '_MARKER_Wardrobe',\n label: 'Garderoba',\n },\n {\n name: '_MARKER_Staircase',\n label: 'Schody',\n },\n];\n\nconst transformNameIntoLabel = (name: string) => {\n const translation = TRANSLATIONS.find((t) => name.includes(t.name));\n\n if (translation) return translation.label;\n return '';\n};\n\nexport default transformNameIntoLabel;\n","import getDefaultMarkerNameFromMarkersArray from '@/helpers/getDefaultMarkerNameFromMarkersArray';\nimport { Breakpoint } from '@/models/app.model';\nimport {\n MapPoint, MarkersData, RoomData, TransformedMarkersData,\n} from '@/models/markers-data.model';\nimport idGenerator from '@/helpers/idGenerator';\nimport { getImageExtension } from '@/helpers/supportedBrowsers';\nimport { verQuery } from '@/helpers/assetsVersionForCache';\nimport transformNameIntoLabel from './transformNameIntoLabel';\n\nconst markersConfigTransformer = {\n transform(markersConfig: MarkersData, assetsPath: string, breakpoint: Breakpoint, hasWebpImages: boolean):\n TransformedMarkersData {\n let defaultMarkerName = '';\n\n if (markersConfig.defaultMarker) {\n defaultMarkerName = markersConfig.defaultMarker;\n } else {\n defaultMarkerName = getDefaultMarkerNameFromMarkersArray(markersConfig.markers);\n }\n\n const transformed: TransformedMarkersData = {\n rooms: [],\n defaultRoomName: defaultMarkerName,\n points: [],\n defaultPoint: defaultMarkerName,\n map: markersConfig.map,\n northAngle: markersConfig.northAngle,\n };\n\n const getId = idGenerator();\n\n markersConfig.markers.forEach((marker) => {\n const label = transformNameIntoLabel(marker.name);\n const room: RoomData = {\n label,\n name: marker.name,\n imgPath: `${assetsPath}/${breakpoint}/${marker.name}${getImageExtension(hasWebpImages)}?${verQuery}`,\n markers: [],\n rotation: marker.rotation,\n floor: marker.floor || 0,\n };\n\n marker.visibleMarkers.forEach((visibleMarker) => {\n room.markers.push({\n html: transformNameIntoLabel(visibleMarker.name),\n roomName: visibleMarker.name,\n position: {\n x: visibleMarker.x,\n y: visibleMarker.y,\n },\n redirectTo: visibleMarker.redirectTo,\n id: `${getId.next().value}`,\n });\n });\n\n transformed.rooms.push(room);\n\n const point: MapPoint = {\n label,\n roomName: marker.name,\n floor: marker.floor || 0,\n position: {\n top: marker.y,\n left: marker.x,\n },\n };\n\n transformed.points.push(point);\n });\n\n return transformed;\n },\n};\n\nexport default markersConfigTransformer;\n","import ApartmentService from '@/services/ApartmentService';\nimport ResimoService from '@/services/ResimoService';\nimport { Breakpoint, ExtendedWindow } from '@/models/app.model';\nimport { AppConfig, PanoramaMappings } from '@/models/app-config.model';\nimport { MarkersData, TransformedMarkersData } from '@/models/markers-data.model';\nimport { verQuery } from '@/helpers/assetsVersionForCache';\nimport MapService from './MapService';\nimport RouteService from './RouteService';\nimport ViewerService from './ViewerService';\nimport MarkersConfigTransformer from '../transformers/MarkersConfigTransformer';\n\nclass AppService {\n markersConfig: null | MarkersData;\n\n transformedMarkersConfig: null | TransformedMarkersData;\n\n mapService: MapService | null;\n\n viewerService: ViewerService | null;\n\n routeService: RouteService;\n\n apartmentService: ApartmentService;\n\n resimoService: ResimoService;\n\n breakpoint: Breakpoint;\n\n static appConfig = (window as unknown as ExtendedWindow).__APP_CONFIG__ as AppConfig;\n\n assetsDirectoryName: string | null;\n\n resimoDataLoadError: boolean;\n\n apartmentNotFoundError: boolean;\n\n panoramaMappingsLoadError: boolean;\n\n markersConfigLoadError: boolean;\n\n public constructor(breakpoint: Breakpoint) {\n this.resimoDataLoadError = false;\n this.apartmentNotFoundError = false;\n this.panoramaMappingsLoadError = false;\n this.markersConfigLoadError = false;\n this.markersConfig = null;\n this.mapService = null;\n this.viewerService = null;\n this.transformedMarkersConfig = null;\n this.routeService = new RouteService();\n this.apartmentService = new ApartmentService();\n this.resimoService = new ResimoService();\n this.breakpoint = breakpoint;\n this.assetsDirectoryName = null;\n }\n\n public async setupMarkersConfig() {\n await AppService.fetchPanoramaMappingsData().then((response) => {\n const matched = response.PanoramaMappings\n .find((el) => el.Apartments\n .find((name) => name.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n === this.apartmentService.apartment.mappingName.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')));\n\n if (!matched) {\n this.apartmentNotFoundError = true;\n } else {\n this.assetsDirectoryName = matched.DirectoryName;\n }\n }).catch(() => { this.panoramaMappingsLoadError = true; });\n\n return this.fetchMarkersConfig()\n .then((config: MarkersData) => {\n this.markersConfig = config;\n\n const transformedMarkersConfig = MarkersConfigTransformer.transform(\n this.markersConfig,\n `${AppService.getApartmentsPath()}/${this.assetsDirectoryName}`,\n this.breakpoint,\n AppService.appConfig.hasWebpImages,\n );\n\n this.transformedMarkersConfig = transformedMarkersConfig;\n this.mapService = new MapService(transformedMarkersConfig, AppService.appConfig.hasWebpImages);\n this.viewerService = new ViewerService(transformedMarkersConfig);\n }).catch(() => { this.markersConfigLoadError = true; });\n }\n\n public async setupApartmentService() {\n return this.resimoService.fetchData(\n AppService.getApiEndpoint(),\n this.routeService.apartmentSymbol ? this.routeService.apartmentSymbol : '',\n ).then((apartment) => {\n if (apartment != null) {\n this.apartmentService.setData(apartment);\n } else {\n this.apartmentNotFoundError = true;\n }\n }).catch(() => { this.resimoDataLoadError = true; });\n }\n\n private static fetchPanoramaMappingsData() {\n return fetch(AppService.getApartmentMappingDataJsonPath())\n .then((response) => response.json() as Promise);\n }\n\n private fetchMarkersConfig() {\n const markersPath = `${AppService.getApartmentsPath()}/${\n this.assetsDirectoryName\n }/MarkersData.json?${verQuery}`;\n return fetch(markersPath).then((response) => response.json());\n }\n\n public static getAssetsEndpoint() {\n return this.appConfig?.endpoints.assets || '';\n }\n\n public static getApartmentMappingDataJsonPath() {\n return (\n `${this.getAssetsEndpoint()}/${this.appConfig?.endpoints.panoramaMappingsFile}?${verQuery}` || ''\n );\n }\n\n public static getApartmentsPath() {\n return `${this.appConfig?.endpoints.assets}/apartments` || '';\n }\n\n public static getApiEndpoint() {\n return `${this.appConfig?.endpoints.api}?token=${this.appConfig?.token}` || '';\n }\n\n public setActiveRoom(roomLabel: string) {\n this.viewerService?.setActiveRoom(roomLabel);\n this.mapService?.setActivePoint(roomLabel);\n }\n\n public getMapPoints() {\n return this.mapService?.getPoints() || [];\n }\n\n public getMapData() {\n return this.mapService?.getMapData(AppService.getApartmentsPath());\n }\n\n public getViewAreaRotateDegOffset() {\n return this.viewerService?.getActiveRoom()?.currentRotation || 0;\n }\n\n public getCompassRotateDegOffset() {\n return this.transformedMarkersConfig?.northAngle || 0;\n }\n}\n\nexport default AppService;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RotateTooltip.vue?vue&type=style&index=0&id=2cf045bd&prod&lang=sass&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseIcon.vue?vue&type=style&index=0&id=5503aa4e&prod&lang=sass&scoped=true\"","module.exports = __webpack_public_path__ + \"img/mozilla_firefox.cfc25568.svg\";","import { UAParser } from 'ua-parser-js';\n\nconst UA = new UAParser();\n\nconst DEVICE_TYPES = {\n MOBILE: 'mobile',\n TABLET: 'tablet',\n SMART_TV: 'smarttv',\n CONSOLE: 'console',\n WEARABLE: 'wearable',\n BROWSER: undefined,\n};\n\nconst BROWSER_TYPES = {\n CHROME: 'Chrome',\n FIREFOX: 'Firefox',\n OPERA: 'Opera',\n YANDEX: 'Yandex',\n SAFARI: 'Safari',\n INTERNET_EXPLORER: 'Internet Explorer',\n EDGE: 'Edge',\n CHROMIUM: 'Chromium',\n IE: 'IE',\n MOBILE_SAFARI: 'Mobile Safari',\n EDGE_CHROMIUM: 'Edge Chromium',\n};\nconst { MOBILE } = DEVICE_TYPES;\nconst { TABLET } = DEVICE_TYPES;\n\nconst browser = UA.getBrowser();\nconst os = UA.getOS();\nconst device = UA.getDevice();\n\nconst isMobileAndTabletType = () => {\n switch (device.type) {\n case MOBILE:\n case TABLET:\n return true;\n default:\n return false;\n }\n};\n\nconst getNavigatorInstance = () => {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\n\nconst isIOS13Check = (type: string) => {\n const nav = getNavigatorInstance();\n return (\n !!nav\n && !!nav.platform\n // @ts-ignore\n && (nav.platform.indexOf(type) !== -1 || (nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream))\n );\n};\n\nconst getIPad13 = () => isIOS13Check('iPad');\n\nexport const isFirefox = browser.name === BROWSER_TYPES.FIREFOX;\nexport const isSafari = browser.name === BROWSER_TYPES.SAFARI\n || browser.name === BROWSER_TYPES.MOBILE_SAFARI;\nexport const isMobile = isMobileAndTabletType() || getIPad13();\nexport const browserName = browser.name || 'none';\nexport const browserVersion = browser.version || 'none';\nexport const osName = os.name || 'none';\n","interface RouteParams {\n clientId: string;\n investmentHash: string;\n apartmentSymbol: string;\n targetWidth: number | null;\n wasAutoRefreshed: boolean;\n}\n\nclass RouteService {\n routeParams!: RouteParams;\n\n constructor() {\n this.setRouteParams();\n }\n\n private setRouteParams() {\n const routeParams = window.location.pathname\n .split('/')\n .filter((routeParam) => routeParam);\n const search = window.location.search.split('?')[1];\n const stringObjectParams = search\n ? decodeURI(search).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g, '\":\"')\n : null;\n let queryParams;\n\n if (stringObjectParams) {\n queryParams = JSON.parse(`{\"${stringObjectParams}\"}`);\n }\n\n this.routeParams = {\n clientId: routeParams[0],\n investmentHash: routeParams[1],\n apartmentSymbol: queryParams?.number,\n targetWidth: Number(queryParams?.targetWidth) || null,\n wasAutoRefreshed: queryParams?.wasAutoRefreshed === 'true',\n };\n }\n\n public get clientId() {\n return this.routeParams.clientId;\n }\n\n public get investmentHash() {\n return this.routeParams.investmentHash;\n }\n\n public get apartmentSymbol() {\n return this.routeParams.apartmentSymbol;\n }\n\n public get targetWidth() {\n return this.routeParams.targetWidth;\n }\n}\n\nexport default RouteService;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"app\",class:_vm.classListWithUserDevice,attrs:{\"id\":\"app\"}},[(_vm.appConfigLoaded && _vm.isSupported)?[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('Map',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMap),expression:\"showMap\"}],attrs:{\"data\":_vm.appService.getMapData(),\"points\":_vm.appService.getMapPoints(),\"activeFloor\":_vm.activeFloor,\"floorsCount\":_vm.appService.markersConfig.floors || 1,\"loadedTextures\":_vm.loadedTextures,\"activePointViewAreaRotateDeg\":_vm.activePointViewAreaRotateDeg,\"details\":_vm.appService.apartmentService.getDetails()},on:{\"onPointClick\":_vm.onMapPointClickHandler,\"onCloseClick\":function($event){_vm.showMap = false},\"floorChange\":_vm.onFloorChange}})],1),_c('Compass',{attrs:{\"rotateDeg\":_vm.getCompassRotateDeg()}}),_c('YslabLogo'),(_vm.appService && _vm.appService.viewerService.getActiveRoomPhoto())?_c('PhotoViewer',{attrs:{\"appSizeBreakpoint\":_vm.appSizeBreakpoint,\"viewerService\":_vm.appService.viewerService,\"photo\":_vm.appService.viewerService.getActiveRoomPhoto(),\"room\":_vm.appService.viewerService.getActiveRoom(),\"markers\":_vm.appService.viewerService.getActiveRoomMarkers(),\"loadedImages\":_vm.loadedImages,\"loadedTextures\":_vm.loadedTextures,\"loadingTextures\":_vm.loadingTextures,\"wasMapPointClicked\":_vm.wasMapPointClicked,\"activePointViewAreaRotateDeg\":_vm.activePointViewAreaRotateDeg,\"showMap\":_vm.showMap},on:{\"resetMapPointClicked\":function($event){_vm.wasMapPointClicked = false},\"mapButtonClicked\":_vm.toggleMap,\"rotationDegChange\":_vm.rotateActivePointViewArea,\"onPointClick\":(roomName) => _vm.appService.setActiveRoom(roomName),\"onViewerReady\":(ready) => _vm.viewerIsReady = ready,\"textureLoaded\":_vm.textureLoaded,\"textureLoading\":(roomName) => _vm.loadingTextures.push(roomName),\"floorChange\":_vm.onFloorChange}}):_vm._e()]:_vm._e(),_c('RotateTooltip',{attrs:{\"initTooltip\":_vm.viewerIsReady}}),_c('Loader',{attrs:{\"hide\":_vm.appConfigLoaded && _vm.defaultImageLoaded &&\n _vm.initialViewerIsReady || _vm.errorVisible || (!_vm.isSupported && _vm.supportedBrowserChecked),\"progress\":_vm.defaultRoomLoadingProgress}}),(_vm.errorVisible && _vm.isSupported)?_c('ErrorPage',{attrs:{\"configError\":_vm.configErrorVisible}}):_vm._e(),(!_vm.isSupported)?_c('NotSupportedBrowser'):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"map-wrapper\"},[(_vm.floorsCount > 1)?_c('div',{staticClass:\"floor-buttons\"},[_c('button',{staticClass:\"floor-change-button\",class:{ '--hidden': _vm.activeFloor === _vm.floorsCount - 1 },on:{\"click\":function($event){return _vm.emitFloorChange('up')}}},[_vm._v(\"+1\")]),_c('div',{staticClass:\"floor-info\"},[_c('p',{staticClass:\"floor-info-text\"},[_vm._v(_vm._s(_vm.$t('poziom'))+\" \"+_vm._s(_vm.activeFloor))])]),_c('button',{staticClass:\"floor-change-button\",class:{ '--hidden': _vm.activeFloor === 0 },on:{\"click\":function($event){return _vm.emitFloorChange('down')}}},[_vm._v(\"-1\")])]):_vm._e(),_vm._l((_vm.data),function(image,floor){return [_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.activeFloor === floor),expression:\"activeFloor === floor\"}],key:floor,staticClass:\"map\"},[_c('div',{staticClass:\"map__close\"},[_c('CloseIcon',{attrs:{\"lineLength\":14,\"circleBorderWidth\":\"0\",\"circleCrossColor\":\"white\",\"lineCap\":\"round\"},nativeOn:{\"click\":function($event){return _vm.$emit('onCloseClick')}}})],1),_c('img',{ref:\"mapImageRef\",refInFor:true,staticClass:\"map__img\",style:(_vm.styles[floor]),attrs:{\"alt\":\"\",\"src\":image.path},on:{\"load\":function($event){return _vm.mapImageLoadHandler(floor)}}}),_c('div',{staticClass:\"map__points\"},[_vm._l((_vm.getPointsForFloor(floor)),function(point){return [_c('div',{key:`${point.roomName}-point`,staticClass:\"map__point\",class:{\n 'map__point--active': point.active,\n 'map__point--loading': _vm.isRoomLoading(point.roomName)\n },style:({\n top: _vm.getPositionTop(point.position.top, floor),\n left: _vm.getPositionLeft(point.position.left, floor)\n }),attrs:{\"data-label\":point.label},on:{\"click\":function($event){!point.active && _vm.$emit('onPointClick', point.roomName)}}},[(_vm.isRoomLoading(point.roomName))?_c('div',{staticClass:\"loader-wrapper\"},[_c('div',{staticClass:\"loader__overlay\"}),_vm._m(0,true)]):_vm._e(),(point.active)?_c('div',{ref:\"activePointViewArea\",refInFor:true,staticClass:\"map__point-view-area\",style:(`transform: rotate(${_vm.activePointViewAreaRotateDeg}deg);`)},[_c('div',{staticClass:\"map__point-animatable\"}),_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"width\":\"78px\",\"height\":\"49px\"}},[_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"opacity\":\"0.671\",\"fill\":\"rgb(255, 255, 255)\",\"d\":\"M39.000,0.000 C67.030,0.000 77.591,\\n 20.848 77.591,20.848\\n L39.000,49.000 L0.127,\\n 21.368 C0.127,\\n 21.368 10.970,\\n 0.000 39.000,0.000 Z\"}})])]):_vm._e()]),_c('div',{key:`${point.roomName}-tooltip`,staticClass:\"map__tooltip\",style:({\n top: _vm.getPositionTop(point.position.top, floor),\n left: _vm.getPositionLeft(point.position.left, floor)\n })},[_vm._v(\" \"+_vm._s(_vm.$t(point.label))+\" \")])]})],2)])]}),_c('div',{staticClass:\"map__details\"},_vm._l((_vm.details),function(detail,index){return _c('div',{key:`detail-${index}`,staticClass:\"map__detail\"},[(index === 1)?[_c('img',{staticClass:\"map__detail--icon\",attrs:{\"src\":require(\"@/assets/icons/area.svg\"),\"alt\":\"\"}})]:(index === 2)?[_c('img',{staticClass:\"map__detail--icon\",attrs:{\"src\":require(\"@/assets/icons/rooms.svg\"),\"alt\":\"\"}})]:(index === 3)?[_c('img',{staticClass:\"map__detail--icon\",attrs:{\"src\":require(\"@/assets/icons/floor.svg\"),\"alt\":\"\"}})]:_vm._e(),_c('span',{domProps:{\"innerHTML\":_vm._s(`${detail.value} ${_vm.$t(detail.translate)}`)}})],2)}),0)],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"loader\"},[_c('div',{staticClass:\"loader__loader\"},[_c('div'),_c('div'),_c('div'),_c('div')])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('svg',{staticClass:\"close-icon\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 42.5 42.5\"}},[_c('line',{staticClass:\"cls-2\",style:({\n stroke: _vm.circleCrossColor,\n strokeWidth: _vm.lineWidth,\n strokeLinecap: _vm.lineCap\n }),attrs:{\"x1\":_vm.lineOne.x1,\"y1\":_vm.lineOne.y1,\"x2\":_vm.lineOne.x2,\"y2\":_vm.lineOne.y2}}),_c('line',{staticClass:\"cls-2\",style:({\n stroke: _vm.circleCrossColor,\n strokeWidth: _vm.lineWidth,\n strokeLinecap: _vm.lineCap\n }),attrs:{\"x1\":_vm.lineTwo.x1,\"y1\":_vm.lineTwo.y1,\"x2\":_vm.lineTwo.x2,\"y2\":_vm.lineTwo.y2}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport { Line } from '@/models/math.model';\n\nexport default Vue.extend({\n name: 'CloseIcon',\n props: {\n background: {\n type: String,\n default: 'white',\n },\n circleBorderColor: {\n type: String,\n default: 'black',\n },\n circleBorderWidth: {\n type: String,\n default: '3px',\n },\n circleCrossColor: {\n type: String,\n default: 'black',\n },\n lineWidth: {\n type: String,\n default: '3px',\n },\n lineLength: {\n type: Number,\n default: 20,\n },\n lineCap: {\n type: String,\n default: 'butt',\n },\n },\n data() {\n return {\n lineOne: null as null | Line,\n lineTwo: null as null | Line,\n };\n },\n methods: {\n calcCrossSize() {\n const SVG_SIZE = 42.5;\n const LINE = this.lineLength;\n const lineOne = {\n x1: (SVG_SIZE - LINE) / 2,\n y1: (SVG_SIZE - LINE) / 2,\n x2: (SVG_SIZE - LINE) / 2 + LINE,\n y2: (SVG_SIZE - LINE) / 2 + LINE,\n };\n const lineTwo = {\n x1: (SVG_SIZE - LINE) / 2 + LINE,\n y1: (SVG_SIZE - LINE) / 2,\n x2: (SVG_SIZE - LINE) / 2,\n y2: (SVG_SIZE - LINE) / 2 + LINE,\n };\n this.lineOne = lineOne;\n this.lineTwo = lineTwo;\n },\n },\n created() {\n this.calcCrossSize();\n },\n});\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CloseIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CloseIcon.vue?vue&type=template&id=5503aa4e&scoped=true\"\nimport script from \"./CloseIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./CloseIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CloseIcon.vue?vue&type=style&index=0&id=5503aa4e&prod&lang=sass&scoped=true\"\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 \"5503aa4e\",\n null\n \n)\n\nexport default component.exports","\nimport CloseIcon from '@/components/icons/CloseIcon.vue';\nimport { Detail } from '@/models/app.model';\nimport { MapServicePoint } from '@/models/map-service.model';\nimport { AppMapImageData } from '@/models/markers-data.model';\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'Map',\n components: { CloseIcon },\n data() {\n return {\n styles: [] as Array>,\n mapSizes: [] as Array<{ width: number; height: number }>,\n };\n },\n props: {\n data: {\n type: Array as PropType,\n required: true,\n },\n points: {\n type: Array as PropType>,\n default: [],\n },\n activePointViewAreaRotateDeg: {\n type: Number,\n default: 0,\n },\n details: {\n type: Array as PropType>,\n default: () => [],\n },\n loadedTextures: {\n type: Array as PropType>,\n default: [],\n },\n activeFloor: {\n type: Number,\n default: 0,\n },\n floorsCount: {\n type: Number,\n default: 0,\n },\n },\n methods: {\n mapImageLoadHandler(floor: number) {\n const mapImageRef = (this.$refs.mapImageRef as Array)[floor];\n if (!mapImageRef) return;\n this.mapSizes[floor].width = mapImageRef.naturalWidth;\n this.mapSizes[floor].height = mapImageRef.naturalHeight;\n this.setStyle(floor);\n },\n getPositionLeft(px: number, floor: number) {\n return `${(px / this.mapSizes[floor].width) * 100}%`;\n },\n getPositionTop(px: number, floor: number) {\n return `${(px / this.mapSizes[floor].height) * 100}%`;\n },\n setStyle(floor: number) {\n this.$set(this.styles, floor, this.getStyle(floor));\n },\n setStyles() {\n for (let i = 0; i < this.floorsCount; i += 1) {\n this.$set(this.styles, i, this.getStyle(i));\n }\n },\n getStyle(floor: number) {\n const APP_PADDING = 36;\n const DETAILS_HEIGHT = 56;\n const DETAILS_MARGIN_TOP_BOTTOM = 16;\n const BUTTON_SIZE = 42;\n let maxMapHeight = window.innerHeight - 2 * APP_PADDING - DETAILS_HEIGHT - 2 * DETAILS_MARGIN_TOP_BOTTOM - BUTTON_SIZE;\n\n if (window.innerHeight < window.innerWidth && window.innerHeight < 500) {\n maxMapHeight = window.innerHeight - 2 * APP_PADDING - DETAILS_HEIGHT - DETAILS_MARGIN_TOP_BOTTOM;\n }\n\n const mapSize = this.mapSizes[floor];\n const maxMapHeightExceeded = mapSize.height > maxMapHeight;\n const height = maxMapHeightExceeded ? maxMapHeight : mapSize.height;\n const heightResizeRatio = height / mapSize.height;\n\n let maxMapWidth = window.innerWidth - 2 * APP_PADDING;\n if (window.innerWidth > 600 + 2 * APP_PADDING) maxMapWidth = 600;\n if (window.innerWidth < 450) maxMapWidth = window.innerWidth - 2 * APP_PADDING * 0.5;\n const maxMapWidthExceeded = mapSize.width > maxMapWidth;\n const width = maxMapWidthExceeded ? maxMapWidth : mapSize.width;\n const widthResizeRatio = width / mapSize.width;\n\n const resizeRatio = widthResizeRatio > heightResizeRatio\n ? heightResizeRatio : widthResizeRatio;\n\n const heightInPx = `${mapSize.height * resizeRatio}px`;\n const widthInPx = `${mapSize.width * resizeRatio}px`;\n\n return {\n height: heightInPx,\n width: widthInPx,\n };\n },\n isRoomLoading(roomName: string) {\n const point = this.points.find((p) => p.roomName === roomName && p.default);\n if (point) return false;\n return !this.loadedTextures.includes(roomName);\n },\n getPointsForFloor(floor: number) {\n return this.points.filter((el) => el.floor === floor);\n },\n emitFloorChange(floor: 'up' | 'down') {\n if (floor === 'up' && this.activeFloor < this.floorsCount - 1) {\n this.$emit('floorChange', this.activeFloor + 1);\n } else if (floor === 'down' && this.activeFloor !== 0) {\n this.$emit('floorChange', this.activeFloor - 1);\n }\n },\n setupMapSizes() {\n for (let i = 0; i < this.floorsCount; i += 1) {\n this.mapSizes.push({\n width: 0,\n height: 0,\n });\n }\n },\n },\n created() {\n this.setupMapSizes();\n window.addEventListener('resize', this.setStyles);\n },\n beforeDestroy() {\n window.removeEventListener('resize', this.setStyles);\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../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--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../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=0c89fce8&scoped=true\"\nimport script from \"./Map.vue?vue&type=script&lang=ts\"\nexport * from \"./Map.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Map.vue?vue&type=style&index=0&id=0c89fce8&prod&lang=sass&scoped=true\"\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 \"0c89fce8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticStyle:{\"display\":\"none\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { ExtendedWindow } from '@/models/app.model';\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'Loader',\n data() {\n return {\n loaderElement: document.querySelector('#appLoader') as HTMLDivElement,\n loaderProgressValue: document.querySelector('#appLoader .progress__value') as HTMLSpanElement,\n };\n },\n props: {\n hide: {\n type: Boolean,\n default: false,\n },\n progress: {\n type: Number,\n default: 0,\n },\n },\n watch: {\n hide() {\n if (this.hide) {\n this.hideLoader();\n clearInterval((window as unknown as ExtendedWindow).progressDotsInterval);\n } else {\n this.showLoader();\n }\n },\n progress(v) {\n if (v === 100) this.loaderProgressValue.innerText = '99%';\n else this.loaderProgressValue.innerText = `${v}%`;\n },\n },\n methods: {\n hideLoader() {\n this.loaderElement.style.display = 'none';\n },\n showLoader() {\n this.loaderElement.style.display = 'flex';\n },\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=57c8d4f8\"\nimport script from \"./Loader.vue?vue&type=script&lang=ts\"\nexport * from \"./Loader.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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('a',{staticClass:\"logo-wrapper\",attrs:{\"href\":\"https://www.makietainteraktywna.pl/\",\"target\":\"_blank\"}},[_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"@/assets/icons/logo-yslab.svg\"),\"alt\":\"YSLAB logo\",\"draggable\":\"false\"}})])\n}]\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({ name: 'YslabLogo' });\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YslabLogo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YslabLogo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./YslabLogo.vue?vue&type=template&id=ebc5f82c&scoped=true\"\nimport script from \"./YslabLogo.vue?vue&type=script&lang=ts\"\nexport * from \"./YslabLogo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./YslabLogo.vue?vue&type=style&index=0&id=ebc5f82c&prod&lang=sass&scoped=true\"\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 \"ebc5f82c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"compass-wrapper\"},[_c('div',{staticClass:\"compass\"},[_c('svg',{style:(`transform: rotate(${_vm.rotateDeg}deg);`),attrs:{\"id\":\"compass\",\"data-name\":\"compass\",\"viewBox\":\"0 0 419.6 432.4\",\"fill\":\"#425B91\"}},[_c('linearGradient',{attrs:{\"id\":\"gradient\",\"x1\":\"0\",\"y1\":\"0\",\"x2\":\"800\",\"y2\":\"0\",\"gradientUnits\":\"userSpaceOnUse\"}},[_c('stop',{attrs:{\"offset\":\"0\",\"stop-color\":\"#6299d8\"}}),_c('stop',{attrs:{\"offset\":\"0.14285714285714285\",\"stop-color\":\"#5e91cf\"}}),_c('stop',{attrs:{\"offset\":\"0.2857142857142857\",\"stop-color\":\"#5a89c6\"}}),_c('stop',{attrs:{\"offset\":\"0.42857142857142855\",\"stop-color\":\"#5680bd\"}}),_c('stop',{attrs:{\"offset\":\"0.5714285714285714\",\"stop-color\":\"#5278b4\"}}),_c('stop',{attrs:{\"offset\":\"0.7142857142857142\",\"stop-color\":\"#4d70ab\"}}),_c('stop',{attrs:{\"offset\":\"0.8571428571428571\",\"stop-color\":\"#4969a2\"}}),_c('stop',{attrs:{\"offset\":\"1\",\"stop-color\":\"#456199\"}})],1),_c('path',{attrs:{\"d\":\"M419.3,223.4H400.14A183,183,0,0,0,277.23,55.16,6.5,6.5,0,\\n0,0,273,67.44a170,170,0,0,1,114.16,156h-16a6.5,6.5,0,0,0,0,13H387c-4.29,87.65-75.3,\\n158-163.19,161.36V384.5a6.5,6.5,0,0,0-13,0v13.26C122.91,394.44,51.9,324.05,47.61,\\n236.4H60.9a6.5,6.5,0,1,0,0-13H47.47a170,170,0,0,1,114.16-156,6.5,6.5,0,1,0-4.26-12.28A183,\\n183,0,0,0,34.46,223.4H12.7a6.5,6.5,0,1,0,0,13H34.6c4.31,94.81,81.14,171,176.2,\\n174.37V432.7a6.5,6.5,0,0,0,13,0V410.77c95.06-3.34,171.89-79.56,176.2-174.37h19.3a6.5,6.5,0,\\n0,0,0-13Z\",\"transform\":\"translate(-6.2 -6.8)\"}}),_c('path',{attrs:{\"d\":\"M231,185.8v36.73l-28.76-41a7.5,7.5,0,0,0-13.64,4.3v60.5a7.5,\\n7.5,0,0,0,15,0V209.57l28.76,41a7.48,7.48,0,0,0,6.14,3.2,7.39,\\n7.39,0,0,0,2.26-.35A7.49,7.49,0,0,0,246,246.3V185.8a7.5,7.5,0,0,0-15,0Z\",\"transform\":\"translate(-6.2 -6.8)\"}}),_c('path',{attrs:{\"d\":\"M212.74,9.79a5.42,5.42,0,0,0-.4.71s0,.05,0,.08l-60.1,130.2a6.49,6.49,0,0,0,5.9,9.22H276.39a6.11,6.11,0,0,0,.86-.06,6.53,6.53,0,0,0,.77-.14l.13-.05c.22-.06.43-.12.64-.2l.33-.16.4-.19c.13-.07.25-.15.37-.23l.31-.2c.12-.08.23-.18.34-.27l.3-.25.27-.29c.1-.11.21-.21.3-.32l.22-.3.22-.3.06-.1a.35.35,0,0,0,0-.08,3.55,3.55,0,0,0,.23-.43.54.54,0,0,0,.07-.13,6.76,6.76,0,0,0,.29-.69c0-.05,0-.1,0-.15s.11-.38.16-.58a1.29,1.29,0,0,1,0-.19,5.54,5.54,0,0,0,.07-.57,1.1,1.1,0,0,0,0-.18,5.63,5.63,0,0,0,0-.71v0a5.82,5.82,0,0,0-.08-.73,1.55,1.55,0,0,0,0-.21,4.37,4.37,0,0,0-.12-.52c0-.07,0-.15-.07-.23s-.13-.37-.2-.55a1.17,1.17,0,0,0-.05-.11l-58.2-130.2a.3.3,0,0,0,0-.08,5.19,5.19,0,0,0-.35-.66l-.09-.14a6.26,6.26,0,0,0-.49-.66.69.69,0,0,0-.11-.13,5.44,5.44,0,0,0-.48-.48l-.14-.13a7.37,7.37,0,0,0-.65-.49.53.53,0,0,0-.1-.06,5.79,5.79,0,0,0-.64-.36l-.15-.07a5.52,5.52,0,0,0-.8-.31h0a5.32,5.32,0,0,0-.79-.18l-.2,0a4.9,4.9,0,0,0-.77-.06h-.11a8.29,8.29,0,0,0-.87.06h-.05A6.47,6.47,0,0,0,213.34,9l0,0a5.48,5.48,0,0,0-.55.72ZM184.29,137l34-21.08L253.09,137h-68.8m40.41-32.37V43.77L262,127.19Zm-13,.05-40,24.82,40-86.61Z\",\"transform\":\"translate(-6.2 -6.8)\"}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'Compass',\n props: {\n rotateDeg: {\n type: Number,\n default: 0,\n },\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Compass.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Compass.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Compass.vue?vue&type=template&id=63cd8670&scoped=true\"\nimport script from \"./Compass.vue?vue&type=script&lang=ts\"\nexport * from \"./Compass.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Compass.vue?vue&type=style&index=0&id=63cd8670&prod&lang=sass&scoped=true\"\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 \"63cd8670\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"error-wrapper\"},[_c('figure',{staticClass:\"error-symbol\"},[_vm._v(\"!\")]),(!_vm.configError)?[_c('h1',{staticClass:\"error-info\"},[_vm._v(_vm._s(_vm.$t('Błąd 404')))]),_c('h2',{staticClass:\"error-info-additional\"},[_vm._v(\" \"+_vm._s(_vm.$t('Nie udało się odnaleźć modelu 3D tego mieszkania'))+\" \")])]:[_c('h1',{staticClass:\"error-info\"},[_vm._v(_vm._s(_vm.$t('Configuration Error')))]),_c('h2',{staticClass:\"error-info-additional\"},[_vm._v(\" \"+_vm._s(_vm.$t('Configuration error description'))+\" \")]),_c('button',{staticClass:\"refresh-button\",on:{\"click\":_vm.refresh}},[_vm._v(_vm._s(_vm.$t('Refresh')))])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'ErrorPage',\n props: {\n configError: {\n type: Boolean,\n default: false,\n },\n },\n methods: {\n refresh() {\n window.location.reload();\n },\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorPage.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorPage.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ErrorPage.vue?vue&type=template&id=7462aa62&scoped=true\"\nimport script from \"./ErrorPage.vue?vue&type=script&lang=ts\"\nexport * from \"./ErrorPage.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ErrorPage.vue?vue&type=style&index=0&id=7462aa62&prod&lang=sass&scoped=true\"\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 \"7462aa62\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.initTooltip && _vm.isTooltipOpen)?_c('div',{staticClass:\"rotate-tooltip\",on:{\"click\":_vm.closeTooltipFromClick}},[_c('CloseIcon',{attrs:{\"lineLength\":16,\"circleBorderWidth\":\"0\",\"circleCrossColor\":\"white\"}}),_c('div',{staticClass:\"icon-column\"},[_c('svg',{staticClass:\"hand-icon\",attrs:{\"width\":\"72.306\",\"height\":\"87.406\",\"viewBox\":\"0 0 72.306 87.406\"}},[_c('g',{attrs:{\"transform\":\"translate(-50 -36)\"}},[_c('path',{attrs:{\"d\":\"M53.848,50.293l7.421-7.421c0-.275.275-.275.275-.825a1.01,1.01,\\n 0,0,0-.275-.825l-.825-.55a.959.959,0,0,0-.55-.275c-.275,\\n 0-.55.275-.825.275l-8.8,8.8a1.374,1.374,0,0,0,0,1.649l8.8,\\n 8.8a1.374,1.374,0,0,0,1.649,0l.55-.825a1.031,1.031,0,0,0,0-1.649Z\",\"fill\":\"#415b91\"}}),_c('path',{attrs:{\"d\":\"M111.844,108.838c-.275.275-.275.55-.275,1.1l-.825,7.421a1.773,\\n 1.773,0,0,1-1.649,1.649H85.182a1.773,1.773,0,0,\\n 1-1.649-1.649l-.55-7.146a1.429,1.429,0,0,\\n 0-.55-1.1c-1.649-2.473-9.9-14.842-7.971-21.714a6.019,6.019,0,0,\\n 1,3.3-3.573,2.448,2.448,0,0,0,1.374-2.2V54.416a4.552,4.552,0,0,\\n 1,1.374-3.3,5.071,5.071,0,0,1,3.3-1.374,4.454,4.454,0,0,1,\\n 4.673,4.673V67.334a2.463,2.463,0,0,0,2.474,2.474H92.6a5.953,5.953,\\n 0,0,1,5.222,2.749,2.488,2.488,0,0,0,2.749.825,6.051,6.051,0,0,1,\\n 2.2-.275,6.687,6.687,0,0,1,5.5,3.023,2.259,2.259,0,0,0,1.649,\\n 1.1c1.924,0,6.871.825,7.971,7.7C118.99,92.621,117.066,100.867,\\n 111.844,108.838ZM92.6,60.738v-6.6a8.363,8.363,0,0,0-3.023-6.6,9.6,\\n 9.6,0,0,0-6.047-2.2,8.469,8.469,0,0,0-8.8,8.8V80.253a10.775,\\n 10.775,0,0,0-4.673,5.772c-1.1,3.848-.275,9.07,2.749,15.392a65.341,\\n 65.341,0,0,0,5.5,9.62l.55,6.6a6.468,6.468,0,0,0,6.047,\\n 5.772H108.82a5.974,5.974,0,0,0,6.047-5.222l.825-6.872c5.772-8.795,\\n 7.7-18.141,6.047-27.211a12.9,12.9,0,0,0-5.5-9.07,13.169,13.169,\\n 0,0,0-5.5-1.924,10.294,10.294,0,0,0-8.52-4.123,6.049,6.049,0,0,\\n 0-2.2.275,9.555,9.555,0,0,0-6.047-3.3Z\",\"fill\":\"#415b91\"}}),_c('path',{attrs:{\"d\":\"M118.166,50.842l-7.421,7.421a1.374,1.374,0,0,0,0,\\n 1.649l.549.55a1.374,1.374,0,0,0,1.649,0l8.8-8.8a1.374,1.374,0,0,0,\\n 0-1.649l-8.8-8.8a1.374,1.374,0,0,0-1.649,0l-.549.825a1.03,1.03,0,0,\\n 0,0,1.649Z\",\"fill\":\"#415b91\"}}),_c('path',{attrs:{\"d\":\"M94.253,65.135A16.411,16.411,0,0,0,83.808,36c-9.07,0-17.041,\\n 7.421-17.041,16.492a17.88,17.88,0,0,0,7.971,14.293V61.012a13.987,\\n 13.987,0,0,1-3.573-8.521,12.094,12.094,0,1,1,24.188,0,11.638,\\n 11.638,0,0,1-3.3,8.246Z\",\"fill\":\"#415b91\",\"opacity\":\"0.5\"}})])])]),_c('div',{staticClass:\"text-column\"},[_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('Kliknij i przesuń,')))]),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.$t('aby obracać kamerą')))])])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport CloseIcon from '@/components/icons/CloseIcon.vue';\n\nexport default Vue.extend({\n name: 'RotateTooltip',\n components: { CloseIcon },\n props: {\n initTooltip: {\n type: Boolean,\n required: true,\n },\n },\n data() {\n return {\n isTooltipOpen: true,\n };\n },\n methods: {\n closeTooltip(event: MouseEvent | TouchEvent) {\n if (!event.target) return;\n const target = event.target as HTMLElement;\n if (!target.classList.contains('psv-markers-svg-container')) return;\n this.isTooltipOpen = false;\n },\n closeTooltipFromClick() {\n this.isTooltipOpen = false;\n },\n },\n created() {\n document.addEventListener('mousedown', this.closeTooltip);\n document.addEventListener('touchstart', this.closeTooltip);\n },\n beforeDestroy() {\n document.removeEventListener('mousedown', this.closeTooltip);\n document.removeEventListener('touchstart', this.closeTooltip);\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RotateTooltip.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RotateTooltip.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RotateTooltip.vue?vue&type=template&id=2cf045bd&scoped=true\"\nimport script from \"./RotateTooltip.vue?vue&type=script&lang=ts\"\nexport * from \"./RotateTooltip.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RotateTooltip.vue?vue&type=style&index=0&id=2cf045bd&prod&lang=sass&scoped=true\"\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 \"2cf045bd\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"not-supported\"},[_c('div',{staticClass:\"not-supported-overlay\"}),_c('p',{staticClass:\"not-supported__heading\"},[_vm._v(_vm._s(_vm.$t('Not Supported title')))]),_c('p',{staticClass:\"not-supported__subheading\"},[_vm._v(_vm._s(_vm.$t('Not Supported description')))]),_vm._m(0)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ul',{staticClass:\"list--vertical\"},[_c('li',[_c('a',{attrs:{\"href\":\"https://www.google.pl/intl/pl/chrome/\"}},[_c('img',{staticClass:\"not-supported__icon\",attrs:{\"src\":require(\"@/assets/icons/google_chrome.svg\"),\"alt\":\"Google Chrome\"}})])]),_c('li',[_c('a',{attrs:{\"href\":\"https://www.mozilla.org/pl/firefox/new/#\"}},[_c('img',{staticClass:\"not-supported__icon\",attrs:{\"src\":require(\"@/assets/icons/mozilla_firefox.svg\"),\"alt\":\"Mozilla Firefox\"}})])]),_c('li',[_c('a',{attrs:{\"href\":\"https://www.opera.com/\"}},[_c('img',{staticClass:\"not-supported__icon\",attrs:{\"src\":require(\"@/assets/icons/opera.svg\"),\"alt\":\"Opera\"}})])])])\n}]\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({ name: 'NotSupportedBrowser' });\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotSupportedBrowser.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotSupportedBrowser.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NotSupportedBrowser.vue?vue&type=template&id=3dbf993c&scoped=true\"\nimport script from \"./NotSupportedBrowser.vue?vue&type=script&lang=ts\"\nexport * from \"./NotSupportedBrowser.vue?vue&type=script&lang=ts\"\nimport style0 from \"./NotSupportedBrowser.vue?vue&type=style&index=0&id=3dbf993c&prod&lang=sass&scoped=true\"\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 \"3dbf993c\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport Map from '@/components/Map.vue';\nimport Loader from '@/components/Loader.vue';\nimport YslabLogo from '@/components/YslabLogo.vue';\nimport Compass from '@/components/Compass.vue';\nimport ErrorPage from '@/components/ErrorPage.vue';\nimport RotateTooltip from '@/components/RotateTooltip.vue';\nimport NotSupportedBrowser from '@/components/NotSupportedBrowser.vue';\nimport checkBrowserSupport from '@/helpers/supportedBrowsers';\nimport { osName, isMobile } from '@/helpers/mobile-device-detect';\nimport AppService from './services/AppService';\nimport RouteService from './services/RouteService';\nimport { Breakpoint } from './models/app.model';\nimport { TextureData } from './models/viewer.model';\n\nexport default Vue.extend({\n name: 'App',\n data() {\n return {\n AppService,\n appService: null as null | AppService,\n showMap: window.innerWidth >= 768,\n activePointViewAreaRotateDeg: 0,\n appConfigLoaded: false,\n defaultImageLoaded: false,\n loadedImages: [] as Array,\n loadedTextures: [] as Array,\n loadingTextures: [] as Array,\n activeFloor: 0,\n viewerIsReady: false,\n initialViewerIsReady: false,\n classListWithUserDevice: `--${osName} ${isMobile ? '--mobile' : ''}`,\n appSizeBreakpoint: 'desktop' as Breakpoint,\n defaultRoomLoadingProgress: 0,\n wasMapPointClicked: false,\n isSupported: false,\n supportedBrowserChecked: false,\n showUI: true,\n preloadingViewError: false,\n resimoDataLoadError: false,\n apartmentNotFoundError: false,\n panoramaMappingsLoadError: false,\n markersConfigLoadError: false,\n };\n },\n computed: {\n errorVisible(): boolean {\n return this.preloadingViewError || this.resimoDataLoadError || this.apartmentNotFoundError\n || this.panoramaMappingsLoadError || this.markersConfigLoadError;\n },\n configErrorVisible(): boolean {\n if (this.resimoDataLoadError || this.panoramaMappingsLoadError) return true;\n if (this.apartmentNotFoundError) return false;\n if (this.markersConfigLoadError) return true;\n if (this.preloadingViewError) return false;\n return false;\n },\n },\n components: {\n PhotoViewer: () => import(/* webpackChunkName: \"p-h\" */ '@/components/PhotoViewer.vue'),\n Map,\n Loader,\n YslabLogo,\n Compass,\n RotateTooltip,\n ErrorPage,\n NotSupportedBrowser,\n },\n methods: {\n toggleMap() {\n this.showMap = !this.showMap;\n },\n rotateActivePointViewArea(rotationDeg: number) {\n this.activePointViewAreaRotateDeg = rotationDeg;\n },\n async initAppService() {\n this.appService = new AppService(this.appSizeBreakpoint);\n\n await this.appService.setupApartmentService();\n await this.appService.setupMarkersConfig();\n },\n closeMapIfMobile() {\n if (window.innerWidth < 768) {\n this.showMap = false;\n }\n },\n textureLoaded(data: TextureData) {\n this.loadingTextures = this.loadingTextures\n .filter((texture) => texture !== data.name);\n this.loadedTextures.push(data.name);\n this.appService?.viewerService?.setRoomTexture(data.name, data.texture);\n\n if (data.name === this.appService?.viewerService?.getDefaultRoomName()) {\n this.defaultImageLoaded = true;\n this.appService.viewerService.loadMissingRooms();\n }\n },\n updatePageTitle(apartmentSymbol: string) {\n if (apartmentSymbol) {\n document.title = `${document.title} ${apartmentSymbol}`;\n }\n },\n getCompassRotateDeg() {\n if (!this.appService) return 0;\n return this.appService.getCompassRotateDegOffset()\n - this.activePointViewAreaRotateDeg;\n },\n setAppSizeBreakpoint() {\n const routeService = new RouteService();\n const appContainer = this.$refs.app as HTMLDivElement;\n let appWidth: number;\n\n if (routeService.targetWidth) {\n appWidth = routeService.targetWidth;\n } else {\n appWidth = appContainer.getBoundingClientRect().width;\n }\n\n if (appWidth <= 940) this.appSizeBreakpoint = 'mobile';\n else if (appWidth <= 1400) this.appSizeBreakpoint = 'laptop';\n else this.appSizeBreakpoint = 'desktop';\n },\n onMapPointClickHandler(roomName: string) {\n if (!this.loadedTextures.includes(roomName)) return;\n this.viewerIsReady = false;\n this.appService?.setActiveRoom(roomName);\n this.wasMapPointClicked = true;\n this.rotateActivePointViewArea(this.appService?.getViewAreaRotateDegOffset() || 0);\n this.closeMapIfMobile();\n },\n getLanguageFromUrl() {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const lang = urlParams.get('lang');\n if (lang) this.$i18n.locale = lang;\n },\n handleUI(e: KeyboardEvent) {\n if (e.code === 'KeyU') this.toggleUI();\n },\n toggleUI() {\n this.showUI = !this.showUI;\n let value = 'hidden';\n const HTML: HTMLElement | null = document.querySelector('html');\n if (this.showUI) value = 'visible';\n if (!this.showUI) value = 'hidden';\n if (HTML) HTML.style.setProperty('--visibility', value);\n },\n onFloorChange(newFloor: number) {\n this.activeFloor = newFloor;\n },\n },\n watch: {\n viewerIsReady() {\n this.defaultImageLoaded = true;\n this.appService?.viewerService?.loadMissingRooms();\n\n if (!this.initialViewerIsReady) {\n this.initialViewerIsReady = true;\n }\n },\n configErrorVisible(val) {\n if (!val) return;\n if (!this.appService?.routeService.routeParams.wasAutoRefreshed) {\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set('wasAutoRefreshed', 'true');\n const newUrl = `${window.location.origin}${window.location.pathname}?${searchParams.toString()}`;\n window.history.pushState({ path: newUrl }, '', newUrl);\n window.location.reload();\n }\n },\n },\n created() {\n this.isSupported = checkBrowserSupport();\n this.getLanguageFromUrl();\n },\n mounted() {\n this.supportedBrowserChecked = true;\n this.setAppSizeBreakpoint();\n\n this.initAppService().then(() => {\n if (this.appService?.markersConfig) {\n this.appConfigLoaded = true;\n }\n\n this.$watch('appService.viewerService.loadingData.defaultRoom.finished', (val) => {\n if (val) this.defaultImageLoaded = true;\n }, { deep: true, immediate: true });\n\n this.$watch('appService.viewerService.loadingData.defaultRoom.loadingProgress', (val) => {\n this.defaultRoomLoadingProgress = val;\n }, { deep: true, immediate: true });\n\n this.$watch('appService.apartmentService.apartment.name', (val) => {\n if (val) this.updatePageTitle(val);\n }, { deep: true, immediate: true });\n\n this.$watch('appService.viewerService.error', (val) => {\n if (val === true) this.preloadingViewError = true;\n }, { immediate: true });\n\n this.$watch('appService.resimoDataLoadError', (val) => {\n if (val === true) this.resimoDataLoadError = true;\n }, { immediate: true });\n\n this.$watch('appService.apartmentNotFoundError', (val) => {\n if (val === true) this.apartmentNotFoundError = true;\n }, { immediate: true });\n\n this.$watch('appService.panoramaMappingsLoadError', (val) => {\n if (val === true) this.panoramaMappingsLoadError = true;\n }, { immediate: true });\n\n this.$watch('appService.markersConfigLoadError', (val) => {\n if (val === true) this.markersConfigLoadError = true;\n }, { immediate: true });\n\n this.$watch('appService.viewerService.loadingData.loadedImages', (val) => {\n this.loadedImages = val;\n });\n\n document.addEventListener('keyup', this.handleUI);\n });\n },\n});\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=b74468e6\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=b74468e6&prod&lang=sass\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport 'whatwg-fetch';\nimport { library, dom } from '@fortawesome/fontawesome-svg-core';\nimport { faPersonWalking, faStairs, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport VueI18n from 'vue-i18n';\nimport * as Sentry from '@sentry/vue';\nimport { BrowserTracing } from '@sentry/tracing';\nimport pl from '@/trans/pl.json';\nimport en from '@/trans/en.json';\nimport fr from '@/trans/fr.json';\nimport es from '@/trans/es.json';\nimport App from './App.vue';\n\nif (process.env.NODE_ENV === 'production') {\n Sentry.init({\n Vue,\n dsn: 'https://72c64d3edabe41d6a67e41dbb2f0015e@o522645.ingest.sentry.io/4504875996938240',\n integrations: [new BrowserTracing()],\n tracesSampleRate: 0.1,\n });\n}\n\nlibrary.add(faPersonWalking, faTimes, faStairs);\n\ndom.watch();\n\nVue.config.productionTip = false;\n\nVue.use(VueI18n);\n\nconst i18n = new VueI18n({\n messages: {\n en, pl, fr, es,\n },\n locale: Intl.DateTimeFormat().resolvedOptions().locale.slice(0, 2) || navigator.language.slice(0, 2),\n});\n\nnew Vue({\n i18n,\n render: (h) => h(App),\n}).$mount('#app');\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YslabLogo.vue?vue&type=style&index=0&id=ebc5f82c&prod&lang=sass&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=b74468e6&prod&lang=sass\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Compass.vue?vue&type=style&index=0&id=63cd8670&prod&lang=sass&scoped=true\""],"sourceRoot":""}