PageSourceSearch

https://www.slate360.ai/_next/static/chunks/62043-e6f5a2fb01e95b9a.js

js slate360.ai collected 2026-10-05 15:06:40 UTC 65,919 bytes, 13 lines download raw bytes

1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2c03ac37-7c63-4d14-94bd-481086e7a1f2",e._sentryDebugIdIdentifier="sentry-dbid-2c03ac37-7c63-4d14-94bd-481086e7a1f2")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[62043],{13023:()=>{},14323:(e,t,i)=>{"use strict";i.d(t,{T:()=>l});var s=i(12690),r=i(85339),n=class extends s.Qw{constructor(e){super(e)}init(){super.init(),this.viewer.needsContinuousUpdate(!0)}destroy(){this.__removeVideo(),super.destroy()}supportsPreload(){return!1}supportsTransition(){return!1}async loadTexture(e){if("object"!=typeof e||!e.source)return Promise.reject(new s.e6("Invalid panorama configuration, are you using the right adapter?"));if(!this.viewer.getPlugin("video"))return Promise.reject(new s.e6("Video adapters require VideoPlugin to be loaded too."));let t=e.source instanceof HTMLVideoElement?e.source:function({src:e,withCredentials:t,muted:i,autoplay:s}){let r=document.createElement("video");return r.crossOrigin=t?"use-credentials":"anonymous",r.loop=!0,r.playsInl
1ine=!0,r.autoplay=s,r.muted=i,r.preload="metadata",e instanceof MediaStream?r.srcObject=e:r.src=e,r}({src:e.source,withCredentials:this.viewer.config.withCredentials(e.source),muted:!0,autoplay:!1});return await this.__videoLoadPromise(t),{panorama:e,texture:new r.Nv2(t)}}switchVideo(e){let t,i,s=!this.config.autoplay,r=this.config.muted,n=1;this.video&&({currentTime:t,duration:i,paused:s,muted:r,volume:n}=this.video),this.__removeVideo(),this.video=e.image,this.video.duration===i&&(this.video.currentTime=t),this.video.muted=r,this.video.volume=n,s||this.video.play()}setTextureOpacity(e,t){e.material.opacity=t,e.material.transparent=t<1}disposeTexture({texture:e}){e.dispose()}disposeMesh(e){e.geometry.dispose(),e.material.dispose()}__removeVideo(){this.video&&(this.video.pause(),this.video.remove(),delete this.video)}__videoLoadPromise(e){return new Promise((t,i)=>{let s=()=>{this.video&&e.duration===this.video.duration&&(e.currentTime=this.video.currentTime),t(),e.removeEventListener("loadedmetadata",s)},r=t=>{i(t),e.removeEventListener("error",r)};e.addEventListener("loadedmetadata",s),e.addEventListener("error",r)})}};n.supportsDownload=!1;var o=s.Wp.getConfigParser({resolution:64,autoplay:!1,muted:!1}),a=class e extends n{static withConfig(t){return[e,t]}constructor(e,t){super(e),this.config=o(t),this.adapter=new s.GR(this.viewer,{resolution:this.config.resolution})}destroy(){this.adapter.destroy(),delete this.adapter,super.destroy()}textureCoordsToSphericalCoords(e,t){return this.adapter.textureCoordsToSphericalCoords(e,t)}sphericalCoordsToTextureCoords(e,t){return this.adapter.sphericalCoordsToTextureCoords(e,t)}async loadTexture(e,t,i){let{texture:r}=await super.loadTexture(e),n=r.image;return e.data&&(i=e.data),"function"==typeof i&&(i=i(n)),{panorama:e,texture:r,panoData:s.Wp.mergePanoData(n.videoWidth,n.videoHeight,i)}}createMesh(e){return this.adapter.createMesh(e)}setTexture(e,{texture:t}){e.material.map=t,this.switchVideo(t)}};a.id="equirectangular-video",a.VERSION="5.14.1";var l=a},32881:()=>{},49565:(e,t,i)=>{"use strict";i.d(t,{D:()=>a});var s=i(12690),r=i(85339),n=s.Wp.getConfigParser({verticalRange:null,horizontalRange:null,usePanoData:!1}),o=class e extends s.TL{static withConfig(t){return[e,t]}constructor(e,t){super(e,t)}init(){super.init(),this.autorotate=this.viewer.getPlugin("autorotate"),this.viewer.addEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.viewer.addEventListener(s.AZ.PositionUpdatedEvent.type,this),this.viewer.addEventListener(s.AZ.ZoomUpdatedEvent.type,this),this.viewer.addEventListener(s.AZ.BeforeAnimateEvent.type,this),this.viewer.addEventListener(s.AZ.BeforeRotateEvent.type,this),this.setVerticalRange(this.config.verticalRange),this.setHorizontalRange(this.config.horizontalRange)}destroy(){this.viewer.removeEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.viewer.removeEventListener(s.AZ.PositionUpdatedEvent.type,this),this.viewer.removeEventListener(s.AZ.ZoomUpdatedEvent.type,this),this.viewer.removeEventListener(s.AZ.BeforeAnimateEvent.type,this),this.viewer.removeEventListener(s.AZ.BeforeRotateEvent.type,this),super.destroy()}handleEvent(e){switch(e.type){case s.AZ.PanoramaLoadedEvent.type:this.config.usePanoData?this.setRangesFromPanoData():this.__moveToRange();break;case s.AZ.BeforeRotateEvent.type:case s.AZ.BeforeAnimateEvent.type:{let{rangedPosition:t,sidesReached:i}=this.__applyRanges(e.position,e.zoomLevel);(e.position||Object.keys(i).length)&&(e.position=t);break}case s.AZ.PositionUpdatedEvent.type:{let t=e.position,{sidesReached:i,rangedPosition:s}=this.__applyRanges(t);(i.left||i.right)&&this.autorotate?.isEnabled()?this.__reverseAutorotate(i.left,i.right):(Math.abs(t.yaw-s.yaw)>1e-6||Math.abs(t.pitch-s.pitch)>1e-6)&&this.viewer.dynamics.position.setValue(s);break}case s.AZ.ZoomUpdatedEvent.type:{let e=this.viewer.getPosition(),{rangedPosition:t}=this.__applyRanges(e);(Math.abs(e.yaw-t.yaw)>1e-6||Math.abs(e.pitch-t.pitch)>1e-6)&&this.viewer.dynamics.position.setValue(t)}}}setVerticalRange(e){e&&2!==e.length&&(s.Wp.logWarn("vertical range must have exactly two elements"),e=null),e?(this.config.verticalRange=e.map(e=>s.Wp.parseAngle(e,!0)),this.config.verticalRange[0]>this.config.verticalRange[1]&&(s.Wp.logWarn("vertical range values must be ordered"),this.config.verticalRange=[this.config.verticalRange[1],this.config.verticalRange[0]]),this.viewer.state.ready&&this.__moveToRange()):this.config.verticalRange=null}setHorizontalRange(e){e&&2!==e.length&&(s.Wp.logWarn("horizontal range must have exactly two elements"),e=null),e?(this.config.horizontalRange=e.map(e=>s.Wp.parseAngle(e)),this.viewer.state.ready&&this.__moveToRange()):this.config.horizontalRange=null}setRangesFromPanoData(){let e=this.viewer.state.textureData.panoData;e?.isEquirectangular&&(this.setVerticalRange(this.__getPanoVerticalRange(e)),this.setHorizontalRange(this.__getPanoHorizontalRange(e)))}__getPanoVerticalRange(e){if(e.croppedHeight===e.fullHeight)return null;{let t=t=>Math.PI*(1-t/e.fullHeight)-Math.PI/2;return[t(e.croppedY+e.croppedHeight),t(e.croppedY)]}}__getPanoHorizontalRange(e){if(e.croppedWidth===e.fullWidth)return null;{let t=t=>2*Math.PI*(t/e.fullWidth)-Math.PI;return[t(e.croppedX),t(e.croppedX+e.croppedWidth)]}}__moveToRange(){this.viewer.rotate(this.viewer.getPosition())}__applyRanges(e=this.viewer.getPosition(),t=this.viewer.getZoomLevel()){let i={yaw:e.yaw,pitch:e.pitch},n={},o=this.viewer.dataHelper.zoomLevelToFov(t),a=this.viewer.dataHelper.vFovToHFov(o);if(this.config.horizontalRange){let t=s.Wp.clone(this.config.horizontalRange),o=t[0]>t[1]?t[1]+(2*Math.PI-t[0]):t[1]-t[0];if(o<=r.cj9.degToRad(a))t[0]=s.Wp.parseAngle(t[0]+o/2),t[1]=t[0];else{let e=r.cj9.degToRad(a)/2;t[0]=s.Wp.parseAngle(t[0]+e),t[1]=s.Wp.parseAngle(t[1]-e)}t[0]>t[1]?e.yaw>t[1]&&e.yaw<t[0]&&(e.yaw>t[0]/2+t[1]/2?(i.yaw=t[0],n.left=!0):(i.yaw=t[1],n.right=!0)):e.yaw<t[0]?(i.yaw=t[0],n.left=!0):e.yaw>t[1]&&(i.yaw=t[1],n.right=!0)}if(this.config.verticalRange){let t=s.Wp.clone(this.config.verticalRange),a=t[1]-t[0];if(a<=r.cj9.degToRad(o))t[0]=s.Wp.parseAngle(t[0]+a/2,!0),t[1]=t[0];else{let e=r.cj9.degToRad(o)/2;t[0]=s.Wp.parseAngle(t[0]+e,!0),t[1]=s.Wp.parseAngle(t[1]-e,!0)}e.pitch<t[0]?(i.pitch=t[0],n.bottom=!0):e.pitch>t[1]&&(i.pitch=t[1],n.top=!0)}return{rangedPosition:i,sidesReached:n}}__reverseAutorotate(e,t){e&&this.autorotate.config.autorotateSpeed>0||t&&this.autorotate.config.autorotateSpeed<0||this.autorotate.reverse()}};o.id="visible-range",o.VERSION="5.14.1",o.configParser=n,o.readonlyOptions=["horizontalRange","verticalRange"];var a=o},50108:(e,t,i)=>{"use strict";i.d(t,{b:()=>ep});var s=i(12690),r=i(85339),n=Object.defineProperty;((e,t)=>
1{for(var i in t)n(e,i,{get:t[i],enumerable:!0})})({},{EnterMarkerEvent:()=>u,GotoMarkerDoneEvent:()=>c,HideMarkersEvent:()=>b,LeaveMarkerEvent:()=>p,MarkerVisibilityEvent:()=>l,MarkersPluginEvent:()=>o,RenderMarkersListEvent:()=>x,SelectMarkerEvent:()=>m,SelectMarkerListEvent:()=>y,SetMarkersEvent:()=>_,ShowMarkersEvent:()=>P,UnselectMarkerEvent:()=>E});var o=class extends s.rx{},a=class e extends o{constructor(t,i){super(e.type),this.marker=t,this.visible=i}};a.type="marker-visibility";var l=a,h=class e extends o{constructor(t){super(e.type),this.marker=t}};h.type="goto-marker-done";var c=h,d=class e extends o{constructor(t){super(e.type),this.marker=t}};d.type="leave-marker";var p=d,v=class e extends o{constructor(t){super(e.type),this.marker=t}};v.type="enter-marker";var u=v,g=class e extends o{constructor(t,i,s){super(e.type),this.marker=t,this.doubleClick=i,this.rightClick=s}};g.type="select-marker";var m=g,f=class e extends o{constructor(t){super(e.type),this.marker=t}};f.type="select-marker-list";var y=f,w=class e extends o{constructor(t){super(e.type),this.marker=t}};w.type="unselect-marker";var E=w,k=class e extends o{constructor(){super(e.type)}};k.type="hide-markers";var b=k,M=class e extends o{constructor(t){super(e.type),this.markers=t}};M.type="set-markers";var _=M,L=class e extends o{constructor(){super(e.type)}};L.type="show-markers";var P=L,A=class e extends o{constructor(t){super(e.type),this.markers=t}};A.type="render-markers-list";var x=A,C=class extends s.Np{constructor(e){super(e,{className:"psv-markers-button",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="10 9 81 81"><path fill="currentColor" d="M50.5 90S22.9 51.9 22.9 36.6 35.2 9 50.5 9s27.6 12.4 27.6 27.6S50.5 90 50.5 90zm0-66.3c-6.1 0-11 4.9-11 11s4.9 11 11 11 11-4.9 11-11-4.9-11-11-11z"/>\x3c!--Created by Rohith M S from the Noun Project--\x3e</svg>\n',hoverScale:!0,collapsable:!0,tabbable:!0}),this.plugin=this.viewer.getPlugin("markers"),this.plugin&&(this.plugin.addEventListener(P.type,this),this.plugin.addEventListener(b.type,this),this.toggleActive(!0))}destroy(){this.plugin&&(this.plugin.removeEventListener(P.type,this),this.plugin.removeEventListener(b.type,this)),super.destroy()}isSupported(){return!!this.plugin}handleEvent(e){e instanceof P?this.toggleActive(!0):e instanceof b&&this.toggleActive(!1)}onClick(){this.plugin.toggleAllMarkers()}};C.id="markers";var S='<svg xmlns="http://www.w3.org/2000/svg" viewBox="9 9 81 81"><path fill="currentColor" d="M37.5 90S9.9 51.9 9.9 36.6 22.2 9 37.5 9s27.6 12.4 27.6 27.6S37.5 90 37.5 90zm0-66.3c-6.1 0-11 4.9-11 11s4.9 11 11 11 11-4.9 11-11-4.9-11-11-11zM86.7 55H70c-1.8 0-3.3-1.5-3.3-3.3s1.5-3.3 3.3-3.3h16.7c1.8 0 3.3 1.5 3.3 3.3S88.5 55 86.7 55zm0-25h-15a3.3 3.3 0 0 1-3.3-3.3c0-1.8 1.5-3.3 3.3-3.3h15c1.8 0 3.3 1.5 3.3 3.3 0 1.8-1.5 3.3-3.3 3.3zM56.5 73h30c1.8 0 3.3 1.5 3.3 3.3 0 1.8-1.5 3.3-3.3 3.3h-30a3.3 3.3 0 0 1-3.3-3.3 3.2 3.2 0 0 1 3.3-3.3z"/>\x3c!--Created by Rohith M S from the Noun Project--\x3e</svg>\n',T="http://www.w3.org/2000/svg",z="psvMarker",R=s.Wp.dasherize(z),W="marker",j="markersList",Z={amount:2,duration:100,easing:"linear"},D=class extends s.Np{constructor(e){super(e,{className:" psv-markers-list-button",icon:S,hoverScale:!0,collapsable:!0,tabbable:!0}),this.plugin=this.viewer.getPlugin("markers"),this.plugin&&(this.viewer.addEventListener(s.AZ.ShowPanelEvent.type,this),this.viewer.addEventListener(s.AZ.HidePanelEvent.type,this))}destroy(){this.viewer.removeEventListener(s.AZ.ShowPanelEvent.type,this),this.viewer.removeEventListener(s.AZ.HidePanelEvent.type,this),super.destroy()}isSupported(){return!!this.plugin}handleEvent(e){e instanceof s.AZ.ShowPanelEvent?this.toggleActive(e.panelId===j):e instanceof s.AZ.HidePanelEvent&&this.toggleActive(!1)}onClick(){this.plugin.toggleMarkersList()}};D.id="markersList";var O=new r.Pq0,H=new r.PTz,N=new r.Pq0,V=class extends r.B69{constructor(e=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof e.element.ownerDocument.defaultView.Element&&null!==e.element.parentNode&&e.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this}},I=new r.kn4,$=new r.kn4,U=class{constructor(e={}){let t,i,s,r,n=this,o={camera:{style:""},objects:new WeakMap},a=void 0!==e.element?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a;
1let l=document.createElement("div");l.style.transformOrigin="0 0",l.style.pointerEvents="none",a.appendChild(l);let h=document.createElement("div");function c(e){return 1e-10>Math.abs(e)?0:e}function d(e){let t=e.elements;return"matrix3d("+c(t[0])+","+c(-t[1])+","+c(t[2])+","+c(t[3])+","+c(t[4])+","+c(-t[5])+","+c(t[6])+","+c(t[7])+","+c(t[8])+","+c(-t[9])+","+c(t[10])+","+c(t[11])+","+c(t[12])+","+c(-t[13])+","+c(t[14])+","+c(t[15])+")"}function p(e){let t=e.elements;return"translate(-50%,-50%)"+("matrix3d("+c(t[0])+","+c(t[1])+","+c(t[2])+","+c(t[3])+","+c(-t[4])+","+c(-t[5])+","+c(-t[6])+","+c(-t[7])+","+c(t[8])+","+c(t[9])+","+c(t[10])+","+c(t[11])+","+c(t[12])+","+c(t[13])+","+c(t[14])+","+c(t[15]))+")"}h.style.transformStyle="preserve-3d",l.appendChild(h),this.getSize=function(){return{width:t,height:i}},this.render=function(e,a){let v,u,g=a.projectionMatrix.elements[5]*r;a.view&&a.view.enabled?(l.style.transform=`translate( ${-a.view.offsetX*(t/a.view.width)}px, ${-a.view.offsetY*(i/a.view.height)}px )`,l.style.transform+=`scale( ${a.view.fullWidth/a.view.width}, ${a.view.fullHeight/a.view.height} )`):l.style.transform="",!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===a.parent&&!0===a.matrixWorldAutoUpdate&&a.updateMatrixWorld(),a.isOrthographicCamera&&(v=-(a.right+a.left)/2,u=(a.top+a.bottom)/2);let m=a.view&&a.view.enabled?a.view.height/a.view.fullHeight:1,f=a.isOrthographicCamera?`scale( ${m} )scale(`+g+")translate("+c(v)+"px,"+c(u)+"px)"+d(a.matrixWorldInverse):`scale( ${m} )translateZ(`+g+"px)"+d(a.matrixWorldInverse),y=(a.isPerspectiveCamera?"perspective("+g+"px) ":"")+f+"translate("+s+"px,"+r+"px)";o.camera.style!==y&&(h.style.transform=y,o.camera.style=y),function e(t,i,s,r){if(!1===t.visible)return void function e(t){t.isCSS3DObject&&(t.element.style.display="none");for(let i=0,s=t.children.length;i<s;i++)e(t.children[i])}(t);if(t.isCSS3DObject){let e=!0===t.layers.test(s.layers),r=t.element;if(r.style.display=!0===e?"":"none",!0===e){let e;t.onBeforeRender(n,i,s),t.isCSS3DSprite?(I.copy(s.matrixWorldInverse),I.transpose(),0!==t.rotation2D&&I.multiply($.makeRotationZ(t.rotation2D)),t.matrixWorld.decompose(O,H,N),I.setPosition(O),I.scale(N),I.elements[3]=0,I.elements[7]=0,I.elements[11]=0,I.elements[15]=1,e=p(I)):e=p(t.matrixWorld);let a=o.objects.get(t);if(void 0===a||a.style!==e){r.style.transform=e;let i={style:e};o.objects.set(t,i)}r.parentNode!==h&&h.appendChild(r),t.onAfterRender(n,i,s)}}for(let n=0,o=t.children.length;n<o;n++)e(t.children[n],i,s,r)}(e,e,a,f)},this.setSize=function(e,n){t=e,i=n,s=t/2,r=i/2,a.style.width=e+"px",a.style.height=n+"px",l.style.width=e+"px",l.style.height=n+"px",h.style.width=e+"px",h.style.height=n+"px"}}},q=class{constructor(e){this.viewer=e,this.element=document.createElement("div"),this.element.className="psv-markers-css3d-container",this.renderer=new U({element:this.element}),this.scene=new r.Z58,this.intersectionObserver=new IntersectionObserver(e=>{e.forEach(e=>{let t=e.target[z];t.config.visible&&(t.viewportIntersection=e.isIntersecting)})},{root:this.element}),e.addEventListener(s.AZ.ReadyEvent.type,this,{once:!0}),e.addEventListener(s.AZ.SizeUpdatedEvent.type,this),e.addEventListener(s.AZ.RenderEvent.type,this)}handleEvent(e){switch(e.type){case s.AZ.ReadyEvent.type:case s.AZ.SizeUpdatedEvent.type:this.updateSize();break;case s.AZ.RenderEvent.type:this.render()}}destroy(){this.viewer.removeEventListener(s.AZ.ReadyEvent.type,this),this.viewer.removeEventListener(s.AZ.SizeUpdatedEvent.type,this),this.viewer.removeEventListener(s.AZ.RenderEvent.type,this),this.intersectionObserver.disconnect()}updateSize(){let e=this.viewer.getSize();this.renderer.setSize(e.width,e.height)}render(){this.renderer.render(this.scene,this.viewer.renderer.camera)}addObject(e){this.scene.add(e.threeElement),this.intersectionObserver.observe(e.domElement)}removeObject(e){this.scene.remove(e.threeElement),this.intersectionObserver.unobserve(e.domElement)}},B=(e=>(e.image="image",e.html="html",e.element="element",e.imageLayer="imageLayer",e.videoLayer="videoLayer",e.elementLayer="elementLayer",e.polygon="polygon",e.polygonPixels="polygonPixels",e.polyline="polyline",e.polylinePixels="polylinePixels",e.square="square",e.re
1ct="rect",e.circle="circle",e.ellipse="ellipse",e.path="path",e))(B||{});function Y(e,t=!1){let i=[];if(Object.keys(B).forEach(t=>{e[t]&&i.push(t)}),0!==i.length||t){if(i.length>1)throw new s.e6(`multiple marker content, either ${Object.keys(B).join(", ")}`)}else throw new s.e6(`missing marker content, either ${Object.keys(B).join(", ")}`);return i[0]}var F=class{constructor(e,t,i){if(this.viewer=e,this.plugin=t,this.state={anchor:null,visible:!1,staticTooltip:!1,position:null,position2D:null,positions3D:null,size:null},!i.id)throw new s.e6("missing marker id");this.type=Y(i),this.createElement(),this.update(i)}get id(){return this.config.id}get data(){return this.config.data}get domElement(){return null}get threeElement(){return null}get video(){return null}destroy(){delete this.viewer,delete this.plugin,delete this.element,this.hideTooltip()}is3d(){return!1}isNormal(){return!1}isPoly(){return!1}isSvg(){return!1}isCss3d(){return!1}update(e){let t=Y(e,!0);if(void 0!==t&&t!==this.type)throw new s.e6(`cannot change marker ${e.id} type`);if(this.config=s.Wp.deepmerge(this.config,e),"string"==typeof this.config.tooltip&&(this.config.tooltip={content:this.config.tooltip}),this.config.tooltip&&!this.config.tooltip.trigger&&(this.config.tooltip.trigger="hover"),s.Wp.isNil(this.config.visible)&&(this.config.visible=!0),s.Wp.isNil(this.config.zIndex)&&(this.config.zIndex=1),s.Wp.isNil(this.config.opacity)&&(this.config.opacity=1),this.config.rotation){let e=this.config.rotation;"object"==typeof e?this.config.rotation={yaw:e.yaw?s.Wp.parseAngle(e.yaw,!0,!1):0,pitch:e.pitch?s.Wp.parseAngle(e.pitch,!0,!1):0,roll:e.roll?s.Wp.parseAngle(e.roll,!0,!1):0}:this.config.rotation={yaw:0,pitch:0,roll:s.Wp.parseAngle(e,!0,!1)}}else this.config.rotation={yaw:0,pitch:0,roll:0};this.state.anchor=s.Wp.parsePoint(this.config.anchor)}getListContent(){return this.config.listContent?this.config.listContent:this.config.tooltip?.content?this.config.tooltip.content:this.config.html?this.config.html:this.id}showTooltip(e,t,i=!1){if(this.state.visible&&this.config.tooltip?.content&&this.state.position2D){let r={...this.config.tooltip,style:{pointerEvents:this.state.staticTooltip?"auto":"none"},data:this,top:0,left:0};if(this.isPoly()||this.is3d()||this.isCss3d())if(e||t){let i=s.Wp.getPosition(this.viewer.container);r.top=t-i.y+10,r.left=e-i.x,r.box={width:20,height:20}}else r.top=this.state.position2D.y,r.left=this.state.position2D.x;else{let e=this.viewer.dataHelper.vector3ToViewerCoords(this.state.positions3D[0]),t=this.state.size.width,i=this.state.size.height;this.config.hoverScale&&!this.state.staticTooltip&&(t*=this.config.hoverScale.amount,i*=this.config.hoverScale.amount),r.top=e.y-i*this.state.anchor.y+i/2,r.left=e.x-t*this.state.anchor.x+t/2,r.box={width:t,height:i}}this.tooltip?i?this.tooltip.update(this.config.tooltip.content,r):this.tooltip.move(r):this.tooltip=this.viewer.createTooltip(r)}}hideTooltip(){this.tooltip&&(this.tooltip.hide(),this.tooltip=null)}},K=class extends F{get domElement(){return this.element}constructor(e,t,i){super(e,t,i)}afterCreateElement(){this.element[z]=this}destroy(){delete this.element[z],super.destroy()}update(e){super.update(e);let t=this.domElement;t.id=`psv-marker-${this.config.id}`,t.setAttribute("class","psv-marker"),this.state.visible&&t.classList.add("psv-marker--visible"),this.config.tooltip&&t.classList.add("psv-marker--has-tooltip"),this.config.content&&t.classList.add("psv-marker--has-content"),this.config.className&&s.Wp.addClasses(t,this.config.className),t.style.opacity=`${this.config.opacity}`,t.style.zIndex=`${30+this.config.zIndex}`,this.config.style&&Object.assign(t.style,this.config.style)}},X=class extends K{constructor(e,t,i){super(e,t,i)}afterCreateElement(){super.afterCreateElement(),this.domElement.addEventListener("transitionend",()=>{this.domElement.style.transition=""})}render({viewerPosition:e,zoomLevel:t,hoveringMarker:i}){this.__updateSize();let s=this.viewer.dataHelper.vector3ToViewerCoords(this.state.positions3D[0]);return(s.x-=this.state.size.width*this.state.anchor.x,s.y-=this.state.size.height*this.state.anchor.y,this.state.positions3D[0].dot(this.viewer.state.direction)>0&&s.x+this.state.size.width>=0&&s.x-this.state.size.width<=this.viewer.state.size.width&&s.y+this.state.size.height>=0&&s.y-this.state.size.height<=this.viewer.state.size.height)?(this.domElement.style.translate=`${s.x}px ${s.y}px 0px`,this.applyScale({zoomLevel:t,viewerPosition:e,mouseover:this===i}),s):null}update(e){if(super.update(e),!s.Wp.isExtendedPosition(this.config.position))throw new s.e6(`missing marker ${this.id} position`);try{this.state.position=this.viewer.dataHelper.cleanPosition(this.config.position)}
1catch(e){throw new s.e6(`invalid marker ${this.id} position`,e)}this.state.positions3D=[this.viewer.dataHelper.sphericalCoordsToVector3(this.state.position)];let t=this.domElement;t.classList.add("psv-marker--normal"),this.config.scale&&Array.isArray(this.config.scale)&&(this.config.scale={zoom:this.config.scale}),"boolean"==typeof this.config.hoverScale?this.config.hoverScale=this.config.hoverScale?this.plugin.config.defaultHoverScale||Z:null:"number"==typeof this.config.hoverScale?this.config.hoverScale={amount:this.config.hoverScale}:this.config.hoverScale||(this.config.hoverScale=this.plugin.config.defaultHoverScale),this.config.hoverScale&&(this.config.hoverScale={...this.plugin.config.defaultHoverScale,...this.config.hoverScale}),t.style.rotate=0!==this.config.rotation.roll?r.cj9.radToDeg(this.config.rotation.roll)+"deg":null,t.style.transformOrigin=`${100*this.state.anchor.x}% ${100*this.state.anchor.y}%`}__updateSize(){if(!this.needsUpdateSize)return;let e=this.domElement,t=!this.state.visible||!this.state.size;if(t&&e.classList.add("psv-marker--transparent"),this.isSvg()){let t=e.firstElementChild.getBoundingClientRect();this.state.size={width:t.width,height:t.height}}else this.state.size={width:e.offsetWidth,height:e.offsetHeight};t&&e.classList.remove("psv-marker--transparent"),this.isSvg()&&(e.style.width=this.state.size.width+"px",e.style.height=this.state.size.height+"px"),"element"!==this.type&&(this.needsUpdateSize=!1)}applyScale({zoomLevel:e,viewerPosition:t,mouseover:i}){null!==i&&this.config.hoverScale&&(this.domElement.style.transition=`scale ${this.config.hoverScale.duration}ms ${this.config.hoverScale.easing}`);let n=1;if("function"==typeof this.config.scale)n=this.config.scale(e,t);else if(this.config.scale){if(Array.isArray(this.config.scale.zoom)){let[t,i]=this.config.scale.zoom;n*=t+(i-t)*s.aH.EASINGS.inQuad(e/100)}if(Array.isArray(this.config.scale.yaw)){let[e,i]=this.config.scale.yaw,o=r.cj9.degToRad(this.viewer.state.hFov)/2,a=Math.abs(s.Wp.getShortestArc(this.state.position.yaw,t.yaw));n*=i+(e-i)*s.aH.EASINGS.outQuad(Math.max(0,(o-a)/o))}}i&&this.config.hoverScale&&(n*=this.config.hoverScale.amount),this.domElement.style.scale=`${n}`}},G=class extends r.BKk{get map(){return this.uniforms.map.value}set map(e){this.uniforms.map.value=e}set alpha(e){this.uniforms.alpha.value=e}get offset(){return this.uniforms.offset.value}get repeat(){return this.uniforms.repeat.value}set chromaKey(e){this.uniforms.keying.value=e?.enabled===!0,e?.enabled&&("object"==typeof e.color&&"r"in e.color?this.uniforms.color.value.set(e.color.r/255,e.color.g/255,e.color.b/255):this.uniforms.color.value.set(e.color??65280),this.uniforms.similarity.value=e.similarity??.2,this.uniforms.smoothness.value=e.smoothness??.2)}constructor(e){super({transparent:!0,depthTest:!1,depthWrite:!1,uniforms:{map:{value:e?.map},repeat:{value:new r.I9Y(1,1)},offset:{value:new r.I9Y(0,0)},alpha:{value:e?.alpha??1},keying:{value:!1},color:{value:new r.Q1f(65280)},similarity:{value:.2},smoothness:{value:.2},spill:{value:.1}},vertexShader:"varying vec2 vUv;\nuniform vec2 repeat;\nuniform vec2 offset;\n\nvoid main() {\n    vUv = uv * repeat + offset;\n    gl_Position = projectionMatrix *  modelViewMatrix * vec4( position, 1.0 );\n}\n",fragmentShader:"// https://www.8thwall.com/playground/chromakey-threejs\n\nuniform sampler2D map;\nuniform float alpha;\nuniform bool keying;\nuniform vec3 color;\nuniform float similarity;\nuniform float smoothness;\nuniform float spill;\n\nvarying vec2 vUv;\n\nvec2 RGBtoUV(vec3 rgb) {\n    return vec2(\n        rgb.r * -0.169 + rgb.g * -0.331 + rgb.b *  0.5    + 0.5,\n        rgb.r *  0.5   + rgb.g * -0.419 + rgb.b * -0.081  + 0.5\n    );\n}\n\nvoid main(void) {\n    gl_FragColor = texture2D(map, vUv);\n\n    if (keying) {\n        float chromaDist = distance(RGBtoUV(gl_FragColor.rgb), RGBtoUV(color));\n\n        float baseMask = chromaDist - similarity;\n        float fullMask = pow(clamp(baseMask / smoothness, 0., 1.), 1.5);\n        gl_FragColor.a *= fullMask * alpha;\n\n        float spillVal = pow(clamp(baseMask / spill, 0., 1.), 1.5);\n        float desat = clamp(gl_FragColor.r * 0.2126 + gl_FragColor.g * 0.7152 + gl_FragColor.b * 0.0722, 0., 1.);\n        gl_FragColor.rgb = mix(vec3(desat, desat, desat), gl_FragColor.rgb, spillVal);\n    } else {\n        gl_FragColor.a *= alpha;\n    }\n}\n"}),this.chromaKey=e?.chromaKey}};function Q(e){return e.reduce((e,t)=>
1e.add(t),new r.Pq0).normalize()}var J=new r.Pq0,ee=new r.Pq0,et=new r.Pq0,ei=new r.Pq0,es=new r.Pq0,er=new r.Pq0,en=class extends F{get threeElement(){return this.element}get threeMesh(){return this.threeElement.children[0]}get video(){return"videoLayer"===this.type?this.threeMesh.material.map.image:null}constructor(e,t,i){super(e,t,i)}is3d(){return!0}createElement(){let e=new G({alpha:0}),t=new r.bdM(1,1),i=new r.eaF(t,e);i.userData={[z]:this},Object.defineProperty(i,"visible",{enumerable:!0,get:function(){return this.userData[z].config.visible},set:function(e){this.userData[z].config.visible=e}}),this.element=new r.YJl().add(i),"videoLayer"===this.type&&this.viewer.needsContinuousUpdate(!0)}destroy(){delete this.threeMesh.userData[z],"videoLayer"===this.type&&(this.video.pause(),this.viewer.needsContinuousUpdate(!1)),super.destroy()}render(){return this.viewer.renderer.isObjectVisible(this.threeMesh)?this.viewer.dataHelper.sphericalCoordsToViewerCoords(this.state.position):null}update(e){super.update(e);let t=this.threeMesh,i=t.parent,n=t.material;if(s.Wp.isExtendedPosition(this.config.position)){try{this.state.position=this.viewer.dataHelper.cleanPosition(this.config.position)}catch(e){throw new s.e6(`invalid marker ${this.id} position`,e)}if(!this.config.size)throw new s.e6(`missing marker ${this.id} size`);this.state.size=this.config.size,t.scale.set(this.config.size.width/100,this.config.size.height/100,1),t.position.set(t.scale.x*(.5-this.state.anchor.x),t.scale.y*(this.state.anchor.y-.5),0),t.rotation.set(0,0,0),this.viewer.dataHelper.sphericalCoordsToVector3(this.state.position,i.position),i.lookAt(0,i.position.y,0),t.rotateY(-this.config.rotation.yaw),t.rotateX(-this.config.rotation.pitch),t.rotateZ(-this.config.rotation.roll);let e=t.geometry.getAttribute("position");this.state.positions3D=[0,1,3,2].map(i=>{let s=new r.Pq0;return s.fromBufferAttribute(e,i),t.localToWorld(s)})}else{let e;if(this.config.position?.length!==4)throw new s.e6(`missing marker ${this.id} position`);try{e=this.config.position.map(e=>this.viewer.dataHelper.cleanPosition(e))}catch(e){throw new s.e6(`invalid marker ${this.id} position`,e)}let i=e.map(e=>this.viewer.dataHelper.sphericalCoordsToVector3(e)),r=Q(i);this.state.position=this.viewer.dataHelper.vector3ToSphericalCoords(r),this.state.positions3D=i;let o=t.geometry.getAttribute("position");[i[0],i[1],i[3],i[2]].forEach((e,t)=>{o.setX(t,e.x),o.setY(t,e.y),o.setZ(t,e.z)}),o.needsUpdate=!0,this.__setTextureWrap(n)}switch(this.type){case"videoLayer":if(this.definition!==this.config.videoLayer){n.map?.dis
1pose();let e=function({src:e,withCredentials:t,muted:i,autoplay:s}){let r=document.createElement("video");return r.crossOrigin=t?"use-credentials":"anonymous",r.loop=!0,r.playsInline=!0,r.autoplay=s,r.muted=i,r.preload="metadata",e instanceof MediaStream?r.srcObject=e:r.src=e,r}({src:this.config.videoLayer,withCredentials:this.viewer.config.withCredentials(this.config.videoLayer),muted:!0,autoplay:this.config.autoplay??!0});n.map=new r.Nv2(e),n.alpha=0,e.addEventListener("loadedmetadata",()=>{this.viewer&&(n.alpha=this.config.opacity,s.Wp.isExtendedPosition(this.config.position)||(t.material.userData[z]={width:e.videoWidth,height:e.videoHeight},this.__setTextureWrap(n)))},{once:!0}),e.autoplay&&e.play(),this.definition=this.config.videoLayer}else n.alpha=this.config.opacity;break;case"imageLayer":if(this.definition!==this.config.imageLayer){n.map?.dispose();let e=new r.gPd;n.map=e,n.alpha=0,this.viewer.textureLoader.loadImage(this.config.imageLayer).then(i=>{this.viewer&&(s.Wp.isExtendedPosition(this.config.position)||(t.material.userData[z]={width:i.width,height:i.height},this.__setTextureWrap(n)),e.image=i,e.anisotropy=4,e.needsUpdate=!0,n.alpha=this.config.opacity,this.viewer.needsUpdate())}),this.definition=this.config.imageLayer}else n.alpha=this.config.opacity}n.chromaKey=this.config.chromaKey,t.renderOrder=1e3+this.config.zIndex,t.geometry.boundingBox=null}__setTextureWrap(e){let t=e.userData[z];if(!t||!t.height||!t.width){e.repeat.set(1,1),e.offset.set(0,0);return}let i=this.config.position.map(e=>this.viewer.dataHelper.cleanPosition(e)),r=s.Wp.greatArcDistance([i[0].yaw,i[0].pitch],[i[1].yaw,i[1].pitch]),n=s.Wp.greatArcDistance([i[3].yaw,i[3].pitch],[i[2].yaw,i[2].pitch]),o=(r+n)/(s.Wp.greatArcDistance([i[1].yaw,i[1].pitch],[i[2].yaw,i[2].pitch])+s.Wp.greatArcDistance([i[0].yaw,i[0].pitch],[i[3].yaw,i[3].pitch])),a=t.width/t.height,l=0,h=0;o<a?l=a-o:h=1/a-1/o,e.repeat.set(1-l,1-h),e.offset.set(l/2,h/2)}},eo=class extends K{constructor(e,t,i){super(e,t,i),this.viewportIntersection=!1}get threeElement(){return this.object}isCss3d(){return!0}createElement(){this.element=document.createElement("div"),this.object=new V(this.element),this.object.userData={[z]:this},Object.defineProperty(this.object,"visible",{enumerable:!0,get:function(){return this.userData[z].config.visible},set:function(e){this.userData[z].config.visible=e}}),this.afterCreateElement()}destroy(){delete this.object.userData[z],delete this.object,super.destroy()}render({viewerPosition:e,zoomLevel:t}){let i=this.domElement;if(this.state.size={width:i.offsetWidth,height:i.offsetHeight},!(this.state.positions3D[0].dot(this.viewer.state.direction)>0&&this.viewportIntersection))return null;{let i=this.viewer.dataHelper.sphericalCoordsToViewerCoords(this.state.position);return this.config.elementLayer.updateMarker?.({marker:this,position:i,viewerPosition:e,zoomLevel:t,viewerSize:this.viewer.state.size}),i}}update(e){if(super.update(e),!s.Wp.isExtendedPosition(this.config.position))throw new s.e6(`missing marker ${this.id} position`);try{this.state.position=this.viewer.dataHelper.cleanPosition(this.config.position)}catch(e){throw new s.e6(`invalid marker ${this.id} position`,e)}this.state.positions3D=[this.viewer.dataHelper.sphericalCoordsToVector3(this.state.position)];let t=this.threeElement,i=this.domElement;i.classList.add("psv-marker--css3d"),i.childNodes.forEach(e=>e.remove()),i.appendChild(this.config.elementLayer),this.config.elementLayer.style.display="block",t.position.copy(this.state.positions3D[0]).multiplyScalar(100),t.lookAt(0,100*this.state.positions3D[0].y,0),t.rotateY(-this.config.rotation.yaw),t.rotateX(-this.config.rotation.pitch),t.rotateZ(-this.config.rotation.roll)}},ea=class extends X{constructor(e,t,i){super(e,t,i)}isNormal(){return!0}createElement(){this.element=document.createElement("div"),this.afterCreateElement()}render(e){let t=super.render(e);return t&&"element"===this.type&&this.config.element.updateMarker?.({marker:this,position:t,viewerPosition:e.viewerPosition,zoomLevel:e.zoomLevel,viewerSize:this.viewer.state.size}),t}update(e){super.update(e);let t=this.domElement;if(this.config.image&&!this.config.size)throw new s.e6(`missing marker ${this.id} size`);switch(this.config.size?(this.needsUpdateSize=!1,this.state.size=this.config.size,t.style.width=this.config.size.width+"px",t.style.height=this.config.size.height+"px"):this.needsUpdateSize=!0,this.type){case"image":this.definition=this.config.image,t.style.backgroundImage=`url("${this.config.image}")`;break;case"html":this.definition=this.config.html,t.innerHTML=this.config.html;break;case"element":this.definition!==this.config.element&&(this.definition=this.config.element,t.childNodes.forEac
1h(e=>e.remove()),t.appendChild(this.config.element),this.config.element.style.display="block")}}},el=class extends K{constructor(e,t,i){super(e,t,i)}createElement(){this.element=document.createElementNS(T,"path"),this.element[z]=this}isPoly(){return!0}get isPixels(){return"polygonPixels"===this.type||"polylinePixels"===this.type}get isPolygon(){return"polygon"===this.type||"polygonPixels"===this.type}get isPolyline(){return"polyline"===this.type||"polylinePixels"===this.type}get coords(){return this.definition}render(){let e=this.__getAllPolyPositions();if(!(e[0].length>(this.isPolygon?2:1)))return null;{let t=this.viewer.dataHelper.sphericalCoordsToViewerCoords(this.state.position),i=e.filter(e=>e.length>0).map(e=>{let i="M";return i+=e.map(e=>`${e.x-t.x},${e.y-t.y}`).join("L"),this.isPolygon&&(i+="Z"),i}).join(" ");return this.domElement.setAttributeNS(null,"d",i),this.domElement.setAttributeNS(null,"transform",`translate(${t.x} ${t.y})`),t}}update(e){super.update(e);let t=this.domElement;t.classList.add("psv-marker--poly"),this.config.svgStyle?(Object.entries(this.config.svgStyle).forEach(([e,i])=>{t.setAttributeNS(null,s.Wp.dasherize(e),i)}),this.isPolyline&&!this.config.svgStyle.fill&&t.setAttributeNS(null,"fill","none")):this.isPolygon?t.setAttributeNS(null,"fill","rgba(0,0,0,0.5)"):this.isPolyline&&(t.setAttributeNS(null,"fill","none"),t.setAttributeNS(null,"stroke","rgb(0,0,0)"));try{let e=this.config[this.type];if(!Array.isArray(e[0])&&"object"!=typeof e[0])for(let t=0;t<e.length;t++)e.splice(t,2,[e[t],e[t+1]]);if(Array.isArray(e[0][0])||"object"==typeof e[0][0]||(e=[e]),this.isPolyline&&e.length>1)throw new s.e6("polylines cannot have holes");this.isPixels?this.definition=e.map(e=>e.map(e=>{let t;return[(t=s.Wp.isExtendedPosition(e)?this.viewer.dataHelper.cleanPosition(e):this.viewer.dataHelper.textureCoordsToSphericalCoords({textureX:e[0],textureY:e[1]})).yaw,t.pitch]})):this.definition=e.map(e=>e.map(e=>{let t;return[(t=s.Wp.isExtendedPosition(e)?this.viewer.dataHelper.cleanPosition(e):this.viewer.dataHelper.cleanPosition({yaw:e[0],pitch:e[1]})).yaw,t.pitch]}))}catch(e){throw new s.e6(`invalid marker ${this.id} position`,e)}if(this.positions3D=this.coords.map(e=>e.map(e=>this.viewer.dataHelper.sphericalCoordsToVector3({yaw:e[0],pitch:e[1]}))),this.isPolygon){let e=Q(this.positions3D[0]);this.state.position=this.viewer.dataHelper.vector3ToSphericalCoords(e)}else{let e=function(e){let t=function(e){let t=[e[0]],i=0;for(let s=1;s<e.length;s++){let r=e[s-1][0]-e[s][0];r>Math.PI?i+=1:r<-Math.PI&&(i-=1),t.push([e[s][0]+2*i*Math.PI,e[s][1]])}return t}(e),i=0,r=[];for(let e=0;e<t.length-1;e++){let n=s.Wp.greatArcDistance(t[e],t[e+1])*s.aH.SPHERE_RADIUS;r.push(n),i+=n}let n=0;for(let e=0;e<t.length-1;e++){if(n+r[e]>i/2){let o=(i/2-n)/r[e];return function(e,t,i){let[r,n]=e,[o,a]=t,l=s.Wp.greatArcDistance(e,t),h=Math.sin((1-i)*l)/Math.sin(l),c=Math.sin(i*l)/Math.sin(l),d=h*Math.cos(n)*Math.cos(r)+c*Math.cos(a)*Math.cos(o),p=h*Math.cos(n)*Math.sin(r)+c*Math.cos(a)*Math.sin(o);return[Math.atan2(p,d),Math.atan2(h*Math.sin(n)+c*Math.sin(a),Math.sqrt(d*d+p*p))]}(t[e],t[e+1],o)}n+=r[e]}return t[Math.round(t.length/2)]}(this.coords[0]);this.state.position={yaw:e[0],pitch:e[1]}}this.state.positions3D=this.positions3D[0]}__getAllPolyPositions(){return this.positions3D.map(e=>this.__getPolyPositions(e))}__getPolyPositions(e){let t=e.length,i=e.map(e=>({vector:e,visible:e.dot(this.viewer.state.direction)>0})),n=[];return i.forEach((e,s)=>{e.visible||[0===s?i[t-1]:i[s-1],s===t-1?i[0]:i[s+1]].forEach(t=>{t.visible&&n.push({visible:t.vector,invisible:e.vector,index:s})})}),n.reverse().forEach(e=>{i.splice(e.index,0,{vector:function(e,t,i){J.copy(i).normalize(),ee.crossVectors(e,t).normalize(),et.crossVectors(ee,e).normalize(),ei.copy(e).multiplyScalar(-J.dot(et)),es.copy(et).multiplyScalar(J.dot(e));let n=new r.Pq0().addVectors(ei,es).normalize();return er.crossVectors(n,J),n.applyAxisAngle(er,.01).multiplyScalar(s.aH.SPHERE_RADIUS)}(e.visible,e.invisible,this.viewer.state.direction),visible:!0})}),i.filter(e=>e.visible).map(e=>this.viewer.dataHelper.vector3ToViewerCoords(e.vector))}},eh=class extends X{get svgElement(){return this.domElement.firstElementChild}constructor(e,t,i){super(e,t,i)}isSvg(){return!0}
1createElement(){let e="square"===this.type?"rect":this.type,t=document.createElementNS(T,e);this.element=document.createElementNS(T,"svg"),this.element.appendChild(t),this.afterCreateElement()}update(e){super.update(e);let t=this.svgElement;switch(this.needsUpdateSize=!0,this.type){case"square":this.definition={x:0,y:0,width:this.config.square,height:this.config.square};break;case"rect":Array.isArray(this.config.rect)?this.definition={x:0,y:0,width:this.config.rect[0],height:this.config.rect[1]}:this.definition={x:0,y:0,width:this.config.rect.width,height:this.config.rect.height};break;case"circle":this.definition={cx:this.config.circle,cy:this.config.circle,r:this.config.circle};break;case"ellipse":Array.isArray(this.config.ellipse)?this.definition={cx:this.config.ellipse[0],cy:this.config.ellipse[1],rx:this.config.ellipse[0],ry:this.config.ellipse[1]}:this.definition={cx:this.config.ellipse.rx,cy:this.config.ellipse.ry,rx:this.config.ellipse.rx,ry:this.config.ellipse.ry};break;case"path":this.definition={d:this.config.path}}Object.entries(this.definition).forEach(([e,i])=>{t.setAttributeNS(null,e,i)}),this.config.svgStyle?Object.entries(this.config.svgStyle).forEach(([e,i])=>{t.setAttributeNS(null,s.Wp.dasherize(e),i)}):t.setAttributeNS(null,"fill","rgba(0,0,0,0.5)")}},ec=s.Wp.getConfigParser({clickEventOnMarker:!1,gotoMarkerSpeed:"8rpm",markers:null,defaultHoverScale:null},{defaultHoverScale:e=>e?(!0===e&&(e=Z),"number"==typeof e&&(e={amount:e}),{...Z,...e}):null}),ed=class e extends s.TL{constructor(e,t){super(e,t),this.markers={},this.state={allVisible:!0,showAllTooltips:!1,currentMarker:null,hoveringMarker:null,needsReRender:!1,lastClientX:null,lastClientY:null},this.container=document.createElement("div"),this.container.className="psv-markers",this.viewer.container.appendChild(this.container),this.container.addEventListener("contextmenu",e=>e.preventDefault()),this.svgContainer=document.createElementNS(T,"svg"),this.svgContainer.setAttribute("class","psv-markers-svg-container"),this.container.appendChild(this.svgContainer),this.css3DContainer=new q(e),this.container.appendChild(this.css3DContainer.element),this.container.addEventListener("mouseenter",this,!0),this.container.addEventListener("mouseleave",this,!0),this.container.addEventListener("mousemove",this,!0)}static withConfig(t){return[e,t]}init(){super.init(),s.Wp.checkStylesheet(this.viewer.container,"markers-plugin"),this.viewer.addEventListener(s.AZ.ClickEvent.type,this),this.viewer.addEventListener(s.AZ.DoubleClickEvent.type,this),this.viewer.addEventListener(s.AZ.RenderEvent.type,this),this.viewer.addEventListener(s.AZ.ConfigChangedEvent.type,this),this.viewer.addEventListener(s.AZ.ObjectEnterEvent.type,this),this.viewer.addEventListener(s.AZ.ObjectHoverEvent.type,this),this.viewer.addEventListener(s.AZ.ObjectLeaveEvent.type,this),this.viewer.addEventListener(s.AZ.ReadyEvent.type,this,{once:!0})}destroy(){this.clearMarkers(!1),this.viewer.unobserveObjects(z),this.viewer.removeEventListener(s.AZ.ClickEvent.type,this),this.viewer.removeEventListener(s.AZ.DoubleClickEvent.type,this),this.viewer.removeEventListener(s.AZ.RenderEvent.type,this),this.viewer.removeEventListener(s.AZ.ObjectEnterEvent.type,this),this.viewer.removeEventListener(s.AZ.ObjectHoverEvent.type,this),this.viewer.removeEventListener(s.AZ.ObjectLeaveEvent.type,this),this.viewer.removeEventListener(s.AZ.ReadyEvent.type,this),this.css3DContainer.destroy(),this.viewer.container.removeChild(this.container),super.destroy()}handleEvent(e){switch(e.type){case s.AZ.ReadyEvent.type:this.config.markers&&(this.setMarkers(this.config.markers),delete this.config.markers);break;case s.AZ.RenderEvent.type:this.renderMarkers();break;case s.AZ.ClickEvent.type:this.__onClick(e,!1);break;case s.AZ.DoubleClickEvent.type:this.__onClick(e,!0);break;case s.AZ.ObjectEnterEvent.type:case s.AZ.ObjectLeaveEvent.type:case s.AZ.ObjectHoverEvent.type:if(e.userDataKey===z){let t=e.originalEvent,i=e.object.userData[z];switch(e.type){case s.AZ.ObjectEnterEvent.type:i.config.style?.cursor?this.viewer.setCursor(i.config.style.cursor):(i.config.tooltip||i.config.content)&&this.viewer.setCursor("pointer"),this.__onEnterMarker(t,i);break;case s.AZ.ObjectLeaveEvent.type:this.viewer.setCursor(null),this.__onLeaveMarker(i);break;case s.AZ.ObjectHoverEvent.type:this.__onHoverMarker(t,i)}}break;case"mouseenter":{let t=this.__getTargetMarker(s.Wp.getEventTarget(e));this.__onEnterMarker(e,t);break}case"mouseleave":{let t=this.__getTargetMarker(s.Wp.getEventTarget(e));this.__onLeaveMarker(t);break}case"mousemove":{let t=this.__getTargetMarker(s.Wp.getEventTarget(e),!0);this.__onHoverMarker(e,t)}}}toggleAllMarkers(){this.state.allVisible?this.hideAllMarkers():this.showAllMarkers()}showAllMarkers(){this.state.allVisible=!0,Object.values(this.markers).forEac
1h(e=>{e.config.visible=!0}),this.renderMarkers(),this.dispatchEvent(new P)}hideAllMarkers(){this.state.allVisible=!1,Object.values(this.markers).forEach(e=>{e.config.visible=!1}),this.renderMarkers(),this.dispatchEvent(new b)}toggleAllTooltips(){this.state.showAllTooltips?this.hideAllTooltips():this.showAllTooltips()}showAllTooltips(){this.state.showAllTooltips=!0,Object.values(this.markers).forEach(e=>{e.state.staticTooltip=!0,e.showTooltip()})}hideAllTooltips(){this.state.showAllTooltips=!1,Object.values(this.markers).forEach(e=>{e.state.staticTooltip=!1,e.hideTooltip()})}getNbMarkers(){return Object.keys(this.markers).length}getMarkers(){return Object.values(this.markers)}addMarker(e,t=!0){if(this.markers[e.id])throw new s.e6(`marker "${e.id}" already exists`);let i=new(function(e){switch(Y(e,!1)){case"image":case"html":case"element":return ea;case"imageLayer":case"videoLayer":return en;case"elementLayer":return eo;case"polygon":case"polyline":case"polygonPixels":case"polylinePixels":return el;case"square":case"rect":case"circle":case"ellipse":case"path":return eh;default:throw new s.e6("invalid marker type")}}(e))(this.viewer,this,e);i.isPoly()?this.svgContainer.appendChild(i.domElement):i.isCss3d()?this.css3DContainer.addObject(i):i.is3d()?this.viewer.renderer.addObject(i.threeElement):this.container.appendChild(i.domElement),this.markers[i.id]=i,this.state.showAllTooltips&&(i.state.staticTooltip=!0),t&&this.__afterChangeMarkers()}getMarker(e){let t="object"==typeof e?e.id:e;if(!this.markers[t])throw new s.e6(`cannot find marker "${t}"`);return this.markers[t]}getCurrentMarker(){return this.state.currentMarker}updateMarker(e,t=!0){let i=this.getMarker(e.id);i.update(e),t&&(this.__afterChangeMarkers(),(i===this.state.hoveringMarker&&i.config.tooltip?.trigger==="hover"||i.state.staticTooltip)&&i.showTooltip(this.state.lastClientX,this.state.lastClientY,!0))}removeMarker(e,t=!0){let i=this.getMarker(e);i.isPoly()?this.svgContainer.removeChild(i.domElement):i.isCss3d()?this.css3DContainer.removeObject(i):i.is3d()?this.viewer.renderer.removeObject(i.threeElement):this.container.removeChild(i.domElement),this.state.hoveringMarker===i&&(this.state.hoveringMarker=null),this.state.currentMarker===i&&(this.state.currentMarker=null),i.destroy(),delete this.markers[i.id],t&&this.__afterChangeMarkers()}removeMarkers(e,t=!0){e.forEach(e=>this.removeMarker(e,!1)),t&&this.__afterChangeMarkers()}setMarkers(e,t=!0){this.clearMarkers(!1),e?.forEach(e=>{this.addMarker(e,!1)}),t&&this.__afterChangeMarkers()}clearMarkers(e=!0){Object.keys(this.markers).forEach(e=>{this.removeMarker(e,!1)}),e&&this.__afterChangeMarkers()}gotoMarker(e,t=this.config.gotoMarkerSpeed){let i=this.getMarker(e);return t?this.viewer.animate({...i.state.position,zoom:i.config.zoomLvl,speed:t}).then(()=>{this.dispatchEvent(new c(i))}):(this.viewer.rotate(i.state.position),s.Wp.isNil(i.config.zoomLvl)||this.viewer.zoom(i.config.zoomLvl),this.dispatchEvent(new c(i)),Promise.resolve())}hideMarker(e){this.toggleMarker(e,!1)}showMarker(e){this.toggleMarker(e,!0)}showMarkerTooltip(e){let t=this.getMarker(e);t.state.staticTooltip=!0,t.showTooltip()}hideMarkerTooltip(e){let t=this.getMarker(e);t.state.staticTooltip=!1,t.hideTooltip()}toggleMarker(e,t){let i=this.getMarker(e);i.config.visible=s.Wp.isNil(t)?!i.config.visible:t,this.renderMarkers()}showMarkerPanel(e){let t=this.getMarker(e);t.config.content?this.viewer.panel.show({id:W,content:t.config.content}):this.hideMarkerPanel()}hideMarkerPanel(){this.viewer.panel.hide(W)}toggleMarkersList(){this.viewer.panel.isVisible(j)?this.hideMarkersList():this.showMarkersList()}showMarkersList(){let e,t,i=[];Object.values(this.markers).forEach(e=>{e.config.visible&&!e.config.hideList&&i.push(e)});let r=new x(i);this.dispatchEvent(r),i=r.markers,this.viewer.panel.show({id:j,content:(e=i,t=this.viewer.config.lang[C.id],`
2<div class="psv-panel-menu psv-panel-menu--stripped">
3    <h1 class="psv-panel-menu-title">${S} ${t}</h1>
4    <ul class="psv-panel-menu-list">
5    ${e.map(e=>`
6        <li data-${R}="${e.id}" class="psv-panel-menu-item" tabindex="0">
7          ${"image"===e.type?`<span class="psv-panel-menu-item-icon"><img src="${e.definition}"/></span>`:""}
8          <span class="psv-panel-menu-item-label">${e.getListContent()}</span>
9        </li>
10    `).join("")}
11    </ul>
12</div>
13`),noMargin:!0,clickHandler:e=>{let t=s.Wp.getClosest(e,".psv-panel-menu-item"),i=t?t.dataset[z]:void 0;if(i){let e=this.getMarker(i);this.dispatchEvent(new y(e)),this.gotoMarker(e.id),this.hideMarkersList()}}})}hideMarkersList(){this.viewer.panel.hide(j)}renderMarkers(){if(this.state.needsReRender){this.state.needsReRender=!1;return}let e=this.viewer.getZoomLevel(),t=this.viewer.getPosition(),i=this.state.hoveringMarker;Object.values(this.markers).forEach(r=>{let n=r.config.visible,o=!1,a=null;n&&(n=!!(a=r.render({viewerPosition:t,zoomLevel:e,hoveringMarker:i}))),o=r.state.visible!==n,r.state.visible=n,r.state.position2D=a,r.domElement&&s.Wp.toggleClass(r.domElement,"psv-marker--visible",n),n?r.state.staticTooltip?r.showTooltip():r!==this.state.hoveringMarker&&r.hideTooltip():r.hideTooltip(),o&&(this.dispatchEvent(new l(r,n)),(r.is3d()||r.isCss3d())&&(this.state.needsReRender=!0))}),this.state.needsReRender&&this.viewer.needsUpdate()}__getTargetMarker(e,t=!1){if(e instanceof Node){let i=t?s.Wp.getClosest(e,".psv-marker"):e;return i?i[z]:void 0}return Array.isArray(e)?e.map(e=>e.userData[z]).filter(e=>!!e).sort((e,t)=>t.config.zIndex-e.config.zIndex)[0]:null}__onEnterMarker(e,t){t&&(this.state.hoveringMarker=t,this.state.lastClientX=e.clientX,this.state.lastClientY=e.clientY,this.dispatchEvent(new u(t)),t instanceof X&&t.applyScale({zoomLevel:this.viewer.getZoomLevel(),viewerPosition:this.viewer.getPosition(),mouseover:!0}),t.state.staticTooltip||t.config.tooltip?.trigger!=="hover"||t.showTooltip(e.clientX,e.clientY))}__onLeaveMarker(e){e&&(this.dispatchEvent(new p(e)),e instanceof X&&e.applyScale({zoomLevel:this.viewer.getZoomLevel(),viewerPosition:this.viewer.getPosition(),mouseover:!1}),this.state.hoveringMarker=null,e.state.staticTooltip||e.config.tooltip?.trigger!=="hover"?e.state.staticTooltip&&e.showTooltip():e.hideTooltip())}__onHoverMarker(e,t){t&&(this.state.lastClientX=e.clientX,this.state.lastClientY=e.clientY,(t.isPoly()||t.is3d()||t.isCss3d())&&t.config.tooltip?.trigger==="hover"&&t.showTooltip(e.clientX,e.clientY))}__onClick(e,t){let i=this.__getTargetMarker(e.data.objects),s=this.__getTargetMarker(e.data.target,!0)||i;this.state.currentMarker&&this.state.currentMarker!==s&&(this.dispatchEvent(new E(this.state.currentMarker)),this.viewer.panel.hide(W),this.state.showAllTooltips||this.state.currentMarker.config.tooltip?.trigger!=="click"||this.hideMarkerTooltip(this.state.currentMarker.id),this.state.currentMarker=null),s&&(this.state.currentMarker=s,this.dispatchEvent(new m(s,t,e.data.rightclick)),this.config.clickEventOnMarker?e.data.marker=s:e.stopImmediatePropagation(),this.markers[s.id]&&!e.data.rightclick&&(s.config.tooltip?.trigger==="click"?s.tooltip?this.hideMarkerTooltip(s.id):this.showMarkerTooltip(s.id):this.showMarkerPanel(s.id)))}__afterChangeMarkers(){this.__refreshUi(),this.__checkObjectsObserver(),this.viewer.needsUpdate(),this.dispatchEvent(new _(this.getMarkers()))}__refreshUi(){let e=Object.values(this.markers).filter(e=>!e.config.hideList).length;0===e?(this.viewer.panel.hide(W),this.viewer.panel.hide(j)):this.viewer.panel.isVisible(j)?this.showMarkersList():this.viewer.panel.isVisible(W)&&(this.state.currentMarker?this.showMarkerPanel(this.state.currentMarker.id):this.viewer.panel.hide()),this.viewer.navbar.getButton(C.id,!1)?.toggle(e>0),this.viewer.navbar.getButton(D.id,!1)?.toggle(e>0)}__checkObjectsObserver(){Object.values(this.markers).some(e=>e.is3d())?this.viewer.observeObjects(z):this.viewer.unobserveObjects(z)}};ed.id="markers",ed.VERSION="5.14.1",ed.configParser=ec,ed.readonlyOptions=["markers"];var ep=ed;s.zY.lang[C.id]="Markers",s.zY.lang[D.id]="Markers list",(0,s.S)(C,"caption:left"),(0,s.S)(D,"caption:left")},65940:(e,t,i)=>{"use strict";i.d(t,{h:()=>M});var s=i(12690),r=i(85339),n=Object.defineProperty;((e,t)=>{for(var i in t)n(e,i,{get:t[i],enumerable:!0})})({},{BufferEvent:()=>v,PlayPauseEvent:()=>a,ProgressEvent:()=>d,VolumeChangeEvent:()=>h});var o=class e extends s.rx{constructor(t){super(e.type),this.playing=t}};o.type="play-pause";var a=o,l=class e extends s.rx{constructor(t){super(e.type),this.volume=t}};l.type="volume-change";var h=l,c=class e extends s.rx{constructor(t,i,s){super(e.type),this.time=t,this.duration=i,this.progress=s}};c.type="progress";var d=c,p=class e extends s.rx{constructor(t){super(e.type),this.maxBuffer=t}};p.type="buffer";var v=p,u='<svg viewBox="76 5 550 550" xmlns="http://www.w3.org/2000/svg">
13<path fill="currentcolor" d="M351.1 5.6A274.1 274.1 0 0 0 76.7 280a274.1 274.1 0 0 0 274.4 274.4A274.1 274.1 0 0 0 625.5 280 274.1 274.1 0 0 0 351.1 5.6zm146.7 282.8-219 134.4c-6.6 4-15.6-.6-15.6-8.4V145.6c0-7.8 9-12.9 15.7-8.4l219 134.4a10 10 0 0 1 0 16.8z"/></svg>',g=class extends s.Np{constructor(e){super(e,{className:"psv-video-play-button",hoverScale:!0,collapsable:!1,tabbable:!0,icon:u,iconActive:'<svg viewBox="80 10 540 540" xmlns="http://www.w3.org/2000/svg"><path d="M80.58 279.67c0-148.76 120.33-269.09 269.09-269.09s269.75 120.33 269.75 269.09-121 269.75-269.75 269.75-269.1-120.99-269.1-269.75zm175.87 105.12V175.2c0-9.26 7.27-15.87 15.86-15.87h39.01c8.6 0 15.87 6.62 15.87 15.87v209.59c0 8.6-7.27 15.87-15.87 15.87h-39c-8.6 0-15.87-7.28-15.87-15.87zm116.36 0V175.2c0-9.26 7.27-15.87 15.86-15.87h38.35c9.26 0 15.87 6.62 15.87 15.87v209.59c0 8.6-6.61 15.87-15.87 15.87h-38.34c-8.6 0-15.87-7.28-15.87-15.87z" fill-rule="evenodd" fill="currentcolor"/></svg>'}),this.plugin=this.viewer.getPlugin("video"),this.plugin?.addEventListener(a.type,this)}destroy(){this.plugin?.removeEventListener(a.type,this),super.destroy()}isSupported(){return!!this.plugin}handleEvent(e){e instanceof a&&this.toggleActive(e.playing)}onClick(){this.plugin.playPause()}};function m(e){let t=Math.round(e%60),i=Math.round(e-t)/60;return`${i}:${("0"+t).slice(-2)}`}g.id="videoPlay",g.groupId="video";var f=class extends s.Np{constructor(e){super(e,{className:"psv-caption psv-video-time",hoverScale:!1,collapsable:!1,tabbable:!1}),this.contentElt=document.createElement("div"),this.contentElt.className="psv-caption-content",this.container.appendChild(this.contentElt),this.plugin=this.viewer.getPlugin("video"),this.plugin&&(this.viewer.addEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.addEventListener(d.type,this))}destroy(){this.plugin&&(this.viewer.removeEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.removeEventListener(d.type,this)),delete this.plugin,super.destroy()}handleEvent(e){switch(e.type){case s.AZ.PanoramaLoadedEvent.type:case d.type:{let e=`<strong>${m(this.plugin.getTime())}</strong>`;isFinite(this.plugin.getDuration())&&(e+=` / ${m(this.plugin.getDuration())}`),this.contentElt.innerHTML=e}}}onClick(){}};f.id="videoTime",f.groupId="video";var y=class extends s.Np{constructor(e){super(e,{className:"psv-video-volume-button",hoverScale:!0,collapsable:!1,tabbable:!0,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="17 16 71 71"><path fill="currentColor" d="M20.19 61.66H32.9c.54 0 1.07.16 1.52.47L51.02 73.5a2.7 2.7 0 0 0 4.22-2.23V28.74a2.7 2.7 0 0 0-4.22-2.23L34.43 37.87c-.45.3-.98.47-1.52.47H20.19a2.7 2.7 0 0 0-2.7 2.7v17.92a2.7 2.7 0 0 0 2.7 2.7z"/><path id="lvl0" fill="currentColor" d="M63.802 58.834c.39.39.902.586 1.414.586s1.023-.195 1.414-.586l7.234-7.233 7.234 7.233c.39.39.902.586 1.414.586s1.023-.195 1.414-.586a2 2 0 0 0 0-2.828l-7.234-7.234 7.234-7.233a2 2 0 1 0-2.828-2.828l-7.234 7.233-7.234-7.233a2 2 0 1 0-2.828 2.828l7.234 7.233-7.234 7.234a2 2 0 0 0 0 2.828z"/><path id="lvl1" fill="currentColor" d="M59.573 59.65c.39.394.904.59 1.418.59.51 0 1.02-.194 1.41-.582A13.53 13.53 0 0 0 66.411 50a13.56 13.56 0 0 0-3.996-9.654 2 2 0 0 0-2.828 2.829A9.586 9.586 0 0 1 62.41 50a9.56 9.56 0 0 1-2.83 6.823 2 2 0 0 0-.008 2.828z"/><path id="lvl2" fill="currentColor" d="M72.501 50c0 5.267-2.055 10.227-5.786 13.967a2 2 0 0 0 2.832 2.825C74.03 62.297 76.5 56.333 76.5 50s-2.47-12.297-6.954-16.792a2 2 0 0 0-2.832 2.825c3.731 3.74 5.786 8.7 5.786 13.967z"/><path id="lvl3" fill="currentColor" d="M83.001 50c0 8.084-3.147 15.679-8.863 21.384a2 2 0 0 0 2.826 2.831C83.437 67.754 87 59.155 87 50c0-9.154-3.564-17.753-10.037-24.215a2 2 0 0 0-2.826 2.83C79.854 34.323 83 41.917 83 50z"/>\x3c!--Created by Rudez Studio from the Noun Project--\x3e</svg>'}),this.plugin=this.viewer.getPlugin("video"),this.plugin&&(this.rangeContainer=document.createElement("div"),this.rangeContainer.className="psv-video-volume__container",this.container.appendChild(this.rangeContainer),this.range=document.createElement("div"),this.range.className="psv-video-volume__range",this.rangeContainer.appendChild(this.range),this.trackElt=document.createElement("div"),this.trackElt.className="psv-video-volume__track",this.range.appendChild(this.trackElt),this.progressElt=
13document.createElement("div"),this.progressElt.className="psv-video-volume__progress",this.range.appendChild(this.progressElt),this.handleElt=document.createElement("div"),this.handleElt.className="psv-video-volume__handle",this.range.appendChild(this.handleElt),this.slider=new s.Wp.Slider(this.range,s.Wp.SliderDirection.VERTICAL,this.__onSliderUpdate.bind(this)),this.viewer.addEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.addEventListener(a.type,this),this.plugin.addEventListener(h.type,this),this.__setVolume(0))}destroy(){this.plugin&&(this.viewer.removeEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.removeEventListener(a.type,this),this.plugin.removeEventListener(h.type,this)),this.slider.destroy(),super.destroy()}isSupported(){return!!this.plugin}handleEvent(e){switch(e.type){case s.AZ.PanoramaLoadedEvent.type:case a.type:case h.type:this.__setVolume(this.plugin.getVolume())}}onClick(){this.plugin.setMute()}__onSliderUpdate(e){e.mousedown&&this.plugin.setVolume(e.value)}__setVolume(e){let t;t=0===e?0:e<.333?1:e<.666?2:3,s.Wp.toggleClass(this.container,"psv-video-volume-button--0",0===t),s.Wp.toggleClass(this.container,"psv-video-volume-button--1",1===t),s.Wp.toggleClass(this.container,"psv-video-volume-button--2",2===t),s.Wp.toggleClass(this.container,"psv-video-volume-button--3",3===t),this.handleElt.style.bottom=`${100*e}%`,this.progressElt.style.height=`${100*e}%`}};y.id="videoVolume",y.groupId="video";var w=class extends s.uj{constructor(e,t){super(t,{className:"psv-video-overlay"}),this.plugin=e,this.button=document.createElement("button"),this.button.className=`psv-video-bigbutton ${s.aH.CAPTURE_EVENTS_CLASS}`,this.button.innerHTML=u,this.container.appendChild(this.button),this.viewer.addEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.addEventListener(a.type,this),this.button.addEventListener("click",this)}destroy(){this.viewer.removeEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.removeEventListener(a.type,this),super.destroy()}handleEvent(e){switch(e.type){case s.AZ.PanoramaLoadedEvent.type:case a.type:s.Wp.toggleClass(this.button,"psv-video-bigbutton--pause",!this.plugin.isPlaying());break;case"click":this.plugin.playPause()}}},E=class extends s.uj{constructor(e,t){super(t,{className:"psv-video-progressbar"}),this.plugin=e,this.state={visible:!0,req:null,tooltip:null},this.bufferElt=document.createElement("div"),this.bufferElt.className="psv-video-progressbar__buffer",this.container.appendChild(this.bufferElt),this.progressElt=document.createElement("div"),this.progressElt.className="psv-video-progressbar__progress",this.container.appendChild(this.progressElt),this.handleElt=document.createElement("div"),this.handleElt.className="psv-video-progressbar__handle",this.container.appendChild(this.handleElt),this.slider=new s.Wp.Slider(this.container,s.Wp.SliderDirection.HORIZONTAL,this.__onSliderUpdate.bind(this)),this.viewer.addEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.addEventListener(v.type,this),this.plugin.addEventListener(d.type,this),this.state.req=window.requestAnimationFrame(()=>this.__updateProgress()),this.hide()}destroy(){this.viewer.removeEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.plugin.removeEventListener(v.type,this),this.plugin.removeEventListener(d.type,this),this.slider.destroy(),this.state.tooltip?.hide(),window.cancelAnimationFrame(this.state.req),delete this.state.tooltip,super.destroy()}handleEvent(e){switch(e.type){case s.AZ.PanoramaLoadedEvent.type:case v.type:case d.type:this.bufferElt.style.width=`${100*this.plugin.getBufferProgress()}%`}}__updateProgress(){this.progressElt.style.width=`${100*this.plugin.getProgress()}%`,this.state.req=window.requestAnimationFrame(()=>this.__updateProgress())}__onSliderUpdate(e){if(e.mouseover){this.handleElt.style.display="block",this.handleElt.style.left=`${100*e.value}%`;let t=m(this.plugin.getDuration()*e.value);this.state.tooltip?this.state.tooltip.update(t,{top:e.cursor.clientY,left:e.cursor.clientX}):this.state.tooltip=this.viewer.createTooltip({top:e.cursor.clientY,left:e.cursor.clientX,content:t})}else this.handleElt.style.display="none",this.state.tooltip?.hide(),delete this.state.tooltip;e.click&&this.plugin.setProgress(e.value)}},k=s.Wp.getConfigParser({progressbar:!0,bigbutton:!0,keypoints:null}),b=class e extends s.TL{constructor(e,t){if(super(e,t),this.state={curve:null,start:null,end:null,waiting:!1,keypoints:null},!this.viewer.adapter.constructor.id.includes("video"))throw new s.e6("VideoPlugin can only be used with a video adapter.");this.config.progressbar&&(this.progressbar=new E(this,e)),this.config.bigbutton&&(this.overlay=new w(this,e))}static withConfig(t){return[e,t]}init(){super.init(),s.Wp.checkStylesheet(this.viewer.container,"video-plugin"),this.markers=this.viewer.getPlugin("markers"),this.autorotate=this.viewer.getPlugin("autorotate"),this.autorotate&&(this.autorotate.config.autostartDelay=0,this.autorotate.config.autostartOnIdle=!1),this.config.keypoints&&(this.setKeypoints(this.config.keypoints),delete this.config.keypoints),this.autorotate?.addEventListener("autorotate",this),this.viewer.addEventListener(s.AZ.BeforeRenderEvent.type,this),this.viewer.addEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.viewer.addEventListener(s.AZ.KeypressEvent.type,this)}destroy(){this.autorotate?.removeEventListener("autorotate",this),this.viewer.removeEventListener(s.AZ.BeforeRenderEvent.type,this),this.viewer.removeEventListener(s.AZ.PanoramaLoadedEvent.type,this),this.viewer.removeEventListener(s.AZ.KeypressEvent.type,this),delete this.progressbar,delete this.overlay,delete this.markers,super.destroy()}handleEvent(e){switch(e.type){case s.AZ.BeforeRenderEvent.type:this.__autorotate();break;case"autorotate":this.__configureAutorotate();break;case s.AZ.PanoramaLoadedEvent.type:this.__bindVideo(e.data),this.progressbar?.show();break;case s.AZ.KeypressEvent.type:this.__onKeyPress(e);break;case"play":this.state.waiting&&this.viewer.loader.showUndefined(),this.dispatchEvent(new a(!0));break;case"pause":this.state.waiting&&this.viewer.loader.hide(),this.dispatchEvent(new a(!1));break;case"progress":this.dispatchEvent(new v(this.getBufferProgress()));break;case"volumechange":this.dispatchEvent(new h(this.getVolume()));break;case"timeupdate":this.dispatchEvent(new d(this.getTime(),this.getDuration(),this.getProgress()));break;case"playing":this.state.waiting=!1,this.viewer.loader.hide();break;case"waiting":this.state.waiting=!0,this.viewer.loader.showUndefined()}}__bindVideo(e){this.video&&(this.video.removeEventListener("play",this),this.video.removeEventListener("pause",this),this.video.removeEventListener("progress",this),this.video.removeEventListener("volumechange",this),this.video.removeEventListener("timeupdate",this),this.video.removeEventListener("playing",this),this.video.removeEventListener("waiting",this)),this.video=e.texture.image,this.state.waiting=!1,this.video.addEventListener("play",this),this.video.addEventListener("pause",this),this.video.addEventListener("progress",this),this.video.addEventListener("volumechange",this),this.video.addEventListener("timeupdate",this),this.video.addEventListener("playing",this),this.video.addEventListener("waiting",this)}__onKeyPress(e){e.matches(s.aH.KEY_CODES.Space)&&(this.playPause(),e.preventDefault())}getDuration(){return this.video?.duration??0}getTime(){return this.video?.currentTime??0}getProgress(){return this.video?this.video.currentTime/this.video.duration:0}isPlaying(){return!!this.video&&!this.video.paused}getVolume(){return this.video?.muted?0:this.video?.volume??0}playPause(){this.video&&(this.video.paused?this.video.play():this.video.pause())}play(){this.video?.paused&&this.video.play()}pause(){this.video&&!this.video.paused&&this.video.pause()}setVolume(e){this.video&&(this.video.muted=!1,this.video.volume=r.cj9.clamp(e,0,1))}setMute(e){this.video&&(this.video.muted=void 0===e?!this.video.muted:e,this.video.muted||0!==this.video.volume||(this.video.volume=.1))}setTime(e){this.video&&(this.video.currentTime=e)}setProgress(e){this.video&&(this.video.currentTime=this.video.duration*e)}getBufferProgress(){if(!this.video)return 0;{let e=0,t=this.video.buffered;for(let i=0,s=t.length;i<s;i++)if(t.start(i)<=this.video.currentTime&&t.end(i)>=this.video.currentTime){e=t.end(i);break}return Math.max(this.video.currentTime,e)/this.video.duration}}setKeypoints(e){if(!this.autorotate)throw new s.e6("Video keypoints required the AutorotatePlugin");if(!e){this.state.keypoints=null,this.__configureAutorotate();return}if(e.length<2)throw new s.e6("At least two points are required");this.state.keypoints=s.Wp.clone(e),this.state.keypoints&&(this.state.keypoints.forEac
13h((e,t)=>{if(e.position)e.position=this.viewer.dataHelper.cleanPosition(e.position);else throw new s.e6(`Keypoint #${t} is missing marker or position`);if(s.Wp.isNil(e.time))throw new s.e6(`Keypoint #${t} is missing time`)}),this.state.keypoints.sort((e,t)=>e.time-t.time)),this.__configureAutorotate()}__configureAutorotate(){delete this.state.curve,delete this.state.start,delete this.state.end,this.autorotate.isEnabled()&&this.state.keypoints&&this.viewer.dynamics.position.stop()}__autorotate(){if(!this.autorotate?.isEnabled()||!this.state.keypoints)return;let e=this.getTime(),t=this.state;if((!t.curve||e<t.start.time||e>=t.end.time)&&this.__autorotateNext(e),t.start===t.end)this.viewer.rotate(t.start.position);else{let i=(e-t.start.time)/(t.end.time-t.start.time),s=t.curve.getPoint(1/3+i/3);this.viewer.dynamics.position.goto({yaw:s.x,pitch:s.y})}}__autorotateNext(e){let t=null,i=null,s=this.state.keypoints,n=s.length-1;e<s[0].time&&(t=0,i=0);for(let r=0;r<n;r++)if(e>=s[r].time&&e<s[r+1].time){t=r,i=r+1;break}e>=s[n].time&&(t=n,i=n);let o=[s[Math.max(0,t-1)].position,s[t].position,s[i].position,s[Math.min(n,i+1)].position],a=[new r.I9Y(o[0].yaw,o[0].pitch)],l=0;for(let e=1;e<=3;e++){let t=o[e-1].yaw-o[e].yaw;t>Math.PI?l+=1:t<-Math.PI&&(l-=1),0!==l&&1===e&&(a[0].x-=2*l*Math.PI,l=0),a.push(new r.I9Y(o[e].yaw+2*l*Math.PI,o[e].pitch))}this.state.curve=new r.xfg(a),this.state.start=s[t],this.state.end=s[i]}};b.id="video",b.VERSION="5.14.1",b.configParser=k,b.readonlyOptions=Object.keys(k.defaults);var M=b;s.zY.lang[g.id]="Play/Pause",s.zY.lang[y.id]="Volume",(0,s.S)(g),(0,s.S)(y),(0,s.S)(f),s.zY.navbar.unshift(g.groupId)},92911:()=>{}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.