@panoramax/web-viewer 4.3.1-develop-78b79ba1 → 4.3.1-develop-39b43404

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,10 @@ Before _2.0.0_, Viewer was embed in the [API repository](https://gitlab.com/pano
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ### Changed
12
+
13
+ - The _one click to hide all widgets_ feature shows back widgets after mouse move (similar to video players).
14
+
11
15
  ## [4.3.1] - 2026-01-19
12
16
 
13
17
  ### Added
package/build/index.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * LICENSE file in the root directory of this source tree.
10
10
  *
11
11
  */
12
- !function(ae,ue){"object"===typeof exports&&"object"===typeof module?module.exports=ue():"function"===typeof define&&define.amd?define("Panoramax",[],ue):"object"===typeof exports?exports.Panoramax=ue():ae.Panoramax=ue()}(this,(()=>(()=>{var ae={9039:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Basic});var ut=nt(4542),qt=nt(5254),Yt=nt(4964),Xt=nt(7208),ys=nt(5995),Ec=nt(7343),lu=nt(2614),uu=nt.n(lu),_u=nt(8330);nt(1865),nt(3638);class Basic extends ut.WF{constructor(){let ae=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super(),this.users=["geovisio"],this["map-style"]=this.getAttribute("map-style")||(0,Xt.MapTiles)(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`\ud83d\udcf7 Panoramax ${this.getClassName()} - Version ${_u.rE} (78b79ba)\n\n\ud83c\udd98 Issues can be reported at ${_u.Jk.O}`),ae||(this._isInternetFast=null,(0,Ec.isInternetFast)().then((ae=>this._isInternetFast=ae)))}connectedCallback(){super.connectedCallback(),this._t=(0,Yt.getTranslations)(this.lang),this.loader=(0,ys.createWebComp)("pnx-loader",{_parent:this,"no-label":(0,Ec.isInIframe)()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach((ae=>{let[ue,nt]=ae;this.getAttribute(ue)&&console.error(`Component attribute "${ue}" has been renamed into "${nt}". Old attribute "${ue}" is ignored.`)})),(0,Ec.isInIframe)()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||(0,ys.createWebComp)("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let ae=this.endpoint;try{this["map-style"]=JSON.parse(this["map-style"])}catch(nt){}try{this.api=new qt.A(this.endpoint,{users:this.users,fetch:this["fetch-options"],style:this["map-style"]}),this.api.onceReady().then((()=>{if(ae!=this._loadsAPI||!this.api)return;let ue=this.api.getUnavailableFeatures(),nt=this.api.getAvailableFeatures();nt=0===ue.length?"\u2705 All features available":"\u2705 Available features: "+nt.join(", "),ue=0===ue.length?"":"\ud83d\udeab Unavailable features: "+ue.join(", "),console.info(`\ud83c\udf10 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\n\u2139\ufe0f API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${nt}\n ${ue}\n`.trim())})).catch((ae=>this.loader.dismiss(ae,this._t.pnx.error_api))).finally((()=>delete this._loadsAPI))}catch(nt){var ue;delete this._loadsAPI,null!==(ue=this.loader)&&void 0!==ue&&ue.dismiss?this.loader.dismiss(nt,this._t.pnx.error_api):console.error(nt)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise((ae=>setTimeout(ae,100))).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(ae,ue,nt){if(super.attributeChangedCallback(ae,ue,nt),"endpoint"===ae&&(this._loadsAPI&&nt&&this._loadsAPI===nt||this.api&&this.api._endpoint===nt||!nt||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(ae)){let ut,qt,Yt,Xt;"picture"===ae?(ut=this.sequence,Yt=this.sequence,qt=nt,Xt=ue):(ut=nt,Yt=ue,qt=this.picture,Xt=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:ut,picId:qt,prevSeqId:Yt,prevPicId:Xt}}))}}getClassName(){return"Basic"}select(){let ae=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,ue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;arguments.length>2&&void 0!==arguments[2]&&arguments[2]&&(this.picture=null,this.sequence=null),this.picture=ue,this.sequence=ae}isWidthSmall(){return(null===this||void 0===this?void 0:this.offsetWidth)<576}isHeightSmall(){return(null===this||void 0===this?void 0:this.offsetHeight)<400}render(){return ut.qy`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}addEventListener(ae,ue,nt){let ut=ae.split(":").shift();if(ut&&this.getSubComponentsNames().includes(ut)){var qt;const Yt=ae.substring(ut.length+1);null!==(qt=this[ut])&&void 0!==qt&&qt.addEventListener?this[ut].addEventListener(Yt,ue,nt):setTimeout((()=>this.addEventListener(ae,ue,nt)),50)}else super.addEventListener(ae,ue,nt)}static GetJSONConverter(){return{fromAttribute:ae=>null===ae||""===ae?null:"object"===typeof ae||Array.isArray(ae)?ae:uu().parse(ae),toAttribute:ae=>null===ae||""===ae?"":"string"===typeof ae?ae:uu().stringify(ae)}}}Basic.properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Basic.GetJSONConverter()},users:{type:Array,reflect:!0},"map-style":{type:String},lang:{type:String},endpoint:{type:String}}},153:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>CoverageMap});var ut=nt(9039),qt=nt(5642),Yt=nt(8340),Xt=nt(927),ys=(nt(7776),nt(2118));class CoverageMap extends ut.A{constructor(){super(),this._mapContainer=document.createElement("div"),this.onceAPIReady().then((()=>{this.loader.setAttribute("value",30),this._initParams=new ys.Ay(ys.Ay.GetComponentProperties(CoverageMap,this)),this._initMap()}))}disconnectedCallback(){var ae;super.disconnectedCallback(),null===(ae=this.map)||void 0===ae||ae.destroy()}getClassName(){return"CoverageMap"}onceReady(){return this.map&&this.map.waitForEnoughMapLoaded?this.map.waitForEnoughMapLoaded():new Promise((ae=>setTimeout(ae,100))).then(this.onceReady.bind(this))}render(){return[this.loader,this._mapContainer]}getSubComponentsNames(){const ae=super.getSubComponentsNames();return ae.push("map"),ae}_initMap(){this.map=new qt.A(this,this._mapContainer,Object.assign({},this._initParams.getMapInit(),{hash:!0})),this.map.addControl(new Xt.NavigationControl({showCompass:!1})),this.loader.setAttribute("value",70),this.addEventListener("select",this._onSelect.bind(this)),this.map.on("picture-click",(ae=>this.select(ae.seqId,ae.picId))),this.map.on("sequence-click",(ae=>this.select(ae.seqId))),this.map.waitForEnoughMapLoaded().then((async()=>{await(0,ys.mK)(this.map,this._initParams.getMapPostInit()),this.map.reloadLayersStyles(),this.loader.dismiss()}))}_onSelect(ae){if(ae.detail.picId||ae.detail.seqId){const ue=ae.detail.picId?"pictures":"sequences",nt=this.map.queryRenderedFeatures({layers:[...this.map._userLayers].map((ae=>(0,Yt.getUserLayerId)(ae,ue))),filter:["==",["get","id"],ae.detail.picId||ae.detail.seqId]});nt.length>=0&&null!=nt[0]&&this.map._attachPreviewToPictures({features:nt},ue)}}}CoverageMap.properties={"map-options":{converter:ut.A.GetJSONConverter()},...ut.A.properties},customElements.define("pnx-coverage-map",CoverageMap)},1752:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Editor});nt(7365);var ut=nt(9039),qt=nt(5642),Yt=nt(9048),Xt=nt(508),ys=nt(8340),Ec=nt(1545),lu=nt(5995);const uu="sequence-headings";class Editor extends ut.A{constructor(){super(),this.raster=null,this.background="streets",this.users=[],this._psvContainer=document.createElement("div"),this._psvContainer.setAttribute("slot","bg"),this._mapContainer=document.createElement("div"),this._mapContainer.setAttribute("slot","bg"),this.grid=(0,lu.createWebComp)("pnx-cornered-grid"),this.grid.appendChild(this._psvContainer),this.grid.appendChild(this._mapContainer),this.onceAPIReady().then((()=>{this.loader.setAttribute("value",30),this.sequence||this.loader.dismiss({},"No sequence is selected"),this.addEventListener("select",this._onSelect.bind(this)),this._initPSV(),this._initMap()}))}disconnectedCallback(){var ae,ue;super.disconnectedCallback(),null===(ae=this.map)||void 0===ae||ae.destroy(),null===(ue=this.psv)||void 0===ue||ue.destroy()}getClassName(){return"Editor"}onceReady(){var ae,ue;return this.map&&this.psv&&null!==(ae=(ue=this.map).loaded)&&void 0!==ae&&ae.call(ue)?Promise.resolve():new Promise((ae=>setTimeout(ae,100))).then(this.onceReady.bind(this))}connectedCallback(){Array.isArray(this.users)&&this.users.length>0&&(console.warn("Parameters users can't be changed in Editor, only selected sequence can be visible"),this.users=[]),super.connectedCallback(),this._moveChildToGrid(),window.addEventListener("DOMContentLoaded",(()=>{this._moveChildToGrid()}),{once:!0})}attributeChangedCallback(ae,ue,nt){"users"===ae&&Array.isArray(nt)&&nt.length>0?console.warn("Parameters users can't be changed in Editor, only selected sequence can be visible"):super.attributeChangedCallback(ae,ue,nt)}render(){return[this.loader,this.grid]}getSubComponentsNames(){return super.getSubComponentsNames().concat(["map","psv","grid"])}_initPSV(){try{this.psv=new Yt.Ay(this,this._psvContainer),this.psv._myVTour.datasource.nodeResolver=this._getNode.bind(this)}catch(ae){let ue=Ec.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(ae,ue)}}_initMap(){try{this.map=new qt.A(this,this._mapContainer,{raster:this.raster,background:this.background,supplementaryStyle:this._createMapStyle(),zoom:15,picMarkerDraggable:!0}),(0,ys.linkMapAndPhoto)(this),this.loader.setAttribute("value",50),this._loadSequence(),this.map.once("load",(()=>{this.map.hasTwoBackgrounds()&&this._addMapBackgroundWidget(),this._bindPicturesEvents()}));const ae=this.map._picMarker.setRotation.bind(this.map._picMarker);this.map._picMarker.setRotation=ue=>(ue=void 0===this._lastRelHeading?ue:ue+this._lastRelHeading-this.psv.getPictureRelativeHeading(),ae(ue))}catch(ae){this.loader.dismiss(ae,this._t.pnx.error_psv)}}_createMapStyle(){return{sources:{geovisio_editor_sequences:{type:"geojson",data:{type:"FeatureCollection",features:[]}}},layers:[{id:"geovisio_editor_sequences",type:"line",source:"geovisio_editor_sequences",layout:{...ys.VECTOR_STYLES.SEQUENCES.layout},paint:{...ys.VECTOR_STYLES.SEQUENCES.paint}},{id:"geovisio_editor_pictures",type:"circle",source:"geovisio_editor_sequences",layout:{...ys.VECTOR_STYLES.PICTURES.layout},paint:{...ys.VECTOR_STYLES.PICTURES.paint}}]}}_bindPicturesEvents(){this.map.on("mousemove","geovisio_editor_pictures",(()=>{this.map.getCanvas().style.cursor="pointer"})),this.map.on("mouseleave","geovisio_editor_pictures",(()=>{this.map.getCanvas().style.cursor=""})),this.map.on("click","geovisio_editor_pictures",this.map._onPictureClick.bind(this.map))}_loadSequence(){return this.loader.setAttribute("value",60),this.api.getSequenceItems(this.sequence).then((ae=>{if(this.loader.setAttribute("value",80),this.map.once("sourcedata",(()=>{this.map.setPaintProperty("geovisio_editor_sequences","line-color",this.map._getLayerColorStyle("sequences")),this.map.setPaintProperty("geovisio_editor_pictures","circle-color",this.map._getLayerColorStyle("pictures")),this.map.setLayoutProperty("geovisio_editor_sequences","visibility","visible"),this.map.setLayoutProperty("geovisio_editor_pictures","visibility","visible"),this.map.once("styledata",(()=>this.loader.dismiss()))})),this._sequenceData=ae.features,this.map.getSource("geovisio_editor_sequences").setData({type:"FeatureCollection",features:[{id:this.sequence,type:"Feature",properties:{id:this.sequence},geometry:{type:"LineString",coordinates:ae.features.map((ae=>ae.geometry.coordinates))}},...ae.features.map((ae=>(ae.properties.id=ae.id,ae.properties.sequences=[this.sequence],ae)))]}),this.picture){const ue=ae.features.find((ae=>ae.id===this.picture));ue?(this.select(this.sequence,this.picture,!0),this.map.jumpTo({center:ue.geometry.coordinates,zoom:18})):console.log("Picture with ID",ue,"was not found")}else{const ue=[...ae.features[0].geometry.coordinates,...ae.features[0].geometry.coordinates];for(let nt=1;nt<ae.features.length;nt++){const ut=ae.features[nt].geometry.coordinates;ut[0]<ue[0]&&(ue[0]=ut[0]),ut[1]<ue[1]&&(ue[1]=ut[1]),ut[0]>ue[2]&&(ue[2]=ut[0]),ut[1]>ue[3]&&(ue[3]=ut[1])}this.map.fitBounds(ue,{animate:!1})}})).catch((ae=>this.loader.dismiss(ae,this._t.pnx.error_api)))}_getNode(ae){const ue=this._sequenceData.find((ue=>ue.properties.id===ae)),nt=ue?(0,Xt.apiFeatureToPSVNode)(ue,this._t,this._isInternetFast,void 0,(ae=>this.api.cleanResourceURL(ae))):null;return nt&&delete nt.links,nt}_addMapBackgroundWidget(){const ae=(0,lu.createWebComp)("pnx-map-background",{_parent:this,size:"sm",slot:"bottom-left"});this.grid.appendChild(ae)}_moveChildToGrid(){Array.from(this.querySelectorAll("[slot]")).forEach((ae=>{var ue;null!==(ue=ae.tagName)&&void 0!==ue&&ue.toLowerCase().startsWith("pnx-")&&(ae._parent=this,ae._t=this._t),this.grid.appendChild(ae)}))}previewSequenceHeadingChange(ae){const ue=void 0!==this.map.getLayer(uu);if(this.map._picMarkerPreview.remove(),void 0===ae)return delete this._lastRelHeading,ue&&this.map.setLayoutProperty(uu,"visibility","none"),void(this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x));this._lastRelHeading=ae,ue||this.map.addLayer({id:uu,type:"symbol",source:"geovisio_editor_sequences",layout:{"icon-image":"pnx-marker","icon-overlap":"always","icon-size":.8}});const nt=-this.psv.getPictureRelativeHeading();this.map.setLayoutProperty(uu,"visibility","visible"),this.map.setLayoutProperty(uu,"icon-rotate",["+",["get","view:azimuth"],nt,ae]);const ut=[["==",["geometry-type"],"Point"]];this.picture&&ut.push(["!=",["get","id"],this.picture]),this.map.setFilter(uu,["all",...ut]),this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x)}_onSelect(){void 0!==this._lastRelHeading&&this.previewSequenceHeadingChange(this._lastRelHeading)}}Editor.properties={raster:{converter:ut.A.GetJSONConverter()},background:{type:String},...ut.A.properties},customElements.define("pnx-editor",Editor)},3407:(ae,ue,nt)=>{"use strict";nt.d(ue,{$p:()=>_u,Ay:()=>PhotoViewer,RD:()=>wu});nt(970);var ut=nt(1545),qt=nt(4451),Yt=nt(9039),Xt=nt(9048),ys=nt(5995),Ec=nt(7343),lu=nt(2118),uu=nt(4207);const _u=20,vu=Math.PI/6,wu=["pnx-mini","pnx-widget-player","pnx-widget-zoom"];class PhotoViewer extends Yt.A{constructor(){super(),this["psv-options"]={},this["url-parameters"]=this.getAttribute("url-parameters")||!0,this["keyboard-shortcuts"]=this.getAttribute("keyboard-shortcuts")||!0,this["skip-tags-menu-opening"]="true"!==(this.getAttribute("skip-tags-menu-opening")||"false"),this.widgets=this.getAttribute("widgets")||"true",this.grid=(0,ys.createWebComp)("pnx-cornered-grid"),this.psvContainer=document.createElement("div"),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.popup=(0,ys.createWebComp)("pnx-popup",{_parent:this,onclose:this._onPopupClose.bind(this)}),this.tabindex=0,this._sequencesMetadata={}}_createInitParamsHandler(){var ae,ue;this._initParams=new lu.Ay(lu.Ay.GetComponentProperties(PhotoViewer,this),Object.assign({},null===(ae=this.urlHandler)||void 0===ae?void 0:ae.currentURLParams(),null===(ue=this.urlHandler)||void 0===ue?void 0:ue.currentURLParams(!0)),{disableAnnotations:localStorage.getItem(Ec.DISABLE_ANNOTATIONS_PARAM)})}_initWidgets(){"false"!==this._initParams.getParentPostInit().widgets&&((0,Ec.isInIframe)()||(this.grid.appendChild((0,ys.createWebComp)("pnx-widget-player",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"})),this.grid.appendChild((0,ys.createWebComp)("pnx-annotations-switch",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"}))),(0,Ec.isInIframe)()?(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:"bottom-right",light:!0,_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(this.legend)):this.isWidthSmall()?(this.legend=(0,ys.createWebComp)("pnx-picture-legend",{_parent:this}),this.bottomDrawer=(0,ys.createWebComp)("pnx-bottom-drawer",{slot:"bottom",_parent:this,class:this._initParams.getParentPostInit().willLoadPicture?void 0:"pnx-hidden"}),this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer),this.addEventListener("select",(ae=>{(0,Ec.isNullId)(ae.detail.picId)?this.bottomDrawer.classList.add("pnx-hidden"):this.bottomDrawer.classList.remove("pnx-hidden")}))):(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:this.isWidthSmall()?void 0:"top-left",_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-zoom",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.grid.appendChild(this.legend)))}connectedCallback(){super.connectedCallback(),this.presetsManager=new uu.A(this.lang),this["url-parameters"]&&"false"!==this["url-parameters"]&&(this.urlHandler=new qt.A(this),this.onceReady().then((()=>{this.urlHandler.listenToChanges(),this.urlHandler._onParentChange()}))),this.onceAPIReady().then(this._postAPIInit.bind(this)),this._moveChildToGrid(),window.addEventListener("DOMContentLoaded",(()=>{this._moveChildToGrid()}),{once:!0})}disconnectedCallback(){var ae,ue;super.disconnectedCallback(),null===(ae=this.urlHandler)||void 0===ae||ae.destroy(),null===(ue=this.psv)||void 0===ue||ue.destroy(),document.body.removeEventListener("click",this._toggleKeyboardBasedOnFocus),window.removeEventListener("keypress",this._toggleKeyboardBasedOnFocus)}getClassName(){return"PhotoViewer"}onceReady(){return this.oncePSVReady().then((()=>this._initParams.getParentPostInit().willLoadPicture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve()))}render(){return[this.loader,this.grid,this.popup]}getSubComponentsNames(){return super.getSubComponentsNames().concat(["psv","grid","popup","urlHandler"])}oncePSVReady(){let ae;return new Promise((ue=>{ae=setInterval((()=>{this.psv&&"object"===typeof this.psv&&(this.psv.container?(clearInterval(ae),ue()):this.psv.addEventListener&&this.psv.addEventListener("ready",(()=>{clearInterval(ae),ue()}),{once:!0}))}),250)}))}onceFirstPicLoaded(){return this.oncePSVReady().then((()=>this.psv.getPictureMetadata()?Promise.resolve():new Promise((ae=>{this.psv.addEventListener("picture-loaded",ae,{once:!0})}))))}async _postAPIInit(){this.loader.setAttribute("value",30),this._createInitParamsHandler();const ae=this._initParams.getParentPostInit();this._initPSV(),this._initWidgets(),(0,lu.ai)(this,ae),ae.keyboardShortcuts&&this._handleKeyboardManagement(),ae.willLoadPicture?this.psv.getPictureMetadata()?this.loader.dismiss():this.psv.addEventListener("picture-loaded",(()=>this.loader.dismiss()),{once:!0}):this.loader.dismiss()}_initPSV(){try{this.psv=new Xt.Ay(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...ut.zY.keyboardActions,8:"ROTATE_UP",2:"ROTATE_DOWN",4:"ROTATE_LEFT",6:"ROTATE_RIGHT",PageUp:()=>this.psv.goToNextPicture(),9:()=>this.psv.goToNextPicture(),PageDown:()=>this.psv.goToPrevPicture(),3:()=>this.psv.goToPrevPicture(),5:()=>this.moveCenter(),"*":()=>this.moveCenter(),Home:()=>{var ae;return null===(ae=this._toggleFocus)||void 0===ae?void 0:ae.call(this)},7:()=>{var ae;return null===(ae=this._toggleFocus)||void 0===ae?void 0:ae.call(this)},End:()=>this.mini.toggleAttribute("collapsed"),1:()=>this.mini.toggleAttribute("collapsed")," ":()=>this.psv.toggleSequencePlaying(),0:()=>this.psv.toggleSequencePlaying()},...this._initParams.getPSVInit()}),this.oncePSVReady().then((()=>{this.loader.setAttribute("value",50),(0,lu.Vy)(this.psv,this._initParams.getPSVPostInit())})),this.psv.addEventListener("sequence-playing",(()=>this.classList.add("pnx-playing"))),this.psv.addEventListener("sequence-stopped",(()=>this.classList.remove("pnx-playing"))),this.psv.addEventListener("dblclick",(()=>clearTimeout(this._gridFocus))),this.psv.addEventListener("click",(ae=>{clearTimeout(this._gridFocus),"CANVAS"===ae.data.target.tagName&&(!this.isMapWide||this.isMapWide&&!this.isMapWide())&&(this._gridFocus=setTimeout((()=>{this.grid.toggleAway()?this.classList.add("pnx-grid-toggled"):this.classList.remove("pnx-grid-toggled")}),250))}))}catch(ae){let ue=ut.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(ae,ue)}}_enableKeyboard(){this.psv.startKeyboardControl()}_disableKeyboard(){this.psv.stopKeyboardControl()}_toggleKeyboardBasedOnFocus(ae){const ue=(null===ae||void 0===ae?void 0:ae.target)||document.activeElement;if(this.contains(ue)){for(let ae of this.grid.childNodes)if("bg"!==ae.getAttribute("slot")&&!wu.includes(ae.tagName.toLowerCase())&&ae.contains(ue))return void this._disableKeyboard();this._enableKeyboard()}else this._disableKeyboard()}_handleKeyboardManagement(){window.addEventListener("click",(ae=>this._toggleKeyboardBasedOnFocus(ae))),window.addEventListener("keypress",this._toggleKeyboardBasedOnFocus.bind(this)),this.popup.addEventListener("open",this._disableKeyboard.bind(this)),this.popup.addEventListener("close",this._enableKeyboard.bind(this)),this.psv.addEventListener("click",this._enableKeyboard.bind(this));for(let ae of this.grid.childNodes)"bg"===ae.getAttribute("slot")||wu.includes(ae.tagName.toLowerCase())||(ae.addEventListener("focusin",this._disableKeyboard.bind(this)),ae.addEventListener("focusout",(()=>{null===this.popup.getAttribute("visible")&&this._enableKeyboard()})))}_psvShouldGoFast(){return this.psv._sequencePlaying&&this.psv.getTransitionDuration()<1e3}_moveChildToGrid(){Array.from(this.querySelectorAll("[slot]")).forEach((ae=>{var ue;null!==(ue=ae.tagName)&&void 0!==ue&&ue.toLowerCase().startsWith("pnx-")&&(ae._parent=this,ae._t=this._t),"editors"===ae.getAttribute("slot")?this.onceReady().then((()=>{var ue;return null===(ue=this.legend)||void 0===ue?void 0:ue.appendChild(ae)})):this.grid.appendChild(ae)}))}setPopup(ae){let ue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;ae?this.popup.setAttribute("visible",""):this.popup.removeAttribute("visible"),this.popup.innerHTML="","string"===typeof ue?this.popup.innerHTML=ue:Array.isArray(ue)&&ue.forEach((ae=>this.popup.appendChild(ae)))}_onPopupClose(){this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:this.map&&this.isMapWide()?"map":"pic"}}))}_showQualityScoreDoc(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[(0,ys.createWebComp)("pnx-report-form",{_parent:this})])}_showShareOptions(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-share-menu",{_parent:this})])}_showSemanticsDoc(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-semantics-doc",{_t:this._t})])}_showSemanticsDownload(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-semantics-download",{_t:this._t})])}moveCenter(){this.psv.getPictureMetadata()&&this._psvAnimate({speed:Xt.LM,yaw:0,pitch:0,zoom:Xt.cS})}moveLeft(){this._moveToDirection("left")}moveRight(){this._moveToDirection("right")}moveUp(){this._moveToDirection("up")}moveDown(){this._moveToDirection("down")}_moveToDirection(ae){let ue=this.psv.getPosition();switch(ae){case"up":ue.pitch+=vu;break;case"left":ue.yaw-=vu;break;case"down":ue.pitch-=vu;break;case"right":ue.yaw+=vu}this._psvAnimate({speed:Xt.LM,...ue})}_psvAnimate(ae){this._lastPsvAnim&&this._lastPsvAnim.cancel(),this._lastPsvAnim=this.psv.animate(ae)}addEventListener(ae,ue,nt){super.addEventListener(ae,ue,nt)}}PhotoViewer.properties={"psv-options":{converter:Yt.A.GetJSONConverter()},widgets:{type:String},"url-parameters":{type:String},"keyboard-shortcuts":{type:String},tabindex:{type:Number},"skip-tags-menu-opening":{type:String},...Yt.A.properties},customElements.define("pnx-photo-viewer",PhotoViewer)},8743:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Viewer});nt(9616);var ut=nt(8340),qt=nt(3407),Yt=nt(2771),Xt=nt(7343),ys=nt(5995),Ec=nt(9683),lu=nt(2e3),uu=nt(9438),_u=nt(2118);const vu=100;class Viewer extends qt.Ay{constructor(){super(),this["map-options"]=!0,this.geocoder=this.getAttribute("geocoder")||"nominatim",this.mini=(0,ys.createWebComp)("pnx-mini",{slot:"bottom-left",_parent:this,onexpand:this._onMiniExpand.bind(this),collapsed:!!(0,Xt.isNullId)(this.picture)||void 0}),this.mini.addEventListener("expand",this._toggleFocus.bind(this)),this.grid.appendChild(this.mini),this.mapContainer=document.createElement("div"),this.tabindex=0}_createInitParamsHandler(){var ae,ue;this._initParams=new _u.Ay(_u.Ay.GetComponentProperties(Viewer,this),Object.assign({},null===(ae=this.urlHandler)||void 0===ae?void 0:ae.currentURLParams(),null===(ue=this.urlHandler)||void 0===ue?void 0:ue.currentURLParams(!0)),{map:(0,ut.getMapParamsFromLocalStorage)(),disableAnnotations:localStorage.getItem(Xt.DISABLE_ANNOTATIONS_PARAM)})}_initWidgets(){var ae,ue;"false"!==this._initParams.getParentPostInit().widgets&&(this.grid.appendChild((0,ys.createWebComp)("pnx-widget-zoom",{slot:this.isWidthSmall()?"top-left":"bottom-right",class:this.isWidthSmall()?"pnx-only-map pnx-print-hidden":"pnx-print-hidden",_parent:this})),(0,Xt.isInIframe)()?(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:"bottom-right",light:!0,_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(this.legend)):this.isWidthSmall()?(this.legend=(0,ys.createWebComp)("pnx-picture-legend",{_parent:this}),this.bottomDrawer=(0,ys.createWebComp)("pnx-bottom-drawer",{slot:"bottom",_parent:this,class:this._initParams.getParentPostInit().willLoadPicture?void 0:"pnx-hidden"}),this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer),this.addEventListener("select",(ae=>{(0,Xt.isNullId)(ae.detail.picId)?this.bottomDrawer.classList.add("pnx-hidden"):this.bottomDrawer.classList.remove("pnx-hidden")}))):(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:this.isWidthSmall()?"top":"top-left",_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this._miniPicLegend=(0,ys.createWebComp)("pnx-mini-picture-legend",{_parent:this}),this.grid.appendChild(this.legend)),(0,Xt.isInIframe)()||(this.grid.appendChild((0,ys.createWebComp)("pnx-widget-player",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"})),this.grid.appendChild((0,ys.createWebComp)("pnx-annotations-switch",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-geosearch",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,class:"pnx-only-map pnx-print-hidden",geocoder:this._initParams.getParentPostInit().geocoder})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-mapfilters",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,"user-search":null!==this.api._endpoints.user_search&&null!==this.api._endpoints.user_tiles,"quality-score":(null===(ae=this.map)||void 0===ae||null===(ue=ae._hasQualityScore)||void 0===ue?void 0:ue.call(ae))||!1,class:"pnx-only-map pnx-print-hidden"})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-semantics-filters",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,class:"pnx-only-map pnx-print-hidden"})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-maplayers",{slot:"top-right",_parent:this,class:"pnx-only-map pnx-print-hidden"}))))}disconnectedCallback(){var ae;super.disconnectedCallback(),null===(ae=this.map)||void 0===ae||ae.destroy()}getClassName(){return"Viewer"}getSubComponentsNames(){return super.getSubComponentsNames().concat(["mini","map"])}onceReady(){return Promise.all([this.oncePSVReady(),this.onceMapReady()]).then((()=>this._initParams.getParentPostInit().willLoadPicture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve()))}attributeChangedCallback(ae,ue,nt){var ut,qt;if(super.attributeChangedCallback(ae,ue,nt),"picture"===ae)if(null===(ut=this.legend)||void 0===ut||null===(qt=ut.setAttribute)||void 0===qt||qt.call(ut,"picture",nt),(0,Xt.isNullId)(ue)&&!(0,Xt.isNullId)(nt)&&this.mini.removeAttribute("collapsed"),(0,Xt.isNullId)(nt))this.map&&this.isMapWide()?this.mini.classList.add("pnx-hidden"):this.map&&!this.isMapWide()&&this._setFocus("map");else if((0,Xt.isNullId)(ue)&&this.sequence==this._initParams.getParentPostInit().sequence&&!this._initParams.getParentPostInit().picture){var Yt,ys;this.mini.classList.remove("pnx-hidden"),this.mini.removeAttribute("collapsed"),"closed"===(null===(Yt=this.bottomDrawer)||void 0===Yt||null===(ys=Yt.getAttribute)||void 0===ys?void 0:ys.call(Yt,"openness"))&&this.bottomDrawer.setAttribute("openness","half-opened")}else{var Ec,lu;if(this.mini.classList.remove("pnx-hidden"),(0,Xt.isNullId)(ue))this._setFocus("pic"),"closed"===(null===(Ec=this.bottomDrawer)||void 0===Ec||null===(lu=Ec.getAttribute)||void 0===lu?void 0:lu.call(Ec,"openness"))&&this.bottomDrawer.setAttribute("openness","half-opened")}"focus"===ae&&this._setFocus(nt)}onceMapReady(){if(!this["map-options"])return Promise.resolve();let ae;return new Promise((ue=>{ae=setInterval((()=>{var nt,ut,qt;"object"===typeof this.map&&(null!==(nt=this.map)&&void 0!==nt&&null!==(ut=nt.loaded)&&void 0!==ut&&ut.call(nt)?(clearInterval(ae),ue()):null!==(qt=this.map)&&void 0!==qt&&qt.once&&this.map.once("render",(()=>{clearInterval(ae),ue()})))}),250)}))}async _initMap(){await new Promise((ae=>{this.map=new Yt.A(this,this.mapContainer,this._initParams.getMapInit()),(0,ut.saveMapParamsToLocalStorage)(this.map),this.map.once("users-changed",(()=>{this.loader.setAttribute("value",75),ae()}))})),await(0,_u.mK)(this.map,this._initParams.getMapPostInit()),(0,ut.initMapKeyboardHandler)(this),(0,ut.linkMapAndPhoto)(this)}async _postAPIInit(){this.loader.setAttribute("value",30),this._createInitParamsHandler();const ae=this._initParams.getParentPostInit();this._initPSV(),await this._initMap(),this._initWidgets(),this._moveChildToGrid(),(0,_u.iz)(this,ae),ae.keyboardShortcuts&&this._handleKeyboardManagement(),ae.willLoadPicture?this.psv.addEventListener("picture-loaded",(ue=>{(0,_u.iz)(this,ae),this.loader.dismiss()}),{once:!0}):this.loader.dismiss()}_enableKeyboard(){this.map&&this.isMapWide()?this._enableKeyboardMap():this._enableKeyboardPSV()}_enableKeyboardMap(){this.psv.stopKeyboardControl(),this.map.keyboard.enable()}_enableKeyboardPSV(){this.psv.startKeyboardControl(),this.map.keyboard.disable()}_disableKeyboard(){this.psv.stopKeyboardControl(),this.map.keyboard.disable()}_toggleKeyboardBasedOnFocus(ae){const ue=(null===ae||void 0===ae?void 0:ae.target)||document.activeElement;if(this.contains(ue)){for(let ae of this.grid.childNodes)if("bg"!==ae.getAttribute("slot")&&!qt.RD.includes(ae.tagName.toLowerCase())&&ae.contains(ue))return void this._disableKeyboard();this._enableKeyboard()}else this._disableKeyboard()}_handleKeyboardManagement(){window.addEventListener("click",(ae=>this._toggleKeyboardBasedOnFocus(ae))),window.addEventListener("keypress",this._toggleKeyboardBasedOnFocus.bind(this)),this.addEventListener("focus-changed",(ae=>{this.popup.getAttribute("visible")?this._disableKeyboard():"map"===ae.detail.focus?this._enableKeyboardMap():this._enableKeyboardPSV()})),this.popup.addEventListener("open",this._disableKeyboard.bind(this)),this.popup.addEventListener("close",this._enableKeyboard.bind(this)),this.psv.addEventListener("click",this._enableKeyboardPSV.bind(this));for(let ae of this.grid.childNodes)"bg"===ae.getAttribute("slot")||qt.RD.includes(ae.tagName.toLowerCase())||(ae.addEventListener("focusin",this._disableKeyboard.bind(this)),ae.addEventListener("focusout",(()=>{null===this.popup.getAttribute("visible")&&this._enableKeyboard()})))}moveCenter(){const ae=this.psv.getPictureMetadata();ae&&(this.map&&this.isMapWide()?this.map.flyTo({center:ae.gps,zoom:20}):super.moveCenter())}_moveToDirection(ae){if(this.map&&this.isMapWide()){let ue;switch(ae){case"up":ue=[0,-100];break;case"left":ue=[-100,0];break;case"down":ue=[0,vu];break;case"right":ue=[vu,0]}this.map.panBy(ue)}else super._moveToDirection(ae)}isMapWide(){return this.mapContainer.parentNode==this.grid}_setFocus(ae){var ue,nt,ut,qt;let Yt=arguments.length>1&&void 0!==arguments[1]&&arguments[1],uu=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("map"===ae&&!this.map)throw new Error("Map is not enabled");if(!["map","pic"].includes(ae))throw new Error("Invalid focus value (should be pic or map)");if(this.focus=ae,(uu||("map"!==ae||!this.map||!this.isMapWide())&&("pic"!==ae||this.map&&this.isMapWide()))&&("map"===ae?(this.psvContainer.parentNode==this.grid&&(this.grid.removeChild(this.psvContainer),this.psvContainer.removeAttribute("slot")),this.mapContainer.parentNode==this.mini&&this.mini.removeChild(this.mapContainer),this.mapContainer.setAttribute("slot","bg"),this.grid.appendChild(this.mapContainer),this.mini.appendChild(this.psvContainer),this.mini.icon=(0,ys.fa)(Ec.pt),this._miniPicLegend&&this.mini.appendChild(this._miniPicLegend),(0,Xt.isNullId)(this.picture)?this.mini.classList.add("pnx-hidden"):this.mini.classList.remove("pnx-hidden"),this.map.getCanvas().focus()):(this.mapContainer.parentNode==this.grid&&(this.grid.removeChild(this.mapContainer),this.mapContainer.removeAttribute("slot")),this.psvContainer.parentNode==this.mini&&(this.mini.removeChild(this.psvContainer),this._miniPicLegend&&this.mini.removeChild(this._miniPicLegend)),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.mini.classList.remove("pnx-hidden"),this.mini.appendChild(this.mapContainer),this.mini.icon=(0,ys.fa)(lu.e5),this.psvContainer.focus()),null===this||void 0===this||null===(ue=this.map)||void 0===ue||null===(nt=ue.resize)||void 0===nt||nt.call(ue),this.psv.autoSize(),this.psv.forceRefresh(),null===(ut=this.legend)||void 0===ut||null===(qt=ut.setAttribute)||void 0===qt||qt.call(ut,"focus",this.focus),!Yt)){const ue=new CustomEvent("focus-changed",{detail:{focus:ae}});this.dispatchEvent(ue)}}_toggleFocus(){this._setFocus(this.isMapWide()?"pic":"map")}_onMiniExpand(){this.map.resize(),this.psv.autoSize()}_onMapFiltersChange(){var ae;const ue=(0,uu.qi)("#pnx-map-filters-menu"),nt=(0,uu.qi)("#pnx-map-theme"),qt=(0,ut.mapFiltersFormValues)(ue,nt,null===(ae=this.map)||void 0===ae?void 0:ae._hasQualityScore());this.map.setFilters(qt)}_showLocationPrecisionDoc(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-location-precision-doc",{_t:this._t})])}}Viewer.properties={"map-options":{converter:qt.Ay.GetJSONConverter()},focus:{type:String,reflect:!0},geocoder:{type:String},tabindex:{type:Number},...qt.Ay.properties},customElements.define("pnx-viewer",Viewer)},3921:(ae,ue,nt)=>{"use strict";nt.r(ue),nt.d(ue,{Basic:()=>ut.A,CoverageMap:()=>qt.A,Editor:()=>Yt.A,PhotoViewer:()=>ys.Ay,Viewer:()=>Xt.A});var ut=nt(9039),qt=nt(153),Yt=nt(1752),Xt=nt(8743),ys=nt(3407)},9341:(ae,ue,nt)=>{"use strict";nt.r(ue),nt.d(ue,{core:()=>ut,layout:()=>qt,menus:()=>Yt,ui:()=>Xt});var ut=nt(3921),qt=nt(456),Yt=nt(8794),Xt=nt(7091)},6784:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>BottomDrawer});var ut=nt(4542),qt=nt(1198),Yt=nt(5995);const Xt={opened:0,"half-opened":.7,closed:1};class BottomDrawer extends ut.WF{constructor(){super(),this._isDragging=!1,this.openness="half-opened"}firstUpdated(){super.firstUpdated(),this._boundTouchMove=this._onTouchMove.bind(this),this._boundTouchEnd=this._onTouchEnd.bind(this),this._drawerHeight=window.innerHeight-30;const ae=this._getDrawer();ae&&(ae.style.height=`${this._drawerHeight}px`,ae.style.maxHeight=`${this._drawerHeight}px`,(0,Yt.onceParentAvailable)(this).then((()=>this._parent.onceReady())).then((()=>{var ae,ue;null===(ae=this._parent.map)||void 0===ae||ae.addEventListener("click",(()=>this.openness="closed")),null===(ue=this._parent.psv)||void 0===ue||ue.addEventListener("click",(()=>this.openness="closed"))})))}attributeChangedCallback(ae,ue,nt){if(super.attributeChangedCallback(ae,ue,nt),"openness"===ae){if("opened"!==nt){const ae=this.shadowRoot.querySelector(".content");ae&&(ae.scrollTop=0)}const ae=this._getDrawer();ae&&(ae.style.transform=null)}}disconnectedCallback(){super.disconnectedCallback(),this._cleanupTouchListeners()}_getDrawer(){var ae;return null===(ae=this.shadowRoot)||void 0===ae?void 0:ae.querySelector(".drawer")}_onHandleClick(){"opened"===this.openness?this.openness="closed":"half-opened"===this.openness?this.openness="opened":"closed"===this.openness&&(this.openness="half-opened")}_onTouchStart(ae){this._isDragging=!0,this._startFingerY=ae.touches[0].clientY,this._deltaFingerY=0,this._drawerY=this._drawerHeight*Xt[this.openness],window.addEventListener("touchmove",this._boundTouchMove,{passive:!0}),window.addEventListener("touchend",this._boundTouchEnd),window.addEventListener("touchcancel",this._boundTouchEnd)}_onTouchMove(ae){if(!this._isDragging)return;const ue=this.shadowRoot.querySelector(".content");ue.scrollHeight>ue.offsetHeight&&ue.scrollTop>0?this._updateDrawerTransform(0):(this._deltaFingerY=ae.touches[0].clientY-this._startFingerY,this._updateDrawerTransform(this._drawerY+this._deltaFingerY))}_onTouchEnd(ae){(this._isDragging&&!(Math.abs(this._deltaFingerY)<30)||ae.target.closest(".handle"))&&(ae.preventDefault(),this._isDragging=!1,0===this._deltaFingerY&&"closed"===this.openness?this.openness="half-opened":this._updateDrawerTransform(this._drawerY+this._deltaFingerY,!0),this._cleanupTouchListeners(),this._startFingerY=null,this._deltaFingerY=null)}_cleanupTouchListeners(){window.removeEventListener("touchmove",this._boundTouchMove),window.removeEventListener("touchend",this._boundTouchEnd),window.removeEventListener("touchcancel",this._boundTouchCancel)}_updateDrawerTransform(ae){let ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const nt=this._getDrawer();nt&&(ae=Math.max(0,Math.min(ae,this._drawerHeight-30)),ue&&(this._deltaFingerY<0?"closed"===this.openness?Math.abs(this._deltaFingerY)>this._drawerHeight*(1-Xt["half-opened"])?this.openness="opened":this.openness="half-opened":this.openness="opened":this.openness="closed",this._drawerY=null,ae=Math.max(0,Math.min(Xt[this.openness]*this._drawerHeight,this._drawerHeight-30))),nt.style.transform=`translateY(${ae}px)`)}render(){const ae={drawer:!0,[this.openness]:!0,dragging:this._isDragging};return ut.qy`
12
+ !function(ae,ue){"object"===typeof exports&&"object"===typeof module?module.exports=ue():"function"===typeof define&&define.amd?define("Panoramax",[],ue):"object"===typeof exports?exports.Panoramax=ue():ae.Panoramax=ue()}(this,(()=>(()=>{var ae={9039:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Basic});var ut=nt(4542),qt=nt(5254),Yt=nt(4964),Xt=nt(7208),ys=nt(5995),Ec=nt(7343),lu=nt(2614),uu=nt.n(lu),_u=nt(8330);nt(1865),nt(3638);class Basic extends ut.WF{constructor(){let ae=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super(),this.users=["geovisio"],this["map-style"]=this.getAttribute("map-style")||(0,Xt.MapTiles)(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`\ud83d\udcf7 Panoramax ${this.getClassName()} - Version ${_u.rE} (39b4340)\n\n\ud83c\udd98 Issues can be reported at ${_u.Jk.O}`),ae||(this._isInternetFast=null,(0,Ec.isInternetFast)().then((ae=>this._isInternetFast=ae)))}connectedCallback(){super.connectedCallback(),this._t=(0,Yt.getTranslations)(this.lang),this.loader=(0,ys.createWebComp)("pnx-loader",{_parent:this,"no-label":(0,Ec.isInIframe)()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach((ae=>{let[ue,nt]=ae;this.getAttribute(ue)&&console.error(`Component attribute "${ue}" has been renamed into "${nt}". Old attribute "${ue}" is ignored.`)})),(0,Ec.isInIframe)()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||(0,ys.createWebComp)("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let ae=this.endpoint;try{this["map-style"]=JSON.parse(this["map-style"])}catch(nt){}try{this.api=new qt.A(this.endpoint,{users:this.users,fetch:this["fetch-options"],style:this["map-style"]}),this.api.onceReady().then((()=>{if(ae!=this._loadsAPI||!this.api)return;let ue=this.api.getUnavailableFeatures(),nt=this.api.getAvailableFeatures();nt=0===ue.length?"\u2705 All features available":"\u2705 Available features: "+nt.join(", "),ue=0===ue.length?"":"\ud83d\udeab Unavailable features: "+ue.join(", "),console.info(`\ud83c\udf10 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\n\u2139\ufe0f API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${nt}\n ${ue}\n`.trim())})).catch((ae=>this.loader.dismiss(ae,this._t.pnx.error_api))).finally((()=>delete this._loadsAPI))}catch(nt){var ue;delete this._loadsAPI,null!==(ue=this.loader)&&void 0!==ue&&ue.dismiss?this.loader.dismiss(nt,this._t.pnx.error_api):console.error(nt)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise((ae=>setTimeout(ae,100))).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(ae,ue,nt){if(super.attributeChangedCallback(ae,ue,nt),"endpoint"===ae&&(this._loadsAPI&&nt&&this._loadsAPI===nt||this.api&&this.api._endpoint===nt||!nt||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(ae)){let ut,qt,Yt,Xt;"picture"===ae?(ut=this.sequence,Yt=this.sequence,qt=nt,Xt=ue):(ut=nt,Yt=ue,qt=this.picture,Xt=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:ut,picId:qt,prevSeqId:Yt,prevPicId:Xt}}))}}getClassName(){return"Basic"}select(){let ae=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,ue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;arguments.length>2&&void 0!==arguments[2]&&arguments[2]&&(this.picture=null,this.sequence=null),this.picture=ue,this.sequence=ae}isWidthSmall(){return(null===this||void 0===this?void 0:this.offsetWidth)<576}isHeightSmall(){return(null===this||void 0===this?void 0:this.offsetHeight)<400}render(){return ut.qy`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}addEventListener(ae,ue,nt){let ut=ae.split(":").shift();if(ut&&this.getSubComponentsNames().includes(ut)){var qt;const Yt=ae.substring(ut.length+1);null!==(qt=this[ut])&&void 0!==qt&&qt.addEventListener?this[ut].addEventListener(Yt,ue,nt):setTimeout((()=>this.addEventListener(ae,ue,nt)),50)}else super.addEventListener(ae,ue,nt)}static GetJSONConverter(){return{fromAttribute:ae=>null===ae||""===ae?null:"object"===typeof ae||Array.isArray(ae)?ae:uu().parse(ae),toAttribute:ae=>null===ae||""===ae?"":"string"===typeof ae?ae:uu().stringify(ae)}}}Basic.properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Basic.GetJSONConverter()},users:{type:Array,reflect:!0},"map-style":{type:String},lang:{type:String},endpoint:{type:String}}},153:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>CoverageMap});var ut=nt(9039),qt=nt(5642),Yt=nt(8340),Xt=nt(927),ys=(nt(7776),nt(2118));class CoverageMap extends ut.A{constructor(){super(),this._mapContainer=document.createElement("div"),this.onceAPIReady().then((()=>{this.loader.setAttribute("value",30),this._initParams=new ys.Ay(ys.Ay.GetComponentProperties(CoverageMap,this)),this._initMap()}))}disconnectedCallback(){var ae;super.disconnectedCallback(),null===(ae=this.map)||void 0===ae||ae.destroy()}getClassName(){return"CoverageMap"}onceReady(){return this.map&&this.map.waitForEnoughMapLoaded?this.map.waitForEnoughMapLoaded():new Promise((ae=>setTimeout(ae,100))).then(this.onceReady.bind(this))}render(){return[this.loader,this._mapContainer]}getSubComponentsNames(){const ae=super.getSubComponentsNames();return ae.push("map"),ae}_initMap(){this.map=new qt.A(this,this._mapContainer,Object.assign({},this._initParams.getMapInit(),{hash:!0})),this.map.addControl(new Xt.NavigationControl({showCompass:!1})),this.loader.setAttribute("value",70),this.addEventListener("select",this._onSelect.bind(this)),this.map.on("picture-click",(ae=>this.select(ae.seqId,ae.picId))),this.map.on("sequence-click",(ae=>this.select(ae.seqId))),this.map.waitForEnoughMapLoaded().then((async()=>{await(0,ys.mK)(this.map,this._initParams.getMapPostInit()),this.map.reloadLayersStyles(),this.loader.dismiss()}))}_onSelect(ae){if(ae.detail.picId||ae.detail.seqId){const ue=ae.detail.picId?"pictures":"sequences",nt=this.map.queryRenderedFeatures({layers:[...this.map._userLayers].map((ae=>(0,Yt.getUserLayerId)(ae,ue))),filter:["==",["get","id"],ae.detail.picId||ae.detail.seqId]});nt.length>=0&&null!=nt[0]&&this.map._attachPreviewToPictures({features:nt},ue)}}}CoverageMap.properties={"map-options":{converter:ut.A.GetJSONConverter()},...ut.A.properties},customElements.define("pnx-coverage-map",CoverageMap)},1752:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Editor});nt(7365);var ut=nt(9039),qt=nt(5642),Yt=nt(9048),Xt=nt(508),ys=nt(8340),Ec=nt(1545),lu=nt(5995);const uu="sequence-headings";class Editor extends ut.A{constructor(){super(),this.raster=null,this.background="streets",this.users=[],this._psvContainer=document.createElement("div"),this._psvContainer.setAttribute("slot","bg"),this._mapContainer=document.createElement("div"),this._mapContainer.setAttribute("slot","bg"),this.grid=(0,lu.createWebComp)("pnx-cornered-grid"),this.grid.appendChild(this._psvContainer),this.grid.appendChild(this._mapContainer),this.onceAPIReady().then((()=>{this.loader.setAttribute("value",30),this.sequence||this.loader.dismiss({},"No sequence is selected"),this.addEventListener("select",this._onSelect.bind(this)),this._initPSV(),this._initMap()}))}disconnectedCallback(){var ae,ue;super.disconnectedCallback(),null===(ae=this.map)||void 0===ae||ae.destroy(),null===(ue=this.psv)||void 0===ue||ue.destroy()}getClassName(){return"Editor"}onceReady(){var ae,ue;return this.map&&this.psv&&null!==(ae=(ue=this.map).loaded)&&void 0!==ae&&ae.call(ue)?Promise.resolve():new Promise((ae=>setTimeout(ae,100))).then(this.onceReady.bind(this))}connectedCallback(){Array.isArray(this.users)&&this.users.length>0&&(console.warn("Parameters users can't be changed in Editor, only selected sequence can be visible"),this.users=[]),super.connectedCallback(),this._moveChildToGrid(),window.addEventListener("DOMContentLoaded",(()=>{this._moveChildToGrid()}),{once:!0})}attributeChangedCallback(ae,ue,nt){"users"===ae&&Array.isArray(nt)&&nt.length>0?console.warn("Parameters users can't be changed in Editor, only selected sequence can be visible"):super.attributeChangedCallback(ae,ue,nt)}render(){return[this.loader,this.grid]}getSubComponentsNames(){return super.getSubComponentsNames().concat(["map","psv","grid"])}_initPSV(){try{this.psv=new Yt.Ay(this,this._psvContainer),this.psv._myVTour.datasource.nodeResolver=this._getNode.bind(this)}catch(ae){let ue=Ec.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(ae,ue)}}_initMap(){try{this.map=new qt.A(this,this._mapContainer,{raster:this.raster,background:this.background,supplementaryStyle:this._createMapStyle(),zoom:15,picMarkerDraggable:!0}),(0,ys.linkMapAndPhoto)(this),this.loader.setAttribute("value",50),this._loadSequence(),this.map.once("load",(()=>{this.map.hasTwoBackgrounds()&&this._addMapBackgroundWidget(),this._bindPicturesEvents()}));const ae=this.map._picMarker.setRotation.bind(this.map._picMarker);this.map._picMarker.setRotation=ue=>(ue=void 0===this._lastRelHeading?ue:ue+this._lastRelHeading-this.psv.getPictureRelativeHeading(),ae(ue))}catch(ae){this.loader.dismiss(ae,this._t.pnx.error_psv)}}_createMapStyle(){return{sources:{geovisio_editor_sequences:{type:"geojson",data:{type:"FeatureCollection",features:[]}}},layers:[{id:"geovisio_editor_sequences",type:"line",source:"geovisio_editor_sequences",layout:{...ys.VECTOR_STYLES.SEQUENCES.layout},paint:{...ys.VECTOR_STYLES.SEQUENCES.paint}},{id:"geovisio_editor_pictures",type:"circle",source:"geovisio_editor_sequences",layout:{...ys.VECTOR_STYLES.PICTURES.layout},paint:{...ys.VECTOR_STYLES.PICTURES.paint}}]}}_bindPicturesEvents(){this.map.on("mousemove","geovisio_editor_pictures",(()=>{this.map.getCanvas().style.cursor="pointer"})),this.map.on("mouseleave","geovisio_editor_pictures",(()=>{this.map.getCanvas().style.cursor=""})),this.map.on("click","geovisio_editor_pictures",this.map._onPictureClick.bind(this.map))}_loadSequence(){return this.loader.setAttribute("value",60),this.api.getSequenceItems(this.sequence).then((ae=>{if(this.loader.setAttribute("value",80),this.map.once("sourcedata",(()=>{this.map.setPaintProperty("geovisio_editor_sequences","line-color",this.map._getLayerColorStyle("sequences")),this.map.setPaintProperty("geovisio_editor_pictures","circle-color",this.map._getLayerColorStyle("pictures")),this.map.setLayoutProperty("geovisio_editor_sequences","visibility","visible"),this.map.setLayoutProperty("geovisio_editor_pictures","visibility","visible"),this.map.once("styledata",(()=>this.loader.dismiss()))})),this._sequenceData=ae.features,this.map.getSource("geovisio_editor_sequences").setData({type:"FeatureCollection",features:[{id:this.sequence,type:"Feature",properties:{id:this.sequence},geometry:{type:"LineString",coordinates:ae.features.map((ae=>ae.geometry.coordinates))}},...ae.features.map((ae=>(ae.properties.id=ae.id,ae.properties.sequences=[this.sequence],ae)))]}),this.picture){const ue=ae.features.find((ae=>ae.id===this.picture));ue?(this.select(this.sequence,this.picture,!0),this.map.jumpTo({center:ue.geometry.coordinates,zoom:18})):console.log("Picture with ID",ue,"was not found")}else{const ue=[...ae.features[0].geometry.coordinates,...ae.features[0].geometry.coordinates];for(let nt=1;nt<ae.features.length;nt++){const ut=ae.features[nt].geometry.coordinates;ut[0]<ue[0]&&(ue[0]=ut[0]),ut[1]<ue[1]&&(ue[1]=ut[1]),ut[0]>ue[2]&&(ue[2]=ut[0]),ut[1]>ue[3]&&(ue[3]=ut[1])}this.map.fitBounds(ue,{animate:!1})}})).catch((ae=>this.loader.dismiss(ae,this._t.pnx.error_api)))}_getNode(ae){const ue=this._sequenceData.find((ue=>ue.properties.id===ae)),nt=ue?(0,Xt.apiFeatureToPSVNode)(ue,this._t,this._isInternetFast,void 0,(ae=>this.api.cleanResourceURL(ae))):null;return nt&&delete nt.links,nt}_addMapBackgroundWidget(){const ae=(0,lu.createWebComp)("pnx-map-background",{_parent:this,size:"sm",slot:"bottom-left"});this.grid.appendChild(ae)}_moveChildToGrid(){Array.from(this.querySelectorAll("[slot]")).forEach((ae=>{var ue;null!==(ue=ae.tagName)&&void 0!==ue&&ue.toLowerCase().startsWith("pnx-")&&(ae._parent=this,ae._t=this._t),this.grid.appendChild(ae)}))}previewSequenceHeadingChange(ae){const ue=void 0!==this.map.getLayer(uu);if(this.map._picMarkerPreview.remove(),void 0===ae)return delete this._lastRelHeading,ue&&this.map.setLayoutProperty(uu,"visibility","none"),void(this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x));this._lastRelHeading=ae,ue||this.map.addLayer({id:uu,type:"symbol",source:"geovisio_editor_sequences",layout:{"icon-image":"pnx-marker","icon-overlap":"always","icon-size":.8}});const nt=-this.psv.getPictureRelativeHeading();this.map.setLayoutProperty(uu,"visibility","visible"),this.map.setLayoutProperty(uu,"icon-rotate",["+",["get","view:azimuth"],nt,ae]);const ut=[["==",["geometry-type"],"Point"]];this.picture&&ut.push(["!=",["get","id"],this.picture]),this.map.setFilter(uu,["all",...ut]),this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x)}_onSelect(){void 0!==this._lastRelHeading&&this.previewSequenceHeadingChange(this._lastRelHeading)}}Editor.properties={raster:{converter:ut.A.GetJSONConverter()},background:{type:String},...ut.A.properties},customElements.define("pnx-editor",Editor)},3407:(ae,ue,nt)=>{"use strict";nt.d(ue,{$p:()=>_u,Ay:()=>PhotoViewer,RD:()=>wu});nt(970);var ut=nt(1545),qt=nt(4451),Yt=nt(9039),Xt=nt(9048),ys=nt(5995),Ec=nt(7343),lu=nt(2118),uu=nt(4207);const _u=20,vu=Math.PI/6,wu=["pnx-mini","pnx-widget-player","pnx-widget-zoom"];class PhotoViewer extends Yt.A{constructor(){super(),this["psv-options"]={},this["url-parameters"]=this.getAttribute("url-parameters")||!0,this["keyboard-shortcuts"]=this.getAttribute("keyboard-shortcuts")||!0,this["skip-tags-menu-opening"]="true"!==(this.getAttribute("skip-tags-menu-opening")||"false"),this.widgets=this.getAttribute("widgets")||"true",this.grid=(0,ys.createWebComp)("pnx-cornered-grid"),this.psvContainer=document.createElement("div"),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.popup=(0,ys.createWebComp)("pnx-popup",{_parent:this,onclose:this._onPopupClose.bind(this)}),this.tabindex=0,this._sequencesMetadata={}}_createInitParamsHandler(){var ae,ue;this._initParams=new lu.Ay(lu.Ay.GetComponentProperties(PhotoViewer,this),Object.assign({},null===(ae=this.urlHandler)||void 0===ae?void 0:ae.currentURLParams(),null===(ue=this.urlHandler)||void 0===ue?void 0:ue.currentURLParams(!0)),{disableAnnotations:localStorage.getItem(Ec.DISABLE_ANNOTATIONS_PARAM)})}_initWidgets(){"false"!==this._initParams.getParentPostInit().widgets&&((0,Ec.isInIframe)()||(this.grid.appendChild((0,ys.createWebComp)("pnx-widget-player",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"})),this.grid.appendChild((0,ys.createWebComp)("pnx-annotations-switch",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"}))),(0,Ec.isInIframe)()?(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:"bottom-right",light:!0,_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(this.legend)):this.isWidthSmall()?(this.legend=(0,ys.createWebComp)("pnx-picture-legend",{_parent:this}),this.bottomDrawer=(0,ys.createWebComp)("pnx-bottom-drawer",{slot:"bottom",_parent:this,class:this._initParams.getParentPostInit().willLoadPicture?void 0:"pnx-hidden"}),this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer),this.addEventListener("select",(ae=>{(0,Ec.isNullId)(ae.detail.picId)?this.bottomDrawer.classList.add("pnx-hidden"):this.bottomDrawer.classList.remove("pnx-hidden")}))):(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:this.isWidthSmall()?void 0:"top-left",_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-zoom",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.grid.appendChild(this.legend)))}connectedCallback(){super.connectedCallback(),this.presetsManager=new uu.A(this.lang),this["url-parameters"]&&"false"!==this["url-parameters"]&&(this.urlHandler=new qt.A(this),this.onceReady().then((()=>{this.urlHandler.listenToChanges(),this.urlHandler._onParentChange()}))),this.onceAPIReady().then(this._postAPIInit.bind(this)),this._moveChildToGrid(),window.addEventListener("DOMContentLoaded",(()=>{this._moveChildToGrid()}),{once:!0})}disconnectedCallback(){var ae,ue;super.disconnectedCallback(),null===(ae=this.urlHandler)||void 0===ae||ae.destroy(),null===(ue=this.psv)||void 0===ue||ue.destroy(),document.body.removeEventListener("click",this._toggleKeyboardBasedOnFocus),window.removeEventListener("keypress",this._toggleKeyboardBasedOnFocus)}getClassName(){return"PhotoViewer"}onceReady(){return this.oncePSVReady().then((()=>this._initParams.getParentPostInit().willLoadPicture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve()))}render(){return[this.loader,this.grid,this.popup]}getSubComponentsNames(){return super.getSubComponentsNames().concat(["psv","grid","popup","urlHandler"])}oncePSVReady(){let ae;return new Promise((ue=>{ae=setInterval((()=>{this.psv&&"object"===typeof this.psv&&(this.psv.container?(clearInterval(ae),ue()):this.psv.addEventListener&&this.psv.addEventListener("ready",(()=>{clearInterval(ae),ue()}),{once:!0}))}),250)}))}onceFirstPicLoaded(){return this.oncePSVReady().then((()=>this.psv.getPictureMetadata()?Promise.resolve():new Promise((ae=>{this.psv.addEventListener("picture-loaded",ae,{once:!0})}))))}async _postAPIInit(){this.loader.setAttribute("value",30),this._createInitParamsHandler();const ae=this._initParams.getParentPostInit();this._initPSV(),this._initWidgets(),(0,lu.ai)(this,ae),ae.keyboardShortcuts&&this._handleKeyboardManagement(),ae.willLoadPicture?this.psv.getPictureMetadata()?this.loader.dismiss():this.psv.addEventListener("picture-loaded",(()=>this.loader.dismiss()),{once:!0}):this.loader.dismiss()}_initPSV(){try{this.psv=new Xt.Ay(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...ut.zY.keyboardActions,8:"ROTATE_UP",2:"ROTATE_DOWN",4:"ROTATE_LEFT",6:"ROTATE_RIGHT",PageUp:()=>this.psv.goToNextPicture(),9:()=>this.psv.goToNextPicture(),PageDown:()=>this.psv.goToPrevPicture(),3:()=>this.psv.goToPrevPicture(),5:()=>this.moveCenter(),"*":()=>this.moveCenter(),Home:()=>{var ae;return null===(ae=this._toggleFocus)||void 0===ae?void 0:ae.call(this)},7:()=>{var ae;return null===(ae=this._toggleFocus)||void 0===ae?void 0:ae.call(this)},End:()=>this.mini.toggleAttribute("collapsed"),1:()=>this.mini.toggleAttribute("collapsed")," ":()=>this.psv.toggleSequencePlaying(),0:()=>this.psv.toggleSequencePlaying()},...this._initParams.getPSVInit()}),this.oncePSVReady().then((()=>{this.loader.setAttribute("value",50),(0,lu.Vy)(this.psv,this._initParams.getPSVPostInit())})),this.psv.addEventListener("sequence-playing",(()=>this.classList.add("pnx-playing"))),this.psv.addEventListener("sequence-stopped",(()=>this.classList.remove("pnx-playing"))),this.psv.addEventListener("dblclick",(()=>clearTimeout(this._gridFocus))),this.psv.addEventListener("click",(ae=>{clearTimeout(this._gridFocus),"CANVAS"===ae.data.target.tagName&&(!this.isMapWide||this.isMapWide&&!this.isMapWide())&&(this._gridFocus=setTimeout((()=>{this.grid.toggleAway()?this.classList.add("pnx-grid-toggled"):this.classList.remove("pnx-grid-toggled")}),250))})),this.psvContainer.addEventListener("mousemove",(()=>{this.grid._hidden&&(clearTimeout(this._gridFocus),this.grid.toggleAway(!0),this.classList.remove("pnx-grid-toggled"))}))}catch(ae){let ue=ut.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(ae,ue)}}_enableKeyboard(){this.psv.startKeyboardControl()}_disableKeyboard(){this.psv.stopKeyboardControl()}_toggleKeyboardBasedOnFocus(ae){const ue=(null===ae||void 0===ae?void 0:ae.target)||document.activeElement;if(this.contains(ue)){for(let ae of this.grid.childNodes)if("bg"!==ae.getAttribute("slot")&&!wu.includes(ae.tagName.toLowerCase())&&ae.contains(ue))return void this._disableKeyboard();this._enableKeyboard()}else this._disableKeyboard()}_handleKeyboardManagement(){window.addEventListener("click",(ae=>this._toggleKeyboardBasedOnFocus(ae))),window.addEventListener("keypress",this._toggleKeyboardBasedOnFocus.bind(this)),this.popup.addEventListener("open",this._disableKeyboard.bind(this)),this.popup.addEventListener("close",this._enableKeyboard.bind(this)),this.psv.addEventListener("click",this._enableKeyboard.bind(this));for(let ae of this.grid.childNodes)"bg"===ae.getAttribute("slot")||wu.includes(ae.tagName.toLowerCase())||(ae.addEventListener("focusin",this._disableKeyboard.bind(this)),ae.addEventListener("focusout",(()=>{null===this.popup.getAttribute("visible")&&this._enableKeyboard()})))}_psvShouldGoFast(){return this.psv._sequencePlaying&&this.psv.getTransitionDuration()<1e3}_moveChildToGrid(){Array.from(this.querySelectorAll("[slot]")).forEach((ae=>{var ue;null!==(ue=ae.tagName)&&void 0!==ue&&ue.toLowerCase().startsWith("pnx-")&&(ae._parent=this,ae._t=this._t),"editors"===ae.getAttribute("slot")?this.onceReady().then((()=>{var ue;return null===(ue=this.legend)||void 0===ue?void 0:ue.appendChild(ae)})):this.grid.appendChild(ae)}))}setPopup(ae){let ue=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;ae?this.popup.setAttribute("visible",""):this.popup.removeAttribute("visible"),this.popup.innerHTML="","string"===typeof ue?this.popup.innerHTML=ue:Array.isArray(ue)&&ue.forEach((ae=>this.popup.appendChild(ae)))}_onPopupClose(){this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:this.map&&this.isMapWide()?"map":"pic"}}))}_showQualityScoreDoc(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[(0,ys.createWebComp)("pnx-report-form",{_parent:this})])}_showShareOptions(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-share-menu",{_parent:this})])}_showSemanticsDoc(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-semantics-doc",{_t:this._t})])}_showSemanticsDownload(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-semantics-download",{_t:this._t})])}moveCenter(){this.psv.getPictureMetadata()&&this._psvAnimate({speed:Xt.LM,yaw:0,pitch:0,zoom:Xt.cS})}moveLeft(){this._moveToDirection("left")}moveRight(){this._moveToDirection("right")}moveUp(){this._moveToDirection("up")}moveDown(){this._moveToDirection("down")}_moveToDirection(ae){let ue=this.psv.getPosition();switch(ae){case"up":ue.pitch+=vu;break;case"left":ue.yaw-=vu;break;case"down":ue.pitch-=vu;break;case"right":ue.yaw+=vu}this._psvAnimate({speed:Xt.LM,...ue})}_psvAnimate(ae){this._lastPsvAnim&&this._lastPsvAnim.cancel(),this._lastPsvAnim=this.psv.animate(ae)}addEventListener(ae,ue,nt){super.addEventListener(ae,ue,nt)}}PhotoViewer.properties={"psv-options":{converter:Yt.A.GetJSONConverter()},widgets:{type:String},"url-parameters":{type:String},"keyboard-shortcuts":{type:String},tabindex:{type:Number},"skip-tags-menu-opening":{type:String},...Yt.A.properties},customElements.define("pnx-photo-viewer",PhotoViewer)},8743:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Viewer});nt(9616);var ut=nt(8340),qt=nt(3407),Yt=nt(2771),Xt=nt(7343),ys=nt(5995),Ec=nt(9683),lu=nt(2e3),uu=nt(9438),_u=nt(2118);const vu=100;class Viewer extends qt.Ay{constructor(){super(),this["map-options"]=!0,this.geocoder=this.getAttribute("geocoder")||"nominatim",this.mini=(0,ys.createWebComp)("pnx-mini",{slot:"bottom-left",_parent:this,onexpand:this._onMiniExpand.bind(this),collapsed:!!(0,Xt.isNullId)(this.picture)||void 0}),this.mini.addEventListener("expand",this._toggleFocus.bind(this)),this.grid.appendChild(this.mini),this.mapContainer=document.createElement("div"),this.tabindex=0}_createInitParamsHandler(){var ae,ue;this._initParams=new _u.Ay(_u.Ay.GetComponentProperties(Viewer,this),Object.assign({},null===(ae=this.urlHandler)||void 0===ae?void 0:ae.currentURLParams(),null===(ue=this.urlHandler)||void 0===ue?void 0:ue.currentURLParams(!0)),{map:(0,ut.getMapParamsFromLocalStorage)(),disableAnnotations:localStorage.getItem(Xt.DISABLE_ANNOTATIONS_PARAM)})}_initWidgets(){var ae,ue;"false"!==this._initParams.getParentPostInit().widgets&&(this.grid.appendChild((0,ys.createWebComp)("pnx-widget-zoom",{slot:this.isWidthSmall()?"top-left":"bottom-right",class:this.isWidthSmall()?"pnx-only-map pnx-print-hidden":"pnx-print-hidden",_parent:this})),(0,Xt.isInIframe)()?(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:"bottom-right",light:!0,_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(this.legend)):this.isWidthSmall()?(this.legend=(0,ys.createWebComp)("pnx-picture-legend",{_parent:this}),this.bottomDrawer=(0,ys.createWebComp)("pnx-bottom-drawer",{slot:"bottom",_parent:this,class:this._initParams.getParentPostInit().willLoadPicture?void 0:"pnx-hidden"}),this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer),this.addEventListener("select",(ae=>{(0,Xt.isNullId)(ae.detail.picId)?this.bottomDrawer.classList.add("pnx-hidden"):this.bottomDrawer.classList.remove("pnx-hidden")}))):(this.legend=(0,ys.createWebComp)("pnx-widget-legend",{slot:this.isWidthSmall()?"top":"top-left",_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this._miniPicLegend=(0,ys.createWebComp)("pnx-mini-picture-legend",{_parent:this}),this.grid.appendChild(this.legend)),(0,Xt.isInIframe)()||(this.grid.appendChild((0,ys.createWebComp)("pnx-widget-player",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"})),this.grid.appendChild((0,ys.createWebComp)("pnx-annotations-switch",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-geosearch",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,class:"pnx-only-map pnx-print-hidden",geocoder:this._initParams.getParentPostInit().geocoder})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-mapfilters",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,"user-search":null!==this.api._endpoints.user_search&&null!==this.api._endpoints.user_tiles,"quality-score":(null===(ae=this.map)||void 0===ae||null===(ue=ae._hasQualityScore)||void 0===ue?void 0:ue.call(ae))||!1,class:"pnx-only-map pnx-print-hidden"})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-semantics-filters",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,class:"pnx-only-map pnx-print-hidden"})),this.grid.appendChild((0,ys.createWebComp)("pnx-widget-maplayers",{slot:"top-right",_parent:this,class:"pnx-only-map pnx-print-hidden"}))))}disconnectedCallback(){var ae;super.disconnectedCallback(),null===(ae=this.map)||void 0===ae||ae.destroy()}getClassName(){return"Viewer"}getSubComponentsNames(){return super.getSubComponentsNames().concat(["mini","map"])}onceReady(){return Promise.all([this.oncePSVReady(),this.onceMapReady()]).then((()=>this._initParams.getParentPostInit().willLoadPicture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve()))}attributeChangedCallback(ae,ue,nt){var ut,qt;if(super.attributeChangedCallback(ae,ue,nt),"picture"===ae)if(null===(ut=this.legend)||void 0===ut||null===(qt=ut.setAttribute)||void 0===qt||qt.call(ut,"picture",nt),(0,Xt.isNullId)(ue)&&!(0,Xt.isNullId)(nt)&&this.mini.removeAttribute("collapsed"),(0,Xt.isNullId)(nt))this.map&&this.isMapWide()?this.mini.classList.add("pnx-hidden"):this.map&&!this.isMapWide()&&this._setFocus("map");else if((0,Xt.isNullId)(ue)&&this.sequence==this._initParams.getParentPostInit().sequence&&!this._initParams.getParentPostInit().picture){var Yt,ys;this.mini.classList.remove("pnx-hidden"),this.mini.removeAttribute("collapsed"),"closed"===(null===(Yt=this.bottomDrawer)||void 0===Yt||null===(ys=Yt.getAttribute)||void 0===ys?void 0:ys.call(Yt,"openness"))&&this.bottomDrawer.setAttribute("openness","half-opened")}else{var Ec,lu;if(this.mini.classList.remove("pnx-hidden"),(0,Xt.isNullId)(ue))this._setFocus("pic"),"closed"===(null===(Ec=this.bottomDrawer)||void 0===Ec||null===(lu=Ec.getAttribute)||void 0===lu?void 0:lu.call(Ec,"openness"))&&this.bottomDrawer.setAttribute("openness","half-opened")}"focus"===ae&&this._setFocus(nt)}onceMapReady(){if(!this["map-options"])return Promise.resolve();let ae;return new Promise((ue=>{ae=setInterval((()=>{var nt,ut,qt;"object"===typeof this.map&&(null!==(nt=this.map)&&void 0!==nt&&null!==(ut=nt.loaded)&&void 0!==ut&&ut.call(nt)?(clearInterval(ae),ue()):null!==(qt=this.map)&&void 0!==qt&&qt.once&&this.map.once("render",(()=>{clearInterval(ae),ue()})))}),250)}))}async _initMap(){await new Promise((ae=>{this.map=new Yt.A(this,this.mapContainer,this._initParams.getMapInit()),(0,ut.saveMapParamsToLocalStorage)(this.map),this.map.once("users-changed",(()=>{this.loader.setAttribute("value",75),ae()}))})),await(0,_u.mK)(this.map,this._initParams.getMapPostInit()),(0,ut.initMapKeyboardHandler)(this),(0,ut.linkMapAndPhoto)(this)}async _postAPIInit(){this.loader.setAttribute("value",30),this._createInitParamsHandler();const ae=this._initParams.getParentPostInit();this._initPSV(),await this._initMap(),this._initWidgets(),this._moveChildToGrid(),(0,_u.iz)(this,ae),ae.keyboardShortcuts&&this._handleKeyboardManagement(),ae.willLoadPicture?this.psv.addEventListener("picture-loaded",(ue=>{(0,_u.iz)(this,ae),this.loader.dismiss()}),{once:!0}):this.loader.dismiss()}_enableKeyboard(){this.map&&this.isMapWide()?this._enableKeyboardMap():this._enableKeyboardPSV()}_enableKeyboardMap(){this.psv.stopKeyboardControl(),this.map.keyboard.enable()}_enableKeyboardPSV(){this.psv.startKeyboardControl(),this.map.keyboard.disable()}_disableKeyboard(){this.psv.stopKeyboardControl(),this.map.keyboard.disable()}_toggleKeyboardBasedOnFocus(ae){const ue=(null===ae||void 0===ae?void 0:ae.target)||document.activeElement;if(this.contains(ue)){for(let ae of this.grid.childNodes)if("bg"!==ae.getAttribute("slot")&&!qt.RD.includes(ae.tagName.toLowerCase())&&ae.contains(ue))return void this._disableKeyboard();this._enableKeyboard()}else this._disableKeyboard()}_handleKeyboardManagement(){window.addEventListener("click",(ae=>this._toggleKeyboardBasedOnFocus(ae))),window.addEventListener("keypress",this._toggleKeyboardBasedOnFocus.bind(this)),this.addEventListener("focus-changed",(ae=>{this.popup.getAttribute("visible")?this._disableKeyboard():"map"===ae.detail.focus?this._enableKeyboardMap():this._enableKeyboardPSV()})),this.popup.addEventListener("open",this._disableKeyboard.bind(this)),this.popup.addEventListener("close",this._enableKeyboard.bind(this)),this.psv.addEventListener("click",this._enableKeyboardPSV.bind(this));for(let ae of this.grid.childNodes)"bg"===ae.getAttribute("slot")||qt.RD.includes(ae.tagName.toLowerCase())||(ae.addEventListener("focusin",this._disableKeyboard.bind(this)),ae.addEventListener("focusout",(()=>{null===this.popup.getAttribute("visible")&&this._enableKeyboard()})))}moveCenter(){const ae=this.psv.getPictureMetadata();ae&&(this.map&&this.isMapWide()?this.map.flyTo({center:ae.gps,zoom:20}):super.moveCenter())}_moveToDirection(ae){if(this.map&&this.isMapWide()){let ue;switch(ae){case"up":ue=[0,-100];break;case"left":ue=[-100,0];break;case"down":ue=[0,vu];break;case"right":ue=[vu,0]}this.map.panBy(ue)}else super._moveToDirection(ae)}isMapWide(){return this.mapContainer.parentNode==this.grid}_setFocus(ae){var ue,nt,ut,qt;let Yt=arguments.length>1&&void 0!==arguments[1]&&arguments[1],uu=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("map"===ae&&!this.map)throw new Error("Map is not enabled");if(!["map","pic"].includes(ae))throw new Error("Invalid focus value (should be pic or map)");if(this.focus=ae,(uu||("map"!==ae||!this.map||!this.isMapWide())&&("pic"!==ae||this.map&&this.isMapWide()))&&("map"===ae?(this.psvContainer.parentNode==this.grid&&(this.grid.removeChild(this.psvContainer),this.psvContainer.removeAttribute("slot")),this.mapContainer.parentNode==this.mini&&this.mini.removeChild(this.mapContainer),this.mapContainer.setAttribute("slot","bg"),this.grid.appendChild(this.mapContainer),this.mini.appendChild(this.psvContainer),this.mini.icon=(0,ys.fa)(Ec.pt),this._miniPicLegend&&this.mini.appendChild(this._miniPicLegend),(0,Xt.isNullId)(this.picture)?this.mini.classList.add("pnx-hidden"):this.mini.classList.remove("pnx-hidden"),this.map.getCanvas().focus()):(this.mapContainer.parentNode==this.grid&&(this.grid.removeChild(this.mapContainer),this.mapContainer.removeAttribute("slot")),this.psvContainer.parentNode==this.mini&&(this.mini.removeChild(this.psvContainer),this._miniPicLegend&&this.mini.removeChild(this._miniPicLegend)),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.mini.classList.remove("pnx-hidden"),this.mini.appendChild(this.mapContainer),this.mini.icon=(0,ys.fa)(lu.e5),this.psvContainer.focus()),null===this||void 0===this||null===(ue=this.map)||void 0===ue||null===(nt=ue.resize)||void 0===nt||nt.call(ue),this.psv.autoSize(),this.psv.forceRefresh(),null===(ut=this.legend)||void 0===ut||null===(qt=ut.setAttribute)||void 0===qt||qt.call(ut,"focus",this.focus),!Yt)){const ue=new CustomEvent("focus-changed",{detail:{focus:ae}});this.dispatchEvent(ue)}}_toggleFocus(){this._setFocus(this.isMapWide()?"pic":"map")}_onMiniExpand(){this.map.resize(),this.psv.autoSize()}_onMapFiltersChange(){var ae;const ue=(0,uu.qi)("#pnx-map-filters-menu"),nt=(0,uu.qi)("#pnx-map-theme"),qt=(0,ut.mapFiltersFormValues)(ue,nt,null===(ae=this.map)||void 0===ae?void 0:ae._hasQualityScore());this.map.setFilters(qt)}_showLocationPrecisionDoc(){this.setPopup(!0,[(0,ys.createWebComp)("pnx-location-precision-doc",{_t:this._t})])}}Viewer.properties={"map-options":{converter:qt.Ay.GetJSONConverter()},focus:{type:String,reflect:!0},geocoder:{type:String},tabindex:{type:Number},...qt.Ay.properties},customElements.define("pnx-viewer",Viewer)},3921:(ae,ue,nt)=>{"use strict";nt.r(ue),nt.d(ue,{Basic:()=>ut.A,CoverageMap:()=>qt.A,Editor:()=>Yt.A,PhotoViewer:()=>ys.Ay,Viewer:()=>Xt.A});var ut=nt(9039),qt=nt(153),Yt=nt(1752),Xt=nt(8743),ys=nt(3407)},9341:(ae,ue,nt)=>{"use strict";nt.r(ue),nt.d(ue,{core:()=>ut,layout:()=>qt,menus:()=>Yt,ui:()=>Xt});var ut=nt(3921),qt=nt(456),Yt=nt(8794),Xt=nt(7091)},6784:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>BottomDrawer});var ut=nt(4542),qt=nt(1198),Yt=nt(5995);const Xt={opened:0,"half-opened":.7,closed:1};class BottomDrawer extends ut.WF{constructor(){super(),this._isDragging=!1,this.openness="half-opened"}firstUpdated(){super.firstUpdated(),this._boundTouchMove=this._onTouchMove.bind(this),this._boundTouchEnd=this._onTouchEnd.bind(this),this._drawerHeight=window.innerHeight-30;const ae=this._getDrawer();ae&&(ae.style.height=`${this._drawerHeight}px`,ae.style.maxHeight=`${this._drawerHeight}px`,(0,Yt.onceParentAvailable)(this).then((()=>this._parent.onceReady())).then((()=>{var ae,ue;null===(ae=this._parent.map)||void 0===ae||ae.addEventListener("click",(()=>this.openness="closed")),null===(ue=this._parent.psv)||void 0===ue||ue.addEventListener("click",(()=>this.openness="closed"))})))}attributeChangedCallback(ae,ue,nt){if(super.attributeChangedCallback(ae,ue,nt),"openness"===ae){if("opened"!==nt){const ae=this.shadowRoot.querySelector(".content");ae&&(ae.scrollTop=0)}const ae=this._getDrawer();ae&&(ae.style.transform=null)}}disconnectedCallback(){super.disconnectedCallback(),this._cleanupTouchListeners()}_getDrawer(){var ae;return null===(ae=this.shadowRoot)||void 0===ae?void 0:ae.querySelector(".drawer")}_onHandleClick(){"opened"===this.openness?this.openness="closed":"half-opened"===this.openness?this.openness="opened":"closed"===this.openness&&(this.openness="half-opened")}_onTouchStart(ae){this._isDragging=!0,this._startFingerY=ae.touches[0].clientY,this._deltaFingerY=0,this._drawerY=this._drawerHeight*Xt[this.openness],window.addEventListener("touchmove",this._boundTouchMove,{passive:!0}),window.addEventListener("touchend",this._boundTouchEnd),window.addEventListener("touchcancel",this._boundTouchEnd)}_onTouchMove(ae){if(!this._isDragging)return;const ue=this.shadowRoot.querySelector(".content");ue.scrollHeight>ue.offsetHeight&&ue.scrollTop>0?this._updateDrawerTransform(0):(this._deltaFingerY=ae.touches[0].clientY-this._startFingerY,this._updateDrawerTransform(this._drawerY+this._deltaFingerY))}_onTouchEnd(ae){(this._isDragging&&!(Math.abs(this._deltaFingerY)<30)||ae.target.closest(".handle"))&&(ae.preventDefault(),this._isDragging=!1,0===this._deltaFingerY&&"closed"===this.openness?this.openness="half-opened":this._updateDrawerTransform(this._drawerY+this._deltaFingerY,!0),this._cleanupTouchListeners(),this._startFingerY=null,this._deltaFingerY=null)}_cleanupTouchListeners(){window.removeEventListener("touchmove",this._boundTouchMove),window.removeEventListener("touchend",this._boundTouchEnd),window.removeEventListener("touchcancel",this._boundTouchCancel)}_updateDrawerTransform(ae){let ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const nt=this._getDrawer();nt&&(ae=Math.max(0,Math.min(ae,this._drawerHeight-30)),ue&&(this._deltaFingerY<0?"closed"===this.openness?Math.abs(this._deltaFingerY)>this._drawerHeight*(1-Xt["half-opened"])?this.openness="opened":this.openness="half-opened":this.openness="opened":this.openness="closed",this._drawerY=null,ae=Math.max(0,Math.min(Xt[this.openness]*this._drawerHeight,this._drawerHeight-30))),nt.style.transform=`translateY(${ae}px)`)}render(){const ae={drawer:!0,[this.openness]:!0,dragging:this._isDragging};return ut.qy`
13
13
  <div
14
14
  class=${(0,qt.H)(ae)}
15
15
  @touchstart="${this._onTouchStart}"
@@ -72,7 +72,7 @@
72
72
  overflow: auto;
73
73
  flex: 1;
74
74
  }
75
- `,BottomDrawer.properties={_fingerY:{state:!0},_deltaFingerY:{state:!0},_drawerY:{state:!0},_isDragging:{state:!0},_drawerHeight:{state:!0},openness:{type:String,reflect:!0}},customElements.define("pnx-bottom-drawer",BottomDrawer)},7422:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>CorneredGrid});var ut=nt(4542),qt=nt(1198);class CorneredGrid extends ut.WF{constructor(){super(),this._hidden=!1}toggleAway(){return this._hidden=!this._hidden,this._hidden}render(){return this.renderRoot.host.className=this._hidden?"toggled":"",ut.qy`
75
+ `,BottomDrawer.properties={_fingerY:{state:!0},_deltaFingerY:{state:!0},_drawerY:{state:!0},_isDragging:{state:!0},_drawerHeight:{state:!0},openness:{type:String,reflect:!0}},customElements.define("pnx-bottom-drawer",BottomDrawer)},7422:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>CorneredGrid});var ut=nt(4542),qt=nt(1198);class CorneredGrid extends ut.WF{constructor(){super(),this._hidden=!1}toggleAway(ae){return this._hidden=null===ae||void 0===ae?!this._hidden:!ae,this._hidden}render(){return this.renderRoot.host.className=this._hidden?"toggled":"",ut.qy`
76
76
  <div class="bg">
77
77
  <slot name="bg"></slot>
78
78
  </div>
@@ -125,8 +125,12 @@
125
125
 
126
126
  .row.bottom { align-items: flex-end; }
127
127
 
128
- .row.top.toggled { margin: -50% 0 100% 0; }
129
- .row.bottom.toggled { margin: 100% 0 -50% 0; }
128
+ .row.top.toggled { margin: -100% 0 200% 0; }
129
+ .row.bottom.toggled { margin: 200% 0 -100% 0; }
130
+ @media screen and (min-width: 576px) {
131
+ .row.top.toggled { margin: -50% 0 100% 0; }
132
+ .row.bottom.toggled { margin: 100% 0 -50% 0; }
133
+ }
130
134
 
131
135
  .corner {
132
136
  position: relative;
@@ -2198,7 +2202,7 @@
2198
2202
  }
2199
2203
  /* Logo */
2200
2204
  img.logo-dead { width: 100px; }
2201
- `,Loader.properties={_mode:{state:!0},_label:{state:!0},_isLabelFun:{state:!0},visible:{type:Boolean,reflect:!0},"no-label":{type:Boolean},value:{type:Number}},customElements.define("pnx-loader",Loader)},5642:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Map});nt(3041);var ut=nt(8340),qt=nt(7343),Yt=nt(6883),Xt=nt(270),ys=nt(4005),Ec=nt(1435),lu=(nt(6795),nt(927)),uu=nt.n(lu),_u=nt(2968),vu=nt.n(_u),wu=nt(748);uu().workerClass=vu(),uu().addProtocol("pmtiles",(new wu.Zs).tile),uu().addProtocol("panora",(new Ec.A).tile()),uu().addProtocol("panoras",(new Ec.A).tile());class Map extends uu().Map{constructor(ae,ue){let nt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var qt;(super({container:ue,style:(0,ut.combineStyles)(ae,nt),center:[0,0],zoom:0,maxZoom:24,attributionControl:!1,dragRotate:!1,pitchWithRotate:!1,touchZoomRotate:!0,touchPitch:!1,doubleClickZoom:!1,canvasContextAttributes:{preserveDrawingBuffer:!ae.isWidthSmall()},transformRequest:ae.api._getMapRequestTransform(),locale:ae._t.maplibre,hash:!1,...nt}),uu().addProtocol("sem",new ys.A(ae.api).tile()),this._loadMarkerImages(),this._parent=ae,this._options=nt,this.getContainer().classList.add("pnx-map"),void 0===nt.touchZoomRotate)&&(null===this||void 0===this||null===(qt=this.touchZoomRotate)||void 0===qt||qt.disableRotation());this._options.raster&&(this._options.background=this._options.background||"streets"),this._attribution=new(uu().AttributionControl)({compact:!1,...nt.attributionControl}),this.addControl(this._attribution),this._initMapPosition(),this._picMarker=this._getPictureMarker(),this._picMarkerPreview=this._getPictureMarker(!1),this._picThumbUrl={},this._seqPictures={},this._userLayers=new Set,this._parent.addEventListener("select",this.reloadLayersStyles.bind(this)),setTimeout((()=>{var ae;!this.loaded()&&null!==(ae=this._parent)&&void 0!==ae&&ae.loader.isVisible()&&this._parent.loader.dismiss({},this._parent._t.map.slow_loading,(async()=>{await this._postLoad(),this._parent.loader.dismiss()}))}),15e3),this.waitForEnoughMapLoaded().then((async()=>await this._postLoad()))}async _postLoad(){this.resize(),await this.setVisibleUsers(this._parent.users),this.reloadLayersStyles(),this.fire("ready")}destroy(){this.remove(),delete this._parent,delete this._options,delete this._attribution,delete this._picMarker,delete this._picMarkerPreview,delete this._picThumbUrl,delete this._seqPictures,delete this._userLayers}waitForEnoughMapLoaded(){return new Promise((ae=>{let ue=0,nt=0,ut=0,qt=0;const onSourceDataLoading=ae=>{"source"===ae.dataType&&ae.tile&&(ae.sourceId.startsWith("geovisio")?nt++:ue++)},onSourceData=ae=>{"source"===ae.dataType&&ae.tile&&(ae.sourceId.startsWith("geovisio")?(qt++,ae.isSourceLoaded&&(qt=nt)):(ut++,ae.isSourceLoaded&&(ut=ue))),checkEnoughLoaded()},checkEnoughLoaded=()=>{ut/ue>=.75&&(0===nt||qt/nt>=.75)&&(this.off("sourcedata",onSourceData),this.off("sourcedataloading",onSourceDataLoading),ae())};this.on("sourcedataloading",onSourceDataLoading),this.on("sourcedata",onSourceData)}))}_initMapPosition(){!(0,ut.isNullCoordinates)(this._options.center)||this._options.zoom&&0!==this._options.zoom||this._options.hash||this._parent.onceAPIReady().then((()=>{var ae,ue;let nt=null===(ae=this._parent)||void 0===ae||null===(ue=ae.api)||void 0===ue?void 0:ue.getDataBbox();if(nt)try{nt=new(uu().LngLatBounds)(nt),this.loaded()?this.fitBounds(nt,{animate:!1}):this.waitForEnoughMapLoaded().then((()=>this.fitBounds(nt,{animate:!1})))}catch(ut){console.warn("Received invalid bbox: "+nt)}}))}_loadMarkerImages(){[{id:"pnx-marker",img:Yt}].forEach((ae=>{const ue=new Image(64,64);ue.onload=()=>this.addImage(ae.id,ue),ue.src=ae.img}))}_hasQualityScore(){var ae,ue,nt,ut;const qt=(null===(ae=this.getStyle())||void 0===ae||null===(ue=ae.metadata)||void 0===ue?void 0:ue["panoramax:fields"])||{};return(null===qt||void 0===qt||null===(nt=qt.pictures)||void 0===nt?void 0:nt.includes("gps_accuracy"))&&(null===qt||void 0===qt||null===(ut=qt.pictures)||void 0===ut?void 0:ut.includes("h_pixel_density"))}_hasGridStats(){var ae,ue,nt,ut,qt,Yt;const Xt=(null===(ae=this.getStyle())||void 0===ae||null===(ue=ae.metadata)||void 0===ue?void 0:ue["panoramax:fields"])||{};return(null===Xt||void 0===Xt||null===(nt=Xt.grid)||void 0===nt?void 0:nt.includes("nb_360_pictures"))&&(null===Xt||void 0===Xt||null===(ut=Xt.grid)||void 0===ut?void 0:ut.includes("nb_flat_pictures"))&&(null===Xt||void 0===Xt||null===(qt=Xt.grid)||void 0===qt?void 0:qt.includes("coef_360_pictures"))&&(null===Xt||void 0===Xt||null===(Yt=Xt.grid)||void 0===Yt?void 0:Yt.includes("coef_flat_pictures"))}_hasLoggedGridStats(){var ae,ue,nt,ut,qt;const Yt=(null===(ae=this.getStyle())||void 0===ae||null===(ue=ae.metadata)||void 0===ue?void 0:ue["panoramax:fields"])||{};return(null===Yt||void 0===Yt||null===(nt=Yt.grid)||void 0===nt?void 0:nt.includes("logged_coef_360_pictures"))&&(null===Yt||void 0===Yt||null===(ut=Yt.grid)||void 0===ut?void 0:ut.includes("logged_coef_flat_pictures"))&&(null===Yt||void 0===Yt||null===(qt=Yt.grid)||void 0===qt?void 0:qt.includes("logged_coef"))}reloadVectorTiles(){[...this._userLayers].forEach((ae=>{const ue=this.getSource((0,ut.getUserSourceId)(ae));ue.setTiles(ue.tiles)}))}hasTwoBackgrounds(){return void 0!==this.getLayer(ut.RASTER_LAYER_ID)}getBackground(){if(!this.getLayer(ut.RASTER_LAYER_ID))return"streets";return"visible"==this.getLayoutProperty(ut.RASTER_LAYER_ID,"visibility")?"aerial":"streets"}setBackground(ae){if(!this.getLayer(ut.RASTER_LAYER_ID)&&"aerial"===ae)throw new Error("No aerial imagery available");this.getLayer(ut.RASTER_LAYER_ID)&&(this.setLayoutProperty(ut.RASTER_LAYER_ID,"visibility","aerial"===ae?"visible":"none"),this.fire("background-changed",{background:ae||"streets"}))}getVisibleUsers(){return[...this._userLayers].filter((ae=>this.getLayer((0,ut.getUserLayerId)(ae,"pictures"))&&"visible"===this.getLayoutProperty((0,ut.getUserLayerId)(ae,"pictures"),"visibility")))}onceLayerReady(ae){return this.getLayer(ae)?Promise.resolve():new Promise((ae=>{setTimeout(ae,250)})).then((()=>this.onceLayerReady(ae)))}async setVisibleUsers(){let ae=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];"string"===typeof ae?ae=[ae]:null===ae&&(ae=[]),await Promise.all(ae.filter((ae=>""!=ae&&!this._userLayers.has(ae))).map((ae=>(this._createPicturesTilesLayer(ae),this.onceLayerReady((0,ut.getUserLayerId)(ae,"pictures"))))));const ue=["pictures","sequences","sequences_plus","grid"];[...this._userLayers].forEach((nt=>{ue.forEach((ue=>{const qt=(0,ut.getUserLayerId)(nt,ue);this.getLayer(qt)&&this.setLayoutProperty(qt,"visibility",ae.includes(nt)?"visible":"none")}))})),this.reloadLayersStyles(),this.fire("users-changed",{usersIds:ae})}filterUserLayersContent(ae,ue){[...this._userLayers].forEach((nt=>{this.getLayer((0,ut.getUserLayerId)(nt,ae))?(this.setFilter((0,ut.getUserLayerId)(nt,ae),ue),"sequences"===ae&&this.getLayer((0,ut.getUserLayerId)(nt,"sequences_plus"))&&this.setFilter((0,ut.getUserLayerId)(nt,"sequences_plus"),ue)):console.warn("Layer",(0,ut.getUserLayerId)(nt,ae),"not ready")}))}displayPictureMarker(ae,ue,nt){let qt=arguments.length>3&&void 0!==arguments[3]&&arguments[3],Yt=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;this._picMarkerPreview.remove(),void 0!==ae&&void 0!==ue?(this._picMarker.setLngLat([ae,ue]).setRotation(nt).addTo(this),this._picMarker.picId=Yt):this._picMarker.remove(),this.reloadLayersStyles(),qt||void 0===ae||void 0===ue||this.jumpTo({center:[ae,ue],zoom:this.getZoom()<ut.TILES_PICTURES_ZOOM+2?ut.TILES_PICTURES_ZOOM+2:this.getZoom()})}reloadLayersStyles(){const updateStyle=(ae,ue)=>{[...this._userLayers].forEach((nt=>{const qt=(0,ut.getUserLayerId)(nt,ae);if(this.getLayer(qt)){for(let ae in ue.layout)this.setLayoutProperty(qt,ae,ue.layout[ae]);for(let ae in ue.paint)this.setPaintProperty(qt,ae,ue.paint[ae])}else console.warn("Layer",qt,"not ready")}))};["pictures","sequences"].forEach((ae=>{updateStyle(ae,this._getLayerStyleProperties(ae))}))}async _createPicturesTilesLayer(ae){this._userLayers.add(ae);const ue=this.getStyle().layers.find(ut.isLabelLayer);if("geovisio"!==ae&&!this.getSource(`geovisio_${ae}`)){const nt=await this._parent.api.getUserMapStyle(ae);Object.entries(nt.sources).forEach((ae=>{let[ue,nt]=ae;return this.addSource(ue,nt)})),nt.layers=nt.layers||[];nt.layers.concat((0,ut.getMissingLayerStyles)(nt.sources,nt.layers)).filter((ae=>Object.keys(ae).length>0)).forEach((ae=>this.addLayer(ae,null===ue||void 0===ue?void 0:ue.id)))}this._picPreviewTimer=null,this._picPopup=new(uu().Popup)({closeButton:!1,closeOnClick:!this._parent.isWidthSmall(),offset:15});const dropPreview=ae=>{clearTimeout(this._picDropPreviewTimer),ae?this._picDropPreviewTimer=setTimeout(dropPreview,250):(clearTimeout(this._picPreviewTimer),delete this._picPopup._picId,delete this._picPopup._loading,this._picPopup.remove(),this._picMarkerPreview.remove())},nt=(0,ut.getUserLayerId)(ae,"pictures");this.on("mousemove",nt,(ae=>{this.getCanvas().style.cursor="pointer";const ue=Object.assign({},ae);this._attachPreviewToPictures(ue,nt)})),this.on("mouseleave",nt,(()=>{this.getCanvas().style.cursor=""})),this.on("click",nt,this._onPictureClick.bind(this));const qt=(0,ut.getUserLayerId)(ae,"sequences_plus");this.on("mousemove",qt,(ae=>{if(this._onSequenceHover(ae),this.getCanvas().style.cursor="pointer",ae.features[0].properties.id){const ue=Object.assign({},ae);this._attachPreviewToPictures(ue,qt)}})),this.on("mouseleave",qt,(()=>{this.getCanvas().style.cursor="",dropPreview(!0)})),this.on("click",qt,(ae=>{ae.preventDefault(),this._onSequenceClick(ae)})),"geovisio"===ae&&this.getLayer("geovisio_grid")&&(this.on("mousemove","geovisio_grid",(ae=>{if(this.getZoom()<=ut.TILES_PICTURES_ZOOM+1){this.getCanvas().style.cursor="pointer";const ue=Object.assign({},ae);this._attachPreviewToPictures(ue,"geovisio_grid")}})),this.on("mouseleave","geovisio_grid",(()=>{dropPreview(),this.getCanvas().style.cursor=""})),this.on("click","geovisio_grid",(ae=>{ae.preventDefault(),this.flyTo({center:ae.lngLat,zoom:ut.TILES_PICTURES_ZOOM-6})}))),this.on("dblclick",(()=>clearTimeout(this._gridFocus))),this.on("click",(ae=>{var ue,nt;(clearTimeout(this._gridFocus),!1===ae.defaultPrevented)&&(dropPreview(),null!==(ue=(nt=this._parent).isMapWide)&&void 0!==ue&&ue.call(nt)&&(this._gridFocus=setTimeout((()=>{var ae,ue;return null===(ae=this._parent)||void 0===ae||null===(ue=ae.grid)||void 0===ue?void 0:ue.toggleAway()}),250)))}))}_getLayerStyleProperties(ae){const ue={pictures:"circle",sequences:"line"},nt={paint:Object.assign({[`${ue[ae]}-color`]:this._getLayerColorStyle(ae)},ut.VECTOR_STYLES[ae.toUpperCase()].paint),layout:Object.assign({[`${ue[ae]}-sort-key`]:this._getLayerSortStyle(ae)},ut.VECTOR_STYLES[ae.toUpperCase()].layout)};return"pictures"===ae&&(nt.paint["circle-stroke-color"]=this._getLayerColorStyle(ae)),nt}_getLayerColorStyle(ae){const ue=["case",["==",["get","hidden"],!0],qt.COLORS.HIDDEN,["==",["get","geovisio:status"],"hidden"],qt.COLORS.HIDDEN],nt=this._parent.sequence;return"sequences"==ae&&nt?ue.push(["==",["get","id"],nt],qt.COLORS.SELECTED):ae.startsWith("pictures")&&nt&&ue.push(["in",nt,["get","sequences"]],qt.COLORS.SELECTED),ue.push(qt.COLORS.BASE),ue}_getLayerSortStyle(ae){const ue=["case",["==",["get","hidden"],!0],90],nt=this._parent.sequence;return"sequences"==ae&&nt?ue.push(["==",["get","id"],nt],100):ae.startsWith("pictures")&&nt&&ue.push(["in",nt,["get","sequences"]],100),ue.push(10),ue}_attachPreviewToPictures(ae,ue){var nt,qt;let Yt=ae.features.pop();if(!Yt||Yt.properties.id==this._picPopup._picId)return;clearTimeout(this._picPreviewTimer),clearTimeout(this._picDropPreviewTimer),this._picPopup._loading=Yt.properties.id,this._picPopup._picId=Yt.properties.id,delete this._picPopup._seqId;let Xt=null;if(ue.includes("_pictures"))Xt=Yt;else if(ue.includes("_sequences")){const ue=this.getLayersOrder().find((ae=>ae.endsWith("_pictures")));if(ue){const nt=this.queryRenderedFeatures(this.getBounds(),{layers:[ue]});let ut=null;for(let ue=0;ue<nt.length;ue++){let qt=ae.lngLat.distanceTo(new(uu().LngLat)(...nt[ue].geometry.coordinates));(!ut||qt<ut)&&(Xt=nt[ue],ut=qt)}}}var ys,Ec,lu,_u;Xt?(this._picPopup._seqId=Xt.properties.first_sequence,null===(ys=(Ec=this._picMarkerPreview).setLngLat)||void 0===ys||ys.call(Ec,Xt.geometry.coordinates).setRotation(Xt.properties.heading||0).addTo(this)):null===(lu=this._picMarkerPreview)||void 0===lu||null===(_u=lu.remove)||void 0===_u||_u.call(lu);let vu=Xt?Xt.geometry.coordinates:ae.lngLat;this._picPopup.setLngLat(vu).addTo(this),Xt||this._picThumbUrl[Yt.properties.id]||this._picPopup.setDOMContent((0,ut.getThumbGif)(this._parent._t));const displayThumb=ae=>{if(this._picPopup._loading===Yt.properties.id)if(ae){let ue=document.createElement("img");ue.classList.add("pnx-map-thumb"),ue.alt=this._parent._t.map.thumbnail;let nt=new Image;if(nt.src=ae,nt.addEventListener("load",(()=>{this._picPopup._loading===Yt.properties.id&&(Yt.properties.hidden?ue.children[0].src=nt.src:ue.src=nt.src,this._picPopup.setDOMContent(ue),delete this._picPopup._loading)})),Yt.properties.hidden){const ae=document.createElement("div");ae.classList.add("pnx-map-thumb-legend"),ae.appendChild(document.createTextNode(this._parent._t.map.not_public));const nt=document.createElement("div");nt.appendChild(ue),nt.appendChild(ae),ue=nt}}else this._picPopup.remove()};var wu,qu;this._picPopup._loading===Yt.properties.id&&(this._picThumbUrl[(null===(nt=Xt)||void 0===nt||null===(qt=nt.properties)||void 0===qt?void 0:qt.id)||Yt.properties.id]?displayThumb(this._picThumbUrl[(null===(wu=Xt)||void 0===wu||null===(qu=wu.properties)||void 0===qu?void 0:qu.id)||Yt.properties.id]):(clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>{this._picPopup._loading===Yt.properties.id&&(Xt?this._getPictureThumbURL(Xt.properties.id,Xt.properties.collection).then(displayThumb):ue.endsWith("_grid")?this._getThumbURL(vu).then(displayThumb):ue.includes("_sequences")&&this._getSequenceThumbURL(Yt.properties.id,vu).then(displayThumb))}),50)))}_getThumbURL(ae){return this._parent.api.getPicturesAroundCoordinates(ae.lat,ae.lng,.1,1).then((ae=>{var ue;const nt=null===ae||void 0===ae||null===(ue=ae.features)||void 0===ue?void 0:ue.pop();return nt?this._parent.api.findThumbnailInPictureFeature(nt):null}))}_getSequenceThumbURL(ae,ue){return ue?this._parent.api.getPicturesAroundCoordinates(ue.lat,ue.lng,1,1,ae).then((ue=>{var nt;return(null===ue||void 0===ue||null===(nt=ue.features)||void 0===nt?void 0:nt.length)>0?this._parent.api.findThumbnailInPictureFeature(ue.features[0]):this._parent.api.getPictureThumbnailURLForSequence(ae)})):this._parent.api.getPictureThumbnailURLForSequence(ae)}_getPictureThumbURL(ae,ue){let nt=null;return ae&&(void 0!==this._picThumbUrl[ae]?nt="string"===typeof this._picThumbUrl[ae]?Promise.resolve(this._picThumbUrl[ae]):this._picThumbUrl[ae]:(this._picThumbUrl[ae]=this._parent.api.getPictureThumbnailURL(ae,ue).then((ue=>ue?(this._picThumbUrl[ae]=ue,ue):(this._picThumbUrl[ae]=null,null))).catch((()=>{this._picThumbUrl[ae]=null})),nt=this._picThumbUrl[ae])),nt}_getPictureMarker(){let ae=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const ue=document.createElement("img");return ue.src=ae?Xt:Yt,ue.alt="",new(uu().Marker)({element:ue,picId:null}).setDraggable(ae&&this._options.picMarkerDraggable)}_onSequenceHover(ae){var ue;ae.preventDefault(),ae.features.length>0&&null!==(ue=ae.features[0].properties)&&void 0!==ue&&ue.id&&this.fire("sequence-hover",{seqId:ae.features[0].properties.id})}_onSequenceClick(ae){var ue;if(ae.preventDefault(),ae.originalEvent.stopImmediatePropagation(),"pic"!==(null===(ue=this._parent.psv)||void 0===ue?void 0:ue.getPicturesNavigation())&&ae.features.length>0){var nt;let ue=ae.features[0];ae.features.length>1&&this._picPopup._seqId&&(ue=ae.features.find((ae=>ae.properties.id===this._picPopup._seqId))||ue),null!==(nt=ue.properties)&&void 0!==nt&&nt.id&&this.fire("sequence-click",{seqId:ue.properties.id,coordinates:ae.lngLat})}}_onPictureClick(ae){var ue,nt,ut;if(ae.preventDefault(),ae.originalEvent.stopImmediatePropagation(),"pic"===(null===(ue=this._parent.psv)||void 0===ue?void 0:ue.getPicturesNavigation()))return;const qt=this.queryRenderedFeatures(ae.point);if(qt.length>1&&qt.find((ae=>{var ue;return null===ae||void 0===ae||null===(ue=ae.source)||void 0===ue?void 0:ue.startsWith("sem-")})))return;const Yt=(null===ae||void 0===ae||null===(nt=ae.features)||void 0===nt?void 0:nt.length)>0?ae.features[0]:null;if(null!==Yt&&void 0!==Yt&&null!==(ut=Yt.properties)&&void 0!==ut&&ut.id){let ue=null;try{Yt.properties.sequences&&(Array.isArray(Yt.properties.sequences)||(Yt.properties.sequences=JSON.parse(Yt.properties.sequences)),ue=Yt.properties.sequences.pop())}catch(ae){console.log("Sequence ID is not available in vector tiles for picture "+Yt.properties.id)}this.fire("picture-click",{picId:Yt.properties.id,seqId:ue,feature:Yt})}}addEventListener(ae,ue){let nt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};null!==nt&&void 0!==nt&&nt.once?this.once(ae,ue):this.on(ae,ue)}}},2771:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>MapMore,T:()=>Ec});var ut=nt(5642),qt=nt(7343),Yt=nt(8340),Xt=nt(2283),ys=nt(4005);const Ec=["minDate","maxDate","pic_type","camera","theme","qualityscore","gps"];class MapMore extends ut.A{constructor(ae,ue){super(ae,ue,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),this._mapFilters={},this._options.theme&&(this._mapFilters={theme:this._options.theme})}async _postLoad(){this._parent.api._endpoints.queryables&&Xt.SEMANTICS_OVERLAYS.forEach((ae=>this.addSemanticOverlay(...ae))),await super._postLoad()}reloadLayersStyles(){if(super.reloadLayersStyles(),this._hasGridStats()){let ae="coef";this._mapFilters.pic_type&&(ae="flat"==this._mapFilters.pic_type?"coef_flat_pictures":"coef_360_pictures",this._hasLoggedGridStats()&&(0,qt.getUserAccount)()&&(ae="logged_"+ae)),this.getStyle().layers.filter((ae=>ae.id.endsWith("_grid"))).forEach((ue=>{const nt=(0,Yt.switchCoefValue)(ue,ae);for(let ae in nt.layout)this.setLayoutProperty(ue.id,ae,nt.layout[ae]);for(let ae in nt.paint)this.setPaintProperty(ue.id,ae,nt.paint[ae])}))}}_getDatesForLayerColors(){const ae=864e5,ue=Date.now();return[ue-30*ae,ue-365*ae,ue-730*ae].map((ae=>new Date(ae).toISOString().split("T")[0]))}_getLayerColorStyle(ae){var ue,nt,ut,Xt,ys,Ec,lu,uu;const _u=["case",["==",["get","hidden"],!0],qt.COLORS.HIDDEN],vu=(null===(ue=this._parent.psv)||void 0===ue||null===(nt=ue._myVTour)||void 0===nt||null===(ut=nt.state)||void 0===ut?void 0:ut.loadingNode)||(null===(Xt=this._parent.psv)||void 0===Xt||null===(ys=Xt._myVTour)||void 0===ys||null===(Ec=ys.state)||void 0===Ec||null===(lu=Ec.currentNode)||void 0===lu?void 0:lu.id),wu=vu?null===(uu=this._parent.psv)||void 0===uu?void 0:uu._picturesSequences[vu]:null;if("sequences"==ae&&wu?_u.push(["==",["get","id"],wu],qt.COLORS.SELECTED):"pictures"==ae&&wu&&_u.push(["in",wu,["get","sequences"]],qt.COLORS.SELECTED),this._mapFilters.theme==Yt.MAP_THEMES.AGE){const ue="sequences"==ae?"date":"ts",nt=this._getDatesForLayerColors();_u.push(["!",["has",ue]],qt.COLORS.BASE,[">=",["get",ue],nt[0]],qt.COLORS.PALETTE_4,[">=",["get",ue],nt[1]],qt.COLORS.PALETTE_3,[">=",["get",ue],nt[2]],qt.COLORS.PALETTE_2,qt.COLORS.PALETTE_1)}else this._mapFilters.theme==Yt.MAP_THEMES.TYPE?_u.push(["!",["has","type"]],qt.COLORS.BASE,["==",["get","type"],"equirectangular"],qt.COLORS.QUALI_1,qt.COLORS.QUALI_2):this._mapFilters.theme==Yt.MAP_THEMES.SCORE?_u.push(["==",Yt.MAP_EXPR_QUALITYSCORE,5],qt.QUALITYSCORE_VALUES[0].color,["==",Yt.MAP_EXPR_QUALITYSCORE,4],qt.QUALITYSCORE_VALUES[1].color,["==",Yt.MAP_EXPR_QUALITYSCORE,3],qt.QUALITYSCORE_VALUES[2].color,["==",Yt.MAP_EXPR_QUALITYSCORE,2],qt.QUALITYSCORE_VALUES[3].color,qt.QUALITYSCORE_VALUES[4].color):this._mapFilters.theme==Yt.MAP_THEMES.GPS?_u.push(["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,5],qt.GPS_VALUES[0].color,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,4],qt.GPS_VALUES[1].color,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,3],qt.GPS_VALUES[2].color,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,2],qt.GPS_VALUES[3].color,qt.GPS_VALUES[4].color):_u.push(qt.COLORS.BASE);return _u}_getLayerSortStyle(ae){var ue,nt,ut,qt,Xt,ys,Ec,lu;const uu=["case",["==",["get","hidden"],!0],90],_u=(null===(ue=this._parent.psv)||void 0===ue||null===(nt=ue._myVTour)||void 0===nt||null===(ut=nt.state)||void 0===ut?void 0:ut.loadingNode)||(null===(qt=this._parent.psv)||void 0===qt||null===(Xt=qt._myVTour)||void 0===Xt||null===(ys=Xt.state)||void 0===ys||null===(Ec=ys.currentNode)||void 0===Ec?void 0:Ec.id),vu=_u?null===(lu=this._parent.psv)||void 0===lu?void 0:lu._picturesSequences[_u]:null;if("sequences"==ae&&vu?uu.push(["==",["get","id"],vu],100):"pictures"==ae&&vu&&uu.push(["in",vu,["get","sequences"]],100),this._mapFilters.theme==Yt.MAP_THEMES.AGE){const ue="sequences"==ae?"date":"ts",nt=this._getDatesForLayerColors();uu.push(["!",["has",ue]],0,[">=",["get",ue],nt[0]],50,[">=",["get",ue],nt[1]],49,[">=",["get",ue],nt[2]],48)}else this._mapFilters.theme==Yt.MAP_THEMES.TYPE?uu.push(["!",["has","type"]],0,["==",["get","type"],"equirectangular"],50):this._mapFilters.theme==Yt.MAP_THEMES.SCORE?uu.push(["==",Yt.MAP_EXPR_QUALITYSCORE,5],80,["==",Yt.MAP_EXPR_QUALITYSCORE,4],65,["==",Yt.MAP_EXPR_QUALITYSCORE,3],50,["==",Yt.MAP_EXPR_QUALITYSCORE,2],35,["==",Yt.MAP_EXPR_QUALITYSCORE,1],20):this._mapFilters.theme==Yt.MAP_THEMES.GPS&&uu.push(["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,5],80,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,4],65,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,3],50,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,2],35,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,1],20);return uu.push(10),uu}setFilters(ae){let ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{mapFilters:nt,mapSeqFilters:ut,mapPicFilters:qt,reloadMapStyle:Xt}=(0,Yt.mapFiltersToLayersFilters)(ae,this._hasGridStats());this._mapFilters=nt,Xt&&this.reloadLayersStyles();const ys=this.getVisibleUsers().includes("geovisio");ut&&ys&&(ut=["step",["zoom"],!0,7,ut]),this.filterUserLayersContent("sequences",ut),this.filterUserLayersContent("pictures",qt),!ue&&(null!==ut||null!==qt||null!==this._mapFilters.theme&&this._mapFilters.theme!==Yt.MAP_THEMES.DEFAULT)&&ys&&this.getZoom()<7&&!this._hasGridStats()&&this.easeTo({zoom:7}),this.fire("filters-changed",Object.assign({},this._mapFilters))}async setVisibleUsers(){let ae=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];await super.setVisibleUsers(ae);let{mapSeqFilters:ue,mapPicFilters:nt,reloadMapStyle:ut}=(0,Yt.mapFiltersToLayersFilters)(this._mapFilters,this._hasGridStats());ut&&this.reloadLayersStyles();const qt=ae.includes("geovisio");ue&&qt&&(ue=["step",["zoom"],!0,7,ue]),this.filterUserLayersContent("sequences",ue),this.filterUserLayersContent("pictures",nt)}addSemanticOverlay(ae,ue,nt){let ut=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!this._parent.api._endpoints.queryables)throw new Error("Semantics overlay are not available on API");Object.entries(ut||{}).forEach((ae=>{let[ue,nt]=ae;return this.addSprite(ue,nt)}));const qt="sem-"+ae;this.addSource(qt,{type:"vector",tiles:[`sem:///${ue}/{z}/{x}/{y}`],minzoom:ys.d,maxzoom:ys.d}),this.addLayer({id:ae,source:qt,"source-layer":"layer",...nt}),this.on("click",ae,(ae=>{var ue;if(ae.preventDefault(),(null===ae||void 0===ae||null===(ue=ae.features)||void 0===ue?void 0:ue.length)>0){const ue=ae.features[0];this._parent.select(ue.properties.seqid,ue.properties.picid),this._parent.psv.addEventListener("picture-loaded",(()=>{var ae,ue;const nt=this._parent.psv.getPictureMetadata();1===(null===(ae=nt.properties)||void 0===ae||null===(ue=ae.annotations)||void 0===ue?void 0:ue.length)&&this._parent.psv.focusOnAnnotation(nt.properties.annotations[0].id)}),{once:!0})}}))}getSemanticOverlays(){return this.getStyle().layers.filter((ae=>{var ue;return null===(ue=ae.source)||void 0===ue?void 0:ue.startsWith("sem-")}))}toggleAllSemanticOverlays(ae){this.getSemanticOverlays().forEach((ue=>this.setLayoutProperty(ue.id,"visibility",ae?"visible":"none")))}}},9048:(ae,ue,nt)=>{"use strict";nt.d(ue,{Ay:()=>Photo,LM:()=>qu,Vf:()=>Hu,cS:()=>wu});nt(5003);var ut=nt(5975),qt=nt(2305),Yt=nt(7343),Xt=nt(508),ys=(nt(3961),nt(1080),nt(2710),nt(1575),nt(1545)),Ec=nt(3348),lu=nt(4991),uu=nt(3727);const _u={baseUrl:ut,width:1280,cols:2,rows:1,tileUrl:()=>null},vu={id:Yt.BASE_PANORAMA_ID,caption:"",panorama:_u,links:[],gps:[0,0],sequence:{},sphereCorrection:{},horizontalFov:360,properties:{}},wu=30,qu=250,Hu=3e3,Ju="draw-annotation-1",_h="draw-annotation-2",ed="draw-annotation-r",td="rgb(224, 64, 251)",id="rgb(224, 64, 251, 0.5)",nd="rgb(123, 31, 162)",rd="rgba(123, 31, 162, 0.5)";ys.jM.useNewAnglesOrder=!0;class Photo extends ys.jM{constructor(ae,ue){var nt;let ut=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super({container:ue,adapter:[uu.A,{showErrorTile:!1,baseBlur:!1,resolution:ae.isWidthSmall()?32:64,shouldGoFast:ut.shouldGoFast,useXmpData:!1}],withCredentials:ae.api._getPSVWithCredentials(),requestHeaders:null===ae||void 0===ae||null===(nt=ae["fetch-options"])||void 0===nt?void 0:nt.headers,panorama:_u,lang:ae._t.psv,minFov:5,loadingTxt:"&nbsp;",navbar:null,rendererParameters:{preserveDrawingBuffer:!ae.isWidthSmall()},plugins:[[Ec.$,{dataMode:"server",positionMode:"gps",renderMode:"3d",preload:!0,getNode:()=>{},transitionOptions:()=>{},arrowsPosition:{linkOverlapAngle:Math.PI/6}}],[lu.b,{}]],...ut}),this._parent=ae,this._options=ut,ue.classList.add("pnx-psv"),this._shouldGoFast=(null===ut||void 0===ut?void 0:ut.shouldGoFast)||(()=>!1),this._transitionDuration=(null===ut||void 0===ut?void 0:ut.transitionDuration)||qu,this._myVTour=this.getPlugin(Ec.$),this._myVTour.datasource.nodeResolver=this._getNodeFromAPI.bind(this),this._myVTour.config.transitionOptions=this._psvNodeTransition.bind(this),this._clearArrows=this._myVTour.arrowsRenderer.clear.bind(this._myVTour.arrowsRenderer),this._myVTour.arrowsRenderer.clear=()=>{},this._myMarkers=this.getPlugin(lu.b),this._annotationsVisible=!0===this._options.displayAnnotations,this._drawingAnnotation=null,this._sequencePlaying=!1,this._picturesNavigation=this._options.picturesNavigation||"any",this._picturesSequences={},this._myVTour.addEventListener("enter-arrow",this._onEnterArrow.bind(this)),this._myVTour.addEventListener("leave-arrow",this._onLeaveArrow.bind(this)),this._myVTour.addEventListener("node-changed",this._onNodeChanged.bind(this)),this._myMarkers.addEventListener("select-marker",this._onSelectMarker.bind(this)),this.addEventListener("position-updated",this._onPositionUpdated.bind(this)),this.addEventListener("zoom-updated",this._onZoomUpdated.bind(this)),this.addEventListener("dblclick",this._onDoubleClick.bind(this)),this._parent.addEventListener("select",this._onSelect.bind(this)),this.loader.size=150,this.loader.color="rgba(61, 61, 61, 0.5)",this.loader.textColor="rgba(255, 255, 255, 0.7)",this.loader.border=5,this.loader.thickness=10,this.loader.canvas.setAttribute("viewBox","0 0 150 150"),this.loader.__updateContent(),this._options.position&&!this._parent.picture&&this.goToPosition(...this._options.position)}async _getNodeFromAPI(ae){var ue,nt;if((0,Yt.isNullId)(ae))return vu;const ut=await fetch(this._parent.api.getPictureMetadataUrl(ae,this._picturesSequences[ae]),this._parent.api._getFetchOptions());let qt=await ut.json();if(qt.features&&(qt=qt.features.pop()),!qt||0===Object.keys(qt).length||!ut.ok)throw this._parent.loader&&this._parent.loader.dismiss(!0,this._parent._t.pnx.error_pic),new Error("Picture with ID "+ae+" was not found");this._picturesSequences[ae]=qt.collection;const ys=(0,Xt.apiFeatureToPSVNode)(qt,this._parent._t,this._parent._isInternetFast,this._picturesNavFilter.bind(this),this._parent.api.cleanResourceURL.bind(this._parent.api));var Ec,lu;null!==ys&&void 0!==ys&&null!==(ue=ys.sequence)&&void 0!==ue&&ue.prevPic&&(this._picturesSequences[null===ys||void 0===ys||null===(Ec=ys.sequence)||void 0===Ec?void 0:Ec.prevPic]=qt.collection);null!==ys&&void 0!==ys&&null!==(nt=ys.sequence)&&void 0!==nt&&nt.nextPic&&(this._picturesSequences[null===ys||void 0===ys||null===(lu=ys.sequence)||void 0===lu?void 0:lu.nextPic]=qt.collection);return ys}_psvNodeTransition(ae,ue,nt){var ut,qt,Xt;let ys={};const Ec=this._shouldGoFast()?0:Math.min(qu,this._transitionDuration),lu=Ec>100,uu=null!=(nt||(null===ue||void 0===ue?void 0:ue.links.find((ue=>ue.nodeId==ae.id)))),_u=ue&&ae.sequence.id===ue.sequence.id,vu=((null===ue||void 0===ue||null===(ut=ue.properties)||void 0===ut?void 0:ut["view:azimuth"])||0)*(Math.PI/180),Hu=((null===ae||void 0===ae||null===(qt=ae.properties)||void 0===qt?void 0:qt["view:azimuth"])||0)*(Math.PI/180),Ju=(0,Yt.getRelativeHeading)(ae)*(Math.PI/180);this.setOption("maxFov",Math.min(3*ae.horizontalFov/4,90));const _h={showLoader:!1,effect:"none",speed:0,rotation:!1,rotateTo:{pitch:0,yaw:-Ju},zoomTo:wu};if(360==ae.horizontalFov)ys=ue?(0,Yt.getDistance)(ue.gps,ae.gps)>=.001?_h:{speed:Ec,effect:uu&&lu?"fade":"none",rotation:uu&&_u&&lu,rotateTo:this.getPosition()}:_h;else if(_u){const ae=this.getPosition().yaw,nt=ue.horizontalFov*(Math.PI/180)/2,ut=ae<=nt||ae>=2*Math.PI-nt,qt=Math.abs(vu-Hu)<=Math.PI/4;ys={speed:Ec,effect:uu&&qt&&lu?"fade":"none",rotation:uu&&qt&&lu,rotateTo:ut?this.getPosition():{pitch:0,yaw:0},zoomTo:ut?this.getZoomLevel():wu}}else ys=Object.assign(_h,{rotateTo:{pitch:0,yaw:0}});"fade"===ys.effect&&ys.speed>=150?setTimeout(this._clearArrows,ys.speed-100):this._clearArrows();const ed=new CustomEvent("picture-loading",{detail:{...Object.assign({},this.getXYZ(),ys.rotateTo?{x:180*(Hu+ys.rotateTo.yaw)/Math.PI}:null,ys.zoomTo?{z:ys.zoomTo}:null),picId:ae.id,lon:ae.gps[0],lat:ae.gps[1],first:(null===(Xt=this._parent._initParams)||void 0===Xt?void 0:Xt.getParentPostInit().picture)==ae.id}});return this.dispatchEvent(ed),ys}_onEnterArrow(ae){const ue=ae.link,nt=ae.node;let ut;nt&&(ut=360===nt.horizontalFov?(this.getPictureOriginalHeading()+180*this.getPosition().yaw/Math.PI)%360:this.getPictureOriginalHeading());const qt=new CustomEvent("picture-preview-started",{detail:{picId:ue.nodeId,coordinates:ue.gps,direction:ut}});this.dispatchEvent(qt)}_onLeaveArrow(ae){const ue=ae.link,nt=new CustomEvent("picture-preview-stopped",{detail:{picId:ue.nodeId}});this.dispatchEvent(nt)}_onPositionUpdated(ae){let{position:ue}=ae;const nt=(0,Yt.positionToXYZ)(ue,this.getZoomLevel());nt.x+=this.getPictureOriginalHeading(),nt.x=nt.x%360;const ut=new CustomEvent("view-rotated",{detail:nt});this.dispatchEvent(ut),this._onTilesStartLoading()}_onZoomUpdated(ae){let{zoomLevel:ue}=ae;const nt=new CustomEvent("view-rotated",{detail:{...this.getXY(),z:ue}});this.dispatchEvent(nt),this._onTilesStartLoading()}_onDoubleClick(){this.unfocusAnnotation(!1,!0)}_onNodeChanged(ae){for(let qt of document.getElementsByClassName("pnx-psv-tour-arrows"))qt.classList.remove("pnx-clicked");if(ae.node.id){var ue,nt,ut;const qt=(null===(ue=this._parent._initParams)||void 0===ue?void 0:ue.getParentPostInit().picture)==ae.node.id;this._parent.select(null===(nt=ae.node)||void 0===nt||null===(ut=nt.sequence)||void 0===ut?void 0:ut.id,ae.node.id);const Yt=this.getPictureMetadata();if(!Yt)return void this.dispatchEvent(new CustomEvent("picture-loaded",{detail:{}}));this._prevSequence=Yt.sequence.id;const Xt=new CustomEvent("picture-loaded",{detail:{...this.getXYZ(),picId:ae.node.id,lon:Yt.gps[0],lat:Yt.gps[1],first:qt}});this.dispatchEvent(Xt),Yt.panorama.hdUrl?(this.setOption("downloadUrl",Yt.panorama.hdUrl),this.setOption("downloadName",ae.node.id+".jpg")):this.setOption("downloadUrl",null),this._annotationsVisible&&this.toggleAllAnnotations(!0)}this._onTilesStartLoading()}_onSelectMarker(ae){var ue;if(ae.marker&&null!==(ue=ae.marker.id)&&void 0!==ue&&ue.startsWith("annotation-")){if(this.getSelectedAnnotations().find((ae=>{var ue,nt,ut;return null===(ue=this._myMarkers.markers["annotation-"+ae])||void 0===ue||null===(nt=ue.config)||void 0===nt||null===(ut=nt.data)||void 0===ut?void 0:ut.blockFocus})))return;this.focusOnAnnotation(ae.marker.data.id)}}_onTilesStartLoading(){this._tilesQueueTimer&&(clearInterval(this._tilesQueueTimer),delete this._tilesQueueTimer),this._tilesQueueTimer=setInterval((()=>{if(0===Object.keys(this.adapter.queue.tasks).length){if(this._myVTour.state.currentNode){const ae=new CustomEvent("picture-tiles-loaded",{detail:{picId:this._myVTour.state.currentNode.id}});this.dispatchEvent(ae)}clearInterval(this._tilesQueueTimer),delete this._tilesQueueTimer}}),100)}getPictureMetadata(){var ae,ue,nt;return(0,Yt.isNullId)(null===(ae=this._myVTour)||void 0===ae||null===(ue=ae.state)||void 0===ue||null===(nt=ue.currentNode)||void 0===nt?void 0:nt.id)?null:this._myVTour.state.currentNode?Object.assign({},this._myVTour.state.currentNode):null}getPictureId(){var ae,ue,nt,ut,qt;const Xt=(null===(ae=this._myVTour)||void 0===ae||null===(ue=ae.state)||void 0===ue?void 0:ue.loadingNode)||(null===(nt=this._myVTour)||void 0===nt||null===(ut=nt.state)||void 0===ut||null===(qt=ut.currentNode)||void 0===qt?void 0:qt.id);return(0,Yt.isNullId)(Xt)?null:Xt}_onSelect(ae){ae.detail.seqId&&(this._picturesSequences[ae.detail.picId]=ae.detail.seqId),ae.detail.seqId&&!ae.detail.picId?(this.loader.show(),this._parent.api.getSequenceItems(ae.detail.seqId,null,null,1).then((ue=>{var nt;if((null===ue||void 0===ue||null===(nt=ue.features)||void 0===nt?void 0:nt.length)>0){const nt=ue.features[0].id;this._picturesSequences[nt]=ae.detail.seqId,this._parent.select(ae.detail.seqId,nt)}})).catch((ae=>this.showErrorOverlay(ae,this._parent._t.pnx.error_pic,!0)))):ae.detail.picId?this.getPictureId()!==ae.detail.picId&&(this.loader.show(),this._myVTour.setCurrentNode(ae.detail.picId).catch((ae=>{this.showErrorOverlay(ae,this._parent._t.pnx.error_pic,!0)}))):(this._myVTour.setCurrentNode(null),this._myVTour.state.currentNode.id=null,this._myVTour.state.loadingNode=null)}goToNextPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");if("pic"==this._picturesNavigation)throw new Error("Pictures navigation is locked to current picture");const ae=this.getPictureMetadata().sequence.nextPic;if(!ae)throw new Error("No next picture available");this._parent.select(this.getPictureMetadata().sequence.id,ae)}goToPrevPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");if("pic"==this._picturesNavigation)throw new Error("Pictures navigation is locked to current picture");const ae=this.getPictureMetadata().sequence.prevPic;if(!ae)throw new Error("No previous picture available");this._parent.select(this.getPictureMetadata().sequence.id,ae)}async goToPosition(ae,ue){if("pic"==this._picturesNavigation)throw new Error("Pictures navigation is locked to current picture");return this._parent.api.getPicturesAroundCoordinates(ae,ue).then((ae=>{if(ae.features.length>0){const ue=ae.features.pop();return this._parent.select(null===ue||void 0===ue?void 0:ue.collection,ue.id),ue.id}return Promise.reject(new Error("No picture found nearby given coordinates"))}))}getXY(){const ae=(0,Yt.positionToXYZ)(this.getPosition());return ae.x=(ae.x+this.getPictureOriginalHeading())%360,ae}getXYZ(){const ae=this.getXY();return ae.z=this.getZoomLevel(),ae}getPictureOriginalHeading(){var ae,ue;return(null===(ae=this.getPictureMetadata())||void 0===ae||null===(ue=ae.properties)||void 0===ue?void 0:ue["view:azimuth"])||0}getPictureRelativeHeading(){return(0,Yt.getRelativeHeading)(this.getPictureMetadata())}clearPictureMetadataCache(){var ae,ue,nt,ut;const qt=null===(ae=this.getPictureMetadata())||void 0===ae?void 0:ae.id,Yt=null===(ue=this.getPictureMetadata())||void 0===ue||null===(nt=ue.sequence)||void 0===nt?void 0:nt.id;null===(ut=this._myVTour.state.currentTooltip)||void 0===ut||ut.hide(),this._myVTour.state.currentTooltip=null,this._myVTour.state.currentNode=null,this._myVTour.state.preload={},this._myVTour.datasource.nodes={},qt&&this._parent.select(Yt,qt)}setXYZ(ae,ue,nt){const ut=(0,Yt.xyzToPosition)(ae-this.getPictureOriginalHeading(),ue,nt);this.rotate({yaw:ut.yaw,pitch:ut.pitch}),this.zoom(ut.zoom)}setHigherContrast(ae){this.renderer.renderer.toneMapping=ae?3:0,this.renderer.renderer.toneMappingExposure=ae?2:1,this.needsUpdate()}getTransitionDuration(){return this._transitionDuration}setTransitionDuration(ae){if((ae=parseFloat(ae))<100||ae>Hu)throw new Error("Invalid transition duration (should be between 100 and "+Hu+")");this._transitionDuration=ae;const ue=new CustomEvent("transition-duration-changed",{detail:{value:ae}});this.dispatchEvent(ue)}setPanorama(ae,ue){if(ae.baseUrl.startsWith("data:"))return Promise.resolve();const onFailure=ae=>{var ue;return this.showErrorOverlay(ae,null===(ue=this._parent)||void 0===ue?void 0:ue._t.pnx.error_pic,!0)};try{return super.setPanorama(ae,ue).catch(onFailure)}catch(nt){onFailure(nt)}}showErrorOverlay(ae,ue,nt){var ut,Yt,Xt,ys;null!==(ut=this._parent)&&void 0!==ut&&ut.loader.isVisible()||!this.overlay.isVisible()?null===(Yt=this._parent)||void 0===Yt||Yt.loader.dismiss(ae,ue,nt?()=>{var ae;null===(ae=this._parent)||void 0===ae||ae.loader.dismiss(),this.overlay.hide()}:void 0):(console.error(ae),this.overlay.show({image:`<img style="width: 200px" src="${qt}" alt="" />`,title:null===(Xt=this._parent)||void 0===Xt?void 0:Xt._t.pnx.error,text:ue+"<br />"+(null===(ys=this._parent)||void 0===ys?void 0:ys._t.pnx.error_click),dissmisable:nt}))}playSequence(){this._sequencePlaying=!0,this.container.classList.add("pnx-psv-playing");const ae=new Event("sequence-playing",{bubbles:!0,composed:!0});this.dispatchEvent(ae);const nextPicturePlay=()=>{if(this._sequencePlaying){this.addEventListener("picture-loaded",(()=>{this._playTimer=setTimeout((()=>{nextPicturePlay()}),this.getTransitionDuration())}),{once:!0});try{this.goToNextPicture()}catch(ae){this.stopSequence()}}};this.addEventListener("click",(()=>this.stopSequence())),nextPicturePlay()}stopSequence(){this._sequencePlaying=!1,this.container.classList.remove("pnx-psv-playing"),this._playTimer&&(clearTimeout(this._playTimer),delete this._playTimer),this.forceRefresh();const ae=new Event("sequence-stopped",{bubbles:!0,composed:!0});this.dispatchEvent(ae)}isSequencePlaying(){return this._sequencePlaying}toggleSequencePlaying(){this.isSequencePlaying()?this.stopSequence():this.playSequence()}getPicturesNavigation(){return this._picturesNavigation}setPicturesNavigation(ae){"none"===ae&&(ae="pic"),this._picturesNavigation=ae;const ue=this.container.querySelector(".psv-virtual-tour-arrows");ue&&(ue.style.display="pic"==ae?"none":null);const nt=new CustomEvent("pictures-navigation-changed",{detail:{value:ae}});this.dispatchEvent(nt)}_picturesNavFilter(ae){switch(this._picturesNavigation){case"seq":return["next","prev"].includes(ae.rel);case"pic":case"none":return!1;default:return!0}}areAnnotationsVisible(){return this._annotationsVisible}getSelectedAnnotations(){return Object.keys(this._myMarkers.markers).filter((ae=>{var ue,nt,ut;return ae.startsWith("annotation-")&&(null===(ue=this._myMarkers.markers[ae])||void 0===ue||null===(nt=ue.config)||void 0===nt||null===(ut=nt.data)||void 0===ut?void 0:ut.selected)})).map((ae=>ae.replace("annotation-","")))}toggleAllAnnotations(ae){const ue=this.getPictureMetadata(),nt=this._annotationsVisible==ae;if(!ue)throw this._myMarkers.clearMarkers(),new Error("No picture currently selected");if(ae){var ut;let ae=ue.properties.annotations||[];0===(null===(ut=ae)||void 0===ut?void 0:ut.length)&&console.warn("No annotation available on picture",ue.id),ae=ae.map((ae=>{if(!ue.properties["pers:interior_orientation"].sensor_array_dimensions)return console.warn("Picture lacks pers:interior_orientation.sensor_array_dimensions property, can't compute marker"),null;const nt=ae.shape.coordinates.map((ae=>ae.map((ae=>{var nt;const ut=null===(nt=ue.panorama)||void 0===nt?void 0:nt.cropData,qt={textureX:ae[0]+((null===ut||void 0===ut?void 0:ut.croppedX)||0),textureY:ae[1]+((null===ut||void 0===ut?void 0:ut.croppedY)||0)};return this.dataHelper.textureCoordsToSphericalCoords(qt)}))));return{id:`annotation-${ae.id}`,polygon:nt,data:{id:ae.id},className:"pnx-psv-annotation",svgStyle:{stroke:"var(--orange)",strokeWidth:"3px",fill:"var(--orange-transparent)",cursor:"pointer"},tooltip:this._parent._t.pnx.semantics_annotation_tooltip}})),this._myMarkers.setMarkers(ae)}else this._myMarkers.clearMarkers();this._annotationsVisible=ae,nt||this.dispatchEvent(new CustomEvent("annotations-toggled",{detail:{visible:ae}}))}focusOnAnnotation(ae){let ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1],nt=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const ut=this.getSelectedAnnotations();if(ae&&1===ut.length&&ut[0]===ae)return;this.areAnnotationsVisible()||this.toggleAllAnnotations(!0),this.unfocusAnnotation(!0);const qt=`annotation-${ae}`;if(this._myMarkers.markers[qt]){if(this._myMarkers.updateMarker({id:qt,svgStyle:{stroke:"var(--red)",strokeWidth:"3px",fill:"var(--red-transparent)"},data:{selected:!0,blockFocus:ue}}),this._myMarkers.gotoMarker(qt,0),this.zoom(65),!nt){const ue=new CustomEvent("annotation-focused",{detail:{annotationId:ae}});this.dispatchEvent(ue)}}else setTimeout((()=>this.focusOnAnnotation(ae,ue,nt)),100)}unfocusAnnotation(){let ae=arguments.length>0&&void 0!==arguments[0]&&arguments[0],ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const nt=this.getSelectedAnnotations();if(nt.length>0){let ut=0;nt.forEach((ae=>{var nt,qt,Yt;const Xt="annotation-"+ae;ue&&null!==(nt=this._myMarkers.markers[Xt])&&void 0!==nt&&null!==(qt=nt.config)&&void 0!==qt&&null!==(Yt=qt.data)&&void 0!==Yt&&Yt.blockFocus?ut++:this._myMarkers.updateMarker({id:Xt,svgStyle:{stroke:"var(--orange)",strokeWidth:"3px",fill:"var(--orange-transparent)"},data:{selected:!1,blockFocus:!1}})})),!ae&&ut<nt.length&&this.dispatchEvent(new Event("annotations-unfocused"))}}startDrawAnnotation(){this.toggleAllAnnotations(!1),this._drawingAnnotation=[],this._drawingMoves=0,this._myMarkers.addMarker({id:ed,polygon:[{yaw:0,pitch:0},{yaw:0,pitch:0},{yaw:0,pitch:0}],svgStyle:{fill:rd,stroke:nd,strokeWidth:"2px"},visible:!1}),this._myMarkers.addMarker({id:Ju,circle:5,position:{yaw:0,pitch:0},style:{cursor:"pointer"},svgStyle:{fill:id,stroke:td,strokeWidth:"3px"}}),this._myMarkers.addMarker({id:_h,circle:5,position:{yaw:0,pitch:0},style:{cursor:"pointer"},svgStyle:{fill:id,stroke:td,strokeWidth:"3px"},visible:!1});const firstMove=ae=>{const ue=this.getPositionFromEvent(ae);ue&&this._myMarkers.markers[Ju]&&(this._myMarkers.updateMarker({id:Ju,position:ue,style:{cursor:"grab"}}),2==this._drawingAnnotation.length&&this._myMarkers.markers[ed]&&this._myMarkers.updateMarker({id:ed,polygon:[ue,{yaw:ue.yaw,pitch:this._drawingAnnotation[1].pitch},this._drawingAnnotation[1],{yaw:this._drawingAnnotation[1].yaw,pitch:ue.pitch}]}))},secMove=ae=>{const ue=this.getPositionFromEvent(ae);ue&&this._myMarkers.markers[_h]&&(this._myMarkers.updateMarker({id:_h,position:ue,style:{cursor:"grab"}}),this._drawingAnnotation.length>=1&&this._myMarkers.markers[ed]&&this._myMarkers.updateMarker({id:ed,polygon:[this._drawingAnnotation[0],{yaw:this._drawingAnnotation[0].yaw,pitch:ue.pitch},ue,{yaw:ue.yaw,pitch:this._drawingAnnotation[0].pitch}]}))};this._drawListeners=[firstMove,secMove],this.parent.addEventListener("mousemove",firstMove),this._drawingMoves=1,this._drawListenerClick=ae=>{let ue=!1;if(2!==this._drawingMoves&&ae.marker.id===Ju?0==this._drawingAnnotation.length?(this._drawingAnnotation.push({yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch}),this.parent.removeEventListener("mousemove",firstMove),this._myMarkers.updateMarker({id:Ju,style:{cursor:"pointer"}}),this._myMarkers.updateMarker({id:_h,visible:!0,position:{yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch}}),this._myMarkers.updateMarker({id:ed,visible:!0}),this.parent.addEventListener("mousemove",secMove),this._drawingMoves=2):0===this._drawingMoves?(this.parent.addEventListener("mousemove",firstMove),this._drawingMoves=1):(this._drawingAnnotation[0]={yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch},this.parent.removeEventListener("mousemove",firstMove),this._myMarkers.updateMarker({id:Ju,style:{cursor:"pointer"}}),this._drawingMoves=0,ue=!0):1!==this._drawingMoves&&ae.marker.id===_h&&(1==this._drawingAnnotation.length?(this._drawingAnnotation.push({yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch}),this.parent.removeEventListener("mousemove",secMove),this._myMarkers.updateMarker({id:_h,style:{cursor:"pointer"}}),this._drawingMoves=0,ue=!0):2===this._drawingMoves?(this._drawingAnnotation[1]={yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch},this.parent.removeEventListener("mousemove",secMove),this._myMarkers.updateMarker({id:_h,style:{cursor:"pointer"}}),this._drawingMoves=0,ue=!0):(this.parent.addEventListener("mousemove",secMove),this._drawingMoves=2)),ue){var nt,ut;const ae=this.dataHelper.sphericalCoordsToTextureCoords(this._drawingAnnotation[0]),ue=this.dataHelper.sphericalCoordsToTextureCoords(this._drawingAnnotation[1]);let qt=[ae.textureX,ae.textureY,ue.textureX,ue.textureY];const Yt=null===(nt=this.getPictureMetadata())||void 0===nt||null===(ut=nt.panorama)||void 0===ut?void 0:ut.cropData;if(Yt&&(qt[0]-=Yt.croppedX,qt[1]-=Yt.croppedY,qt[2]-=Yt.croppedX,qt[3]-=Yt.croppedY,(qt[0]<0||qt[0]>Yt.croppedWidth||qt[1]<0||qt[1]>Yt.croppedHeight||qt[2]<0||qt[2]>Yt.croppedWidth||qt[3]<0||qt[3]>Yt.croppedHeight)&&(qt=null)),qt[0]>=qt[2]&&qt[1]>=qt[3]){let ae=qt[0],ue=qt[2],nt=qt[1];qt=[ue,qt[3],ae,nt]}const Xt=new CustomEvent("annotation-drawn",{detail:{shape:qt}});this.dispatchEvent(Xt)}},this._myMarkers.addEventListener("select-marker",this._drawListenerClick)}fixDrawAnnotation(){[Ju,_h].forEach((ae=>{try{this._myMarkers.removeMarker(ae)}catch(ue){}})),(this._drawListeners||[]).forEach((ae=>this.parent.removeEventListener("mousemove",ae))),this._myMarkers.removeEventListener("select-marker",this._drawListenerClick),this._myMarkers.updateMarker({id:ed,svgStyle:{stroke:"var(--red)",strokeWidth:"3px",fill:"var(--red-transparent)",cursor:"pointer"}}),this._drawingMoves=0}stopDrawAnnotation(){[Ju,_h,ed].forEach((ae=>{try{this._myMarkers.removeMarker(ae)}catch(ue){}})),(this._drawListeners||[]).forEach((ae=>this.parent.removeEventListener("mousemove",ae))),this._myMarkers.removeEventListener("select-marker",this._drawListenerClick),delete this._drawingMoves,this._drawingAnnotation=null}getPositionFromEvent(ae){const ue=this.container.getBoundingClientRect(),nt=ae.clientX-ue.left,ut=ae.clientY-ue.top,qt=this.renderer.getIntersections({x:nt,y:ut}).find((ae=>ae.object.userData[ys.aH.VIEWER_DATA]));if(qt)return this.dataHelper.vector3ToSphericalCoords(qt.point)}forceRefresh(){var ae;const ue=this._myVTour.getCurrentNode();if(ue&&ue.panorama.baseUrl!==(null===ue||void 0===ue||null===(ae=ue.panorama)||void 0===ae?void 0:ae.origBaseUrl)){const ae=this.getZoomLevel(),nt=this.getPosition();this._myVTour.state.currentNode=null,this._myVTour.setCurrentNode(ue.id,{zoomTo:ae,rotateTo:nt,fadeIn:!1,speed:0,rotation:!1})}ue&&ue.panorama.rows>1&&this.adapter.__refresh()}}},4374:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Popup});var ut=nt(4542),qt=nt(5995),Yt=nt(8591),Xt=nt(6627);class Popup extends ut.WF{constructor(){super(),this.visible=!1}connectedCallback(){super.connectedCallback(),this.addEventListener("click",(ae=>{ae.target===this&&this.close()})),document.addEventListener("keyup",(ae=>{"Escape"===ae.key&&this.visible&&this.close()}))}attributeChangedCallback(ae,ue,nt){super.attributeChangedCallback(ae,ue,nt),"visible"==ae&&(""!==nt&&!0!==nt||this.dispatchEvent(new Event("open")))}close(){this.visible=!1,this.dispatchEvent(new Event("close"))}render(){return ut.qy`
2205
+ `,Loader.properties={_mode:{state:!0},_label:{state:!0},_isLabelFun:{state:!0},visible:{type:Boolean,reflect:!0},"no-label":{type:Boolean},value:{type:Number}},customElements.define("pnx-loader",Loader)},5642:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Map});nt(3041);var ut=nt(8340),qt=nt(7343),Yt=nt(6883),Xt=nt(270),ys=nt(4005),Ec=nt(1435),lu=(nt(6795),nt(927)),uu=nt.n(lu),_u=nt(2968),vu=nt.n(_u),wu=nt(748);uu().workerClass=vu(),uu().addProtocol("pmtiles",(new wu.Zs).tile),uu().addProtocol("panora",(new Ec.A).tile()),uu().addProtocol("panoras",(new Ec.A).tile());class Map extends uu().Map{constructor(ae,ue){let nt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var qt;(super({container:ue,style:(0,ut.combineStyles)(ae,nt),center:[0,0],zoom:0,maxZoom:24,attributionControl:!1,dragRotate:!1,pitchWithRotate:!1,touchZoomRotate:!0,touchPitch:!1,doubleClickZoom:!1,canvasContextAttributes:{preserveDrawingBuffer:!ae.isWidthSmall()},transformRequest:ae.api._getMapRequestTransform(),locale:ae._t.maplibre,hash:!1,...nt}),uu().addProtocol("sem",new ys.A(ae.api).tile()),this._loadMarkerImages(),this._parent=ae,this._options=nt,this.getContainer().classList.add("pnx-map"),void 0===nt.touchZoomRotate)&&(null===this||void 0===this||null===(qt=this.touchZoomRotate)||void 0===qt||qt.disableRotation());this._options.raster&&(this._options.background=this._options.background||"streets"),this._attribution=new(uu().AttributionControl)({compact:!1,...nt.attributionControl}),this.addControl(this._attribution),this._initMapPosition(),this._picMarker=this._getPictureMarker(),this._picMarkerPreview=this._getPictureMarker(!1),this._picThumbUrl={},this._seqPictures={},this._userLayers=new Set,this._parent.addEventListener("select",this.reloadLayersStyles.bind(this)),setTimeout((()=>{var ae;!this.loaded()&&null!==(ae=this._parent)&&void 0!==ae&&ae.loader.isVisible()&&this._parent.loader.dismiss({},this._parent._t.map.slow_loading,(async()=>{await this._postLoad(),this._parent.loader.dismiss()}))}),15e3),this.waitForEnoughMapLoaded().then((async()=>await this._postLoad()))}async _postLoad(){this.resize(),await this.setVisibleUsers(this._parent.users),this.reloadLayersStyles(),this.fire("ready")}destroy(){this.remove(),delete this._parent,delete this._options,delete this._attribution,delete this._picMarker,delete this._picMarkerPreview,delete this._picThumbUrl,delete this._seqPictures,delete this._userLayers}waitForEnoughMapLoaded(){return new Promise((ae=>{let ue=0,nt=0,ut=0,qt=0;const onSourceDataLoading=ae=>{"source"===ae.dataType&&ae.tile&&(ae.sourceId.startsWith("geovisio")?nt++:ue++)},onSourceData=ae=>{"source"===ae.dataType&&ae.tile&&(ae.sourceId.startsWith("geovisio")?(qt++,ae.isSourceLoaded&&(qt=nt)):(ut++,ae.isSourceLoaded&&(ut=ue))),checkEnoughLoaded()},checkEnoughLoaded=()=>{ut/ue>=.75&&(0===nt||qt/nt>=.75)&&(this.off("sourcedata",onSourceData),this.off("sourcedataloading",onSourceDataLoading),ae())};this.on("sourcedataloading",onSourceDataLoading),this.on("sourcedata",onSourceData)}))}_initMapPosition(){!(0,ut.isNullCoordinates)(this._options.center)||this._options.zoom&&0!==this._options.zoom||this._options.hash||this._parent.onceAPIReady().then((()=>{var ae,ue;let nt=null===(ae=this._parent)||void 0===ae||null===(ue=ae.api)||void 0===ue?void 0:ue.getDataBbox();if(nt)try{nt=new(uu().LngLatBounds)(nt),this.loaded()?this.fitBounds(nt,{animate:!1}):this.waitForEnoughMapLoaded().then((()=>this.fitBounds(nt,{animate:!1})))}catch(ut){console.warn("Received invalid bbox: "+nt)}}))}_loadMarkerImages(){[{id:"pnx-marker",img:Yt}].forEach((ae=>{const ue=new Image(64,64);ue.onload=()=>this.addImage(ae.id,ue),ue.src=ae.img}))}_hasQualityScore(){var ae,ue,nt,ut;const qt=(null===(ae=this.getStyle())||void 0===ae||null===(ue=ae.metadata)||void 0===ue?void 0:ue["panoramax:fields"])||{};return(null===qt||void 0===qt||null===(nt=qt.pictures)||void 0===nt?void 0:nt.includes("gps_accuracy"))&&(null===qt||void 0===qt||null===(ut=qt.pictures)||void 0===ut?void 0:ut.includes("h_pixel_density"))}_hasGridStats(){var ae,ue,nt,ut,qt,Yt;const Xt=(null===(ae=this.getStyle())||void 0===ae||null===(ue=ae.metadata)||void 0===ue?void 0:ue["panoramax:fields"])||{};return(null===Xt||void 0===Xt||null===(nt=Xt.grid)||void 0===nt?void 0:nt.includes("nb_360_pictures"))&&(null===Xt||void 0===Xt||null===(ut=Xt.grid)||void 0===ut?void 0:ut.includes("nb_flat_pictures"))&&(null===Xt||void 0===Xt||null===(qt=Xt.grid)||void 0===qt?void 0:qt.includes("coef_360_pictures"))&&(null===Xt||void 0===Xt||null===(Yt=Xt.grid)||void 0===Yt?void 0:Yt.includes("coef_flat_pictures"))}_hasLoggedGridStats(){var ae,ue,nt,ut,qt;const Yt=(null===(ae=this.getStyle())||void 0===ae||null===(ue=ae.metadata)||void 0===ue?void 0:ue["panoramax:fields"])||{};return(null===Yt||void 0===Yt||null===(nt=Yt.grid)||void 0===nt?void 0:nt.includes("logged_coef_360_pictures"))&&(null===Yt||void 0===Yt||null===(ut=Yt.grid)||void 0===ut?void 0:ut.includes("logged_coef_flat_pictures"))&&(null===Yt||void 0===Yt||null===(qt=Yt.grid)||void 0===qt?void 0:qt.includes("logged_coef"))}reloadVectorTiles(){[...this._userLayers].forEach((ae=>{const ue=this.getSource((0,ut.getUserSourceId)(ae));ue.setTiles(ue.tiles)}))}hasTwoBackgrounds(){return void 0!==this.getLayer(ut.RASTER_LAYER_ID)}getBackground(){if(!this.getLayer(ut.RASTER_LAYER_ID))return"streets";return"visible"==this.getLayoutProperty(ut.RASTER_LAYER_ID,"visibility")?"aerial":"streets"}setBackground(ae){if(!this.getLayer(ut.RASTER_LAYER_ID)&&"aerial"===ae)throw new Error("No aerial imagery available");this.getLayer(ut.RASTER_LAYER_ID)&&(this.setLayoutProperty(ut.RASTER_LAYER_ID,"visibility","aerial"===ae?"visible":"none"),this.fire("background-changed",{background:ae||"streets"}))}getVisibleUsers(){return[...this._userLayers].filter((ae=>this.getLayer((0,ut.getUserLayerId)(ae,"pictures"))&&"visible"===this.getLayoutProperty((0,ut.getUserLayerId)(ae,"pictures"),"visibility")))}onceLayerReady(ae){return this.getLayer(ae)?Promise.resolve():new Promise((ae=>{setTimeout(ae,250)})).then((()=>this.onceLayerReady(ae)))}async setVisibleUsers(){let ae=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];"string"===typeof ae?ae=[ae]:null===ae&&(ae=[]),await Promise.all(ae.filter((ae=>""!=ae&&!this._userLayers.has(ae))).map((ae=>(this._createPicturesTilesLayer(ae),this.onceLayerReady((0,ut.getUserLayerId)(ae,"pictures"))))));const ue=["pictures","sequences","sequences_plus","grid"];[...this._userLayers].forEach((nt=>{ue.forEach((ue=>{const qt=(0,ut.getUserLayerId)(nt,ue);this.getLayer(qt)&&this.setLayoutProperty(qt,"visibility",ae.includes(nt)?"visible":"none")}))})),this.reloadLayersStyles(),this.fire("users-changed",{usersIds:ae})}filterUserLayersContent(ae,ue){[...this._userLayers].forEach((nt=>{this.getLayer((0,ut.getUserLayerId)(nt,ae))?(this.setFilter((0,ut.getUserLayerId)(nt,ae),ue),"sequences"===ae&&this.getLayer((0,ut.getUserLayerId)(nt,"sequences_plus"))&&this.setFilter((0,ut.getUserLayerId)(nt,"sequences_plus"),ue)):console.warn("Layer",(0,ut.getUserLayerId)(nt,ae),"not ready")}))}displayPictureMarker(ae,ue,nt){let qt=arguments.length>3&&void 0!==arguments[3]&&arguments[3],Yt=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;this._picMarkerPreview.remove(),void 0!==ae&&void 0!==ue?(this._picMarker.setLngLat([ae,ue]).setRotation(nt).addTo(this),this._picMarker.picId=Yt):this._picMarker.remove(),this.reloadLayersStyles(),qt||void 0===ae||void 0===ue||this.jumpTo({center:[ae,ue],zoom:this.getZoom()<ut.TILES_PICTURES_ZOOM+2?ut.TILES_PICTURES_ZOOM+2:this.getZoom()})}reloadLayersStyles(){const updateStyle=(ae,ue)=>{[...this._userLayers].forEach((nt=>{const qt=(0,ut.getUserLayerId)(nt,ae);if(this.getLayer(qt)){for(let ae in ue.layout)this.setLayoutProperty(qt,ae,ue.layout[ae]);for(let ae in ue.paint)this.setPaintProperty(qt,ae,ue.paint[ae])}else console.warn("Layer",qt,"not ready")}))};["pictures","sequences"].forEach((ae=>{updateStyle(ae,this._getLayerStyleProperties(ae))}))}async _createPicturesTilesLayer(ae){this._userLayers.add(ae);const ue=this.getStyle().layers.find(ut.isLabelLayer);if("geovisio"!==ae&&!this.getSource(`geovisio_${ae}`)){const nt=await this._parent.api.getUserMapStyle(ae);Object.entries(nt.sources).forEach((ae=>{let[ue,nt]=ae;return this.addSource(ue,nt)})),nt.layers=nt.layers||[];nt.layers.concat((0,ut.getMissingLayerStyles)(nt.sources,nt.layers)).filter((ae=>Object.keys(ae).length>0)).forEach((ae=>this.addLayer(ae,null===ue||void 0===ue?void 0:ue.id)))}this._picPreviewTimer=null,this._picPopup=new(uu().Popup)({closeButton:!1,closeOnClick:!this._parent.isWidthSmall(),offset:15});const dropPreview=ae=>{clearTimeout(this._picDropPreviewTimer),ae?this._picDropPreviewTimer=setTimeout(dropPreview,250):(clearTimeout(this._picPreviewTimer),delete this._picPopup._picId,delete this._picPopup._loading,this._picPopup.remove(),this._picMarkerPreview.remove())},nt=(0,ut.getUserLayerId)(ae,"pictures");this.on("mousemove",nt,(ae=>{this.getCanvas().style.cursor="pointer";const ue=Object.assign({},ae);this._attachPreviewToPictures(ue,nt)})),this.on("mouseleave",nt,(()=>{this.getCanvas().style.cursor=""})),this.on("click",nt,this._onPictureClick.bind(this));const qt=(0,ut.getUserLayerId)(ae,"sequences_plus");this.on("mousemove",qt,(ae=>{if(this._onSequenceHover(ae),this.getCanvas().style.cursor="pointer",ae.features[0].properties.id){const ue=Object.assign({},ae);this._attachPreviewToPictures(ue,qt)}})),this.on("mouseleave",qt,(()=>{this.getCanvas().style.cursor="",dropPreview(!0)})),this.on("click",qt,(ae=>{ae.preventDefault(),this._onSequenceClick(ae)})),"geovisio"===ae&&this.getLayer("geovisio_grid")&&(this.on("mousemove","geovisio_grid",(ae=>{if(this.getZoom()<=ut.TILES_PICTURES_ZOOM+1){this.getCanvas().style.cursor="pointer";const ue=Object.assign({},ae);this._attachPreviewToPictures(ue,"geovisio_grid")}})),this.on("mouseleave","geovisio_grid",(()=>{dropPreview(),this.getCanvas().style.cursor=""})),this.on("click","geovisio_grid",(ae=>{ae.preventDefault(),this.flyTo({center:ae.lngLat,zoom:ut.TILES_PICTURES_ZOOM-6})}))),this.on("dblclick",(()=>clearTimeout(this._gridFocus))),this.on("click",(ae=>{var ue,nt;(clearTimeout(this._gridFocus),!1===ae.defaultPrevented)&&(dropPreview(),null!==(ue=(nt=this._parent).isMapWide)&&void 0!==ue&&ue.call(nt)&&(this._gridFocus=setTimeout((()=>{var ae,ue;return null===(ae=this._parent)||void 0===ae||null===(ue=ae.grid)||void 0===ue?void 0:ue.toggleAway()}),250)))}));const untoggleGridWidgets=()=>{var ae,ue,nt,ut;null!==(ae=(ue=this._parent).isMapWide)&&void 0!==ae&&ae.call(ue)&&null!==(nt=this._parent)&&void 0!==nt&&null!==(ut=nt.grid)&&void 0!==ut&&ut._hidden&&(clearTimeout(this._gridFocus),this._parent.grid.toggleAway(!0))};this.on("mousemove",untoggleGridWidgets),this.on("touchmove",untoggleGridWidgets)}_getLayerStyleProperties(ae){const ue={pictures:"circle",sequences:"line"},nt={paint:Object.assign({[`${ue[ae]}-color`]:this._getLayerColorStyle(ae)},ut.VECTOR_STYLES[ae.toUpperCase()].paint),layout:Object.assign({[`${ue[ae]}-sort-key`]:this._getLayerSortStyle(ae)},ut.VECTOR_STYLES[ae.toUpperCase()].layout)};return"pictures"===ae&&(nt.paint["circle-stroke-color"]=this._getLayerColorStyle(ae)),nt}_getLayerColorStyle(ae){const ue=["case",["==",["get","hidden"],!0],qt.COLORS.HIDDEN,["==",["get","geovisio:status"],"hidden"],qt.COLORS.HIDDEN],nt=this._parent.sequence;return"sequences"==ae&&nt?ue.push(["==",["get","id"],nt],qt.COLORS.SELECTED):ae.startsWith("pictures")&&nt&&ue.push(["in",nt,["get","sequences"]],qt.COLORS.SELECTED),ue.push(qt.COLORS.BASE),ue}_getLayerSortStyle(ae){const ue=["case",["==",["get","hidden"],!0],90],nt=this._parent.sequence;return"sequences"==ae&&nt?ue.push(["==",["get","id"],nt],100):ae.startsWith("pictures")&&nt&&ue.push(["in",nt,["get","sequences"]],100),ue.push(10),ue}_attachPreviewToPictures(ae,ue){var nt,qt;let Yt=ae.features.pop();if(!Yt||Yt.properties.id==this._picPopup._picId)return;clearTimeout(this._picPreviewTimer),clearTimeout(this._picDropPreviewTimer),this._picPopup._loading=Yt.properties.id,this._picPopup._picId=Yt.properties.id,delete this._picPopup._seqId;let Xt=null;if(ue.includes("_pictures"))Xt=Yt;else if(ue.includes("_sequences")){const ue=this.getLayersOrder().find((ae=>ae.endsWith("_pictures")));if(ue){const nt=this.queryRenderedFeatures(this.getBounds(),{layers:[ue]});let ut=null;for(let ue=0;ue<nt.length;ue++){let qt=ae.lngLat.distanceTo(new(uu().LngLat)(...nt[ue].geometry.coordinates));(!ut||qt<ut)&&(Xt=nt[ue],ut=qt)}}}var ys,Ec,lu,_u;Xt?(this._picPopup._seqId=Xt.properties.first_sequence,null===(ys=(Ec=this._picMarkerPreview).setLngLat)||void 0===ys||ys.call(Ec,Xt.geometry.coordinates).setRotation(Xt.properties.heading||0).addTo(this)):null===(lu=this._picMarkerPreview)||void 0===lu||null===(_u=lu.remove)||void 0===_u||_u.call(lu);let vu=Xt?Xt.geometry.coordinates:ae.lngLat;this._picPopup.setLngLat(vu).addTo(this),Xt||this._picThumbUrl[Yt.properties.id]||this._picPopup.setDOMContent((0,ut.getThumbGif)(this._parent._t));const displayThumb=ae=>{if(this._picPopup._loading===Yt.properties.id)if(ae){let ue=document.createElement("img");ue.classList.add("pnx-map-thumb"),ue.alt=this._parent._t.map.thumbnail;let nt=new Image;if(nt.src=ae,nt.addEventListener("load",(()=>{this._picPopup._loading===Yt.properties.id&&(Yt.properties.hidden?ue.children[0].src=nt.src:ue.src=nt.src,this._picPopup.setDOMContent(ue),delete this._picPopup._loading)})),Yt.properties.hidden){const ae=document.createElement("div");ae.classList.add("pnx-map-thumb-legend"),ae.appendChild(document.createTextNode(this._parent._t.map.not_public));const nt=document.createElement("div");nt.appendChild(ue),nt.appendChild(ae),ue=nt}}else this._picPopup.remove()};var wu,qu;this._picPopup._loading===Yt.properties.id&&(this._picThumbUrl[(null===(nt=Xt)||void 0===nt||null===(qt=nt.properties)||void 0===qt?void 0:qt.id)||Yt.properties.id]?displayThumb(this._picThumbUrl[(null===(wu=Xt)||void 0===wu||null===(qu=wu.properties)||void 0===qu?void 0:qu.id)||Yt.properties.id]):(clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>{this._picPopup._loading===Yt.properties.id&&(Xt?this._getPictureThumbURL(Xt.properties.id,Xt.properties.collection).then(displayThumb):ue.endsWith("_grid")?this._getThumbURL(vu).then(displayThumb):ue.includes("_sequences")&&this._getSequenceThumbURL(Yt.properties.id,vu).then(displayThumb))}),50)))}_getThumbURL(ae){return this._parent.api.getPicturesAroundCoordinates(ae.lat,ae.lng,.1,1).then((ae=>{var ue;const nt=null===ae||void 0===ae||null===(ue=ae.features)||void 0===ue?void 0:ue.pop();return nt?this._parent.api.findThumbnailInPictureFeature(nt):null}))}_getSequenceThumbURL(ae,ue){return ue?this._parent.api.getPicturesAroundCoordinates(ue.lat,ue.lng,1,1,ae).then((ue=>{var nt;return(null===ue||void 0===ue||null===(nt=ue.features)||void 0===nt?void 0:nt.length)>0?this._parent.api.findThumbnailInPictureFeature(ue.features[0]):this._parent.api.getPictureThumbnailURLForSequence(ae)})):this._parent.api.getPictureThumbnailURLForSequence(ae)}_getPictureThumbURL(ae,ue){let nt=null;return ae&&(void 0!==this._picThumbUrl[ae]?nt="string"===typeof this._picThumbUrl[ae]?Promise.resolve(this._picThumbUrl[ae]):this._picThumbUrl[ae]:(this._picThumbUrl[ae]=this._parent.api.getPictureThumbnailURL(ae,ue).then((ue=>ue?(this._picThumbUrl[ae]=ue,ue):(this._picThumbUrl[ae]=null,null))).catch((()=>{this._picThumbUrl[ae]=null})),nt=this._picThumbUrl[ae])),nt}_getPictureMarker(){let ae=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const ue=document.createElement("img");return ue.src=ae?Xt:Yt,ue.alt="",new(uu().Marker)({element:ue,picId:null}).setDraggable(ae&&this._options.picMarkerDraggable)}_onSequenceHover(ae){var ue;ae.preventDefault(),ae.features.length>0&&null!==(ue=ae.features[0].properties)&&void 0!==ue&&ue.id&&this.fire("sequence-hover",{seqId:ae.features[0].properties.id})}_onSequenceClick(ae){var ue;if(ae.preventDefault(),ae.originalEvent.stopImmediatePropagation(),"pic"!==(null===(ue=this._parent.psv)||void 0===ue?void 0:ue.getPicturesNavigation())&&ae.features.length>0){var nt;let ue=ae.features[0];ae.features.length>1&&this._picPopup._seqId&&(ue=ae.features.find((ae=>ae.properties.id===this._picPopup._seqId))||ue),null!==(nt=ue.properties)&&void 0!==nt&&nt.id&&this.fire("sequence-click",{seqId:ue.properties.id,coordinates:ae.lngLat})}}_onPictureClick(ae){var ue,nt,ut;if(ae.preventDefault(),ae.originalEvent.stopImmediatePropagation(),"pic"===(null===(ue=this._parent.psv)||void 0===ue?void 0:ue.getPicturesNavigation()))return;const qt=this.queryRenderedFeatures(ae.point);if(qt.length>1&&qt.find((ae=>{var ue;return null===ae||void 0===ae||null===(ue=ae.source)||void 0===ue?void 0:ue.startsWith("sem-")})))return;const Yt=(null===ae||void 0===ae||null===(nt=ae.features)||void 0===nt?void 0:nt.length)>0?ae.features[0]:null;if(null!==Yt&&void 0!==Yt&&null!==(ut=Yt.properties)&&void 0!==ut&&ut.id){let ue=null;try{Yt.properties.sequences&&(Array.isArray(Yt.properties.sequences)||(Yt.properties.sequences=JSON.parse(Yt.properties.sequences)),ue=Yt.properties.sequences.pop())}catch(ae){console.log("Sequence ID is not available in vector tiles for picture "+Yt.properties.id)}this.fire("picture-click",{picId:Yt.properties.id,seqId:ue,feature:Yt})}}addEventListener(ae,ue){let nt=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};null!==nt&&void 0!==nt&&nt.once?this.once(ae,ue):this.on(ae,ue)}}},2771:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>MapMore,T:()=>Ec});var ut=nt(5642),qt=nt(7343),Yt=nt(8340),Xt=nt(2283),ys=nt(4005);const Ec=["minDate","maxDate","pic_type","camera","theme","qualityscore","gps"];class MapMore extends ut.A{constructor(ae,ue){super(ae,ue,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),this._mapFilters={},this._options.theme&&(this._mapFilters={theme:this._options.theme})}async _postLoad(){this._parent.api._endpoints.queryables&&Xt.SEMANTICS_OVERLAYS.forEach((ae=>this.addSemanticOverlay(...ae))),await super._postLoad()}reloadLayersStyles(){if(super.reloadLayersStyles(),this._hasGridStats()){let ae="coef";this._mapFilters.pic_type&&(ae="flat"==this._mapFilters.pic_type?"coef_flat_pictures":"coef_360_pictures",this._hasLoggedGridStats()&&(0,qt.getUserAccount)()&&(ae="logged_"+ae)),this.getStyle().layers.filter((ae=>ae.id.endsWith("_grid"))).forEach((ue=>{const nt=(0,Yt.switchCoefValue)(ue,ae);for(let ae in nt.layout)this.setLayoutProperty(ue.id,ae,nt.layout[ae]);for(let ae in nt.paint)this.setPaintProperty(ue.id,ae,nt.paint[ae])}))}}_getDatesForLayerColors(){const ae=864e5,ue=Date.now();return[ue-30*ae,ue-365*ae,ue-730*ae].map((ae=>new Date(ae).toISOString().split("T")[0]))}_getLayerColorStyle(ae){var ue,nt,ut,Xt,ys,Ec,lu,uu;const _u=["case",["==",["get","hidden"],!0],qt.COLORS.HIDDEN],vu=(null===(ue=this._parent.psv)||void 0===ue||null===(nt=ue._myVTour)||void 0===nt||null===(ut=nt.state)||void 0===ut?void 0:ut.loadingNode)||(null===(Xt=this._parent.psv)||void 0===Xt||null===(ys=Xt._myVTour)||void 0===ys||null===(Ec=ys.state)||void 0===Ec||null===(lu=Ec.currentNode)||void 0===lu?void 0:lu.id),wu=vu?null===(uu=this._parent.psv)||void 0===uu?void 0:uu._picturesSequences[vu]:null;if("sequences"==ae&&wu?_u.push(["==",["get","id"],wu],qt.COLORS.SELECTED):"pictures"==ae&&wu&&_u.push(["in",wu,["get","sequences"]],qt.COLORS.SELECTED),this._mapFilters.theme==Yt.MAP_THEMES.AGE){const ue="sequences"==ae?"date":"ts",nt=this._getDatesForLayerColors();_u.push(["!",["has",ue]],qt.COLORS.BASE,[">=",["get",ue],nt[0]],qt.COLORS.PALETTE_4,[">=",["get",ue],nt[1]],qt.COLORS.PALETTE_3,[">=",["get",ue],nt[2]],qt.COLORS.PALETTE_2,qt.COLORS.PALETTE_1)}else this._mapFilters.theme==Yt.MAP_THEMES.TYPE?_u.push(["!",["has","type"]],qt.COLORS.BASE,["==",["get","type"],"equirectangular"],qt.COLORS.QUALI_1,qt.COLORS.QUALI_2):this._mapFilters.theme==Yt.MAP_THEMES.SCORE?_u.push(["==",Yt.MAP_EXPR_QUALITYSCORE,5],qt.QUALITYSCORE_VALUES[0].color,["==",Yt.MAP_EXPR_QUALITYSCORE,4],qt.QUALITYSCORE_VALUES[1].color,["==",Yt.MAP_EXPR_QUALITYSCORE,3],qt.QUALITYSCORE_VALUES[2].color,["==",Yt.MAP_EXPR_QUALITYSCORE,2],qt.QUALITYSCORE_VALUES[3].color,qt.QUALITYSCORE_VALUES[4].color):this._mapFilters.theme==Yt.MAP_THEMES.GPS?_u.push(["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,5],qt.GPS_VALUES[0].color,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,4],qt.GPS_VALUES[1].color,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,3],qt.GPS_VALUES[2].color,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,2],qt.GPS_VALUES[3].color,qt.GPS_VALUES[4].color):_u.push(qt.COLORS.BASE);return _u}_getLayerSortStyle(ae){var ue,nt,ut,qt,Xt,ys,Ec,lu;const uu=["case",["==",["get","hidden"],!0],90],_u=(null===(ue=this._parent.psv)||void 0===ue||null===(nt=ue._myVTour)||void 0===nt||null===(ut=nt.state)||void 0===ut?void 0:ut.loadingNode)||(null===(qt=this._parent.psv)||void 0===qt||null===(Xt=qt._myVTour)||void 0===Xt||null===(ys=Xt.state)||void 0===ys||null===(Ec=ys.currentNode)||void 0===Ec?void 0:Ec.id),vu=_u?null===(lu=this._parent.psv)||void 0===lu?void 0:lu._picturesSequences[_u]:null;if("sequences"==ae&&vu?uu.push(["==",["get","id"],vu],100):"pictures"==ae&&vu&&uu.push(["in",vu,["get","sequences"]],100),this._mapFilters.theme==Yt.MAP_THEMES.AGE){const ue="sequences"==ae?"date":"ts",nt=this._getDatesForLayerColors();uu.push(["!",["has",ue]],0,[">=",["get",ue],nt[0]],50,[">=",["get",ue],nt[1]],49,[">=",["get",ue],nt[2]],48)}else this._mapFilters.theme==Yt.MAP_THEMES.TYPE?uu.push(["!",["has","type"]],0,["==",["get","type"],"equirectangular"],50):this._mapFilters.theme==Yt.MAP_THEMES.SCORE?uu.push(["==",Yt.MAP_EXPR_QUALITYSCORE,5],80,["==",Yt.MAP_EXPR_QUALITYSCORE,4],65,["==",Yt.MAP_EXPR_QUALITYSCORE,3],50,["==",Yt.MAP_EXPR_QUALITYSCORE,2],35,["==",Yt.MAP_EXPR_QUALITYSCORE,1],20):this._mapFilters.theme==Yt.MAP_THEMES.GPS&&uu.push(["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,5],80,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,4],65,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,3],50,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,2],35,["==",Yt.MAP_EXPR_QUALITYSCORE_GPS,1],20);return uu.push(10),uu}setFilters(ae){let ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{mapFilters:nt,mapSeqFilters:ut,mapPicFilters:qt,reloadMapStyle:Xt}=(0,Yt.mapFiltersToLayersFilters)(ae,this._hasGridStats());this._mapFilters=nt,Xt&&this.reloadLayersStyles();const ys=this.getVisibleUsers().includes("geovisio");ut&&ys&&(ut=["step",["zoom"],!0,7,ut]),this.filterUserLayersContent("sequences",ut),this.filterUserLayersContent("pictures",qt),!ue&&(null!==ut||null!==qt||null!==this._mapFilters.theme&&this._mapFilters.theme!==Yt.MAP_THEMES.DEFAULT)&&ys&&this.getZoom()<7&&!this._hasGridStats()&&this.easeTo({zoom:7}),this.fire("filters-changed",Object.assign({},this._mapFilters))}async setVisibleUsers(){let ae=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];await super.setVisibleUsers(ae);let{mapSeqFilters:ue,mapPicFilters:nt,reloadMapStyle:ut}=(0,Yt.mapFiltersToLayersFilters)(this._mapFilters,this._hasGridStats());ut&&this.reloadLayersStyles();const qt=ae.includes("geovisio");ue&&qt&&(ue=["step",["zoom"],!0,7,ue]),this.filterUserLayersContent("sequences",ue),this.filterUserLayersContent("pictures",nt)}addSemanticOverlay(ae,ue,nt){let ut=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!this._parent.api._endpoints.queryables)throw new Error("Semantics overlay are not available on API");Object.entries(ut||{}).forEach((ae=>{let[ue,nt]=ae;return this.addSprite(ue,nt)}));const qt="sem-"+ae;this.addSource(qt,{type:"vector",tiles:[`sem:///${ue}/{z}/{x}/{y}`],minzoom:ys.d,maxzoom:ys.d}),this.addLayer({id:ae,source:qt,"source-layer":"layer",...nt}),this.on("click",ae,(ae=>{var ue;if(ae.preventDefault(),(null===ae||void 0===ae||null===(ue=ae.features)||void 0===ue?void 0:ue.length)>0){const ue=ae.features[0];this._parent.select(ue.properties.seqid,ue.properties.picid),this._parent.psv.addEventListener("picture-loaded",(()=>{var ae,ue;const nt=this._parent.psv.getPictureMetadata();1===(null===(ae=nt.properties)||void 0===ae||null===(ue=ae.annotations)||void 0===ue?void 0:ue.length)&&this._parent.psv.focusOnAnnotation(nt.properties.annotations[0].id)}),{once:!0})}}))}getSemanticOverlays(){return this.getStyle().layers.filter((ae=>{var ue;return null===(ue=ae.source)||void 0===ue?void 0:ue.startsWith("sem-")}))}toggleAllSemanticOverlays(ae){this.getSemanticOverlays().forEach((ue=>this.setLayoutProperty(ue.id,"visibility",ae?"visible":"none")))}}},9048:(ae,ue,nt)=>{"use strict";nt.d(ue,{Ay:()=>Photo,LM:()=>qu,Vf:()=>Hu,cS:()=>wu});nt(5003);var ut=nt(5975),qt=nt(2305),Yt=nt(7343),Xt=nt(508),ys=(nt(3961),nt(1080),nt(2710),nt(1575),nt(1545)),Ec=nt(3348),lu=nt(4991),uu=nt(3727);const _u={baseUrl:ut,width:1280,cols:2,rows:1,tileUrl:()=>null},vu={id:Yt.BASE_PANORAMA_ID,caption:"",panorama:_u,links:[],gps:[0,0],sequence:{},sphereCorrection:{},horizontalFov:360,properties:{}},wu=30,qu=250,Hu=3e3,Ju="draw-annotation-1",_h="draw-annotation-2",ed="draw-annotation-r",td="rgb(224, 64, 251)",id="rgb(224, 64, 251, 0.5)",nd="rgb(123, 31, 162)",rd="rgba(123, 31, 162, 0.5)";ys.jM.useNewAnglesOrder=!0;class Photo extends ys.jM{constructor(ae,ue){var nt;let ut=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super({container:ue,adapter:[uu.A,{showErrorTile:!1,baseBlur:!1,resolution:ae.isWidthSmall()?32:64,shouldGoFast:ut.shouldGoFast,useXmpData:!1}],withCredentials:ae.api._getPSVWithCredentials(),requestHeaders:null===ae||void 0===ae||null===(nt=ae["fetch-options"])||void 0===nt?void 0:nt.headers,panorama:_u,lang:ae._t.psv,minFov:5,loadingTxt:"&nbsp;",navbar:null,rendererParameters:{preserveDrawingBuffer:!ae.isWidthSmall()},plugins:[[Ec.$,{dataMode:"server",positionMode:"gps",renderMode:"3d",preload:!0,getNode:()=>{},transitionOptions:()=>{},arrowsPosition:{linkOverlapAngle:Math.PI/6}}],[lu.b,{}]],...ut}),this._parent=ae,this._options=ut,ue.classList.add("pnx-psv"),this._shouldGoFast=(null===ut||void 0===ut?void 0:ut.shouldGoFast)||(()=>!1),this._transitionDuration=(null===ut||void 0===ut?void 0:ut.transitionDuration)||qu,this._myVTour=this.getPlugin(Ec.$),this._myVTour.datasource.nodeResolver=this._getNodeFromAPI.bind(this),this._myVTour.config.transitionOptions=this._psvNodeTransition.bind(this),this._clearArrows=this._myVTour.arrowsRenderer.clear.bind(this._myVTour.arrowsRenderer),this._myVTour.arrowsRenderer.clear=()=>{},this._myMarkers=this.getPlugin(lu.b),this._annotationsVisible=!0===this._options.displayAnnotations,this._drawingAnnotation=null,this._sequencePlaying=!1,this._picturesNavigation=this._options.picturesNavigation||"any",this._picturesSequences={},this._myVTour.addEventListener("enter-arrow",this._onEnterArrow.bind(this)),this._myVTour.addEventListener("leave-arrow",this._onLeaveArrow.bind(this)),this._myVTour.addEventListener("node-changed",this._onNodeChanged.bind(this)),this._myMarkers.addEventListener("select-marker",this._onSelectMarker.bind(this)),this.addEventListener("position-updated",this._onPositionUpdated.bind(this)),this.addEventListener("zoom-updated",this._onZoomUpdated.bind(this)),this.addEventListener("dblclick",this._onDoubleClick.bind(this)),this._parent.addEventListener("select",this._onSelect.bind(this)),this.loader.size=150,this.loader.color="rgba(61, 61, 61, 0.5)",this.loader.textColor="rgba(255, 255, 255, 0.7)",this.loader.border=5,this.loader.thickness=10,this.loader.canvas.setAttribute("viewBox","0 0 150 150"),this.loader.__updateContent(),this._options.position&&!this._parent.picture&&this.goToPosition(...this._options.position)}async _getNodeFromAPI(ae){var ue,nt;if((0,Yt.isNullId)(ae))return vu;const ut=await fetch(this._parent.api.getPictureMetadataUrl(ae,this._picturesSequences[ae]),this._parent.api._getFetchOptions());let qt=await ut.json();if(qt.features&&(qt=qt.features.pop()),!qt||0===Object.keys(qt).length||!ut.ok)throw this._parent.loader&&this._parent.loader.dismiss(!0,this._parent._t.pnx.error_pic),new Error("Picture with ID "+ae+" was not found");this._picturesSequences[ae]=qt.collection;const ys=(0,Xt.apiFeatureToPSVNode)(qt,this._parent._t,this._parent._isInternetFast,this._picturesNavFilter.bind(this),this._parent.api.cleanResourceURL.bind(this._parent.api));var Ec,lu;null!==ys&&void 0!==ys&&null!==(ue=ys.sequence)&&void 0!==ue&&ue.prevPic&&(this._picturesSequences[null===ys||void 0===ys||null===(Ec=ys.sequence)||void 0===Ec?void 0:Ec.prevPic]=qt.collection);null!==ys&&void 0!==ys&&null!==(nt=ys.sequence)&&void 0!==nt&&nt.nextPic&&(this._picturesSequences[null===ys||void 0===ys||null===(lu=ys.sequence)||void 0===lu?void 0:lu.nextPic]=qt.collection);return ys}_psvNodeTransition(ae,ue,nt){var ut,qt,Xt;let ys={};const Ec=this._shouldGoFast()?0:Math.min(qu,this._transitionDuration),lu=Ec>100,uu=null!=(nt||(null===ue||void 0===ue?void 0:ue.links.find((ue=>ue.nodeId==ae.id)))),_u=ue&&ae.sequence.id===ue.sequence.id,vu=((null===ue||void 0===ue||null===(ut=ue.properties)||void 0===ut?void 0:ut["view:azimuth"])||0)*(Math.PI/180),Hu=((null===ae||void 0===ae||null===(qt=ae.properties)||void 0===qt?void 0:qt["view:azimuth"])||0)*(Math.PI/180),Ju=(0,Yt.getRelativeHeading)(ae)*(Math.PI/180);this.setOption("maxFov",Math.min(3*ae.horizontalFov/4,90));const _h={showLoader:!1,effect:"none",speed:0,rotation:!1,rotateTo:{pitch:0,yaw:-Ju},zoomTo:wu};if(360==ae.horizontalFov)ys=ue?(0,Yt.getDistance)(ue.gps,ae.gps)>=.001?_h:{speed:Ec,effect:uu&&lu?"fade":"none",rotation:uu&&_u&&lu,rotateTo:this.getPosition()}:_h;else if(_u){const ae=this.getPosition().yaw,nt=ue.horizontalFov*(Math.PI/180)/2,ut=ae<=nt||ae>=2*Math.PI-nt,qt=Math.abs(vu-Hu)<=Math.PI/4;ys={speed:Ec,effect:uu&&qt&&lu?"fade":"none",rotation:uu&&qt&&lu,rotateTo:ut?this.getPosition():{pitch:0,yaw:0},zoomTo:ut?this.getZoomLevel():wu}}else ys=Object.assign(_h,{rotateTo:{pitch:0,yaw:0}});"fade"===ys.effect&&ys.speed>=150?setTimeout(this._clearArrows,ys.speed-100):this._clearArrows();const ed=new CustomEvent("picture-loading",{detail:{...Object.assign({},this.getXYZ(),ys.rotateTo?{x:180*(Hu+ys.rotateTo.yaw)/Math.PI}:null,ys.zoomTo?{z:ys.zoomTo}:null),picId:ae.id,lon:ae.gps[0],lat:ae.gps[1],first:(null===(Xt=this._parent._initParams)||void 0===Xt?void 0:Xt.getParentPostInit().picture)==ae.id}});return this.dispatchEvent(ed),ys}_onEnterArrow(ae){const ue=ae.link,nt=ae.node;let ut;nt&&(ut=360===nt.horizontalFov?(this.getPictureOriginalHeading()+180*this.getPosition().yaw/Math.PI)%360:this.getPictureOriginalHeading());const qt=new CustomEvent("picture-preview-started",{detail:{picId:ue.nodeId,coordinates:ue.gps,direction:ut}});this.dispatchEvent(qt)}_onLeaveArrow(ae){const ue=ae.link,nt=new CustomEvent("picture-preview-stopped",{detail:{picId:ue.nodeId}});this.dispatchEvent(nt)}_onPositionUpdated(ae){let{position:ue}=ae;const nt=(0,Yt.positionToXYZ)(ue,this.getZoomLevel());nt.x+=this.getPictureOriginalHeading(),nt.x=nt.x%360;const ut=new CustomEvent("view-rotated",{detail:nt});this.dispatchEvent(ut),this._onTilesStartLoading()}_onZoomUpdated(ae){let{zoomLevel:ue}=ae;const nt=new CustomEvent("view-rotated",{detail:{...this.getXY(),z:ue}});this.dispatchEvent(nt),this._onTilesStartLoading()}_onDoubleClick(){this.unfocusAnnotation(!1,!0)}_onNodeChanged(ae){for(let qt of document.getElementsByClassName("pnx-psv-tour-arrows"))qt.classList.remove("pnx-clicked");if(ae.node.id){var ue,nt,ut;const qt=(null===(ue=this._parent._initParams)||void 0===ue?void 0:ue.getParentPostInit().picture)==ae.node.id;this._parent.select(null===(nt=ae.node)||void 0===nt||null===(ut=nt.sequence)||void 0===ut?void 0:ut.id,ae.node.id);const Yt=this.getPictureMetadata();if(!Yt)return void this.dispatchEvent(new CustomEvent("picture-loaded",{detail:{}}));this._prevSequence=Yt.sequence.id;const Xt=new CustomEvent("picture-loaded",{detail:{...this.getXYZ(),picId:ae.node.id,lon:Yt.gps[0],lat:Yt.gps[1],first:qt}});this.dispatchEvent(Xt),Yt.panorama.hdUrl?(this.setOption("downloadUrl",Yt.panorama.hdUrl),this.setOption("downloadName",ae.node.id+".jpg")):this.setOption("downloadUrl",null),this._annotationsVisible&&this.toggleAllAnnotations(!0)}this._onTilesStartLoading()}_onSelectMarker(ae){var ue;if(ae.marker&&null!==(ue=ae.marker.id)&&void 0!==ue&&ue.startsWith("annotation-")){if(this.getSelectedAnnotations().find((ae=>{var ue,nt,ut;return null===(ue=this._myMarkers.markers["annotation-"+ae])||void 0===ue||null===(nt=ue.config)||void 0===nt||null===(ut=nt.data)||void 0===ut?void 0:ut.blockFocus})))return;this.focusOnAnnotation(ae.marker.data.id)}}_onTilesStartLoading(){this._tilesQueueTimer&&(clearInterval(this._tilesQueueTimer),delete this._tilesQueueTimer),this._tilesQueueTimer=setInterval((()=>{if(0===Object.keys(this.adapter.queue.tasks).length){if(this._myVTour.state.currentNode){const ae=new CustomEvent("picture-tiles-loaded",{detail:{picId:this._myVTour.state.currentNode.id}});this.dispatchEvent(ae)}clearInterval(this._tilesQueueTimer),delete this._tilesQueueTimer}}),100)}getPictureMetadata(){var ae,ue,nt;return(0,Yt.isNullId)(null===(ae=this._myVTour)||void 0===ae||null===(ue=ae.state)||void 0===ue||null===(nt=ue.currentNode)||void 0===nt?void 0:nt.id)?null:this._myVTour.state.currentNode?Object.assign({},this._myVTour.state.currentNode):null}getPictureId(){var ae,ue,nt,ut,qt;const Xt=(null===(ae=this._myVTour)||void 0===ae||null===(ue=ae.state)||void 0===ue?void 0:ue.loadingNode)||(null===(nt=this._myVTour)||void 0===nt||null===(ut=nt.state)||void 0===ut||null===(qt=ut.currentNode)||void 0===qt?void 0:qt.id);return(0,Yt.isNullId)(Xt)?null:Xt}_onSelect(ae){ae.detail.seqId&&(this._picturesSequences[ae.detail.picId]=ae.detail.seqId),ae.detail.seqId&&!ae.detail.picId?(this.loader.show(),this._parent.api.getSequenceItems(ae.detail.seqId,null,null,1).then((ue=>{var nt;if((null===ue||void 0===ue||null===(nt=ue.features)||void 0===nt?void 0:nt.length)>0){const nt=ue.features[0].id;this._picturesSequences[nt]=ae.detail.seqId,this._parent.select(ae.detail.seqId,nt)}})).catch((ae=>this.showErrorOverlay(ae,this._parent._t.pnx.error_pic,!0)))):ae.detail.picId?this.getPictureId()!==ae.detail.picId&&(this.loader.show(),this._myVTour.setCurrentNode(ae.detail.picId).catch((ae=>{this.showErrorOverlay(ae,this._parent._t.pnx.error_pic,!0)}))):(this._myVTour.setCurrentNode(null),this._myVTour.state.currentNode.id=null,this._myVTour.state.loadingNode=null)}goToNextPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");if("pic"==this._picturesNavigation)throw new Error("Pictures navigation is locked to current picture");const ae=this.getPictureMetadata().sequence.nextPic;if(!ae)throw new Error("No next picture available");this._parent.select(this.getPictureMetadata().sequence.id,ae)}goToPrevPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");if("pic"==this._picturesNavigation)throw new Error("Pictures navigation is locked to current picture");const ae=this.getPictureMetadata().sequence.prevPic;if(!ae)throw new Error("No previous picture available");this._parent.select(this.getPictureMetadata().sequence.id,ae)}async goToPosition(ae,ue){if("pic"==this._picturesNavigation)throw new Error("Pictures navigation is locked to current picture");return this._parent.api.getPicturesAroundCoordinates(ae,ue).then((ae=>{if(ae.features.length>0){const ue=ae.features.pop();return this._parent.select(null===ue||void 0===ue?void 0:ue.collection,ue.id),ue.id}return Promise.reject(new Error("No picture found nearby given coordinates"))}))}getXY(){const ae=(0,Yt.positionToXYZ)(this.getPosition());return ae.x=(ae.x+this.getPictureOriginalHeading())%360,ae}getXYZ(){const ae=this.getXY();return ae.z=this.getZoomLevel(),ae}getPictureOriginalHeading(){var ae,ue;return(null===(ae=this.getPictureMetadata())||void 0===ae||null===(ue=ae.properties)||void 0===ue?void 0:ue["view:azimuth"])||0}getPictureRelativeHeading(){return(0,Yt.getRelativeHeading)(this.getPictureMetadata())}clearPictureMetadataCache(){var ae,ue,nt,ut;const qt=null===(ae=this.getPictureMetadata())||void 0===ae?void 0:ae.id,Yt=null===(ue=this.getPictureMetadata())||void 0===ue||null===(nt=ue.sequence)||void 0===nt?void 0:nt.id;null===(ut=this._myVTour.state.currentTooltip)||void 0===ut||ut.hide(),this._myVTour.state.currentTooltip=null,this._myVTour.state.currentNode=null,this._myVTour.state.preload={},this._myVTour.datasource.nodes={},qt&&this._parent.select(Yt,qt)}setXYZ(ae,ue,nt){const ut=(0,Yt.xyzToPosition)(ae-this.getPictureOriginalHeading(),ue,nt);this.rotate({yaw:ut.yaw,pitch:ut.pitch}),this.zoom(ut.zoom)}setHigherContrast(ae){this.renderer.renderer.toneMapping=ae?3:0,this.renderer.renderer.toneMappingExposure=ae?2:1,this.needsUpdate()}getTransitionDuration(){return this._transitionDuration}setTransitionDuration(ae){if((ae=parseFloat(ae))<100||ae>Hu)throw new Error("Invalid transition duration (should be between 100 and "+Hu+")");this._transitionDuration=ae;const ue=new CustomEvent("transition-duration-changed",{detail:{value:ae}});this.dispatchEvent(ue)}setPanorama(ae,ue){if(ae.baseUrl.startsWith("data:"))return Promise.resolve();const onFailure=ae=>{var ue;return this.showErrorOverlay(ae,null===(ue=this._parent)||void 0===ue?void 0:ue._t.pnx.error_pic,!0)};try{return super.setPanorama(ae,ue).catch(onFailure)}catch(nt){onFailure(nt)}}showErrorOverlay(ae,ue,nt){var ut,Yt,Xt,ys;null!==(ut=this._parent)&&void 0!==ut&&ut.loader.isVisible()||!this.overlay.isVisible()?null===(Yt=this._parent)||void 0===Yt||Yt.loader.dismiss(ae,ue,nt?()=>{var ae;null===(ae=this._parent)||void 0===ae||ae.loader.dismiss(),this.overlay.hide()}:void 0):(console.error(ae),this.overlay.show({image:`<img style="width: 200px" src="${qt}" alt="" />`,title:null===(Xt=this._parent)||void 0===Xt?void 0:Xt._t.pnx.error,text:ue+"<br />"+(null===(ys=this._parent)||void 0===ys?void 0:ys._t.pnx.error_click),dissmisable:nt}))}playSequence(){this._sequencePlaying=!0,this.container.classList.add("pnx-psv-playing");const ae=new Event("sequence-playing",{bubbles:!0,composed:!0});this.dispatchEvent(ae);const nextPicturePlay=()=>{if(this._sequencePlaying){this.addEventListener("picture-loaded",(()=>{this._playTimer=setTimeout((()=>{nextPicturePlay()}),this.getTransitionDuration())}),{once:!0});try{this.goToNextPicture()}catch(ae){this.stopSequence()}}};this.addEventListener("click",(()=>this.stopSequence())),nextPicturePlay()}stopSequence(){this._sequencePlaying=!1,this.container.classList.remove("pnx-psv-playing"),this._playTimer&&(clearTimeout(this._playTimer),delete this._playTimer),this.forceRefresh();const ae=new Event("sequence-stopped",{bubbles:!0,composed:!0});this.dispatchEvent(ae)}isSequencePlaying(){return this._sequencePlaying}toggleSequencePlaying(){this.isSequencePlaying()?this.stopSequence():this.playSequence()}getPicturesNavigation(){return this._picturesNavigation}setPicturesNavigation(ae){"none"===ae&&(ae="pic"),this._picturesNavigation=ae;const ue=this.container.querySelector(".psv-virtual-tour-arrows");ue&&(ue.style.display="pic"==ae?"none":null);const nt=new CustomEvent("pictures-navigation-changed",{detail:{value:ae}});this.dispatchEvent(nt)}_picturesNavFilter(ae){switch(this._picturesNavigation){case"seq":return["next","prev"].includes(ae.rel);case"pic":case"none":return!1;default:return!0}}areAnnotationsVisible(){return this._annotationsVisible}getSelectedAnnotations(){return Object.keys(this._myMarkers.markers).filter((ae=>{var ue,nt,ut;return ae.startsWith("annotation-")&&(null===(ue=this._myMarkers.markers[ae])||void 0===ue||null===(nt=ue.config)||void 0===nt||null===(ut=nt.data)||void 0===ut?void 0:ut.selected)})).map((ae=>ae.replace("annotation-","")))}toggleAllAnnotations(ae){const ue=this.getPictureMetadata(),nt=this._annotationsVisible==ae;if(!ue)throw this._myMarkers.clearMarkers(),new Error("No picture currently selected");if(ae){var ut;let ae=ue.properties.annotations||[];0===(null===(ut=ae)||void 0===ut?void 0:ut.length)&&console.warn("No annotation available on picture",ue.id),ae=ae.map((ae=>{if(!ue.properties["pers:interior_orientation"].sensor_array_dimensions)return console.warn("Picture lacks pers:interior_orientation.sensor_array_dimensions property, can't compute marker"),null;const nt=ae.shape.coordinates.map((ae=>ae.map((ae=>{var nt;const ut=null===(nt=ue.panorama)||void 0===nt?void 0:nt.cropData,qt={textureX:ae[0]+((null===ut||void 0===ut?void 0:ut.croppedX)||0),textureY:ae[1]+((null===ut||void 0===ut?void 0:ut.croppedY)||0)};return this.dataHelper.textureCoordsToSphericalCoords(qt)}))));return{id:`annotation-${ae.id}`,polygon:nt,data:{id:ae.id},className:"pnx-psv-annotation",svgStyle:{stroke:"var(--orange)",strokeWidth:"3px",fill:"var(--orange-transparent)",cursor:"pointer"},tooltip:this._parent._t.pnx.semantics_annotation_tooltip}})),this._myMarkers.setMarkers(ae)}else this._myMarkers.clearMarkers();this._annotationsVisible=ae,nt||this.dispatchEvent(new CustomEvent("annotations-toggled",{detail:{visible:ae}}))}focusOnAnnotation(ae){let ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1],nt=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const ut=this.getSelectedAnnotations();if(ae&&1===ut.length&&ut[0]===ae)return;this.areAnnotationsVisible()||this.toggleAllAnnotations(!0),this.unfocusAnnotation(!0);const qt=`annotation-${ae}`;if(this._myMarkers.markers[qt]){if(this._myMarkers.updateMarker({id:qt,svgStyle:{stroke:"var(--red)",strokeWidth:"3px",fill:"var(--red-transparent)"},data:{selected:!0,blockFocus:ue}}),this._myMarkers.gotoMarker(qt,0),this.zoom(65),!nt){const ue=new CustomEvent("annotation-focused",{detail:{annotationId:ae}});this.dispatchEvent(ue)}}else setTimeout((()=>this.focusOnAnnotation(ae,ue,nt)),100)}unfocusAnnotation(){let ae=arguments.length>0&&void 0!==arguments[0]&&arguments[0],ue=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const nt=this.getSelectedAnnotations();if(nt.length>0){let ut=0;nt.forEach((ae=>{var nt,qt,Yt;const Xt="annotation-"+ae;ue&&null!==(nt=this._myMarkers.markers[Xt])&&void 0!==nt&&null!==(qt=nt.config)&&void 0!==qt&&null!==(Yt=qt.data)&&void 0!==Yt&&Yt.blockFocus?ut++:this._myMarkers.updateMarker({id:Xt,svgStyle:{stroke:"var(--orange)",strokeWidth:"3px",fill:"var(--orange-transparent)"},data:{selected:!1,blockFocus:!1}})})),!ae&&ut<nt.length&&this.dispatchEvent(new Event("annotations-unfocused"))}}startDrawAnnotation(){this.toggleAllAnnotations(!1),this._drawingAnnotation=[],this._drawingMoves=0,this._myMarkers.addMarker({id:ed,polygon:[{yaw:0,pitch:0},{yaw:0,pitch:0},{yaw:0,pitch:0}],svgStyle:{fill:rd,stroke:nd,strokeWidth:"2px"},visible:!1}),this._myMarkers.addMarker({id:Ju,circle:5,position:{yaw:0,pitch:0},style:{cursor:"pointer"},svgStyle:{fill:id,stroke:td,strokeWidth:"3px"}}),this._myMarkers.addMarker({id:_h,circle:5,position:{yaw:0,pitch:0},style:{cursor:"pointer"},svgStyle:{fill:id,stroke:td,strokeWidth:"3px"},visible:!1});const firstMove=ae=>{const ue=this.getPositionFromEvent(ae);ue&&this._myMarkers.markers[Ju]&&(this._myMarkers.updateMarker({id:Ju,position:ue,style:{cursor:"grab"}}),2==this._drawingAnnotation.length&&this._myMarkers.markers[ed]&&this._myMarkers.updateMarker({id:ed,polygon:[ue,{yaw:ue.yaw,pitch:this._drawingAnnotation[1].pitch},this._drawingAnnotation[1],{yaw:this._drawingAnnotation[1].yaw,pitch:ue.pitch}]}))},secMove=ae=>{const ue=this.getPositionFromEvent(ae);ue&&this._myMarkers.markers[_h]&&(this._myMarkers.updateMarker({id:_h,position:ue,style:{cursor:"grab"}}),this._drawingAnnotation.length>=1&&this._myMarkers.markers[ed]&&this._myMarkers.updateMarker({id:ed,polygon:[this._drawingAnnotation[0],{yaw:this._drawingAnnotation[0].yaw,pitch:ue.pitch},ue,{yaw:ue.yaw,pitch:this._drawingAnnotation[0].pitch}]}))};this._drawListeners=[firstMove,secMove],this.parent.addEventListener("mousemove",firstMove),this._drawingMoves=1,this._drawListenerClick=ae=>{let ue=!1;if(2!==this._drawingMoves&&ae.marker.id===Ju?0==this._drawingAnnotation.length?(this._drawingAnnotation.push({yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch}),this.parent.removeEventListener("mousemove",firstMove),this._myMarkers.updateMarker({id:Ju,style:{cursor:"pointer"}}),this._myMarkers.updateMarker({id:_h,visible:!0,position:{yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch}}),this._myMarkers.updateMarker({id:ed,visible:!0}),this.parent.addEventListener("mousemove",secMove),this._drawingMoves=2):0===this._drawingMoves?(this.parent.addEventListener("mousemove",firstMove),this._drawingMoves=1):(this._drawingAnnotation[0]={yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch},this.parent.removeEventListener("mousemove",firstMove),this._myMarkers.updateMarker({id:Ju,style:{cursor:"pointer"}}),this._drawingMoves=0,ue=!0):1!==this._drawingMoves&&ae.marker.id===_h&&(1==this._drawingAnnotation.length?(this._drawingAnnotation.push({yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch}),this.parent.removeEventListener("mousemove",secMove),this._myMarkers.updateMarker({id:_h,style:{cursor:"pointer"}}),this._drawingMoves=0,ue=!0):2===this._drawingMoves?(this._drawingAnnotation[1]={yaw:ae.marker.config.position.yaw,pitch:ae.marker.config.position.pitch},this.parent.removeEventListener("mousemove",secMove),this._myMarkers.updateMarker({id:_h,style:{cursor:"pointer"}}),this._drawingMoves=0,ue=!0):(this.parent.addEventListener("mousemove",secMove),this._drawingMoves=2)),ue){var nt,ut;const ae=this.dataHelper.sphericalCoordsToTextureCoords(this._drawingAnnotation[0]),ue=this.dataHelper.sphericalCoordsToTextureCoords(this._drawingAnnotation[1]);let qt=[ae.textureX,ae.textureY,ue.textureX,ue.textureY];const Yt=null===(nt=this.getPictureMetadata())||void 0===nt||null===(ut=nt.panorama)||void 0===ut?void 0:ut.cropData;if(Yt&&(qt[0]-=Yt.croppedX,qt[1]-=Yt.croppedY,qt[2]-=Yt.croppedX,qt[3]-=Yt.croppedY,(qt[0]<0||qt[0]>Yt.croppedWidth||qt[1]<0||qt[1]>Yt.croppedHeight||qt[2]<0||qt[2]>Yt.croppedWidth||qt[3]<0||qt[3]>Yt.croppedHeight)&&(qt=null)),qt[0]>=qt[2]&&qt[1]>=qt[3]){let ae=qt[0],ue=qt[2],nt=qt[1];qt=[ue,qt[3],ae,nt]}const Xt=new CustomEvent("annotation-drawn",{detail:{shape:qt}});this.dispatchEvent(Xt)}},this._myMarkers.addEventListener("select-marker",this._drawListenerClick)}fixDrawAnnotation(){[Ju,_h].forEach((ae=>{try{this._myMarkers.removeMarker(ae)}catch(ue){}})),(this._drawListeners||[]).forEach((ae=>this.parent.removeEventListener("mousemove",ae))),this._myMarkers.removeEventListener("select-marker",this._drawListenerClick),this._myMarkers.updateMarker({id:ed,svgStyle:{stroke:"var(--red)",strokeWidth:"3px",fill:"var(--red-transparent)",cursor:"pointer"}}),this._drawingMoves=0}stopDrawAnnotation(){[Ju,_h,ed].forEach((ae=>{try{this._myMarkers.removeMarker(ae)}catch(ue){}})),(this._drawListeners||[]).forEach((ae=>this.parent.removeEventListener("mousemove",ae))),this._myMarkers.removeEventListener("select-marker",this._drawListenerClick),delete this._drawingMoves,this._drawingAnnotation=null}getPositionFromEvent(ae){const ue=this.container.getBoundingClientRect(),nt=ae.clientX-ue.left,ut=ae.clientY-ue.top,qt=this.renderer.getIntersections({x:nt,y:ut}).find((ae=>ae.object.userData[ys.aH.VIEWER_DATA]));if(qt)return this.dataHelper.vector3ToSphericalCoords(qt.point)}forceRefresh(){var ae;const ue=this._myVTour.getCurrentNode();if(ue&&ue.panorama.baseUrl!==(null===ue||void 0===ue||null===(ae=ue.panorama)||void 0===ae?void 0:ae.origBaseUrl)){const ae=this.getZoomLevel(),nt=this.getPosition();this._myVTour.state.currentNode=null,this._myVTour.setCurrentNode(ue.id,{zoomTo:ae,rotateTo:nt,fadeIn:!1,speed:0,rotation:!1})}ue&&ue.panorama.rows>1&&this.adapter.__refresh()}}},4374:(ae,ue,nt)=>{"use strict";nt.d(ue,{A:()=>Popup});var ut=nt(4542),qt=nt(5995),Yt=nt(8591),Xt=nt(6627);class Popup extends ut.WF{constructor(){super(),this.visible=!1}connectedCallback(){super.connectedCallback(),this.addEventListener("click",(ae=>{ae.target===this&&this.close()})),document.addEventListener("keyup",(ae=>{"Escape"===ae.key&&this.visible&&this.close()}))}attributeChangedCallback(ae,ue,nt){super.attributeChangedCallback(ae,ue,nt),"visible"==ae&&(""!==nt&&!0!==nt||this.dispatchEvent(new Event("open")))}close(){this.visible=!1,this.dispatchEvent(new Event("close"))}render(){return ut.qy`
2202
2206
  <div class="pnx-panel pnx-padded">
2203
2207
  <pnx-button
2204
2208
  class="btn-close"