@panoramax/web-viewer 5.1.2-develop-892ac969 → 5.1.2-develop-100d0be1

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.
@@ -2054,7 +2054,7 @@ function*(e,t){if(void 0!==e){let i=0;for(const n of e)yield t(n,i++)}}(this._re
2054
2054
  ${"empty"===this._icon?Ir(vo):H}
2055
2055
  ${"warn"===this._icon?Ir(Ls):H}
2056
2056
  </span>
2057
- </div>`}}customElements.define("pnx-search-bar",Qx);class Zx extends EventTarget{constructor(e,t={}){if(super(),null==e||"string"!=typeof e){const e=new Error("endpoint parameter is empty or not a valid string");throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),e}if(e.startsWith("/")&&(e=window.location.href.split("/").slice(0,3).join("/")+e),!Zx.isValidHttpUrl(e)){const t=new Error(`endpoint parameter is not a valid URL: ${e}`);throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:t}})),t}this._endpoint=e,this._isReady=0,this._dataBbox=null,this._fetchOpts=t?.fetch||{},this._metadata={},this._configuration=null,t.skipReadLanding||(this._readLanding=fetch(e,this._getFetchOptions()).then(e=>e.json()).then(e=>this._parseLanding(e,t)).catch(e=>(this._isReady=-1,console.error(e),this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),Promise.reject("Viewer failed to communicate with API"))).then(()=>(this._isReady=1,this.dispatchEvent(new Event("ready")),"API is ready")))}onceReady(){return-1===this._isReady?Promise.reject("Viewer failed to communicate with API"):1===this._isReady?Promise.resolve("API is ready"):this._readLanding}isReady(){return 1===this._isReady}getAvailableFeatures(){return Object.entries(this._endpoints).filter(e=>null!==e[1]).map(e=>e[0])}getUnavailableFeatures(){return Object.entries(this._endpoints).filter(e=>null===e[1]).map(e=>e[0])}_parseLanding(e,t){if(this._endpoints={collections:null,search:null,style:null,user_style:null,tiles:t?.tiles||null,user_tiles:null,user_search:null,collection_preview:null,item_preview:null,rss:null,report:null,queryables:null},!e||!e.links||!Array.isArray(e.links))throw new Error("API Landing page doesn't contain 'links' list");if(!e.stac_version.startsWith("1."))throw new Error(`API is not in a supported STAC version (Panoramax viewer supports only 1.x, API is ${e.stac_version})`);this._metadata.name=e.title||"Unnamed",this._metadata.stac_version=e.stac_version,this._metadata.geovisio_version=e.geovisio_version;const i=[],n=[];if([{rel:"search",type:"application/geo+json",endpointId:"search",mandatory:!0,missingIssue:"No direct access to pictures metadata."},{rel:"data",type:"application/json",endpointId:"collections",mandatory:!0,missingIssue:"No way for viewer to access sequences."},{rel:"data",type:"application/rss+xml",endpointId:"rss"},{rel:"xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"tiles"},{rel:"xyz-style",type:"application/json",endpointId:"style"},{rel:"user-xyz-style",type:"application/json",endpointId:"user_style"},{rel:"user-xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"user_tiles"},{rel:"user-search",type:"application/json",endpointId:"user_search",missingIssue:"Filter map data by user name will not be available."},{rel:"collection-preview",type:"image/jpeg",endpointId:"collection_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"item-preview",type:"image/jpeg",endpointId:"item_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"report",type:"application/json",endpointId:"report"},{rel:"http://www.opengis.net/def/rel/ogc/1.0/queryables",type:"application/schema+json",endpointId:"queryables",missingIssue:"Tags map overlay will not be available."}].forEach(t=>{const a=e.links.filter(e=>e.rel===t.rel&&e.type===t.type);if(0===a.length){if(!this._endpoints[t.endpointId]){let e=`API doesn't offer a '${t.rel}' (${t.type}) endpoint in its links`;t.missingIssue&&(e+=`\n${t.missingIssue}`),t.mandatory?i.push(e):t.missingIssue&&n.push(e)}}else{const e=1===a.length?a[0]:a.find(e=>e.title?.includes("v2"))||a[0];if(!Zx.isValidHttpUrl(e.href))throw new Error(`API endpoint '${e.rel}' (${e.type}) is not a valid URL: ${e.href}`);this._endpoints[t.endpointId]&&"xyz-style"!==t.endpointId||(this._endpoints[t.endpointId]=e.href)}}),this._endpoints.style||this._endpoints.tiles||n.push("API doesn't offer 'xyz' or 'xyz-style' endpoints in its links.\nMap widget will not be available."),this._endpoints.user_style||this._endpoints.user_tiles||n.push("API doesn't offer 'user-xyz' or 'user-xyz-style' endpoints in its links.\nFilter map data by user ID will not be available."),n.forEach(e=>console.warn(e)),i.length>0)throw new Error(i.join("\n"));const a=e?.extent?.spatial?.bbox;this._dataBbox=a&&Array.isArray(a)&&a.length>0&&Array.isArray(a[0])&&4===a[0].length?[[a[0][0],a[0][1]],[a[0][2],a[0][3]]]:null}_getFetchOptions(e=!1){const t=Object.assign({},this._fetchOpts);return e||(t.signal=AbortSignal.timeout(15e3)),t}_getMapRequestTransform(){const e=this._getFetchOptions();return delete e.signal,t=>{if(t.startsWith(this._endpoint)){if(Object.keys(e).length>0)return{url:t,...e}}else if(t.includes("data.geopf.fr")&&t.includes("@2x"))return{url:t.replace("@2x","")}}}_getPSVWithCredentials(){return"include"===this._getFetchOptions().credentials?e=>e.startsWith(this._endpoint):void 0}cleanResourceURL(e){if(!e)return;const t=new URL(this._endpoint);return e.startsWith("/")?t.protocol+"//"+t.host+e:e.startsWith("./")?this._endpoint+e.substring(1):e}async getSequenceItems(e,t=null,i=null,n=null){if(!this.isReady())throw new Error("API is not ready to use");try{return Zx.isIdValid(e),await fetch(t||`${this._endpoints.collections}/${e}/items${n?"?limit="+n:""}`,this._getFetchOptions(!0)).then(e=>e.json()).then(t=>{let a=t;i&&(a.features=i.features.concat(a.features));const r=t.links.find(e=>"next"===e.rel);return!n&&r?this.getSequenceItems(e,r.href,a):a})}catch(e){return await Promise.reject(e)}}getPicturesAroundCoordinatesUrl(e,t,i=5e-4,n=null,a=null){if(!this.isReady())throw new Error("API is not ready to use");if(isNaN(parseFloat(e))||isNaN(parseFloat(t)))throw new Error("lat and lon parameters should be valid numbers");const r=[t-i,e-i,t+i,e+i].map(e=>e.toFixed(7)).join(","),s=n?`&limit=${n}`:"",o=a?`&collections=${a}`:"";return`${this._endpoints.search}?bbox=${r}${s}${o}`}getPicturesAroundCoordinates(e,t,i,n,a){return fetch(this.getPicturesAroundCoordinatesUrl(e,t,i,n,a),this._getFetchOptions()).then(e=>e.json())}getPictureMetadataUrl(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(Zx.isIdValid(e))return t?`${this._endpoints.collections}/${t}/items/${e}`:`${this._endpoints.search}?ids=${e}`}findThumbnailInPictureFeature(e){if(!this.isReady())throw new Error("API is not ready to use");if(!e||!e.assets)return null;let t=null;for(let i of Object.values(e.assets)){if(i.roles.includes("thumbnail")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href)&&(t=this.cleanResourceURL(i.href))}return t}getPictureThumbnailURLForSequence(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.collection_preview)return Promise.resolve(this._endpoints.collection_preview.replace("{id}",e));if(t&&Array.isArray(t.links)&&t.links.length>0){let e=t.links.find(e=>"preview"===e.rel&&"image/jpeg"===e.type);if(e&&Zx.isValidHttpUrl(e.href))return Promise.resolve(e.href)}const i=`${this._endpoints.search}?limit=1&collections=${e}`;return fetch(i,this._getFetchOptions()).then(e=>e.json()).then(e=>Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null)}getPictureThumbnailURL(e,t){if(!this.isReady())throw new Error("API is not ready to use");return e?this._endpoints.item_preview?Promise.resolve(this._endpoints.item_preview.replace("{id}",e)):e&&t?fetch(`${this._endpoints.collections}/${t}/items/${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?this.findThumbnailInPictureFeature(e):null):fetch(`${this._endpoints.search}?ids=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e&&Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null):Promise.resolve(null)}getRSSURL(e){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.rss){let t=this._endpoints.rss;return e&&(t+=t.includes("?")?"&":"?",t+="bbox="+[e.getWest(),e.getSouth(),e.getEast(),e.getNorth()].join(",")),t}return null}getSequenceMetadataUrl(e){if(!this.isReady())throw new Error("API is not ready to use");return`${this._endpoints.collections}/${e}`}getSequenceMetadata(e){if(!this.isReady())throw new Error("API is not ready to use");return fetch(this.getSequenceMetadataUrl(e),this._getFetchOptions()).then(e=>e.json())}getDataBbox(){if(!this.isReady())throw new Error("API is not ready to use");return this._dataBbox}searchUsers(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(`${this._endpoints.user_search}?q=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?.features||null)}getUserName(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(this._endpoints.user_search.replace(/\/search$/,`/${e}`),this._getFetchOptions()).then(e=>e.json()).then(e=>e?.label||e?.name||null)}sendReport(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.report)throw new Error("Report sending is not available");const t={...this._getFetchOptions(),method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}};return fetch(this._endpoints.report,t).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePicture(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/collections/${e}/items/${t}`;const n={...this._getFetchOptions(),method:"DELETE"};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}sendPictureSemantics(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let i=this.getPictureMetadataUrl(e.id,e.sequence.id);e?.origInstance&&(i=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}`);const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}createPictureAnnotation(e,t,i){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let n=this.getPictureMetadataUrl(e.id,e.sequence.id)+"/annotations";e?.origInstance&&(n=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}/annotations`);const a={...this._getFetchOptions(),method:"POST",body:JSON.stringify({semantics:i,shape:{type:"Polygon",coordinates:[t]}}),headers:{"Content-Type":"application/json"}};return fetch(n,a).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}editPictureAnnotation(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/annotations/${e}`;const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePictureAnnotation(e){if(!this.isReady())throw new Error("API is not ready to use");let t=`${this._endpoint}/annotations/${e}`;const i={...this._getFetchOptions(),method:"DELETE"};return fetch(t,i).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}getAuthURL(){return this._configuration?Promise.resolve(!!this._configuration?.auth?.enabled&&`${this._endpoint}/auth/login?next_url=<CBURL>`):null===this._configuration?fetch(this._endpoint+"/configuration",this._getFetchOptions()).then(e=>e.json()).then(e=>(this._configuration=e,this.getAuthURL())).catch(()=>(this._configuration=!1,!1)):Promise.resolve(!1)}static isValidHttpUrl(e){let t;try{t=new URL(e)}catch(e){return!1}return"http:"===t.protocol||"https:"===t.protocol}static isIdValid(e){if(Yr(e))throw new Error("id should be a valid picture unique identifier");return!0}}var Yx={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},Jx={isSpaceSeparator:e=>"string"==typeof e&&Yx.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||Yx.ID_Start.test(e)),isIdContinueChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||Yx.ID_Continue.test(e)),isDigit:e=>"string"==typeof e&&/[0-9]/.test(e),isHexDigit:e=>"string"==typeof e&&/[0-9A-Fa-f]/.test(e)};let $x,ew,tw,iw,nw,aw,rw,sw,ow;function lw(e,t,i){const n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(let e=0;e<n.length;e++){const t=String(e),a=lw(n,t,i);void 0===a?delete n[t]:Object.defineProperty(n,t,{value:a,writable:!0,enumerable:!0,configurable:!0})}else for(const e in n){const t=lw(n,e,i);void 0===t?delete n[e]:Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return i.call(e,t,n)}let cw,dw,uw,hw,pw;function Aw(){for(cw="default",dw="",uw=!1,hw=1;;){pw=mw();const e=fw[cw]();if(e)return e}}function mw(){if($x[iw])return String.fromCodePoint($x.codePointAt(iw))}function gw(){const e=mw();return"\n"===e?(nw++,aw=0):e?aw+=e.length:aw++,e&&(iw+=e.length),e}const fw={default(){switch(pw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void gw();case"/":return gw(),void(cw="comment");case void 0:return gw(),_w("eof")}if(!Jx.isSpaceSeparator(pw))return fw[ew]();gw()},comment(){switch(pw){case"*":return gw(),void(cw="multiLineComment");case"/":return gw(),void(cw="singleLineComment")}throw xw(gw())},multiLineComment(){switch(pw){case"*":return gw(),void(cw="multiLineCommentAsterisk");case void 0:throw xw(gw())}gw()},multiLineCommentAsterisk(){switch(pw){case"*":return void gw();case"/":return gw(),void(cw="default");case void 0:throw xw(gw())}gw(),cw="multiLineComment"},singleLineComment(){switch(pw){case"\n":case"\r":case"\u2028":case"\u2029":return gw(),void(cw="default");case void 0:return gw(),_w("eof")}gw()},value(){switch(pw){case"{":case"[":return _w("punctuator",gw());case"n":return gw(),vw("ull"),_w("null",null);case"t":return gw(),vw("rue"),_w("boolean",!0);case"f":return gw(),vw("alse"),_w("boolean",!1);case"-":case"+":return"-"===gw()&&(hw=-1),void(cw="sign");case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",1/0);case"N":return gw(),vw("aN"),_w("numeric",NaN);case'"':case"'":return uw='"'===gw(),dw="",void(cw="string")}throw xw(gw())},identifierNameStartEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":break;default:if(!Jx.isIdStartChar(e))throw Mw()}dw+=e,cw="identifierName"},identifierName(){switch(pw){case"$":case"_":case"‌":case"‍":return void(dw+=gw());case"\\":return gw(),void(cw="identifierNameEscape")}if(!Jx.isIdContinueChar(pw))return _w("identifier",dw);dw+=gw()},identifierNameEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Jx.isIdContinueChar(e))throw Mw()}dw+=e,cw="identifierName"},sign(){switch(pw){case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",hw*(1/0));case"N":return gw(),vw("aN"),_w("numeric",NaN)}throw xw(gw())},zero(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent");case"x":case"X":return dw+=gw(),void(cw="hexadecimal")}return _w("numeric",0*hw)},decimalInteger(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalPointLeading(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalFraction");throw xw(gw())},decimalPoint(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}return Jx.isDigit(pw)?(dw+=gw(),void(cw="decimalFraction")):_w("numeric",hw*Number(dw))},decimalFraction(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalExponent(){switch(pw){case"+":case"-":return dw+=gw(),void(cw="decimalExponentSign")}if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentSign(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentInteger(){if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},hexadecimal(){if(Jx.isHexDigit(pw))return dw+=gw(),void(cw="hexadecimalInteger");throw xw(gw())},hexadecimalInteger(){if(!Jx.isHexDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},string(){switch(pw){case"\\":return gw(),void(dw+=function(){switch(mw()){case"b":return gw(),"\b";case"f":return gw(),"\f";case"n":return gw(),"\n";case"r":return gw(),"\r";case"t":return gw(),"\t";case"v":return gw(),"\v";case"0":if(gw(),Jx.isDigit(mw()))throw xw(gw());return"\0";case"x":return gw(),function(){let e="",t=mw();if(!Jx.isHexDigit(t))throw xw(gw());if(e+=gw(),t=mw(),!Jx.isHexDigit(t))throw xw(gw());return e+=gw(),String.fromCodePoint(parseInt(e,16))}();case"u":return gw(),Ew();case"\n":case"\u2028":case"\u2029":return gw(),"";case"\r":return gw(),"\n"===mw()&&gw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw xw(gw())}return gw()}());case'"':return uw?(gw(),_w("string",dw)):void(dw+=gw());case"'":return uw?void(dw+=gw()):(gw(),_w("string",dw));case"\n":case"\r":throw xw(gw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Sw(e)}' in strings is not valid ECMAScript; consider escaping`)}(pw);break;case void 0:throw xw(gw())}dw+=gw()},start(){switch(pw){case"{":case"[":return _w("punctuator",gw())}cw="value"},beforePropertyName(){switch(pw){case"$":case"_":return dw=gw(),void(cw="identifierName");case"\\":return gw(),void(cw="identifierNameStartEscape");case"}":return _w("punctuator",gw());case'"':case"'":return uw='"'===gw(),void(cw="string")}if(Jx.isIdStartChar(pw))return dw+=gw(),void(cw="identifierName");throw xw(gw())},afterPropertyName(){if(":"===pw)return _w("punctuator",gw());throw xw(gw())},beforePropertyValue(){cw="value"},afterPropertyValue(){switch(pw){case",":case"}":return _w("punctuator",gw())}throw xw(gw())},beforeArrayValue(){if("]"===pw)return _w("punctuator",gw());cw="value"},afterArrayValue(){switch(pw){case",":case"]":return _w("punctuator",gw())}throw xw(gw())},end(){throw xw(gw())}};function _w(e,t){return{type:e,value:t,line:nw,column:aw}}function vw(e){for(const t of e){if(mw()!==t)throw xw(gw());gw()}}function Ew(){let e="",t=4;for(;t-- >0;){const t=mw();if(!Jx.isHexDigit(t))throw xw(gw());e+=gw()}return String.fromCodePoint(parseInt(e,16))}const bw={start(){if("eof"===rw.type)throw ww();yw()},beforePropertyName(){switch(rw.type){case"identifier":case"string":return sw=rw.value,void(ew="afterPropertyName");case"punctuator":return void kw();case"eof":throw ww()}},afterPropertyName(){if("eof"===rw.type)throw ww();ew="beforePropertyValue"},beforePropertyValue(){if("eof"===rw.type)throw ww();yw()},beforeArrayValue(){if("eof"===rw.type)throw ww();"punctuator"!==rw.type||"]"!==rw.value?yw():kw()},afterPropertyValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforePropertyName");case"}":kw()}},afterArrayValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforeArrayValue");case"]":kw()}},end(){}};function yw(){let e;switch(rw.type){case"punctuator":switch(rw.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=rw.value}if(void 0===ow)ow=e;else{const t=tw[tw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,sw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)tw.push(e),ew=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function kw(){tw.pop();const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function xw(e){return Cw(void 0===e?`JSON5: invalid end of input at ${nw}:${aw}`:`JSON5: invalid character '${Sw(e)}' at ${nw}:${aw}`)}function ww(){return Cw(`JSON5: invalid end of input at ${nw}:${aw}`)}function Mw(){return aw-=5,Cw(`JSON5: invalid identifier character at ${nw}:${aw}`)}function Sw(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function Cw(e){const t=new SyntaxError(e);return t.lineNumber=nw,t.columnNumber=aw,t}const Tw={parse:function(e,t){$x=String(e),ew="start",tw=[],iw=0,nw=1,aw=0,rw=void 0,sw=void 0,ow=void 0;do{rw=Aw(),bw[ew]()}while("eof"!==rw.type);return"function"==typeof t?lw({"":ow},"",t):ow},stringify:function(e,t,i){const n=[];let a,r,s,o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(i=t.space,s=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){a=[];for(const e of t){let t;"string"==typeof e?t=e:("number"==typeof e||e instanceof String||e instanceof Number)&&(t=String(e)),void 0!==t&&a.indexOf(t)<0&&a.push(t)}}return i instanceof Number?i=Number(i):i instanceof String&&(i=String(i)),"number"==typeof i?i>0&&(i=Math.min(10,Math.floor(i)),l=" ".substr(0,i)):"string"==typeof i&&(l=i.substr(0,10)),c("",{"":e});function c(e,t){let i=t[e];switch(null!=i&&("function"==typeof i.toJSON5?i=i.toJSON5(e):"function"==typeof i.toJSON&&(i=i.toJSON(e))),r&&(i=r.call(t,e,i)),i instanceof Number?i=Number(i):i instanceof String?i=String(i):i instanceof Boolean&&(i=i.valueOf()),i){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof i?d(i):"number"==typeof i?String(i):"object"==typeof i?Array.isArray(i)?function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,a=[];for(let t=0;t<e.length;t++){const i=c(String(t),e);a.push(void 0!==i?i:"null")}if(0===a.length)i="[]";else if(""===l){i="["+a.join(",")+"]"}else{let e=",\n"+o,n=a.join(e);i="[\n"+o+n+",\n"+t+"]"}return n.pop(),o=t,i}(i):function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,r=a||Object.keys(e),s=[];for(const t of r){const i=c(t,e);if(void 0!==i){let e=u(t)+":";""!==l&&(e+=" "),e+=i,s.push(e)}}if(0===s.length)i="{}";else{let e;if(""===l)e=s.join(","),i="{"+e+"}";else{let n=",\n"+o;e=s.join(n),i="{\n"+o+e+",\n"+t+"}"}}return n.pop(),o=t,i}(i):void 0}function d(e){const t={"'":.1,'"':.2},i={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let n="";for(let a=0;a<e.length;a++){const r=e[a];switch(r){case"'":case'"':t[r]++,n+=r;continue;case"\0":if(Jx.isDigit(e[a+1])){n+="\\x00";continue}}if(i[r])n+=i[r];else{if(r<" "){let e=r.charCodeAt(0).toString(16);n+="\\x"+("00"+e).substring(e.length);continue}n+=r}}const a=s||Object.keys(t).reduce((e,i)=>t[e]<t[i]?e:i);return n=n.replace(new RegExp(a,"g"),i[a]),a+n+a}function u(e){if(0===e.length)return d(e);const t=String.fromCodePoint(e.codePointAt(0));if(!Jx.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!Jx.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var Dw=Tw;const Pw=new CSSStyleSheet;Pw.replaceSync("/* atkinson-hyperlegible-next-latin-ext-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* atkinson-hyperlegible-next-latin-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}");const Iw=new CSSStyleSheet;Iw.replaceSync('/* Colors */\n:root, :host {\n\t--white: #ffffff;\n\t--black: #181818;\n\t--black-pale: #1b1a17;\n\t--red: #f70000;\n\t--red-transparent: rgba(247, 0, 0, 0.3);\n\t--red-pale: #ff726f;\n\t--grey: #f5f5f5;\n\t--grey-pale: #cfd2cf;\n\t--grey-semi-dark: #808080;\n\t--grey-dark: #3e3e3e;\n\t--blue: #2954e9;\n\t--blue-dark: #0a1f69;\n\t--blue-semi: #d7dffc;\n\t--blue-pale: #f2f5ff;\n\t--blue-geovisio: #34495e;\n\t--beige: #f5f3ec;\n\t--yellow: #fec868;\n\t--orange: #ff6f00;\n\t--orange-transparent: rgba(255,111,0,0.3);\n\t--orange-pale: #fffafa;\n\t--green: #7ec636;\n\t--green-pale: #f0ffee;\n\t--widget-bg: var(--white);\n\t--widget-bg-hover: var(--grey);\n\t--widget-bg-active: var(--blue);\n\t--widget-bg-inactive: var(--grey-pale);\n\t--widget-bg-primary: var(--blue-semi);\n\t--widget-bg-primary-hover: #e0e7ff;\n\t--widget-bg-warn: #FFECB3;\n\t--widget-bg-danger: #FFCDD2;\n\t--widget-bg-success: #C8E6C9;\n\t--widget-border-div: var(--grey-pale);\n\t--widget-border-btn: var(--blue);\n\t--widget-font: var(--grey-dark);\n\t--widget-font-active: var(--white);\n\t--widget-font-direct: var(--blue);\n\t--widget-font-warn: #BF360C;\n\t--widget-font-danger: #B71C1C;\n\t--widget-font-success: #1B5E20;\n\t--font-family: "Atkinson Hyperlegible Next", sans-serif;\n\t--widget-option-left: #6A1B9A;\n\t--widget-option-right: #0D47A1;\n\toverscroll-behavior-y: contain;\n}\n\n.pnx-hidden { display: none !important; }\n\n/* Hidden elements on mobile */\n@container (max-width: 576px) {\n\t.pnx-mobile-hidden { display: none !important; }\n}\n\n/* Hidden elements on print */\n@media print {\n\t.pnx-print-hidden { display: none !important; }\n}\n'),document.adoptedStyleSheets.push(Pw),document.adoptedStyleSheets.push(Iw);class Lw extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Lw.GetJSONConverter()},lang:{type:String},endpoint:{type:String}};constructor(e=!1){super(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`📷 Panoramax ${this.getClassName()} - Version 5.1.2 (892ac96)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,ps().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Ax(this.lang),this.loader=zr("pnx-loader",{_parent:this,"no-label":us()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach(([e,t])=>{this.getAttribute(e)&&console.error(`Component attribute "${e}" has been renamed into "${t}". Old attribute "${e}" is ignored.`)}),us()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||zr("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let e=this.endpoint;try{this.api=new Zx(this.endpoint,{fetch:this["fetch-options"]}),this.api.onceReady().then(()=>{if(e!==this._loadsAPI||!this.api)return;let t=this.api.getUnavailableFeatures(),i=this.api.getAvailableFeatures();i=0===t.length?"✅ All features available":"✅ Available features: "+i.join(", "),t=0===t.length?"":"🚫 Unavailable features: "+t.join(", "),console.info(`🌐 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\nℹ️ API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${i}\n ${t}\n`.trim())}).catch(e=>this.loader?.dismiss?.(e,this._t?.pnx.error_api)).finally(()=>delete this._loadsAPI)}catch(e){delete this._loadsAPI,this.loader?.dismiss?this.loader.dismiss(e,this._t.pnx.error_api):console.error(e)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise(e=>setTimeout(e,250)).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(e,t,i){if(super.attributeChangedCallback(e,t,i),"endpoint"===e&&(this._loadsAPI&&i&&this._loadsAPI===i||this.api&&this.api._endpoint===i||!i||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(e)){let n,a,r,s;"picture"===e?(n=this.sequence,r=this.sequence,a=i,s=t):(n=i,r=t,a=this.picture,s=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:n,picId:a,prevSeqId:r,prevPicId:s}}))}}getClassName(){return"Basic"}select(e=null,t=null,i=!1){i&&(this.picture=null,this.sequence=null),this.picture=t,this.sequence=e}isWidthSmall(){return this?.offsetWidth<576}isWidthMedium(){return this?.offsetWidth>=576&&this?.offsetWidth<768}isHeightSmall(){return this?.offsetHeight<400}render(){return V`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}getAPI(){return this.api}addEventListener(e,t,i){let n=e.split(":").shift();if(n&&this.getSubComponentsNames().includes(n)){const a=e.substring(n.length+1);this[n]?.addEventListener?this[n].addEventListener(a,t,i):setTimeout(()=>this.addEventListener(e,t,i),50)}else super.addEventListener(e,t,i)}static GetJSONConverter(){return{fromAttribute:e=>null==e||""===e?null:"object"==typeof e||Array.isArray(e)?e:Dw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:Dw.stringify(e)}}}class zw extends le{static styles=[Po,s`
2057
+ </div>`}}customElements.define("pnx-search-bar",Qx);class Zx extends EventTarget{constructor(e,t={}){if(super(),null==e||"string"!=typeof e){const e=new Error("endpoint parameter is empty or not a valid string");throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),e}if(e.startsWith("/")&&(e=window.location.href.split("/").slice(0,3).join("/")+e),!Zx.isValidHttpUrl(e)){const t=new Error(`endpoint parameter is not a valid URL: ${e}`);throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:t}})),t}this._endpoint=e,this._isReady=0,this._dataBbox=null,this._fetchOpts=t?.fetch||{},this._metadata={},this._configuration=null,t.skipReadLanding||(this._readLanding=fetch(e,this._getFetchOptions()).then(e=>e.json()).then(e=>this._parseLanding(e,t)).catch(e=>(this._isReady=-1,console.error(e),this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),Promise.reject("Viewer failed to communicate with API"))).then(()=>(this._isReady=1,this.dispatchEvent(new Event("ready")),"API is ready")))}onceReady(){return-1===this._isReady?Promise.reject("Viewer failed to communicate with API"):1===this._isReady?Promise.resolve("API is ready"):this._readLanding}isReady(){return 1===this._isReady}getAvailableFeatures(){return Object.entries(this._endpoints).filter(e=>null!==e[1]).map(e=>e[0])}getUnavailableFeatures(){return Object.entries(this._endpoints).filter(e=>null===e[1]).map(e=>e[0])}_parseLanding(e,t){if(this._endpoints={collections:null,search:null,style:null,user_style:null,tiles:t?.tiles||null,user_tiles:null,user_search:null,collection_preview:null,item_preview:null,rss:null,report:null,queryables:null},!e||!e.links||!Array.isArray(e.links))throw new Error("API Landing page doesn't contain 'links' list");if(!e.stac_version.startsWith("1."))throw new Error(`API is not in a supported STAC version (Panoramax viewer supports only 1.x, API is ${e.stac_version})`);this._metadata.name=e.title||"Unnamed",this._metadata.stac_version=e.stac_version,this._metadata.geovisio_version=e.geovisio_version;const i=[],n=[];if([{rel:"search",type:"application/geo+json",endpointId:"search",mandatory:!0,missingIssue:"No direct access to pictures metadata."},{rel:"data",type:"application/json",endpointId:"collections",mandatory:!0,missingIssue:"No way for viewer to access sequences."},{rel:"data",type:"application/rss+xml",endpointId:"rss"},{rel:"xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"tiles"},{rel:"xyz-style",type:"application/json",endpointId:"style"},{rel:"user-xyz-style",type:"application/json",endpointId:"user_style"},{rel:"user-xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"user_tiles"},{rel:"user-search",type:"application/json",endpointId:"user_search",missingIssue:"Filter map data by user name will not be available."},{rel:"collection-preview",type:"image/jpeg",endpointId:"collection_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"item-preview",type:"image/jpeg",endpointId:"item_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"report",type:"application/json",endpointId:"report"},{rel:"http://www.opengis.net/def/rel/ogc/1.0/queryables",type:"application/schema+json",endpointId:"queryables",missingIssue:"Tags map overlay will not be available."}].forEach(t=>{const a=e.links.filter(e=>e.rel===t.rel&&e.type===t.type);if(0===a.length){if(!this._endpoints[t.endpointId]){let e=`API doesn't offer a '${t.rel}' (${t.type}) endpoint in its links`;t.missingIssue&&(e+=`\n${t.missingIssue}`),t.mandatory?i.push(e):t.missingIssue&&n.push(e)}}else{const e=1===a.length?a[0]:a.find(e=>e.title?.includes("v2"))||a[0];if(!Zx.isValidHttpUrl(e.href))throw new Error(`API endpoint '${e.rel}' (${e.type}) is not a valid URL: ${e.href}`);this._endpoints[t.endpointId]&&"xyz-style"!==t.endpointId||(this._endpoints[t.endpointId]=e.href)}}),this._endpoints.style||this._endpoints.tiles||n.push("API doesn't offer 'xyz' or 'xyz-style' endpoints in its links.\nMap widget will not be available."),this._endpoints.user_style||this._endpoints.user_tiles||n.push("API doesn't offer 'user-xyz' or 'user-xyz-style' endpoints in its links.\nFilter map data by user ID will not be available."),n.forEach(e=>console.warn(e)),i.length>0)throw new Error(i.join("\n"));const a=e?.extent?.spatial?.bbox;this._dataBbox=a&&Array.isArray(a)&&a.length>0&&Array.isArray(a[0])&&4===a[0].length?[[a[0][0],a[0][1]],[a[0][2],a[0][3]]]:null}_getFetchOptions(e=!1){const t=Object.assign({},this._fetchOpts);return e||(t.signal=AbortSignal.timeout(15e3)),t}_getMapRequestTransform(){const e=this._getFetchOptions();return delete e.signal,t=>{if(t.startsWith(this._endpoint)){if(Object.keys(e).length>0)return{url:t,...e}}else if(t.includes("data.geopf.fr")&&t.includes("@2x"))return{url:t.replace("@2x","")}}}_getPSVWithCredentials(){return"include"===this._getFetchOptions().credentials?e=>e.startsWith(this._endpoint):void 0}cleanResourceURL(e){if(!e)return;const t=new URL(this._endpoint);return e.startsWith("/")?t.protocol+"//"+t.host+e:e.startsWith("./")?this._endpoint+e.substring(1):e}async getSequenceItems(e,t=null,i=null,n=null){if(!this.isReady())throw new Error("API is not ready to use");try{return Zx.isIdValid(e),await fetch(t||`${this._endpoints.collections}/${e}/items${n?"?limit="+n:""}`,this._getFetchOptions(!0)).then(e=>e.json()).then(t=>{let a=t;i&&(a.features=i.features.concat(a.features));const r=t.links.find(e=>"next"===e.rel);return!n&&r?this.getSequenceItems(e,r.href,a):a})}catch(e){return await Promise.reject(e)}}getPicturesAroundCoordinatesUrl(e,t,i=5e-4,n=null,a=null){if(!this.isReady())throw new Error("API is not ready to use");if(isNaN(parseFloat(e))||isNaN(parseFloat(t)))throw new Error("lat and lon parameters should be valid numbers");const r=[t-i,e-i,t+i,e+i].map(e=>e.toFixed(7)).join(","),s=n?`&limit=${n}`:"",o=a?`&collections=${a}`:"";return`${this._endpoints.search}?bbox=${r}${s}${o}`}getPicturesAroundCoordinates(e,t,i,n,a){return fetch(this.getPicturesAroundCoordinatesUrl(e,t,i,n,a),this._getFetchOptions()).then(e=>e.json())}getPictureMetadataUrl(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(Zx.isIdValid(e))return t?`${this._endpoints.collections}/${t}/items/${e}`:`${this._endpoints.search}?ids=${e}`}findThumbnailInPictureFeature(e){if(!this.isReady())throw new Error("API is not ready to use");if(!e||!e.assets)return null;let t=null;for(let i of Object.values(e.assets)){if(i.roles.includes("thumbnail")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href)&&(t=this.cleanResourceURL(i.href))}return t}getPictureThumbnailURLForSequence(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.collection_preview)return Promise.resolve(this._endpoints.collection_preview.replace("{id}",e));if(t&&Array.isArray(t.links)&&t.links.length>0){let e=t.links.find(e=>"preview"===e.rel&&"image/jpeg"===e.type);if(e&&Zx.isValidHttpUrl(e.href))return Promise.resolve(e.href)}const i=`${this._endpoints.search}?limit=1&collections=${e}`;return fetch(i,this._getFetchOptions()).then(e=>e.json()).then(e=>Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null)}getPictureThumbnailURL(e,t){if(!this.isReady())throw new Error("API is not ready to use");return e?this._endpoints.item_preview?Promise.resolve(this._endpoints.item_preview.replace("{id}",e)):e&&t?fetch(`${this._endpoints.collections}/${t}/items/${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?this.findThumbnailInPictureFeature(e):null):fetch(`${this._endpoints.search}?ids=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e&&Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null):Promise.resolve(null)}getRSSURL(e){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.rss){let t=this._endpoints.rss;return e&&(t+=t.includes("?")?"&":"?",t+="bbox="+[e.getWest(),e.getSouth(),e.getEast(),e.getNorth()].join(",")),t}return null}getSequenceMetadataUrl(e){if(!this.isReady())throw new Error("API is not ready to use");return`${this._endpoints.collections}/${e}`}getSequenceMetadata(e){if(!this.isReady())throw new Error("API is not ready to use");return fetch(this.getSequenceMetadataUrl(e),this._getFetchOptions()).then(e=>e.json())}getDataBbox(){if(!this.isReady())throw new Error("API is not ready to use");return this._dataBbox}searchUsers(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(`${this._endpoints.user_search}?q=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?.features||null)}getUserName(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(this._endpoints.user_search.replace(/\/search$/,`/${e}`),this._getFetchOptions()).then(e=>e.json()).then(e=>e?.label||e?.name||null)}sendReport(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.report)throw new Error("Report sending is not available");const t={...this._getFetchOptions(),method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}};return fetch(this._endpoints.report,t).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePicture(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/collections/${e}/items/${t}`;const n={...this._getFetchOptions(),method:"DELETE"};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}sendPictureSemantics(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let i=this.getPictureMetadataUrl(e.id,e.sequence.id);e?.origInstance&&(i=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}`);const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}createPictureAnnotation(e,t,i){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let n=this.getPictureMetadataUrl(e.id,e.sequence.id)+"/annotations";e?.origInstance&&(n=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}/annotations`);const a={...this._getFetchOptions(),method:"POST",body:JSON.stringify({semantics:i,shape:{type:"Polygon",coordinates:[t]}}),headers:{"Content-Type":"application/json"}};return fetch(n,a).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}editPictureAnnotation(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/annotations/${e}`;const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePictureAnnotation(e){if(!this.isReady())throw new Error("API is not ready to use");let t=`${this._endpoint}/annotations/${e}`;const i={...this._getFetchOptions(),method:"DELETE"};return fetch(t,i).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}getAuthURL(){return this._configuration?Promise.resolve(!!this._configuration?.auth?.enabled&&`${this._endpoint}/auth/login?next_url=<CBURL>`):null===this._configuration?fetch(this._endpoint+"/configuration",this._getFetchOptions()).then(e=>e.json()).then(e=>(this._configuration=e,this.getAuthURL())).catch(()=>(this._configuration=!1,!1)):Promise.resolve(!1)}static isValidHttpUrl(e){let t;try{t=new URL(e)}catch(e){return!1}return"http:"===t.protocol||"https:"===t.protocol}static isIdValid(e){if(Yr(e))throw new Error("id should be a valid picture unique identifier");return!0}}var Yx={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},Jx={isSpaceSeparator:e=>"string"==typeof e&&Yx.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||Yx.ID_Start.test(e)),isIdContinueChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||"‌"===e||"‍"===e||Yx.ID_Continue.test(e)),isDigit:e=>"string"==typeof e&&/[0-9]/.test(e),isHexDigit:e=>"string"==typeof e&&/[0-9A-Fa-f]/.test(e)};let $x,ew,tw,iw,nw,aw,rw,sw,ow;function lw(e,t,i){const n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(let e=0;e<n.length;e++){const t=String(e),a=lw(n,t,i);void 0===a?delete n[t]:Object.defineProperty(n,t,{value:a,writable:!0,enumerable:!0,configurable:!0})}else for(const e in n){const t=lw(n,e,i);void 0===t?delete n[e]:Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return i.call(e,t,n)}let cw,dw,uw,hw,pw;function Aw(){for(cw="default",dw="",uw=!1,hw=1;;){pw=mw();const e=fw[cw]();if(e)return e}}function mw(){if($x[iw])return String.fromCodePoint($x.codePointAt(iw))}function gw(){const e=mw();return"\n"===e?(nw++,aw=0):e?aw+=e.length:aw++,e&&(iw+=e.length),e}const fw={default(){switch(pw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void gw();case"/":return gw(),void(cw="comment");case void 0:return gw(),_w("eof")}if(!Jx.isSpaceSeparator(pw))return fw[ew]();gw()},comment(){switch(pw){case"*":return gw(),void(cw="multiLineComment");case"/":return gw(),void(cw="singleLineComment")}throw xw(gw())},multiLineComment(){switch(pw){case"*":return gw(),void(cw="multiLineCommentAsterisk");case void 0:throw xw(gw())}gw()},multiLineCommentAsterisk(){switch(pw){case"*":return void gw();case"/":return gw(),void(cw="default");case void 0:throw xw(gw())}gw(),cw="multiLineComment"},singleLineComment(){switch(pw){case"\n":case"\r":case"\u2028":case"\u2029":return gw(),void(cw="default");case void 0:return gw(),_w("eof")}gw()},value(){switch(pw){case"{":case"[":return _w("punctuator",gw());case"n":return gw(),vw("ull"),_w("null",null);case"t":return gw(),vw("rue"),_w("boolean",!0);case"f":return gw(),vw("alse"),_w("boolean",!1);case"-":case"+":return"-"===gw()&&(hw=-1),void(cw="sign");case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",1/0);case"N":return gw(),vw("aN"),_w("numeric",NaN);case'"':case"'":return uw='"'===gw(),dw="",void(cw="string")}throw xw(gw())},identifierNameStartEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":break;default:if(!Jx.isIdStartChar(e))throw Mw()}dw+=e,cw="identifierName"},identifierName(){switch(pw){case"$":case"_":case"‌":case"‍":return void(dw+=gw());case"\\":return gw(),void(cw="identifierNameEscape")}if(!Jx.isIdContinueChar(pw))return _w("identifier",dw);dw+=gw()},identifierNameEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!Jx.isIdContinueChar(e))throw Mw()}dw+=e,cw="identifierName"},sign(){switch(pw){case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",hw*(1/0));case"N":return gw(),vw("aN"),_w("numeric",NaN)}throw xw(gw())},zero(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent");case"x":case"X":return dw+=gw(),void(cw="hexadecimal")}return _w("numeric",0*hw)},decimalInteger(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalPointLeading(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalFraction");throw xw(gw())},decimalPoint(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}return Jx.isDigit(pw)?(dw+=gw(),void(cw="decimalFraction")):_w("numeric",hw*Number(dw))},decimalFraction(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalExponent(){switch(pw){case"+":case"-":return dw+=gw(),void(cw="decimalExponentSign")}if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentSign(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentInteger(){if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},hexadecimal(){if(Jx.isHexDigit(pw))return dw+=gw(),void(cw="hexadecimalInteger");throw xw(gw())},hexadecimalInteger(){if(!Jx.isHexDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},string(){switch(pw){case"\\":return gw(),void(dw+=function(){switch(mw()){case"b":return gw(),"\b";case"f":return gw(),"\f";case"n":return gw(),"\n";case"r":return gw(),"\r";case"t":return gw(),"\t";case"v":return gw(),"\v";case"0":if(gw(),Jx.isDigit(mw()))throw xw(gw());return"\0";case"x":return gw(),function(){let e="",t=mw();if(!Jx.isHexDigit(t))throw xw(gw());if(e+=gw(),t=mw(),!Jx.isHexDigit(t))throw xw(gw());return e+=gw(),String.fromCodePoint(parseInt(e,16))}();case"u":return gw(),Ew();case"\n":case"\u2028":case"\u2029":return gw(),"";case"\r":return gw(),"\n"===mw()&&gw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw xw(gw())}return gw()}());case'"':return uw?(gw(),_w("string",dw)):void(dw+=gw());case"'":return uw?void(dw+=gw()):(gw(),_w("string",dw));case"\n":case"\r":throw xw(gw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Sw(e)}' in strings is not valid ECMAScript; consider escaping`)}(pw);break;case void 0:throw xw(gw())}dw+=gw()},start(){switch(pw){case"{":case"[":return _w("punctuator",gw())}cw="value"},beforePropertyName(){switch(pw){case"$":case"_":return dw=gw(),void(cw="identifierName");case"\\":return gw(),void(cw="identifierNameStartEscape");case"}":return _w("punctuator",gw());case'"':case"'":return uw='"'===gw(),void(cw="string")}if(Jx.isIdStartChar(pw))return dw+=gw(),void(cw="identifierName");throw xw(gw())},afterPropertyName(){if(":"===pw)return _w("punctuator",gw());throw xw(gw())},beforePropertyValue(){cw="value"},afterPropertyValue(){switch(pw){case",":case"}":return _w("punctuator",gw())}throw xw(gw())},beforeArrayValue(){if("]"===pw)return _w("punctuator",gw());cw="value"},afterArrayValue(){switch(pw){case",":case"]":return _w("punctuator",gw())}throw xw(gw())},end(){throw xw(gw())}};function _w(e,t){return{type:e,value:t,line:nw,column:aw}}function vw(e){for(const t of e){if(mw()!==t)throw xw(gw());gw()}}function Ew(){let e="",t=4;for(;t-- >0;){const t=mw();if(!Jx.isHexDigit(t))throw xw(gw());e+=gw()}return String.fromCodePoint(parseInt(e,16))}const bw={start(){if("eof"===rw.type)throw ww();yw()},beforePropertyName(){switch(rw.type){case"identifier":case"string":return sw=rw.value,void(ew="afterPropertyName");case"punctuator":return void kw();case"eof":throw ww()}},afterPropertyName(){if("eof"===rw.type)throw ww();ew="beforePropertyValue"},beforePropertyValue(){if("eof"===rw.type)throw ww();yw()},beforeArrayValue(){if("eof"===rw.type)throw ww();"punctuator"!==rw.type||"]"!==rw.value?yw():kw()},afterPropertyValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforePropertyName");case"}":kw()}},afterArrayValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforeArrayValue");case"]":kw()}},end(){}};function yw(){let e;switch(rw.type){case"punctuator":switch(rw.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=rw.value}if(void 0===ow)ow=e;else{const t=tw[tw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,sw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)tw.push(e),ew=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function kw(){tw.pop();const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function xw(e){return Cw(void 0===e?`JSON5: invalid end of input at ${nw}:${aw}`:`JSON5: invalid character '${Sw(e)}' at ${nw}:${aw}`)}function ww(){return Cw(`JSON5: invalid end of input at ${nw}:${aw}`)}function Mw(){return aw-=5,Cw(`JSON5: invalid identifier character at ${nw}:${aw}`)}function Sw(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function Cw(e){const t=new SyntaxError(e);return t.lineNumber=nw,t.columnNumber=aw,t}const Tw={parse:function(e,t){$x=String(e),ew="start",tw=[],iw=0,nw=1,aw=0,rw=void 0,sw=void 0,ow=void 0;do{rw=Aw(),bw[ew]()}while("eof"!==rw.type);return"function"==typeof t?lw({"":ow},"",t):ow},stringify:function(e,t,i){const n=[];let a,r,s,o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(i=t.space,s=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){a=[];for(const e of t){let t;"string"==typeof e?t=e:("number"==typeof e||e instanceof String||e instanceof Number)&&(t=String(e)),void 0!==t&&a.indexOf(t)<0&&a.push(t)}}return i instanceof Number?i=Number(i):i instanceof String&&(i=String(i)),"number"==typeof i?i>0&&(i=Math.min(10,Math.floor(i)),l=" ".substr(0,i)):"string"==typeof i&&(l=i.substr(0,10)),c("",{"":e});function c(e,t){let i=t[e];switch(null!=i&&("function"==typeof i.toJSON5?i=i.toJSON5(e):"function"==typeof i.toJSON&&(i=i.toJSON(e))),r&&(i=r.call(t,e,i)),i instanceof Number?i=Number(i):i instanceof String?i=String(i):i instanceof Boolean&&(i=i.valueOf()),i){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof i?d(i):"number"==typeof i?String(i):"object"==typeof i?Array.isArray(i)?function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,a=[];for(let t=0;t<e.length;t++){const i=c(String(t),e);a.push(void 0!==i?i:"null")}if(0===a.length)i="[]";else if(""===l){i="["+a.join(",")+"]"}else{let e=",\n"+o,n=a.join(e);i="[\n"+o+n+",\n"+t+"]"}return n.pop(),o=t,i}(i):function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,r=a||Object.keys(e),s=[];for(const t of r){const i=c(t,e);if(void 0!==i){let e=u(t)+":";""!==l&&(e+=" "),e+=i,s.push(e)}}if(0===s.length)i="{}";else{let e;if(""===l)e=s.join(","),i="{"+e+"}";else{let n=",\n"+o;e=s.join(n),i="{\n"+o+e+",\n"+t+"}"}}return n.pop(),o=t,i}(i):void 0}function d(e){const t={"'":.1,'"':.2},i={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let n="";for(let a=0;a<e.length;a++){const r=e[a];switch(r){case"'":case'"':t[r]++,n+=r;continue;case"\0":if(Jx.isDigit(e[a+1])){n+="\\x00";continue}}if(i[r])n+=i[r];else{if(r<" "){let e=r.charCodeAt(0).toString(16);n+="\\x"+("00"+e).substring(e.length);continue}n+=r}}const a=s||Object.keys(t).reduce((e,i)=>t[e]<t[i]?e:i);return n=n.replace(new RegExp(a,"g"),i[a]),a+n+a}function u(e){if(0===e.length)return d(e);const t=String.fromCodePoint(e.codePointAt(0));if(!Jx.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!Jx.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var Dw=Tw;const Pw=new CSSStyleSheet;Pw.replaceSync("/* atkinson-hyperlegible-next-latin-ext-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* atkinson-hyperlegible-next-latin-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}");const Iw=new CSSStyleSheet;Iw.replaceSync('/* Colors */\n:root, :host {\n\t--white: #ffffff;\n\t--black: #181818;\n\t--black-pale: #1b1a17;\n\t--red: #f70000;\n\t--red-transparent: rgba(247, 0, 0, 0.3);\n\t--red-pale: #ff726f;\n\t--grey: #f5f5f5;\n\t--grey-pale: #cfd2cf;\n\t--grey-semi-dark: #808080;\n\t--grey-dark: #3e3e3e;\n\t--blue: #2954e9;\n\t--blue-dark: #0a1f69;\n\t--blue-semi: #d7dffc;\n\t--blue-pale: #f2f5ff;\n\t--blue-geovisio: #34495e;\n\t--beige: #f5f3ec;\n\t--yellow: #fec868;\n\t--orange: #ff6f00;\n\t--orange-transparent: rgba(255,111,0,0.3);\n\t--orange-pale: #fffafa;\n\t--green: #7ec636;\n\t--green-pale: #f0ffee;\n\t--widget-bg: var(--white);\n\t--widget-bg-hover: var(--grey);\n\t--widget-bg-active: var(--blue);\n\t--widget-bg-inactive: var(--grey-pale);\n\t--widget-bg-primary: var(--blue-semi);\n\t--widget-bg-primary-hover: #e0e7ff;\n\t--widget-bg-warn: #FFECB3;\n\t--widget-bg-danger: #FFCDD2;\n\t--widget-bg-success: #C8E6C9;\n\t--widget-border-div: var(--grey-pale);\n\t--widget-border-btn: var(--blue);\n\t--widget-font: var(--grey-dark);\n\t--widget-font-active: var(--white);\n\t--widget-font-direct: var(--blue);\n\t--widget-font-warn: #BF360C;\n\t--widget-font-danger: #B71C1C;\n\t--widget-font-success: #1B5E20;\n\t--font-family: "Atkinson Hyperlegible Next", sans-serif;\n\t--widget-option-left: #6A1B9A;\n\t--widget-option-right: #0D47A1;\n\toverscroll-behavior-y: contain;\n}\n\n.pnx-hidden { display: none !important; }\n\n/* Hidden elements on mobile */\n@container (max-width: 576px) {\n\t.pnx-mobile-hidden { display: none !important; }\n}\n\n/* Hidden elements on print */\n@media print {\n\t.pnx-print-hidden { display: none !important; }\n}\n'),document.adoptedStyleSheets.push(Pw),document.adoptedStyleSheets.push(Iw);class Lw extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Lw.GetJSONConverter()},lang:{type:String},endpoint:{type:String}};constructor(e=!1){super(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`📷 Panoramax ${this.getClassName()} - Version 5.2.0 (100d0be)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,ps().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Ax(this.lang),this.loader=zr("pnx-loader",{_parent:this,"no-label":us()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach(([e,t])=>{this.getAttribute(e)&&console.error(`Component attribute "${e}" has been renamed into "${t}". Old attribute "${e}" is ignored.`)}),us()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||zr("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let e=this.endpoint;try{this.api=new Zx(this.endpoint,{fetch:this["fetch-options"]}),this.api.onceReady().then(()=>{if(e!==this._loadsAPI||!this.api)return;let t=this.api.getUnavailableFeatures(),i=this.api.getAvailableFeatures();i=0===t.length?"✅ All features available":"✅ Available features: "+i.join(", "),t=0===t.length?"":"🚫 Unavailable features: "+t.join(", "),console.info(`🌐 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\nℹ️ API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${i}\n ${t}\n`.trim())}).catch(e=>this.loader?.dismiss?.(e,this._t?.pnx.error_api)).finally(()=>delete this._loadsAPI)}catch(e){delete this._loadsAPI,this.loader?.dismiss?this.loader.dismiss(e,this._t.pnx.error_api):console.error(e)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise(e=>setTimeout(e,250)).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(e,t,i){if(super.attributeChangedCallback(e,t,i),"endpoint"===e&&(this._loadsAPI&&i&&this._loadsAPI===i||this.api&&this.api._endpoint===i||!i||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(e)){let n,a,r,s;"picture"===e?(n=this.sequence,r=this.sequence,a=i,s=t):(n=i,r=t,a=this.picture,s=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:n,picId:a,prevSeqId:r,prevPicId:s}}))}}getClassName(){return"Basic"}select(e=null,t=null,i=!1){i&&(this.picture=null,this.sequence=null),this.picture=t,this.sequence=e}isWidthSmall(){return this?.offsetWidth<576}isWidthMedium(){return this?.offsetWidth>=576&&this?.offsetWidth<768}isHeightSmall(){return this?.offsetHeight<400}render(){return V`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}getAPI(){return this.api}addEventListener(e,t,i){let n=e.split(":").shift();if(n&&this.getSubComponentsNames().includes(n)){const a=e.substring(n.length+1);this[n]?.addEventListener?this[n].addEventListener(a,t,i):setTimeout(()=>this.addEventListener(e,t,i),50)}else super.addEventListener(e,t,i)}static GetJSONConverter(){return{fromAttribute:e=>null==e||""===e?null:"object"==typeof e||Array.isArray(e)?e:Dw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:Dw.stringify(e)}}}class zw extends le{static styles=[Po,s`
2058
2058
  textarea:invalid {
2059
2059
  border: 2px solid var(--red);
2060
2060
  background-color:var(--beige);
@@ -2445,7 +2445,7 @@ function*(e,t){if(void 0!==e){let i=0;for(const n of e)yield t(n,i++)}}(this._re
2445
2445
  </pnx-togglable-group>
2446
2446
  `}
2447
2447
  </pnx-button-group>
2448
- `:H}}customElements.define("pnx-widget-player",qw);const Hw=15,Ww=["!",["has","uncrowded"]],Kw=["==",["get","type"],"equirectangular"];function Xw(e){return{PICTURES:{paint:{"circle-radius":["interpolate",["linear"],["zoom"],Hw,0,15.5,e?1:["case",Ww,0,1],16.5,e?2:["case",Ww,0,2],17,e?4:["case",Ww,1,4],18,e?5:["case",Ww,3,5],20,e?7:["case",Ww,5,7],22,e?7:["case",Ww,7,7]],"circle-opacity":["interpolate",["linear"],["zoom"],Hw,0,15.5,e?1:["case",Ww,0,1],16.5,e?1:["case",Ww,0,1],17,1],"circle-stroke-opacity":["case",["all",Ww,Kw],.2,Kw,.4,0],"circle-stroke-width":["interpolate",["linear"],["zoom"],17.5,0,18.5,e?["case",Kw,10,2]:["case",["all",Ww,Kw],0,Kw,10,Ww,0,2],19.5,e?["case",Kw,10,2]:["case",["all",Ww,Kw],10,Kw,10,Ww,0,2]]},layout:{}},SEQUENCES:{paint:{"line-width":["interpolate",["linear"],["zoom"],0,.5,10,1.5,14.5,1.5,15.5,e?2:["case",Ww,.5,2],22,e?4:["case",Ww,1,4]]},layout:{"line-cap":"square"}},SEQUENCES_PLUS:{paint:{"line-width":["interpolate",["linear"],["zoom"],0,15,16,30],"line-opacity":0,"line-color":"#ff0000"},layout:{"line-cap":"square"}},GRID:{layout:{"circle-sort-key":["get","coef"]},paint:{"circle-color":["interpolate",["linear"],["get","coef"],0,"#fff",.1,qr.PALETTE_1,.25,qr.PALETTE_1,.5,qr.PALETTE_2,.75,qr.PALETTE_3,1,qr.PALETTE_4],"circle-opacity":["interpolate",["linear"],["zoom"],4,.5,5,1,6.75,1,7,0],"circle-radius":["interpolate",["linear"],["zoom"],1,["match",["get","coef"],0,0,1],5,["match",["get","coef"],0,0,2.5],7,["match",["get","coef"],0,0,7]]}}}}Xw(!1),Xw(!0);const Qw=864e5,Zw=e=>new Date(e).toISOString().split("T")[0],Yw=Date.now();Zw(Yw-30*Qw),Zw(Yw-365*Qw),Zw(Yw-730*Qw);Wr[0].color,Wr[1].color,Wr[2].color,Wr[3].color,Wr[4].color,Zr[0].color,Zr[1].color,Zr[2].color,Zr[3].color,Zr[4].color;const Jw={minDate:"date_from",maxDate:"date_to",pic_type:"pic_type",camera:"camera",theme:"theme",qualityscore:"pic_score",gps:"gps"},$w=Object.fromEntries(Object.entries(Jw).map(e=>[e[1],e[0]])),eM=["none","null","false",!1],tM=["antialias","bearing","bearingSnap","bounds","boxZoom","clickTolerance","collectResourceTiming","cooperativeGestures","crossSourceCollisions","doubleClickZoom","dragPan","dragRotate","fadeDuration","failIfMajorPerformanceCaveat","fitBoundsOptions","hash","interactive","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"];class iM{constructor(e={},t={},i={}){"false"===e["url-parameters"]&&(t={});let n={};"object"==typeof e?.["psv-options"]&&(n=e["psv-options"]);let a={};"object"==typeof e?.["map-options"]&&(a=e["map-options"]);let r={};"object"==typeof i?.map&&(r=i.map);let s=t.map&&"none"!==t.map?nM(t.map):null,o=!eM.includes(t.map)&&!eM.includes(e["map-options"]),l=t.focus||e.focus,c=t.pic||e.picture,d=t.seq||e.sequence,u=t.users||e["endpoint-to-use"]||r.endpoint,h=t.speed||n?.transitionDuration,p=t.nav||n?.picturesNavigation,A=t.theme||a.theme||r?.theme,m=t.background||a.background||r?.background,g=s?.center||!c&&(a.center||r?.center)||[0,0],f=s?.zoom||a.zoom||r?.zoom,_=s?.pitch||a.pitch,v=s?.bearing||a.bearing,E=t.level||a.indoor?.level,b=e.geocoder,y=e.widgets,k=e["fetch-options"],x=e.style,w=e.lang,M=e.endpoint,S=a.raster,C=a.basemaps,T=a.indoor,D=a.attributionControl,P=a.preview,I=(L=a,Object.fromEntries(Object.entries(L).filter(([e])=>tM.includes(e))));var L;let z=e["keyboard-shortcuts"],R=e["skip-tags-menu-opening"],F="false"===i?.disableAnnotations||n?.displayAnnotations||!1,U=t.xyz,N=t.date_from,B=t.date_to,O=t.pic_type,j=t.camera,G=t.pic_score,V=t.gps,q=t.overlay,H=t.xywh,W=t.annot;!o||c||d?["map","pic"].includes(l)?"map"!==l||o||(console.warn("Parameter focus can't be 'map' as map is disabled"),l="pic"):(console.warn("Invalid value for parameter focus:",l),l=!o||c||d?"pic":"map"):l="map","aerial"!==m||S||(console.warn("Parameter background can't be 'aerial' as no aerial imagery is available"),m="streets"),E&&!T&&console.error("Can't set indoor level if indoor= plugin is not available"),!F&&W&&(F=!0),W&&!c&&console.error("Parameter annot can only be used in combination with 'picture'"),["thumb","marker","none"].includes(P)||(P&&P.length>0&&console.warn("Parameter map-options.preview is invalid, should be 'thumb', 'marker' or 'none'"),P="thumb"),this._parentInit={map:o,fetchOptions:k,style:x,lang:w,endpoint:M},this._parentPostInit={focus:l,picture:c,sequence:d,geocoder:b,widgets:y,users:u,forceFocus:!0,keyboardShortcuts:!0,willLoadPicture:void 0!==(c||d),skipTagsMenuOpening:"true"===R},this._psvInit=Object.assign(Object.fromEntries(Object.entries(n).filter(([e])=>!["transitionDuration","picturesNavigation","displayAnnotations"].includes(e))),{displayAnnotations:F}),this._psvAny={transitionDuration:h,picturesNavigation:p},this._psvPostInit={xyz:U,xywh:H,annotation:W},this._mapInit={raster:S,indoor:T,attributionControl:D,basemaps:C,preview:P,...I},this._mapAny={theme:A,background:m,center:g,zoom:f,pitch:_,bearing:v,level:E},this._mapPostInit={date_from:N,date_to:B,pic_type:O,camera:j,pic_score:G,gps:V,overlay:q},"false"===z&&(this._psvInit.keyboard=!1,this._psvInit.keyboardActions={},this._mapInit.keyboard=!1,this._parentPostInit.keyboardShortcuts=!1)}_sanitize(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}getParentInit(){return this._sanitize(this._parentInit)}getParentPostInit(){return this._sanitize(this._parentPostInit)}getPSVInit(){return this._sanitize(Object.assign({},this._psvInit,this._psvAny))}getPSVPostInit(){return this._sanitize(Object.assign({},this._psvPostInit,this._psvAny))}getMapInit(){return this._sanitize(Object.assign({},this._mapInit,this._mapAny))}getMapPostInit(){return this._sanitize(Object.assign({},this._mapPostInit,this._mapAny))}static GetComponentProperties(e,t){const i={};for(let n in e.properties){e.properties[n].state||null==t[n]||(i[n]=t[n])}return i}}function nM(e,t){const i=(e||"").split("/");if(i.length>=3&&!i.some(e=>isNaN(e))){const e={center:[+i[2],+i[1]],zoom:+i[0],pitch:+(i[4]||0)};return t&&(e.bearing=t.dragRotate.isEnabled()&&t.touchZoomRotate.isEnabled()?+(i[3]||0):t.getBearing()),e}return null}function aM(e,t){t.xyz&&e.addEventListener("picture-loaded",()=>{const i=function(e){const t=(e||"").split("/");return 3!==t.length||t.some(e=>isNaN(e))?null:{x:+t[0],y:+t[1],z:+t[2]}}(t.xyz);e.setXYZ(i.x,i.y,i.z)},{once:!0}),t.xywh&&e.addEventListener("picture-loaded",()=>{const i=function(e,t){let i=(e||"").split(",");if(4!==i.length||i.some(e=>isNaN(e)))return null;{let[e,n,a,r]=i.map(e=>parseFloat(e)),s=t.panorama.basePanoData;if("function"==typeof s){const e=t?.properties?.["pers:interior_orientation"]?.sensor_array_dimensions;s=e&&2===e.length?s({width:e[0],height:e[1]}):null}if(!s?.fullWidth||!s?.fullHeight)return null;const o=s?.croppedX||0,l=s?.croppedY||0,c=o+e+a/2-s.fullWidth/2,d=-(l+n+r/2-s.fullHeight/2),u=c/s.fullWidth,h=d/s.fullHeight,p=(a/s.fullWidth+r/s.fullHeight)/2;return{yaw:2*u*Math.PI,pitch:h*Math.PI,z:100*(1-p)}}}(t.xywh,e.getPictureMetadata());e.rotate(i),e.zoom(i.z)},{once:!0}),t.annotation&&(e.getPictureMetadata()?e.focusOnAnnotation(t.annotation):e.addEventListener("picture-loaded",()=>{e.focusOnAnnotation(t.annotation)},{once:!0}));let i=t.transitionDuration||t.speed;void 0!==i&&e.setTransitionDuration(i);let n=t.picturesNavigation||t.nav;["none","pic","any","seq"].includes(n)&&e.setPicturesNavigation(n)}function rM(e,t){const i=nM(t.map,e);i&&e.jumpTo(i),e.setFilters?.(function(e){const t={};for(let i in $w)e[i]&&(t[$w[i]]=e[i]);if(t.qualityscore){let e=t.qualityscore.split("");const i={A:5,B:4,C:3,D:2,E:1};t.qualityscore=e.map(e=>i[e])}return t}(t)),e._parent?.mapStyleComposer?.layerRanges.basemaps[t.background]&&e._parent.mapStyleComposer.switchBasemap(t.background),t.overlay&&t.overlay.split(",").forEach(t=>e._parent.mapStyleComposer.switchDataOverlayVisibility("sem-"+t,!0))}function sM(e,t){let i=t.picture||t.pic,n=t.sequence||t.seq||null;if(i){const t=i.split(";");t.length>1&&console.warn("Multiple picture IDs passed in URL, only first one kept"),e.select(1===t.length?n:null,t[0],!0)}else n?e.select(n,null,!0):e.select()}const oM=["streets","aerial"],lM=["speed","nav","focus","pic","xyz","map","background","users","s","xywh","annot","seq","overlay","level"].concat(Object.values(Jw)),cM=["focus-changed","pictures-navigation-changed"],dM=["position-updated","zoom-updated","view-rotated","picture-loaded","picture-failed","transition-duration-changed","annotation-focused","annotations-unfocused"],uM=["moveend","zoomend","boxzoomend","styledata"],hM=["filters-changed","theme-changed","panoramax-changed","basemap-changed"];class pM extends EventTarget{constructor(e){super(),this._parent=e,this._delay=null}listenToChanges(){window.addEventListener("popstate",this._onURLChange.bind(this),!1),cM.forEach(e=>this._parent.addEventListener(e,this._onParentChange.bind(this))),dM.forEach(e=>this._parent.psv.addEventListener(e,this._onParentChange.bind(this))),this._parent.map&&(uM.forEach(e=>this._parent.map.on(e,this._onParentChange.bind(this))),hM.forEach(e=>this._parent.mapStyleComposer.addEventListener(e,this._onParentChange.bind(this))),this._parent.map.indoorEqual?.on("levelchange",this._onParentChange.bind(this)))}destroy(){window.removeEventListener("popstate",this._onURLChange)}nextURLParams(){let e={};"number"==typeof this._parent.psv.getTransitionDuration()&&(e.speed=this._parent.psv.getTransitionDuration()),[null,"any"].includes(this._parent.psv.getPicturesNavigation())||(e.nav=this._parent.psv.getPicturesNavigation()),this._parent.psv.getPictureId()&&(e.pic=this._parent.psv.getPictureId());const t=this._parent.psv.getPictureMetadata();t&&(e.xyz=this.currentPSVString(),t.sequence?.id&&(e.seq=t.sequence.id));const i=this._parent.psv.getSelectedAnnotations();if(i?.length>0&&(e.annot=i[0]),this._parent.map?.loaded){if(e.map=this.currentMapString(),e.focus="pic",this._parent.isMapWide()&&(e.focus="map"),this._parent.mapStyleComposer?.hasManyBasemaps?.()&&this._parent.mapStyleComposer?.basemap&&(e.background=this._parent.mapStyleComposer.basemap),this._parent.mapStyleComposer?.panoramax&&(e.users=this._parent.mapStyleComposer.panoramax),this._parent.mapStyleComposer.panoramaxFilters){for(let t in Jw)this._parent.mapStyleComposer.panoramaxFilters[t]&&(e[Jw[t]]=this._parent.mapStyleComposer.panoramaxFilters[t]);if(e.pic_score)if(Array.isArray(e.pic_score)||(e.pic_score=e.pic_score.split(",")),5===e.pic_score.length)delete e.pic_score;else{const t=[null,"E","D","C","B","A"];e.pic_score=e.pic_score.map(e=>t[e]).join("")}Array.isArray(e.gps)&&5===e.gps.length&&delete e.gps}if(this._parent.map?.getSemanticOverlays){const t=this._parent.map.getSemanticOverlays().filter(e=>this._parent.mapStyleComposer.dataOverlays.has(e.source)).map(e=>e.id);t.length>0&&(e.overlay=t.join(","))}this._parent.map?.indoorEqual&&(e.level=this._parent.map.indoorEqual.level)}return e}nextURLString(){let e="";return Object.entries(this.nextURLParams()).sort((e,t)=>e[0].localeCompare(t[0])).forEach(t=>{let[i,n]=t,a=!1;const r=e.split("&").map(e=>{const t=e.split("=")[0];return t===i?(a=!0,`${t}=${n}`):e}).filter(e=>e);a||r.push(`${i}=${n}`),e=`${r.join("&")}`}),`?${e}`.replace(/^\?+/,"?")}currentURLParams(e=!1){const t=(e?window.location.hash:window.location.search).replace(/^[?#]/,"").replace(/&amp;/g,"&");let i={};if(t.split("&").map(e=>e.split("=")).filter(e=>void 0!==e[0]&&e[0].length>0&&lM.includes(e[0])).forEach(e=>{i[e[0]]=e[1]}),i.s){const e=Object.fromEntries(decodeURIComponent(i.s).split(";").map(e=>[e[0],e.substring(1)]));i={},"m"===e.f?i.focus="map":"p"===e.f?i.focus="pic":"t"===e.f&&(i.focus="meta"),""!==e.s&&(i.speed=100*parseFloat(e.s)),"a"===e.n?i.nav="any":"s"===e.n&&(i.nav="seq"),["n","p"].includes(e.n)&&(i.nav="pic"),""!==e.p&&(i.pic=e.p),""!==e.a&&(i.annot=e.a),""!==e.c&&(i.xyz=e.c),""!==e.m&&(i.map=e.m),""!==e.d&&(i.date_from=e.d),""!==e.e&&(i.date_to=e.e),"f"===e.t?i.pic_type="flat":"e"===e.t&&(i.pic_type="equirectangular"),""!==e.k&&(i.camera=e.k),"d"===e.v?i.theme="default":"a"===e.v?i.theme="age":"t"===e.v?i.theme="type":"s"===e.v?i.theme="score":"g"===e.v&&(i.theme="gps"),"s"===e.b?i.background="streets":"a"===e.b&&(i.background="aerial"),""!==e.u&&(i.users=e.u),""!==e.q&&(i.pic_score=e.q),""!==e.g&&(i.gps=e.g),""!==e.o&&(i.overlay=e.o),""!==e.l&&(i.level=e.l)}return i}currentMapString(){if(!this._parent.map?.loaded)return"";const e=this._parent.map.getCenter(),t=Math.round(100*this._parent.map.getZoom())/100,i=Math.ceil((t*Math.LN2+Math.log(512/360/.5))/Math.LN10),n=Math.pow(10,i),a=Math.round(e.lng*n)/n,r=Math.round(e.lat*n)/n,s=this._parent.map.getBearing(),o=this._parent.map.getPitch();let l=`${t}/${r}/${a}`;return(s||o)&&(l+="/"+Math.round(10*s)/10),o&&(l+=`/${Math.round(o)}`),l}currentPSVString(){const e=this._parent.psv.getXYZ();return`${e.x.toFixed(2)}/${e.y.toFixed(2)}/${Math.round(e.z||0)}`}_onURLChange(){let e=this.currentURLParams();var t,i,n;"Viewer"===this._parent.getClassName()?(sM(t=this._parent,i=e),"map"===i.focus&&t?.map?(t.setPopup(!1),t._setFocus("map",null,i.forceFocus)):"pic"===i.focus&&t?.mini?(t.setPopup(!1),t._setFocus("pic",null,i.forceFocus)):i.focus&&"meta"===i.focus&&t?.mini&&t._setFocus("pic",null,i.forceFocus),null!=i.users&&(n=i.users,["default","metacatalog","",null,void 0].includes(n)?t.mapStyleComposer.switchPanoramaxEndpoint(i.users):t.mapStyleComposer._createPanoramaxEndpointForUser(i.users))):sM(this._parent,e),aM(this._parent.psv,e),this._parent.map&&rM(this._parent.map,e)}nextShortLink(e){const t=new URL(e),i=this.nextURLParams(),n={f:(i.focus||"").substring(0,1),s:isNaN(parseInt(i.speed))?void 0:Math.floor(parseInt(i.speed)/100),n:(i.nav||"").substring(0,1),p:i.pic,c:i.xyz,m:i.map,d:i.date_from,e:i.date_to,t:(i.pic_type||"").substring(0,1),k:i.camera,v:(i.theme||"").substring(0,1),b:oM.includes(i.background)?(i.background||"").substring(0,1):i.background||"",u:i.users,q:i.pic_score,a:i.annot,g:i.gps,o:i.overlay,l:i.level},a=Object.entries(n).filter(([,e])=>null!=e&&""!=e).map(([e,t])=>`${e}${t}`).join(";");return t.search=`s=${a}`,t}getUnmanagedParameters(e){return new URLSearchParams(Array.from(e.searchParams).filter(([e])=>!lM.includes(e))).toString()}_onParentChange(){this._delay&&(clearTimeout(this._delay),this._delay=null),this._delay=setTimeout(()=>{const e=new URL(window.location.href),t=new URL(window.location.href),i=this.getUnmanagedParameters(e);if(t.search=this._parent?this.nextURLString()+(i.length>0?"&"+i:""):"",Object.keys(this.currentURLParams(!0)).length>0&&(t.hash=""),e.search===t.search)return;const n=this.currentURLParams().pic||"",a=this._parent?.psv?.getPictureId?.()||"";try{if(n!=a?window.history.pushState(window.history.state,null,t.href):window.history.replaceState(window.history.state,null,t.href),this._parent){const e=new CustomEvent("url-changed",{detail:{url:t.href}});this.dispatchEvent(e)}}catch(e){}},500)}}const AM={fas:"fa7-solid"},mM={};class gM{constructor(e=null,t=!1){this._ready=!1,this._presets=null,this._translations={},t||this._load(e)}async _load(e){e=e?.substring(0,2)||window.navigator.languages[0]?.substring(0,2);try{const[t,i,n]=await Promise.all([fetch("https://presets.panoramax.fr/translations/en.min.json"),e?fetch(`https://presets.panoramax.fr/translations/${e}.min.json`):Promise.resolve({ok:!0}),fetch("https://presets.panoramax.fr/presets.min.json")]);if(!(t&&i&&n&&t.ok&&i.ok&&n.ok))throw this._ready=-1,new Error("Presets service is not available");this._presets=await n.json(),this._translations.en=(await t.json())?.en?.presets,e&&(this._translations[e]=(await i.json())?.[e]?.presets),Object.entries(this._presets).forEach(([t,i])=>{if(this._translations[e]?.presets?.[t]?.name?i.name=this._translations[e].presets[t].name:this._translations.en?.presets?.[t]?.name&&(i.name=this._translations.en.presets[t].name),i.icon){const e=i.icon.split("-")[0],t=AM[e];i.iconify=t?i.icon.replace(e+"-",t+":"):i.icon.split("-")[0]+":"+i.icon.split("-").slice(1).join("-"),mM[i.iconify]&&(i.iconify=mM[i.iconify])}}),this._ready=!0}catch(e){console.error("Presets service throws an error:",e),this._ready=-1}}async onceReady(){return this._ready?-1===this._ready?Promise.reject():Promise.resolve():(await new Promise(e=>setTimeout(e,250)),this.onceReady())}async getPreset(e){return await this.getPresets(e).then(e=>e.shift())}async getPresets(e){return await this.onceReady().then(()=>{const t=Object.values(this._presets).filter(t=>{if(0===Object.keys(t.tags).length)return!1;for(let i in t.tags){const n=t.tags[i];if(!e.semantics||!e.semantics.find(e=>"delete"!==e.action&&e.key===i&&("*"===n||n===e.value)))return!1}return!0});return t.sort((e,t)=>{const i=Object.keys(e.tags).length,n=Object.keys(t.tags).length;if(i>n)return-1;if(i===n){const i=Object.values(e.tags).filter(e=>"*"===e).length,n=Object.values(t.tags).filter(e=>"*"===e).length;return i<n?-1:i>n?1:0}return 1}),t})}}const fM=new CSSStyleSheet;fM.replaceSync('pnx-photo-viewer {\n\tposition: relative;\n\tdisplay: block;\n}\n\n/* Maximized components */\npnx-photo-viewer .pnx-psv {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 0;\n}\n\n/* No PSV loader */\npnx-photo-viewer .psv-loader {\n\tdisplay: none;\n}\n\n/* Cornered grid layout */\npnx-photo-viewer pnx-cornered-grid::part(corner-top-left),\npnx-photo-viewer pnx-cornered-grid::part(corner-top),\npnx-photo-viewer pnx-cornered-grid::part(corner-top-right),\npnx-photo-viewer pnx-cornered-grid::part(corner-bottom-left),\npnx-photo-viewer pnx-cornered-grid::part(corner-bottom),\npnx-photo-viewer pnx-cornered-grid::part(corner-bottom-right) {\n\tgap: 10px;\n\tpadding: 10px;\n}\n\n@media screen and (max-width: 576px) {\n\tpnx-photo-viewer pnx-cornered-grid::part(corner-top-right) {\n\t\tflex-direction: column;\n\t\talign-items: flex-end;\n\t\tjustify-content: flex-start;\n\t}\n\n\tpnx-photo-viewer pnx-cornered-grid::part(corner-top-left) {\n\t\tflex-direction: column;\n\t\talign-items: flex-start;\n\t\tjustify-content: flex-start;\n\t}\n}\n\n/* Hidden widgets on sequence play */\npnx-photo-viewer.pnx-playing pnx-bottom-drawer,\npnx-photo-viewer.pnx-playing pnx-widget-legend,\npnx-photo-viewer.pnx-playing pnx-widget-zoom {\n\tdisplay: none;\n}\n\n/* Override legend positioning */\n@media screen and (min-width: 576px) {\n\tpnx-photo-viewer pnx-widget-legend:not([light="true"]) {\n\t\tposition: absolute;\n\t\ttop: 10px;\n\t\twidth: 100%;\n\t}\n}\n\n/* Hidden widgets on grid toggled */\npnx-photo-viewer .psv-virtual-tour-arrows {\n\ttransition: opacity 0.25s ease-in-out;\n\topacity: 100%;\n}\npnx-photo-viewer.pnx-grid-toggled .psv-virtual-tour-arrows {\n\topacity: 0%;\n}\npnx-photo-viewer.pnx-grid-toggled .psv-virtual-tour-arrows button {\n\tpointer-events: none;\n\tcursor: unset;\n}'),document.adoptedStyleSheets.push(fM);const _M=Math.PI/6,vM=["pnx-mini","pnx-widget-player","pnx-widget-zoom"];class EM extends Lw{static properties={"psv-options":{converter:Lw.GetJSONConverter()},widgets:{type:String},"url-parameters":{type:String},"keyboard-shortcuts":{type:String},tabindex:{type:Number},"skip-tags-menu-opening":{type:String},"share-base-url":{type:String},...Lw.properties};constructor(){super(),this["psv-options"]={},this["url-parameters"]=this.getAttribute("url-parameters")||"true",this["keyboard-shortcuts"]=this.getAttribute("keyboard-shortcuts")||"true",this["skip-tags-menu-opening"]="true"!==(this.getAttribute("skip-tags-menu-opening")||"false"),this["share-base-url"]=this.getAttribute("share-base-url")||null,this.widgets=this.getAttribute("widgets")||"true",this.grid=zr("pnx-cornered-grid"),this.psvContainer=document.createElement("div"),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.popup=zr("pnx-popup",{_parent:this,onclose:this._onPopupClose.bind(this)}),this.tabindex=0,this._sequencesMetadata={},this._openedMenus=0,this._openedMenusChanges=null,this.addEventListener("menu-opened",()=>{this._openedMenusChanges=[Date.now(),this._openedMenus],this._openedMenus++}),this.addEventListener("menu-closed",()=>{this._openedMenusChanges=[Date.now(),this._openedMenus],this._openedMenus--})}_createInitParamsHandler(){this._initParams=new iM(iM.GetComponentProperties(EM,this),Object.assign({},this.urlHandler?.currentURLParams(),this.urlHandler?.currentURLParams(!0)),{disableAnnotations:localStorage.getItem(Gr)})}_initWidgets(){"false"!==this._initParams.getParentPostInit().widgets&&(us()||(this.grid.appendChild(zr("pnx-widget-player",{slot:this.isWidthMedium()?"top-right":"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()||this.isWidthMedium()?"md":"xl"})),this.grid.appendChild(zr("pnx-annotations-switch",{slot:this.isWidthMedium()?"top-right":"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()||this.isWidthMedium()?"md":"xl"}))),us()?(this.legend=zr("pnx-widget-legend",{slot:"bottom-right",light:!0,_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(this.legend)):this.isWidthSmall()?(this.legend=zr("pnx-picture-legend",{_parent:this}),this.bottomDrawer=zr("pnx-bottom-drawer",{slot:"bottom",_parent:this,class:this._initParams.getParentPostInit().willLoadPicture?void 0:"pnx-hidden"}),this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer),this.addEventListener("select",e=>{Yr(e.detail.picId)?this.bottomDrawer.classList.add("pnx-hidden"):this.bottomDrawer.classList.remove("pnx-hidden")})):(this.legend=zr("pnx-widget-legend",{slot:this.isWidthSmall()?void 0:"top-left",_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(zr("pnx-widget-zoom",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.grid.appendChild(this.legend)))}connectedCallback(){super.connectedCallback(),this.presetsManager=new gM(this.lang),"false"!==this["url-parameters"]&&(this.urlHandler=new pM(this),this.onceReady().then(()=>{this.urlHandler.listenToChanges(),this.urlHandler._onParentChange()})),this.onceAPIReady().then(this._postAPIInit.bind(this)),this._moveChildToGrid(),window.addEventListener("DOMContentLoaded",()=>{this._moveChildToGrid()},{once:!0})}disconnectedCallback(){super.disconnectedCallback(),this.urlHandler?.destroy(),this.psv?.destroy(),document.body.removeEventListener("click",this._toggleKeyboardBasedOnFocus),window.removeEventListener("keypress",this._toggleKeyboardBasedOnFocus)}getClassName(){return"PhotoViewer"}async onceReady(){return await this.oncePSVReady().then(()=>this._initParams.getParentPostInit().willLoadPicture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve())}render(){return[this.loader,this.grid,this.popup]}getSubComponentsNames(){return super.getSubComponentsNames().concat(["psv","grid","popup","urlHandler"])}oncePSVReady(){let e;return new Promise(t=>{e=setInterval(()=>{this.psv&&"object"==typeof this.psv&&(this.psv.container?(clearInterval(e),t()):this.psv.addEventListener&&this.psv.addEventListener("ready",()=>{clearInterval(e),t()},{once:!0}))},250)})}onceFirstPicLoaded(){return this.oncePSVReady().then(()=>this.psv.getPictureMetadata()?Promise.resolve():new Promise(e=>{const t=()=>{this.psv.removeEventListener("picture-failed",i),e()},i=()=>{this.psv.removeEventListener("picture-loaded",t),e()};this.psv.addEventListener("picture-loaded",t,{once:!0}),this.psv.addEventListener("picture-failed",i,{once:!0})}))}_postAPIInit(){this.loader.setAttribute("value",30),this._createInitParamsHandler();const e=this._initParams.getParentPostInit();if(this._initPSV(),this._initWidgets(),sM(this,e),e.keyboardShortcuts&&this._handleKeyboardManagement(),e.willLoadPicture)if(this.psv.getPictureMetadata())this.loader.dismiss();else{const e=()=>{this.loader.dismiss(),this.psv.removeEventListener("picture-failed",t)},t=()=>{this.loader.dismiss(!0,this._t.pnx.error_pic),this.psv.removeEventListener("picture-loaded",e)};this.psv.addEventListener("picture-loaded",e,{once:!0}),this.psv.addEventListener("picture-failed",t,{once:!0})}else this.loader.dismiss()}_initPSV(){try{this.psv=new ix(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...JE.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),aM(this.psv,this._initParams.getPSVPostInit())}),this.psv.addEventListener("sequence-playing",()=>this.classList.add("pnx-playing")),this.psv.addEventListener("sequence-stopped",()=>this.classList.remove("pnx-playing")),this.psv.addEventListener("picture-failed",()=>this.select(null,null)),this.psv.addEventListener("dblclick",()=>clearTimeout(this._gridFocus)),this.psv.addEventListener("click",e=>{clearTimeout(this._gridFocus),"CANVAS"===e.data.target.tagName&&(this._hasMenuOpened()||this.isMapWide&&(!this.isMapWide||this.isMapWide())||(this._gridFocus=setTimeout(()=>{this.grid.toggleAway()?this.classList.add("pnx-grid-toggled"):this.classList.remove("pnx-grid-toggled")},250)))}),this.psvContainer.addEventListener("mousemove",()=>{this.grid._hidden&&(clearTimeout(this._gridFocus),this.grid.toggleAway(!0),this.classList.remove("pnx-grid-toggled"))})}catch(e){let t=tv.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(e,t)}}_hasMenuOpened(){return this._openedMenus>0||this._openedMenusChanges&&Date.now()-this._openedMenusChanges[0]<=250&&this._openedMenusChanges[1]>=0}_enableKeyboard(){this.psv.startKeyboardControl()}_disableKeyboard(){this.psv.stopKeyboardControl()}_toggleKeyboardBasedOnFocus(e){const t=e?.target||document.activeElement;if(this.contains(t)){for(let e of this.grid.childNodes)if("bg"!==e.getAttribute("slot")&&!vM.includes(e.tagName.toLowerCase())&&e.contains(t))return void this._disableKeyboard();if(null!==this.popup.getAttribute("visible"))return void this._disableKeyboard();this._enableKeyboard()}else this._disableKeyboard()}_handleKeyboardManagement(){window.addEventListener("click",e=>this._toggleKeyboardBasedOnFocus(e)),window.addEventListener("keypress",this._toggleKeyboardBasedOnFocus.bind(this)),this.popup.addEventListener("open",this._disableKeyboard.bind(this)),this.popup.addEventListener("close",this._enableKeyboard.bind(this)),this.psv.addEventListener("click",this._enableKeyboard.bind(this));for(let e of this.grid.childNodes)"bg"===e.getAttribute("slot")||vM.includes(e.tagName.toLowerCase())||(e.addEventListener("focusin",this._disableKeyboard.bind(this)),e.addEventListener("focusout",()=>{null===this.popup.getAttribute("visible")&&this._enableKeyboard()}))}_psvShouldGoFast(){return this.psv._sequencePlaying&&this.psv.getTransitionDuration()<1e3}_moveChildToGrid(){Array.from(this.querySelectorAll("[slot]")).forEach(e=>{e.tagName?.toLowerCase().startsWith("pnx-")&&(e._parent=this,e._t=this._t),"editors"===e.getAttribute("slot")?this.onceReady().then(()=>this.legend?.appendChild(e)):this.grid.appendChild(e)})}setPopup(e,t=null){e?this.popup.setAttribute("visible",""):this.popup.removeAttribute("visible"),this.popup.innerHTML="","string"==typeof t?this.popup.innerHTML=t:Array.isArray(t)&&t.forEach(e=>this.popup.appendChild(e))}_onPopupClose(){this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:this.map&&this.isMapWide()?"map":"pic"}}))}_showQualityScoreDoc(){this.setPopup(!0,[zr("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[zr("pnx-report-form",{_parent:this})])}_showShareOptions(){this.setPopup(!0,[zr("pnx-share-menu",{_parent:this,"base-url":this["share-base-url"]})])}_showSemanticsDoc(){this.setPopup(!0,[zr("pnx-semantics-doc",{_t:this._t})])}_showSemanticsDownload(){this.setPopup(!0,[zr("pnx-semantics-download",{_t:this._t})])}moveCenter(){this.psv.getPictureMetadata()&&this._psvAnimate({speed:Kk,yaw:0,pitch:0,zoom:30})}moveLeft(){this._moveToDirection("left")}moveRight(){this._moveToDirection("right")}moveUp(){this._moveToDirection("up")}moveDown(){this._moveToDirection("down")}_moveToDirection(e){let t=this.psv.getPosition();switch(e){case"up":t.pitch+=_M;break;case"left":t.yaw-=_M;break;case"down":t.pitch-=_M;break;case"right":t.yaw+=_M}this._psvAnimate({speed:Kk,...t})}_psvAnimate(e){this._lastPsvAnim&&this._lastPsvAnim.cancel(),this._lastPsvAnim=this.psv.animate(e)}addEventListener(e,t,i){super.addEventListener(e,t,i)}}customElements.define("pnx-photo-viewer",EM),document.adoptedStyleSheets.push(Rx);class bM extends le{static properties={_lastWantedZoom:{state:!0}};createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Ur(this).then(()=>this._parent?.oncePSVReady?.().then(()=>{this._lastWantedZoom=this._parent?.psv?.getZoomLevel()||30}))}_onClick(e,t){if(this._parent.map&&this._parent.isMapWide())t?this._parent.map.zoomIn({},{originalEvent:e}):this._parent.map.zoomOut({},{originalEvent:e});else{this._parent.lastPsvAnim&&this._parent.lastPsvAnim.cancel();const e=t?Math.min(100,this._lastWantedZoom+20):Math.max(0,this._lastWantedZoom-20);this._parent.lastPsvAnim=this._parent.psv.animate({speed:Kk,zoom:e}),this._lastWantedZoom=e}}render(){return V`
2448
+ `:H}}customElements.define("pnx-widget-player",qw);const Hw=15,Ww=["!",["has","uncrowded"]],Kw=["==",["get","type"],"equirectangular"];function Xw(e){return{PICTURES:{paint:{"circle-radius":["interpolate",["linear"],["zoom"],Hw,0,15.5,e?1:["case",Ww,0,1],16.5,e?2:["case",Ww,0,2],17,e?4:["case",Ww,1,4],18,e?5:["case",Ww,3,5],20,e?7:["case",Ww,5,7],22,e?7:["case",Ww,7,7]],"circle-opacity":["interpolate",["linear"],["zoom"],Hw,0,15.5,e?1:["case",Ww,0,1],16.5,e?1:["case",Ww,0,1],17,1],"circle-stroke-opacity":["case",["all",Ww,Kw],.2,Kw,.4,0],"circle-stroke-width":["interpolate",["linear"],["zoom"],17.5,0,18.5,e?["case",Kw,10,2]:["case",["all",Ww,Kw],0,Kw,10,Ww,0,2],19.5,e?["case",Kw,10,2]:["case",["all",Ww,Kw],10,Kw,10,Ww,0,2]]},layout:{}},SEQUENCES:{paint:{"line-width":["interpolate",["linear"],["zoom"],0,.5,10,1.5,14.5,1.5,15.5,e?2:["case",Ww,.5,2],22,e?4:["case",Ww,1,4]]},layout:{"line-cap":"square"}},SEQUENCES_PLUS:{paint:{"line-width":["interpolate",["linear"],["zoom"],0,15,16,30],"line-opacity":0,"line-color":"#ff0000"},layout:{"line-cap":"square"}},GRID:{layout:{"circle-sort-key":["get","coef"]},paint:{"circle-color":["interpolate",["linear"],["get","coef"],0,"#fff",.1,qr.PALETTE_1,.25,qr.PALETTE_1,.5,qr.PALETTE_2,.75,qr.PALETTE_3,1,qr.PALETTE_4],"circle-opacity":["interpolate",["linear"],["zoom"],4,.5,5,1,6.75,1,7,0],"circle-radius":["interpolate",["linear"],["zoom"],1,["match",["get","coef"],0,0,1],5,["match",["get","coef"],0,0,2.5],7,["match",["get","coef"],0,0,7]]}}}}Xw(!1),Xw(!0);const Qw=864e5,Zw=e=>new Date(e).toISOString().split("T")[0],Yw=Date.now();Zw(Yw-30*Qw),Zw(Yw-365*Qw),Zw(Yw-730*Qw);Wr[0].color,Wr[1].color,Wr[2].color,Wr[3].color,Wr[4].color,Zr[0].color,Zr[1].color,Zr[2].color,Zr[3].color,Zr[4].color;const Jw={minDate:"date_from",maxDate:"date_to",pic_type:"pic_type",camera:"camera",theme:"theme",qualityscore:"pic_score",gps:"gps"},$w=Object.fromEntries(Object.entries(Jw).map(e=>[e[1],e[0]])),eM=["none","null","false",!1],tM=["antialias","bearing","bearingSnap","bounds","boxZoom","clickTolerance","collectResourceTiming","cooperativeGestures","crossSourceCollisions","doubleClickZoom","dragPan","dragRotate","fadeDuration","failIfMajorPerformanceCaveat","fitBoundsOptions","hash","interactive","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"];class iM{constructor(e={},t={},i={}){"false"===e["url-parameters"]&&(t={});let n={};"object"==typeof e?.["psv-options"]&&(n=e["psv-options"]);let a={};"object"==typeof e?.["map-options"]&&(a=e["map-options"]);let r={};"object"==typeof i?.map&&(r=i.map);let s=t.map&&"none"!==t.map?nM(t.map):null,o=!eM.includes(t.map)&&!eM.includes(e["map-options"]),l=t.focus||e.focus,c=t.pic||e.picture,d=t.seq||e.sequence,u=t.users||e["endpoint-to-use"]||r.endpoint,h=t.speed||n?.transitionDuration,p=t.nav||n?.picturesNavigation,A=t.theme||a.theme||r?.theme,m=t.background||a.background||r?.background,g=s?.center||!c&&(a.center||r?.center)||[0,0],f=s?.zoom||a.zoom||r?.zoom,_=s?.pitch||a.pitch,v=s?.bearing||a.bearing,E=t.level||a.indoor?.level,b=e.geocoder,y=e.widgets,k=e["fetch-options"],x=e.style,w=e.lang,M=e.endpoint,S=a.raster,C=a.basemaps,T=a.indoor,D=a.attributionControl,P=a.preview,I=(L=a,Object.fromEntries(Object.entries(L).filter(([e])=>tM.includes(e))));var L;let z=e["keyboard-shortcuts"],R=e["skip-tags-menu-opening"],F="false"===i?.disableAnnotations||n?.displayAnnotations||!1,U=t.xyz,N=t.date_from,B=t.date_to,O=t.pic_type,j=t.camera,G=t.pic_score,V=t.gps,q=t.overlay,H=t.xywh,W=t.annot;!o||c||d?["map","pic"].includes(l)?"map"!==l||o||(console.warn("Parameter focus can't be 'map' as map is disabled"),l="pic"):(console.warn("Invalid value for parameter focus:",l),l=!o||c||d?"pic":"map"):l="map","aerial"!==m||S||(console.warn("Parameter background can't be 'aerial' as no aerial imagery is available"),m="streets"),E&&!T&&console.error("Can't set indoor level if indoor= plugin is not available"),!F&&W&&(F=!0),W&&!c&&console.error("Parameter annot can only be used in combination with 'picture'"),["thumb","marker","none"].includes(P)||(P&&P.length>0&&console.warn("Parameter map-options.preview is invalid, should be 'thumb', 'marker' or 'none'"),P="thumb"),this._parentInit={map:o,fetchOptions:k,style:x,lang:w,endpoint:M},this._parentPostInit={focus:l,picture:c,sequence:d,geocoder:b,widgets:y,users:u,forceFocus:!0,keyboardShortcuts:!0,willLoadPicture:void 0!==(c||d),skipTagsMenuOpening:"true"===R},this._psvInit=Object.assign(Object.fromEntries(Object.entries(n).filter(([e])=>!["transitionDuration","picturesNavigation","displayAnnotations"].includes(e))),{displayAnnotations:F}),this._psvAny={transitionDuration:h,picturesNavigation:p},this._psvPostInit={xyz:U,xywh:H,annotation:W},this._mapInit={raster:S,indoor:T,attributionControl:D,basemaps:C,preview:P,...I},this._mapAny={theme:A,background:m,center:g,zoom:f,pitch:_,bearing:v,level:E},this._mapPostInit={date_from:N,date_to:B,pic_type:O,camera:j,pic_score:G,gps:V,overlay:q},"false"===z&&(this._psvInit.keyboard=!1,this._psvInit.keyboardActions={},this._mapInit.keyboard=!1,this._parentPostInit.keyboardShortcuts=!1)}_sanitize(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e))}getParentInit(){return this._sanitize(this._parentInit)}getParentPostInit(){return this._sanitize(this._parentPostInit)}getPSVInit(){return this._sanitize(Object.assign({},this._psvInit,this._psvAny))}getPSVPostInit(){return this._sanitize(Object.assign({},this._psvPostInit,this._psvAny))}getMapInit(){return this._sanitize(Object.assign({},this._mapInit,this._mapAny))}getMapPostInit(){return this._sanitize(Object.assign({},this._mapPostInit,this._mapAny))}static GetComponentProperties(e,t){const i={};for(let n in e.properties){e.properties[n].state||null==t[n]||(i[n]=t[n])}return i}}function nM(e,t){const i=(e||"").split("/");if(i.length>=3&&!i.some(e=>isNaN(e))){const e={center:[+i[2],+i[1]],zoom:+i[0],pitch:+(i[4]||0)};return t&&(e.bearing=t.dragRotate.isEnabled()&&t.touchZoomRotate.isEnabled()?+(i[3]||0):t.getBearing()),e}return null}function aM(e,t){t.xyz&&e.addEventListener("picture-loaded",()=>{const i=function(e){const t=(e||"").split("/");return 3!==t.length||t.some(e=>isNaN(e))?null:{x:+t[0],y:+t[1],z:+t[2]}}(t.xyz);e.setXYZ(i.x,i.y,i.z)},{once:!0}),t.xywh&&e.addEventListener("picture-loaded",()=>{const i=function(e,t){let i=(e||"").split(",");if(4!==i.length||i.some(e=>isNaN(e)))return null;{let[e,n,a,r]=i.map(e=>parseFloat(e)),s=t.panorama.basePanoData;if("function"==typeof s){const e=t?.properties?.["pers:interior_orientation"]?.sensor_array_dimensions;s=e&&2===e.length?s({width:e[0],height:e[1]}):null}if(!s?.fullWidth||!s?.fullHeight)return null;const o=s?.croppedX||0,l=s?.croppedY||0,c=o+e+a/2-s.fullWidth/2,d=-(l+n+r/2-s.fullHeight/2),u=c/s.fullWidth,h=d/s.fullHeight,p=(a/s.fullWidth+r/s.fullHeight)/2;return{yaw:2*u*Math.PI,pitch:h*Math.PI,z:100*(1-p)}}}(t.xywh,e.getPictureMetadata());e.rotate(i),e.zoom(i.z)},{once:!0}),t.annotation&&(e.getPictureMetadata()?e.focusOnAnnotation(t.annotation):e.addEventListener("picture-loaded",()=>{e.focusOnAnnotation(t.annotation)},{once:!0}));let i=t.transitionDuration||t.speed;void 0!==i&&e.setTransitionDuration(i);let n=t.picturesNavigation||t.nav;["none","pic","any","seq"].includes(n)&&e.setPicturesNavigation(n)}function rM(e,t){const i=nM(t.map,e);i&&e.jumpTo(i),e.setFilters?.(function(e){const t={};for(let i in $w)e[i]&&(t[$w[i]]=e[i]);if(t.qualityscore){let e=t.qualityscore.split("");const i={A:5,B:4,C:3,D:2,E:1};t.qualityscore=e.map(e=>i[e])}return t}(t)),e._parent?.mapStyleComposer?.layerRanges.basemaps[t.background]&&e._parent.mapStyleComposer.switchBasemap(t.background),t.overlay&&t.overlay.split(",").forEach(t=>e._parent.mapStyleComposer.switchDataOverlayVisibility("sem-"+t,!0))}function sM(e,t){let i=t.picture||t.pic,n=t.sequence||t.seq||null;if(i){const t=i.split(";");t.length>1&&console.warn("Multiple picture IDs passed in URL, only first one kept"),e.select(1===t.length?n:null,t[0],!0)}else n?e.select(n,null,!0):e.select()}const oM=["streets","aerial"],lM=["speed","nav","focus","pic","xyz","map","background","users","s","xywh","annot","seq","overlay","level"].concat(Object.values(Jw)),cM=["focus-changed","pictures-navigation-changed"],dM=["position-updated","zoom-updated","view-rotated","picture-loaded","picture-failed","transition-duration-changed","annotation-focused","annotations-unfocused"],uM=["moveend","zoomend","boxzoomend","styledata"],hM=["filters-changed","theme-changed","panoramax-changed","basemap-changed"];class pM extends EventTarget{constructor(e){super(),this._parent=e,this._delay=null}listenToChanges(){window.addEventListener("popstate",this._onURLChange.bind(this),!1),cM.forEach(e=>this._parent.addEventListener(e,this._onParentChange.bind(this))),dM.forEach(e=>this._parent.psv.addEventListener(e,this._onParentChange.bind(this))),this._parent.map&&(uM.forEach(e=>this._parent.map.on(e,this._onParentChange.bind(this))),hM.forEach(e=>this._parent.mapStyleComposer.addEventListener(e,this._onParentChange.bind(this))),this._parent.map.indoorEqual?.on("levelchange",this._onParentChange.bind(this)))}destroy(){window.removeEventListener("popstate",this._onURLChange)}nextURLParams(){let e={};"number"==typeof this._parent.psv.getTransitionDuration()&&(e.speed=this._parent.psv.getTransitionDuration()),[null,"any"].includes(this._parent.psv.getPicturesNavigation())||(e.nav=this._parent.psv.getPicturesNavigation()),this._parent.psv.getPictureId()&&(e.pic=this._parent.psv.getPictureId());const t=this._parent.psv.getPictureMetadata();t&&(e.xyz=this.currentPSVString(),t.sequence?.id&&(e.seq=t.sequence.id));const i=this._parent.psv.getSelectedAnnotations();if(i?.length>0&&(e.annot=i[0]),this._parent.map?.loaded){if(e.map=this.currentMapString(),e.focus="pic",this._parent.isMapWide()&&(e.focus="map"),this._parent.mapStyleComposer?.hasManyBasemaps?.()&&this._parent.mapStyleComposer?.basemap&&(e.background=this._parent.mapStyleComposer.basemap),this._parent.mapStyleComposer?.panoramax&&(e.users=this._parent.mapStyleComposer.panoramax),this._parent.mapStyleComposer?.panoramaxTheme&&(e.theme=this._parent.mapStyleComposer.panoramaxTheme),this._parent.mapStyleComposer.panoramaxFilters){for(let t in Jw)"theme"!==t&&this._parent.mapStyleComposer.panoramaxFilters[t]&&(e[Jw[t]]=this._parent.mapStyleComposer.panoramaxFilters[t]);if(e.pic_score)if(Array.isArray(e.pic_score)||(e.pic_score=e.pic_score.split(",")),5===e.pic_score.length)delete e.pic_score;else{const t=[null,"E","D","C","B","A"];e.pic_score=e.pic_score.map(e=>t[e]).join("")}Array.isArray(e.gps)&&5===e.gps.length&&delete e.gps}if(this._parent.map?.getSemanticOverlays){const t=this._parent.map.getSemanticOverlays().filter(e=>this._parent.mapStyleComposer.dataOverlays.has(e.source)).map(e=>e.id);t.length>0&&(e.overlay=t.join(","))}this._parent.map?.indoorEqual&&(e.level=this._parent.map.indoorEqual.level)}return e}nextURLString(){let e="";return Object.entries(this.nextURLParams()).sort((e,t)=>e[0].localeCompare(t[0])).forEach(t=>{let[i,n]=t,a=!1;const r=e.split("&").map(e=>{const t=e.split("=")[0];return t===i?(a=!0,`${t}=${n}`):e}).filter(e=>e);a||r.push(`${i}=${n}`),e=`${r.join("&")}`}),`?${e}`.replace(/^\?+/,"?")}currentURLParams(e=!1){const t=(e?window.location.hash:window.location.search).replace(/^[?#]/,"").replace(/&amp;/g,"&");let i={};if(t.split("&").map(e=>e.split("=")).filter(e=>void 0!==e[0]&&e[0].length>0&&lM.includes(e[0])).forEach(e=>{i[e[0]]=e[1]}),i.s){const e=Object.fromEntries(decodeURIComponent(i.s).split(";").map(e=>[e[0],e.substring(1)]));i={},"m"===e.f?i.focus="map":"p"===e.f?i.focus="pic":"t"===e.f&&(i.focus="meta"),""!==e.s&&(i.speed=100*parseFloat(e.s)),"a"===e.n?i.nav="any":"s"===e.n&&(i.nav="seq"),["n","p"].includes(e.n)&&(i.nav="pic"),""!==e.p&&(i.pic=e.p),""!==e.a&&(i.annot=e.a),""!==e.c&&(i.xyz=e.c),""!==e.m&&(i.map=e.m),""!==e.d&&(i.date_from=e.d),""!==e.e&&(i.date_to=e.e),"f"===e.t?i.pic_type="flat":"e"===e.t&&(i.pic_type="equirectangular"),""!==e.k&&(i.camera=e.k),"d"===e.v?i.theme="default":"a"===e.v?i.theme="age":"t"===e.v?i.theme="type":"s"===e.v?i.theme="score":"g"===e.v&&(i.theme="gps"),"s"===e.b?i.background="streets":"a"===e.b&&(i.background="aerial"),""!==e.u&&(i.users=e.u),""!==e.q&&(i.pic_score=e.q),""!==e.g&&(i.gps=e.g),""!==e.o&&(i.overlay=e.o),""!==e.l&&(i.level=e.l)}return i}currentMapString(){if(!this._parent.map?.loaded)return"";const e=this._parent.map.getCenter(),t=Math.round(100*this._parent.map.getZoom())/100,i=Math.ceil((t*Math.LN2+Math.log(512/360/.5))/Math.LN10),n=Math.pow(10,i),a=Math.round(e.lng*n)/n,r=Math.round(e.lat*n)/n,s=this._parent.map.getBearing(),o=this._parent.map.getPitch();let l=`${t}/${r}/${a}`;return(s||o)&&(l+="/"+Math.round(10*s)/10),o&&(l+=`/${Math.round(o)}`),l}currentPSVString(){const e=this._parent.psv.getXYZ();return`${e.x.toFixed(2)}/${e.y.toFixed(2)}/${Math.round(e.z||0)}`}_onURLChange(){let e=this.currentURLParams();var t,i,n;"Viewer"===this._parent.getClassName()?(sM(t=this._parent,i=e),"map"===i.focus&&t?.map?(t.setPopup(!1),t._setFocus("map",null,i.forceFocus)):"pic"===i.focus&&t?.mini?(t.setPopup(!1),t._setFocus("pic",null,i.forceFocus)):i.focus&&"meta"===i.focus&&t?.mini&&t._setFocus("pic",null,i.forceFocus),null!=i.users&&(n=i.users,["default","metacatalog","",null,void 0].includes(n)?t.mapStyleComposer.switchPanoramaxEndpoint(i.users):t.mapStyleComposer._createPanoramaxEndpointForUser(i.users))):sM(this._parent,e),aM(this._parent.psv,e),this._parent.map&&rM(this._parent.map,e)}nextShortLink(e){const t=new URL(e),i=this.nextURLParams(),n={f:(i.focus||"").substring(0,1),s:isNaN(parseInt(i.speed))?void 0:Math.floor(parseInt(i.speed)/100),n:(i.nav||"").substring(0,1),p:i.pic,c:i.xyz,m:i.map,d:i.date_from,e:i.date_to,t:(i.pic_type||"").substring(0,1),k:i.camera,v:(i.theme||"").substring(0,1),b:oM.includes(i.background)?(i.background||"").substring(0,1):i.background||"",u:i.users,q:i.pic_score,a:i.annot,g:i.gps,o:i.overlay,l:i.level},a=Object.entries(n).filter(([,e])=>null!=e&&""!=e).map(([e,t])=>`${e}${t}`).join(";");return t.search=`s=${a}`,t}getUnmanagedParameters(e){return new URLSearchParams(Array.from(e.searchParams).filter(([e])=>!lM.includes(e))).toString()}_onParentChange(){this._delay&&(clearTimeout(this._delay),this._delay=null),this._delay=setTimeout(()=>{const e=new URL(window.location.href),t=new URL(window.location.href),i=this.getUnmanagedParameters(e);if(t.search=this._parent?this.nextURLString()+(i.length>0?"&"+i:""):"",Object.keys(this.currentURLParams(!0)).length>0&&(t.hash=""),e.search===t.search)return;const n=this.currentURLParams().pic||"",a=this._parent?.psv?.getPictureId?.()||"";try{if(n!=a?window.history.pushState(window.history.state,null,t.href):window.history.replaceState(window.history.state,null,t.href),this._parent){const e=new CustomEvent("url-changed",{detail:{url:t.href}});this.dispatchEvent(e)}}catch(e){}},500)}}const AM={fas:"fa7-solid"},mM={};class gM{constructor(e=null,t=!1){this._ready=!1,this._presets=null,this._translations={},t||this._load(e)}async _load(e){e=e?.substring(0,2)||window.navigator.languages[0]?.substring(0,2);try{const[t,i,n]=await Promise.all([fetch("https://presets.panoramax.fr/translations/en.min.json"),e?fetch(`https://presets.panoramax.fr/translations/${e}.min.json`):Promise.resolve({ok:!0}),fetch("https://presets.panoramax.fr/presets.min.json")]);if(!(t&&i&&n&&t.ok&&i.ok&&n.ok))throw this._ready=-1,new Error("Presets service is not available");this._presets=await n.json(),this._translations.en=(await t.json())?.en?.presets,e&&(this._translations[e]=(await i.json())?.[e]?.presets),Object.entries(this._presets).forEach(([t,i])=>{if(this._translations[e]?.presets?.[t]?.name?i.name=this._translations[e].presets[t].name:this._translations.en?.presets?.[t]?.name&&(i.name=this._translations.en.presets[t].name),i.icon){const e=i.icon.split("-")[0],t=AM[e];i.iconify=t?i.icon.replace(e+"-",t+":"):i.icon.split("-")[0]+":"+i.icon.split("-").slice(1).join("-"),mM[i.iconify]&&(i.iconify=mM[i.iconify])}}),this._ready=!0}catch(e){console.error("Presets service throws an error:",e),this._ready=-1}}async onceReady(){return this._ready?-1===this._ready?Promise.reject():Promise.resolve():(await new Promise(e=>setTimeout(e,250)),this.onceReady())}async getPreset(e){return await this.getPresets(e).then(e=>e.shift())}async getPresets(e){return await this.onceReady().then(()=>{const t=Object.values(this._presets).filter(t=>{if(0===Object.keys(t.tags).length)return!1;for(let i in t.tags){const n=t.tags[i];if(!e.semantics||!e.semantics.find(e=>"delete"!==e.action&&e.key===i&&("*"===n||n===e.value)))return!1}return!0});return t.sort((e,t)=>{const i=Object.keys(e.tags).length,n=Object.keys(t.tags).length;if(i>n)return-1;if(i===n){const i=Object.values(e.tags).filter(e=>"*"===e).length,n=Object.values(t.tags).filter(e=>"*"===e).length;return i<n?-1:i>n?1:0}return 1}),t})}}const fM=new CSSStyleSheet;fM.replaceSync('pnx-photo-viewer {\n\tposition: relative;\n\tdisplay: block;\n}\n\n/* Maximized components */\npnx-photo-viewer .pnx-psv {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 0;\n}\n\n/* No PSV loader */\npnx-photo-viewer .psv-loader {\n\tdisplay: none;\n}\n\n/* Cornered grid layout */\npnx-photo-viewer pnx-cornered-grid::part(corner-top-left),\npnx-photo-viewer pnx-cornered-grid::part(corner-top),\npnx-photo-viewer pnx-cornered-grid::part(corner-top-right),\npnx-photo-viewer pnx-cornered-grid::part(corner-bottom-left),\npnx-photo-viewer pnx-cornered-grid::part(corner-bottom),\npnx-photo-viewer pnx-cornered-grid::part(corner-bottom-right) {\n\tgap: 10px;\n\tpadding: 10px;\n}\n\n@media screen and (max-width: 576px) {\n\tpnx-photo-viewer pnx-cornered-grid::part(corner-top-right) {\n\t\tflex-direction: column;\n\t\talign-items: flex-end;\n\t\tjustify-content: flex-start;\n\t}\n\n\tpnx-photo-viewer pnx-cornered-grid::part(corner-top-left) {\n\t\tflex-direction: column;\n\t\talign-items: flex-start;\n\t\tjustify-content: flex-start;\n\t}\n}\n\n/* Hidden widgets on sequence play */\npnx-photo-viewer.pnx-playing pnx-bottom-drawer,\npnx-photo-viewer.pnx-playing pnx-widget-legend,\npnx-photo-viewer.pnx-playing pnx-widget-zoom {\n\tdisplay: none;\n}\n\n/* Override legend positioning */\n@media screen and (min-width: 576px) {\n\tpnx-photo-viewer pnx-widget-legend:not([light="true"]) {\n\t\tposition: absolute;\n\t\ttop: 10px;\n\t\twidth: 100%;\n\t}\n}\n\n/* Hidden widgets on grid toggled */\npnx-photo-viewer .psv-virtual-tour-arrows {\n\ttransition: opacity 0.25s ease-in-out;\n\topacity: 100%;\n}\npnx-photo-viewer.pnx-grid-toggled .psv-virtual-tour-arrows {\n\topacity: 0%;\n}\npnx-photo-viewer.pnx-grid-toggled .psv-virtual-tour-arrows button {\n\tpointer-events: none;\n\tcursor: unset;\n}'),document.adoptedStyleSheets.push(fM);const _M=Math.PI/6,vM=["pnx-mini","pnx-widget-player","pnx-widget-zoom"];class EM extends Lw{static properties={"psv-options":{converter:Lw.GetJSONConverter()},widgets:{type:String},"url-parameters":{type:String},"keyboard-shortcuts":{type:String},tabindex:{type:Number},"skip-tags-menu-opening":{type:String},"share-base-url":{type:String},...Lw.properties};constructor(){super(),this["psv-options"]={},this["url-parameters"]=this.getAttribute("url-parameters")||"true",this["keyboard-shortcuts"]=this.getAttribute("keyboard-shortcuts")||"true",this["skip-tags-menu-opening"]="true"!==(this.getAttribute("skip-tags-menu-opening")||"false"),this["share-base-url"]=this.getAttribute("share-base-url")||null,this.widgets=this.getAttribute("widgets")||"true",this.grid=zr("pnx-cornered-grid"),this.psvContainer=document.createElement("div"),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.popup=zr("pnx-popup",{_parent:this,onclose:this._onPopupClose.bind(this)}),this.tabindex=0,this._sequencesMetadata={},this._openedMenus=0,this._openedMenusChanges=null,this.addEventListener("menu-opened",()=>{this._openedMenusChanges=[Date.now(),this._openedMenus],this._openedMenus++}),this.addEventListener("menu-closed",()=>{this._openedMenusChanges=[Date.now(),this._openedMenus],this._openedMenus--})}_createInitParamsHandler(){this._initParams=new iM(iM.GetComponentProperties(EM,this),Object.assign({},this.urlHandler?.currentURLParams(),this.urlHandler?.currentURLParams(!0)),{disableAnnotations:localStorage.getItem(Gr)})}_initWidgets(){"false"!==this._initParams.getParentPostInit().widgets&&(us()||(this.grid.appendChild(zr("pnx-widget-player",{slot:this.isWidthMedium()?"top-right":"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()||this.isWidthMedium()?"md":"xl"})),this.grid.appendChild(zr("pnx-annotations-switch",{slot:this.isWidthMedium()?"top-right":"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()||this.isWidthMedium()?"md":"xl"}))),us()?(this.legend=zr("pnx-widget-legend",{slot:"bottom-right",light:!0,_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(this.legend)):this.isWidthSmall()?(this.legend=zr("pnx-picture-legend",{_parent:this}),this.bottomDrawer=zr("pnx-bottom-drawer",{slot:"bottom",_parent:this,class:this._initParams.getParentPostInit().willLoadPicture?void 0:"pnx-hidden"}),this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer),this.addEventListener("select",e=>{Yr(e.detail.picId)?this.bottomDrawer.classList.add("pnx-hidden"):this.bottomDrawer.classList.remove("pnx-hidden")})):(this.legend=zr("pnx-widget-legend",{slot:this.isWidthSmall()?void 0:"top-left",_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(zr("pnx-widget-zoom",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.grid.appendChild(this.legend)))}connectedCallback(){super.connectedCallback(),this.presetsManager=new gM(this.lang),"false"!==this["url-parameters"]&&(this.urlHandler=new pM(this),this.onceReady().then(()=>{this.urlHandler.listenToChanges(),this.urlHandler._onParentChange()})),this.onceAPIReady().then(this._postAPIInit.bind(this)),this._moveChildToGrid(),window.addEventListener("DOMContentLoaded",()=>{this._moveChildToGrid()},{once:!0})}disconnectedCallback(){super.disconnectedCallback(),this.urlHandler?.destroy(),this.psv?.destroy(),document.body.removeEventListener("click",this._toggleKeyboardBasedOnFocus),window.removeEventListener("keypress",this._toggleKeyboardBasedOnFocus)}getClassName(){return"PhotoViewer"}async onceReady(){return await this.oncePSVReady().then(()=>this._initParams.getParentPostInit().willLoadPicture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve())}render(){return[this.loader,this.grid,this.popup]}getSubComponentsNames(){return super.getSubComponentsNames().concat(["psv","grid","popup","urlHandler"])}oncePSVReady(){let e;return new Promise(t=>{e=setInterval(()=>{this.psv&&"object"==typeof this.psv&&(this.psv.container?(clearInterval(e),t()):this.psv.addEventListener&&this.psv.addEventListener("ready",()=>{clearInterval(e),t()},{once:!0}))},250)})}onceFirstPicLoaded(){return this.oncePSVReady().then(()=>this.psv.getPictureMetadata()?Promise.resolve():new Promise(e=>{const t=()=>{this.psv.removeEventListener("picture-failed",i),e()},i=()=>{this.psv.removeEventListener("picture-loaded",t),e()};this.psv.addEventListener("picture-loaded",t,{once:!0}),this.psv.addEventListener("picture-failed",i,{once:!0})}))}_postAPIInit(){this.loader.setAttribute("value",30),this._createInitParamsHandler();const e=this._initParams.getParentPostInit();if(this._initPSV(),this._initWidgets(),sM(this,e),e.keyboardShortcuts&&this._handleKeyboardManagement(),e.willLoadPicture)if(this.psv.getPictureMetadata())this.loader.dismiss();else{const e=()=>{this.loader.dismiss(),this.psv.removeEventListener("picture-failed",t)},t=()=>{this.loader.dismiss(!0,this._t.pnx.error_pic),this.psv.removeEventListener("picture-loaded",e)};this.psv.addEventListener("picture-loaded",e,{once:!0}),this.psv.addEventListener("picture-failed",t,{once:!0})}else this.loader.dismiss()}_initPSV(){try{this.psv=new ix(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...JE.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),aM(this.psv,this._initParams.getPSVPostInit())}),this.psv.addEventListener("sequence-playing",()=>this.classList.add("pnx-playing")),this.psv.addEventListener("sequence-stopped",()=>this.classList.remove("pnx-playing")),this.psv.addEventListener("picture-failed",()=>this.select(null,null)),this.psv.addEventListener("dblclick",()=>clearTimeout(this._gridFocus)),this.psv.addEventListener("click",e=>{clearTimeout(this._gridFocus),"CANVAS"===e.data.target.tagName&&(this._hasMenuOpened()||this.isMapWide&&(!this.isMapWide||this.isMapWide())||(this._gridFocus=setTimeout(()=>{this.grid.toggleAway()?this.classList.add("pnx-grid-toggled"):this.classList.remove("pnx-grid-toggled")},250)))}),this.psvContainer.addEventListener("mousemove",()=>{this.grid._hidden&&(clearTimeout(this._gridFocus),this.grid.toggleAway(!0),this.classList.remove("pnx-grid-toggled"))})}catch(e){let t=tv.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(e,t)}}_hasMenuOpened(){return this._openedMenus>0||this._openedMenusChanges&&Date.now()-this._openedMenusChanges[0]<=250&&this._openedMenusChanges[1]>=0}_enableKeyboard(){this.psv.startKeyboardControl()}_disableKeyboard(){this.psv.stopKeyboardControl()}_toggleKeyboardBasedOnFocus(e){const t=e?.target||document.activeElement;if(this.contains(t)){for(let e of this.grid.childNodes)if("bg"!==e.getAttribute("slot")&&!vM.includes(e.tagName.toLowerCase())&&e.contains(t))return void this._disableKeyboard();if(null!==this.popup.getAttribute("visible"))return void this._disableKeyboard();this._enableKeyboard()}else this._disableKeyboard()}_handleKeyboardManagement(){window.addEventListener("click",e=>this._toggleKeyboardBasedOnFocus(e)),window.addEventListener("keypress",this._toggleKeyboardBasedOnFocus.bind(this)),this.popup.addEventListener("open",this._disableKeyboard.bind(this)),this.popup.addEventListener("close",this._enableKeyboard.bind(this)),this.psv.addEventListener("click",this._enableKeyboard.bind(this));for(let e of this.grid.childNodes)"bg"===e.getAttribute("slot")||vM.includes(e.tagName.toLowerCase())||(e.addEventListener("focusin",this._disableKeyboard.bind(this)),e.addEventListener("focusout",()=>{null===this.popup.getAttribute("visible")&&this._enableKeyboard()}))}_psvShouldGoFast(){return this.psv._sequencePlaying&&this.psv.getTransitionDuration()<1e3}_moveChildToGrid(){Array.from(this.querySelectorAll("[slot]")).forEach(e=>{e.tagName?.toLowerCase().startsWith("pnx-")&&(e._parent=this,e._t=this._t),"editors"===e.getAttribute("slot")?this.onceReady().then(()=>this.legend?.appendChild(e)):this.grid.appendChild(e)})}setPopup(e,t=null){e?this.popup.setAttribute("visible",""):this.popup.removeAttribute("visible"),this.popup.innerHTML="","string"==typeof t?this.popup.innerHTML=t:Array.isArray(t)&&t.forEach(e=>this.popup.appendChild(e))}_onPopupClose(){this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:this.map&&this.isMapWide()?"map":"pic"}}))}_showQualityScoreDoc(){this.setPopup(!0,[zr("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[zr("pnx-report-form",{_parent:this})])}_showShareOptions(){this.setPopup(!0,[zr("pnx-share-menu",{_parent:this,"base-url":this["share-base-url"]})])}_showSemanticsDoc(){this.setPopup(!0,[zr("pnx-semantics-doc",{_t:this._t})])}_showSemanticsDownload(){this.setPopup(!0,[zr("pnx-semantics-download",{_t:this._t})])}moveCenter(){this.psv.getPictureMetadata()&&this._psvAnimate({speed:Kk,yaw:0,pitch:0,zoom:30})}moveLeft(){this._moveToDirection("left")}moveRight(){this._moveToDirection("right")}moveUp(){this._moveToDirection("up")}moveDown(){this._moveToDirection("down")}_moveToDirection(e){let t=this.psv.getPosition();switch(e){case"up":t.pitch+=_M;break;case"left":t.yaw-=_M;break;case"down":t.pitch-=_M;break;case"right":t.yaw+=_M}this._psvAnimate({speed:Kk,...t})}_psvAnimate(e){this._lastPsvAnim&&this._lastPsvAnim.cancel(),this._lastPsvAnim=this.psv.animate(e)}addEventListener(e,t,i){super.addEventListener(e,t,i)}}customElements.define("pnx-photo-viewer",EM),document.adoptedStyleSheets.push(Rx);class bM extends le{static properties={_lastWantedZoom:{state:!0}};createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),Ur(this).then(()=>this._parent?.oncePSVReady?.().then(()=>{this._lastWantedZoom=this._parent?.psv?.getZoomLevel()||30}))}_onClick(e,t){if(this._parent.map&&this._parent.isMapWide())t?this._parent.map.zoomIn({},{originalEvent:e}):this._parent.map.zoomOut({},{originalEvent:e});else{this._parent.lastPsvAnim&&this._parent.lastPsvAnim.cancel();const e=t?Math.min(100,this._lastWantedZoom+20):Math.max(0,this._lastWantedZoom-20);this._parent.lastPsvAnim=this._parent.psv.animate({speed:Kk,zoom:e}),this._lastWantedZoom=e}}render(){return V`
2449
2449
  <pnx-button-group
2450
2450
  id="pnx-widget-zoom"
2451
2451
  dir="column"