@panoramax/web-viewer 5.3.0-develop-e278677b → 5.3.0-develop-9164b4a5

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.
@@ -1154,7 +1154,7 @@ const de=1;class ue{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,i)
1154
1154
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
1155
1155
  * Copyright 2024 Fonticons, Inc.
1156
1156
  */
1157
- const dl={prefix:"far",iconName:"lightbulb",icon:[384,512,[128161],"f0eb","M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7c0 0 0 0 0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5L109 384c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8c0 0 0 0 0 0s0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4c0 0 0 0 0 0s0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5l-48.6 0c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80l0-16 160 0 0 16c0 44.2-35.8 80-80 80z"]},ul={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"]};var hl="data:image/png;base64,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",pl="data:image/png;base64,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";const Al=125,ml=50,gl=-45,fl=1e-4;class _l{constructor(e,t=!0){this.psv=e,this.isDesktop=t,this.isDesktop&&(this._cursor=document.createElement("img"),this._cursor.src=hl,this.psv.container.appendChild(this._cursor),this._cursor.style.width="125px",this._cursor.style.height="125px",this._cursor.style.position="absolute",this._cursor.style.zIndex=10,this._cursor.style.pointerEvents="none",this._cursor.style.display="none",this._hideCursor=!1),this._couldGoSomewhere=!1,this._mapPreviewPic=null,this.psv.container.addEventListener("mousemove",this._onPointerMove.bind(this)),this.psv.container.addEventListener("mouseleave",this._onPointerLeave.bind(this)),this.psv._myMarkers.addEventListener("enter-marker",this._onHoverOtherStuff.bind(this)),this.psv._myMarkers.addEventListener("leave-marker",this._onLeaveOtherStuff.bind(this)),this.psv._myVTour.addEventListener("enter-arrow",this._onHoverOtherStuff.bind(this)),this.psv._myVTour.addEventListener("leave-arrow",this._onLeaveOtherStuff.bind(this)),this.psv.addEventListener("sequence-playing",this._onHoverOtherStuff.bind(this)),this.psv.addEventListener("sequence-stopped",this._onLeaveOtherStuff.bind(this)),this.psv.addEventListener("sequence-playing",this._onHoverOtherStuff.bind(this)),this.psv.addEventListener("pictures-navigation-changed",this._onPSVPicNavChanged.bind(this)),this.psv.addEventListener("click",this._onClick.bind(this))}async _onClick(e){if(this.psv._sequencePlaying||"pic"===this.psv.getPicturesNavigation()||this.psv._myVTour.state.loadingNode||this.psv.getSelectedAnnotations().length>0||this.psv._parent.map&&this.psv._parent.isMapWide?.())return;if(e.stopPropagation(),this._mapPreviewPic)return this.psv._keepSameAngle=!0,this.psv._parent.select(this._mapPreviewPic.collection,this._mapPreviewPic.id),void(this._mapPreviewPic=null);const t=this.psv.getPictureMetadata();if(!t)return;let i=Math.min(this._pitchDegToProjectedDistance(_o(e.data.pitch),vl(t)),ml);if(i>0){this._couldGoSomewhere=!0;const n=(_o(e.data.yaw)+this.psv.getPictureOriginalHeading())%360,a=El(t.gps,i,n);let r;this.psv._parent.map&&(r=this._getMapNearbyPictures(a)),r&&0!==r?.length||(r=(await this.psv._parent.api.getPicturesAroundCoordinates(a[1],a[0],fl,50))?.features);const s=this._bestPicAround(t,a,n,r);s?(this.psv._keepSameAngle=!0,this.psv._parent.select(s.collection,s.id)):this.isDesktop&&(this._cursor.src=pl,setTimeout(()=>this._cursor.src=hl,1500))}else this._couldGoSomewhere=!1}_onPointerMove(e){this._couldGoSomewhere=!1;const t=this.psv.getPositionFromEvent(e);if(!t||"pic"===this.psv.getPicturesNavigation()||this.psv.getSelectedAnnotations().length>0)return;const i=this.psv._parent?.map,n=this.psv.getPictureMetadata();if(!n)return;let a=Math.min(this._pitchDegToProjectedDistance(_o(t.pitch),vl(n)),ml);if(!this._hideCursor&&a>0){if(this._couldGoSomewhere=!0,this.isDesktop){const r=function(e){const t=((e=Math.max(Math.min(e,0),gl))-gl)/45,i=.2;return Math.max(1-Math.exp(-Math.pow(t-1,2)/(2*i*i)),.4)}
1157
+ const dl={prefix:"far",iconName:"lightbulb",icon:[384,512,[128161],"f0eb","M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7c0 0 0 0 0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5L109 384c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8c0 0 0 0 0 0s0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4c0 0 0 0 0 0s0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5l-48.6 0c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80l0-16 160 0 0 16c0 44.2-35.8 80-80 80z"]},ul={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"]};var hl="data:image/png;base64,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",pl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAB2HAAAdhwGP5fFlAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAHZ9JREFUeJztnX+UVNV9wD97ebPDuOH3Shc3hGz4ISH8CG4oSjlIVZoQjXKsjVhPitocT2Nje7SJSRSNErCa39bEmhQNqYeT1FprbJQmBIOUEHFLECQUQdxSsrIC8mszzj7mcekfdx4usLvzfTNv5v2Y9zlnzq7Lffdd99zP3t/fW3fy5EkSKkIGGFz4DAEaCj8bWPhkAAuoL6QfAKQK3+eBE4XvjwMO0A3kenzNAkeBY4Wv3RX9v6lR6hJByuYc4FygscfXYbxb8avFceAwcAA4WPgcAN6pcjliRSKIN+qA4UBzj8+QQEtUnCzwFtBR+HTybuuUUIREkOIMA1oKn2be7QZFlTzwO6C98DkSbHHCTSLI2dQB7wXGY6QYGmxxKs4RjCg7MS1MUiF6kAhiqAPOAyYA52MG1LVIDiPLduD/SGSpeUEGAZMLn8EBlyVsHAO2FT5dAZclMGpRkDpgLDAF04WqC7Y4oeckplXZCrxBjbUqtSRICvgg8BHMwDvBO0cxomwB7IDLUhVqQZD3ANOBaUA64LJAVxf6yCHo6oJcDp09Zn6ed6A7Z74fmIGUBYBqGAyZDAwahBo6HAYNCqjgp9GNkWQzZho5tsRZkAymtbgAs2JdHbJZdPvr6L3tnOh4E/bvQ3d2ovd1wNFDoHV5+SsFQ4ajRjWjmpqgqZkBo5pQo1tQLeOgoarzCyeA3wIbiKkocRQkg2kxWqn0anY2i96xjfz2LeidO9Htu6Gzo6KvLEpTM6plLGrCBFKTpqMmTqqGNHngVWAjMVu5j5MgAzCtxYVUSoxcDr25jfyml9DbtqLbXy+/Rag0SqFaxqEmTyfVOgM1fYbpslUGG3gJ0/WKxWp9XAQZC8ylAot6umMv+lfryL+8Ab1tKzgRH5taadS06aRmzMSaPReamivxlsPAesziY6SJuiDDgUuB9/ma68H9OOvWkl+3Br19S/hbiTJQY1pQcy8ldcl8VPNov7P/X2ANEd7OElVBFGYAfhF+DcBtG2fdC+RXPYPeFm8pekUp0w27fIFpWdK+Tfg5QBtmfBK5blcUBRkJ/AnwB35kpvfsIf/sUzgvrIKuY35kGX0GDcWaN5/UJ65GjR7jV64HgJ9jdhNHhigJojAtxkx8WP3W27Zg/+iH6LYNtddaSFEKNf0PSV91DWrWHD9y1JiW5KXC96EnKoIMBj6O2W5eBhpn3RryK59A797hR7lqBjV+IqnrbsKaM9eP7DqB5zGD+VATBUEmA5dQ5jkMvakNe/nD6F2JGOWgWsaR+tRfYs25tNysjgMvYBYaQ0uYBbGAy4APlZNJIkZlUOdPIf3pW1DTW8vN6lWMKE75pfKfsAoyGLiSMgbiumMv+R88irN2tX+lSjgLNXM26VtuK3eK+C3gWcwW+1ARRkHejxlvlLbcm8thP7Ec5+kno7+oFxWsNNY115G+/sZyVulzwE8xB7VCQ9gEmYLpVqlSHtZtG8g99CB07vO3VAkymprJ3PZFVOvMUnM4ieluveJfocojLILUAXMwi3/e6erCXv4wznPP+FqohNKw5s4j/dnPw9CSd/68DPyXj0UqmTAIYmG6VONLeVhvXE/uq0vNVvKE8DCskcwdi1EzZpWaw2vAfxLw4D1oQVLAAkrZS2Xb2I89gvPMvyQLfWFFKaz5V5K+5TZIlzQ2+R3w75gp4UAIUpCBwNXAKK8P6vbd2EvvRO9p979UCb6jWsaRXrwMNaallMffBJ4moCO+QQmSAa7B7KvyhLN2NfbXl757PDUhGgzMkL5jMdaceaU8/Rbwb5iZrqoShCAZ4FpghKentMZ+/FGcH6+oRJkSqoR1+QLSt94BludN2AeBJ6myJNUWZCDwZ3htObq6yH35DvTWTRUpVEJ1Ua0XkrlnGTR4DkDxFvCvVLG7VU1BUsCf4nXDYWcHubtuT8YbMUONaSGz7CFoavL66D6MJHn/S3U2JS3IlYCFGZB7kkPv2E721r9M5Ighek872VtvQu/Y7vXRUZiZz6pEqqmWIB/FBIQWozdtJHf7Z+Bwsr4RWw4fJPe5z6A3t3l98n3AfKoQFbMaglwMTPTygN64ntzdn4PjyUxV7OnOkfvS7ej1a70+OQH4I/8LdDqVFmQaHrePOGtXk/vyF+B4stGwZnBsckvvwlm9yuuTMzH79ypGJQV5P+agkxhn7Wrs++8Gpyrjr4Qw4eSxv3YfzjrPxxMuw++oNj2olCDuEVlx/nrDOuwH7k22jdQyWmPffy96wzovTyngCip0fUUlBLEwh53Em2/0pjZyS+9KWo4EcPLkltxlgmnIyQBXUYGZrUoIcikeTgLqHdsLA/JkzJFQwLHJ3fcl9E5Px6RHAiXtY+kPvwWZggmyIKOzg9zdtyezVQln050jd9ftsN9TGK1JhY9v+CnIUEx8XBnZLLm7P5+scyT0zeGD5L70t5D1dAPcZfh4QZJfgijgcqRR1R2H3N2fM9HRExL6Qe9pJ7fkLi+TNyngY/hUt/0S5CJAvKnG/v7DycbDBDF600vYy7/r5ZHzMNdglI0fgjRhFmxEOGtX4zz9Ix9em1BLOE+t9LpGMhMf4jeXK4jCBJIW7YnR7bvNYacwck6DNfCOe2fXNTYNDLooQWJ99MoxnNNQvSvrpGiN/Y37vWxcdetmWXW8XEFmAOeKUtq2WSUP40nAcxqsgfc+OF9NnTYlfc/SKweMPK8mJalfuGhi/adunJ9e8rUrGDykrFCvFSGbxV56F9jiJYGRmKv4SqYcQYbhoZ9nP/pQOAflrhznNb8XQA0fMSK1eEnNSVK/cNFE64oFc4G6AU2jRqXv+fvLwyiJbn8d+7FHvDwyizJuHitHkMsQrlzqtg04zz1dxqsqxBlyuNSaJD3lcH8WZkmcZ/4FvXG9NLmFWbwuiVIFGYd0g9iRI+QeWBK+PVZ9yOFSK5L0JodLaCXRmtzX74cu8c1u7wc+UMqrShFkACYKogj7kW+FL6hbETlc4i5Jf3K4hFaSwwex//E7Xp74Y0zd9UQpglyAcKVSt20wV5uFCaEcLnGVRCKHS1glcX7+LHrTRmnyocCHvb7DqyAZpAPzXI7cQ9/wWp7K4lEOl7hJ4kUOl7BKkvvWA5ATz4xehImsI8arIDMQbiexn1gOnXs9Zl9BSpTDJS6SlCKHSygl6ezA/tEPpanTeDzh6kWQcxA2Ubpjr7mfIyyUKYdL1CUpRw6XMEriPLkS3SH+Y3wBHs4qeRFkJsJ7Au1HHwrP5TU+yeESVUn8kMMldJI4Nnn52kgK0xMSIRXkPcBUSUK9qQ39a09HJiuHz3K4RE0SP+VwCZskzro16C3iDbAfxvSIiiIV5AKEi4L2448Ks6wwFZLDJSqSVEIOl7BJYj/6sDRpCpguSSgRJIUwtIpevxb92quSpJWlwnK4hF2SSsrhEiZJ9K7tXlbYP4xgyCARZCrCqTH7ieWSZJWlSnK4hFWSasjhEiZJ7BXflyYdiOB4eDFB6hA2Rc661ejdOyVJK0eV5XAJmyTVlMMlLJLoXTu8RGlspcjvqJggY4EhkjflVz4hLFOFCEgOl7BIEoQcLmGRxF65Qpp0CEX2aBUTRDZztbkNvdtTiBZ/CVgOl6AlCVIOlzBIondtR2/ZLE3e7/i6P0EGYXZBFsV+KsAjtCGRwyUoScIgh0sYJLGfWilN2oJZxuiV/gSZjOCXrffs8RoFzz9CJodLtSUJkxwuQUuiN65H790jSaroZ7DelyB1/T3Uk/yzTwVz1iOkcrhUS5IwyuESqCRak5cf0vMsSDOSYMC2jfPCz6SF8I+Qy+FSaUnCLIdLkJI4q1dJz68PwYQKOou+BDlfVIB1L3g51eUb6c9+/qKwy+HiSuJ3tBRr4Q0fDLscLgMaR55rnf+hks+Fl8zRIzjyKd8Jvf2wN0HqgPGSHPOrnpG+3FeOP/bIy/rg2/sDeXkJqOEjRvgZLaV+4aKJ9VdcdTERkAPnhHN8xfeed9o2HAji9R7q6Pn08vvsTZDRQEPR7PZ3ordtkb7cV06+vd+2v3LnT6MmiR/drSh0q07hyrF2dUdQRdBbN0sDYL+HXi6Z7U2QcZLcnLWrAw3EUIuSJHKUgNY4638pTX1W3e9NkBZJTvlfer4qy3dqSZJEjtLJr/2FNOlZdf9MQYYhCLKlO/aidwW4ct6DWpAkkaM89I7fQqeomzWcM7ZWnSmIqPXQvwrJgagCcZYkkcMHtMbZIO5mneZASYLkXw5o5bwf4ihJIod/5NvE4YH6FETRyyj+LHI59Lat4oJVkzhJksjhL3rLJrBF4YFG08OLnoKMRHDCSm9uC09Ahl6IgySJHBXguI1+RbTDNwU0uv/RU5DirQeQ3/SSt4IFwMm399v20sXP6UNvvx10WaS4kqRuumVapOT4waPPhV6OAnl5FMZTLvQUpNe9KGcS1u7VmZw82Nlt33fnTyLXklwybxZRkWPF9553XvzFm0EXRYp+VXxG5JQLPQUZVfSxbDacd3z0QRS7W5EgKt2qM9C7d0I2K0l6liDnYA5I9f+CHdvCd41BERJJfCaicgCgNXrndknKwRSiL7qCiK5Ry28PZu9VuSSS+ESU5SjgYf/gueBREL0z4KglZZBIUiYxkAMg//ouadLTBGnsJ+EpdLs481CSSFIiMZEDQO8Wj6EbwYsg2Szsf6u0UoWIRBKPxEgOAPZ3SAfqpwlS9MYo3b4zcgP0vkgkERI3OcAM1GV3rQ8FI0gGwaU4wggRkSGRpAhxlKOA3vuGJNlAIK2QBGcATnREZj1ITCJJH8RYDoATsq3vAEMUwtCi7I/l7yqR5ExiLgcA+8T/a0PELYiWWxc5EkkK1IIceKrLgxWSAA2A3rev5AJFgZqXpEbkANDyFqRBIbr7Q8PRQ2UUKRrUrCQ1JAcARw9LUw5USO5q6zoWmyneYtScJLUmB4CTh2yXJGVG1ILoI0fLLlOUqBlJalGOAvqIKCKoTBC6RLbFithLUsNyANI6nVFI7j7PHiu3OJEktpLUuhwg7WJZCsn1zvbxcosTWWInSSKHQRb13VIIbrrVTr7s8kSZ2EiSyHEKYZ1WChhQNFneKbc8kSfykiRynI6sTg+QCVLjLYhLFKOluBx/+sdrEjl6IAtdZRXtXiWczsmDnd0nXvnNa0GXwyvWZR/7iN+X+NQCCjhRNJUV6LXXoaJ+4aKJqUvmXRR0Obzi9yU+kcdKS1I5MkFSxSe6aoFIRTzshaDvcQ8Vsjp9QgFF95CopAWJvBwuiSQGYZ3WCig+nE8XPXAYa+Iih0siCZCWd7GKT1ENEh0ZiSVxk8Ol5iVpKBonEQqCFI8JP0h26DBuxFUOl1qWRA0V1el3FNBdNLPB1b/iOmjiLodLzUoySFSnc8IWZFBNTfXWihwuNSeJlYIG0UHablELAtRMN6vW5HCpKUmGFA0D55JTgCjMnBpV/HaEqFOrcrjUiiRqlOiuKCiMQUSHPVST6H6dyFLrcrjUgiSqqUma9KgCZOdpR8a3BUnkOJ3YSyJvQY6JBRnQHM8WJJGjd+IsyQCPLUg3UHTvrxotukI9UiRy9E9cJVFjxkmSdQO2u929aIgH1TKucL4qHiRyyIidJEqhxoj+2B+Bd4/bHiyavKEhNuOQRA5vxEkS1dQMmYwk6QF4V5ADosxbxpZYrPCQyFEasZGkRdS9gkKjIW9BgNSEiSWUKDwkcpRHHCRJTRgvTXpaCyIKRKAmTSuhSOEgkcMfoi6JmjRdmvS0FiQHFI2kpSZOiuRAPZHDXyIriZUydbg4xyjsUexZ24tfIdXQYGazIkQiR2WIoiRq7HjpAP1U9BfV2w/7fclkcRMVONbCGz4YGTmcE87xJ1f+LEohhVxJohItRU0RDxFONRbeWhAg1TrDQ5GCo37hoon1V1x1MVGRY8X3nneefeoN+747fxKl4HRRipaSap0pTdprC3IAwfFbNX2GNGRKYESqW3VGxMMoRnCMRHerPo2aKur9HKfHrG5PQTTwu6KPZzKoyVO9Fq9qRFkOl0QS/1HTWiEtGn/sBU6eeu6MfxTdsJ66cJa8ZFUkDnK4JJL4S2qGuM6e5kBJgliz54ZuujdOcrgkkviEUliz50hT/+9pj57xj0cQbFykqRk1Pjyr6nGUwyWRpHzUpCkwUrTF/RBnHP/orRmQdbMunidJVnHiLIdLIkl5pOaI6+pZdb83QXZKcrIumRd4N6sW5HBJJCm1EAprziXS1GfV/d5qeAfw+6JZNY4MdNGwluRwSSQp4f1TW6GxUZK0i17WAnsT5CTCViR1+QJJMt+x5i8YEyk5fvDoc35dXhPFS3zU8BEjrBtuDmSFOXWFuI72eudLX30kWTdr9lxphDpfcV5c3aHf7Aj/bUluy/HiL0S7FKScPNjZHaUV9xOd+/blH/nGr6v+4iFDvcxeeRKkA0k4oHQaa958aQH8452s033vF1bpNzuKL2wGRYXvBIxKd+tE5759+Xu/8FP9+66qX3RpzbtcuuvjCNDZ2z/0N8reJsk59Ymrgxmsh1mSKl2YGXZJgpQDpbwMAfqs6/3V7FfpseTeZwajx6Dkq5T+EkZJqnybbFglCVQOQF10MWr0GElSDfy2z3z6efD3CNdE0p+8XpKsMoRJkoCuWg6bJEHLAZD+sz+XJn2DfmZti/WNtkreoKa1os6fIi2Q/4RBkoDvIQ+LJGGQQ50/CTVZfPbj1X7zKvLwG0i2ngCpaz8lLVBlCFKSgOVwCVqSMMgBkL7+JmnSoxTpJRUT5CTwG8mbrDlzUWMnCMtVIYKQJCRyuAQlSVjkUOMnomaJp3bbKDLOlkw/bUN4h0h60c2SZJWlmpKETA6XaksSFjkA0jf9lTRpDtheLJFEkDywRfJGNWuO2TkZNNWQJKRyuFRLkjDJoSZN8zKj+gqSE7TCzDYjuS4aSN94izDLClNJSUIuh0ulJQmTHChF+mZx3ctj6nTxbIUZZpG2ItNbsf7oUmG2FaYSkkREDpdKSRIqOQBrzqVeNs9uRnI3J3JBADYiuVMdSH/ms1AfksAOfkoSMTlc/JYkbHJQnyH96VulqY8D/y1N7EWQHMJmiaZmrKuv85B1hfFDkojK4eKXJKGTA7CuvR7kl+JsQth6gDdBwEyLFb1sByD9qRtR5432mH0FKUeSiMvhUq4kYZSDpmbSnxSvwXVjBBHjVZBuQLZtOZ0hfdudgZ86PI1SJImJHC6lShJKOZQic9ud0nCiYOqu6A/8qVd4LpTpZh0SZT69FeuSj5fwigriRZKYyeHiVZJQygFYH70SJY/0eQgzteuJUgTRwIvSxOm//hsYJjryWD0kksRUDhepJGGVgxGNpG8WD8wBfompu54otf/zBmfED+qTQUPJfPHL4epqQf+SxFwOl2KShFYOpcjcvhgGDZI+Ia+vZ76qlIcKvIBw8VC1zsRacG0Zr6oQvUlSI3K49CVJaOUArGuuQ80Ur5jnMa1HSZQjyGGkA3YgffMtwW9m7I2ektSYHC5nShJmOVTLONKLxPutAH6FcEd6b9SdPFn00GB/KOB6YKQksd7TTu6vb4Bu8TR09TinwbI+NG2Y07ZBdKFpHKlrbBqYvumvPtL9na+9xDvZ0MlBQwOZ76yQnhQEeAtYieBkbF+UKwjAHwB/jrA10uvXkVtyB2jP46WEWkYp0osfwJozV/qExshR1sKoHyPntzDbUGQvnD0H65oQrbInRAJr4Q1e5ADT/S97a41fU0svIbyhCiD96VtRrRf69OqEuKNmzCJ9g6ezRh14+KPd77v9yATTnD2P2QgmeKsic8/fh3PQnhAqVMs4Mou/4mWZwMbUxbLHDuCfIGDO964Rp25oILPs2zBCNL5PqEWGNZJZ9k1oEK93gKmDxYMeCvF79W47RaJEnEZjI5mvfB0GivfSJNQKDQ1kHvim9F4Ply3A//hZjEosb6+hjzCOvRZgwkQyX/lmeM6PJARPfYbMkq+jxnq6pGkfZSwI9kUlBDkB/Ade9txPbzUtSchvz02oAlaKzJeXmUs35byDqXMn/C5OpTZIHQN+iofNYap1Juk77wnfnq2E6qEU6TuXoGbO9vKUxsjRVZEiVSLTAv+Hl0E7YM2ZR+beryYtSS1ipUkvXoY1x3M8g58jub68RCr953or8LKXB9SsOWTuexDqk4F7zWClydxTkhy/pp/A035Qjf7Mf+FxZkHNnEVmWTK7VRM0NJB58NteoiG6vAZsqECJTqNaHf6fY7pcYtT0GWQefhxGJusksWVYI5mv/aPXATnAHmBVBUp0FtUSxAGewWNfUbWMpeEfViQr7jFEtYyj4buPoyZ4msoFs6XpJ1Rgxqo3qjlllMdI8panpxobyXzze8nerRihZswi8+1/8roICKbuPI0wPpsf+LHd3SsZ4JOAt4PqWmOvXI7zxOPJVvmoohTWJ//CBJj2Pp1/EHgSD+trfhCEIGAk+VPMWRJP6A3ryD24BLK+bbdJqAYNDaT/bnEpM1VgWo5/o8pyQHCCAKSBq4HzvD6o9+zBXvoldPvr/pcqwXfU2AmkFy/zchKwJx3Av+MxnpVfBCkIQAq4CvD+m7Nt7Ccew3nyn5MuV1hRCmvBtSbqemmLv3sxclRtzHEmQQsCMAD4GOB5OgNAt20g99WlcPigv6VKKI9hjWS+eJ+XwG5n8j/Az6jSbFVfhEEQl9nAzJKezHZhf/9hnFXPJq1JCLDmziP92c/D0KGlZvESJhpJ4IRJEIDJwDxKnH7WWzZjf+t+9O/2+FuqBBlNo8nc9sVyWg2N2b8nul25GoRNEID3AVdgZrq8Y+ewV/4Q56mVcDyQcV3tUZ/BuvZ60gsXQbrkjabulvXg77vvQRgFARgMfALwvJJ0ioP7sZd/F+eFnyXdrgqiZs4mc+vfQVNzOdnso4Jb1sshrIKAGbxfCpR1K6jesgn7sUfQ2+UngROKoyZNM9Ey5dee9cUWzEnAQAfjfRFmQVwmYUSpLycTvakNe/l30buK3vyb0A9q7ARS199Y6oJfT2zMeMPXM+R+EwVBwHS55gPvLTcjvX4t9o9WoF9LRPGCmjSF9MJFpWxL7419mNA8JcfMrRZREQTMzNaFmKngsjdZ6m1byD/zJM66NckYpS+UMkHbrr6unJmpnmjMIaeN+BS3qtJESRCXc4E/oZwBfA/03j3kn3saZ/UqOBr6P2jVYchwrHkfJXX51aVuD+mNA5iFP2+7uQMmioKAaUE+jFlcTPmSo2PjvLiW/Kpn0Fs3116rohRqaiupKxZgzZ7jZ1wAB9NqtBGRVqMnURXEZShmAP9+X3M9uB9n3Vry69agt2+JtSxqTAtq7qWk511e7lRtb7yBuWjpqN8ZV4uoC+IyBvhjYITvOXd24mz4Jfm2X6O3bI7+4mN9BjVtOqkZs0xL4f3QkoTDwFqMIJEmLoKA6XZNBy7CbKX3HzuHfmUz+U0b0a9uRrfvBiewjaYyrBSqZTxq2jRSrTNRU1vLWe0uhntN+CuUcGFmGImTIC71mPHJH1IpUVxyOfSObWZG7PVd6N2vw/6O4LpkSqGamqFlHKlx41GTp6MmTvJyj3ip5DHXg7dhJIkNcRTEJYNpUVopc5HRE9ksem87es8bnOjohP0d6M5O9L69cPRo+S2OlYIhQ1CjRqOammBUMwOamlBjPoAaM7YaMvQkjwlWvhGzlyp2xFkQl3OAC4CplLoB0k+yWfSRQ9DVBdks5LJofQLyzrt3Nw7MQMpCqQGQaYCGBhg0CDV0uPk+eHKYbtQrxFQMl1oQxGUAcD5moXF4wGWJKkeB32BajZAPvvyhlgRxqQM+gNkE2UJ1Qx9FEQ20Y85otBPBtYxyqEVBevIe4EMYWYYEXJawcQTYhol9+/uAyxIYtS5IT0ZgumCTqF1ZuoBdwE5MNJGaJxHkbOqAZmAcpgsW9/HKIUzXaReJFGeRCFKcIRhRWjDb7as3ZVwZjmPC6bQXPkkEvn5IBPFGHWY3cTMm4F0z4OkK1gA4hmkZ3ix8PUiNDbTLIRGkfDIYaRoLn5GYVmdglcvRjRlYH8BIcLDwfdXDdcaJRJDKkcaIMgRzIrIBI9PAwtcMZm2mHtMyDeDdrft5zBntk5gu0QlMRc9hRMgBWUzrcLTwifguynDy/2Dl14zI6WdFAAAAAElFTkSuQmCC";const Al=125,ml=50,gl=-45,fl=1e-4;class _l{constructor(e,t=!0){this.psv=e,this.isDesktop=t,this.isDesktop&&(this._cursor=document.createElement("img"),this._cursor.src=hl,this.psv.container.appendChild(this._cursor),this._cursor.style.width="125px",this._cursor.style.height="125px",this._cursor.style.position="absolute",this._cursor.style.zIndex=10,this._cursor.style.pointerEvents="none",this._cursor.style.display="none",this._hideCursor=!1),this._couldGoSomewhere=!1,this._mapPreviewPic=null,this.psv.container.addEventListener("mousemove",this._onPointerMove.bind(this)),this.psv.container.addEventListener("mouseleave",this._onPointerLeave.bind(this)),this.psv._myMarkers.addEventListener("enter-marker",this._onHoverOtherStuff.bind(this)),this.psv._myMarkers.addEventListener("leave-marker",this._onLeaveOtherStuff.bind(this)),this.psv._myVTour.addEventListener("enter-arrow",this._onHoverOtherStuff.bind(this)),this.psv._myVTour.addEventListener("leave-arrow",this._onLeaveOtherStuff.bind(this)),this.psv.addEventListener("sequence-playing",this._onHoverOtherStuff.bind(this)),this.psv.addEventListener("sequence-stopped",this._onLeaveOtherStuff.bind(this)),this.psv.addEventListener("sequence-playing",this._onHoverOtherStuff.bind(this)),this.psv.addEventListener("pictures-navigation-changed",this._onPSVPicNavChanged.bind(this)),this.psv.addEventListener("click",this._onClick.bind(this))}async _onClick(e){if(this.psv._sequencePlaying||"pic"===this.psv.getPicturesNavigation()||this.psv._myVTour.state.loadingNode||this.psv.getSelectedAnnotations().length>0||this.psv._parent.map&&this.psv._parent.isMapWide?.())return;if(e.stopPropagation(),this._mapPreviewPic)return this.psv._keepSameAngle=!0,this.psv._parent.select(this._mapPreviewPic.collection,this._mapPreviewPic.id),void(this._mapPreviewPic=null);const t=this.psv.getPictureMetadata();if(!t)return;let i=Math.min(this._pitchDegToProjectedDistance(_o(e.data.pitch),vl(t)),ml);if(i>0){this._couldGoSomewhere=!0;const n=(_o(e.data.yaw)+this.psv.getPictureOriginalHeading())%360,a=El(t.gps,i,n);let r;this.psv._parent.map&&(r=this._getMapNearbyPictures(a)),r&&0!==r?.length||(r=(await this.psv._parent.api.getPicturesAroundCoordinates(a[1],a[0],fl,50))?.features);const s=this._bestPicAround(t,a,n,r);s?(this.psv._keepSameAngle=!0,this.psv._parent.select(s.collection,s.id)):this.isDesktop&&(this._cursor.src=pl,setTimeout(()=>this._cursor.src=hl,1500))}else this._couldGoSomewhere=!1}_onPointerMove(e){this._couldGoSomewhere=!1;const t=this.psv.getPositionFromEvent(e);if(!t||"pic"===this.psv.getPicturesNavigation()||this.psv.getSelectedAnnotations().length>0||this.psv._parent.map&&this.psv._parent.isMapWide?.())return;const i=this.psv._parent?.map,n=this.psv.getPictureMetadata();if(!n)return;let a=Math.min(this._pitchDegToProjectedDistance(_o(t.pitch),vl(n)),ml);if(!this._hideCursor&&a>0){if(this._couldGoSomewhere=!0,this.isDesktop){const r=function(e){const t=((e=Math.max(Math.min(e,0),gl))-gl)/45,i=.2;return Math.max(1-Math.exp(-Math.pow(t-1,2)/(2*i*i)),.4)}
1158
1158
  /**
1159
1159
  * @license
1160
1160
  * Copyright 2010-2026 Three.js Authors
@@ -2077,7 +2077,7 @@ function*(e,t){if(void 0!==e){let i=0;for(const n of e)yield t(n,i++)}}(this._re
2077
2077
  ${"empty"===this._icon?Ir(Ts):q}
2078
2078
  ${"warn"===this._icon?Ir(Hr):q}
2079
2079
  </span>
2080
- </div>`}}customElements.define("pnx-search-bar",lw);class cw 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),!cw.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(!cw.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 cw.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(cw.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&&cw.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&cw.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&&cw.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(Zs(e))throw new Error("id should be a valid picture unique identifier");return!0}}var dw={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]/},uw={isSpaceSeparator:e=>"string"==typeof e&&dw.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||dw.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||dw.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 hw,pw,Aw,mw,gw,fw,_w,vw,Ew;function yw(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=yw(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=yw(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 bw,kw,xw,ww,Mw;function Sw(){for(bw="default",kw="",xw=!1,ww=1;;){Mw=Cw();const e=Dw[bw]();if(e)return e}}function Cw(){if(hw[mw])return String.fromCodePoint(hw.codePointAt(mw))}function Tw(){const e=Cw();return"\n"===e?(gw++,fw=0):e?fw+=e.length:fw++,e&&(mw+=e.length),e}const Dw={default(){switch(Mw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void Tw();case"/":return Tw(),void(bw="comment");case void 0:return Tw(),Pw("eof")}if(!uw.isSpaceSeparator(Mw))return Dw[pw]();Tw()},comment(){switch(Mw){case"*":return Tw(),void(bw="multiLineComment");case"/":return Tw(),void(bw="singleLineComment")}throw Uw(Tw())},multiLineComment(){switch(Mw){case"*":return Tw(),void(bw="multiLineCommentAsterisk");case void 0:throw Uw(Tw())}Tw()},multiLineCommentAsterisk(){switch(Mw){case"*":return void Tw();case"/":return Tw(),void(bw="default");case void 0:throw Uw(Tw())}Tw(),bw="multiLineComment"},singleLineComment(){switch(Mw){case"\n":case"\r":case"\u2028":case"\u2029":return Tw(),void(bw="default");case void 0:return Tw(),Pw("eof")}Tw()},value(){switch(Mw){case"{":case"[":return Pw("punctuator",Tw());case"n":return Tw(),Iw("ull"),Pw("null",null);case"t":return Tw(),Iw("rue"),Pw("boolean",!0);case"f":return Tw(),Iw("alse"),Pw("boolean",!1);case"-":case"+":return"-"===Tw()&&(ww=-1),void(bw="sign");case".":return kw=Tw(),void(bw="decimalPointLeading");case"0":return kw=Tw(),void(bw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return kw=Tw(),void(bw="decimalInteger");case"I":return Tw(),Iw("nfinity"),Pw("numeric",1/0);case"N":return Tw(),Iw("aN"),Pw("numeric",NaN);case'"':case"'":return xw='"'===Tw(),kw="",void(bw="string")}throw Uw(Tw())},identifierNameStartEscape(){if("u"!==Mw)throw Uw(Tw());Tw();const e=Lw();switch(e){case"$":case"_":break;default:if(!uw.isIdStartChar(e))throw Bw()}kw+=e,bw="identifierName"},identifierName(){switch(Mw){case"$":case"_":case"‌":case"‍":return void(kw+=Tw());case"\\":return Tw(),void(bw="identifierNameEscape")}if(!uw.isIdContinueChar(Mw))return Pw("identifier",kw);kw+=Tw()},identifierNameEscape(){if("u"!==Mw)throw Uw(Tw());Tw();const e=Lw();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!uw.isIdContinueChar(e))throw Bw()}kw+=e,bw="identifierName"},sign(){switch(Mw){case".":return kw=Tw(),void(bw="decimalPointLeading");case"0":return kw=Tw(),void(bw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return kw=Tw(),void(bw="decimalInteger");case"I":return Tw(),Iw("nfinity"),Pw("numeric",ww*(1/0));case"N":return Tw(),Iw("aN"),Pw("numeric",NaN)}throw Uw(Tw())},zero(){switch(Mw){case".":return kw+=Tw(),void(bw="decimalPoint");case"e":case"E":return kw+=Tw(),void(bw="decimalExponent");case"x":case"X":return kw+=Tw(),void(bw="hexadecimal")}return Pw("numeric",0*ww)},decimalInteger(){switch(Mw){case".":return kw+=Tw(),void(bw="decimalPoint");case"e":case"E":return kw+=Tw(),void(bw="decimalExponent")}if(!uw.isDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},decimalPointLeading(){if(uw.isDigit(Mw))return kw+=Tw(),void(bw="decimalFraction");throw Uw(Tw())},decimalPoint(){switch(Mw){case"e":case"E":return kw+=Tw(),void(bw="decimalExponent")}return uw.isDigit(Mw)?(kw+=Tw(),void(bw="decimalFraction")):Pw("numeric",ww*Number(kw))},decimalFraction(){switch(Mw){case"e":case"E":return kw+=Tw(),void(bw="decimalExponent")}if(!uw.isDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},decimalExponent(){switch(Mw){case"+":case"-":return kw+=Tw(),void(bw="decimalExponentSign")}if(uw.isDigit(Mw))return kw+=Tw(),void(bw="decimalExponentInteger");throw Uw(Tw())},decimalExponentSign(){if(uw.isDigit(Mw))return kw+=Tw(),void(bw="decimalExponentInteger");throw Uw(Tw())},decimalExponentInteger(){if(!uw.isDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},hexadecimal(){if(uw.isHexDigit(Mw))return kw+=Tw(),void(bw="hexadecimalInteger");throw Uw(Tw())},hexadecimalInteger(){if(!uw.isHexDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},string(){switch(Mw){case"\\":return Tw(),void(kw+=function(){switch(Cw()){case"b":return Tw(),"\b";case"f":return Tw(),"\f";case"n":return Tw(),"\n";case"r":return Tw(),"\r";case"t":return Tw(),"\t";case"v":return Tw(),"\v";case"0":if(Tw(),uw.isDigit(Cw()))throw Uw(Tw());return"\0";case"x":return Tw(),function(){let e="",t=Cw();if(!uw.isHexDigit(t))throw Uw(Tw());if(e+=Tw(),t=Cw(),!uw.isHexDigit(t))throw Uw(Tw());return e+=Tw(),String.fromCodePoint(parseInt(e,16))}();case"u":return Tw(),Lw();case"\n":case"\u2028":case"\u2029":return Tw(),"";case"\r":return Tw(),"\n"===Cw()&&Tw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Uw(Tw())}return Tw()}());case'"':return xw?(Tw(),Pw("string",kw)):void(kw+=Tw());case"'":return xw?void(kw+=Tw()):(Tw(),Pw("string",kw));case"\n":case"\r":throw Uw(Tw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Ow(e)}' in strings is not valid ECMAScript; consider escaping`)}(Mw);break;case void 0:throw Uw(Tw())}kw+=Tw()},start(){switch(Mw){case"{":case"[":return Pw("punctuator",Tw())}bw="value"},beforePropertyName(){switch(Mw){case"$":case"_":return kw=Tw(),void(bw="identifierName");case"\\":return Tw(),void(bw="identifierNameStartEscape");case"}":return Pw("punctuator",Tw());case'"':case"'":return xw='"'===Tw(),void(bw="string")}if(uw.isIdStartChar(Mw))return kw+=Tw(),void(bw="identifierName");throw Uw(Tw())},afterPropertyName(){if(":"===Mw)return Pw("punctuator",Tw());throw Uw(Tw())},beforePropertyValue(){bw="value"},afterPropertyValue(){switch(Mw){case",":case"}":return Pw("punctuator",Tw())}throw Uw(Tw())},beforeArrayValue(){if("]"===Mw)return Pw("punctuator",Tw());bw="value"},afterArrayValue(){switch(Mw){case",":case"]":return Pw("punctuator",Tw())}throw Uw(Tw())},end(){throw Uw(Tw())}};function Pw(e,t){return{type:e,value:t,line:gw,column:fw}}function Iw(e){for(const t of e){if(Cw()!==t)throw Uw(Tw());Tw()}}function Lw(){let e="",t=4;for(;t-- >0;){const t=Cw();if(!uw.isHexDigit(t))throw Uw(Tw());e+=Tw()}return String.fromCodePoint(parseInt(e,16))}const Rw={start(){if("eof"===_w.type)throw Nw();zw()},beforePropertyName(){switch(_w.type){case"identifier":case"string":return vw=_w.value,void(pw="afterPropertyName");case"punctuator":return void Fw();case"eof":throw Nw()}},afterPropertyName(){if("eof"===_w.type)throw Nw();pw="beforePropertyValue"},beforePropertyValue(){if("eof"===_w.type)throw Nw();zw()},beforeArrayValue(){if("eof"===_w.type)throw Nw();"punctuator"!==_w.type||"]"!==_w.value?zw():Fw()},afterPropertyValue(){if("eof"===_w.type)throw Nw();switch(_w.value){case",":return void(pw="beforePropertyName");case"}":Fw()}},afterArrayValue(){if("eof"===_w.type)throw Nw();switch(_w.value){case",":return void(pw="beforeArrayValue");case"]":Fw()}},end(){}};function zw(){let e;switch(_w.type){case"punctuator":switch(_w.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_w.value}if(void 0===Ew)Ew=e;else{const t=Aw[Aw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,vw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)Aw.push(e),pw=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Aw[Aw.length-1];pw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function Fw(){Aw.pop();const e=Aw[Aw.length-1];pw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Uw(e){return jw(void 0===e?`JSON5: invalid end of input at ${gw}:${fw}`:`JSON5: invalid character '${Ow(e)}' at ${gw}:${fw}`)}function Nw(){return jw(`JSON5: invalid end of input at ${gw}:${fw}`)}function Bw(){return fw-=5,jw(`JSON5: invalid identifier character at ${gw}:${fw}`)}function Ow(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 jw(e){const t=new SyntaxError(e);return t.lineNumber=gw,t.columnNumber=fw,t}const Gw={parse:function(e,t){hw=String(e),pw="start",Aw=[],mw=0,gw=1,fw=0,_w=void 0,vw=void 0,Ew=void 0;do{_w=Sw(),Rw[pw]()}while("eof"!==_w.type);return"function"==typeof t?yw({"":Ew},"",t):Ew},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(uw.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(!uw.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!uw.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var Vw=Gw;const Hw=new CSSStyleSheet;Hw.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(/fonts/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(/fonts/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(/fonts/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(/fonts/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 qw=new CSSStyleSheet;qw.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-very-pale: #e6e6e6;\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(Hw),document.adoptedStyleSheets.push(qw);class Ww extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Ww.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.3.0 (e278677)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,Ao().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Sx(this.lang),this.loader=Rr("pnx-loader",{_parent:this,"no-label":ho()}),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.`)}),ho()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||Rr("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 cw(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:Vw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:Vw.stringify(e)}}}class Kw extends le{static styles=[Ro,s`
2080
+ </div>`}}customElements.define("pnx-search-bar",lw);class cw 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),!cw.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(!cw.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 cw.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(cw.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&&cw.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&cw.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&&cw.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(Zs(e))throw new Error("id should be a valid picture unique identifier");return!0}}var dw={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]/},uw={isSpaceSeparator:e=>"string"==typeof e&&dw.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||dw.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||dw.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 hw,pw,Aw,mw,gw,fw,_w,vw,Ew;function yw(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=yw(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=yw(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 bw,kw,xw,ww,Mw;function Sw(){for(bw="default",kw="",xw=!1,ww=1;;){Mw=Cw();const e=Dw[bw]();if(e)return e}}function Cw(){if(hw[mw])return String.fromCodePoint(hw.codePointAt(mw))}function Tw(){const e=Cw();return"\n"===e?(gw++,fw=0):e?fw+=e.length:fw++,e&&(mw+=e.length),e}const Dw={default(){switch(Mw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void Tw();case"/":return Tw(),void(bw="comment");case void 0:return Tw(),Pw("eof")}if(!uw.isSpaceSeparator(Mw))return Dw[pw]();Tw()},comment(){switch(Mw){case"*":return Tw(),void(bw="multiLineComment");case"/":return Tw(),void(bw="singleLineComment")}throw Uw(Tw())},multiLineComment(){switch(Mw){case"*":return Tw(),void(bw="multiLineCommentAsterisk");case void 0:throw Uw(Tw())}Tw()},multiLineCommentAsterisk(){switch(Mw){case"*":return void Tw();case"/":return Tw(),void(bw="default");case void 0:throw Uw(Tw())}Tw(),bw="multiLineComment"},singleLineComment(){switch(Mw){case"\n":case"\r":case"\u2028":case"\u2029":return Tw(),void(bw="default");case void 0:return Tw(),Pw("eof")}Tw()},value(){switch(Mw){case"{":case"[":return Pw("punctuator",Tw());case"n":return Tw(),Iw("ull"),Pw("null",null);case"t":return Tw(),Iw("rue"),Pw("boolean",!0);case"f":return Tw(),Iw("alse"),Pw("boolean",!1);case"-":case"+":return"-"===Tw()&&(ww=-1),void(bw="sign");case".":return kw=Tw(),void(bw="decimalPointLeading");case"0":return kw=Tw(),void(bw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return kw=Tw(),void(bw="decimalInteger");case"I":return Tw(),Iw("nfinity"),Pw("numeric",1/0);case"N":return Tw(),Iw("aN"),Pw("numeric",NaN);case'"':case"'":return xw='"'===Tw(),kw="",void(bw="string")}throw Uw(Tw())},identifierNameStartEscape(){if("u"!==Mw)throw Uw(Tw());Tw();const e=Lw();switch(e){case"$":case"_":break;default:if(!uw.isIdStartChar(e))throw Bw()}kw+=e,bw="identifierName"},identifierName(){switch(Mw){case"$":case"_":case"‌":case"‍":return void(kw+=Tw());case"\\":return Tw(),void(bw="identifierNameEscape")}if(!uw.isIdContinueChar(Mw))return Pw("identifier",kw);kw+=Tw()},identifierNameEscape(){if("u"!==Mw)throw Uw(Tw());Tw();const e=Lw();switch(e){case"$":case"_":case"‌":case"‍":break;default:if(!uw.isIdContinueChar(e))throw Bw()}kw+=e,bw="identifierName"},sign(){switch(Mw){case".":return kw=Tw(),void(bw="decimalPointLeading");case"0":return kw=Tw(),void(bw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return kw=Tw(),void(bw="decimalInteger");case"I":return Tw(),Iw("nfinity"),Pw("numeric",ww*(1/0));case"N":return Tw(),Iw("aN"),Pw("numeric",NaN)}throw Uw(Tw())},zero(){switch(Mw){case".":return kw+=Tw(),void(bw="decimalPoint");case"e":case"E":return kw+=Tw(),void(bw="decimalExponent");case"x":case"X":return kw+=Tw(),void(bw="hexadecimal")}return Pw("numeric",0*ww)},decimalInteger(){switch(Mw){case".":return kw+=Tw(),void(bw="decimalPoint");case"e":case"E":return kw+=Tw(),void(bw="decimalExponent")}if(!uw.isDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},decimalPointLeading(){if(uw.isDigit(Mw))return kw+=Tw(),void(bw="decimalFraction");throw Uw(Tw())},decimalPoint(){switch(Mw){case"e":case"E":return kw+=Tw(),void(bw="decimalExponent")}return uw.isDigit(Mw)?(kw+=Tw(),void(bw="decimalFraction")):Pw("numeric",ww*Number(kw))},decimalFraction(){switch(Mw){case"e":case"E":return kw+=Tw(),void(bw="decimalExponent")}if(!uw.isDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},decimalExponent(){switch(Mw){case"+":case"-":return kw+=Tw(),void(bw="decimalExponentSign")}if(uw.isDigit(Mw))return kw+=Tw(),void(bw="decimalExponentInteger");throw Uw(Tw())},decimalExponentSign(){if(uw.isDigit(Mw))return kw+=Tw(),void(bw="decimalExponentInteger");throw Uw(Tw())},decimalExponentInteger(){if(!uw.isDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},hexadecimal(){if(uw.isHexDigit(Mw))return kw+=Tw(),void(bw="hexadecimalInteger");throw Uw(Tw())},hexadecimalInteger(){if(!uw.isHexDigit(Mw))return Pw("numeric",ww*Number(kw));kw+=Tw()},string(){switch(Mw){case"\\":return Tw(),void(kw+=function(){switch(Cw()){case"b":return Tw(),"\b";case"f":return Tw(),"\f";case"n":return Tw(),"\n";case"r":return Tw(),"\r";case"t":return Tw(),"\t";case"v":return Tw(),"\v";case"0":if(Tw(),uw.isDigit(Cw()))throw Uw(Tw());return"\0";case"x":return Tw(),function(){let e="",t=Cw();if(!uw.isHexDigit(t))throw Uw(Tw());if(e+=Tw(),t=Cw(),!uw.isHexDigit(t))throw Uw(Tw());return e+=Tw(),String.fromCodePoint(parseInt(e,16))}();case"u":return Tw(),Lw();case"\n":case"\u2028":case"\u2029":return Tw(),"";case"\r":return Tw(),"\n"===Cw()&&Tw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Uw(Tw())}return Tw()}());case'"':return xw?(Tw(),Pw("string",kw)):void(kw+=Tw());case"'":return xw?void(kw+=Tw()):(Tw(),Pw("string",kw));case"\n":case"\r":throw Uw(Tw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Ow(e)}' in strings is not valid ECMAScript; consider escaping`)}(Mw);break;case void 0:throw Uw(Tw())}kw+=Tw()},start(){switch(Mw){case"{":case"[":return Pw("punctuator",Tw())}bw="value"},beforePropertyName(){switch(Mw){case"$":case"_":return kw=Tw(),void(bw="identifierName");case"\\":return Tw(),void(bw="identifierNameStartEscape");case"}":return Pw("punctuator",Tw());case'"':case"'":return xw='"'===Tw(),void(bw="string")}if(uw.isIdStartChar(Mw))return kw+=Tw(),void(bw="identifierName");throw Uw(Tw())},afterPropertyName(){if(":"===Mw)return Pw("punctuator",Tw());throw Uw(Tw())},beforePropertyValue(){bw="value"},afterPropertyValue(){switch(Mw){case",":case"}":return Pw("punctuator",Tw())}throw Uw(Tw())},beforeArrayValue(){if("]"===Mw)return Pw("punctuator",Tw());bw="value"},afterArrayValue(){switch(Mw){case",":case"]":return Pw("punctuator",Tw())}throw Uw(Tw())},end(){throw Uw(Tw())}};function Pw(e,t){return{type:e,value:t,line:gw,column:fw}}function Iw(e){for(const t of e){if(Cw()!==t)throw Uw(Tw());Tw()}}function Lw(){let e="",t=4;for(;t-- >0;){const t=Cw();if(!uw.isHexDigit(t))throw Uw(Tw());e+=Tw()}return String.fromCodePoint(parseInt(e,16))}const Rw={start(){if("eof"===_w.type)throw Nw();zw()},beforePropertyName(){switch(_w.type){case"identifier":case"string":return vw=_w.value,void(pw="afterPropertyName");case"punctuator":return void Fw();case"eof":throw Nw()}},afterPropertyName(){if("eof"===_w.type)throw Nw();pw="beforePropertyValue"},beforePropertyValue(){if("eof"===_w.type)throw Nw();zw()},beforeArrayValue(){if("eof"===_w.type)throw Nw();"punctuator"!==_w.type||"]"!==_w.value?zw():Fw()},afterPropertyValue(){if("eof"===_w.type)throw Nw();switch(_w.value){case",":return void(pw="beforePropertyName");case"}":Fw()}},afterArrayValue(){if("eof"===_w.type)throw Nw();switch(_w.value){case",":return void(pw="beforeArrayValue");case"]":Fw()}},end(){}};function zw(){let e;switch(_w.type){case"punctuator":switch(_w.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=_w.value}if(void 0===Ew)Ew=e;else{const t=Aw[Aw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,vw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)Aw.push(e),pw=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=Aw[Aw.length-1];pw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function Fw(){Aw.pop();const e=Aw[Aw.length-1];pw=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Uw(e){return jw(void 0===e?`JSON5: invalid end of input at ${gw}:${fw}`:`JSON5: invalid character '${Ow(e)}' at ${gw}:${fw}`)}function Nw(){return jw(`JSON5: invalid end of input at ${gw}:${fw}`)}function Bw(){return fw-=5,jw(`JSON5: invalid identifier character at ${gw}:${fw}`)}function Ow(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 jw(e){const t=new SyntaxError(e);return t.lineNumber=gw,t.columnNumber=fw,t}const Gw={parse:function(e,t){hw=String(e),pw="start",Aw=[],mw=0,gw=1,fw=0,_w=void 0,vw=void 0,Ew=void 0;do{_w=Sw(),Rw[pw]()}while("eof"!==_w.type);return"function"==typeof t?yw({"":Ew},"",t):Ew},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(uw.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(!uw.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!uw.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var Vw=Gw;const Hw=new CSSStyleSheet;Hw.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(/fonts/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(/fonts/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(/fonts/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(/fonts/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 qw=new CSSStyleSheet;qw.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-very-pale: #e6e6e6;\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(Hw),document.adoptedStyleSheets.push(qw);class Ww extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Ww.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.3.0 (9164b4a)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,Ao().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Sx(this.lang),this.loader=Rr("pnx-loader",{_parent:this,"no-label":ho()}),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.`)}),ho()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||Rr("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 cw(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:Vw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:Vw.stringify(e)}}}class Kw extends le{static styles=[Ro,s`
2081
2081
  textarea:invalid {
2082
2082
  border: 2px solid var(--red);
2083
2083
  background-color:var(--beige);
@@ -2481,7 +2481,7 @@ function*(e,t){if(void 0!==e){let i=0;for(const n of e)yield t(n,i++)}}(this._re
2481
2481
  </pnx-togglable-group>
2482
2482
  `}
2483
2483
  </pnx-button-group>
2484
- `:q}}customElements.define("pnx-widget-player",nM);const aM=15,rM=["!",["has","uncrowded"]],sM=["==",["get","type"],"equirectangular"];function oM(e){return{PICTURES:{paint:{"circle-radius":["interpolate",["linear"],["zoom"],aM,0,15.5,e?1:["case",rM,0,1],16.5,e?2:["case",rM,0,2],17,e?4:["case",rM,1,4],18,e?5:["case",rM,3,5],20,e?7:["case",rM,5,7],22,e?7:["case",rM,7,7]],"circle-opacity":["interpolate",["linear"],["zoom"],aM,0,15.5,e?1:["case",rM,0,1],16.5,e?1:["case",rM,0,1],17,1],"circle-stroke-opacity":["case",["all",rM,sM],.2,sM,.4,0],"circle-stroke-width":["interpolate",["linear"],["zoom"],17.5,0,18.5,e?["case",sM,10,2]:["case",["all",rM,sM],0,sM,10,rM,0,2],19.5,e?["case",sM,10,2]:["case",["all",rM,sM],10,sM,10,rM,0,2]]},layout:{}},SEQUENCES:{paint:{"line-width":["interpolate",["linear"],["zoom"],0,.5,10,1.5,14.5,1.5,15.5,e?2:["case",rM,.5,2],22,e?4:["case",rM,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,Vs.PALETTE_1,.25,Vs.PALETTE_1,.5,Vs.PALETTE_2,.75,Vs.PALETTE_3,1,Vs.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]]}}}}oM(!1),oM(!0);const lM=864e5,cM=e=>new Date(e).toISOString().split("T")[0],dM=Date.now();cM(dM-180*lM),cM(dM-365*lM),cM(dM-94608e6);qs[0].color,qs[1].color,qs[2].color,qs[3].color,qs[4].color,Qs[0].score,Qs[0].color,Qs[1].score,Qs[1].color,Qs[2].score,Qs[2].color,Qs[3].color;const uM={minDate:"date_from",maxDate:"date_to",pic_type:"pic_type",camera:"camera",theme:"theme",qualityscore:"pic_score",gps:"gps"},hM=Object.fromEntries(Object.entries(uM).map(e=>[e[1],e[0]])),pM=["none","null","false",!1],AM=["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 mM{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?gM(t.map):null,o=!pM.includes(t.map)&&!pM.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,y=e.geocoder,b=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])=>AM.includes(e))));var L;let R=e["keyboard-shortcuts"],z=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,H=t.overlay,q=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:y,widgets:b,users:u,forceFocus:!0,keyboardShortcuts:!0,willLoadPicture:void 0!==(c||d),skipTagsMenuOpening:"true"===z},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:q,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:H},"false"===R&&(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 gM(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 fM(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 _M(e,t){const i=gM(t.map,e);i&&e.jumpTo(i),e.setFilters?.(function(e){const t={};for(let i in hM)e[i]&&(t[hM[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 vM(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 EM=["streets","aerial"],yM=["speed","nav","focus","pic","xyz","map","background","users","s","xywh","annot","seq","overlay","level"].concat(Object.values(uM)),bM=["focus-changed","pictures-navigation-changed"],kM=["position-updated","zoom-updated","view-rotated","picture-loaded","picture-failed","transition-duration-changed","annotation-focused","annotations-unfocused"],xM=["moveend","zoomend","boxzoomend","styledata"],wM=["filters-changed","theme-changed","panoramax-changed","basemap-changed"];class MM extends EventTarget{constructor(e){super(),this._parent=e,this._delay=null}listenToChanges(){window.addEventListener("popstate",this._onURLChange.bind(this),!1),bM.forEach(e=>this._parent.addEventListener(e,this._onParentChange.bind(this))),kM.forEach(e=>this._parent.psv.addEventListener(e,this._onParentChange.bind(this))),this._parent.map&&(xM.forEach(e=>this._parent.map.on(e,this._onParentChange.bind(this))),wM.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 uM)"theme"!==t&&this._parent.mapStyleComposer.panoramaxFilters[t]&&(e[uM[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&&yM.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()?(vM(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))):vM(this._parent,e),fM(this._parent.psv,e),this._parent.map&&_M(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:EM.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])=>!yM.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 SM={fas:"fa7-solid"},CM={};class TM{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=SM[e];i.iconify=t?i.icon.replace(e+"-",t+":"):i.icon.split("-")[0]+":"+i.icon.split("-").slice(1).join("-"),CM[i.iconify]&&(i.iconify=CM[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 DM=new CSSStyleSheet;DM.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,\npnx-photo-viewer.pnx-playing pnx-time-travel {\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(DM);const PM=Math.PI/6,IM=["pnx-mini","pnx-widget-player","pnx-widget-zoom"];class LM extends Ww{static properties={"psv-options":{converter:Ww.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},...Ww.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=Rr("pnx-cornered-grid"),this.psvContainer=document.createElement("div"),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.popup=Rr("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 mM(mM.GetComponentProperties(LM,this),Object.assign({},this.urlHandler?.currentURLParams(),this.urlHandler?.currentURLParams(!0)),{disableAnnotations:localStorage.getItem(js)})}_initWidgets(){"false"!==this._initParams.getParentPostInit().widgets&&(ho()||(this.grid.appendChild(Rr("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(Rr("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"}))),ho()?(this.legend=Rr("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=Rr("pnx-picture-legend",{_parent:this}),this.bottomDrawer=Rr("pnx-bottom-drawer",{slot:"bottom",_parent:this,openness:this._initParams.getParentPostInit().willLoadPicture?void 0:"hidden"}),this._initParams.getParentPostInit().willLoadPicture&&this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer)):(this.legend=Rr("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(Rr("pnx-widget-fullscreen",{slot:this.isWidthSmall()?"top-left":"bottom-right",class:this.isWidthSmall()?"pnx-only-map pnx-print-hidden":"pnx-print-hidden",_parent:this})),this.grid.appendChild(Rr("pnx-widget-zoom",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.grid.appendChild(this.legend),this.grid.appendChild(Rr("pnx-time-travel",{slot:"bottom",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:"xl"}))))}connectedCallback(){super.connectedCallback(),this.presetsManager=new TM(this.lang),"false"!==this["url-parameters"]&&(this.urlHandler=new MM(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(),vM(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 mx(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...uy.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),fM(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))}catch(e){let t=Av.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")&&!IM.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")||IM.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)})}isBottomDrawerVisible(){return"hidden"!==this.bottomDrawer.getAttribute("openness")}setBottomDrawer(e,t=null,i=null){this.bottomDrawer&&(e||this.bottomDrawer.setAttribute("openness","hidden"),i?.autoclose?this.bottomDrawer.setAttribute("autoclose",""):this.bottomDrawer.removeAttribute("autoclose",""),i?.autoadjust?this.bottomDrawer.setAttribute("autoadjust",""):this.bottomDrawer.removeAttribute("autoadjust",""),this.bottomDrawer.clearContent(),t&&("string"==typeof t?this.bottomDrawer.setContent(t):Array.isArray(t)?t.forEach(e=>this.bottomDrawer.appendChild(e)):"object"==typeof t&&this.bottomDrawer.appendChild(t)),!this.psv?._clickAndGo?._couldGoSomewhere&&e&&this.bottomDrawer.setAttribute("openness",i?.autoadjust?"opened":"half-opened"))}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,[Rr("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[Rr("pnx-report-form",{_parent:this})])}_showShareOptions(){this.setPopup(!0,[Rr("pnx-share-menu",{_parent:this,"base-url":this["share-base-url"]})])}_showSemanticsDoc(){this.setPopup(!0,[Rr("pnx-semantics-doc",{_t:this._t})])}_showSemanticsDownload(){this.setPopup(!0,[Rr("pnx-semantics-download",{_t:this._t})])}moveCenter(){this.psv.getPictureMetadata()&&this._psvAnimate({speed:sx,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+=PM;break;case"left":t.yaw-=PM;break;case"down":t.pitch-=PM;break;case"right":t.yaw+=PM}this._psvAnimate({speed:sx,...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",LM),document.adoptedStyleSheets.push(Xx);class RM 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:sx,zoom:e}),this._lastWantedZoom=e}}render(){return V`
2484
+ `:q}}customElements.define("pnx-widget-player",nM);const aM=15,rM=["!",["has","uncrowded"]],sM=["==",["get","type"],"equirectangular"];function oM(e){return{PICTURES:{paint:{"circle-radius":["interpolate",["linear"],["zoom"],aM,0,15.5,e?1:["case",rM,0,1],16.5,e?2:["case",rM,0,2],17,e?4:["case",rM,1,4],18,e?5:["case",rM,3,5],20,e?7:["case",rM,5,7],22,e?7:["case",rM,7,7]],"circle-opacity":["interpolate",["linear"],["zoom"],aM,0,15.5,e?1:["case",rM,0,1],16.5,e?1:["case",rM,0,1],17,1],"circle-stroke-opacity":["case",["all",rM,sM],.2,sM,.4,0],"circle-stroke-width":["interpolate",["linear"],["zoom"],17.5,0,18.5,e?["case",sM,10,2]:["case",["all",rM,sM],0,sM,10,rM,0,2],19.5,e?["case",sM,10,2]:["case",["all",rM,sM],10,sM,10,rM,0,2]]},layout:{}},SEQUENCES:{paint:{"line-width":["interpolate",["linear"],["zoom"],0,.5,10,1.5,14.5,1.5,15.5,e?2:["case",rM,.5,2],22,e?4:["case",rM,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,Vs.PALETTE_1,.25,Vs.PALETTE_1,.5,Vs.PALETTE_2,.75,Vs.PALETTE_3,1,Vs.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]]}}}}oM(!1),oM(!0);const lM=864e5,cM=e=>new Date(e).toISOString().split("T")[0],dM=Date.now();cM(dM-180*lM),cM(dM-365*lM),cM(dM-94608e6);qs[0].color,qs[1].color,qs[2].color,qs[3].color,qs[4].color,Qs[0].score,Qs[0].color,Qs[1].score,Qs[1].color,Qs[2].score,Qs[2].color,Qs[3].color;const uM={minDate:"date_from",maxDate:"date_to",pic_type:"pic_type",camera:"camera",theme:"theme",qualityscore:"pic_score",gps:"gps"},hM=Object.fromEntries(Object.entries(uM).map(e=>[e[1],e[0]])),pM=["none","null","false",!1],AM=["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 mM{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?gM(t.map):null,o=!pM.includes(t.map)&&!pM.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,y=e.geocoder,b=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])=>AM.includes(e))));var L;let R=e["keyboard-shortcuts"],z=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,H=t.overlay,q=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:y,widgets:b,users:u,forceFocus:!0,keyboardShortcuts:!0,willLoadPicture:void 0!==(c||d),skipTagsMenuOpening:"true"===z},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:q,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:H},"false"===R&&(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 gM(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 fM(e,t){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);const a=()=>{if(t.xyz){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)}if(t.xywh){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)}t.annotation&&e.focusOnAnnotation(t.annotation)};e.getPictureMetadata()?a():e.addEventListener("picture-loaded",a,{once:!0})}function _M(e,t){const i=gM(t.map,e);i&&e.jumpTo(i),e.setFilters?.(function(e){const t={};for(let i in hM)e[i]&&(t[hM[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 vM(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 EM=["streets","aerial"],yM=["speed","nav","focus","pic","xyz","map","background","users","s","xywh","annot","seq","overlay","level"].concat(Object.values(uM)),bM=["focus-changed","pictures-navigation-changed"],kM=["position-updated","zoom-updated","view-rotated","picture-loaded","picture-failed","transition-duration-changed","annotation-focused","annotations-unfocused"],xM=["moveend","zoomend","boxzoomend","styledata"],wM=["filters-changed","theme-changed","panoramax-changed","basemap-changed"];class MM extends EventTarget{constructor(e){super(),this._parent=e,this._delay=null}listenToChanges(){window.addEventListener("popstate",this._onURLChange.bind(this),!1),bM.forEach(e=>this._parent.addEventListener(e,this._onParentChange.bind(this))),kM.forEach(e=>this._parent.psv.addEventListener(e,this._onParentChange.bind(this))),this._parent.map&&(xM.forEach(e=>this._parent.map.on(e,this._onParentChange.bind(this))),wM.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 uM)"theme"!==t&&this._parent.mapStyleComposer.panoramaxFilters[t]&&(e[uM[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&&yM.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()?(vM(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))):vM(this._parent,e),fM(this._parent.psv,e),this._parent.map&&_M(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:EM.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])=>!yM.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 SM={fas:"fa7-solid"},CM={};class TM{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=SM[e];i.iconify=t?i.icon.replace(e+"-",t+":"):i.icon.split("-")[0]+":"+i.icon.split("-").slice(1).join("-"),CM[i.iconify]&&(i.iconify=CM[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 DM=new CSSStyleSheet;DM.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,\npnx-photo-viewer.pnx-playing pnx-time-travel {\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(DM);const PM=Math.PI/6,IM=["pnx-mini","pnx-widget-player","pnx-widget-zoom"];class LM extends Ww{static properties={"psv-options":{converter:Ww.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},...Ww.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=Rr("pnx-cornered-grid"),this.psvContainer=document.createElement("div"),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.popup=Rr("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 mM(mM.GetComponentProperties(LM,this),Object.assign({},this.urlHandler?.currentURLParams(),this.urlHandler?.currentURLParams(!0)),{disableAnnotations:localStorage.getItem(js)})}_initWidgets(){"false"!==this._initParams.getParentPostInit().widgets&&(ho()||(this.grid.appendChild(Rr("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(Rr("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"}))),ho()?(this.legend=Rr("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=Rr("pnx-picture-legend",{_parent:this}),this.bottomDrawer=Rr("pnx-bottom-drawer",{slot:"bottom",_parent:this,openness:this._initParams.getParentPostInit().willLoadPicture?void 0:"hidden"}),this._initParams.getParentPostInit().willLoadPicture&&this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer)):(this.legend=Rr("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(Rr("pnx-widget-fullscreen",{slot:this.isWidthSmall()?"top-left":"bottom-right",class:this.isWidthSmall()?"pnx-only-map pnx-print-hidden":"pnx-print-hidden",_parent:this})),this.grid.appendChild(Rr("pnx-widget-zoom",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.grid.appendChild(this.legend),this.grid.appendChild(Rr("pnx-time-travel",{slot:"bottom",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:"xl"}))))}connectedCallback(){super.connectedCallback(),this.presetsManager=new TM(this.lang),"false"!==this["url-parameters"]&&(this.urlHandler=new MM(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(),vM(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 mx(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...uy.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),fM(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))}catch(e){let t=Av.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")&&!IM.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")||IM.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)})}isBottomDrawerVisible(){return"hidden"!==this.bottomDrawer.getAttribute("openness")}setBottomDrawer(e,t=null,i=null){this.bottomDrawer&&(e||this.bottomDrawer.setAttribute("openness","hidden"),i?.autoclose?this.bottomDrawer.setAttribute("autoclose",""):this.bottomDrawer.removeAttribute("autoclose",""),i?.autoadjust?this.bottomDrawer.setAttribute("autoadjust",""):this.bottomDrawer.removeAttribute("autoadjust",""),this.bottomDrawer.clearContent(),t&&("string"==typeof t?this.bottomDrawer.setContent(t):Array.isArray(t)?t.forEach(e=>this.bottomDrawer.appendChild(e)):"object"==typeof t&&this.bottomDrawer.appendChild(t)),!this.psv?._clickAndGo?._couldGoSomewhere&&e&&this.bottomDrawer.setAttribute("openness",i?.autoadjust?"opened":"half-opened"))}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,[Rr("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[Rr("pnx-report-form",{_parent:this})])}_showShareOptions(){this.setPopup(!0,[Rr("pnx-share-menu",{_parent:this,"base-url":this["share-base-url"]})])}_showSemanticsDoc(){this.setPopup(!0,[Rr("pnx-semantics-doc",{_t:this._t})])}_showSemanticsDownload(){this.setPopup(!0,[Rr("pnx-semantics-download",{_t:this._t})])}moveCenter(){this.psv.getPictureMetadata()&&this._psvAnimate({speed:sx,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+=PM;break;case"left":t.yaw-=PM;break;case"down":t.pitch-=PM;break;case"right":t.yaw+=PM}this._psvAnimate({speed:sx,...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",LM),document.adoptedStyleSheets.push(Xx);class RM 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:sx,zoom:e}),this._lastWantedZoom=e}}render(){return V`
2485
2485
  <pnx-button-group
2486
2486
  id="pnx-widget-zoom"
2487
2487
  dir="column"