@panoramax/web-viewer 3.2.3-develop-33cd154c β†’ 3.2.3-develop-d0fdb647

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
@@ -16,6 +16,7 @@ Major changes are introduced by this new version, please [check out the migratio
16
16
  - Develop version of docs are available at [viewer.geovisio.fr/docs](https://viewer.geovisio.fr/docs/), stable version stays at [docs.panoramax.fr](https://docs.panoramax.fr/web-viewer/).
17
17
  - New languages: πŸ‡ΈπŸ‡ͺ Swedish and πŸ‡―πŸ‡΅ Japanese.
18
18
  - Loader features a progress bar, and adopts a new look.
19
+ - Viewer map filter by date input checks if min date is lower than max date, and eventually inverts if necessary.
19
20
 
20
21
  ### Changed
21
22
 
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(Qe,rt){"object"===typeof exports&&"object"===typeof module?module.exports=rt():"function"===typeof define&&define.amd?define("Panoramax",[],rt):"object"===typeof exports?exports.Panoramax=rt():Qe.Panoramax=rt()}(this,(()=>(()=>{var Qe={9039:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Basic});var El=Co(4542),Tl=Co(5254),kl=Co(4964),Ll=Co(8340),Dl=Co(5995),Rl=Co(7343),Ul=Co(8330);Co(3638);class Basic extends El.WF{constructor(){let Qe=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super(),this.users=["geovisio"],this.style=Ll.DEFAULT_TILES,this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=null,this.sequence=null,console.info(`\ud83d\udcf7 Panoramax ${this.getClassName()} - Version ${Ul.rE} (33cd154)\n\n\ud83c\udd98 Issues can be reported at ${Ul.Jk.O}`),this._t=(0,kl.getTranslations)(this.lang),Qe||(this.loader=(0,Dl.createWebComp)("pnx-loader",{_parent:this,"no-label":(0,Rl.isInIframe)()}),this._isInternetFast=null,(0,Rl.isInternetFast)().then((Qe=>this._isInternetFast=Qe)),this.endpoint&&this._setupAPI(this.endpoint))}_setupAPI(Qe){if(this.loader=this.loader||(0,Dl.createWebComp)("pnx-loader",{_parent:this}),this.endpoint)try{this.api=new Tl.A(Qe,{users:this.users,fetch:this.fetchOptions,style:this.style}),this.api.onceReady().then((()=>{let Qe=this.api.getUnavailableFeatures(),rt=this.api.getAvailableFeatures();rt=0===Qe.length?"\u2705 All features available":"\u2705 Available features: "+rt.join(", "),Qe=0===Qe.length?"":"\ud83d\udeab Unavailable features: "+Qe.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 ${rt}\n ${Qe}\n`.trim())})).catch((Qe=>this.loader.dismiss(Qe,this._t.pnx.error_api)))}catch(Co){var rt;null!==(rt=this.loader)&&void 0!==rt&&rt.dismiss?this.loader.dismiss(Co,this._t.pnx.error_api):console.error(Co)}else console.warn("No endpoint is defined")}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise((Qe=>setTimeout(Qe,100))).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(Qe,rt,Co){if(super.attributeChangedCallback(Qe,rt,Co),"endpoint"===Qe&&(this.api&&this.api._endpoint===Co||this._setupAPI(Co)),["picture","sequence"].includes(Qe)){let El,Tl,kl,Ll;"picture"===Qe?(El=this.sequence,kl=this.sequence,Tl=Co,Ll=rt):(El=Co,kl=rt,Tl=this.picture,Ll=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:El,picId:Tl,prevSeqId:kl,prevPicId:Ll}}))}}getClassName(){return"Basic"}select(){let Qe=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,rt=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=rt,this.sequence=Qe}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 El.qy`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}}Basic.properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},fetchOptions:{type:Object,attribute:!1},users:{type:Array,reflect:!0},style:{type:Object},lang:{type:String},endpoint:{type:String}}},153:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>CoverageMap});var El=Co(9039),Tl=Co(5642),kl=Co(8340),Ll=Co(927);Co(7776);class CoverageMap extends El.A{constructor(){super(),this._mapContainer=document.createElement("div"),this.onceAPIReady().then((()=>{this.loader.setAttribute("value",30),this._initMap()})),this.addEventListener("select",this._onSelect.bind(this))}getClassName(){return"CoverageMap"}onceReady(){return this.map&&this.map.waitForEnoughMapLoaded?this.map.waitForEnoughMapLoaded():new Promise((Qe=>setTimeout(Qe,100))).then(this.onceReady.bind(this))}render(){return[this.loader,this._mapContainer]}_initMap(){class MyMap extends Tl.A{_getLayerStyleProperties(Qe){return"pictures_symbols"===Qe?{layout:{visibility:"none"}}:super._getLayerStyleProperties(Qe)}}this.map=new MyMap(this,this._mapContainer,{hash:!0}),this.map.addControl(new Ll.NavigationControl({showCompass:!1})),this.loader.setAttribute("value",70),this.map.waitForEnoughMapLoaded().then((()=>{this.map.reloadLayersStyles(),this.loader.dismiss()})),this.map.on("picture-click",(Qe=>this.select(Qe.seqId,Qe.picId))),this.map.on("sequence-click",(Qe=>this.select(Qe.seqId)))}_onSelect(Qe){if(Qe.detail.picId||Qe.detail.seqId){const rt=Qe.detail.picId?"pictures":"sequences",Co=this.map.queryRenderedFeatures({layers:[...this.map._userLayers].map((Qe=>(0,kl.getUserLayerId)(Qe,rt))),filter:["==",["get","id"],Qe.detail.picId||Qe.detail.seqId]});Co.length>=0&&null!=Co[0]&&this.map._attachPreviewToPictures({features:Co},rt)}}}customElements.define("pnx-coverage-map",CoverageMap)},1752:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Editor});Co(7365);var El=Co(9039),Tl=Co(5642),kl=Co(9048),Ll=(Co(7534),Co(6810),Co(508)),Dl=Co(8340),Rl=Co(1545),Ul=(Co(4542),Co(5995));const Gl="sequence-headings";class Editor extends El.A{constructor(){super(),this.raster=null,this.background="streets",this.users=[],this._psvContainer=document.createElement("div"),this._mapContainer=document.createElement("div"),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()}))}getClassName(){return"Editor"}onceReady(){var Qe,rt;return this.map&&this.psv&&null!==(Qe=(rt=this.map).loaded)&&void 0!==Qe&&Qe.call(rt)?Promise.resolve():new Promise((Qe=>setTimeout(Qe,100))).then(this.onceReady.bind(this))}render(){return[this.loader,this._psvContainer,this._mapContainer]}_initPSV(){try{this.psv=new kl.Ay(this,this._psvContainer),this.psv._myVTour.datasource.nodeResolver=this._getNode.bind(this)}catch(Qe){let rt=Rl.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(Qe,rt)}}_initMap(){try{this.map=new Tl.A(this,this._mapContainer,{raster:this.raster,background:this.background,supplementaryStyle:this._createMapStyle(),zoom:15}),(0,Dl.linkMapAndPhoto)(this),this.loader.setAttribute("value",50),this._loadSequence(),this.map.once("load",(()=>{this.map.hasTwoBackgrounds()&&this._addMapBackgroundWidget(),this._bindPicturesEvents()}));const Qe=this.map._picMarker.setRotation.bind(this.map._picMarker);this.map._picMarker.setRotation=rt=>(rt=void 0===this._lastRelHeading?rt:rt+this._lastRelHeading-this.psv.getPictureRelativeHeading(),Qe(rt))}catch(Qe){this.loader.dismiss(Qe,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:{...Dl.VECTOR_STYLES.SEQUENCES.layout},paint:{...Dl.VECTOR_STYLES.SEQUENCES.paint}},{id:"geovisio_editor_pictures",type:"circle",source:"geovisio_editor_sequences",layout:{...Dl.VECTOR_STYLES.PICTURES.layout},paint:{...Dl.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((Qe=>{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=Qe.features,this.map.getSource("geovisio_editor_sequences").setData({type:"FeatureCollection",features:[{type:"Feature",properties:{id:this.sequence},geometry:{type:"LineString",coordinates:Qe.features.map((Qe=>Qe.geometry.coordinates))}},...Qe.features.map((Qe=>(Qe.properties.id=Qe.id,Qe.properties.sequences=[this.sequence],Qe)))]}),this.picture){const rt=Qe.features.find((Qe=>Qe.id===this.picture));rt?(this.select(this.sequence,this.picture,!0),this.map.jumpTo({center:rt.geometry.coordinates,zoom:18})):console.log("Picture with ID",rt,"was not found")}else{const rt=[...Qe.features[0].geometry.coordinates,...Qe.features[0].geometry.coordinates];for(let Co=1;Co<Qe.features.length;Co++){const El=Qe.features[Co].geometry.coordinates;El[0]<rt[0]&&(rt[0]=El[0]),El[1]<rt[1]&&(rt[1]=El[1]),El[0]>rt[2]&&(rt[2]=El[0]),El[1]>rt[3]&&(rt[3]=El[1])}this.map.fitBounds(rt,{animate:!1})}})).catch((Qe=>this.loader.dismiss(Qe,this._t.pnx.error_api)))}_getNode(Qe){const rt=this._sequenceData.find((rt=>rt.properties.id===Qe)),Co=rt?(0,Ll.apiFeatureToPSVNode)(rt,this._t,this._isInternetFast):null;return Co&&delete Co.links,Co}_addMapBackgroundWidget(){const Qe=(0,Ul.createWebComp)("pnx-map-background",{_parent:this,size:"sm"});this._mapContainer.appendChild(Qe)}previewSequenceHeadingChange(Qe){const rt=void 0!==this.map.getLayer(Gl);if(this.map._picMarkerPreview.remove(),void 0===Qe)return delete this._lastRelHeading,rt&&this.map.setLayoutProperty(Gl,"visibility","none"),void(this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x));this._lastRelHeading=Qe,rt||this.map.addLayer({id:Gl,type:"symbol",source:"geovisio_editor_sequences",layout:{"icon-image":"pnx-marker","icon-overlap":"always","icon-size":.8}});const Co=-this.psv.getPictureRelativeHeading();this.map.setLayoutProperty(Gl,"visibility","visible"),this.map.setLayoutProperty(Gl,"icon-rotate",["+",["get","view:azimuth"],Co,Qe]);const El=[["==",["geometry-type"],"Point"]];this.picture&&El.push(["!=",["get","id"],this.picture]),this.map.setFilter(Gl,["all",...El]),this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x)}_onSelect(){void 0!==this._lastRelHeading&&this.previewSequenceHeadingChange(this._lastRelHeading)}}Editor.properties={raster:{type:Object},background:{type:String},...El.A.properties},customElements.define("pnx-editor",Editor)},8743:(Qe,rt,Co)=>{"use strict";Co.d(rt,{$:()=>Kl,A:()=>Viewer});Co(9616);var El=Co(1545),Tl=Co(4451),kl=Co(8340),Ll=Co(9039),Dl=Co(9048),Rl=Co(2771),Ul=Co(7343),Gl=Co(5995),Zl=Co(9683),Wl=Co(2e3),ql=Co(9438),Ql=Co(2118);const Kl=20,Jl=Math.PI/6,tc=100;class Viewer extends Ll.A{constructor(){super(),this.map=!0,this.psv={},this["url-parameters"]=this.getAttribute("url-parameters")||!0,this.geocoder=this.getAttribute("geocoder")||"nominatim",this.widgets=this.getAttribute("widgets")||"true",this._prevSequence=null,this.grid=(0,Gl.createWebComp)("pnx-cornered-grid"),this.mini=(0,Gl.createWebComp)("pnx-mini",{slot:"bottom-left",_parent:this,onexpand:this._onMiniExpand.bind(this),collapsed:!!(0,Ul.isNullId)(this.picture)||void 0}),this.mini.addEventListener("expand",this._toggleFocus.bind(this)),this.grid.appendChild(this.mini),this.psvContainer=document.createElement("div"),this.mapContainer=document.createElement("div"),this.popup=(0,Gl.createWebComp)("pnx-popup",{_parent:this,onclose:this._onPopupClose.bind(this)}),this["url-parameters"]&&"false"!==this["url-parameters"]&&(this.urlHandler=new Tl.A(this),this.onceReady().then((()=>{this.urlHandler.listenToChanges(),this.urlHandler._onParentChange()})))}connectedCallback(){super.connectedCallback(),this._moveChildToGrid(),this.onceAPIReady().then((async()=>{var Qe,rt;this.loader.setAttribute("value",30),this._initParams=new Ql.Ay(Ql.Ay.GetComponentProperties(Viewer,this),Object.assign({},null===(Qe=this.urlHandler)||void 0===Qe?void 0:Qe.currentURLParams(),null===(rt=this.urlHandler)||void 0===rt?void 0:rt.currentURLParams(!0)));const Co=this._initParams.getParentInit(),El=this._initParams.getParentPostInit();if(this._initPSV(),Co.map?await this._initMap():(this.grid.removeChild(this.mini),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer)),"false"!==Co.widgets){var Tl,kl;if(this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-zoom",{slot:this.isHeightSmall()?"top-left":"bottom-right",class:this.isHeightSmall()?"pnx-only-map pnx-print-hidden":"pnx-print-hidden",_parent:this})),this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-share",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.map)this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-geosearch",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,class:"pnx-only-map pnx-print-hidden",geocoder:El.geocoder})),this.grid.appendChild((0,Gl.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===(Tl=this.map)||void 0===Tl||null===(kl=Tl._hasQualityScore)||void 0===kl?void 0:kl.call(Tl))||!1,class:"pnx-only-map pnx-print-hidden"})),this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-maplayers",{slot:"top-right",_parent:this,class:"pnx-only-map pnx-print-hidden"}));this.legend=(0,Gl.createWebComp)("pnx-widget-legend",{slot:this.isWidthSmall()?"top":"top-left",_parent:this,focus:El.focus}),this.grid.appendChild(this.legend),this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-player",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden"}))}(0,Ql.iz)(this,El),this._handleKeyboardManagement(),El.picture?this.psv.addEventListener("picture-loaded",(()=>this.loader.dismiss()),{once:!0}):this.loader.dismiss()}))}getClassName(){return"Viewer"}onceReady(){return Promise.all([this.oncePSVReady(),this.onceMapReady()]).then((()=>this._initParams.getParentPostInit().picture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve()))}attributeChangedCallback(Qe,rt,Co){super.attributeChangedCallback(Qe,rt,Co),"picture"===Qe&&(0,Ul.isNullId)(rt)&&!(0,Ul.isNullId)(Co)&&this.mini.removeAttribute("collapsed"),"picture"===Qe&&(0,Ul.isNullId)(Co)&&this.map&&this.isMapWide()&&this.mini.classList.add("pnx-hidden"),"focus"===Qe&&this._setFocus(Co)}render(){return[this.loader,this.grid,this.popup,this.slot]}oncePSVReady(){let Qe;return new Promise((rt=>{Qe=setInterval((()=>{"object"===typeof this.psv&&(this.psv.container?(clearInterval(Qe),rt()):this.psv.addEventListener&&this.psv.addEventListener("ready",(()=>{clearInterval(Qe),rt()}),{once:!0}))}),250)}))}onceMapReady(){if(!this.map)return Promise.resolve();let Qe;return new Promise((rt=>{Qe=setInterval((()=>{var Co,El;"object"===typeof this.map&&(null!==(Co=(El=this.map).loaded)&&void 0!==Co&&Co.call(El)?(clearInterval(Qe),rt()):this.map.once&&this.map.once("render",(()=>{clearInterval(Qe),rt()})))}),250)}))}onceFirstPicLoaded(){return this.oncePSVReady().then((()=>new Promise((Qe=>{this.psv.addEventListener("picture-loaded",Qe,{once:!0})}))))}_initPSV(){try{this.psv=new Dl.Ay(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...El.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:()=>this._toggleFocus(),7:()=>this._toggleFocus(),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,Ql.Vy)(this.psv,this._initParams.getPSVPostInit())}))}catch(Qe){let rt=El.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(Qe,rt)}}async _initMap(){await new Promise((Qe=>{this.map=new Rl.A(this,this.mapContainer,this._initParams.getMapInit()),this.map.once("users-changed",(()=>{this.loader.setAttribute("value",75),Qe()}))})),(0,Ql.mK)(this.map,this._initParams.getMapPostInit()),(0,kl.initMapKeyboardHandler)(this),(0,kl.linkMapAndPhoto)(this)}_handleKeyboardManagement(){const keytomap=()=>{this.psv.stopKeyboardControl(),this.map.keyboard.enable()},keytopsv=()=>{var Qe,rt;this.psv.startKeyboardControl(),null===(Qe=this.map)||void 0===Qe||null===(rt=Qe.keyboard)||void 0===rt||rt.disable()},keytonone=()=>{var Qe,rt;this.psv.stopKeyboardControl(),null===(Qe=this.map)||void 0===Qe||null===(rt=Qe.keyboard)||void 0===rt||rt.disable()},keytofocused=()=>{this.map&&this.isMapWide()?keytomap():keytopsv()};this.addEventListener("focus-changed",(Qe=>{"map"===Qe.detail.focus?keytomap():keytopsv()})),this.popup.addEventListener("open",(()=>keytonone())),this.popup.addEventListener("close",(()=>keytofocused()));for(let Qe of this.grid.childNodes)"bg"!==Qe.getAttribute("slot")&&(Qe.addEventListener("focusin",(()=>keytonone())),Qe.addEventListener("focusout",(()=>keytofocused())))}_psvShouldGoFast(){return this.psv._sequencePlaying&&this.psv.getTransitionDuration()<1e3||this.map&&this.isMapWide()}_moveChildToGrid(){for(let Co=0;Co<this.childNodes.length;Co++){var Qe;let El=this.childNodes[Co];var rt;if(null!==(Qe=El.getAttribute)&&void 0!==Qe&&Qe.call(El,"slot"))null!==(rt=El.tagName)&&void 0!==rt&&rt.toLowerCase().startsWith("pnx-")&&(El._parent=this,El._t=this._t),this.grid.appendChild(El)}}setPopup(Qe){let rt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Qe?this.popup.setAttribute("visible",""):this.popup.removeAttribute("visible"),this.popup.innerHTML="","string"===typeof rt?this.popup.innerHTML=rt:Array.isArray(rt)&&rt.forEach((Qe=>this.popup.appendChild(Qe)))}_onPopupClose(){this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:this.map&&this.isMapWide()?"map":"pic"}}))}_showQualityScoreDoc(){this.setPopup(!0,[(0,Gl.createWebComp)("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[(0,Gl.createWebComp)("pnx-report-form",{_parent:this})]),this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:"meta"}}))}_showPictureMetadata(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[(0,Gl.createWebComp)("pnx-picture-metadata",{_parent:this})]),this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:"meta"}}))}moveCenter(){const Qe=this.psv.getPictureMetadata();Qe&&(this.map&&this.isMapWide()?this.map.flyTo({center:Qe.gps,zoom:20}):this._psvAnimate({speed:Dl.LM,yaw:0,pitch:0,zoom:Dl.cS}))}moveLeft(){this._moveToDirection("left")}moveRight(){this._moveToDirection("right")}moveUp(){this._moveToDirection("up")}moveDown(){this._moveToDirection("down")}_moveToDirection(Qe){if(this.map&&this.isMapWide()){let rt;switch(Qe){case"up":rt=[0,-100];break;case"left":rt=[-100,0];break;case"down":rt=[0,tc];break;case"right":rt=[tc,0]}this.map.panBy(rt)}else{let rt=this.psv.getPosition();switch(Qe){case"up":rt.pitch+=Jl;break;case"left":rt.yaw-=Jl;break;case"down":rt.pitch-=Jl;break;case"right":rt.yaw+=Jl}this._psvAnimate({speed:Dl.LM,...rt})}}_psvAnimate(Qe){this._lastPsvAnim&&this._lastPsvAnim.cancel(),this._lastPsvAnim=this.psv.animate(Qe)}isMapWide(){if(!this.map)throw new Error("Map is not enabled");return this.mapContainer.parentNode==this.grid}_setFocus(Qe){var rt,Co,El,Tl;let kl=arguments.length>1&&void 0!==arguments[1]&&arguments[1],Ll=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("map"===Qe&&!this.map)throw new Error("Map is not enabled");if(!["map","pic"].includes(Qe))throw new Error("Invalid focus value (should be pic or map)");if(this.focus=Qe,(Ll||("map"!==Qe||!this.map||!this.isMapWide())&&("pic"!==Qe||this.map&&this.isMapWide()))&&("map"===Qe?(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,Gl.fa)(Zl.pt),(0,Ul.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.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.mini.classList.remove("pnx-hidden"),this.mini.appendChild(this.mapContainer),this.mini.icon=(0,Gl.fa)(Wl.e5),this.psvContainer.focus()),null===this||void 0===this||null===(rt=this.map)||void 0===rt||null===(Co=rt.resize)||void 0===Co||Co.call(rt),this.psv.autoSize(),this.psv.forceRefresh(),null===(El=this.legend)||void 0===El||null===(Tl=El.setAttribute)||void 0===Tl||Tl.call(El,"focus",this.focus),!kl)){const rt=new CustomEvent("focus-changed",{detail:{focus:Qe}});this.dispatchEvent(rt)}}_toggleFocus(){if(!this.map)throw new Error("Map is not enabled");this._setFocus(this.isMapWide()?"pic":"map")}_onMiniExpand(){this.map.resize(),this.psv.autoSize()}_onMapFiltersChange(){var Qe;const rt=(0,ql.qi)("#pnx-map-filters-menu"),Co=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-date-from"),El=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-date-end"),Tl=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-type-flat"),kl=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-type-360"),Ll=(0,ql.qi)("#pnx-map-theme");let Dl="";null===kl||void 0===kl||!kl.checked||null!==Tl&&void 0!==Tl&&Tl.checked||(Dl="equirectangular"),null!==kl&&void 0!==kl&&kl.checked||null===Tl||void 0===Tl||!Tl.checked||(Dl="flat");let Rl=[];if(null!==(Qe=this.map)&&void 0!==Qe&&Qe._hasQualityScore()){const Qe=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-qualityscore");Rl=((null===Qe||void 0===Qe?void 0:Qe.grade)||"").split(",").map((Qe=>parseInt(Qe))).filter((Qe=>!isNaN(Qe))),5==Rl.length&&(Rl=[])}const Ul={minDate:null===Co||void 0===Co?void 0:Co.value,maxDate:null===El||void 0===El?void 0:El.value,pic_type:Dl,theme:null===Ll||void 0===Ll?void 0:Ll.value,qualityscore:Rl};this.map.setFilters(Ul)}}Viewer.properties={map:{type:Object},psv:{type:Object},"url-parameters":{type:String},focus:{type:String,reflect:!0},geocoder:{type:String},widgets:{type:String},...Ll.A.properties},customElements.define("pnx-viewer",Viewer)},3921:(Qe,rt,Co)=>{"use strict";Co.r(rt),Co.d(rt,{Basic:()=>El.A,CoverageMap:()=>Tl.A,Editor:()=>kl.A,Viewer:()=>Ll.A});var El=Co(9039),Tl=Co(153),kl=Co(1752),Ll=Co(8743)},9341:(Qe,rt,Co)=>{"use strict";Co.r(rt),Co.d(rt,{core:()=>El,layout:()=>Tl,menus:()=>kl,ui:()=>Ll});var El=Co(3921),Tl=Co(456),kl=Co(8794),Ll=Co(9472)},7422:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>CorneredGrid});var El=Co(4542);class CorneredGrid extends El.WF{render(){return El.qy`
12
+ !function(Qe,rt){"object"===typeof exports&&"object"===typeof module?module.exports=rt():"function"===typeof define&&define.amd?define("Panoramax",[],rt):"object"===typeof exports?exports.Panoramax=rt():Qe.Panoramax=rt()}(this,(()=>(()=>{var Qe={9039:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Basic});var El=Co(4542),Tl=Co(5254),kl=Co(4964),Ll=Co(8340),Dl=Co(5995),Rl=Co(7343),Ul=Co(8330);Co(3638);class Basic extends El.WF{constructor(){let Qe=arguments.length>0&&void 0!==arguments[0]&&arguments[0];super(),this.users=["geovisio"],this.style=Ll.DEFAULT_TILES,this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=null,this.sequence=null,console.info(`\ud83d\udcf7 Panoramax ${this.getClassName()} - Version ${Ul.rE} (d0fdb64)\n\n\ud83c\udd98 Issues can be reported at ${Ul.Jk.O}`),this._t=(0,kl.getTranslations)(this.lang),Qe||(this.loader=(0,Dl.createWebComp)("pnx-loader",{_parent:this,"no-label":(0,Rl.isInIframe)()}),this._isInternetFast=null,(0,Rl.isInternetFast)().then((Qe=>this._isInternetFast=Qe)),this.endpoint&&this._setupAPI(this.endpoint))}_setupAPI(Qe){if(this.loader=this.loader||(0,Dl.createWebComp)("pnx-loader",{_parent:this}),this.endpoint)try{this.api=new Tl.A(Qe,{users:this.users,fetch:this.fetchOptions,style:this.style}),this.api.onceReady().then((()=>{let Qe=this.api.getUnavailableFeatures(),rt=this.api.getAvailableFeatures();rt=0===Qe.length?"\u2705 All features available":"\u2705 Available features: "+rt.join(", "),Qe=0===Qe.length?"":"\ud83d\udeab Unavailable features: "+Qe.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 ${rt}\n ${Qe}\n`.trim())})).catch((Qe=>this.loader.dismiss(Qe,this._t.pnx.error_api)))}catch(Co){var rt;null!==(rt=this.loader)&&void 0!==rt&&rt.dismiss?this.loader.dismiss(Co,this._t.pnx.error_api):console.error(Co)}else console.warn("No endpoint is defined")}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise((Qe=>setTimeout(Qe,100))).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(Qe,rt,Co){if(super.attributeChangedCallback(Qe,rt,Co),"endpoint"===Qe&&(this.api&&this.api._endpoint===Co||this._setupAPI(Co)),["picture","sequence"].includes(Qe)){let El,Tl,kl,Ll;"picture"===Qe?(El=this.sequence,kl=this.sequence,Tl=Co,Ll=rt):(El=Co,kl=rt,Tl=this.picture,Ll=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:El,picId:Tl,prevSeqId:kl,prevPicId:Ll}}))}}getClassName(){return"Basic"}select(){let Qe=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,rt=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=rt,this.sequence=Qe}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 El.qy`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}}Basic.properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},fetchOptions:{type:Object,attribute:!1},users:{type:Array,reflect:!0},style:{type:Object},lang:{type:String},endpoint:{type:String}}},153:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>CoverageMap});var El=Co(9039),Tl=Co(5642),kl=Co(8340),Ll=Co(927);Co(7776);class CoverageMap extends El.A{constructor(){super(),this._mapContainer=document.createElement("div"),this.onceAPIReady().then((()=>{this.loader.setAttribute("value",30),this._initMap()})),this.addEventListener("select",this._onSelect.bind(this))}getClassName(){return"CoverageMap"}onceReady(){return this.map&&this.map.waitForEnoughMapLoaded?this.map.waitForEnoughMapLoaded():new Promise((Qe=>setTimeout(Qe,100))).then(this.onceReady.bind(this))}render(){return[this.loader,this._mapContainer]}_initMap(){class MyMap extends Tl.A{_getLayerStyleProperties(Qe){return"pictures_symbols"===Qe?{layout:{visibility:"none"}}:super._getLayerStyleProperties(Qe)}}this.map=new MyMap(this,this._mapContainer,{hash:!0}),this.map.addControl(new Ll.NavigationControl({showCompass:!1})),this.loader.setAttribute("value",70),this.map.waitForEnoughMapLoaded().then((()=>{this.map.reloadLayersStyles(),this.loader.dismiss()})),this.map.on("picture-click",(Qe=>this.select(Qe.seqId,Qe.picId))),this.map.on("sequence-click",(Qe=>this.select(Qe.seqId)))}_onSelect(Qe){if(Qe.detail.picId||Qe.detail.seqId){const rt=Qe.detail.picId?"pictures":"sequences",Co=this.map.queryRenderedFeatures({layers:[...this.map._userLayers].map((Qe=>(0,kl.getUserLayerId)(Qe,rt))),filter:["==",["get","id"],Qe.detail.picId||Qe.detail.seqId]});Co.length>=0&&null!=Co[0]&&this.map._attachPreviewToPictures({features:Co},rt)}}}customElements.define("pnx-coverage-map",CoverageMap)},1752:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Editor});Co(7365);var El=Co(9039),Tl=Co(5642),kl=Co(9048),Ll=(Co(7534),Co(6810),Co(508)),Dl=Co(8340),Rl=Co(1545),Ul=(Co(4542),Co(5995));const Gl="sequence-headings";class Editor extends El.A{constructor(){super(),this.raster=null,this.background="streets",this.users=[],this._psvContainer=document.createElement("div"),this._mapContainer=document.createElement("div"),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()}))}getClassName(){return"Editor"}onceReady(){var Qe,rt;return this.map&&this.psv&&null!==(Qe=(rt=this.map).loaded)&&void 0!==Qe&&Qe.call(rt)?Promise.resolve():new Promise((Qe=>setTimeout(Qe,100))).then(this.onceReady.bind(this))}render(){return[this.loader,this._psvContainer,this._mapContainer]}_initPSV(){try{this.psv=new kl.Ay(this,this._psvContainer),this.psv._myVTour.datasource.nodeResolver=this._getNode.bind(this)}catch(Qe){let rt=Rl.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(Qe,rt)}}_initMap(){try{this.map=new Tl.A(this,this._mapContainer,{raster:this.raster,background:this.background,supplementaryStyle:this._createMapStyle(),zoom:15}),(0,Dl.linkMapAndPhoto)(this),this.loader.setAttribute("value",50),this._loadSequence(),this.map.once("load",(()=>{this.map.hasTwoBackgrounds()&&this._addMapBackgroundWidget(),this._bindPicturesEvents()}));const Qe=this.map._picMarker.setRotation.bind(this.map._picMarker);this.map._picMarker.setRotation=rt=>(rt=void 0===this._lastRelHeading?rt:rt+this._lastRelHeading-this.psv.getPictureRelativeHeading(),Qe(rt))}catch(Qe){this.loader.dismiss(Qe,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:{...Dl.VECTOR_STYLES.SEQUENCES.layout},paint:{...Dl.VECTOR_STYLES.SEQUENCES.paint}},{id:"geovisio_editor_pictures",type:"circle",source:"geovisio_editor_sequences",layout:{...Dl.VECTOR_STYLES.PICTURES.layout},paint:{...Dl.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((Qe=>{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=Qe.features,this.map.getSource("geovisio_editor_sequences").setData({type:"FeatureCollection",features:[{type:"Feature",properties:{id:this.sequence},geometry:{type:"LineString",coordinates:Qe.features.map((Qe=>Qe.geometry.coordinates))}},...Qe.features.map((Qe=>(Qe.properties.id=Qe.id,Qe.properties.sequences=[this.sequence],Qe)))]}),this.picture){const rt=Qe.features.find((Qe=>Qe.id===this.picture));rt?(this.select(this.sequence,this.picture,!0),this.map.jumpTo({center:rt.geometry.coordinates,zoom:18})):console.log("Picture with ID",rt,"was not found")}else{const rt=[...Qe.features[0].geometry.coordinates,...Qe.features[0].geometry.coordinates];for(let Co=1;Co<Qe.features.length;Co++){const El=Qe.features[Co].geometry.coordinates;El[0]<rt[0]&&(rt[0]=El[0]),El[1]<rt[1]&&(rt[1]=El[1]),El[0]>rt[2]&&(rt[2]=El[0]),El[1]>rt[3]&&(rt[3]=El[1])}this.map.fitBounds(rt,{animate:!1})}})).catch((Qe=>this.loader.dismiss(Qe,this._t.pnx.error_api)))}_getNode(Qe){const rt=this._sequenceData.find((rt=>rt.properties.id===Qe)),Co=rt?(0,Ll.apiFeatureToPSVNode)(rt,this._t,this._isInternetFast):null;return Co&&delete Co.links,Co}_addMapBackgroundWidget(){const Qe=(0,Ul.createWebComp)("pnx-map-background",{_parent:this,size:"sm"});this._mapContainer.appendChild(Qe)}previewSequenceHeadingChange(Qe){const rt=void 0!==this.map.getLayer(Gl);if(this.map._picMarkerPreview.remove(),void 0===Qe)return delete this._lastRelHeading,rt&&this.map.setLayoutProperty(Gl,"visibility","none"),void(this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x));this._lastRelHeading=Qe,rt||this.map.addLayer({id:Gl,type:"symbol",source:"geovisio_editor_sequences",layout:{"icon-image":"pnx-marker","icon-overlap":"always","icon-size":.8}});const Co=-this.psv.getPictureRelativeHeading();this.map.setLayoutProperty(Gl,"visibility","visible"),this.map.setLayoutProperty(Gl,"icon-rotate",["+",["get","view:azimuth"],Co,Qe]);const El=[["==",["geometry-type"],"Point"]];this.picture&&El.push(["!=",["get","id"],this.picture]),this.map.setFilter(Gl,["all",...El]),this.picture&&this.map._picMarker.setRotation(this.psv.getXY().x)}_onSelect(){void 0!==this._lastRelHeading&&this.previewSequenceHeadingChange(this._lastRelHeading)}}Editor.properties={raster:{type:Object},background:{type:String},...El.A.properties},customElements.define("pnx-editor",Editor)},8743:(Qe,rt,Co)=>{"use strict";Co.d(rt,{$:()=>Kl,A:()=>Viewer});Co(9616);var El=Co(1545),Tl=Co(4451),kl=Co(8340),Ll=Co(9039),Dl=Co(9048),Rl=Co(2771),Ul=Co(7343),Gl=Co(5995),Zl=Co(9683),Wl=Co(2e3),ql=Co(9438),Ql=Co(2118);const Kl=20,Jl=Math.PI/6,tc=100;class Viewer extends Ll.A{constructor(){super(),this.map=!0,this.psv={},this["url-parameters"]=this.getAttribute("url-parameters")||!0,this.geocoder=this.getAttribute("geocoder")||"nominatim",this.widgets=this.getAttribute("widgets")||"true",this._prevSequence=null,this.grid=(0,Gl.createWebComp)("pnx-cornered-grid"),this.mini=(0,Gl.createWebComp)("pnx-mini",{slot:"bottom-left",_parent:this,onexpand:this._onMiniExpand.bind(this),collapsed:!!(0,Ul.isNullId)(this.picture)||void 0}),this.mini.addEventListener("expand",this._toggleFocus.bind(this)),this.grid.appendChild(this.mini),this.psvContainer=document.createElement("div"),this.mapContainer=document.createElement("div"),this.popup=(0,Gl.createWebComp)("pnx-popup",{_parent:this,onclose:this._onPopupClose.bind(this)}),this["url-parameters"]&&"false"!==this["url-parameters"]&&(this.urlHandler=new Tl.A(this),this.onceReady().then((()=>{this.urlHandler.listenToChanges(),this.urlHandler._onParentChange()})))}connectedCallback(){super.connectedCallback(),this._moveChildToGrid(),this.onceAPIReady().then((async()=>{var Qe,rt;this.loader.setAttribute("value",30),this._initParams=new Ql.Ay(Ql.Ay.GetComponentProperties(Viewer,this),Object.assign({},null===(Qe=this.urlHandler)||void 0===Qe?void 0:Qe.currentURLParams(),null===(rt=this.urlHandler)||void 0===rt?void 0:rt.currentURLParams(!0)));const Co=this._initParams.getParentInit(),El=this._initParams.getParentPostInit();if(this._initPSV(),Co.map?await this._initMap():(this.grid.removeChild(this.mini),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer)),"false"!==Co.widgets){var Tl,kl;if(this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-zoom",{slot:this.isHeightSmall()?"top-left":"bottom-right",class:this.isHeightSmall()?"pnx-only-map pnx-print-hidden":"pnx-print-hidden",_parent:this})),this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-share",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.map)this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-geosearch",{slot:this.isWidthSmall()?"top-right":"top-left",_parent:this,class:"pnx-only-map pnx-print-hidden",geocoder:El.geocoder})),this.grid.appendChild((0,Gl.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===(Tl=this.map)||void 0===Tl||null===(kl=Tl._hasQualityScore)||void 0===kl?void 0:kl.call(Tl))||!1,class:"pnx-only-map pnx-print-hidden"})),this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-maplayers",{slot:"top-right",_parent:this,class:"pnx-only-map pnx-print-hidden"}));this.legend=(0,Gl.createWebComp)("pnx-widget-legend",{slot:this.isWidthSmall()?"top":"top-left",_parent:this,focus:El.focus}),this.grid.appendChild(this.legend),this.grid.appendChild((0,Gl.createWebComp)("pnx-widget-player",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden"}))}(0,Ql.iz)(this,El),this._handleKeyboardManagement(),El.picture?this.psv.addEventListener("picture-loaded",(()=>this.loader.dismiss()),{once:!0}):this.loader.dismiss()}))}getClassName(){return"Viewer"}onceReady(){return Promise.all([this.oncePSVReady(),this.onceMapReady()]).then((()=>this._initParams.getParentPostInit().picture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve()))}attributeChangedCallback(Qe,rt,Co){super.attributeChangedCallback(Qe,rt,Co),"picture"===Qe&&(0,Ul.isNullId)(rt)&&!(0,Ul.isNullId)(Co)&&this.mini.removeAttribute("collapsed"),"picture"===Qe&&(0,Ul.isNullId)(Co)&&this.map&&this.isMapWide()&&this.mini.classList.add("pnx-hidden"),"focus"===Qe&&this._setFocus(Co)}render(){return[this.loader,this.grid,this.popup,this.slot]}oncePSVReady(){let Qe;return new Promise((rt=>{Qe=setInterval((()=>{"object"===typeof this.psv&&(this.psv.container?(clearInterval(Qe),rt()):this.psv.addEventListener&&this.psv.addEventListener("ready",(()=>{clearInterval(Qe),rt()}),{once:!0}))}),250)}))}onceMapReady(){if(!this.map)return Promise.resolve();let Qe;return new Promise((rt=>{Qe=setInterval((()=>{var Co,El;"object"===typeof this.map&&(null!==(Co=(El=this.map).loaded)&&void 0!==Co&&Co.call(El)?(clearInterval(Qe),rt()):this.map.once&&this.map.once("render",(()=>{clearInterval(Qe),rt()})))}),250)}))}onceFirstPicLoaded(){return this.oncePSVReady().then((()=>new Promise((Qe=>{this.psv.addEventListener("picture-loaded",Qe,{once:!0})}))))}_initPSV(){try{this.psv=new Dl.Ay(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...El.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:()=>this._toggleFocus(),7:()=>this._toggleFocus(),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,Ql.Vy)(this.psv,this._initParams.getPSVPostInit())}))}catch(Qe){let rt=El.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(Qe,rt)}}async _initMap(){await new Promise((Qe=>{this.map=new Rl.A(this,this.mapContainer,this._initParams.getMapInit()),this.map.once("users-changed",(()=>{this.loader.setAttribute("value",75),Qe()}))})),(0,Ql.mK)(this.map,this._initParams.getMapPostInit()),(0,kl.initMapKeyboardHandler)(this),(0,kl.linkMapAndPhoto)(this)}_handleKeyboardManagement(){const keytomap=()=>{this.psv.stopKeyboardControl(),this.map.keyboard.enable()},keytopsv=()=>{var Qe,rt;this.psv.startKeyboardControl(),null===(Qe=this.map)||void 0===Qe||null===(rt=Qe.keyboard)||void 0===rt||rt.disable()},keytonone=()=>{var Qe,rt;this.psv.stopKeyboardControl(),null===(Qe=this.map)||void 0===Qe||null===(rt=Qe.keyboard)||void 0===rt||rt.disable()},keytofocused=()=>{this.map&&this.isMapWide()?keytomap():keytopsv()};this.addEventListener("focus-changed",(Qe=>{"map"===Qe.detail.focus?keytomap():keytopsv()})),this.popup.addEventListener("open",(()=>keytonone())),this.popup.addEventListener("close",(()=>keytofocused()));for(let Qe of this.grid.childNodes)"bg"!==Qe.getAttribute("slot")&&(Qe.addEventListener("focusin",(()=>keytonone())),Qe.addEventListener("focusout",(()=>keytofocused())))}_psvShouldGoFast(){return this.psv._sequencePlaying&&this.psv.getTransitionDuration()<1e3||this.map&&this.isMapWide()}_moveChildToGrid(){for(let Co=0;Co<this.childNodes.length;Co++){var Qe;let El=this.childNodes[Co];var rt;if(null!==(Qe=El.getAttribute)&&void 0!==Qe&&Qe.call(El,"slot"))null!==(rt=El.tagName)&&void 0!==rt&&rt.toLowerCase().startsWith("pnx-")&&(El._parent=this,El._t=this._t),this.grid.appendChild(El)}}setPopup(Qe){let rt=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Qe?this.popup.setAttribute("visible",""):this.popup.removeAttribute("visible"),this.popup.innerHTML="","string"===typeof rt?this.popup.innerHTML=rt:Array.isArray(rt)&&rt.forEach((Qe=>this.popup.appendChild(Qe)))}_onPopupClose(){this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:this.map&&this.isMapWide()?"map":"pic"}}))}_showQualityScoreDoc(){this.setPopup(!0,[(0,Gl.createWebComp)("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[(0,Gl.createWebComp)("pnx-report-form",{_parent:this})]),this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:"meta"}}))}_showPictureMetadata(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[(0,Gl.createWebComp)("pnx-picture-metadata",{_parent:this})]),this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:"meta"}}))}moveCenter(){const Qe=this.psv.getPictureMetadata();Qe&&(this.map&&this.isMapWide()?this.map.flyTo({center:Qe.gps,zoom:20}):this._psvAnimate({speed:Dl.LM,yaw:0,pitch:0,zoom:Dl.cS}))}moveLeft(){this._moveToDirection("left")}moveRight(){this._moveToDirection("right")}moveUp(){this._moveToDirection("up")}moveDown(){this._moveToDirection("down")}_moveToDirection(Qe){if(this.map&&this.isMapWide()){let rt;switch(Qe){case"up":rt=[0,-100];break;case"left":rt=[-100,0];break;case"down":rt=[0,tc];break;case"right":rt=[tc,0]}this.map.panBy(rt)}else{let rt=this.psv.getPosition();switch(Qe){case"up":rt.pitch+=Jl;break;case"left":rt.yaw-=Jl;break;case"down":rt.pitch-=Jl;break;case"right":rt.yaw+=Jl}this._psvAnimate({speed:Dl.LM,...rt})}}_psvAnimate(Qe){this._lastPsvAnim&&this._lastPsvAnim.cancel(),this._lastPsvAnim=this.psv.animate(Qe)}isMapWide(){if(!this.map)throw new Error("Map is not enabled");return this.mapContainer.parentNode==this.grid}_setFocus(Qe){var rt,Co,El,Tl;let kl=arguments.length>1&&void 0!==arguments[1]&&arguments[1],Ll=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("map"===Qe&&!this.map)throw new Error("Map is not enabled");if(!["map","pic"].includes(Qe))throw new Error("Invalid focus value (should be pic or map)");if(this.focus=Qe,(Ll||("map"!==Qe||!this.map||!this.isMapWide())&&("pic"!==Qe||this.map&&this.isMapWide()))&&("map"===Qe?(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,Gl.fa)(Zl.pt),(0,Ul.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.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.mini.classList.remove("pnx-hidden"),this.mini.appendChild(this.mapContainer),this.mini.icon=(0,Gl.fa)(Wl.e5),this.psvContainer.focus()),null===this||void 0===this||null===(rt=this.map)||void 0===rt||null===(Co=rt.resize)||void 0===Co||Co.call(rt),this.psv.autoSize(),this.psv.forceRefresh(),null===(El=this.legend)||void 0===El||null===(Tl=El.setAttribute)||void 0===Tl||Tl.call(El,"focus",this.focus),!kl)){const rt=new CustomEvent("focus-changed",{detail:{focus:Qe}});this.dispatchEvent(rt)}}_toggleFocus(){if(!this.map)throw new Error("Map is not enabled");this._setFocus(this.isMapWide()?"pic":"map")}_onMiniExpand(){this.map.resize(),this.psv.autoSize()}_onMapFiltersChange(){var Qe;const rt=(0,ql.qi)("#pnx-map-filters-menu"),Co=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-date-from"),El=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-date-end"),Tl=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-type-flat"),kl=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-type-360"),Ll=(0,ql.qi)("#pnx-map-theme");let Dl="";null===kl||void 0===kl||!kl.checked||null!==Tl&&void 0!==Tl&&Tl.checked||(Dl="equirectangular"),null!==kl&&void 0!==kl&&kl.checked||null===Tl||void 0===Tl||!Tl.checked||(Dl="flat");let Rl=[];if(null!==(Qe=this.map)&&void 0!==Qe&&Qe._hasQualityScore()){const Qe=null===rt||void 0===rt?void 0:rt.shadowRoot.getElementById("pnx-filter-qualityscore");Rl=((null===Qe||void 0===Qe?void 0:Qe.grade)||"").split(",").map((Qe=>parseInt(Qe))).filter((Qe=>!isNaN(Qe))),5==Rl.length&&(Rl=[])}const Ul={minDate:null===Co||void 0===Co?void 0:Co.value,maxDate:null===El||void 0===El?void 0:El.value,pic_type:Dl,theme:null===Ll||void 0===Ll?void 0:Ll.value,qualityscore:Rl};this.map.setFilters(Ul)}}Viewer.properties={map:{type:Object},psv:{type:Object},"url-parameters":{type:String},focus:{type:String,reflect:!0},geocoder:{type:String},widgets:{type:String},...Ll.A.properties},customElements.define("pnx-viewer",Viewer)},3921:(Qe,rt,Co)=>{"use strict";Co.r(rt),Co.d(rt,{Basic:()=>El.A,CoverageMap:()=>Tl.A,Editor:()=>kl.A,Viewer:()=>Ll.A});var El=Co(9039),Tl=Co(153),kl=Co(1752),Ll=Co(8743)},9341:(Qe,rt,Co)=>{"use strict";Co.r(rt),Co.d(rt,{core:()=>El,layout:()=>Tl,menus:()=>kl,ui:()=>Ll});var El=Co(3921),Tl=Co(456),kl=Co(8794),Ll=Co(9472)},7422:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>CorneredGrid});var El=Co(4542);class CorneredGrid extends El.WF{render(){return El.qy`
13
13
  <div class="bg">
14
14
  <slot name="bg"></slot>
15
15
  </div>
@@ -184,7 +184,7 @@
184
184
  input:checked + label img {
185
185
  outline: 3px solid var(--widget-border-btn);
186
186
  }
187
- `],MapBackground.properties={bg:{state:!0},size:{type:String}},customElements.define("pnx-map-background",MapBackground)},3581:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>MapFilters});var El=Co(4542),Tl=Co(5995),kl=Co(7343),Ll=Co(8591),Dl=Co(5279),Rl=Co(9186),Ul=Co(6069),Gl=Co(9683),Zl=Co(3233),Wl=Co(6668),ql=Co(7879);class MapFilters extends El.WF{constructor(){super(),this._formDelay=null,this.showZoomIn=!0}connectedCallback(){var Qe,rt;super.connectedCallback();for(let Co of this.shadowRoot.querySelectorAll("input"))Co.addEventListener("change",this._onFormChange.bind(this)),Co.addEventListener("keypress",this._onFormChange.bind(this)),Co.addEventListener("paste",this._onFormChange.bind(this)),Co.addEventListener("input",this._onFormChange.bind(this));null===(Qe=this._parent)||void 0===Qe||null===(rt=Qe.onceMapReady)||void 0===rt||rt.call(Qe).then((()=>{this._parent.map.on("zoomend",this._onMapZoom.bind(this)),this._parent.map.on("filters-changed",this._onParentFilterChange.bind(this)),this._onMapZoom(),this._onParentFilterChange(this._parent.map._mapFilters)}))}_onMapZoom(){this.showZoomIn=this._parent.map.getZoom()<7}_onParentFilterChange(Qe){var rt;this.minDate=(null===Qe||void 0===Qe?void 0:Qe.minDate)||null,this.maxDate=(null===Qe||void 0===Qe?void 0:Qe.maxDate)||null,this.score=(null===Qe||void 0===Qe||null===(rt=Qe.qualityscore)||void 0===rt?void 0:rt.length)<5?Qe.qualityscore.join(","):"",null!==Qe&&void 0!==Qe&&Qe.pic_type&&""!=Qe.pic_type&&(this.type360="equirectangular"==Qe.pic_type,this.typeFlat="flat"==Qe.pic_type),this.type360===this.typeFlat&&(this.type360=!1,this.typeFlat=!1)}_onSubmit(Qe){return Qe.preventDefault(),this._onFormChange(),!1}_onFormChange(){this._formDelay&&clearTimeout(this._formDelay),this._formDelay=setTimeout((()=>{var Qe;return null===(Qe=this._parent)||void 0===Qe?void 0:Qe._onMapFiltersChange()}),250)}_userSearch(Qe){return null===this||void 0===this?void 0:this._parent.api.searchUsers(Qe).then((Qe=>(Qe||[]).map((Qe=>({title:Qe.label,data:Qe})))))}_onUserSearchResult(Qe){var rt,Co;return Qe.detail?Qe.target.classList.add("pnx-filter-active"):Qe.target.classList.remove("pnx-filter-active"),null===(rt=this._parent)||void 0===rt?void 0:rt.map.setVisibleUsers(null!==(Co=Qe.detail)&&void 0!==Co&&Co.data?[Qe.detail.data.id]:["geovisio"])}_onReset(){var Qe,rt;null===(Qe=this.shadowRoot.querySelector("#pnx-filter-qualityscore"))||void 0===Qe||Qe.setAttribute("grade",""),null===(rt=this.shadowRoot.querySelector("#pnx-filter-search-user"))||void 0===rt||rt.reset(),this.minDate=null,this.maxDate=null,this.typeFlat=null,this.type360=null,this.score=null,this.user=null,this._onFormChange()}_onShortcutClick(Qe,rt){return()=>{const Co=this.shadowRoot.getElementById(Qe);Co&&(Co.value!==rt?Co.value=rt:Co.value="")}}render(){var Qe,rt,Co,Ll,Ql,Kl,Jl,tc,vc,Vc,Gc,su,du,fu;const yu=(0,kl.getUserAccount)();return El.qy`<form
187
+ `],MapBackground.properties={bg:{state:!0},size:{type:String}},customElements.define("pnx-map-background",MapBackground)},3581:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>MapFilters});var El=Co(4542),Tl=Co(5995),kl=Co(7343),Ll=Co(8591),Dl=Co(5279),Rl=Co(9186),Ul=Co(6069),Gl=Co(9683),Zl=Co(3233),Wl=Co(6668),ql=Co(7879);class MapFilters extends El.WF{constructor(){super(),this._formDelay=null,this.showZoomIn=!0}connectedCallback(){var Qe,rt;super.connectedCallback();for(let Co of this.shadowRoot.querySelectorAll("input"))Co.addEventListener("change",this._onFormChange.bind(this)),Co.addEventListener("keypress",this._onFormChange.bind(this)),Co.addEventListener("paste",this._onFormChange.bind(this)),Co.addEventListener("input",this._onFormChange.bind(this));null===(Qe=this._parent)||void 0===Qe||null===(rt=Qe.onceMapReady)||void 0===rt||rt.call(Qe).then((()=>{this._parent.map.on("zoomend",this._onMapZoom.bind(this)),this._parent.map.on("filters-changed",this._onParentFilterChange.bind(this)),this._onMapZoom(),this._onParentFilterChange(this._parent.map._mapFilters)}))}_onMapZoom(){this.showZoomIn=this._parent.map.getZoom()<7}_onParentFilterChange(Qe){var rt;if(this.minDate=(null===Qe||void 0===Qe?void 0:Qe.minDate)||null,this.maxDate=(null===Qe||void 0===Qe?void 0:Qe.maxDate)||null,this.minDate&&this.maxDate&&this.minDate>this.maxDate){const Qe=this.minDate;this.minDate=this.maxDate,this.maxDate=Qe,this._onFormChange()}this.score=(null===Qe||void 0===Qe||null===(rt=Qe.qualityscore)||void 0===rt?void 0:rt.length)<5?Qe.qualityscore.join(","):"",null!==Qe&&void 0!==Qe&&Qe.pic_type&&""!=Qe.pic_type&&(this.type360="equirectangular"==Qe.pic_type,this.typeFlat="flat"==Qe.pic_type),this.type360===this.typeFlat&&(this.type360=!1,this.typeFlat=!1)}_onSubmit(Qe){return Qe.preventDefault(),this._onFormChange(),!1}_onFormChange(){this._formDelay&&clearTimeout(this._formDelay),this._formDelay=setTimeout((()=>{var Qe;return null===(Qe=this._parent)||void 0===Qe?void 0:Qe._onMapFiltersChange()}),250)}_userSearch(Qe){return null===this||void 0===this?void 0:this._parent.api.searchUsers(Qe).then((Qe=>(Qe||[]).map((Qe=>({title:Qe.label,data:Qe})))))}_onUserSearchResult(Qe){var rt,Co;return Qe.detail?Qe.target.classList.add("pnx-filter-active"):Qe.target.classList.remove("pnx-filter-active"),null===(rt=this._parent)||void 0===rt?void 0:rt.map.setVisibleUsers(null!==(Co=Qe.detail)&&void 0!==Co&&Co.data?[Qe.detail.data.id]:["geovisio"])}_onReset(){var Qe,rt;null===(Qe=this.shadowRoot.querySelector("#pnx-filter-qualityscore"))||void 0===Qe||Qe.setAttribute("grade",""),null===(rt=this.shadowRoot.querySelector("#pnx-filter-search-user"))||void 0===rt||rt.reset(),this.minDate=null,this.maxDate=null,this.typeFlat=null,this.type360=null,this.score=null,this.user=null,this._onFormChange()}_onShortcutClick(Qe,rt){return()=>{const Co=this.shadowRoot.getElementById(Qe);Co&&(Co.value!==rt?Co.value=rt:Co.value="")}}render(){var Qe,rt,Co,Ll,Ql,Kl,Jl,tc,vc,Vc,Gc,su,du,fu;const yu=(0,kl.getUserAccount)();return El.qy`<form
188
188
  @reset=${this._onReset}
189
189
  @change=${this._onFormChange}
190
190
  @submit=${this._onSubmit}
@@ -721,9 +721,9 @@
721
721
  <pnx-copy-button ._t=${null===(ed=this._parent)||void 0===ed?void 0:ed._t} text=${hd}>
722
722
  ${(0,kl.fa)(Gl.jP)} ${null===(td=this._parent)||void 0===td?void 0:td._t.pnx.share_page}
723
723
  </pnx-copy-button>
724
- <pnx-button @click=${window.print.bind(window)}>
724
+ ${this._parent.isWidthSmall()?El.s6:Tl.qy`<pnx-button @click=${window.print.bind(window)}>
725
725
  ${(0,kl.fa)(Zl.Jx)} ${null===(id=this._parent)||void 0===id?void 0:id._t.pnx.share_print}
726
- </pnx-button>
726
+ </pnx-button>`}
727
727
  </div>
728
728
 
729
729
  <h4>
@@ -1188,7 +1188,7 @@
1188
1188
  }
1189
1189
  /* Logo */
1190
1190
  img.logo-dead { width: 100px; }
1191
- `,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:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Map});Co(3041);var El=Co(8340),Tl=Co(7343),kl=Co(6883),Ll=Co(270),Dl=Co(6462),Rl=Co(9740),Ul=(Co(6795),Co(927)),Gl=Co.n(Ul),Zl=Co(2968),Wl=Co.n(Zl),ql=Co(748);Gl().workerClass=Wl(),Gl().addProtocol("pmtiles",(new ql.Zs).tile);const Ql=["antialias","attributionControl","bearing","bearingSnap","bounds","boxZoom","center","clickTolerance","collectResourceTiming","cooperativeGestures","crossSourceCollisions","doubleClickZoom","dragPan","dragRotate","fadeDuration","failIfMajorPerformanceCaveat","fitBoundsOptions","hash","interactive","keyboard","localIdeographFontFamily","locale","logoPosition","maplibreLogo","maxBounds","maxCanvasSize","maxPitch","maxTileCacheSize","maxTileCacheZoomLevels","maxZoom","minPitch","minZoom","pitch","pitchWithRotate","pixelRatio","preserveDrawingBuffer","refreshExpiredTiles","renderWorldCopies","scrollZoom","touchPitch","touchZoomRotate","trackResize","transformCameraUpdate","transformRequest","validateStyle","zoom"];class Map extends Gl().Map{constructor(Qe,rt){let Co=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var Tl,kl;(super({container:rt,style:(0,El.combineStyles)(Qe,Co),center:[0,0],zoom:0,maxZoom:24,attributionControl:!1,dragRotate:!1,pitchWithRotate:!1,touchZoomRotate:!0,touchPitch:!1,doubleClickZoom:!1,preserveDrawingBuffer:!Qe.isWidthSmall(),transformRequest:Qe.api._getMapRequestTransform(),locale:Qe._t.maplibre,hash:!1,...(Tl=Co,Object.fromEntries(Object.entries(Tl).filter((Qe=>{let[rt]=Qe;return Ql.includes(rt)}))))}),this._loadMarkerImages(),this._parent=Qe,this._options=Co,this.getContainer().classList.add("pnx-map"),void 0===Co.touchZoomRotate)&&(null===this||void 0===this||null===(kl=this.touchZoomRotate)||void 0===kl||kl.disableRotation());this._options.raster&&(this._options.background=this._options.background||"streets"),this._attribution=new(Gl().AttributionControl)({compact:!1}),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((()=>{!this.loaded()&&this._parent.loader.isVisible()&&this._parent.loader.dismiss({},this._parent._t.map.slow_loading,(()=>{}))}),15e3),this.waitForEnoughMapLoaded().then((async()=>await this._postLoad()))}async _postLoad(){this.resize(),await this.setVisibleUsers(this._parent.users),this.reloadLayersStyles()}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((Qe=>{let rt=0,Co=0,El=0,Tl=0;const onSourceDataLoading=Qe=>{"source"===Qe.dataType&&Qe.tile&&(Qe.sourceId.startsWith("geovisio")?Co++:rt++)},onSourceData=Qe=>{"source"===Qe.dataType&&Qe.tile&&(Qe.sourceId.startsWith("geovisio")?(Tl++,Qe.isSourceLoaded&&(Tl=Co)):(El++,Qe.isSourceLoaded&&(El=rt))),checkEnoughLoaded()},checkEnoughLoaded=()=>{El/rt>=.75&&(0===Co||Tl/Co>=.75)&&(this.off("sourcedata",onSourceData),this.off("sourcedataloading",onSourceDataLoading),Qe())};this.on("sourcedataloading",onSourceDataLoading),this.on("sourcedata",onSourceData)}))}_initMapPosition(){this._options.center&&this._options.center!=[0,0]||this._options.zoom&&0!==this._options.zoom||this._options.hash||this._parent.onceAPIReady().then((()=>{var Qe,rt;let Co=null===(Qe=this._parent)||void 0===Qe||null===(rt=Qe.api)||void 0===rt?void 0:rt.getDataBbox();if(Co)try{Co=new(Gl().LngLatBounds)(Co),this.loaded()?this.fitBounds(Co,{animate:!1}):this.waitForEnoughMapLoaded().then((()=>this.fitBounds(Co,{animate:!1})))}catch(El){console.warn("Received invalid bbox: "+Co)}}))}_loadMarkerImages(){[{id:"pnx-marker",img:kl},{id:"pnx-arrow-flat",img:Dl},{id:"pnx-arrow-360",img:Rl}].forEach((Qe=>{const rt=new Image(64,64);rt.onload=()=>this.addImage(Qe.id,rt),rt.src=Qe.img}))}_hasQualityScore(){var Qe,rt,Co,El;const Tl=(null===(Qe=this.getStyle())||void 0===Qe||null===(rt=Qe.metadata)||void 0===rt?void 0:rt["panoramax:fields"])||{};return(null===Tl||void 0===Tl||null===(Co=Tl.pictures)||void 0===Co?void 0:Co.includes("gps_accuracy"))&&(null===Tl||void 0===Tl||null===(El=Tl.pictures)||void 0===El?void 0:El.includes("h_pixel_density"))}_hasGridStats(){var Qe,rt,Co,El,Tl,kl;const Ll=(null===(Qe=this.getStyle())||void 0===Qe||null===(rt=Qe.metadata)||void 0===rt?void 0:rt["panoramax:fields"])||{};return(null===Ll||void 0===Ll||null===(Co=Ll.grid)||void 0===Co?void 0:Co.includes("nb_360_pictures"))&&(null===Ll||void 0===Ll||null===(El=Ll.grid)||void 0===El?void 0:El.includes("nb_flat_pictures"))&&(null===Ll||void 0===Ll||null===(Tl=Ll.grid)||void 0===Tl?void 0:Tl.includes("coef_360_pictures"))&&(null===Ll||void 0===Ll||null===(kl=Ll.grid)||void 0===kl?void 0:kl.includes("coef_flat_pictures"))}reloadVectorTiles(){[...this._userLayers].forEach((Qe=>{const rt=this.getSource((0,El.getUserSourceId)(Qe));rt.setTiles(rt.tiles)}))}hasTwoBackgrounds(){return void 0!==this.getLayer(El.RASTER_LAYER_ID)}getBackground(){if(!this.getLayer(El.RASTER_LAYER_ID))return"streets";return"visible"==this.getLayoutProperty(El.RASTER_LAYER_ID,"visibility")?"aerial":"streets"}setBackground(Qe){if(!this.getLayer(El.RASTER_LAYER_ID)&&"aerial"===Qe)throw new Error("No aerial imagery available");this.getLayer(El.RASTER_LAYER_ID)&&(this.setLayoutProperty(El.RASTER_LAYER_ID,"visibility","aerial"===Qe?"visible":"none"),this.fire("background-changed",{background:Qe||"streets"}))}getVisibleUsers(){return[...this._userLayers].filter((Qe=>"visible"===this.getLayoutProperty((0,El.getUserLayerId)(Qe,"pictures"),"visibility")))}async setVisibleUsers(){let Qe=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];"string"===typeof Qe&&(Qe=[Qe]),await Promise.all(Qe.filter((Qe=>""!=Qe&&!this._userLayers.has(Qe))).map((Qe=>this._createPicturesTilesLayer(Qe))));const rt=["pictures","sequences","sequences_plus","grid","pictures_symbols"];[...this._userLayers].forEach((Co=>{rt.forEach((rt=>{const Tl=(0,El.getUserLayerId)(Co,rt);this.getLayer(Tl)&&this.setLayoutProperty(Tl,"visibility",Qe.includes(Co)?"visible":"none")}))})),this.fire("users-changed",{usersIds:Qe})}filterUserLayersContent(Qe,rt){[...this._userLayers].forEach((Co=>{this.setFilter((0,El.getUserLayerId)(Co,Qe),rt),"sequences"===Qe&&this.getLayer((0,El.getUserLayerId)(Co,"sequences_plus"))&&this.setFilter((0,El.getUserLayerId)(Co,"sequences_plus"),rt),"pictures"===Qe&&this.getLayer((0,El.getUserLayerId)(Co,"pictures_symbols"))&&this.setFilter((0,El.getUserLayerId)(Co,"pictures_symbols"),rt)}))}displayPictureMarker(Qe,rt,Co){let Tl=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this._picMarkerPreview.remove(),void 0!==Qe&&void 0!==rt?this._picMarker.setLngLat([Qe,rt]).setRotation(Co).addTo(this):this._picMarker.remove(),this.reloadLayersStyles(),Tl||void 0===Qe||void 0===rt||this.flyTo({center:[Qe,rt],zoom:this.getZoom()<El.TILES_PICTURES_ZOOM+2?El.TILES_PICTURES_ZOOM+2:this.getZoom(),maxDuration:2e3})}reloadLayersStyles(){const updateStyle=(Qe,rt)=>{[...this._userLayers].forEach((Co=>{for(let Tl in rt.layout)this.setLayoutProperty((0,El.getUserLayerId)(Co,Qe),Tl,rt.layout[Tl]);for(let Tl in rt.paint)this.setPaintProperty((0,El.getUserLayerId)(Co,Qe),Tl,rt.paint[Tl])}))};["pictures","pictures_symbols","sequences"].forEach((Qe=>{updateStyle(Qe,this._getLayerStyleProperties(Qe))}))}async _createPicturesTilesLayer(Qe){this._userLayers.add(Qe);const rt=this.getStyle().layers.find(El.isLabelLayer);if("geovisio"!==Qe&&!this.getSource(`geovisio_${Qe}`)){const Co=await this._parent.api.getUserMapStyle(Qe);Object.entries(Co.sources).forEach((Qe=>{let[rt,Co]=Qe;return this.addSource(rt,Co)})),Co.layers=Co.layers||[];Co.layers.concat((0,El.getMissingLayerStyles)(Co.sources,Co.layers)).filter((Qe=>Object.keys(Qe).length>0)).forEach((Qe=>this.addLayer(Qe,null===rt||void 0===rt?void 0:rt.id)))}this._picPreviewTimer=null,this._picPopup=new(Gl().Popup)({closeButton:!1,closeOnClick:!this._parent.isWidthSmall(),offset:3}),this._picPopup.on("close",(()=>{delete this._picPopup._picId}));const Co=(0,El.getUserLayerId)(Qe,"pictures");this.on("mousemove",Co,(Qe=>{this.getCanvas().style.cursor="pointer";const rt=Object.assign({},Qe);clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>this._attachPreviewToPictures(rt,Co)),100)})),this.on("mouseleave",Co,(()=>{clearTimeout(this._picPreviewTimer),this.getCanvas().style.cursor="",this._picPopup._picId,this._picPopup.remove()})),this.on("click",Co,this._onPictureClick.bind(this));const Tl=(0,El.getUserLayerId)(Qe,"sequences_plus");this.on("mousemove",Tl,(Qe=>{if(this._onSequenceHover(Qe),this.getZoom()<=El.TILES_PICTURES_ZOOM+1&&(this.getCanvas().style.cursor="pointer",Qe.features[0].properties.id)){const rt=Object.assign({},Qe);clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>this._attachPreviewToPictures(rt,Tl)),100)}})),this.on("mouseleave",Tl,(()=>{clearTimeout(this._picPreviewTimer),this.getCanvas().style.cursor="",this._picPopup._picId,this._picPopup.remove()})),this.on("click",Tl,(Qe=>{Qe.preventDefault(),this.getZoom()<=El.TILES_PICTURES_ZOOM+1&&this._onSequenceClick(Qe)})),"geovisio"===Qe&&this.getLayer("geovisio_grid")&&(this.on("mousemove","geovisio_grid",(Qe=>{if(this.getZoom()<=El.TILES_PICTURES_ZOOM+1){this.getCanvas().style.cursor="pointer";const rt=Object.assign({},Qe);clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>this._attachPreviewToPictures(rt,"geovisio_grid")),100)}})),this.on("mouseleave","geovisio_grid",(()=>{clearTimeout(this._picPreviewTimer),this.getCanvas().style.cursor="",this._picPopup._picId,this._picPopup.remove()})),this.on("click","geovisio_grid",(Qe=>{Qe.preventDefault(),this.flyTo({center:Qe.lngLat,zoom:El.TILES_PICTURES_ZOOM-6})}))),this.on("click",(Qe=>{!1===Qe.defaultPrevented&&(clearTimeout(this._picPreviewTimer),this._picPopup.remove())}))}_getLayerStyleProperties(Qe){if("pictures_symbols"===Qe)return{paint:{},layout:{"icon-image":["case",["==",["get","id"],this._parent.picture],"",["==",["get","type"],"equirectangular"],"pnx-arrow-360","pnx-arrow-flat"],"symbol-sort-key":this._getLayerSortStyle(Qe)}};{const rt={pictures:"circle",sequences:"line"};return{paint:Object.assign({[`${rt[Qe]}-color`]:this._getLayerColorStyle(Qe)},El.VECTOR_STYLES[Qe.toUpperCase()].paint),layout:Object.assign({[`${rt[Qe]}-sort-key`]:this._getLayerSortStyle(Qe)},El.VECTOR_STYLES[Qe.toUpperCase()].layout)}}}_getLayerColorStyle(Qe){const rt=["case",["==",["get","hidden"],!0],Tl.COLORS.HIDDEN,["==",["get","geovisio:status"],"hidden"],Tl.COLORS.HIDDEN],Co=this._parent.sequence;return"sequences"==Qe&&Co?rt.push(["==",["get","id"],Co],Tl.COLORS.SELECTED):Qe.startsWith("pictures")&&Co&&rt.push(["in",Co,["get","sequences"]],Tl.COLORS.SELECTED),rt.push(Tl.COLORS.BASE),rt}_getLayerSortStyle(Qe){const rt=["case",["==",["get","hidden"],!0],90],Co=this._parent.sequence;return"sequences"==Qe&&Co?rt.push(["==",["get","id"],Co],100):Qe.startsWith("pictures")&&Co&&rt.push(["in",Co,["get","sequences"]],100),rt.push(10),rt}_attachPreviewToPictures(Qe,rt){let Co=Qe.features.pop();if(!Co||Co.properties.id==this._picPopup._picId)return;let Tl=null;if(rt.endsWith("pictures")?Tl=Co.geometry.coordinates.slice():Qe.lngLat&&(Tl=[Qe.lngLat.lng,Qe.lngLat.lat]),!Tl){const Qe="LineString"===Co.geometry.type?[Co.geometry.coordinates]:Co.geometry.coordinates;let rt=null;const El=this.getBounds(),kl=El.getCenter();for(let Co=0;Co<Qe.length;Co++)for(let Ll=0;Ll<Qe[Co].length;Ll++)if(El.contains(Qe[Co][Ll])){let El=kl.distanceTo(new(Gl().LngLat)(...Qe[Co][Ll]));(null===rt||El<rt)&&(Tl=Qe[Co][Ll],rt=El)}if(!Tl)return}this._picPopup.setLngLat(Tl).addTo(this),this._picThumbUrl[Co.properties.id]||this._picPopup.setDOMContent((0,El.getThumbGif)(this._parent._t)),this._picPopup._loading=Co.properties.id,this._picPopup._picId=Co.properties.id;const displayThumb=Qe=>{if(this._picPopup._loading===Co.properties.id)if(delete this._picPopup._loading,Qe){let rt=document.createElement("img");rt.classList.add("pnx-map-thumb"),rt.alt=this._parent._t.map.thumbnail;let El=new Image;if(El.src=Qe,El.addEventListener("load",(()=>{Co.properties.hidden?rt.children[0].src=El.src:rt.src=El.src,this._picPopup.setDOMContent(rt)})),Co.properties.hidden){const Qe=document.createElement("div");Qe.classList.add("pnx-map-thumb-legend"),Qe.appendChild(document.createTextNode(this._parent._t.map.not_public));const Co=document.createElement("div");Co.appendChild(rt),Co.appendChild(Qe),rt=Co}}else this._picPopup.remove()};rt.endsWith("pictures")?this._getPictureThumbURL(Co.properties.id).then(displayThumb):rt.endsWith("grid")?this._getThumbURL(Tl).then(displayThumb):this._getSequenceThumbURL(Co.properties.id,new(Gl().LngLat)(...Tl)).then(displayThumb)}_getThumbURL(Qe){return this._parent.api.getPicturesAroundCoordinates(Qe[1],Qe[0],.1,1).then((Qe=>{var rt;const Co=null===Qe||void 0===Qe||null===(rt=Qe.features)||void 0===rt?void 0:rt.pop();return Co?this._parent.api.findThumbnailInPictureFeature(Co):null}))}_getSequenceThumbURL(Qe,rt){return rt?this._parent.api.getPicturesAroundCoordinates(rt.lat,rt.lng,1,1,Qe).then((rt=>{var Co;return(null===rt||void 0===rt||null===(Co=rt.features)||void 0===Co?void 0:Co.length)>0?this._parent.api.findThumbnailInPictureFeature(rt.features[0]):this._parent.api.getPictureThumbnailURLForSequence(Qe)})):this._parent.api.getPictureThumbnailURLForSequence(Qe)}_getPictureThumbURL(Qe,rt){let Co=null;return Qe&&(void 0!==this._picThumbUrl[Qe]?Co="string"===typeof this._picThumbUrl[Qe]?Promise.resolve(this._picThumbUrl[Qe]):this._picThumbUrl[Qe]:(this._picThumbUrl[Qe]=this._parent.api.getPictureThumbnailURL(Qe,rt).then((rt=>rt?(this._picThumbUrl[Qe]=rt,rt):(this._picThumbUrl[Qe]=null,null))).catch((()=>{this._picThumbUrl[Qe]=null})),Co=this._picThumbUrl[Qe])),Co}_getPictureMarker(){let Qe=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const rt=document.createElement("img");return rt.src=Qe?Ll:kl,rt.alt="",new(Gl().Marker)({element:rt})}_onSequenceHover(Qe){var rt;Qe.preventDefault(),Qe.features.length>0&&null!==(rt=Qe.features[0].properties)&&void 0!==rt&&rt.id&&this.fire("sequence-hover",{seqId:Qe.features[0].properties.id})}_onSequenceClick(Qe){var rt;Qe.preventDefault(),Qe.features.length>0&&null!==(rt=Qe.features[0].properties)&&void 0!==rt&&rt.id&&this.fire("sequence-click",{seqId:Qe.features[0].properties.id,coordinates:Qe.lngLat})}_onPictureClick(Qe){var rt,Co;Qe.preventDefault();const El=(null===Qe||void 0===Qe||null===(rt=Qe.features)||void 0===rt?void 0:rt.length)>0?Qe.features[0]:null;if(null!==El&&void 0!==El&&null!==(Co=El.properties)&&void 0!==Co&&Co.id){let rt=null;try{El.properties.sequences&&(Array.isArray(El.properties.sequences)||(El.properties.sequences=JSON.parse(El.properties.sequences)),rt=El.properties.sequences.pop())}catch(Qe){console.log("Sequence ID is not available in vector tiles for picture "+El.properties.id)}this.fire("picture-click",{picId:El.properties.id,seqId:rt,feature:El})}}}},2771:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>MapMore,T:()=>Dl});var El=Co(5642),Tl=Co(7343),kl=Co(8340);const Ll={DEFAULT:"default",AGE:"age",TYPE:"type",SCORE:"score"},Dl=["minDate","maxDate","pic_type","camera","theme","qualityscore"];class MapMore extends El.A{constructor(Qe,rt){super(Qe,rt,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),this._mapFilters={},this._options.theme&&(this._mapFilters={theme:this._options.theme})}reloadLayersStyles(){if(super.reloadLayersStyles(),this._hasGridStats()){let Qe="coef";this._mapFilters.pic_type&&(Qe="flat"==this._mapFilters.pic_type?"coef_flat_pictures":"coef_360_pictures"),this.getStyle().layers.filter((Qe=>Qe.id.endsWith("_grid"))).forEach((rt=>{const Co=(0,kl.switchCoefValue)(rt,Qe);for(let Qe in Co.layout)this.setLayoutProperty(rt.id,Qe,Co.layout[Qe]);for(let Qe in Co.paint)this.setPaintProperty(rt.id,Qe,Co.paint[Qe])}))}}_getDatesForLayerColors(){const Qe=864e5,rt=Date.now();return[rt-30*Qe,rt-365*Qe,rt-730*Qe].map((Qe=>new Date(Qe).toISOString().split("T")[0]))}_getLayerColorStyle(Qe){var rt,Co,El,Dl,Rl,Ul,Gl,Zl;const Wl=["case",["==",["get","hidden"],!0],Tl.COLORS.HIDDEN],ql=(null===(rt=this._parent.psv)||void 0===rt||null===(Co=rt._myVTour)||void 0===Co||null===(El=Co.state)||void 0===El?void 0:El.loadingNode)||(null===(Dl=this._parent.psv)||void 0===Dl||null===(Rl=Dl._myVTour)||void 0===Rl||null===(Ul=Rl.state)||void 0===Ul||null===(Gl=Ul.currentNode)||void 0===Gl?void 0:Gl.id),Ql=ql?null===(Zl=this._parent.psv)||void 0===Zl?void 0:Zl._picturesSequences[ql]:null;if("sequences"==Qe&&Ql?Wl.push(["==",["get","id"],Ql],Tl.COLORS.SELECTED):"pictures"==Qe&&Ql&&Wl.push(["in",Ql,["get","sequences"]],Tl.COLORS.SELECTED),this._mapFilters.theme==Ll.AGE){const rt="sequences"==Qe?"date":"ts",Co=this._getDatesForLayerColors();Wl.push(["!",["has",rt]],Tl.COLORS.BASE,[">=",["get",rt],Co[0]],Tl.COLORS.PALETTE_4,[">=",["get",rt],Co[1]],Tl.COLORS.PALETTE_3,[">=",["get",rt],Co[2]],Tl.COLORS.PALETTE_2,Tl.COLORS.PALETTE_1)}else this._mapFilters.theme==Ll.TYPE?Wl.push(["!",["has","type"]],Tl.COLORS.BASE,["==",["get","type"],"equirectangular"],Tl.COLORS.QUALI_1,Tl.COLORS.QUALI_2):this._mapFilters.theme==Ll.SCORE?Wl.push(["==",kl.MAP_EXPR_QUALITYSCORE,5],Tl.QUALITYSCORE_VALUES[0].color,["==",kl.MAP_EXPR_QUALITYSCORE,4],Tl.QUALITYSCORE_VALUES[1].color,["==",kl.MAP_EXPR_QUALITYSCORE,3],Tl.QUALITYSCORE_VALUES[2].color,["==",kl.MAP_EXPR_QUALITYSCORE,2],Tl.QUALITYSCORE_VALUES[3].color,Tl.QUALITYSCORE_VALUES[4].color):Wl.push(Tl.COLORS.BASE);return Wl}_getLayerSortStyle(Qe){var rt,Co,El,Tl,Dl,Rl,Ul,Gl;const Zl=["case",["==",["get","hidden"],!0],90],Wl=(null===(rt=this._parent.psv)||void 0===rt||null===(Co=rt._myVTour)||void 0===Co||null===(El=Co.state)||void 0===El?void 0:El.loadingNode)||(null===(Tl=this._parent.psv)||void 0===Tl||null===(Dl=Tl._myVTour)||void 0===Dl||null===(Rl=Dl.state)||void 0===Rl||null===(Ul=Rl.currentNode)||void 0===Ul?void 0:Ul.id),ql=Wl?null===(Gl=this._parent.psv)||void 0===Gl?void 0:Gl._picturesSequences[Wl]:null;if("sequences"==Qe&&ql?Zl.push(["==",["get","id"],ql],100):"pictures"==Qe&&ql&&Zl.push(["in",ql,["get","sequences"]],100),this._mapFilters.theme==Ll.AGE){const rt="sequences"==Qe?"date":"ts",Co=this._getDatesForLayerColors();Zl.push(["!",["has",rt]],0,[">=",["get",rt],Co[0]],50,[">=",["get",rt],Co[1]],49,[">=",["get",rt],Co[2]],48)}else this._mapFilters.theme==Ll.TYPE?Zl.push(["!",["has","type"]],0,["==",["get","type"],"equirectangular"],50):this._mapFilters.theme==Ll.SCORE&&Zl.push(["==",kl.MAP_EXPR_QUALITYSCORE,5],80,["==",kl.MAP_EXPR_QUALITYSCORE,4],65,["==",kl.MAP_EXPR_QUALITYSCORE,3],50,["==",kl.MAP_EXPR_QUALITYSCORE,2],35,["==",kl.MAP_EXPR_QUALITYSCORE,1],20);return Zl.push(10),Zl}setFilters(Qe){let rt=arguments.length>1&&void 0!==arguments[1]&&arguments[1],Co=[],El=[],Tl=!1;if(this._mapFilters={},Qe.minDate&&""!==Qe.minDate&&(this._mapFilters.minDate=Qe.minDate,Co.push([">=",["get","date"],Qe.minDate]),El.push([">=",["get","ts"],Qe.minDate])),Qe.maxDate&&""!==Qe.maxDate){this._mapFilters.maxDate=Qe.maxDate,Co.push(["<=",["get","date"],Qe.maxDate]);let rt=new Date(Qe.maxDate);rt.setDate(rt.getDate()+1),rt=rt.toISOString().split("T")[0],El.push(["<=",["get","ts"],rt])}if(Qe.pic_type&&""!==Qe.pic_type&&(this._mapFilters.pic_type=Qe.pic_type,Co.push(["==",["get","type"],Qe.pic_type]),El.push(["==",["get","type"],Qe.pic_type])),this._hasGridStats()&&(Tl=!0),Qe.camera&&""!==Qe.camera){this._mapFilters.camera=Qe.camera;const rt=Qe.camera.toLowerCase().trim()+" ",Tl=Qe.camera.toLowerCase().trim()+"zzzzzzzzzzzzzzzzzzzz",kl=["collator",{"case-sensitive":!1,"diacritic-sensitive":!1}];Co.push([">=",["get","model"],rt,kl]),Co.push(["<=",["get","model"],Tl,kl]),El.push([">=",["get","model"],rt,kl]),El.push(["<=",["get","model"],Tl,kl])}Qe.qualityscore&&Qe.qualityscore.length>0&&(this._mapFilters.qualityscore=Qe.qualityscore,Co.push(["in",kl.MAP_EXPR_QUALITYSCORE,["literal",this._mapFilters.qualityscore]]),El.push(["in",kl.MAP_EXPR_QUALITYSCORE,["literal",this._mapFilters.qualityscore]])),Qe.theme&&Object.values(Ll).includes(Qe.theme)&&(this._mapFilters.theme=Qe.theme,Tl=!0),0==Co.length?Co=null:Co.unshift("all"),0==El.length?El=null:(El.unshift("all"),El=["step",["zoom"],!0,kl.TILES_PICTURES_ZOOM,El]),Tl&&this.reloadLayersStyles();const Dl=this.getVisibleUsers().includes("geovisio");Co&&Dl&&(Co=["step",["zoom"],!0,7,Co]),this.filterUserLayersContent("sequences",Co),this.filterUserLayersContent("pictures",El),!rt&&(null!==Co||null!==El||null!==this._mapFilters.theme&&this._mapFilters.theme!==Ll.DEFAULT)&&Dl&&this.getZoom()<7&&!this._hasGridStats()&&this.easeTo({zoom:7}),this.fire("filters-changed",Object.assign({},this._mapFilters))}}},9048:(Qe,rt,Co)=>{"use strict";Co.d(rt,{Ay:()=>Photo,LM:()=>ql,Vf:()=>Ql,cS:()=>Wl});Co(5003);var El=Co(5975),Tl=Co(2305),kl=Co(7343),Ll=Co(508),Dl=(Co(3961),Co(1080),Co(2710),Co(1575),Co(1545)),Rl=Co(3348),Ul=Co(3727);const Gl={baseUrl:El,width:1280,cols:2,rows:1,tileUrl:()=>null},Zl={id:kl.BASE_PANORAMA_ID,caption:"",panorama:Gl,links:[],gps:[0,0],sequence:{},sphereCorrection:{},horizontalFov:360,properties:{}},Wl=30,ql=250,Ql=3e3;Dl.jM.useNewAnglesOrder=!0;class Photo extends Dl.jM{constructor(Qe,rt){var Co,El;let Tl=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super({container:rt,adapter:[Ul.A,{showErrorTile:!1,baseBlur:!1,resolution:Qe.isWidthSmall()?32:64,shouldGoFast:Tl.shouldGoFast}],withCredentials:"include"==(null===Qe||void 0===Qe||null===(Co=Qe.fetchOptions)||void 0===Co?void 0:Co.credentials),requestHeaders:null===Qe||void 0===Qe||null===(El=Qe.fetchOptions)||void 0===El?void 0:El.headers,panorama:Gl,lang:Qe._t.psv,minFov:5,loadingTxt:"&nbsp;",navbar:null,rendererParameters:{preserveDrawingBuffer:!Qe.isWidthSmall()},plugins:[[Rl.$,{dataMode:"server",positionMode:"gps",renderMode:"3d",preload:!0,getNode:()=>{},transitionOptions:()=>{},arrowsPosition:{linkOverlapAngle:Math.PI/6}}]],...Tl}),this._parent=Qe,this._options=Tl,rt.classList.add("pnx-psv"),this._shouldGoFast=(null===Tl||void 0===Tl?void 0:Tl.shouldGoFast)||(()=>!1),this._transitionDuration=(null===Tl||void 0===Tl?void 0:Tl.transitionDuration)||ql,this._myVTour=this.getPlugin(Rl.$),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._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.addEventListener("position-updated",this._onPositionUpdated.bind(this)),this.addEventListener("zoom-updated",this._onZoomUpdated.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(Qe){var rt,Co;if(!Qe||Qe===kl.BASE_PANORAMA_ID)return Zl;const El=await fetch(this._parent.api.getPictureMetadataUrl(Qe,this._picturesSequences[Qe]),this._parent.api._getFetchOptions());let Tl=await El.json();if(Tl.features&&(Tl=Tl.features.pop()),!Tl||0===Object.keys(Tl).length||!El.ok)throw this._parent.loader&&this._parent.loader.dismiss(!0,this._parent._t.pnx.error_pic),new Error("Picture with ID "+Qe+" was not found");this._picturesSequences[Qe]=Tl.collection;const Dl=(0,Ll.apiFeatureToPSVNode)(Tl,this._parent._t,this._parent._isInternetFast,this._picturesNavFilter.bind(this));var Rl,Ul;null!==Dl&&void 0!==Dl&&null!==(rt=Dl.sequence)&&void 0!==rt&&rt.prevPic&&(this._picturesSequences[null===Dl||void 0===Dl||null===(Rl=Dl.sequence)||void 0===Rl?void 0:Rl.prevPic]=Tl.collection);null!==Dl&&void 0!==Dl&&null!==(Co=Dl.sequence)&&void 0!==Co&&Co.nextPic&&(this._picturesSequences[null===Dl||void 0===Dl||null===(Ul=Dl.sequence)||void 0===Ul?void 0:Ul.nextPic]=Tl.collection);return Dl}_psvNodeTransition(Qe,rt,Co){var El,Tl,Ll;let Dl={};const Rl=this._shouldGoFast()?0:Math.min(ql,this._transitionDuration),Ul=Rl>100,Gl=null!=(Co||(null===rt||void 0===rt?void 0:rt.links.find((rt=>rt.nodeId==Qe.id)))),Zl=rt&&Qe.sequence.id===rt.sequence.id,Ql=((null===rt||void 0===rt||null===(El=rt.properties)||void 0===El?void 0:El["view:azimuth"])||0)*(Math.PI/180),Kl=((null===Qe||void 0===Qe||null===(Tl=Qe.properties)||void 0===Tl?void 0:Tl["view:azimuth"])||0)*(Math.PI/180);this.setOption("maxFov",Math.min(3*Qe.horizontalFov/4,90));const Jl={showLoader:!1,effect:"none",speed:0,rotation:!1,rotateTo:{pitch:0,yaw:0},zoomTo:Wl};if(360==Qe.horizontalFov)Dl=rt?(0,kl.getDistance)(rt.gps,Qe.gps)>=.001?Jl:{speed:Rl,effect:Gl&&Ul?"fade":"none",rotation:Gl&&Zl&&Ul,rotateTo:this.getPosition()}:Jl;else if(Zl){const Qe=this.getPosition().yaw,Co=rt.horizontalFov*(Math.PI/180)/2,El=Qe<=Co||Qe>=2*Math.PI-Co,Tl=Math.abs(Ql-Kl)<=Math.PI/4;Dl={speed:Rl,effect:Gl&&Tl&&Ul?"fade":"none",rotation:Gl&&Tl&&Ul,rotateTo:El?this.getPosition():{pitch:0,yaw:0},zoomTo:El?this.getZoomLevel():Wl}}else Dl=Jl;"fade"===Dl.effect&&Dl.speed>=150?setTimeout(this._clearArrows,Dl.speed-100):this._clearArrows();const tc=new CustomEvent("picture-loading",{detail:{...Object.assign({},this.getXYZ(),Dl.rotateTo?{x:180*(Kl+Dl.rotateTo.yaw)/Math.PI}:null,Dl.zoomTo?{z:Dl.zoomTo}:null),picId:Qe.id,lon:Qe.gps[0],lat:Qe.gps[1],first:(null===(Ll=this._parent._initParams)||void 0===Ll?void 0:Ll.getParentPostInit().picture)==Qe.id}});return this.dispatchEvent(tc),Dl}_onEnterArrow(Qe){const rt=Qe.link,Co=Qe.node;let El;Co&&(El=360===Co.horizontalFov?(this.getPictureOriginalHeading()+180*this.getPosition().yaw/Math.PI)%360:this.getPictureOriginalHeading());const Tl=new CustomEvent("picture-preview-started",{detail:{picId:rt.nodeId,coordinates:rt.gps,direction:El}});this.dispatchEvent(Tl)}_onLeaveArrow(Qe){const rt=Qe.link,Co=new CustomEvent("picture-preview-stopped",{detail:{picId:rt.nodeId}});this.dispatchEvent(Co)}_onPositionUpdated(Qe){let{position:rt}=Qe;const Co=(0,kl.positionToXYZ)(rt,this.getZoomLevel());Co.x+=this.getPictureOriginalHeading(),Co.x=Co.x%360;const El=new CustomEvent("view-rotated",{detail:Co});this.dispatchEvent(El),this._onTilesStartLoading()}_onZoomUpdated(Qe){let{zoomLevel:rt}=Qe;const Co=new CustomEvent("view-rotated",{detail:{...this.getXY(),z:rt}});this.dispatchEvent(Co),this._onTilesStartLoading()}_onNodeChanged(Qe){for(let Tl of document.getElementsByClassName("pnx-psv-tour-arrows"))Tl.classList.remove("pnx-clicked");if(Qe.node.id){var rt,Co,El;const Tl=(null===(rt=this._parent._initParams)||void 0===rt?void 0:rt.getParentPostInit().picture)==Qe.node.id;this._parent.select(null===(Co=Qe.node)||void 0===Co||null===(El=Co.sequence)||void 0===El?void 0:El.id,Qe.node.id);const kl=this.getPictureMetadata();if(!kl)return void this.dispatchEvent(new CustomEvent("picture-loaded",{detail:{}}));this._prevSequence=kl.sequence.id;const Ll=new CustomEvent("picture-loaded",{detail:{...this.getXYZ(),picId:Qe.node.id,lon:kl.gps[0],lat:kl.gps[1],first:Tl}});this.dispatchEvent(Ll),kl.panorama.hdUrl?(this.setOption("downloadUrl",kl.panorama.hdUrl),this.setOption("downloadName",Qe.node.id+".jpg")):this.setOption("downloadUrl",null)}this._onTilesStartLoading()}_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 Qe=new CustomEvent("picture-tiles-loaded",{detail:{picId:this._myVTour.state.currentNode.id}});this.dispatchEvent(Qe)}clearInterval(this._tilesQueueTimer),delete this._tilesQueueTimer}}),100)}getPictureMetadata(){var Qe,rt,Co;return(null===(Qe=this._myVTour)||void 0===Qe||null===(rt=Qe.state)||void 0===rt||null===(Co=rt.currentNode)||void 0===Co?void 0:Co.id)===kl.BASE_PANORAMA_ID?null:this._myVTour.state.currentNode?Object.assign({},this._myVTour.state.currentNode):null}_onSelect(Qe){var rt;Qe.detail.seqId&&(this._picturesSequences[Qe.detail.picId]=Qe.detail.seqId),(null===(rt=this._myVTour.getCurrentNode())||void 0===rt?void 0:rt.id)!==Qe.detail.picId&&(this.loader.show(),this._myVTour.setCurrentNode(Qe.detail.picId).catch((Qe=>{this.showErrorOverlay(Qe,this._parent._t.pnx.error_pic,!0)})))}goToNextPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");const Qe=this.getPictureMetadata().sequence.nextPic;if(!Qe)throw new Error("No next picture available");this._parent.select(this.getPictureMetadata().sequence.id,Qe)}goToPrevPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");const Qe=this.getPictureMetadata().sequence.prevPic;if(!Qe)throw new Error("No previous picture available");this._parent.select(this.getPictureMetadata().sequence.id,Qe)}async goToPosition(Qe,rt){return this._parent.api.getPicturesAroundCoordinates(Qe,rt).then((Qe=>{if(Qe.features.length>0){const rt=Qe.features.pop();return this._parent.select(null===rt||void 0===rt?void 0:rt.collection,rt.id),rt.id}return Promise.reject(new Error("No picture found nearby given coordinates"))}))}getXY(){const Qe=(0,kl.positionToXYZ)(this.getPosition());return Qe.x=(Qe.x+this.getPictureOriginalHeading())%360,Qe}getXYZ(){const Qe=this.getXY();return Qe.z=this.getZoomLevel(),Qe}getPictureOriginalHeading(){var Qe,rt;return(null===(Qe=this.getPictureMetadata())||void 0===Qe||null===(rt=Qe.properties)||void 0===rt?void 0:rt["view:azimuth"])||0}getPictureRelativeHeading(){return(0,kl.getRelativeHeading)(this.getPictureMetadata())}clearPictureMetadataCache(){var Qe,rt,Co,El;const Tl=null===(Qe=this.getPictureMetadata())||void 0===Qe?void 0:Qe.id,kl=null===(rt=this.getPictureMetadata())||void 0===rt||null===(Co=rt.sequence)||void 0===Co?void 0:Co.id;null===(El=this._myVTour.state.currentTooltip)||void 0===El||El.hide(),this._myVTour.state.currentTooltip=null,this._myVTour.state.currentNode=null,this._myVTour.state.preload={},this._myVTour.datasource.nodes={},Tl&&this._parent.select(kl,Tl)}setXYZ(Qe,rt,Co){const El=(0,kl.xyzToPosition)(Qe-this.getPictureOriginalHeading(),rt,Co);this.rotate({yaw:El.yaw,pitch:El.pitch}),this.zoom(El.zoom)}setHigherContrast(Qe){this.renderer.renderer.toneMapping=Qe?3:0,this.renderer.renderer.toneMappingExposure=Qe?2:1,this.needsUpdate()}getTransitionDuration(){return this._transitionDuration}setTransitionDuration(Qe){if((Qe=parseFloat(Qe))<100||Qe>Ql)throw new Error("Invalid transition duration (should be between 100 and "+Ql+")");this._transitionDuration=Qe;const rt=new CustomEvent("transition-duration-changed",{detail:{value:Qe}});this.dispatchEvent(rt)}setPanorama(Qe,rt){const onFailure=Qe=>{var rt;return this.showErrorOverlay(Qe,null===(rt=this._parent)||void 0===rt?void 0:rt._t.pnx.error_pic,!0)};try{return super.setPanorama(Qe,rt).catch(onFailure)}catch(Co){onFailure(Co)}}showErrorOverlay(Qe,rt,Co){var El,kl,Ll,Dl;null!==(El=this._parent)&&void 0!==El&&El.loader.isVisible()||!this.overlay.isVisible()?null===(kl=this._parent)||void 0===kl||kl.loader.dismiss(Qe,rt,Co?()=>{var Qe;null===(Qe=this._parent)||void 0===Qe||Qe.loader.dismiss(),this.overlay.hide()}:void 0):(console.error(Qe),this.overlay.show({image:`<img style="width: 200px" src="${Tl}" alt="" />`,title:null===(Ll=this._parent)||void 0===Ll?void 0:Ll._t.pnx.error,text:rt+"<br />"+(null===(Dl=this._parent)||void 0===Dl?void 0:Dl._t.pnx.error_click),dissmisable:Co}))}playSequence(){this._sequencePlaying=!0;const Qe=new Event("sequence-playing",{bubbles:!0,composed:!0});this.dispatchEvent(Qe);const nextPicturePlay=()=>{if(this._sequencePlaying){this.addEventListener("picture-loaded",(()=>{this._playTimer=setTimeout((()=>{nextPicturePlay()}),this.getTransitionDuration())}),{once:!0});try{this.goToNextPicture()}catch(Qe){this.stopSequence()}}};this.addEventListener("click",(()=>this.stopSequence())),nextPicturePlay()}stopSequence(){this._sequencePlaying=!1,this._playTimer&&(clearTimeout(this._playTimer),delete this._playTimer),this.forceRefresh();const Qe=new Event("sequence-stopped",{bubbles:!0,composed:!0});this.dispatchEvent(Qe)}isSequencePlaying(){return this._sequencePlaying}toggleSequencePlaying(){this.isSequencePlaying()?this.stopSequence():this.playSequence()}getPicturesNavigation(){return this._picturesNavigation}setPicturesNavigation(Qe){"none"===Qe&&(Qe="pic"),this._picturesNavigation=Qe;const rt=new CustomEvent("pictures-navigation-changed",{detail:{value:Qe}});this.dispatchEvent(rt)}_picturesNavFilter(Qe){switch(this._picturesNavigation){case"seq":return["next","prev"].includes(Qe.rel);case"pic":case"none":return!1;default:return!0}}forceRefresh(){var Qe;const rt=this._myVTour.getCurrentNode();if(rt&&rt.panorama.baseUrl!==(null===rt||void 0===rt||null===(Qe=rt.panorama)||void 0===Qe?void 0:Qe.origBaseUrl)){const Qe=this.getZoomLevel(),Co=this.getPosition();this._myVTour.state.currentNode=null,this._myVTour.setCurrentNode(rt.id,{zoomTo:Qe,rotateTo:Co,fadeIn:!1,speed:0,rotation:!1})}rt&&rt.panorama.rows>1&&this.adapter.__refresh()}}},4374:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Popup});var El=Co(4542),Tl=Co(5995),kl=Co(8591),Ll=Co(6627);class Popup extends El.WF{constructor(){super(),this.visible=!1}connectedCallback(){super.connectedCallback(),this.addEventListener("click",(Qe=>{Qe.target===this&&this.close()})),document.addEventListener("keyup",(Qe=>{"Escape"===Qe.key&&this.visible&&this.close()}))}attributeChangedCallback(Qe,rt,Co){super.attributeChangedCallback(Qe,rt,Co),"visible"==Qe&&(""!==Co&&!0!==Co||this.dispatchEvent(new Event("open")))}close(){this.visible=!1,this.dispatchEvent(new Event("close"))}render(){return El.qy`
1191
+ `,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:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Map});Co(3041);var El=Co(8340),Tl=Co(7343),kl=Co(6883),Ll=Co(270),Dl=Co(6462),Rl=Co(9740),Ul=(Co(6795),Co(927)),Gl=Co.n(Ul),Zl=Co(2968),Wl=Co.n(Zl),ql=Co(748);Gl().workerClass=Wl(),Gl().addProtocol("pmtiles",(new ql.Zs).tile);const Ql=["antialias","attributionControl","bearing","bearingSnap","bounds","boxZoom","center","clickTolerance","collectResourceTiming","cooperativeGestures","crossSourceCollisions","doubleClickZoom","dragPan","dragRotate","fadeDuration","failIfMajorPerformanceCaveat","fitBoundsOptions","hash","interactive","keyboard","localIdeographFontFamily","locale","logoPosition","maplibreLogo","maxBounds","maxCanvasSize","maxPitch","maxTileCacheSize","maxTileCacheZoomLevels","maxZoom","minPitch","minZoom","pitch","pitchWithRotate","pixelRatio","preserveDrawingBuffer","refreshExpiredTiles","renderWorldCopies","scrollZoom","touchPitch","touchZoomRotate","trackResize","transformCameraUpdate","transformRequest","validateStyle","zoom"];class Map extends Gl().Map{constructor(Qe,rt){let Co=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var Tl,kl;(super({container:rt,style:(0,El.combineStyles)(Qe,Co),center:[0,0],zoom:0,maxZoom:24,attributionControl:!1,dragRotate:!1,pitchWithRotate:!1,touchZoomRotate:!0,touchPitch:!1,doubleClickZoom:!1,canvasContextAttributes:{preserveDrawingBuffer:!Qe.isWidthSmall()},transformRequest:Qe.api._getMapRequestTransform(),locale:Qe._t.maplibre,hash:!1,...(Tl=Co,Object.fromEntries(Object.entries(Tl).filter((Qe=>{let[rt]=Qe;return Ql.includes(rt)}))))}),this._loadMarkerImages(),this._parent=Qe,this._options=Co,this.getContainer().classList.add("pnx-map"),void 0===Co.touchZoomRotate)&&(null===this||void 0===this||null===(kl=this.touchZoomRotate)||void 0===kl||kl.disableRotation());this._options.raster&&(this._options.background=this._options.background||"streets"),this._attribution=new(Gl().AttributionControl)({compact:!1}),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((()=>{!this.loaded()&&this._parent.loader.isVisible()&&this._parent.loader.dismiss({},this._parent._t.map.slow_loading,(()=>{}))}),15e3),this.waitForEnoughMapLoaded().then((async()=>await this._postLoad()))}async _postLoad(){this.resize(),await this.setVisibleUsers(this._parent.users),this.reloadLayersStyles()}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((Qe=>{let rt=0,Co=0,El=0,Tl=0;const onSourceDataLoading=Qe=>{"source"===Qe.dataType&&Qe.tile&&(Qe.sourceId.startsWith("geovisio")?Co++:rt++)},onSourceData=Qe=>{"source"===Qe.dataType&&Qe.tile&&(Qe.sourceId.startsWith("geovisio")?(Tl++,Qe.isSourceLoaded&&(Tl=Co)):(El++,Qe.isSourceLoaded&&(El=rt))),checkEnoughLoaded()},checkEnoughLoaded=()=>{El/rt>=.75&&(0===Co||Tl/Co>=.75)&&(this.off("sourcedata",onSourceData),this.off("sourcedataloading",onSourceDataLoading),Qe())};this.on("sourcedataloading",onSourceDataLoading),this.on("sourcedata",onSourceData)}))}_initMapPosition(){this._options.center&&this._options.center!=[0,0]||this._options.zoom&&0!==this._options.zoom||this._options.hash||this._parent.onceAPIReady().then((()=>{var Qe,rt;let Co=null===(Qe=this._parent)||void 0===Qe||null===(rt=Qe.api)||void 0===rt?void 0:rt.getDataBbox();if(Co)try{Co=new(Gl().LngLatBounds)(Co),this.loaded()?this.fitBounds(Co,{animate:!1}):this.waitForEnoughMapLoaded().then((()=>this.fitBounds(Co,{animate:!1})))}catch(El){console.warn("Received invalid bbox: "+Co)}}))}_loadMarkerImages(){[{id:"pnx-marker",img:kl},{id:"pnx-arrow-flat",img:Dl},{id:"pnx-arrow-360",img:Rl}].forEach((Qe=>{const rt=new Image(64,64);rt.onload=()=>this.addImage(Qe.id,rt),rt.src=Qe.img}))}_hasQualityScore(){var Qe,rt,Co,El;const Tl=(null===(Qe=this.getStyle())||void 0===Qe||null===(rt=Qe.metadata)||void 0===rt?void 0:rt["panoramax:fields"])||{};return(null===Tl||void 0===Tl||null===(Co=Tl.pictures)||void 0===Co?void 0:Co.includes("gps_accuracy"))&&(null===Tl||void 0===Tl||null===(El=Tl.pictures)||void 0===El?void 0:El.includes("h_pixel_density"))}_hasGridStats(){var Qe,rt,Co,El,Tl,kl;const Ll=(null===(Qe=this.getStyle())||void 0===Qe||null===(rt=Qe.metadata)||void 0===rt?void 0:rt["panoramax:fields"])||{};return(null===Ll||void 0===Ll||null===(Co=Ll.grid)||void 0===Co?void 0:Co.includes("nb_360_pictures"))&&(null===Ll||void 0===Ll||null===(El=Ll.grid)||void 0===El?void 0:El.includes("nb_flat_pictures"))&&(null===Ll||void 0===Ll||null===(Tl=Ll.grid)||void 0===Tl?void 0:Tl.includes("coef_360_pictures"))&&(null===Ll||void 0===Ll||null===(kl=Ll.grid)||void 0===kl?void 0:kl.includes("coef_flat_pictures"))}reloadVectorTiles(){[...this._userLayers].forEach((Qe=>{const rt=this.getSource((0,El.getUserSourceId)(Qe));rt.setTiles(rt.tiles)}))}hasTwoBackgrounds(){return void 0!==this.getLayer(El.RASTER_LAYER_ID)}getBackground(){if(!this.getLayer(El.RASTER_LAYER_ID))return"streets";return"visible"==this.getLayoutProperty(El.RASTER_LAYER_ID,"visibility")?"aerial":"streets"}setBackground(Qe){if(!this.getLayer(El.RASTER_LAYER_ID)&&"aerial"===Qe)throw new Error("No aerial imagery available");this.getLayer(El.RASTER_LAYER_ID)&&(this.setLayoutProperty(El.RASTER_LAYER_ID,"visibility","aerial"===Qe?"visible":"none"),this.fire("background-changed",{background:Qe||"streets"}))}getVisibleUsers(){return[...this._userLayers].filter((Qe=>"visible"===this.getLayoutProperty((0,El.getUserLayerId)(Qe,"pictures"),"visibility")))}async setVisibleUsers(){let Qe=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];"string"===typeof Qe&&(Qe=[Qe]),await Promise.all(Qe.filter((Qe=>""!=Qe&&!this._userLayers.has(Qe))).map((Qe=>this._createPicturesTilesLayer(Qe))));const rt=["pictures","sequences","sequences_plus","grid","pictures_symbols"];[...this._userLayers].forEach((Co=>{rt.forEach((rt=>{const Tl=(0,El.getUserLayerId)(Co,rt);this.getLayer(Tl)&&this.setLayoutProperty(Tl,"visibility",Qe.includes(Co)?"visible":"none")}))})),this.fire("users-changed",{usersIds:Qe})}filterUserLayersContent(Qe,rt){[...this._userLayers].forEach((Co=>{this.setFilter((0,El.getUserLayerId)(Co,Qe),rt),"sequences"===Qe&&this.getLayer((0,El.getUserLayerId)(Co,"sequences_plus"))&&this.setFilter((0,El.getUserLayerId)(Co,"sequences_plus"),rt),"pictures"===Qe&&this.getLayer((0,El.getUserLayerId)(Co,"pictures_symbols"))&&this.setFilter((0,El.getUserLayerId)(Co,"pictures_symbols"),rt)}))}displayPictureMarker(Qe,rt,Co){let Tl=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this._picMarkerPreview.remove(),void 0!==Qe&&void 0!==rt?this._picMarker.setLngLat([Qe,rt]).setRotation(Co).addTo(this):this._picMarker.remove(),this.reloadLayersStyles(),Tl||void 0===Qe||void 0===rt||this.flyTo({center:[Qe,rt],zoom:this.getZoom()<El.TILES_PICTURES_ZOOM+2?El.TILES_PICTURES_ZOOM+2:this.getZoom(),maxDuration:2e3})}reloadLayersStyles(){const updateStyle=(Qe,rt)=>{[...this._userLayers].forEach((Co=>{for(let Tl in rt.layout)this.setLayoutProperty((0,El.getUserLayerId)(Co,Qe),Tl,rt.layout[Tl]);for(let Tl in rt.paint)this.setPaintProperty((0,El.getUserLayerId)(Co,Qe),Tl,rt.paint[Tl])}))};["pictures","pictures_symbols","sequences"].forEach((Qe=>{updateStyle(Qe,this._getLayerStyleProperties(Qe))}))}async _createPicturesTilesLayer(Qe){this._userLayers.add(Qe);const rt=this.getStyle().layers.find(El.isLabelLayer);if("geovisio"!==Qe&&!this.getSource(`geovisio_${Qe}`)){const Co=await this._parent.api.getUserMapStyle(Qe);Object.entries(Co.sources).forEach((Qe=>{let[rt,Co]=Qe;return this.addSource(rt,Co)})),Co.layers=Co.layers||[];Co.layers.concat((0,El.getMissingLayerStyles)(Co.sources,Co.layers)).filter((Qe=>Object.keys(Qe).length>0)).forEach((Qe=>this.addLayer(Qe,null===rt||void 0===rt?void 0:rt.id)))}this._picPreviewTimer=null,this._picPopup=new(Gl().Popup)({closeButton:!1,closeOnClick:!this._parent.isWidthSmall(),offset:3}),this._picPopup.on("close",(()=>{delete this._picPopup._picId}));const Co=(0,El.getUserLayerId)(Qe,"pictures");this.on("mousemove",Co,(Qe=>{this.getCanvas().style.cursor="pointer";const rt=Object.assign({},Qe);clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>this._attachPreviewToPictures(rt,Co)),100)})),this.on("mouseleave",Co,(()=>{clearTimeout(this._picPreviewTimer),this.getCanvas().style.cursor="",this._picPopup._picId,this._picPopup.remove()})),this.on("click",Co,this._onPictureClick.bind(this));const Tl=(0,El.getUserLayerId)(Qe,"sequences_plus");this.on("mousemove",Tl,(Qe=>{if(this._onSequenceHover(Qe),this.getZoom()<=El.TILES_PICTURES_ZOOM+1&&(this.getCanvas().style.cursor="pointer",Qe.features[0].properties.id)){const rt=Object.assign({},Qe);clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>this._attachPreviewToPictures(rt,Tl)),100)}})),this.on("mouseleave",Tl,(()=>{clearTimeout(this._picPreviewTimer),this.getCanvas().style.cursor="",this._picPopup._picId,this._picPopup.remove()})),this.on("click",Tl,(Qe=>{Qe.preventDefault(),this.getZoom()<=El.TILES_PICTURES_ZOOM+1&&this._onSequenceClick(Qe)})),"geovisio"===Qe&&this.getLayer("geovisio_grid")&&(this.on("mousemove","geovisio_grid",(Qe=>{if(this.getZoom()<=El.TILES_PICTURES_ZOOM+1){this.getCanvas().style.cursor="pointer";const rt=Object.assign({},Qe);clearTimeout(this._picPreviewTimer),this._picPreviewTimer=setTimeout((()=>this._attachPreviewToPictures(rt,"geovisio_grid")),100)}})),this.on("mouseleave","geovisio_grid",(()=>{clearTimeout(this._picPreviewTimer),this.getCanvas().style.cursor="",this._picPopup._picId,this._picPopup.remove()})),this.on("click","geovisio_grid",(Qe=>{Qe.preventDefault(),this.flyTo({center:Qe.lngLat,zoom:El.TILES_PICTURES_ZOOM-6})}))),this.on("click",(Qe=>{!1===Qe.defaultPrevented&&(clearTimeout(this._picPreviewTimer),this._picPopup.remove())}))}_getLayerStyleProperties(Qe){if("pictures_symbols"===Qe)return{paint:{},layout:{"icon-image":["case",["==",["get","id"],this._parent.picture],"",["==",["get","type"],"equirectangular"],"pnx-arrow-360","pnx-arrow-flat"],"symbol-sort-key":this._getLayerSortStyle(Qe)}};{const rt={pictures:"circle",sequences:"line"};return{paint:Object.assign({[`${rt[Qe]}-color`]:this._getLayerColorStyle(Qe)},El.VECTOR_STYLES[Qe.toUpperCase()].paint),layout:Object.assign({[`${rt[Qe]}-sort-key`]:this._getLayerSortStyle(Qe)},El.VECTOR_STYLES[Qe.toUpperCase()].layout)}}}_getLayerColorStyle(Qe){const rt=["case",["==",["get","hidden"],!0],Tl.COLORS.HIDDEN,["==",["get","geovisio:status"],"hidden"],Tl.COLORS.HIDDEN],Co=this._parent.sequence;return"sequences"==Qe&&Co?rt.push(["==",["get","id"],Co],Tl.COLORS.SELECTED):Qe.startsWith("pictures")&&Co&&rt.push(["in",Co,["get","sequences"]],Tl.COLORS.SELECTED),rt.push(Tl.COLORS.BASE),rt}_getLayerSortStyle(Qe){const rt=["case",["==",["get","hidden"],!0],90],Co=this._parent.sequence;return"sequences"==Qe&&Co?rt.push(["==",["get","id"],Co],100):Qe.startsWith("pictures")&&Co&&rt.push(["in",Co,["get","sequences"]],100),rt.push(10),rt}_attachPreviewToPictures(Qe,rt){let Co=Qe.features.pop();if(!Co||Co.properties.id==this._picPopup._picId)return;let Tl=null;if(rt.endsWith("pictures")?Tl=Co.geometry.coordinates.slice():Qe.lngLat&&(Tl=[Qe.lngLat.lng,Qe.lngLat.lat]),!Tl){const Qe="LineString"===Co.geometry.type?[Co.geometry.coordinates]:Co.geometry.coordinates;let rt=null;const El=this.getBounds(),kl=El.getCenter();for(let Co=0;Co<Qe.length;Co++)for(let Ll=0;Ll<Qe[Co].length;Ll++)if(El.contains(Qe[Co][Ll])){let El=kl.distanceTo(new(Gl().LngLat)(...Qe[Co][Ll]));(null===rt||El<rt)&&(Tl=Qe[Co][Ll],rt=El)}if(!Tl)return}this._picPopup.setLngLat(Tl).addTo(this),this._picThumbUrl[Co.properties.id]||this._picPopup.setDOMContent((0,El.getThumbGif)(this._parent._t)),this._picPopup._loading=Co.properties.id,this._picPopup._picId=Co.properties.id;const displayThumb=Qe=>{if(this._picPopup._loading===Co.properties.id)if(delete this._picPopup._loading,Qe){let rt=document.createElement("img");rt.classList.add("pnx-map-thumb"),rt.alt=this._parent._t.map.thumbnail;let El=new Image;if(El.src=Qe,El.addEventListener("load",(()=>{Co.properties.hidden?rt.children[0].src=El.src:rt.src=El.src,this._picPopup.setDOMContent(rt)})),Co.properties.hidden){const Qe=document.createElement("div");Qe.classList.add("pnx-map-thumb-legend"),Qe.appendChild(document.createTextNode(this._parent._t.map.not_public));const Co=document.createElement("div");Co.appendChild(rt),Co.appendChild(Qe),rt=Co}}else this._picPopup.remove()};rt.endsWith("pictures")?this._getPictureThumbURL(Co.properties.id).then(displayThumb):rt.endsWith("grid")?this._getThumbURL(Tl).then(displayThumb):this._getSequenceThumbURL(Co.properties.id,new(Gl().LngLat)(...Tl)).then(displayThumb)}_getThumbURL(Qe){return this._parent.api.getPicturesAroundCoordinates(Qe[1],Qe[0],.1,1).then((Qe=>{var rt;const Co=null===Qe||void 0===Qe||null===(rt=Qe.features)||void 0===rt?void 0:rt.pop();return Co?this._parent.api.findThumbnailInPictureFeature(Co):null}))}_getSequenceThumbURL(Qe,rt){return rt?this._parent.api.getPicturesAroundCoordinates(rt.lat,rt.lng,1,1,Qe).then((rt=>{var Co;return(null===rt||void 0===rt||null===(Co=rt.features)||void 0===Co?void 0:Co.length)>0?this._parent.api.findThumbnailInPictureFeature(rt.features[0]):this._parent.api.getPictureThumbnailURLForSequence(Qe)})):this._parent.api.getPictureThumbnailURLForSequence(Qe)}_getPictureThumbURL(Qe,rt){let Co=null;return Qe&&(void 0!==this._picThumbUrl[Qe]?Co="string"===typeof this._picThumbUrl[Qe]?Promise.resolve(this._picThumbUrl[Qe]):this._picThumbUrl[Qe]:(this._picThumbUrl[Qe]=this._parent.api.getPictureThumbnailURL(Qe,rt).then((rt=>rt?(this._picThumbUrl[Qe]=rt,rt):(this._picThumbUrl[Qe]=null,null))).catch((()=>{this._picThumbUrl[Qe]=null})),Co=this._picThumbUrl[Qe])),Co}_getPictureMarker(){let Qe=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const rt=document.createElement("img");return rt.src=Qe?Ll:kl,rt.alt="",new(Gl().Marker)({element:rt})}_onSequenceHover(Qe){var rt;Qe.preventDefault(),Qe.features.length>0&&null!==(rt=Qe.features[0].properties)&&void 0!==rt&&rt.id&&this.fire("sequence-hover",{seqId:Qe.features[0].properties.id})}_onSequenceClick(Qe){var rt;Qe.preventDefault(),Qe.features.length>0&&null!==(rt=Qe.features[0].properties)&&void 0!==rt&&rt.id&&this.fire("sequence-click",{seqId:Qe.features[0].properties.id,coordinates:Qe.lngLat})}_onPictureClick(Qe){var rt,Co;Qe.preventDefault();const El=(null===Qe||void 0===Qe||null===(rt=Qe.features)||void 0===rt?void 0:rt.length)>0?Qe.features[0]:null;if(null!==El&&void 0!==El&&null!==(Co=El.properties)&&void 0!==Co&&Co.id){let rt=null;try{El.properties.sequences&&(Array.isArray(El.properties.sequences)||(El.properties.sequences=JSON.parse(El.properties.sequences)),rt=El.properties.sequences.pop())}catch(Qe){console.log("Sequence ID is not available in vector tiles for picture "+El.properties.id)}this.fire("picture-click",{picId:El.properties.id,seqId:rt,feature:El})}}}},2771:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>MapMore,T:()=>Dl});var El=Co(5642),Tl=Co(7343),kl=Co(8340);const Ll={DEFAULT:"default",AGE:"age",TYPE:"type",SCORE:"score"},Dl=["minDate","maxDate","pic_type","camera","theme","qualityscore"];class MapMore extends El.A{constructor(Qe,rt){super(Qe,rt,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),this._mapFilters={},this._options.theme&&(this._mapFilters={theme:this._options.theme})}reloadLayersStyles(){if(super.reloadLayersStyles(),this._hasGridStats()){let Qe="coef";this._mapFilters.pic_type&&(Qe="flat"==this._mapFilters.pic_type?"coef_flat_pictures":"coef_360_pictures"),this.getStyle().layers.filter((Qe=>Qe.id.endsWith("_grid"))).forEach((rt=>{const Co=(0,kl.switchCoefValue)(rt,Qe);for(let Qe in Co.layout)this.setLayoutProperty(rt.id,Qe,Co.layout[Qe]);for(let Qe in Co.paint)this.setPaintProperty(rt.id,Qe,Co.paint[Qe])}))}}_getDatesForLayerColors(){const Qe=864e5,rt=Date.now();return[rt-30*Qe,rt-365*Qe,rt-730*Qe].map((Qe=>new Date(Qe).toISOString().split("T")[0]))}_getLayerColorStyle(Qe){var rt,Co,El,Dl,Rl,Ul,Gl,Zl;const Wl=["case",["==",["get","hidden"],!0],Tl.COLORS.HIDDEN],ql=(null===(rt=this._parent.psv)||void 0===rt||null===(Co=rt._myVTour)||void 0===Co||null===(El=Co.state)||void 0===El?void 0:El.loadingNode)||(null===(Dl=this._parent.psv)||void 0===Dl||null===(Rl=Dl._myVTour)||void 0===Rl||null===(Ul=Rl.state)||void 0===Ul||null===(Gl=Ul.currentNode)||void 0===Gl?void 0:Gl.id),Ql=ql?null===(Zl=this._parent.psv)||void 0===Zl?void 0:Zl._picturesSequences[ql]:null;if("sequences"==Qe&&Ql?Wl.push(["==",["get","id"],Ql],Tl.COLORS.SELECTED):"pictures"==Qe&&Ql&&Wl.push(["in",Ql,["get","sequences"]],Tl.COLORS.SELECTED),this._mapFilters.theme==Ll.AGE){const rt="sequences"==Qe?"date":"ts",Co=this._getDatesForLayerColors();Wl.push(["!",["has",rt]],Tl.COLORS.BASE,[">=",["get",rt],Co[0]],Tl.COLORS.PALETTE_4,[">=",["get",rt],Co[1]],Tl.COLORS.PALETTE_3,[">=",["get",rt],Co[2]],Tl.COLORS.PALETTE_2,Tl.COLORS.PALETTE_1)}else this._mapFilters.theme==Ll.TYPE?Wl.push(["!",["has","type"]],Tl.COLORS.BASE,["==",["get","type"],"equirectangular"],Tl.COLORS.QUALI_1,Tl.COLORS.QUALI_2):this._mapFilters.theme==Ll.SCORE?Wl.push(["==",kl.MAP_EXPR_QUALITYSCORE,5],Tl.QUALITYSCORE_VALUES[0].color,["==",kl.MAP_EXPR_QUALITYSCORE,4],Tl.QUALITYSCORE_VALUES[1].color,["==",kl.MAP_EXPR_QUALITYSCORE,3],Tl.QUALITYSCORE_VALUES[2].color,["==",kl.MAP_EXPR_QUALITYSCORE,2],Tl.QUALITYSCORE_VALUES[3].color,Tl.QUALITYSCORE_VALUES[4].color):Wl.push(Tl.COLORS.BASE);return Wl}_getLayerSortStyle(Qe){var rt,Co,El,Tl,Dl,Rl,Ul,Gl;const Zl=["case",["==",["get","hidden"],!0],90],Wl=(null===(rt=this._parent.psv)||void 0===rt||null===(Co=rt._myVTour)||void 0===Co||null===(El=Co.state)||void 0===El?void 0:El.loadingNode)||(null===(Tl=this._parent.psv)||void 0===Tl||null===(Dl=Tl._myVTour)||void 0===Dl||null===(Rl=Dl.state)||void 0===Rl||null===(Ul=Rl.currentNode)||void 0===Ul?void 0:Ul.id),ql=Wl?null===(Gl=this._parent.psv)||void 0===Gl?void 0:Gl._picturesSequences[Wl]:null;if("sequences"==Qe&&ql?Zl.push(["==",["get","id"],ql],100):"pictures"==Qe&&ql&&Zl.push(["in",ql,["get","sequences"]],100),this._mapFilters.theme==Ll.AGE){const rt="sequences"==Qe?"date":"ts",Co=this._getDatesForLayerColors();Zl.push(["!",["has",rt]],0,[">=",["get",rt],Co[0]],50,[">=",["get",rt],Co[1]],49,[">=",["get",rt],Co[2]],48)}else this._mapFilters.theme==Ll.TYPE?Zl.push(["!",["has","type"]],0,["==",["get","type"],"equirectangular"],50):this._mapFilters.theme==Ll.SCORE&&Zl.push(["==",kl.MAP_EXPR_QUALITYSCORE,5],80,["==",kl.MAP_EXPR_QUALITYSCORE,4],65,["==",kl.MAP_EXPR_QUALITYSCORE,3],50,["==",kl.MAP_EXPR_QUALITYSCORE,2],35,["==",kl.MAP_EXPR_QUALITYSCORE,1],20);return Zl.push(10),Zl}setFilters(Qe){let rt=arguments.length>1&&void 0!==arguments[1]&&arguments[1],Co=[],El=[],Tl=!1;if(this._mapFilters={},Qe.minDate&&""!==Qe.minDate&&(this._mapFilters.minDate=Qe.minDate,Co.push([">=",["get","date"],Qe.minDate]),El.push([">=",["get","ts"],Qe.minDate])),Qe.maxDate&&""!==Qe.maxDate){this._mapFilters.maxDate=Qe.maxDate,Co.push(["<=",["get","date"],Qe.maxDate]);let rt=new Date(Qe.maxDate);rt.setDate(rt.getDate()+1),rt=rt.toISOString().split("T")[0],El.push(["<=",["get","ts"],rt])}if(Qe.pic_type&&""!==Qe.pic_type&&(this._mapFilters.pic_type=Qe.pic_type,Co.push(["==",["get","type"],Qe.pic_type]),El.push(["==",["get","type"],Qe.pic_type])),this._hasGridStats()&&(Tl=!0),Qe.camera&&""!==Qe.camera){this._mapFilters.camera=Qe.camera;const rt=Qe.camera.toLowerCase().trim()+" ",Tl=Qe.camera.toLowerCase().trim()+"zzzzzzzzzzzzzzzzzzzz",kl=["collator",{"case-sensitive":!1,"diacritic-sensitive":!1}];Co.push([">=",["get","model"],rt,kl]),Co.push(["<=",["get","model"],Tl,kl]),El.push([">=",["get","model"],rt,kl]),El.push(["<=",["get","model"],Tl,kl])}Qe.qualityscore&&Qe.qualityscore.length>0&&(this._mapFilters.qualityscore=Qe.qualityscore,Co.push(["in",kl.MAP_EXPR_QUALITYSCORE,["literal",this._mapFilters.qualityscore]]),El.push(["in",kl.MAP_EXPR_QUALITYSCORE,["literal",this._mapFilters.qualityscore]])),Qe.theme&&Object.values(Ll).includes(Qe.theme)&&(this._mapFilters.theme=Qe.theme,Tl=!0),0==Co.length?Co=null:Co.unshift("all"),0==El.length?El=null:(El.unshift("all"),El=["step",["zoom"],!0,kl.TILES_PICTURES_ZOOM,El]),Tl&&this.reloadLayersStyles();const Dl=this.getVisibleUsers().includes("geovisio");Co&&Dl&&(Co=["step",["zoom"],!0,7,Co]),this.filterUserLayersContent("sequences",Co),this.filterUserLayersContent("pictures",El),!rt&&(null!==Co||null!==El||null!==this._mapFilters.theme&&this._mapFilters.theme!==Ll.DEFAULT)&&Dl&&this.getZoom()<7&&!this._hasGridStats()&&this.easeTo({zoom:7}),this.fire("filters-changed",Object.assign({},this._mapFilters))}}},9048:(Qe,rt,Co)=>{"use strict";Co.d(rt,{Ay:()=>Photo,LM:()=>ql,Vf:()=>Ql,cS:()=>Wl});Co(5003);var El=Co(5975),Tl=Co(2305),kl=Co(7343),Ll=Co(508),Dl=(Co(3961),Co(1080),Co(2710),Co(1575),Co(1545)),Rl=Co(3348),Ul=Co(3727);const Gl={baseUrl:El,width:1280,cols:2,rows:1,tileUrl:()=>null},Zl={id:kl.BASE_PANORAMA_ID,caption:"",panorama:Gl,links:[],gps:[0,0],sequence:{},sphereCorrection:{},horizontalFov:360,properties:{}},Wl=30,ql=250,Ql=3e3;Dl.jM.useNewAnglesOrder=!0;class Photo extends Dl.jM{constructor(Qe,rt){var Co,El;let Tl=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super({container:rt,adapter:[Ul.A,{showErrorTile:!1,baseBlur:!1,resolution:Qe.isWidthSmall()?32:64,shouldGoFast:Tl.shouldGoFast}],withCredentials:"include"==(null===Qe||void 0===Qe||null===(Co=Qe.fetchOptions)||void 0===Co?void 0:Co.credentials),requestHeaders:null===Qe||void 0===Qe||null===(El=Qe.fetchOptions)||void 0===El?void 0:El.headers,panorama:Gl,lang:Qe._t.psv,minFov:5,loadingTxt:"&nbsp;",navbar:null,rendererParameters:{preserveDrawingBuffer:!Qe.isWidthSmall()},plugins:[[Rl.$,{dataMode:"server",positionMode:"gps",renderMode:"3d",preload:!0,getNode:()=>{},transitionOptions:()=>{},arrowsPosition:{linkOverlapAngle:Math.PI/6}}]],...Tl}),this._parent=Qe,this._options=Tl,rt.classList.add("pnx-psv"),this._shouldGoFast=(null===Tl||void 0===Tl?void 0:Tl.shouldGoFast)||(()=>!1),this._transitionDuration=(null===Tl||void 0===Tl?void 0:Tl.transitionDuration)||ql,this._myVTour=this.getPlugin(Rl.$),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._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.addEventListener("position-updated",this._onPositionUpdated.bind(this)),this.addEventListener("zoom-updated",this._onZoomUpdated.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(Qe){var rt,Co;if(!Qe||Qe===kl.BASE_PANORAMA_ID)return Zl;const El=await fetch(this._parent.api.getPictureMetadataUrl(Qe,this._picturesSequences[Qe]),this._parent.api._getFetchOptions());let Tl=await El.json();if(Tl.features&&(Tl=Tl.features.pop()),!Tl||0===Object.keys(Tl).length||!El.ok)throw this._parent.loader&&this._parent.loader.dismiss(!0,this._parent._t.pnx.error_pic),new Error("Picture with ID "+Qe+" was not found");this._picturesSequences[Qe]=Tl.collection;const Dl=(0,Ll.apiFeatureToPSVNode)(Tl,this._parent._t,this._parent._isInternetFast,this._picturesNavFilter.bind(this));var Rl,Ul;null!==Dl&&void 0!==Dl&&null!==(rt=Dl.sequence)&&void 0!==rt&&rt.prevPic&&(this._picturesSequences[null===Dl||void 0===Dl||null===(Rl=Dl.sequence)||void 0===Rl?void 0:Rl.prevPic]=Tl.collection);null!==Dl&&void 0!==Dl&&null!==(Co=Dl.sequence)&&void 0!==Co&&Co.nextPic&&(this._picturesSequences[null===Dl||void 0===Dl||null===(Ul=Dl.sequence)||void 0===Ul?void 0:Ul.nextPic]=Tl.collection);return Dl}_psvNodeTransition(Qe,rt,Co){var El,Tl,Ll;let Dl={};const Rl=this._shouldGoFast()?0:Math.min(ql,this._transitionDuration),Ul=Rl>100,Gl=null!=(Co||(null===rt||void 0===rt?void 0:rt.links.find((rt=>rt.nodeId==Qe.id)))),Zl=rt&&Qe.sequence.id===rt.sequence.id,Ql=((null===rt||void 0===rt||null===(El=rt.properties)||void 0===El?void 0:El["view:azimuth"])||0)*(Math.PI/180),Kl=((null===Qe||void 0===Qe||null===(Tl=Qe.properties)||void 0===Tl?void 0:Tl["view:azimuth"])||0)*(Math.PI/180);this.setOption("maxFov",Math.min(3*Qe.horizontalFov/4,90));const Jl={showLoader:!1,effect:"none",speed:0,rotation:!1,rotateTo:{pitch:0,yaw:0},zoomTo:Wl};if(360==Qe.horizontalFov)Dl=rt?(0,kl.getDistance)(rt.gps,Qe.gps)>=.001?Jl:{speed:Rl,effect:Gl&&Ul?"fade":"none",rotation:Gl&&Zl&&Ul,rotateTo:this.getPosition()}:Jl;else if(Zl){const Qe=this.getPosition().yaw,Co=rt.horizontalFov*(Math.PI/180)/2,El=Qe<=Co||Qe>=2*Math.PI-Co,Tl=Math.abs(Ql-Kl)<=Math.PI/4;Dl={speed:Rl,effect:Gl&&Tl&&Ul?"fade":"none",rotation:Gl&&Tl&&Ul,rotateTo:El?this.getPosition():{pitch:0,yaw:0},zoomTo:El?this.getZoomLevel():Wl}}else Dl=Jl;"fade"===Dl.effect&&Dl.speed>=150?setTimeout(this._clearArrows,Dl.speed-100):this._clearArrows();const tc=new CustomEvent("picture-loading",{detail:{...Object.assign({},this.getXYZ(),Dl.rotateTo?{x:180*(Kl+Dl.rotateTo.yaw)/Math.PI}:null,Dl.zoomTo?{z:Dl.zoomTo}:null),picId:Qe.id,lon:Qe.gps[0],lat:Qe.gps[1],first:(null===(Ll=this._parent._initParams)||void 0===Ll?void 0:Ll.getParentPostInit().picture)==Qe.id}});return this.dispatchEvent(tc),Dl}_onEnterArrow(Qe){const rt=Qe.link,Co=Qe.node;let El;Co&&(El=360===Co.horizontalFov?(this.getPictureOriginalHeading()+180*this.getPosition().yaw/Math.PI)%360:this.getPictureOriginalHeading());const Tl=new CustomEvent("picture-preview-started",{detail:{picId:rt.nodeId,coordinates:rt.gps,direction:El}});this.dispatchEvent(Tl)}_onLeaveArrow(Qe){const rt=Qe.link,Co=new CustomEvent("picture-preview-stopped",{detail:{picId:rt.nodeId}});this.dispatchEvent(Co)}_onPositionUpdated(Qe){let{position:rt}=Qe;const Co=(0,kl.positionToXYZ)(rt,this.getZoomLevel());Co.x+=this.getPictureOriginalHeading(),Co.x=Co.x%360;const El=new CustomEvent("view-rotated",{detail:Co});this.dispatchEvent(El),this._onTilesStartLoading()}_onZoomUpdated(Qe){let{zoomLevel:rt}=Qe;const Co=new CustomEvent("view-rotated",{detail:{...this.getXY(),z:rt}});this.dispatchEvent(Co),this._onTilesStartLoading()}_onNodeChanged(Qe){for(let Tl of document.getElementsByClassName("pnx-psv-tour-arrows"))Tl.classList.remove("pnx-clicked");if(Qe.node.id){var rt,Co,El;const Tl=(null===(rt=this._parent._initParams)||void 0===rt?void 0:rt.getParentPostInit().picture)==Qe.node.id;this._parent.select(null===(Co=Qe.node)||void 0===Co||null===(El=Co.sequence)||void 0===El?void 0:El.id,Qe.node.id);const kl=this.getPictureMetadata();if(!kl)return void this.dispatchEvent(new CustomEvent("picture-loaded",{detail:{}}));this._prevSequence=kl.sequence.id;const Ll=new CustomEvent("picture-loaded",{detail:{...this.getXYZ(),picId:Qe.node.id,lon:kl.gps[0],lat:kl.gps[1],first:Tl}});this.dispatchEvent(Ll),kl.panorama.hdUrl?(this.setOption("downloadUrl",kl.panorama.hdUrl),this.setOption("downloadName",Qe.node.id+".jpg")):this.setOption("downloadUrl",null)}this._onTilesStartLoading()}_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 Qe=new CustomEvent("picture-tiles-loaded",{detail:{picId:this._myVTour.state.currentNode.id}});this.dispatchEvent(Qe)}clearInterval(this._tilesQueueTimer),delete this._tilesQueueTimer}}),100)}getPictureMetadata(){var Qe,rt,Co;return(null===(Qe=this._myVTour)||void 0===Qe||null===(rt=Qe.state)||void 0===rt||null===(Co=rt.currentNode)||void 0===Co?void 0:Co.id)===kl.BASE_PANORAMA_ID?null:this._myVTour.state.currentNode?Object.assign({},this._myVTour.state.currentNode):null}_onSelect(Qe){var rt;Qe.detail.seqId&&(this._picturesSequences[Qe.detail.picId]=Qe.detail.seqId),(null===(rt=this._myVTour.getCurrentNode())||void 0===rt?void 0:rt.id)!==Qe.detail.picId&&(this.loader.show(),this._myVTour.setCurrentNode(Qe.detail.picId).catch((Qe=>{this.showErrorOverlay(Qe,this._parent._t.pnx.error_pic,!0)})))}goToNextPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");const Qe=this.getPictureMetadata().sequence.nextPic;if(!Qe)throw new Error("No next picture available");this._parent.select(this.getPictureMetadata().sequence.id,Qe)}goToPrevPicture(){if(!this.getPictureMetadata())throw new Error("No picture currently selected");const Qe=this.getPictureMetadata().sequence.prevPic;if(!Qe)throw new Error("No previous picture available");this._parent.select(this.getPictureMetadata().sequence.id,Qe)}async goToPosition(Qe,rt){return this._parent.api.getPicturesAroundCoordinates(Qe,rt).then((Qe=>{if(Qe.features.length>0){const rt=Qe.features.pop();return this._parent.select(null===rt||void 0===rt?void 0:rt.collection,rt.id),rt.id}return Promise.reject(new Error("No picture found nearby given coordinates"))}))}getXY(){const Qe=(0,kl.positionToXYZ)(this.getPosition());return Qe.x=(Qe.x+this.getPictureOriginalHeading())%360,Qe}getXYZ(){const Qe=this.getXY();return Qe.z=this.getZoomLevel(),Qe}getPictureOriginalHeading(){var Qe,rt;return(null===(Qe=this.getPictureMetadata())||void 0===Qe||null===(rt=Qe.properties)||void 0===rt?void 0:rt["view:azimuth"])||0}getPictureRelativeHeading(){return(0,kl.getRelativeHeading)(this.getPictureMetadata())}clearPictureMetadataCache(){var Qe,rt,Co,El;const Tl=null===(Qe=this.getPictureMetadata())||void 0===Qe?void 0:Qe.id,kl=null===(rt=this.getPictureMetadata())||void 0===rt||null===(Co=rt.sequence)||void 0===Co?void 0:Co.id;null===(El=this._myVTour.state.currentTooltip)||void 0===El||El.hide(),this._myVTour.state.currentTooltip=null,this._myVTour.state.currentNode=null,this._myVTour.state.preload={},this._myVTour.datasource.nodes={},Tl&&this._parent.select(kl,Tl)}setXYZ(Qe,rt,Co){const El=(0,kl.xyzToPosition)(Qe-this.getPictureOriginalHeading(),rt,Co);this.rotate({yaw:El.yaw,pitch:El.pitch}),this.zoom(El.zoom)}setHigherContrast(Qe){this.renderer.renderer.toneMapping=Qe?3:0,this.renderer.renderer.toneMappingExposure=Qe?2:1,this.needsUpdate()}getTransitionDuration(){return this._transitionDuration}setTransitionDuration(Qe){if((Qe=parseFloat(Qe))<100||Qe>Ql)throw new Error("Invalid transition duration (should be between 100 and "+Ql+")");this._transitionDuration=Qe;const rt=new CustomEvent("transition-duration-changed",{detail:{value:Qe}});this.dispatchEvent(rt)}setPanorama(Qe,rt){const onFailure=Qe=>{var rt;return this.showErrorOverlay(Qe,null===(rt=this._parent)||void 0===rt?void 0:rt._t.pnx.error_pic,!0)};try{return super.setPanorama(Qe,rt).catch(onFailure)}catch(Co){onFailure(Co)}}showErrorOverlay(Qe,rt,Co){var El,kl,Ll,Dl;null!==(El=this._parent)&&void 0!==El&&El.loader.isVisible()||!this.overlay.isVisible()?null===(kl=this._parent)||void 0===kl||kl.loader.dismiss(Qe,rt,Co?()=>{var Qe;null===(Qe=this._parent)||void 0===Qe||Qe.loader.dismiss(),this.overlay.hide()}:void 0):(console.error(Qe),this.overlay.show({image:`<img style="width: 200px" src="${Tl}" alt="" />`,title:null===(Ll=this._parent)||void 0===Ll?void 0:Ll._t.pnx.error,text:rt+"<br />"+(null===(Dl=this._parent)||void 0===Dl?void 0:Dl._t.pnx.error_click),dissmisable:Co}))}playSequence(){this._sequencePlaying=!0;const Qe=new Event("sequence-playing",{bubbles:!0,composed:!0});this.dispatchEvent(Qe);const nextPicturePlay=()=>{if(this._sequencePlaying){this.addEventListener("picture-loaded",(()=>{this._playTimer=setTimeout((()=>{nextPicturePlay()}),this.getTransitionDuration())}),{once:!0});try{this.goToNextPicture()}catch(Qe){this.stopSequence()}}};this.addEventListener("click",(()=>this.stopSequence())),nextPicturePlay()}stopSequence(){this._sequencePlaying=!1,this._playTimer&&(clearTimeout(this._playTimer),delete this._playTimer),this.forceRefresh();const Qe=new Event("sequence-stopped",{bubbles:!0,composed:!0});this.dispatchEvent(Qe)}isSequencePlaying(){return this._sequencePlaying}toggleSequencePlaying(){this.isSequencePlaying()?this.stopSequence():this.playSequence()}getPicturesNavigation(){return this._picturesNavigation}setPicturesNavigation(Qe){"none"===Qe&&(Qe="pic"),this._picturesNavigation=Qe;const rt=new CustomEvent("pictures-navigation-changed",{detail:{value:Qe}});this.dispatchEvent(rt)}_picturesNavFilter(Qe){switch(this._picturesNavigation){case"seq":return["next","prev"].includes(Qe.rel);case"pic":case"none":return!1;default:return!0}}forceRefresh(){var Qe;const rt=this._myVTour.getCurrentNode();if(rt&&rt.panorama.baseUrl!==(null===rt||void 0===rt||null===(Qe=rt.panorama)||void 0===Qe?void 0:Qe.origBaseUrl)){const Qe=this.getZoomLevel(),Co=this.getPosition();this._myVTour.state.currentNode=null,this._myVTour.setCurrentNode(rt.id,{zoomTo:Qe,rotateTo:Co,fadeIn:!1,speed:0,rotation:!1})}rt&&rt.panorama.rows>1&&this.adapter.__refresh()}}},4374:(Qe,rt,Co)=>{"use strict";Co.d(rt,{A:()=>Popup});var El=Co(4542),Tl=Co(5995),kl=Co(8591),Ll=Co(6627);class Popup extends El.WF{constructor(){super(),this.visible=!1}connectedCallback(){super.connectedCallback(),this.addEventListener("click",(Qe=>{Qe.target===this&&this.close()})),document.addEventListener("keyup",(Qe=>{"Escape"===Qe.key&&this.visible&&this.close()}))}attributeChangedCallback(Qe,rt,Co){super.attributeChangedCallback(Qe,rt,Co),"visible"==Qe&&(""!==Co&&!0!==Co||this.dispatchEvent(new Event("open")))}close(){this.visible=!1,this.dispatchEvent(new Event("close"))}render(){return El.qy`
1192
1192
  <div class="pnx-panel pnx-padded">
1193
1193
  <pnx-button
1194
1194
  class="btn-close"