gl-draw 0.14.3 → 0.14.4

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.
@@ -7,6 +7,7 @@ export type PickFunctionsItem = {
7
7
  baseObject: IBaseObject;
8
8
  mouseEvent: MouseEvent;
9
9
  intersectionIndex?: number;
10
+ sp?: () => void;
10
11
  }) => void;
11
12
  };
12
13
  export default class Pick {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var ft=Object.defineProperty,_t=Object.defineProperties;var gt=Object.getOwnPropertyDescriptors;var Me=Object.getOwnPropertySymbols;var vt=Object.prototype.hasOwnProperty,yt=Object.prototype.propertyIsEnumerable;var De=(l,e,t)=>e in l?ft(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,U=(l,e)=>{for(var t in e||(e={}))vt.call(e,t)&&De(l,t,e[t]);if(Me)for(var t of Me(e))yt.call(e,t)&&De(l,t,e[t]);return l},j=(l,e)=>_t(l,gt(e));var W=(l,e,t)=>new Promise((s,i)=>{var r=h=>{try{a(t.next(h))}catch(c){i(c)}},o=h=>{try{a(t.throw(h))}catch(c){i(c)}},a=h=>h.done?s(h.value):Promise.resolve(h.value).then(r,o);a((t=t.apply(l,e)).next())});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const F=require("three"),Ct=require("three/examples/jsm/misc/Timer"),Et=require("@tweenjs/tween.js"),Ot=require("deepmerge"),Tt=require("stats-gl"),Se=require("./isPlainObject.js"),Y=require("./index2.js"),xt=require("three/examples/jsm/helpers/RectAreaLightHelper"),wt=require("three/examples/jsm/helpers/ViewHelper"),bt=require("three/examples/jsm/controls/TransformControls"),Re=require("three/examples/jsm/postprocessing/EffectComposer"),Pt=require("three/examples/jsm/postprocessing/RenderPass"),Lt=require("three/examples/jsm/postprocessing/SSAOPass"),St=require("three/examples/jsm/postprocessing/Pass"),At=require("three/examples/jsm/postprocessing/OutputPass"),Mt=require("three/examples/jsm/postprocessing/ShaderPass"),Dt=require("three/examples/jsm/postprocessing/UnrealBloomPass");require("three/examples/jsm/renderers/CSS2DRenderer");require("three/examples/jsm/renderers/CSS3DRenderer");require("d3-geo");require("d3-geo-projection");require("three/examples/jsm/lights/RectAreaLightUniformsLib");require("three/examples/jsm/lines/LineSegments2");require("three/examples/jsm/lines/LineSegmentsGeometry");require("three/examples/jsm/lines/LineMaterial");require("three-bvh-csg");const Ue=require("three/examples/jsm/loaders/GLTFLoader"),Rt=require("three/examples/jsm/loaders/DRACOLoader"),Ut=require("three/examples/jsm/loaders/EXRLoader"),zt=require("three/examples/jsm/loaders/LottieLoader"),Le=require("esus-lite");function et(l){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const t in l)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(l,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>l[t]})}}return e.default=l,Object.freeze(e)}const O=et(F),Ce=et(Et),D={LEFT:1,RIGHT:2,MIDDLE:4},p=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768}),G={NONE:0,IN:1,OUT:-1};function Z(l){return l.isPerspectiveCamera}function B(l){return l.isOrthographicCamera}const K=Math.PI*2,ze=Math.PI/2,tt=1e-5,te=Math.PI/180;function I(l,e,t){return Math.max(e,Math.min(t,l))}function M(l,e=tt){return Math.abs(l)<e}function L(l,e,t=tt){return M(l-e,t)}function Fe(l,e){return Math.round(l/e)*e}function se(l){return isFinite(l)?l:l<0?-Number.MAX_VALUE:Number.MAX_VALUE}function ie(l){return Math.abs(l)<Number.MAX_VALUE?l:l*(1/0)}function he(l,e,t,s,i=1/0,r){s=Math.max(1e-4,s);const o=2/s,a=o*r,h=1/(1+a+.48*a*a+.235*a*a*a);let c=l-e;const f=e,d=i*s;c=I(c,-d,d),e=l-c;const C=(t.value+o*c)*r;t.value=(t.value-o*C)*h;let v=e+(c+C)*h;return f-l>0==v>f&&(v=f,t.value=(v-f)/r),v}function ke(l,e,t,s,i=1/0,r,o){s=Math.max(1e-4,s);const a=2/s,h=a*r,c=1/(1+h+.48*h*h+.235*h*h*h);let f=e.x,d=e.y,C=e.z,v=l.x-f,m=l.y-d,u=l.z-C;const _=f,n=d,g=C,E=i*s,y=E*E,w=v*v+m*m+u*u;if(w>y){const ye=Math.sqrt(w);v=v/ye*E,m=m/ye*E,u=u/ye*E}f=l.x-v,d=l.y-m,C=l.z-u;const T=(t.x+a*v)*r,S=(t.y+a*m)*r,R=(t.z+a*u)*r;t.x=(t.x-a*T)*c,t.y=(t.y-a*S)*c,t.z=(t.z-a*R)*c,o.x=f+(v+T)*c,o.y=d+(m+S)*c,o.z=C+(u+R)*c;const ae=_-l.x,le=n-l.y,dt=g-l.z,pt=o.x-_,mt=o.y-n,ut=o.z-g;return ae*pt+le*mt+dt*ut>0&&(o.x=_,o.y=n,o.z=g,t.x=(o.x-_)/r,t.y=(o.y-n)/r,t.z=(o.z-g)/r),o}function Ee(l,e){e.set(0,0),l.forEach(t=>{e.x+=t.clientX,e.y+=t.clientY}),e.x/=l.length,e.y/=l.length}function Oe(l,e){return B(l)?(console.warn(`${e} is not supported in OrthographicCamera`),!0):!1}class Ft{constructor(){this._listeners={}}addEventListener(e,t){const s=this._listeners;s[e]===void 0&&(s[e]=[]),s[e].indexOf(t)===-1&&s[e].push(t)}hasEventListener(e,t){const s=this._listeners;return s[e]!==void 0&&s[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners[e];if(i!==void 0){const r=i.indexOf(t);r!==-1&&i.splice(r,1)}}removeAllEventListeners(e){if(!e){this._listeners={};return}Array.isArray(this._listeners[e])&&(this._listeners[e].length=0)}dispatchEvent(e){const s=this._listeners[e.type];if(s!==void 0){e.target=this;const i=s.slice(0);for(let r=0,o=i.length;r<o;r++)i[r].call(this,e)}}}const ce=1/8,kt=/Mac/.test(navigator.platform);let x,Ie,de,Te,z,b,P,X,re,H,N,q,je,He,k,oe,$,Ne,xe,Ve,we,be,pe;class ee extends Ft{static install(e){x=e.THREE,Ie=Object.freeze(new x.Vector3(0,0,0)),de=Object.freeze(new x.Vector3(0,1,0)),Te=Object.freeze(new x.Vector3(0,0,1)),z=new x.Vector2,b=new x.Vector3,P=new x.Vector3,X=new x.Vector3,re=new x.Vector3,H=new x.Vector3,N=new x.Vector3,q=new x.Vector3,je=new x.Vector3,He=new x.Vector3,k=new x.Spherical,oe=new x.Spherical,$=new x.Box3,Ne=new x.Box3,xe=new x.Sphere,Ve=new x.Quaternion,we=new x.Quaternion,be=new x.Matrix4,pe=new x.Raycaster}static get ACTION(){return p}constructor(e,t){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=p.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._dragNeedsUpdate=!0,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=G.NONE,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new x.Vector3,this._focalOffsetVelocity=new x.Vector3,this._zoomVelocity={value:0},this._truckInternal=(n,g,E)=>{let y,w;if(Z(this._camera)){const T=b.copy(this._camera.position).sub(this._target),S=this._camera.getEffectiveFOV()*te,R=T.length()*Math.tan(S*.5);y=this.truckSpeed*n*R/this._elementRect.height,w=this.truckSpeed*g*R/this._elementRect.height}else if(B(this._camera)){const T=this._camera;y=n*(T.right-T.left)/T.zoom/this._elementRect.width,w=g*(T.top-T.bottom)/T.zoom/this._elementRect.height}else return;this.verticalDragToForward?(E?this.setFocalOffset(this._focalOffsetEnd.x+y,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(y,0,!0),this.forward(-w,!0)):E?this.setFocalOffset(this._focalOffsetEnd.x+y,this._focalOffsetEnd.y+w,this._focalOffsetEnd.z,!0):this.truck(y,w,!0)},this._rotateInternal=(n,g)=>{const E=K*this.azimuthRotateSpeed*n/this._elementRect.height,y=K*this.polarRotateSpeed*g/this._elementRect.height;this.rotate(E,y,!0)},this._dollyInternal=(n,g,E)=>{const y=Math.pow(.95,-n*this.dollySpeed),w=this._sphericalEnd.radius,T=this._sphericalEnd.radius*y,S=I(T,this.minDistance,this.maxDistance),R=S-T;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(T,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(R,!0),this._dollyToNoClamp(S,!0)):this._dollyToNoClamp(S,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?T:S)-w,this._dollyControlCoord.set(g,E)),this._lastDollyDirection=Math.sign(-n)},this._zoomInternal=(n,g,E)=>{const y=Math.pow(.95,n*this.dollySpeed),w=this._zoom,T=this._zoom*y;this.zoomTo(T,!0),this.dollyToCursor&&(this._changedZoom+=T-w,this._dollyControlCoord.set(g,E))},typeof x=="undefined"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=new x.Quaternion().setFromUnitVectors(this._camera.up,de),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=p.NONE,this._target=new x.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new x.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new x.Spherical().setFromVector3(b.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new x.Vector3,new x.Vector3,new x.Vector3,new x.Vector3],this._updateNearPlaneCorners(),this._boundary=new x.Box3(new x.Vector3(-1/0,-1/0,-1/0),new x.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new x.Vector2,this.mouseButtons={left:p.ROTATE,middle:p.DOLLY,right:p.TRUCK,wheel:Z(this._camera)?p.DOLLY:B(this._camera)?p.ZOOM:p.NONE},this.touches={one:p.TOUCH_ROTATE,two:Z(this._camera)?p.TOUCH_DOLLY_TRUCK:B(this._camera)?p.TOUCH_ZOOM_TRUCK:p.NONE,three:p.TOUCH_TRUCK};const s=new x.Vector2,i=new x.Vector2,r=new x.Vector2,o=n=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const y=this._domElement.getBoundingClientRect(),w=(n.clientX-y.left)/(y.right-y.left),T=(n.clientY-y.top)/(y.bottom-y.top);if(w<this._interactiveArea.left||w>this._interactiveArea.right||T<this._interactiveArea.top||T>this._interactiveArea.bottom)return}const g=n.pointerType!=="mouse"?null:(n.buttons&D.LEFT)===D.LEFT?D.LEFT:(n.buttons&D.MIDDLE)===D.MIDDLE?D.MIDDLE:(n.buttons&D.RIGHT)===D.RIGHT?D.RIGHT:null;if(g!==null){const y=this._findPointerByMouseButton(g);y&&this._disposePointer(y)}if((n.buttons&D.LEFT)===D.LEFT&&this._lockedPointer)return;const E={pointerId:n.pointerId,clientX:n.clientX,clientY:n.clientY,deltaX:0,deltaY:0,mouseButton:g};this._activePointers.push(E),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),this._isDragging=!0,C(n)},a=n=>{n.cancelable&&n.preventDefault();const g=n.pointerId,E=this._lockedPointer||this._findPointerById(g);if(E){if(E.clientX=n.clientX,E.clientY=n.clientY,E.deltaX=n.movementX,E.deltaY=n.movementY,this._state=0,n.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else(!this._isDragging&&this._lockedPointer||this._isDragging&&(n.buttons&D.LEFT)===D.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(n.buttons&D.MIDDLE)===D.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(n.buttons&D.RIGHT)===D.RIGHT&&(this._state=this._state|this.mouseButtons.right);v()}},h=n=>{const g=this._findPointerById(n.pointerId);if(!(g&&g===this._lockedPointer)){if(g&&this._disposePointer(g),n.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=p.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=p.NONE;m()}};let c=-1;const f=n=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===p.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const T=this._domElement.getBoundingClientRect(),S=(n.clientX-T.left)/(T.right-T.left),R=(n.clientY-T.top)/(T.bottom-T.top);if(S<this._interactiveArea.left||S>this._interactiveArea.right||R<this._interactiveArea.top||R>this._interactiveArea.bottom)return}if(n.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===p.ROTATE||this.mouseButtons.wheel===p.TRUCK){const T=performance.now();c-T<1e3&&this._getClientRect(this._elementRect),c=T}const g=kt?-1:-3,E=n.deltaMode===1?n.deltaY/g:n.deltaY/(g*10),y=this.dollyToCursor?(n.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,w=this.dollyToCursor?(n.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case p.ROTATE:{this._rotateInternal(n.deltaX,n.deltaY),this._isUserControllingRotate=!0;break}case p.TRUCK:{this._truckInternal(n.deltaX,n.deltaY,!1),this._isUserControllingTruck=!0;break}case p.OFFSET:{this._truckInternal(n.deltaX,n.deltaY,!0),this._isUserControllingOffset=!0;break}case p.DOLLY:{this._dollyInternal(-E,y,w),this._isUserControllingDolly=!0;break}case p.ZOOM:{this._zoomInternal(-E,y,w),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},d=n=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===ee.ACTION.NONE){const g=n instanceof PointerEvent?n.pointerId:0,E=this._findPointerById(g);E&&this._disposePointer(E),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h);return}n.preventDefault()}},C=n=>{if(!this._enabled)return;if(Ee(this._activePointers,z),this._getClientRect(this._elementRect),s.copy(z),i.copy(z),this._activePointers.length>=2){const E=z.x-this._activePointers[1].clientX,y=z.y-this._activePointers[1].clientY,w=Math.sqrt(E*E+y*y);r.set(0,w);const T=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,S=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;i.set(T,S)}if(this._state=0,!n)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in n&&n.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else!this._lockedPointer&&(n.buttons&D.LEFT)===D.LEFT&&(this._state=this._state|this.mouseButtons.left),(n.buttons&D.MIDDLE)===D.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(n.buttons&D.RIGHT)===D.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&p.ROTATE)===p.ROTATE||(this._state&p.TOUCH_ROTATE)===p.TOUCH_ROTATE||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&p.TRUCK)===p.TRUCK||(this._state&p.TOUCH_TRUCK)===p.TOUCH_TRUCK||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&p.DOLLY)===p.DOLLY||(this._state&p.TOUCH_DOLLY)===p.TOUCH_DOLLY||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&p.ZOOM)===p.ZOOM||(this._state&p.TOUCH_ZOOM)===p.TOUCH_ZOOM||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&p.OFFSET)===p.OFFSET||(this._state&p.TOUCH_OFFSET)===p.TOUCH_OFFSET||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},v=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,Ee(this._activePointers,z);const g=this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,E=g?-g.deltaX:i.x-z.x,y=g?-g.deltaY:i.y-z.y;if(i.copy(z),((this._state&p.ROTATE)===p.ROTATE||(this._state&p.TOUCH_ROTATE)===p.TOUCH_ROTATE||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(E,y),this._isUserControllingRotate=!0),(this._state&p.DOLLY)===p.DOLLY||(this._state&p.ZOOM)===p.ZOOM){const w=this.dollyToCursor?(s.x-this._elementRect.x)/this._elementRect.width*2-1:0,T=this.dollyToCursor?(s.y-this._elementRect.y)/this._elementRect.height*-2+1:0,S=this.dollyDragInverted?-1:1;(this._state&p.DOLLY)===p.DOLLY?(this._dollyInternal(S*y*ce,w,T),this._isUserControllingDolly=!0):(this._zoomInternal(S*y*ce,w,T),this._isUserControllingZoom=!0)}if((this._state&p.TOUCH_DOLLY)===p.TOUCH_DOLLY||(this._state&p.TOUCH_ZOOM)===p.TOUCH_ZOOM||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE){const w=z.x-this._activePointers[1].clientX,T=z.y-this._activePointers[1].clientY,S=Math.sqrt(w*w+T*T),R=r.y-S;r.set(0,S);const ae=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,le=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&p.TOUCH_DOLLY)===p.TOUCH_DOLLY||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET?(this._dollyInternal(R*ce,ae,le),this._isUserControllingDolly=!0):(this._zoomInternal(R*ce,ae,le),this._isUserControllingZoom=!0)}((this._state&p.TRUCK)===p.TRUCK||(this._state&p.TOUCH_TRUCK)===p.TOUCH_TRUCK||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(E,y,!1),this._isUserControllingTruck=!0),((this._state&p.OFFSET)===p.OFFSET||(this._state&p.TOUCH_OFFSET)===p.TOUCH_OFFSET||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(E,y,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},m=()=>{Ee(this._activePointers,z),i.copy(z),this._dragNeedsUpdate=!1,(this._activePointers.length===0||this._activePointers.length===1&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),this._activePointers.length===0&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{!this._enabled||!this._domElement||(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",u),this._domElement.ownerDocument.addEventListener("pointerlockerror",_),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),C())},this.unlockPointer=()=>{var n,g,E;this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),(n=this._domElement)===null||n===void 0||n.ownerDocument.exitPointerLock(),(g=this._domElement)===null||g===void 0||g.ownerDocument.removeEventListener("pointerlockchange",u),(E=this._domElement)===null||E===void 0||E.ownerDocument.removeEventListener("pointerlockerror",_),this.cancel()};const u=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},_=()=>{this.unlockPointer()};this._addAllEventListeners=n=>{this._domElement=n,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",o),this._domElement.addEventListener("pointercancel",h),this._domElement.addEventListener("wheel",f,{passive:!1}),this._domElement.addEventListener("contextmenu",d)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",o),this._domElement.removeEventListener("pointercancel",h),this._domElement.removeEventListener("wheel",f,{passive:!1}),this._domElement.removeEventListener("contextmenu",d),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("pointerlockchange",u),this._domElement.ownerDocument.removeEventListener("pointerlockerror",_))},this.cancel=()=>{this._state!==p.NONE&&(this._state=p.NONE,this._activePointers.length=0,m())},t&&this.connect(t),this.update(0)}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}set interactiveArea(e){this._interactiveArea.width=I(e.width,0,1),this._interactiveArea.height=I(e.height,0,1),this._interactiveArea.x=I(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=I(e.y,0,1-this._interactiveArea.height)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,s=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,s)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,s=!1){this._isUserControllingRotate=!1;const i=I(e,this.minAzimuthAngle,this.maxAzimuthAngle),r=I(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=i,this._sphericalEnd.phi=r,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,s||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const o=!s||L(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&L(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(o)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=G.NONE,this._changedDolly=0,this._dollyToNoClamp(I(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const s=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const o=this._collisionTest(),a=L(o,this._spherical.radius);if(!(s>e)&&a)return Promise.resolve();this._sphericalEnd.radius=Math.min(e,o)}else this._sphericalEnd.radius=e;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);const r=!t||L(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(r)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(re).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const s=!t||L(this._target.x,this._targetEnd.x,this.restThreshold)&&L(this._target.y,this._targetEnd.y,this.restThreshold)&&L(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=I(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const s=!t||L(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(s)}pan(e,t,s=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,s)}truck(e,t,s=!1){this._camera.updateMatrix(),H.setFromMatrixColumn(this._camera.matrix,0),N.setFromMatrixColumn(this._camera.matrix,1),H.multiplyScalar(e),N.multiplyScalar(-t);const i=b.copy(H).add(N),r=P.copy(this._targetEnd).add(i);return this.moveTo(r.x,r.y,r.z,s)}forward(e,t=!1){b.setFromMatrixColumn(this._camera.matrix,0),b.crossVectors(this._camera.up,b),b.multiplyScalar(e);const s=P.copy(this._targetEnd).add(b);return this.moveTo(s.x,s.y,s.z,t)}elevate(e,t=!1){return b.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+b.x,this._targetEnd.y+b.y,this._targetEnd.z+b.z,t)}moveTo(e,t,s,i=!1){this._isUserControllingTruck=!1;const r=b.set(e,t,s).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,r,this.boundaryFriction),this._needsUpdate=!0,i||this._target.copy(this._targetEnd);const o=!i||L(this._target.x,this._targetEnd.x,this.restThreshold)&&L(this._target.y,this._targetEnd.y,this.restThreshold)&&L(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(o)}lookInDirectionOf(e,t,s,i=!1){const a=b.set(e,t,s).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius).add(this._targetEnd);return this.setPosition(a.x,a.y,a.z,i)}fitToBox(e,t,{cover:s=!1,paddingLeft:i=0,paddingRight:r=0,paddingBottom:o=0,paddingTop:a=0}={}){const h=[],c=e.isBox3?$.copy(e):$.setFromObject(e);c.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const f=Fe(this._sphericalEnd.theta,ze),d=Fe(this._sphericalEnd.phi,ze);h.push(this.rotateTo(f,d,t));const C=b.setFromSpherical(this._sphericalEnd).normalize(),v=Ve.setFromUnitVectors(C,Te),m=L(Math.abs(C.y),1);m&&v.multiply(we.setFromAxisAngle(de,f)),v.multiply(this._yAxisUpSpaceInverse);const u=Ne.makeEmpty();P.copy(c.min).applyQuaternion(v),u.expandByPoint(P),P.copy(c.min).setX(c.max.x).applyQuaternion(v),u.expandByPoint(P),P.copy(c.min).setY(c.max.y).applyQuaternion(v),u.expandByPoint(P),P.copy(c.max).setZ(c.min.z).applyQuaternion(v),u.expandByPoint(P),P.copy(c.min).setZ(c.max.z).applyQuaternion(v),u.expandByPoint(P),P.copy(c.max).setY(c.min.y).applyQuaternion(v),u.expandByPoint(P),P.copy(c.max).setX(c.min.x).applyQuaternion(v),u.expandByPoint(P),P.copy(c.max).applyQuaternion(v),u.expandByPoint(P),u.min.x-=i,u.min.y-=o,u.max.x+=r,u.max.y+=a,v.setFromUnitVectors(Te,C),m&&v.premultiply(we.invert()),v.premultiply(this._yAxisUpSpace);const _=u.getSize(b),n=u.getCenter(P).applyQuaternion(v);if(Z(this._camera)){const g=this.getDistanceToFitBox(_.x,_.y,_.z,s);h.push(this.moveTo(n.x,n.y,n.z,t)),h.push(this.dollyTo(g,t)),h.push(this.setFocalOffset(0,0,0,t))}else if(B(this._camera)){const g=this._camera,E=g.right-g.left,y=g.top-g.bottom,w=s?Math.max(E/_.x,y/_.y):Math.min(E/_.x,y/_.y);h.push(this.moveTo(n.x,n.y,n.z,t)),h.push(this.zoomTo(w,t)),h.push(this.setFocalOffset(0,0,0,t))}return Promise.all(h)}fitToSphere(e,t){const s=[],r="isObject3D"in e?ee.createBoundingSphere(e,xe):xe.copy(e);if(s.push(this.moveTo(r.center.x,r.center.y,r.center.z,t)),Z(this._camera)){const o=this.getDistanceToFitSphere(r.radius);s.push(this.dollyTo(o,t))}else if(B(this._camera)){const o=this._camera.right-this._camera.left,a=this._camera.top-this._camera.bottom,h=2*r.radius,c=Math.min(o/h,a/h);s.push(this.zoomTo(c,t))}return s.push(this.setFocalOffset(0,0,0,t)),Promise.all(s)}setLookAt(e,t,s,i,r,o,a=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=G.NONE,this._changedDolly=0;const h=P.set(i,r,o),c=b.set(e,t,s);this._targetEnd.copy(h),this._sphericalEnd.setFromVector3(c.sub(h).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,a||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const f=!a||L(this._target.x,this._targetEnd.x,this.restThreshold)&&L(this._target.y,this._targetEnd.y,this.restThreshold)&&L(this._target.z,this._targetEnd.z,this.restThreshold)&&L(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&L(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&L(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(f)}lerpLookAt(e,t,s,i,r,o,a,h,c,f,d,C,v,m=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=G.NONE,this._changedDolly=0;const u=b.set(i,r,o),_=P.set(e,t,s);k.setFromVector3(_.sub(u).applyQuaternion(this._yAxisUpSpace));const n=X.set(f,d,C),g=P.set(a,h,c);oe.setFromVector3(g.sub(n).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(u.lerp(n,v));const E=oe.theta-k.theta,y=oe.phi-k.phi,w=oe.radius-k.radius;this._sphericalEnd.set(k.radius+w*v,k.phi+y*v,k.theta+E*v),this.normalizeRotations(),this._needsUpdate=!0,m||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const T=!m||L(this._target.x,this._targetEnd.x,this.restThreshold)&&L(this._target.y,this._targetEnd.y,this.restThreshold)&&L(this._target.z,this._targetEnd.z,this.restThreshold)&&L(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&L(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&L(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(T)}setPosition(e,t,s,i=!1){return this.setLookAt(e,t,s,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,i)}setTarget(e,t,s,i=!1){const r=this.getPosition(b),o=this.setLookAt(r.x,r.y,r.z,e,t,s,i);return this._sphericalEnd.phi=I(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),o}setFocalOffset(e,t,s,i=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,s),this._needsUpdate=!0,i||this._focalOffset.copy(this._focalOffsetEnd);const r=!i||L(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&L(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&L(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(r)}setOrbitPoint(e,t,s){this._camera.updateMatrixWorld(),H.setFromMatrixColumn(this._camera.matrixWorldInverse,0),N.setFromMatrixColumn(this._camera.matrixWorldInverse,1),q.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=b.set(e,t,s),r=i.distanceTo(this._camera.position),o=i.sub(this._camera.position);H.multiplyScalar(o.x),N.multiplyScalar(o.y),q.multiplyScalar(o.z),b.copy(H).add(N).add(q),b.z=b.z+r,this.dollyTo(r,!1),this.setFocalOffset(-b.x,b.y,-b.z,!1),this.moveTo(e,t,s,!1)}setBoundary(e){if(!e){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,s,i){if(e===null){this._viewport=null;return}this._viewport=this._viewport||new x.Vector4,typeof e=="number"?this._viewport.set(e,t,s,i):this._viewport.copy(e)}getDistanceToFitBox(e,t,s,i=!1){if(Oe(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const r=e/t,o=this._camera.getEffectiveFOV()*te,a=this._camera.aspect;return((i?r>a:r<a)?t:e/a)*.5/Math.tan(o*.5)+s*.5}getDistanceToFitSphere(e){if(Oe(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*te,s=Math.atan(Math.tan(t*.5)*this._camera.aspect)*2,i=1<this._camera.aspect?t:s;return e/Math.sin(i*.5)}getTarget(e,t=!0){return(e&&e.isVector3?e:new x.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new x.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e||new x.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new x.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%K,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=K),this._spherical.theta+=K*Math.round((this._sphericalEnd.theta-this._spherical.theta)/K)}reset(e=!1){if(!L(this._camera.up.x,this._cameraUp0.x)||!L(this._camera.up.y,this._cameraUp0.y)||!L(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const s=this.getPosition(b);this.updateCameraUp(),this.setPosition(s.x,s.y,s.z)}const t=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,e),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,e),this.zoomTo(this._zoom0,e)];return Promise.all(t)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,de),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=b.subVectors(this._target,this._camera.position).normalize(),t=P.crossVectors(e,this._camera.up);this._camera.up.crossVectors(t,e).normalize(),this._camera.updateMatrixWorld();const s=this.getPosition(b);this.updateCameraUp(),this.setPosition(s.x,s.y,s.z)}update(e){const t=this._sphericalEnd.theta-this._spherical.theta,s=this._sphericalEnd.phi-this._spherical.phi,i=this._sphericalEnd.radius-this._spherical.radius,r=je.subVectors(this._targetEnd,this._target),o=He.subVectors(this._focalOffsetEnd,this._focalOffset),a=this._zoomEnd-this._zoom;if(M(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=he(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,d,1/0,e),this._needsUpdate=!0}if(M(s))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=he(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,d,1/0,e),this._needsUpdate=!0}if(M(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const d=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=he(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,d,this.maxSpeed,e),this._needsUpdate=!0}if(M(r.x)&&M(r.y)&&M(r.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const d=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;ke(this._target,this._targetEnd,this._targetVelocity,d,this.maxSpeed,e,this._target),this._needsUpdate=!0}if(M(o.x)&&M(o.y)&&M(o.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const d=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;ke(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,d,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(M(a))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const d=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=he(this._zoom,this._zoomEnd,this._zoomVelocity,d,1/0,e)}if(this.dollyToCursor){if(Z(this._camera)&&this._changedDolly!==0){const d=this._spherical.radius-this._lastDistance,C=this._camera,v=this._getCameraDirection(re),m=b.copy(v).cross(C.up).normalize();m.lengthSq()===0&&(m.x=1);const u=P.crossVectors(m,v),_=this._sphericalEnd.radius*Math.tan(C.getEffectiveFOV()*te*.5),g=(this._sphericalEnd.radius-d-this._sphericalEnd.radius)/this._sphericalEnd.radius,E=X.copy(this._targetEnd).add(m.multiplyScalar(this._dollyControlCoord.x*_*C.aspect)).add(u.multiplyScalar(this._dollyControlCoord.y*_)),y=b.copy(this._targetEnd).lerp(E,g),w=this._lastDollyDirection===G.IN&&this._spherical.radius<=this.minDistance,T=this._lastDollyDirection===G.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(w||T)){this._sphericalEnd.radius-=d,this._spherical.radius-=d;const R=P.copy(v).multiplyScalar(-d);y.add(R)}this._boundary.clampPoint(y,y);const S=P.subVectors(y,this._targetEnd);this._targetEnd.copy(y),this._target.add(S),this._changedDolly-=d,M(this._changedDolly)&&(this._changedDolly=0)}else if(B(this._camera)&&this._changedZoom!==0){const d=this._zoom-this._lastZoom,C=this._camera,v=b.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(C.near+C.far)/(C.near-C.far)).unproject(C),m=P.set(0,0,-1).applyQuaternion(C.quaternion),u=X.copy(v).add(m.multiplyScalar(-v.dot(C.up))),n=-(this._zoom-d-this._zoom)/this._zoom,g=this._getCameraDirection(re),E=this._targetEnd.dot(g),y=b.copy(this._targetEnd).lerp(u,n),w=y.dot(g),T=g.multiplyScalar(w-E);y.sub(T),this._boundary.clampPoint(y,y);const S=P.subVectors(y,this._targetEnd);this._targetEnd.copy(y),this._target.add(S),this._changedZoom-=d,M(this._changedZoom)&&(this._changedZoom=0)}}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0),this._dragNeedsUpdate=!0;const h=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,h),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!M(this._focalOffset.x)||!M(this._focalOffset.y)||!M(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),H.setFromMatrixColumn(this._camera.matrix,0),N.setFromMatrixColumn(this._camera.matrix,1),q.setFromMatrixColumn(this._camera.matrix,2),H.multiplyScalar(this._focalOffset.x),N.multiplyScalar(-this._focalOffset.y),q.multiplyScalar(this._focalOffset.z),b.copy(H).add(N).add(q),this._camera.position.add(b)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),b.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const f=this._needsUpdate;return f&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):f?(this.dispatchEvent({type:"update"}),M(t,this.restThreshold)&&M(s,this.restThreshold)&&M(i,this.restThreshold)&&M(r.x,this.restThreshold)&&M(r.y,this.restThreshold)&&M(r.z,this.restThreshold)&&M(o.x,this.restThreshold)&&M(o.y,this.restThreshold)&&M(o.z,this.restThreshold)&&M(a,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!f&&this._updatedLastTime&&(this._hasRested||(this._hasRested=!0,this.dispatchEvent({type:"rest"})),this.dispatchEvent({type:"sleep"})),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=f,this._needsUpdate=!1,f}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:se(this.maxDistance),minZoom:this.minZoom,maxZoom:se(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:se(this.maxPolarAngle),minAzimuthAngle:se(this.minAzimuthAngle),maxAzimuthAngle:se(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:b.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(e,t=!1){const s=JSON.parse(e);this.enabled=s.enabled,this.minDistance=s.minDistance,this.maxDistance=ie(s.maxDistance),this.minZoom=s.minZoom,this.maxZoom=ie(s.maxZoom),this.minPolarAngle=s.minPolarAngle,this.maxPolarAngle=ie(s.maxPolarAngle),this.minAzimuthAngle=ie(s.minAzimuthAngle),this.maxAzimuthAngle=ie(s.maxAzimuthAngle),this.smoothTime=s.smoothTime,this.draggingSmoothTime=s.draggingSmoothTime,this.dollySpeed=s.dollySpeed,this.truckSpeed=s.truckSpeed,this.dollyToCursor=s.dollyToCursor,this.verticalDragToForward=s.verticalDragToForward,this._target0.fromArray(s.target0),this._position0.fromArray(s.position0),this._zoom0=s.zoom0,this._focalOffset0.fromArray(s.focalOffset0),this.moveTo(s.target[0],s.target[1],s.target[2],t),k.setFromVector3(b.fromArray(s.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(k.theta,k.phi,t),this.dollyTo(k.radius,t),this.zoomTo(s.zoom,t),this.setFocalOffset(s.focalOffset[0],s.focalOffset[1],s.focalOffset[2],t),this._needsUpdate=!0}connect(e){if(this._domElement){console.warn("camera-controls is already connected.");return}this._addAllEventListeners(e),this._getClientRect(this._elementRect)}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(e){return e.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(e){return this._getTargetDirection(e).negate()}_findPointerById(e){return this._activePointers.find(t=>t.pointerId===e)}_findPointerByMouseButton(e){return this._activePointers.find(t=>t.mouseButton===e)}_disposePointer(e){this._activePointers.splice(this._activePointers.indexOf(e),1)}_encloseToBoundary(e,t,s){const i=t.lengthSq();if(i===0)return e;const r=P.copy(t).add(e),a=this._boundary.clampPoint(r,X).sub(r),h=a.lengthSq();if(h===0)return e.add(t);if(h===i)return e;if(s===0)return e.add(t).add(a);{const c=1+s*h/t.dot(a);return e.add(P.copy(t).multiplyScalar(c)).add(a.multiplyScalar(1-s))}}_updateNearPlaneCorners(){if(Z(this._camera)){const e=this._camera,t=e.near,s=e.getEffectiveFOV()*te,i=Math.tan(s*.5)*t,r=i*e.aspect;this._nearPlaneCorners[0].set(-r,-i,0),this._nearPlaneCorners[1].set(r,-i,0),this._nearPlaneCorners[2].set(r,i,0),this._nearPlaneCorners[3].set(-r,i,0)}else if(B(this._camera)){const e=this._camera,t=1/e.zoom,s=e.left*t,i=e.right*t,r=e.top*t,o=e.bottom*t;this._nearPlaneCorners[0].set(s,r,0),this._nearPlaneCorners[1].set(i,r,0),this._nearPlaneCorners[2].set(i,o,0),this._nearPlaneCorners[3].set(s,o,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1)||Oe(this._camera,"_collisionTest"))return e;const s=this._getTargetDirection(re);be.lookAt(Ie,s,this._camera.up);for(let i=0;i<4;i++){const r=P.copy(this._nearPlaneCorners[i]);r.applyMatrix4(be);const o=X.addVectors(this._target,r);pe.set(o,s),pe.far=this._spherical.radius+1;const a=pe.intersectObjects(this.colliderMeshes);a.length!==0&&a[0].distance<e&&(e=a[0].distance)}return e}_getClientRect(e){if(!this._domElement)return;const t=this._domElement.getBoundingClientRect();return e.x=t.left,e.y=t.top,this._viewport?(e.x+=this._viewport.x,e.y+=t.height-this._viewport.w-this._viewport.y,e.width=this._viewport.z,e.height=this._viewport.w):(e.width=t.width,e.height=t.height),e}_createOnRestPromise(e){return e?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(t=>{const s=()=>{this.removeEventListener("rest",s),t()};this.addEventListener("rest",s)}))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new x.Sphere){const s=t,i=s.center;$.makeEmpty(),e.traverseVisible(o=>{o.isMesh&&$.expandByObject(o)}),$.getCenter(i);let r=0;return e.traverseVisible(o=>{if(!o.isMesh)return;const a=o,h=a.geometry.clone();h.applyMatrix4(a.matrixWorld);const f=h.attributes.position;for(let d=0,C=f.count;d<C;d++)b.fromBufferAttribute(f,d),r=Math.max(r,i.distanceToSquared(b))}),s.radius=Math.sqrt(r),s}}var Ae={exports:{}},J=typeof Reflect=="object"?Reflect:null,Be=J&&typeof J.apply=="function"?J.apply:function(e,t,s){return Function.prototype.apply.call(e,t,s)},ue;J&&typeof J.ownKeys=="function"?ue=J.ownKeys:Object.getOwnPropertySymbols?ue=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ue=function(e){return Object.getOwnPropertyNames(e)};function It(l){console&&console.warn&&console.warn(l)}var st=Number.isNaN||function(e){return e!==e};function A(){A.init.call(this)}Ae.exports=A;Ae.exports.once=Vt;A.EventEmitter=A;A.prototype._events=void 0;A.prototype._eventsCount=0;A.prototype._maxListeners=void 0;var Ye=10;function ge(l){if(typeof l!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof l)}Object.defineProperty(A,"defaultMaxListeners",{enumerable:!0,get:function(){return Ye},set:function(l){if(typeof l!="number"||l<0||st(l))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+l+".");Ye=l}});A.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};A.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||st(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function it(l){return l._maxListeners===void 0?A.defaultMaxListeners:l._maxListeners}A.prototype.getMaxListeners=function(){return it(this)};A.prototype.emit=function(e){for(var t=[],s=1;s<arguments.length;s++)t.push(arguments[s]);var i=e==="error",r=this._events;if(r!==void 0)i=i&&r.error===void 0;else if(!i)return!1;if(i){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var h=r[e];if(h===void 0)return!1;if(typeof h=="function")Be(h,this,t);else for(var c=h.length,f=lt(h,c),s=0;s<c;++s)Be(f[s],this,t);return!0};function rt(l,e,t,s){var i,r,o;if(ge(t),r=l._events,r===void 0?(r=l._events=Object.create(null),l._eventsCount=0):(r.newListener!==void 0&&(l.emit("newListener",e,t.listener?t.listener:t),r=l._events),o=r[e]),o===void 0)o=r[e]=t,++l._eventsCount;else if(typeof o=="function"?o=r[e]=s?[t,o]:[o,t]:s?o.unshift(t):o.push(t),i=it(l),i>0&&o.length>i&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=l,a.type=e,a.count=o.length,It(a)}return l}A.prototype.addListener=function(e,t){return rt(this,e,t,!1)};A.prototype.on=A.prototype.addListener;A.prototype.prependListener=function(e,t){return rt(this,e,t,!0)};function jt(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function ot(l,e,t){var s={fired:!1,wrapFn:void 0,target:l,type:e,listener:t},i=jt.bind(s);return i.listener=t,s.wrapFn=i,i}A.prototype.once=function(e,t){return ge(t),this.on(e,ot(this,e,t)),this};A.prototype.prependOnceListener=function(e,t){return ge(t),this.prependListener(e,ot(this,e,t)),this};A.prototype.removeListener=function(e,t){var s,i,r,o,a;if(ge(t),i=this._events,i===void 0)return this;if(s=i[e],s===void 0)return this;if(s===t||s.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,s.listener||t));else if(typeof s!="function"){for(r=-1,o=s.length-1;o>=0;o--)if(s[o]===t||s[o].listener===t){a=s[o].listener,r=o;break}if(r<0)return this;r===0?s.shift():Ht(s,r),s.length===1&&(i[e]=s[0]),i.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};A.prototype.off=A.prototype.removeListener;A.prototype.removeAllListeners=function(e){var t,s,i;if(s=this._events,s===void 0)return this;if(s.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):s[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete s[e]),this;if(arguments.length===0){var r=Object.keys(s),o;for(i=0;i<r.length;++i)o=r[i],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=s[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this};function nt(l,e,t){var s=l._events;if(s===void 0)return[];var i=s[e];return i===void 0?[]:typeof i=="function"?t?[i.listener||i]:[i]:t?Nt(i):lt(i,i.length)}A.prototype.listeners=function(e){return nt(this,e,!0)};A.prototype.rawListeners=function(e){return nt(this,e,!1)};A.listenerCount=function(l,e){return typeof l.listenerCount=="function"?l.listenerCount(e):at.call(l,e)};A.prototype.listenerCount=at;function at(l){var e=this._events;if(e!==void 0){var t=e[l];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}A.prototype.eventNames=function(){return this._eventsCount>0?ue(this._events):[]};function lt(l,e){for(var t=new Array(e),s=0;s<e;++s)t[s]=l[s];return t}function Ht(l,e){for(;e+1<l.length;e++)l[e]=l[e+1];l.pop()}function Nt(l){for(var e=new Array(l.length),t=0;t<e.length;++t)e[t]=l[t].listener||l[t];return e}function Vt(l,e){return new Promise(function(t,s){function i(o){l.removeListener(e,r),s(o)}function r(){typeof l.removeListener=="function"&&l.removeListener("error",i),t([].slice.call(arguments))}ht(l,e,r,{once:!0}),e!=="error"&&Bt(l,i,{once:!0})})}function Bt(l,e,t){typeof l.on=="function"&&ht(l,"error",e,t)}function ht(l,e,t,s){if(typeof l.on=="function")s.once?l.once(e,t):l.on(e,t);else if(typeof l.addEventListener=="function")l.addEventListener(e,function i(r){s.once&&l.removeEventListener(e,i),t(r)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof l)}var ve=Ae.exports;const Yt={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:Se.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1};class Zt{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i}=e,{alpha:r,devicePixelRatio:o,antialias:a,powerPreference:h,toneMappingExposure:c,outputColorSpace:f,logarithmicDepthBuffer:d,preserveDrawingBuffer:C,stencil:v,depth:m}=i,u=new O.WebGLRenderer({alpha:r,antialias:a,powerPreference:h,logarithmicDepthBuffer:d,preserveDrawingBuffer:C,stencil:v,depth:m});u.setSize(t,s),u.setPixelRatio(o),u.toneMappingExposure=c,u.outputColorSpace=f,this.renderer=u}setSize(e,t){this.renderer.setSize(e,t)}setPixelRatio(e){this.renderer.setPixelRatio(e)}render(e,t){this.renderer.render(e,t)}setViewport(e){var h,c;const{x:t,y:s,width:i,height:r}=e,o=(h=e.scissor)!=null?h:!1,a=(c=e.scissorTest)!=null?c:!1;this.renderer.setViewport(t,s,i,r),o&&(this.renderer.setScissor(t,s,i,r),this.renderer.setScissorTest(a))}setViewPadding(e=0,t=0,s=0,i=0){const{width:r,height:o}=this.renderer.getSize(new O.Vector2),a={x:i,y:s,width:r-i-t,height:o-e-s};this.setViewport(a)}dispose(){var e,t;this.setSize(1,1),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}const qt={antialias:!0,devicePixelRatio:window.devicePixelRatio};class Wt{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i,renderer:r}=e,{devicePixelRatio:o,antialias:a}=i,h=new r({antialias:a});h.setSize(t,s),h.setPixelRatio(o),this.renderer=h}setSize(e,t){this.renderer.setSize(e,t)}render(e,t){this.renderer.render(e,t)}dispose(){var e,t;this.setSize(1,1),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}let Gt=class{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}isEnabled(e){return(this.mask&(1<<e|0))!==0}};class ne{constructor(){this.event=new ve.EventEmitter,this.controllerMap=new Map,this.activeIndex=-1,this.activeControllerSet=new Set}addController(e,t){const s=new Gt;return s.disableAll(),t!==void 0&&s.set(t),this.controllerMap.set(e,s),t===this.activeIndex&&this.activeControllerSet.add(e),e}removePage(e,t){this.controllerMap.forEach((s,i)=>{s.isEnabled(e)&&(s.disable(e),s.mask===0&&(t==null||t(i),this.controllerMap.delete(i),this.activeControllerSet.delete(i)))})}setPageActive(e,t){this.activeIndex=e,this.activeControllerSet.clear(),this.controller=(Array.from(this.controllerMap.entries()).find(([s,i])=>{const r=i.isEnabled(e);return r&&this.activeControllerSet.add(s),t==null||t(s,r),r})||[])[0],this.event.emit("pageChange",this.controller)}dispose(){this.controllerMap.forEach((e,t)=>{e.set(0)}),this.removePage(0),this.controllerMap.clear(),this.event.removeAllListeners(),this.activeControllerSet.clear()}}const ct={fov:45,near:1,far:1e3,up:new O.Vector3(0,1,0)};class Kt extends ne{constructor(e){super(),this.width=0,this.height=0,this.width=e.width,this.height=e.height}get camera(){return this.controller}addPerspectiveCamera(e=ct,t){const{fov:s,far:i,near:r,up:o,aspect:a}=e,h=a!=null?a:this.width/this.height,c=new O.PerspectiveCamera(s,h,r,i);return c.up=o,this.addController(c,t)}setSize(e,t){this.width=e,this.height=t,this.controllerMap.forEach((s,i)=>{i instanceof O.PerspectiveCamera&&(i.aspect=e/t),i.updateProjectionMatrix()})}cloneCamera(e){const t=this.addPerspectiveCamera({fov:this.camera.fov,aspect:this.camera.aspect,near:this.camera.near,far:this.camera.far,up:this.camera.up},e);return t.position.copy(this.camera.position),t}sync(e){if(e.type==="PerspectiveCamera"){const t=e;(!this.camera.matrixWorld.equals(t.matrixWorld)||this.camera.far!==t.far||this.camera.near!==t.near||this.camera.fov!==t.fov||this.camera.aspect!==t.aspect)&&this.camera.copy(t)}else{const t=e,s=t.viewMatrix,i=t.inverseViewMatrix,r=new O.Matrix4(i[0],i[4],i[8],i[12],i[1],i[5],i[9],i[13],i[2],i[6],i[10],i[14],i[3],i[7],i[11],i[15]),o=new O.Matrix4(s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15]),{width:a,height:h}=this,c=a/h;(this.camera.fov!==t.fov||this.camera.aspect!==c||!this.camera.matrixWorld.equals(r)||!this.camera.matrixWorldInverse.equals(o))&&(this.camera.fov=t.fov,this.camera.updateProjectionMatrix(),this.camera.matrixAutoUpdate=!1,this.camera.matrixWorld.copy(r),this.camera.matrixWorldInverse.copy(o),this.camera.aspect=c,this.camera.updateProjectionMatrix())}}}const Xt={background:null};class $t extends ne{get scene(){return this.controller}constructor(e){super(),this.options=e}addScene(e,t){const s=new O.Scene;return e!=null&&e.background&&(s.background=e.background),this.addController(s,t)}removePage(e){super.removePage(e,t=>{const s=new Y.ResourceTracker;s.track(t),s.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.visible=s})}}class Qt{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{sceneController:s}=this.options;let i=this.helpers[t];if(i===void 0){if(e.isScene)i=new O.AxesHelper(100);else if(e.isCamera)i=new O.CameraHelper(e);else if(e.isPointLight)i=new O.PointLightHelper(e,1);else if(e.isDirectionalLight)i=new O.DirectionalLightHelper(e,1);else if(e.isSpotLight)i=new O.SpotLightHelper(e);else if(e.isHemisphereLight)i=new O.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)i=new xt.RectAreaLightHelper(e);else{const r=new O.Box3;if(r.setFromObject(e,!0),r.isEmpty()===!1){i=new O.Box3Helper(r);const o=i.material;o.userData.object=e,o.depthTest=!1,o.transparent=!0}else return}s.scene.add(i),this.helpers[t]=i}}addViewHelper(){const{cameraController:e,container:t}=this.options,s=new wt.ViewHelper(e.camera,t);t.addEventListener("pointerdown",i=>{i.preventDefault(),s.handleClick(i)}),this.viewHelper=s}remove(e){var i;const t=e.uuid,{sceneController:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.scene.remove(r),delete this.helpers[t],(i=r.dispose)==null||i.call(r)}}removeAll(){Object.keys(this.helpers).forEach(e=>{this.remove({uuid:e})}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof O.AxesHelper||this.remove({uuid:e})})}update(e,t,s){var r,o;const{cameraController:i}=this.options;Object.values(this.helpers).forEach(a=>{if(a.update&&a.update(),a instanceof O.Box3Helper){const h=a.material,{object:c}=h.userData;c&&a.box.setFromObject(c,!0)}}),((r=this.viewHelper)==null?void 0:r.animating)===!0&&(this.viewHelper.update(e),(o=t.cameraControls)==null||o.setPosition(...i.camera.position.toArray()),this.viewHelper.center.copy(s))}renderViewHelper(e){if(!this.viewHelper)return;const t=e.autoClear;e.autoClear=!1,this.viewHelper.render(e),e.autoClear=t}dispose(){var e;this.helpers={},(e=this.viewHelper)==null||e.dispose()}}class Jt extends ne{constructor(e){super(),this.autoRotateSpeed=0,this.options=e,ee.install({THREE:O})}get cameraControls(){return this.controller}addCameraControls(e,t){const{domElement:s}=this.options.controlsParams,i=new ee(e,s);return i.setLookAt(0,0,400,0,0,0,!1),this.addController(i,t)}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}removePage(e){super.removePage(e,t=>{t.dispose()})}enable(){this.activeControllerSet.forEach(e=>{e.enabled=!0})}disable(){this.activeControllerSet.forEach(e=>{e.enabled=!1})}update(e){this.activeControllerSet.forEach(t=>{t.update(e)}),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*O.MathUtils.DEG2RAD)}}class es{constructor(e){this.event=new ve.EventEmitter;const{renderer:t,scene:s,camera:i}=e,r=new bt.TransformControls(i,t.domElement);if(r.getHelper){const o=r.getHelper();if(s.add(o),+O.REVISION<170){const a=r._root;a.dispose=()=>{a.traverse(h=>{h.geometry&&h.geometry.dispose(),h.material&&h.material.dispose()})},r.dispose=()=>{r.disconnect(),a.dispose()}}}else r instanceof O.Object3D&&s.add(r);this.controls=r,this.addEvent()}get detach(){return this.controls.detach.bind(this.controls)}get attach(){return this.controls.attach.bind(this.controls)}addEvent(){let e=null,t=null,s=null;const i=this.controls;i.addEventListener("change",()=>{const r=i.object;r!==void 0&&this.event.emit("change",r)}),i.addEventListener("mouseDown",()=>{const r=i.object;e=r.position.clone(),t=r.rotation.clone(),s=r.scale.clone(),this.event.emit("mouseDown",r)}),i.addEventListener("mouseUp",()=>{const r=i.object;if(r!==void 0)switch(i.getMode()){case"translate":e.equals(r.position)||this.event.emit("translate",r,r.position,e);break;case"rotate":t.equals(r.rotation)||this.event.emit("rotate",r,r.rotation,t);break;case"scale":s.equals(r.scale)||this.event.emit("scale",r,r.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const Ze=new F.Vector3,ts=new F.Quaternion,qe=new F.Vector3,V=new F.Matrix4,ss=new F.Matrix4;class is{constructor(e={}){const t=this;let s,i,r,o;const a={camera:{style:""},objects:new WeakMap},h=e.element!==void 0?e.element:document.createElement("div");h.style.overflow="hidden",this.domElement=h;const c=document.createElement("div");c.style.transformOrigin="0 0",c.style.pointerEvents="none",h.appendChild(c);const f=document.createElement("div");f.style.transformStyle="preserve-3d",c.appendChild(f),this.getSize=function(){return{width:s,height:i}},this.render=function(_,n){const g=n.projectionMatrix.elements[5]*o;n.view&&n.view.enabled?(c.style.transform=`translate( ${-n.view.offsetX*(s/n.view.width)}px, ${-n.view.offsetY*(i/n.view.height)}px )`,c.style.transform+=`scale( ${n.view.fullWidth/n.view.width}, ${n.view.fullHeight/n.view.height} )`):c.style.transform="",_.matrixWorldAutoUpdate===!0&&_.updateMatrixWorld(),n.parent===null&&n.matrixWorldAutoUpdate===!0&&n.updateMatrixWorld();let E,y;n.isOrthographicCamera&&(E=-(n.right+n.left)/2,y=(n.top+n.bottom)/2);const w=n.view&&n.view.enabled?n.view.height/n.view.fullHeight:1,T=n.isOrthographicCamera?`scale( ${w} )scale(`+g+")translate("+d(E)+"px,"+d(y)+"px)"+C(n.matrixWorldInverse):`scale( ${w} )translateZ(`+g+"px)"+C(n.matrixWorldInverse),R=(n.isPerspectiveCamera?"perspective("+g+"px) ":"")+T+"translate("+r+"px,"+o+"px)";a.camera.style!==R&&(f.style.transform=R,a.camera.style=R),u(_,_,n)},this.setSize=function(_,n){s=_,i=n,r=s/2,o=i/2,h.style.width=_+"px",h.style.height=n+"px",c.style.width=_+"px",c.style.height=n+"px",f.style.width=_+"px",f.style.height=n+"px"};function d(_){return Math.abs(_)<1e-10?0:_}function C(_){const n=_.elements;return"matrix3d("+d(n[0])+","+d(-n[1])+","+d(n[2])+","+d(n[3])+","+d(n[4])+","+d(-n[5])+","+d(n[6])+","+d(n[7])+","+d(n[8])+","+d(-n[9])+","+d(n[10])+","+d(n[11])+","+d(n[12])+","+d(-n[13])+","+d(n[14])+","+d(n[15])+")"}function v(_){const n=_.elements;return"translate(-50%,-50%)"+("matrix3d("+d(n[0])+","+d(n[1])+","+d(n[2])+","+d(n[3])+","+d(-n[4])+","+d(-n[5])+","+d(-n[6])+","+d(-n[7])+","+d(n[8])+","+d(n[9])+","+d(n[10])+","+d(n[11])+","+d(n[12])+","+d(n[13])+","+d(n[14])+","+d(n[15])+")")}function m(_){_.isCSS3DObject&&(_.element.style.display="none");for(let n=0,g=_.children.length;n<g;n++)m(_.children[n])}function u(_,n,g,E){if(_.visible===!1){m(_);return}if(_.isCSS3DObject){const y=_.layers.test(g.layers)===!0,w=_.element;if(w.style.display=y===!0?"":"none",y===!0){_.onBeforeRender(t,n,g);let T;_.isCSS3DSprite?(V.copy(g.matrixWorldInverse),V.transpose(),_.rotation2D!==0&&V.multiply(ss.makeRotationZ(_.rotation2D)),_.matrixWorld.decompose(Ze,ts,qe),V.setPosition(Ze),V.scale(qe),V.elements[3]=0,V.elements[7]=0,V.elements[11]=0,V.elements[15]=1,T=v(V)):T=v(_.matrixWorld);const S=a.objects.get(_);if(S===void 0||S.style!==T){w.style.transform=T;const R={style:T};a.objects.set(_,R)}w.parentNode!==f&&f.appendChild(w),_.onAfterRender(t,n,g)}}for(let y=0,w=_.children.length;y<w;y++)u(_.children[y],n,g)}}}const Q=new F.Vector3,We=new F.Matrix4,Ge=new F.Matrix4,Ke=new F.Vector3,Xe=new F.Vector3;class rs{constructor(e={}){const t=this;let s,i,r,o;const a={objects:new WeakMap},h=e.element!==void 0?e.element:document.createElement("div");h.style.overflow="hidden",this.domElement=h,this.getSize=function(){return{width:s,height:i}},this.render=function(m,u){m.matrixWorldAutoUpdate===!0&&m.updateMatrixWorld(),u.parent===null&&u.matrixWorldAutoUpdate===!0&&u.updateMatrixWorld(),We.copy(u.matrixWorldInverse),Ge.multiplyMatrices(u.projectionMatrix,We),f(m,m,u),v(m)},this.setSize=function(m,u){s=m,i=u,r=s/2,o=i/2,h.style.width=m+"px",h.style.height=u+"px"};function c(m){m.isCSS2DObject&&(m.element.style.display="none");for(let u=0,_=m.children.length;u<_;u++)c(m.children[u])}function f(m,u,_){if(m.visible===!1){c(m);return}if(m.isCSS2DObject){Q.setFromMatrixPosition(m.matrixWorld),Q.applyMatrix4(Ge);const n=Q.z>=-1&&Q.z<=1&&m.layers.test(_.layers)===!0,g=m.element;g.style.display=n===!0?"":"none",n===!0&&(m.onBeforeRender(t,u,_),g.style.transform="translate("+-100*m.center.x+"%,"+-100*m.center.y+"%)translate("+(Q.x*r+r)+"px,"+(-Q.y*o+o)+"px)",g.parentNode!==h&&h.appendChild(g),m.onAfterRender(t,u,_));const E={distanceToCameraSquared:d(_,m)};a.objects.set(m,E)}for(let n=0,g=m.children.length;n<g;n++)f(m.children[n],u,_)}function d(m,u){return Ke.setFromMatrixPosition(m.matrixWorld),Xe.setFromMatrixPosition(u.matrixWorld),Ke.distanceToSquared(Xe)}function C(m){const u=[];return m.traverseVisible(function(_){_.isCSS2DObject&&u.push(_)}),u}function v(m){const u=C(m).sort(function(n,g){if(n.renderOrder!==g.renderOrder)return g.renderOrder-n.renderOrder;const E=a.objects.get(n).distanceToCameraSquared,y=a.objects.get(g).distanceToCameraSquared;return E-y}),_=u.length;for(let n=0,g=u.length;n<g;n++)u[n].element.style.zIndex=_-n}}}const $e={zIndex:"auto"};class os{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,i=s.offsetWidth,r=s.offsetHeight,o=e==="css2d"?new rs:new is;o.domElement.style.position="absolute",o.domElement.style.top="0",o.domElement.style.pointerEvents="none",o.domElement.style.zIndex=t.zIndex,o.setSize(i,r),s.appendChild(o.domElement),e==="css2d"?this.css2Drenderer=o:e==="css3d"&&(this.css3Drenderer=o)}setSize(e,t){var s,i;(s=this.css2Drenderer)==null||s.setSize(e,t),(i=this.css3Drenderer)==null||i.setSize(e,t)}render(e,t){var s,i;(s=this.css2Drenderer)==null||s.render(e,t),(i=this.css3Drenderer)==null||i.render(e,t)}dispose(){var e,t;(e=this.css2Drenderer)==null||e.domElement.remove(),(t=this.css3Drenderer)==null||t.domElement.remove(),this.css2Drenderer=void 0,this.css3Drenderer=void 0}}const ns={name:"OutputShader",uniforms:{tDiffuse:{value:null},toneMappingExposure:{value:1},premultiplieAlpha:{value:0}},vertexShader:`
1
+ "use strict";var ft=Object.defineProperty,_t=Object.defineProperties;var gt=Object.getOwnPropertyDescriptors;var Me=Object.getOwnPropertySymbols;var vt=Object.prototype.hasOwnProperty,yt=Object.prototype.propertyIsEnumerable;var De=(l,e,t)=>e in l?ft(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,U=(l,e)=>{for(var t in e||(e={}))vt.call(e,t)&&De(l,t,e[t]);if(Me)for(var t of Me(e))yt.call(e,t)&&De(l,t,e[t]);return l},q=(l,e)=>_t(l,gt(e));var W=(l,e,t)=>new Promise((s,i)=>{var r=h=>{try{a(t.next(h))}catch(c){i(c)}},o=h=>{try{a(t.throw(h))}catch(c){i(c)}},a=h=>h.done?s(h.value):Promise.resolve(h.value).then(r,o);a((t=t.apply(l,e)).next())});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const F=require("three"),Ct=require("three/examples/jsm/misc/Timer"),Et=require("@tweenjs/tween.js"),Ot=require("deepmerge"),Tt=require("stats-gl"),Se=require("./isPlainObject.js"),B=require("./index2.js"),xt=require("three/examples/jsm/helpers/RectAreaLightHelper"),wt=require("three/examples/jsm/helpers/ViewHelper"),bt=require("three/examples/jsm/controls/TransformControls"),Re=require("three/examples/jsm/postprocessing/EffectComposer"),Lt=require("three/examples/jsm/postprocessing/RenderPass"),Pt=require("three/examples/jsm/postprocessing/SSAOPass"),St=require("three/examples/jsm/postprocessing/Pass"),At=require("three/examples/jsm/postprocessing/OutputPass"),Mt=require("three/examples/jsm/postprocessing/ShaderPass"),Dt=require("three/examples/jsm/postprocessing/UnrealBloomPass");require("three/examples/jsm/renderers/CSS2DRenderer");require("three/examples/jsm/renderers/CSS3DRenderer");require("d3-geo");require("d3-geo-projection");require("three/examples/jsm/lights/RectAreaLightUniformsLib");require("three/examples/jsm/lines/LineSegments2");require("three/examples/jsm/lines/LineSegmentsGeometry");require("three/examples/jsm/lines/LineMaterial");require("three-bvh-csg");const Ue=require("three/examples/jsm/loaders/GLTFLoader"),Rt=require("three/examples/jsm/loaders/DRACOLoader"),Ut=require("three/examples/jsm/loaders/EXRLoader"),zt=require("three/examples/jsm/loaders/LottieLoader"),Pe=require("esus-lite");function et(l){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const t in l)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(l,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>l[t]})}}return e.default=l,Object.freeze(e)}const O=et(F),Ce=et(Et),D={LEFT:1,RIGHT:2,MIDDLE:4},p=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768}),G={NONE:0,IN:1,OUT:-1};function Y(l){return l.isPerspectiveCamera}function V(l){return l.isOrthographicCamera}const K=Math.PI*2,ze=Math.PI/2,tt=1e-5,te=Math.PI/180;function I(l,e,t){return Math.max(e,Math.min(t,l))}function M(l,e=tt){return Math.abs(l)<e}function P(l,e,t=tt){return M(l-e,t)}function Fe(l,e){return Math.round(l/e)*e}function se(l){return isFinite(l)?l:l<0?-Number.MAX_VALUE:Number.MAX_VALUE}function ie(l){return Math.abs(l)<Number.MAX_VALUE?l:l*(1/0)}function he(l,e,t,s,i=1/0,r){s=Math.max(1e-4,s);const o=2/s,a=o*r,h=1/(1+a+.48*a*a+.235*a*a*a);let c=l-e;const f=e,d=i*s;c=I(c,-d,d),e=l-c;const C=(t.value+o*c)*r;t.value=(t.value-o*C)*h;let v=e+(c+C)*h;return f-l>0==v>f&&(v=f,t.value=(v-f)/r),v}function ke(l,e,t,s,i=1/0,r,o){s=Math.max(1e-4,s);const a=2/s,h=a*r,c=1/(1+h+.48*h*h+.235*h*h*h);let f=e.x,d=e.y,C=e.z,v=l.x-f,m=l.y-d,u=l.z-C;const _=f,n=d,g=C,E=i*s,y=E*E,w=v*v+m*m+u*u;if(w>y){const ye=Math.sqrt(w);v=v/ye*E,m=m/ye*E,u=u/ye*E}f=l.x-v,d=l.y-m,C=l.z-u;const T=(t.x+a*v)*r,S=(t.y+a*m)*r,R=(t.z+a*u)*r;t.x=(t.x-a*T)*c,t.y=(t.y-a*S)*c,t.z=(t.z-a*R)*c,o.x=f+(v+T)*c,o.y=d+(m+S)*c,o.z=C+(u+R)*c;const ae=_-l.x,le=n-l.y,dt=g-l.z,pt=o.x-_,mt=o.y-n,ut=o.z-g;return ae*pt+le*mt+dt*ut>0&&(o.x=_,o.y=n,o.z=g,t.x=(o.x-_)/r,t.y=(o.y-n)/r,t.z=(o.z-g)/r),o}function Ee(l,e){e.set(0,0),l.forEach(t=>{e.x+=t.clientX,e.y+=t.clientY}),e.x/=l.length,e.y/=l.length}function Oe(l,e){return V(l)?(console.warn(`${e} is not supported in OrthographicCamera`),!0):!1}class Ft{constructor(){this._listeners={}}addEventListener(e,t){const s=this._listeners;s[e]===void 0&&(s[e]=[]),s[e].indexOf(t)===-1&&s[e].push(t)}hasEventListener(e,t){const s=this._listeners;return s[e]!==void 0&&s[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners[e];if(i!==void 0){const r=i.indexOf(t);r!==-1&&i.splice(r,1)}}removeAllEventListeners(e){if(!e){this._listeners={};return}Array.isArray(this._listeners[e])&&(this._listeners[e].length=0)}dispatchEvent(e){const s=this._listeners[e.type];if(s!==void 0){e.target=this;const i=s.slice(0);for(let r=0,o=i.length;r<o;r++)i[r].call(this,e)}}}const ce=1/8,kt=/Mac/.test(navigator.platform);let x,Ie,de,Te,z,b,L,X,re,j,H,Z,je,He,k,oe,$,Ne,xe,Ve,we,be,pe;class ee extends Ft{static install(e){x=e.THREE,Ie=Object.freeze(new x.Vector3(0,0,0)),de=Object.freeze(new x.Vector3(0,1,0)),Te=Object.freeze(new x.Vector3(0,0,1)),z=new x.Vector2,b=new x.Vector3,L=new x.Vector3,X=new x.Vector3,re=new x.Vector3,j=new x.Vector3,H=new x.Vector3,Z=new x.Vector3,je=new x.Vector3,He=new x.Vector3,k=new x.Spherical,oe=new x.Spherical,$=new x.Box3,Ne=new x.Box3,xe=new x.Sphere,Ve=new x.Quaternion,we=new x.Quaternion,be=new x.Matrix4,pe=new x.Raycaster}static get ACTION(){return p}constructor(e,t){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=p.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._dragNeedsUpdate=!0,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=G.NONE,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new x.Vector3,this._focalOffsetVelocity=new x.Vector3,this._zoomVelocity={value:0},this._truckInternal=(n,g,E)=>{let y,w;if(Y(this._camera)){const T=b.copy(this._camera.position).sub(this._target),S=this._camera.getEffectiveFOV()*te,R=T.length()*Math.tan(S*.5);y=this.truckSpeed*n*R/this._elementRect.height,w=this.truckSpeed*g*R/this._elementRect.height}else if(V(this._camera)){const T=this._camera;y=n*(T.right-T.left)/T.zoom/this._elementRect.width,w=g*(T.top-T.bottom)/T.zoom/this._elementRect.height}else return;this.verticalDragToForward?(E?this.setFocalOffset(this._focalOffsetEnd.x+y,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(y,0,!0),this.forward(-w,!0)):E?this.setFocalOffset(this._focalOffsetEnd.x+y,this._focalOffsetEnd.y+w,this._focalOffsetEnd.z,!0):this.truck(y,w,!0)},this._rotateInternal=(n,g)=>{const E=K*this.azimuthRotateSpeed*n/this._elementRect.height,y=K*this.polarRotateSpeed*g/this._elementRect.height;this.rotate(E,y,!0)},this._dollyInternal=(n,g,E)=>{const y=Math.pow(.95,-n*this.dollySpeed),w=this._sphericalEnd.radius,T=this._sphericalEnd.radius*y,S=I(T,this.minDistance,this.maxDistance),R=S-T;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(T,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(R,!0),this._dollyToNoClamp(S,!0)):this._dollyToNoClamp(S,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?T:S)-w,this._dollyControlCoord.set(g,E)),this._lastDollyDirection=Math.sign(-n)},this._zoomInternal=(n,g,E)=>{const y=Math.pow(.95,n*this.dollySpeed),w=this._zoom,T=this._zoom*y;this.zoomTo(T,!0),this.dollyToCursor&&(this._changedZoom+=T-w,this._dollyControlCoord.set(g,E))},typeof x=="undefined"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=new x.Quaternion().setFromUnitVectors(this._camera.up,de),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=p.NONE,this._target=new x.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new x.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new x.Spherical().setFromVector3(b.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new x.Vector3,new x.Vector3,new x.Vector3,new x.Vector3],this._updateNearPlaneCorners(),this._boundary=new x.Box3(new x.Vector3(-1/0,-1/0,-1/0),new x.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new x.Vector2,this.mouseButtons={left:p.ROTATE,middle:p.DOLLY,right:p.TRUCK,wheel:Y(this._camera)?p.DOLLY:V(this._camera)?p.ZOOM:p.NONE},this.touches={one:p.TOUCH_ROTATE,two:Y(this._camera)?p.TOUCH_DOLLY_TRUCK:V(this._camera)?p.TOUCH_ZOOM_TRUCK:p.NONE,three:p.TOUCH_TRUCK};const s=new x.Vector2,i=new x.Vector2,r=new x.Vector2,o=n=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const y=this._domElement.getBoundingClientRect(),w=(n.clientX-y.left)/(y.right-y.left),T=(n.clientY-y.top)/(y.bottom-y.top);if(w<this._interactiveArea.left||w>this._interactiveArea.right||T<this._interactiveArea.top||T>this._interactiveArea.bottom)return}const g=n.pointerType!=="mouse"?null:(n.buttons&D.LEFT)===D.LEFT?D.LEFT:(n.buttons&D.MIDDLE)===D.MIDDLE?D.MIDDLE:(n.buttons&D.RIGHT)===D.RIGHT?D.RIGHT:null;if(g!==null){const y=this._findPointerByMouseButton(g);y&&this._disposePointer(y)}if((n.buttons&D.LEFT)===D.LEFT&&this._lockedPointer)return;const E={pointerId:n.pointerId,clientX:n.clientX,clientY:n.clientY,deltaX:0,deltaY:0,mouseButton:g};this._activePointers.push(E),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),this._isDragging=!0,C(n)},a=n=>{n.cancelable&&n.preventDefault();const g=n.pointerId,E=this._lockedPointer||this._findPointerById(g);if(E){if(E.clientX=n.clientX,E.clientY=n.clientY,E.deltaX=n.movementX,E.deltaY=n.movementY,this._state=0,n.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else(!this._isDragging&&this._lockedPointer||this._isDragging&&(n.buttons&D.LEFT)===D.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(n.buttons&D.MIDDLE)===D.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(n.buttons&D.RIGHT)===D.RIGHT&&(this._state=this._state|this.mouseButtons.right);v()}},h=n=>{const g=this._findPointerById(n.pointerId);if(!(g&&g===this._lockedPointer)){if(g&&this._disposePointer(g),n.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=p.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=p.NONE;m()}};let c=-1;const f=n=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===p.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const T=this._domElement.getBoundingClientRect(),S=(n.clientX-T.left)/(T.right-T.left),R=(n.clientY-T.top)/(T.bottom-T.top);if(S<this._interactiveArea.left||S>this._interactiveArea.right||R<this._interactiveArea.top||R>this._interactiveArea.bottom)return}if(n.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===p.ROTATE||this.mouseButtons.wheel===p.TRUCK){const T=performance.now();c-T<1e3&&this._getClientRect(this._elementRect),c=T}const g=kt?-1:-3,E=n.deltaMode===1?n.deltaY/g:n.deltaY/(g*10),y=this.dollyToCursor?(n.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,w=this.dollyToCursor?(n.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case p.ROTATE:{this._rotateInternal(n.deltaX,n.deltaY),this._isUserControllingRotate=!0;break}case p.TRUCK:{this._truckInternal(n.deltaX,n.deltaY,!1),this._isUserControllingTruck=!0;break}case p.OFFSET:{this._truckInternal(n.deltaX,n.deltaY,!0),this._isUserControllingOffset=!0;break}case p.DOLLY:{this._dollyInternal(-E,y,w),this._isUserControllingDolly=!0;break}case p.ZOOM:{this._zoomInternal(-E,y,w),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},d=n=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===ee.ACTION.NONE){const g=n instanceof PointerEvent?n.pointerId:0,E=this._findPointerById(g);E&&this._disposePointer(E),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h);return}n.preventDefault()}},C=n=>{if(!this._enabled)return;if(Ee(this._activePointers,z),this._getClientRect(this._elementRect),s.copy(z),i.copy(z),this._activePointers.length>=2){const E=z.x-this._activePointers[1].clientX,y=z.y-this._activePointers[1].clientY,w=Math.sqrt(E*E+y*y);r.set(0,w);const T=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,S=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;i.set(T,S)}if(this._state=0,!n)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in n&&n.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else!this._lockedPointer&&(n.buttons&D.LEFT)===D.LEFT&&(this._state=this._state|this.mouseButtons.left),(n.buttons&D.MIDDLE)===D.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(n.buttons&D.RIGHT)===D.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&p.ROTATE)===p.ROTATE||(this._state&p.TOUCH_ROTATE)===p.TOUCH_ROTATE||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&p.TRUCK)===p.TRUCK||(this._state&p.TOUCH_TRUCK)===p.TOUCH_TRUCK||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&p.DOLLY)===p.DOLLY||(this._state&p.TOUCH_DOLLY)===p.TOUCH_DOLLY||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&p.ZOOM)===p.ZOOM||(this._state&p.TOUCH_ZOOM)===p.TOUCH_ZOOM||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&p.OFFSET)===p.OFFSET||(this._state&p.TOUCH_OFFSET)===p.TOUCH_OFFSET||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},v=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,Ee(this._activePointers,z);const g=this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,E=g?-g.deltaX:i.x-z.x,y=g?-g.deltaY:i.y-z.y;if(i.copy(z),((this._state&p.ROTATE)===p.ROTATE||(this._state&p.TOUCH_ROTATE)===p.TOUCH_ROTATE||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(E,y),this._isUserControllingRotate=!0),(this._state&p.DOLLY)===p.DOLLY||(this._state&p.ZOOM)===p.ZOOM){const w=this.dollyToCursor?(s.x-this._elementRect.x)/this._elementRect.width*2-1:0,T=this.dollyToCursor?(s.y-this._elementRect.y)/this._elementRect.height*-2+1:0,S=this.dollyDragInverted?-1:1;(this._state&p.DOLLY)===p.DOLLY?(this._dollyInternal(S*y*ce,w,T),this._isUserControllingDolly=!0):(this._zoomInternal(S*y*ce,w,T),this._isUserControllingZoom=!0)}if((this._state&p.TOUCH_DOLLY)===p.TOUCH_DOLLY||(this._state&p.TOUCH_ZOOM)===p.TOUCH_ZOOM||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_ZOOM_ROTATE)===p.TOUCH_ZOOM_ROTATE){const w=z.x-this._activePointers[1].clientX,T=z.y-this._activePointers[1].clientY,S=Math.sqrt(w*w+T*T),R=r.y-S;r.set(0,S);const ae=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,le=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&p.TOUCH_DOLLY)===p.TOUCH_DOLLY||(this._state&p.TOUCH_DOLLY_ROTATE)===p.TOUCH_DOLLY_ROTATE||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET?(this._dollyInternal(R*ce,ae,le),this._isUserControllingDolly=!0):(this._zoomInternal(R*ce,ae,le),this._isUserControllingZoom=!0)}((this._state&p.TRUCK)===p.TRUCK||(this._state&p.TOUCH_TRUCK)===p.TOUCH_TRUCK||(this._state&p.TOUCH_DOLLY_TRUCK)===p.TOUCH_DOLLY_TRUCK||(this._state&p.TOUCH_ZOOM_TRUCK)===p.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(E,y,!1),this._isUserControllingTruck=!0),((this._state&p.OFFSET)===p.OFFSET||(this._state&p.TOUCH_OFFSET)===p.TOUCH_OFFSET||(this._state&p.TOUCH_DOLLY_OFFSET)===p.TOUCH_DOLLY_OFFSET||(this._state&p.TOUCH_ZOOM_OFFSET)===p.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(E,y,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},m=()=>{Ee(this._activePointers,z),i.copy(z),this._dragNeedsUpdate=!1,(this._activePointers.length===0||this._activePointers.length===1&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),this._activePointers.length===0&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{!this._enabled||!this._domElement||(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",u),this._domElement.ownerDocument.addEventListener("pointerlockerror",_),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),C())},this.unlockPointer=()=>{var n,g,E;this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),(n=this._domElement)===null||n===void 0||n.ownerDocument.exitPointerLock(),(g=this._domElement)===null||g===void 0||g.ownerDocument.removeEventListener("pointerlockchange",u),(E=this._domElement)===null||E===void 0||E.ownerDocument.removeEventListener("pointerlockerror",_),this.cancel()};const u=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},_=()=>{this.unlockPointer()};this._addAllEventListeners=n=>{this._domElement=n,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",o),this._domElement.addEventListener("pointercancel",h),this._domElement.addEventListener("wheel",f,{passive:!1}),this._domElement.addEventListener("contextmenu",d)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",o),this._domElement.removeEventListener("pointercancel",h),this._domElement.removeEventListener("wheel",f,{passive:!1}),this._domElement.removeEventListener("contextmenu",d),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("pointerlockchange",u),this._domElement.ownerDocument.removeEventListener("pointerlockerror",_))},this.cancel=()=>{this._state!==p.NONE&&(this._state=p.NONE,this._activePointers.length=0,m())},t&&this.connect(t),this.update(0)}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}set interactiveArea(e){this._interactiveArea.width=I(e.width,0,1),this._interactiveArea.height=I(e.height,0,1),this._interactiveArea.x=I(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=I(e.y,0,1-this._interactiveArea.height)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,s=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,s)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,s=!1){this._isUserControllingRotate=!1;const i=I(e,this.minAzimuthAngle,this.maxAzimuthAngle),r=I(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=i,this._sphericalEnd.phi=r,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,s||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const o=!s||P(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&P(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(o)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=G.NONE,this._changedDolly=0,this._dollyToNoClamp(I(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const s=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const o=this._collisionTest(),a=P(o,this._spherical.radius);if(!(s>e)&&a)return Promise.resolve();this._sphericalEnd.radius=Math.min(e,o)}else this._sphericalEnd.radius=e;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);const r=!t||P(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(r)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(re).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const s=!t||P(this._target.x,this._targetEnd.x,this.restThreshold)&&P(this._target.y,this._targetEnd.y,this.restThreshold)&&P(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=I(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const s=!t||P(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(s)}pan(e,t,s=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,s)}truck(e,t,s=!1){this._camera.updateMatrix(),j.setFromMatrixColumn(this._camera.matrix,0),H.setFromMatrixColumn(this._camera.matrix,1),j.multiplyScalar(e),H.multiplyScalar(-t);const i=b.copy(j).add(H),r=L.copy(this._targetEnd).add(i);return this.moveTo(r.x,r.y,r.z,s)}forward(e,t=!1){b.setFromMatrixColumn(this._camera.matrix,0),b.crossVectors(this._camera.up,b),b.multiplyScalar(e);const s=L.copy(this._targetEnd).add(b);return this.moveTo(s.x,s.y,s.z,t)}elevate(e,t=!1){return b.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+b.x,this._targetEnd.y+b.y,this._targetEnd.z+b.z,t)}moveTo(e,t,s,i=!1){this._isUserControllingTruck=!1;const r=b.set(e,t,s).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,r,this.boundaryFriction),this._needsUpdate=!0,i||this._target.copy(this._targetEnd);const o=!i||P(this._target.x,this._targetEnd.x,this.restThreshold)&&P(this._target.y,this._targetEnd.y,this.restThreshold)&&P(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(o)}lookInDirectionOf(e,t,s,i=!1){const a=b.set(e,t,s).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius).add(this._targetEnd);return this.setPosition(a.x,a.y,a.z,i)}fitToBox(e,t,{cover:s=!1,paddingLeft:i=0,paddingRight:r=0,paddingBottom:o=0,paddingTop:a=0}={}){const h=[],c=e.isBox3?$.copy(e):$.setFromObject(e);c.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const f=Fe(this._sphericalEnd.theta,ze),d=Fe(this._sphericalEnd.phi,ze);h.push(this.rotateTo(f,d,t));const C=b.setFromSpherical(this._sphericalEnd).normalize(),v=Ve.setFromUnitVectors(C,Te),m=P(Math.abs(C.y),1);m&&v.multiply(we.setFromAxisAngle(de,f)),v.multiply(this._yAxisUpSpaceInverse);const u=Ne.makeEmpty();L.copy(c.min).applyQuaternion(v),u.expandByPoint(L),L.copy(c.min).setX(c.max.x).applyQuaternion(v),u.expandByPoint(L),L.copy(c.min).setY(c.max.y).applyQuaternion(v),u.expandByPoint(L),L.copy(c.max).setZ(c.min.z).applyQuaternion(v),u.expandByPoint(L),L.copy(c.min).setZ(c.max.z).applyQuaternion(v),u.expandByPoint(L),L.copy(c.max).setY(c.min.y).applyQuaternion(v),u.expandByPoint(L),L.copy(c.max).setX(c.min.x).applyQuaternion(v),u.expandByPoint(L),L.copy(c.max).applyQuaternion(v),u.expandByPoint(L),u.min.x-=i,u.min.y-=o,u.max.x+=r,u.max.y+=a,v.setFromUnitVectors(Te,C),m&&v.premultiply(we.invert()),v.premultiply(this._yAxisUpSpace);const _=u.getSize(b),n=u.getCenter(L).applyQuaternion(v);if(Y(this._camera)){const g=this.getDistanceToFitBox(_.x,_.y,_.z,s);h.push(this.moveTo(n.x,n.y,n.z,t)),h.push(this.dollyTo(g,t)),h.push(this.setFocalOffset(0,0,0,t))}else if(V(this._camera)){const g=this._camera,E=g.right-g.left,y=g.top-g.bottom,w=s?Math.max(E/_.x,y/_.y):Math.min(E/_.x,y/_.y);h.push(this.moveTo(n.x,n.y,n.z,t)),h.push(this.zoomTo(w,t)),h.push(this.setFocalOffset(0,0,0,t))}return Promise.all(h)}fitToSphere(e,t){const s=[],r="isObject3D"in e?ee.createBoundingSphere(e,xe):xe.copy(e);if(s.push(this.moveTo(r.center.x,r.center.y,r.center.z,t)),Y(this._camera)){const o=this.getDistanceToFitSphere(r.radius);s.push(this.dollyTo(o,t))}else if(V(this._camera)){const o=this._camera.right-this._camera.left,a=this._camera.top-this._camera.bottom,h=2*r.radius,c=Math.min(o/h,a/h);s.push(this.zoomTo(c,t))}return s.push(this.setFocalOffset(0,0,0,t)),Promise.all(s)}setLookAt(e,t,s,i,r,o,a=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=G.NONE,this._changedDolly=0;const h=L.set(i,r,o),c=b.set(e,t,s);this._targetEnd.copy(h),this._sphericalEnd.setFromVector3(c.sub(h).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,a||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const f=!a||P(this._target.x,this._targetEnd.x,this.restThreshold)&&P(this._target.y,this._targetEnd.y,this.restThreshold)&&P(this._target.z,this._targetEnd.z,this.restThreshold)&&P(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&P(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&P(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(f)}lerpLookAt(e,t,s,i,r,o,a,h,c,f,d,C,v,m=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=G.NONE,this._changedDolly=0;const u=b.set(i,r,o),_=L.set(e,t,s);k.setFromVector3(_.sub(u).applyQuaternion(this._yAxisUpSpace));const n=X.set(f,d,C),g=L.set(a,h,c);oe.setFromVector3(g.sub(n).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(u.lerp(n,v));const E=oe.theta-k.theta,y=oe.phi-k.phi,w=oe.radius-k.radius;this._sphericalEnd.set(k.radius+w*v,k.phi+y*v,k.theta+E*v),this.normalizeRotations(),this._needsUpdate=!0,m||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const T=!m||P(this._target.x,this._targetEnd.x,this.restThreshold)&&P(this._target.y,this._targetEnd.y,this.restThreshold)&&P(this._target.z,this._targetEnd.z,this.restThreshold)&&P(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&P(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&P(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(T)}setPosition(e,t,s,i=!1){return this.setLookAt(e,t,s,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,i)}setTarget(e,t,s,i=!1){const r=this.getPosition(b),o=this.setLookAt(r.x,r.y,r.z,e,t,s,i);return this._sphericalEnd.phi=I(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),o}setFocalOffset(e,t,s,i=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,s),this._needsUpdate=!0,i||this._focalOffset.copy(this._focalOffsetEnd);const r=!i||P(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&P(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&P(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(r)}setOrbitPoint(e,t,s){this._camera.updateMatrixWorld(),j.setFromMatrixColumn(this._camera.matrixWorldInverse,0),H.setFromMatrixColumn(this._camera.matrixWorldInverse,1),Z.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=b.set(e,t,s),r=i.distanceTo(this._camera.position),o=i.sub(this._camera.position);j.multiplyScalar(o.x),H.multiplyScalar(o.y),Z.multiplyScalar(o.z),b.copy(j).add(H).add(Z),b.z=b.z+r,this.dollyTo(r,!1),this.setFocalOffset(-b.x,b.y,-b.z,!1),this.moveTo(e,t,s,!1)}setBoundary(e){if(!e){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,s,i){if(e===null){this._viewport=null;return}this._viewport=this._viewport||new x.Vector4,typeof e=="number"?this._viewport.set(e,t,s,i):this._viewport.copy(e)}getDistanceToFitBox(e,t,s,i=!1){if(Oe(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const r=e/t,o=this._camera.getEffectiveFOV()*te,a=this._camera.aspect;return((i?r>a:r<a)?t:e/a)*.5/Math.tan(o*.5)+s*.5}getDistanceToFitSphere(e){if(Oe(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*te,s=Math.atan(Math.tan(t*.5)*this._camera.aspect)*2,i=1<this._camera.aspect?t:s;return e/Math.sin(i*.5)}getTarget(e,t=!0){return(e&&e.isVector3?e:new x.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new x.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e||new x.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new x.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%K,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=K),this._spherical.theta+=K*Math.round((this._sphericalEnd.theta-this._spherical.theta)/K)}reset(e=!1){if(!P(this._camera.up.x,this._cameraUp0.x)||!P(this._camera.up.y,this._cameraUp0.y)||!P(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const s=this.getPosition(b);this.updateCameraUp(),this.setPosition(s.x,s.y,s.z)}const t=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,e),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,e),this.zoomTo(this._zoom0,e)];return Promise.all(t)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,de),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=b.subVectors(this._target,this._camera.position).normalize(),t=L.crossVectors(e,this._camera.up);this._camera.up.crossVectors(t,e).normalize(),this._camera.updateMatrixWorld();const s=this.getPosition(b);this.updateCameraUp(),this.setPosition(s.x,s.y,s.z)}update(e){const t=this._sphericalEnd.theta-this._spherical.theta,s=this._sphericalEnd.phi-this._spherical.phi,i=this._sphericalEnd.radius-this._spherical.radius,r=je.subVectors(this._targetEnd,this._target),o=He.subVectors(this._focalOffsetEnd,this._focalOffset),a=this._zoomEnd-this._zoom;if(M(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=he(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,d,1/0,e),this._needsUpdate=!0}if(M(s))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const d=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=he(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,d,1/0,e),this._needsUpdate=!0}if(M(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const d=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=he(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,d,this.maxSpeed,e),this._needsUpdate=!0}if(M(r.x)&&M(r.y)&&M(r.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const d=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;ke(this._target,this._targetEnd,this._targetVelocity,d,this.maxSpeed,e,this._target),this._needsUpdate=!0}if(M(o.x)&&M(o.y)&&M(o.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const d=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;ke(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,d,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(M(a))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const d=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=he(this._zoom,this._zoomEnd,this._zoomVelocity,d,1/0,e)}if(this.dollyToCursor){if(Y(this._camera)&&this._changedDolly!==0){const d=this._spherical.radius-this._lastDistance,C=this._camera,v=this._getCameraDirection(re),m=b.copy(v).cross(C.up).normalize();m.lengthSq()===0&&(m.x=1);const u=L.crossVectors(m,v),_=this._sphericalEnd.radius*Math.tan(C.getEffectiveFOV()*te*.5),g=(this._sphericalEnd.radius-d-this._sphericalEnd.radius)/this._sphericalEnd.radius,E=X.copy(this._targetEnd).add(m.multiplyScalar(this._dollyControlCoord.x*_*C.aspect)).add(u.multiplyScalar(this._dollyControlCoord.y*_)),y=b.copy(this._targetEnd).lerp(E,g),w=this._lastDollyDirection===G.IN&&this._spherical.radius<=this.minDistance,T=this._lastDollyDirection===G.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(w||T)){this._sphericalEnd.radius-=d,this._spherical.radius-=d;const R=L.copy(v).multiplyScalar(-d);y.add(R)}this._boundary.clampPoint(y,y);const S=L.subVectors(y,this._targetEnd);this._targetEnd.copy(y),this._target.add(S),this._changedDolly-=d,M(this._changedDolly)&&(this._changedDolly=0)}else if(V(this._camera)&&this._changedZoom!==0){const d=this._zoom-this._lastZoom,C=this._camera,v=b.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(C.near+C.far)/(C.near-C.far)).unproject(C),m=L.set(0,0,-1).applyQuaternion(C.quaternion),u=X.copy(v).add(m.multiplyScalar(-v.dot(C.up))),n=-(this._zoom-d-this._zoom)/this._zoom,g=this._getCameraDirection(re),E=this._targetEnd.dot(g),y=b.copy(this._targetEnd).lerp(u,n),w=y.dot(g),T=g.multiplyScalar(w-E);y.sub(T),this._boundary.clampPoint(y,y);const S=L.subVectors(y,this._targetEnd);this._targetEnd.copy(y),this._target.add(S),this._changedZoom-=d,M(this._changedZoom)&&(this._changedZoom=0)}}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0),this._dragNeedsUpdate=!0;const h=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,h),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!M(this._focalOffset.x)||!M(this._focalOffset.y)||!M(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),j.setFromMatrixColumn(this._camera.matrix,0),H.setFromMatrixColumn(this._camera.matrix,1),Z.setFromMatrixColumn(this._camera.matrix,2),j.multiplyScalar(this._focalOffset.x),H.multiplyScalar(-this._focalOffset.y),Z.multiplyScalar(this._focalOffset.z),b.copy(j).add(H).add(Z),this._camera.position.add(b)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),b.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const f=this._needsUpdate;return f&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):f?(this.dispatchEvent({type:"update"}),M(t,this.restThreshold)&&M(s,this.restThreshold)&&M(i,this.restThreshold)&&M(r.x,this.restThreshold)&&M(r.y,this.restThreshold)&&M(r.z,this.restThreshold)&&M(o.x,this.restThreshold)&&M(o.y,this.restThreshold)&&M(o.z,this.restThreshold)&&M(a,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!f&&this._updatedLastTime&&(this._hasRested||(this._hasRested=!0,this.dispatchEvent({type:"rest"})),this.dispatchEvent({type:"sleep"})),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=f,this._needsUpdate=!1,f}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:se(this.maxDistance),minZoom:this.minZoom,maxZoom:se(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:se(this.maxPolarAngle),minAzimuthAngle:se(this.minAzimuthAngle),maxAzimuthAngle:se(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:b.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(e,t=!1){const s=JSON.parse(e);this.enabled=s.enabled,this.minDistance=s.minDistance,this.maxDistance=ie(s.maxDistance),this.minZoom=s.minZoom,this.maxZoom=ie(s.maxZoom),this.minPolarAngle=s.minPolarAngle,this.maxPolarAngle=ie(s.maxPolarAngle),this.minAzimuthAngle=ie(s.minAzimuthAngle),this.maxAzimuthAngle=ie(s.maxAzimuthAngle),this.smoothTime=s.smoothTime,this.draggingSmoothTime=s.draggingSmoothTime,this.dollySpeed=s.dollySpeed,this.truckSpeed=s.truckSpeed,this.dollyToCursor=s.dollyToCursor,this.verticalDragToForward=s.verticalDragToForward,this._target0.fromArray(s.target0),this._position0.fromArray(s.position0),this._zoom0=s.zoom0,this._focalOffset0.fromArray(s.focalOffset0),this.moveTo(s.target[0],s.target[1],s.target[2],t),k.setFromVector3(b.fromArray(s.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(k.theta,k.phi,t),this.dollyTo(k.radius,t),this.zoomTo(s.zoom,t),this.setFocalOffset(s.focalOffset[0],s.focalOffset[1],s.focalOffset[2],t),this._needsUpdate=!0}connect(e){if(this._domElement){console.warn("camera-controls is already connected.");return}this._addAllEventListeners(e),this._getClientRect(this._elementRect)}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(e){return e.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(e){return this._getTargetDirection(e).negate()}_findPointerById(e){return this._activePointers.find(t=>t.pointerId===e)}_findPointerByMouseButton(e){return this._activePointers.find(t=>t.mouseButton===e)}_disposePointer(e){this._activePointers.splice(this._activePointers.indexOf(e),1)}_encloseToBoundary(e,t,s){const i=t.lengthSq();if(i===0)return e;const r=L.copy(t).add(e),a=this._boundary.clampPoint(r,X).sub(r),h=a.lengthSq();if(h===0)return e.add(t);if(h===i)return e;if(s===0)return e.add(t).add(a);{const c=1+s*h/t.dot(a);return e.add(L.copy(t).multiplyScalar(c)).add(a.multiplyScalar(1-s))}}_updateNearPlaneCorners(){if(Y(this._camera)){const e=this._camera,t=e.near,s=e.getEffectiveFOV()*te,i=Math.tan(s*.5)*t,r=i*e.aspect;this._nearPlaneCorners[0].set(-r,-i,0),this._nearPlaneCorners[1].set(r,-i,0),this._nearPlaneCorners[2].set(r,i,0),this._nearPlaneCorners[3].set(-r,i,0)}else if(V(this._camera)){const e=this._camera,t=1/e.zoom,s=e.left*t,i=e.right*t,r=e.top*t,o=e.bottom*t;this._nearPlaneCorners[0].set(s,r,0),this._nearPlaneCorners[1].set(i,r,0),this._nearPlaneCorners[2].set(i,o,0),this._nearPlaneCorners[3].set(s,o,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1)||Oe(this._camera,"_collisionTest"))return e;const s=this._getTargetDirection(re);be.lookAt(Ie,s,this._camera.up);for(let i=0;i<4;i++){const r=L.copy(this._nearPlaneCorners[i]);r.applyMatrix4(be);const o=X.addVectors(this._target,r);pe.set(o,s),pe.far=this._spherical.radius+1;const a=pe.intersectObjects(this.colliderMeshes);a.length!==0&&a[0].distance<e&&(e=a[0].distance)}return e}_getClientRect(e){if(!this._domElement)return;const t=this._domElement.getBoundingClientRect();return e.x=t.left,e.y=t.top,this._viewport?(e.x+=this._viewport.x,e.y+=t.height-this._viewport.w-this._viewport.y,e.width=this._viewport.z,e.height=this._viewport.w):(e.width=t.width,e.height=t.height),e}_createOnRestPromise(e){return e?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(t=>{const s=()=>{this.removeEventListener("rest",s),t()};this.addEventListener("rest",s)}))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new x.Sphere){const s=t,i=s.center;$.makeEmpty(),e.traverseVisible(o=>{o.isMesh&&$.expandByObject(o)}),$.getCenter(i);let r=0;return e.traverseVisible(o=>{if(!o.isMesh)return;const a=o,h=a.geometry.clone();h.applyMatrix4(a.matrixWorld);const f=h.attributes.position;for(let d=0,C=f.count;d<C;d++)b.fromBufferAttribute(f,d),r=Math.max(r,i.distanceToSquared(b))}),s.radius=Math.sqrt(r),s}}var Ae={exports:{}},J=typeof Reflect=="object"?Reflect:null,Be=J&&typeof J.apply=="function"?J.apply:function(e,t,s){return Function.prototype.apply.call(e,t,s)},ue;J&&typeof J.ownKeys=="function"?ue=J.ownKeys:Object.getOwnPropertySymbols?ue=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:ue=function(e){return Object.getOwnPropertyNames(e)};function It(l){console&&console.warn&&console.warn(l)}var st=Number.isNaN||function(e){return e!==e};function A(){A.init.call(this)}Ae.exports=A;Ae.exports.once=Vt;A.EventEmitter=A;A.prototype._events=void 0;A.prototype._eventsCount=0;A.prototype._maxListeners=void 0;var Ye=10;function ge(l){if(typeof l!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof l)}Object.defineProperty(A,"defaultMaxListeners",{enumerable:!0,get:function(){return Ye},set:function(l){if(typeof l!="number"||l<0||st(l))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+l+".");Ye=l}});A.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};A.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||st(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function it(l){return l._maxListeners===void 0?A.defaultMaxListeners:l._maxListeners}A.prototype.getMaxListeners=function(){return it(this)};A.prototype.emit=function(e){for(var t=[],s=1;s<arguments.length;s++)t.push(arguments[s]);var i=e==="error",r=this._events;if(r!==void 0)i=i&&r.error===void 0;else if(!i)return!1;if(i){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var h=r[e];if(h===void 0)return!1;if(typeof h=="function")Be(h,this,t);else for(var c=h.length,f=lt(h,c),s=0;s<c;++s)Be(f[s],this,t);return!0};function rt(l,e,t,s){var i,r,o;if(ge(t),r=l._events,r===void 0?(r=l._events=Object.create(null),l._eventsCount=0):(r.newListener!==void 0&&(l.emit("newListener",e,t.listener?t.listener:t),r=l._events),o=r[e]),o===void 0)o=r[e]=t,++l._eventsCount;else if(typeof o=="function"?o=r[e]=s?[t,o]:[o,t]:s?o.unshift(t):o.push(t),i=it(l),i>0&&o.length>i&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=l,a.type=e,a.count=o.length,It(a)}return l}A.prototype.addListener=function(e,t){return rt(this,e,t,!1)};A.prototype.on=A.prototype.addListener;A.prototype.prependListener=function(e,t){return rt(this,e,t,!0)};function jt(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function ot(l,e,t){var s={fired:!1,wrapFn:void 0,target:l,type:e,listener:t},i=jt.bind(s);return i.listener=t,s.wrapFn=i,i}A.prototype.once=function(e,t){return ge(t),this.on(e,ot(this,e,t)),this};A.prototype.prependOnceListener=function(e,t){return ge(t),this.prependListener(e,ot(this,e,t)),this};A.prototype.removeListener=function(e,t){var s,i,r,o,a;if(ge(t),i=this._events,i===void 0)return this;if(s=i[e],s===void 0)return this;if(s===t||s.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,s.listener||t));else if(typeof s!="function"){for(r=-1,o=s.length-1;o>=0;o--)if(s[o]===t||s[o].listener===t){a=s[o].listener,r=o;break}if(r<0)return this;r===0?s.shift():Ht(s,r),s.length===1&&(i[e]=s[0]),i.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};A.prototype.off=A.prototype.removeListener;A.prototype.removeAllListeners=function(e){var t,s,i;if(s=this._events,s===void 0)return this;if(s.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):s[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete s[e]),this;if(arguments.length===0){var r=Object.keys(s),o;for(i=0;i<r.length;++i)o=r[i],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=s[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this};function nt(l,e,t){var s=l._events;if(s===void 0)return[];var i=s[e];return i===void 0?[]:typeof i=="function"?t?[i.listener||i]:[i]:t?Nt(i):lt(i,i.length)}A.prototype.listeners=function(e){return nt(this,e,!0)};A.prototype.rawListeners=function(e){return nt(this,e,!1)};A.listenerCount=function(l,e){return typeof l.listenerCount=="function"?l.listenerCount(e):at.call(l,e)};A.prototype.listenerCount=at;function at(l){var e=this._events;if(e!==void 0){var t=e[l];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}A.prototype.eventNames=function(){return this._eventsCount>0?ue(this._events):[]};function lt(l,e){for(var t=new Array(e),s=0;s<e;++s)t[s]=l[s];return t}function Ht(l,e){for(;e+1<l.length;e++)l[e]=l[e+1];l.pop()}function Nt(l){for(var e=new Array(l.length),t=0;t<e.length;++t)e[t]=l[t].listener||l[t];return e}function Vt(l,e){return new Promise(function(t,s){function i(o){l.removeListener(e,r),s(o)}function r(){typeof l.removeListener=="function"&&l.removeListener("error",i),t([].slice.call(arguments))}ht(l,e,r,{once:!0}),e!=="error"&&Bt(l,i,{once:!0})})}function Bt(l,e,t){typeof l.on=="function"&&ht(l,"error",e,t)}function ht(l,e,t,s){if(typeof l.on=="function")s.once?l.once(e,t):l.on(e,t);else if(typeof l.addEventListener=="function")l.addEventListener(e,function i(r){s.once&&l.removeEventListener(e,i),t(r)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof l)}var ve=Ae.exports;const Yt={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:Se.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1};class Zt{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i}=e,{alpha:r,devicePixelRatio:o,antialias:a,powerPreference:h,toneMappingExposure:c,outputColorSpace:f,logarithmicDepthBuffer:d,preserveDrawingBuffer:C,stencil:v,depth:m}=i,u=new O.WebGLRenderer({alpha:r,antialias:a,powerPreference:h,logarithmicDepthBuffer:d,preserveDrawingBuffer:C,stencil:v,depth:m});u.setSize(t,s),u.setPixelRatio(o),u.toneMappingExposure=c,u.outputColorSpace=f,this.renderer=u}setSize(e,t){this.renderer.setSize(e,t)}setPixelRatio(e){this.renderer.setPixelRatio(e)}render(e,t){this.renderer.render(e,t)}setViewport(e){var h,c;const{x:t,y:s,width:i,height:r}=e,o=(h=e.scissor)!=null?h:!1,a=(c=e.scissorTest)!=null?c:!1;this.renderer.setViewport(t,s,i,r),o&&(this.renderer.setScissor(t,s,i,r),this.renderer.setScissorTest(a))}setViewPadding(e=0,t=0,s=0,i=0){const{width:r,height:o}=this.renderer.getSize(new O.Vector2),a={x:i,y:s,width:r-i-t,height:o-e-s};this.setViewport(a)}dispose(){var e,t;this.setSize(1,1),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}const qt={antialias:!0,devicePixelRatio:window.devicePixelRatio};class Wt{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i,renderer:r}=e,{devicePixelRatio:o,antialias:a}=i,h=new r({antialias:a});h.setSize(t,s),h.setPixelRatio(o),this.renderer=h}setSize(e,t){this.renderer.setSize(e,t)}render(e,t){this.renderer.render(e,t)}dispose(){var e,t;this.setSize(1,1),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose()}}let Gt=class{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}isEnabled(e){return(this.mask&(1<<e|0))!==0}};class ne{constructor(){this.event=new ve.EventEmitter,this.controllerMap=new Map,this.activeIndex=-1,this.activeControllerSet=new Set}addController(e,t){const s=new Gt;return s.disableAll(),t!==void 0&&s.set(t),this.controllerMap.set(e,s),t===this.activeIndex&&this.activeControllerSet.add(e),e}removePage(e,t){this.controllerMap.forEach((s,i)=>{s.isEnabled(e)&&(s.disable(e),s.mask===0&&(t==null||t(i),this.controllerMap.delete(i),this.activeControllerSet.delete(i)))})}setPageActive(e,t){this.activeIndex=e,this.activeControllerSet.clear(),this.controller=(Array.from(this.controllerMap.entries()).find(([s,i])=>{const r=i.isEnabled(e);return r&&this.activeControllerSet.add(s),t==null||t(s,r),r})||[])[0],this.event.emit("pageChange",this.controller)}dispose(){this.controllerMap.forEach((e,t)=>{e.set(0)}),this.removePage(0),this.controllerMap.clear(),this.event.removeAllListeners(),this.activeControllerSet.clear()}}const ct={fov:45,near:1,far:1e3,up:new O.Vector3(0,1,0)};class Kt extends ne{constructor(e){super(),this.width=0,this.height=0,this.width=e.width,this.height=e.height}get camera(){return this.controller}addPerspectiveCamera(e=ct,t){const{fov:s,far:i,near:r,up:o,aspect:a}=e,h=a!=null?a:this.width/this.height,c=new O.PerspectiveCamera(s,h,r,i);return c.up=o,this.addController(c,t)}setSize(e,t){this.width=e,this.height=t,this.controllerMap.forEach((s,i)=>{i instanceof O.PerspectiveCamera&&(i.aspect=e/t),i.updateProjectionMatrix()})}cloneCamera(e){const t=this.addPerspectiveCamera({fov:this.camera.fov,aspect:this.camera.aspect,near:this.camera.near,far:this.camera.far,up:this.camera.up},e);return t.position.copy(this.camera.position),t}sync(e){if(e.type==="PerspectiveCamera"){const t=e;(!this.camera.matrixWorld.equals(t.matrixWorld)||this.camera.far!==t.far||this.camera.near!==t.near||this.camera.fov!==t.fov||this.camera.aspect!==t.aspect)&&this.camera.copy(t)}else{const t=e,s=t.viewMatrix,i=t.inverseViewMatrix,r=new O.Matrix4(i[0],i[4],i[8],i[12],i[1],i[5],i[9],i[13],i[2],i[6],i[10],i[14],i[3],i[7],i[11],i[15]),o=new O.Matrix4(s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15]),{width:a,height:h}=this,c=a/h;(this.camera.fov!==t.fov||this.camera.aspect!==c||!this.camera.matrixWorld.equals(r)||!this.camera.matrixWorldInverse.equals(o))&&(this.camera.fov=t.fov,this.camera.updateProjectionMatrix(),this.camera.matrixAutoUpdate=!1,this.camera.matrixWorld.copy(r),this.camera.matrixWorldInverse.copy(o),this.camera.aspect=c,this.camera.updateProjectionMatrix())}}}const Xt={background:null};class $t extends ne{get scene(){return this.controller}constructor(e){super(),this.options=e}addScene(e,t){const s=new O.Scene;return e!=null&&e.background&&(s.background=e.background),this.addController(s,t)}removePage(e){super.removePage(e,t=>{const s=new B.ResourceTracker;s.track(t),s.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.visible=s})}}class Qt{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{sceneController:s}=this.options;let i=this.helpers[t];if(i===void 0){if(e.isScene)i=new O.AxesHelper(100);else if(e.isCamera)i=new O.CameraHelper(e);else if(e.isPointLight)i=new O.PointLightHelper(e,1);else if(e.isDirectionalLight)i=new O.DirectionalLightHelper(e,1);else if(e.isSpotLight)i=new O.SpotLightHelper(e);else if(e.isHemisphereLight)i=new O.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)i=new xt.RectAreaLightHelper(e);else{const r=new O.Box3;if(r.setFromObject(e,!0),r.isEmpty()===!1){i=new O.Box3Helper(r);const o=i.material;o.userData.object=e,o.depthTest=!1,o.transparent=!0}else return}s.scene.add(i),this.helpers[t]=i}}addViewHelper(){const{cameraController:e,container:t}=this.options,s=new wt.ViewHelper(e.camera,t);t.addEventListener("pointerdown",i=>{i.preventDefault(),s.handleClick(i)}),this.viewHelper=s}remove(e){var i;const t=e.uuid,{sceneController:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.scene.remove(r),delete this.helpers[t],(i=r.dispose)==null||i.call(r)}}removeAll(){Object.keys(this.helpers).forEach(e=>{this.remove({uuid:e})}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof O.AxesHelper||this.remove({uuid:e})})}update(e,t,s){var r,o;const{cameraController:i}=this.options;Object.values(this.helpers).forEach(a=>{if(a.update&&a.update(),a instanceof O.Box3Helper){const h=a.material,{object:c}=h.userData;c&&a.box.setFromObject(c,!0)}}),((r=this.viewHelper)==null?void 0:r.animating)===!0&&(this.viewHelper.update(e),(o=t.cameraControls)==null||o.setPosition(...i.camera.position.toArray()),this.viewHelper.center.copy(s))}renderViewHelper(e){if(!this.viewHelper)return;const t=e.autoClear;e.autoClear=!1,this.viewHelper.render(e),e.autoClear=t}dispose(){var e;this.helpers={},(e=this.viewHelper)==null||e.dispose()}}class Jt extends ne{constructor(e){super(),this.autoRotateSpeed=0,this.options=e,ee.install({THREE:O})}get cameraControls(){return this.controller}addCameraControls(e,t){const{domElement:s}=this.options.controlsParams,i=new ee(e,s);return i.setLookAt(0,0,400,0,0,0,!1),this.addController(i,t)}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}removePage(e){super.removePage(e,t=>{t.dispose()})}enable(){this.activeControllerSet.forEach(e=>{e.enabled=!0})}disable(){this.activeControllerSet.forEach(e=>{e.enabled=!1})}update(e){this.activeControllerSet.forEach(t=>{t.update(e)}),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*O.MathUtils.DEG2RAD)}}class es{constructor(e){this.event=new ve.EventEmitter;const{renderer:t,scene:s,camera:i}=e,r=new bt.TransformControls(i,t.domElement);if(r.getHelper){const o=r.getHelper();if(s.add(o),+O.REVISION<170){const a=r._root;a.dispose=()=>{a.traverse(h=>{h.geometry&&h.geometry.dispose(),h.material&&h.material.dispose()})},r.dispose=()=>{r.disconnect(),a.dispose()}}}else r instanceof O.Object3D&&s.add(r);this.controls=r,this.addEvent()}get detach(){return this.controls.detach.bind(this.controls)}get attach(){return this.controls.attach.bind(this.controls)}addEvent(){let e=null,t=null,s=null;const i=this.controls;i.addEventListener("change",()=>{const r=i.object;r!==void 0&&this.event.emit("change",r)}),i.addEventListener("mouseDown",()=>{const r=i.object;e=r.position.clone(),t=r.rotation.clone(),s=r.scale.clone(),this.event.emit("mouseDown",r)}),i.addEventListener("mouseUp",()=>{const r=i.object;if(r!==void 0)switch(i.getMode()){case"translate":e.equals(r.position)||this.event.emit("translate",r,r.position,e);break;case"rotate":t.equals(r.rotation)||this.event.emit("rotate",r,r.rotation,t);break;case"scale":s.equals(r.scale)||this.event.emit("scale",r,r.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const Ze=new F.Vector3,ts=new F.Quaternion,qe=new F.Vector3,N=new F.Matrix4,ss=new F.Matrix4;class is{constructor(e={}){const t=this;let s,i,r,o;const a={camera:{style:""},objects:new WeakMap},h=e.element!==void 0?e.element:document.createElement("div");h.style.overflow="hidden",this.domElement=h;const c=document.createElement("div");c.style.transformOrigin="0 0",c.style.pointerEvents="none",h.appendChild(c);const f=document.createElement("div");f.style.transformStyle="preserve-3d",c.appendChild(f),this.getSize=function(){return{width:s,height:i}},this.render=function(_,n){const g=n.projectionMatrix.elements[5]*o;n.view&&n.view.enabled?(c.style.transform=`translate( ${-n.view.offsetX*(s/n.view.width)}px, ${-n.view.offsetY*(i/n.view.height)}px )`,c.style.transform+=`scale( ${n.view.fullWidth/n.view.width}, ${n.view.fullHeight/n.view.height} )`):c.style.transform="",_.matrixWorldAutoUpdate===!0&&_.updateMatrixWorld(),n.parent===null&&n.matrixWorldAutoUpdate===!0&&n.updateMatrixWorld();let E,y;n.isOrthographicCamera&&(E=-(n.right+n.left)/2,y=(n.top+n.bottom)/2);const w=n.view&&n.view.enabled?n.view.height/n.view.fullHeight:1,T=n.isOrthographicCamera?`scale( ${w} )scale(`+g+")translate("+d(E)+"px,"+d(y)+"px)"+C(n.matrixWorldInverse):`scale( ${w} )translateZ(`+g+"px)"+C(n.matrixWorldInverse),R=(n.isPerspectiveCamera?"perspective("+g+"px) ":"")+T+"translate("+r+"px,"+o+"px)";a.camera.style!==R&&(f.style.transform=R,a.camera.style=R),u(_,_,n)},this.setSize=function(_,n){s=_,i=n,r=s/2,o=i/2,h.style.width=_+"px",h.style.height=n+"px",c.style.width=_+"px",c.style.height=n+"px",f.style.width=_+"px",f.style.height=n+"px"};function d(_){return Math.abs(_)<1e-10?0:_}function C(_){const n=_.elements;return"matrix3d("+d(n[0])+","+d(-n[1])+","+d(n[2])+","+d(n[3])+","+d(n[4])+","+d(-n[5])+","+d(n[6])+","+d(n[7])+","+d(n[8])+","+d(-n[9])+","+d(n[10])+","+d(n[11])+","+d(n[12])+","+d(-n[13])+","+d(n[14])+","+d(n[15])+")"}function v(_){const n=_.elements;return"translate(-50%,-50%)"+("matrix3d("+d(n[0])+","+d(n[1])+","+d(n[2])+","+d(n[3])+","+d(-n[4])+","+d(-n[5])+","+d(-n[6])+","+d(-n[7])+","+d(n[8])+","+d(n[9])+","+d(n[10])+","+d(n[11])+","+d(n[12])+","+d(n[13])+","+d(n[14])+","+d(n[15])+")")}function m(_){_.isCSS3DObject&&(_.element.style.display="none");for(let n=0,g=_.children.length;n<g;n++)m(_.children[n])}function u(_,n,g,E){if(_.visible===!1){m(_);return}if(_.isCSS3DObject){const y=_.layers.test(g.layers)===!0,w=_.element;if(w.style.display=y===!0?"":"none",y===!0){_.onBeforeRender(t,n,g);let T;_.isCSS3DSprite?(N.copy(g.matrixWorldInverse),N.transpose(),_.rotation2D!==0&&N.multiply(ss.makeRotationZ(_.rotation2D)),_.matrixWorld.decompose(Ze,ts,qe),N.setPosition(Ze),N.scale(qe),N.elements[3]=0,N.elements[7]=0,N.elements[11]=0,N.elements[15]=1,T=v(N)):T=v(_.matrixWorld);const S=a.objects.get(_);if(S===void 0||S.style!==T){w.style.transform=T;const R={style:T};a.objects.set(_,R)}w.parentNode!==f&&f.appendChild(w),_.onAfterRender(t,n,g)}}for(let y=0,w=_.children.length;y<w;y++)u(_.children[y],n,g)}}}const Q=new F.Vector3,We=new F.Matrix4,Ge=new F.Matrix4,Ke=new F.Vector3,Xe=new F.Vector3;class rs{constructor(e={}){const t=this;let s,i,r,o;const a={objects:new WeakMap},h=e.element!==void 0?e.element:document.createElement("div");h.style.overflow="hidden",this.domElement=h,this.getSize=function(){return{width:s,height:i}},this.render=function(m,u){m.matrixWorldAutoUpdate===!0&&m.updateMatrixWorld(),u.parent===null&&u.matrixWorldAutoUpdate===!0&&u.updateMatrixWorld(),We.copy(u.matrixWorldInverse),Ge.multiplyMatrices(u.projectionMatrix,We),f(m,m,u),v(m)},this.setSize=function(m,u){s=m,i=u,r=s/2,o=i/2,h.style.width=m+"px",h.style.height=u+"px"};function c(m){m.isCSS2DObject&&(m.element.style.display="none");for(let u=0,_=m.children.length;u<_;u++)c(m.children[u])}function f(m,u,_){if(m.visible===!1){c(m);return}if(m.isCSS2DObject){Q.setFromMatrixPosition(m.matrixWorld),Q.applyMatrix4(Ge);const n=Q.z>=-1&&Q.z<=1&&m.layers.test(_.layers)===!0,g=m.element;g.style.display=n===!0?"":"none",n===!0&&(m.onBeforeRender(t,u,_),g.style.transform="translate("+-100*m.center.x+"%,"+-100*m.center.y+"%)translate("+(Q.x*r+r)+"px,"+(-Q.y*o+o)+"px)",g.parentNode!==h&&h.appendChild(g),m.onAfterRender(t,u,_));const E={distanceToCameraSquared:d(_,m)};a.objects.set(m,E)}for(let n=0,g=m.children.length;n<g;n++)f(m.children[n],u,_)}function d(m,u){return Ke.setFromMatrixPosition(m.matrixWorld),Xe.setFromMatrixPosition(u.matrixWorld),Ke.distanceToSquared(Xe)}function C(m){const u=[];return m.traverseVisible(function(_){_.isCSS2DObject&&u.push(_)}),u}function v(m){const u=C(m).sort(function(n,g){if(n.renderOrder!==g.renderOrder)return g.renderOrder-n.renderOrder;const E=a.objects.get(n).distanceToCameraSquared,y=a.objects.get(g).distanceToCameraSquared;return E-y}),_=u.length;for(let n=0,g=u.length;n<g;n++)u[n].element.style.zIndex=_-n}}}const $e={zIndex:"auto"};class os{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,i=s.offsetWidth,r=s.offsetHeight,o=e==="css2d"?new rs:new is;o.domElement.style.position="absolute",o.domElement.style.top="0",o.domElement.style.pointerEvents="none",o.domElement.style.zIndex=t.zIndex,o.setSize(i,r),s.appendChild(o.domElement),e==="css2d"?this.css2Drenderer=o:e==="css3d"&&(this.css3Drenderer=o)}setSize(e,t){var s,i;(s=this.css2Drenderer)==null||s.setSize(e,t),(i=this.css3Drenderer)==null||i.setSize(e,t)}render(e,t){var s,i;(s=this.css2Drenderer)==null||s.render(e,t),(i=this.css3Drenderer)==null||i.render(e,t)}dispose(){var e,t;(e=this.css2Drenderer)==null||e.domElement.remove(),(t=this.css3Drenderer)==null||t.domElement.remove(),this.css2Drenderer=void 0,this.css3Drenderer=void 0}}const ns={name:"OutputShader",uniforms:{tDiffuse:{value:null},toneMappingExposure:{value:1},premultiplieAlpha:{value:0}},vertexShader:`
2
2
  precision highp float;
3
3
 
4
4
  uniform mat4 modelViewMatrix;
@@ -91,4 +91,4 @@
91
91
  gl_FragColor = ( base_color + vec4( 1.0 ) * bloom_color );
92
92
  }
93
93
  }
94
- `,defines:{}}),"baseTexture");return e.needsSwap=!0,e},Pe=1,me=!1,hs=new O.MeshBasicMaterial({color:"black"}),cs=new O.PointsMaterial({color:"black",sizeAttenuation:!1}),ds=new O.PointsMaterial({color:"black",sizeAttenuation:!0}),ps=new O.SpriteMaterial({color:"black",sizeAttenuation:!0}),ms=new O.SpriteMaterial({color:"black",sizeAttenuation:!1}),us=new Y.MeshLineMaterial({color:"black",sizeAttenuation:0,lineWidth:0}),fs={kernelRadius:8,minDistance:.005,maxDistance:.1},_s={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},gs={multisampling:4,premultiplieAlpha:!1};class vs{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new O.Layers,this.bloomMaterials={},this.bloomVisible={},this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:o}=t;this.renderer=o;const{multisampling:a}=r,{maxSamples:h}=o.capabilities,c=o.getDrawingBufferSize(new O.Vector2),f=new O.WebGLRenderTarget(c.width,c.height,{samples:Math.min(a,h),type:O.HalfFloatType}),d=new Re.EffectComposer(o,f),C=this.getSize();d.setSize(C.width,C.height);const v=new Pt.RenderPass(s.scene,i.camera);d.addPass(v),this.scene=s.scene,this.camera=i.camera,this.finalComposer=d,this.renderPass=v,i.event.on("pageChange",m=>{this.changeCamera(m)}),s.event.on("pageChange",m=>{this.changeScene(m)})}changeCamera(e){this.renderPass.camera=e,this.camera=e}changeScene(e){this.renderPass.scene=e,this.ssaoPass&&(this.ssaoPass.scene=e),this.scene=e}addOutputPass(){const{premultiplieAlpha:e}=this.options.composerParams,t=new as;this.outputPass=t,this.setPremultiplieAlpha(e),this.finalComposer.addPass(t)}setPremultiplieAlpha(e){this.outputPass&&(this.outputPass.uniforms.premultiplieAlpha.value=e?1:0)}addSSAOPass(e){const{scene:t,camera:s,renderer:i}=this,r=i.getSize(new O.Vector2),o=r.width,a=r.height,h=new Lt.SSAOPass(t,s,o,a);h.kernelRadius=e.kernelRadius,h.minDistance=e.minDistance,h.maxDistance=e.maxDistance,this.ssaoPass=h,this.finalComposer.addPass(h)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:o}=e,a=new Dt.UnrealBloomPass(new O.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=a;const h=new Re.EffectComposer(t);h.renderToScreen=!1,h.addPass(this.renderPass),h.addPass(a),this.bloomComposer=h;const c=ls(h);c.uniforms.bloomAlphaType.value=o,this.bloomComposer=h,this.finalComposer.addPass(c),this.mixPass=c,this.bloomLayer.set(Pe)}toggleBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}const{object3d:s}=e;if(!s)return;let i=t;t===void 0&&(i=!this.bloomSelection.has(s)),i?(this.bloomSelection.add(s),s.traverse(r=>{r.layers.enable(Pe)})):(this.bloomSelection.delete(s),s.traverse(r=>{r.layers.disable(Pe)})),this.bloomSelection.size===0?this.bloomComposerActive=!1:this.bloomComposerActive=!0}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){var s;(s=this.bloomComposer)==null||s.setSize(e,t),this.finalComposer.setSize(e,t)}setPixelRatio(e){var t;(t=this.bloomComposer)==null||t.setPixelRatio(e),this.finalComposer.setPixelRatio(e)}darkenNonBloomed(){const e=[],t=[];this.scene.children.forEach(s=>{s.isTransformControls||s.isTransformControlsRoot||s.type==="RectAreaLightHelper"?e.push(s):t.push(s)}),e.forEach(s=>{this.bloomVisible[s.uuid]=s.visible,s.visible=!1}),t.forEach(s=>{s.traverse(i=>{const r=i,o=i,a=i;r.material&&this.bloomLayer.test(r.layers)===!1&&(this.bloomMaterials[r.uuid]=r.material,o.isSprite?o.material.sizeAttenuation?o.material=ps:o.material=ms:r.material instanceof Y.MeshLineMaterial?r.material=us:a.isPoints?a.material.sizeAttenuation?a.material=ds:a.material=cs:r.material=hs)})})}restoreNonBloomed(){this.scene.traverse(e=>{const t=e;this.bloomMaterials[t.uuid]?(t.material=this.bloomMaterials[t.uuid],delete this.bloomMaterials[t.uuid]):this.bloomVisible[t.uuid]!==void 0&&(t.visible=this.bloomVisible[t.uuid],delete this.bloomVisible[t.uuid])})}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed()):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new O.Vector2)}render(){if(!this.active)return;const{cameraController:e,rendererController:t,sceneController:s}=this.options;if(this.pipViewportState){e.setPageActive(s.activeIndex);const i=this.getSize();t.setViewport({x:0,y:0,width:i.width,height:i.height,scissor:!0,scissorTest:!1}),this.finalComposerRender(),e.setPageActive(31),t.setViewport(j(U({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender()}else this.finalComposerRender()}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}class Qe extends O.Loader{constructor(e){super(e),this.options={type:"image"}}setOptions(e){return this.options=e,this}load(e,t,s,i){let r,o;this.options.type==="image"?(o=document.createElement("img"),r=new O.Texture(o)):this.options.type==="video"?(o=document.createElement("video"),o.preload="auto",o.autoplay=!1,o.loop=!1,o.muted=!0,o.setAttribute("webkit-playsinline","webkit-playsinline"),o.setAttribute("playsinline",""),r=new O.VideoTexture(o)):r=new O.Texture;const a=new O.FileLoader(this.manager);return a.setResponseType("blob"),a.setRequestHeader(this.requestHeader),a.setPath(this.path),a.setWithCredentials(this.withCredentials),a.load(e,h=>{let c=h;const f=e.split(".").pop(),d=this.options.type==="image"?`image/${f||"png"}`:`video/${f||"mp4"}`;c=c.slice(0,h.size,d);const C=()=>{o.removeEventListener("load",v,!1),o.removeEventListener("error",m,!1)},v=()=>{C(),r.needsUpdate=!0,t&&t(r)},m=_=>{C(),i&&i(_),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",v,!1),o.addEventListener("error",m,!1);const u=window.URL.createObjectURL(c);o.src=u},s,i),r}}class ys extends O.Loader{constructor(e){super(e)}load(e,t,s,i){const r=new O.FileLoader(this.manager);r.setResponseType("blob"),r.setRequestHeader(this.requestHeader),r.setPath(this.path),r.setWithCredentials(this.withCredentials),r.load(e,o=>{const a=o,h=new DecompressionStream("gzip"),c=a.stream().pipeThrough(h);new Response(c).json().then(d=>{t==null||t(d)}).catch(d=>{i==null||i(d)})},s,i)}}const Cs={images:["png","jpg","jpeg","ico","webp","avif"],media:["mp4","webm","ogg"],gltf:["gltf","glb"],json:["json","geojson"],gzipJson:["json.gzip"],exr:["exr"],lottie:["lottie.json"]};class Es{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new ve.EventEmitter,this.options=U({simpleTexture4deleted:!1,prefix:""},e),this.loadingManager=new O.LoadingManager(()=>{},(t,s,i)=>{this.emit("progress",s,i)},t=>{console.warn(`Failed to load ${t}`)})}emit(e,...t){this.event.emit(e,...t)}on(e,t){this.event.on(e,t)}getAsset(e){const t=this.getAssetType(e);if(!t)return;const s=this.assets.get(e);if(!s){if((t==="images"||t==="media"||t==="exr")&&this.options.simpleTexture4deleted&&this.delLoadArr.includes(e))return new O.Texture;console.warn(`Asset ${e} not found`)}return s}getAssetType(e){var s;const t=(s=e.split(".").pop())==null?void 0:s.toLowerCase();if(t){if(e.endsWith("lottie.json"))return"lottie";if(e.endsWith("json.gzip"))return"gzipJson"}else return;for(const[i,r]of Object.entries(Cs))if(r.includes(t))return i}getLoader(e,t){if(e==="images")return this.textureLoader||(this.textureLoader=new Qe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Qe(this.loadingManager),this.videoTextureLoader.setOptions({type:"video"}),this.options.prefix&&this.videoTextureLoader.setPath(this.options.prefix)),this.videoTextureLoader;if(e==="gltf"&&(t!=null&&t.dracoPath))return this.dracoGltfLoader||(this.dracoGltfLoader=new Ue.GLTFLoader(this.loadingManager),this.dracoLoader=new Rt.DRACOLoader,this.dracoLoader.setDecoderPath(t==null?void 0:t.dracoPath),this.dracoGltfLoader.setDRACOLoader(this.dracoLoader),this.options.prefix&&this.dracoGltfLoader.setPath(this.options.prefix)),this.dracoGltfLoader;if(e==="gltf")return this.gltfLoader||(this.gltfLoader=new Ue.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new zt.LottieLoader(this.loadingManager),this.options.prefix&&this.lottieLoader.setPath(this.options.prefix)),this.lottieLoader;if(e==="gzipJson")return this.gzipJsonLoader||(this.gzipJsonLoader=new ys(this.loadingManager),this.options.prefix&&this.gzipJsonLoader.setPath(this.options.prefix)),this.gzipJsonLoader;if(e==="json")return this.jsonLoader||(this.jsonLoader=new O.FileLoader(this.loadingManager),this.jsonLoader.setResponseType("json"),this.options.prefix&&this.jsonLoader.setPath(this.options.prefix)),this.jsonLoader;if(e==="exr")return this.exrLoader||(this.exrLoader=new Ut.EXRLoader(this.loadingManager),this.options.prefix&&this.exrLoader.setPath(this.options.prefix)),this.exrLoader}add(e,t){typeof e=="string"&&(e=[e]),e.forEach(s=>{const i=U({src:s},t);this.loadObj.push(i)})}getSrcByAsset(e,t=this.assets){let s;return t.forEach((i,r)=>{i===e&&(s=r)}),s}get textureAssets(){const e=new Map;return this.assets.forEach((t,s)=>{(t instanceof O.Texture||t instanceof O.DataTexture||t instanceof O.VideoTexture)&&e.set(s,t)}),e}loadAll(){return W(this,null,function*(){const e=this.loadObj.filter(t=>!this.delLoadArr.includes(t.src));return yield Promise.all(e.map(t=>this.load(t.src,t)))})}load(e,t){return W(this,null,function*(){var a,h;const s=(a=t==null?void 0:t.type)!=null?a:this.getAssetType(e);if(!s)return;const i=(t==null?void 0:t.cache)!==!1,r=Le.makePromiseCreator();if(i){if(this.assets.has(e))return this.assets.get(e);this.assets.set(e,r.promise)}const o=this.getLoader(s,t);try{const c=yield o.loadAsync(e);if(this.assets.set(e,c),r.resolve(c),s==="images"||s==="media"||s==="exr"||s==="lottie"){(t==null?void 0:t.colorCorrection)!==!1&&Se.colorCorrection({texture:c});const f=(h=t==null?void 0:t.anisotropy)!=null?h:this.options.anisotropy;c.anisotropy=f}return c}catch(c){r.reject(`Failed to load ${e}`);return}})}getUnusedAssets(){const{scene:e}=this.options;if(!e)return[...this.delLoadArr];const t=new Set,s=this.textureAssets;e.traverse(r=>{const o=r;o.material&&(Array.isArray(o.material)?o.material:[o.material]).forEach(h=>{[h.map,h.emissiveMap,h.normalMap,h.roughnessMap,h.metalnessMap,h.aoMap].forEach(c=>{if(c){const f=this.getSrcByAsset(c,s);f&&t.add(f)}})})});const i=new Set(this.textureAssets.keys());return t.forEach(r=>{i.delete(r)}),[...i,...this.delLoadArr]}dispose(){var e;this.assets.clear(),(e=this.dracoLoader)==null||e.dispose(),this.event.removeAllListeners(),this.delLoadArr.length=0,this.loadObj.length=0}}const Os={prefix:""};class Ts extends ne{get loader(){return this.controller}constructor(e){super(),this.options=e}addLoader(e,t){const{loaderParams:s}=this.options,i=new Es(j(U({},s),{scene:e}));return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}class xs extends Y.BaseObject{constructor(e){super(),this.options=U({},e)}create(){var e;this.object3d=(e=this.options.scene)!=null?e:new O.Scene}}function Je(l){let e=!1,t=[];return function(...s){t=s,e||(e=!0,requestAnimationFrame(()=>{e=!1,l(...t)}))}}class ws{constructor(e){var t;this.enabled=!0,this.pickFunctionsMap=new Map,this.pickNodeFunctionsMap=new Map,this.pickFunctionsMapIndex=-1,this.pickNodeFunctionsMapIndex=-1,this.activeObjects=new Set,this.prevActiveObjects=new Set,this.objCallbackMap=new Map,this.pickListener={move:!1,down:!1},this.pencil=e,this.domElement=((t=e.options.controls)==null?void 0:t.domElement)||e.options.container}addPickListener(e){const t=new Set(["move","enter","leave"]),s=new Set(["down","downOutside","click"]),i=r=>{var v;if(!this.enabled)return;r.preventDefault();const o=e==="move"?t:s,a=[];if(this.pickFunctionsMap.forEach(m=>{o.has(m.type)&&a.push(j(U({},m),{objArr:m.objArr instanceof Function?m.objArr():m.objArr}))}),a.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear();const h=this.objCallbackMap,c=[];for(const m of a)for(const u of m.objArr){if(!u.object3d||!u.visibleWithAncestors)continue;h.has(u)||(h.set(u,new Map),c.push(u));const _=h.get(u);_.has(m.type)||_.set(m.type,[]),_.get(m.type).push(m.cb)}if(c.length===0)return;const f=c.map(m=>m.object3d);f.forEach(m=>{m.isGroup&&m.traverse(u=>{u instanceof O.Mesh&&f.push(u)})});const d=(v=this.pencil.pick(r,f,!1))==null?void 0:v.intersects;if(!d||d.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{this.sortIntersections(d);const m=d[0];this.processIntersection(m,r,e)}const C=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=C,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Je(i),{passive:!1})}sortIntersections(e){e.sort((t,s)=>t.distance===s.distance?t.object.getObjectById(s.object.id)?1:s.object.getObjectById(t.object.id)?-1:0:t.distance-s.distance)}processIntersection(e,t,s){const i=this.objCallbackMap,r=e.index||-1;let o=e.object;for(;o;){const a=this.pencil.lead.objMap.get(o);a&&i.has(a)&&this.activeObjects.add(a),o=o.parent}s==="move"?this.handleLeaveEvents(t):s==="down"&&this.handleDownOutside(t),this.processObjectHierarchy(t,s,r)}processObjectHierarchy(e,t,s){const i=this.objCallbackMap;let r=!1;for(const o of this.activeObjects){if(r)break;const a=i.get(o);if(a)if(t==="move"){const h=a.get("enter");if(h&&!this.prevActiveObjects.has(o))for(const f of h){const d=j(U({},e),{stopPropagation:()=>{r=!0}});f({baseObject:o,mouseEvent:d,intersectionIndex:s})}const c=a.get("move");if(c)for(const f of c){const d=j(U({},e),{stopPropagation:()=>{r=!0}});f({baseObject:o,mouseEvent:d,intersectionIndex:s})}}else{const h=a.get("down");if(h)for(const f of h){const d=j(U({},e),{stopPropagation:()=>{r=!0}});f({baseObject:o,mouseEvent:d,intersectionIndex:s})}const c=a.get("click");if(c){const f=d=>{d.preventDefault();const C=5;if(Math.abs(d.clientX-e.clientX)<=C&&Math.abs(d.clientY-e.clientY)<=C)for(const v of c){const m=j(U({},d),{stopPropagation:()=>{r=!0}});v({baseObject:o,mouseEvent:m,intersectionIndex:s})}this.domElement.removeEventListener("pointerup",f)};this.domElement.addEventListener("pointerup",f)}}}}handleLeaveEvents(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("leave");if(r&&this.prevActiveObjects.has(i)&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handleDownOutside(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("downOutside");if(r&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handlePick(e,t,s){let i=t;i==="mousemove"?i="move":i==="mouseenter"?i="enter":i==="mouseleave"&&(i="leave"),this.pickFunctionsMapIndex+=1;const r=this.pickFunctionsMapIndex;return this.pickFunctionsMap.set(r,{objArr:e,type:i,cb:s}),this.pickListener.move||Array.from(this.pickFunctionsMap.values()).some(a=>["move","enter","leave"].includes(a.type))&&(this.pickListener.move=!0,this.addPickListener("move")),this.pickListener.down||Array.from(this.pickFunctionsMap.values()).some(a=>["down","downOutside","click"].includes(a.type))&&(this.pickListener.down=!0,this.addPickListener("down")),r}removePick(e){this.pickFunctionsMap.delete(e)}handlePickNode(e,t,s){if(t==="downOutside")return console.warn("handlePickNode:err:不支持 downOutside"),-1;this.pickNodeFunctionsMapIndex+=1;const i=this.pickNodeFunctionsMapIndex,r=e instanceof Function?e():e,o=[];for(const a of r){const h=a;h.element.style.pointerEvents="auto";const c=d=>{this.enabled&&(d.preventDefault(),s({baseObject:h,mouseEvent:d}))},f=`pointer${t}`;h.element.addEventListener(f,Je(c),!1),o.push({arr:h,type:f,listener:c})}return this.pickNodeFunctionsMap.set(i,o),i}removePickNode(e){const t=this.pickNodeFunctionsMap.get(e);if(t){for(const s of t)s.arr.element.style.pointerEvents="none",s.arr.element.removeEventListener(s.type,s.listener,!1);this.pickNodeFunctionsMap.delete(e)}}dispose(){this.pickFunctionsMap.clear(),this.pickNodeFunctionsMap.clear(),this.activeObjects.clear(),this.prevActiveObjects.clear(),this.objCallbackMap.clear()}}class bs extends ws{constructor(e,t){super(e),this.objMap=new Map,this.objects=new Map,this.objectsPm=new Map,this.objectNamesToFactories=new Map,this.scene=new xs({scene:t.scene}),this.scene.create(),this.scene.lead=this,this.scene.pencil=e,this.group=new Y.Group,this.group.create(),this.group.lead=this,this.group.pencil=e,this.prefabGroup=new Y.Group,this.prefabGroup.create(),this.prefabGroup.lead=this,this.prefabGroup.pencil=e,this.scene.add(this.group.object3d,this.prefabGroup.object3d),this.objects.set("@Scene",this.scene),this.objects.set("@Group",this.group),this.objects.set("@PrefabGroup",this.prefabGroup),this.objMap.set(this.scene.object3d,this.scene),this.objMap.set(this.group.object3d,this.group),this.objMap.set(this.prefabGroup.object3d,this.prefabGroup)}get objectsPromise(){return this.objectsPm.values()}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(t,s)}),this}getObject(e,t){e.includes("#")&&console.warn("getObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`;return this.objects.get(i)}getAllObject(e,t){e.includes("#")&&console.warn("getAllObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`,r=[];return this.objects.forEach((o,a)=>{(a.startsWith(s?i:`${i}#`)||a===i)&&r.push(o)}),r}instantiate(s){return W(this,arguments,function*(e,{create:t}={}){const{objectType:i,objectOptions:r}=e,[,o]=i.split("#"),a=yield this.draw(o,j(U({},r||{}),{create:t,prefab:!1}));return a.isInstantiate=!0,a})}draw(e,t,s){return W(this,null,function*(){var r,o,a,h;const i=this.objectNamesToFactories.get(e);if(i){t||(t={}),t.target===void 0&&(t.target=s);const{key:c}=t;let f=`${e}${c?`#${c}`:""}`;this.objects.has(f)&&(f.includes("#")?f+=`-${Le.generateUUID()}`:f+=`#${Le.generateUUID()}`);const d=t.target,C=(r=t.onTop)!=null?r:0,v=(o=t.prefab)!=null?o:!1,m=(a=t.create)!=null?a:!0,u=new i().create(t);let _;d===null?_=null:typeof d=="string"?_=this.objects.get(d):(h=d==null?void 0:d.objectType)!=null&&h.startsWith("BaseObject")||d?_=d:v?_=this.prefabGroup:_=this.group,m===!1?u.create=()=>{}:m!==!0&&(u.create=()=>{m(u)}),u.pencil=this.pencil,u.lead=this,u.key=f,u.prefab=v,u.objectType=`BaseObject#${e}`,u.objectOptions=t,this.objects.set(f,u);const n=this.addBaseObject(u,_,C);return this.objectsPm.set(f,n),yield n,this.objectsPm.delete(f),u}throw new Error(`Unrecognized:${e}`)})}addBaseObject(e,t,s){return W(this,null,function*(){return yield e.create(),e.object3d&&(s&&e.setTop(s),t!==null&&(t.add(e.object3d),this.objMap.set(e.object3d,e))),e.render(),e})}erase(...e){this.handleErase(!0,...e)}eraseWithoutMaterial(...e){this.handleErase(!1,...e)}handleErase(e,...t){[...t].forEach(s=>{const i=[];if(typeof s=="string"){const[r,o]=s.split("#");i.push(...this.getAllObject(r,{key:o}))}else i.push(s);i.forEach(r=>{e?r.dispose():r.disposeWithOutMaterial()})})}update(e,t){this.objects.forEach(s=>{s.update(e,t)})}setSize(e,t){this.objects.forEach(s=>{s.resize(e,t)})}eraseAll(){this.group&&(this.objects.forEach(e=>{e.key.startsWith("Node")&&this.erase(e)}),this.erase(this.group))}dispose(){super.dispose(),this.scene.erase(),this.objects.forEach(e=>{e.erase()}),this.objects.clear(),this.objectsPm.clear(),this.objMap.clear(),this.objectNamesToFactories.clear()}}class Ps extends ne{get lead(){return this.controller}constructor(e){super(),this.options=e}addLead(e,t){const{pencil:s}=this.options,i=new bs(s,{scene:e});return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}}const _e=class _e{constructor(e){this.raycaster=new O.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new O.Vector3,this._cameraTarget=new O.Vector3,this.event=new ve.EventEmitter,this.timer=new Ct.Timer,this.userData={},this.pageActiveIndex=0,this.pageCountIndex=0,this.userSetDprCache=1,this.event.setMaxListeners(1/0),this.timer.connect(document),this.options=Ot(_e.options,e,{isMergeableObject:Se.isPlainObject}),this.userSetDprCache=this.options.renderer.devicePixelRatio;const{container:t,stats:s,transformControls:i}=this.options;if(this.init(),this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),i&&this.initTransformControls(),s){const r=new Tt({horizontal:!1});r.dom.style.position="absolute",r.init(this.renderer),t.appendChild(r.dom),this.stats=r}this.initResizeObserver(),this.tweenUpdateRaf()}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?0:this.renderer.capabilities.getMaxAnisotropy()}get controls(){return this.controlsController.cameraControls}get cameraPositon(){return this.controls.getPosition(this._cameraPositon,!1)}get cameraTarget(){return this.controls.getTarget(this._cameraTarget,!1)}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}get loader(){return this.loaderController.loader}get lead(){return this.leadController.lead}tweenUpdateRaf(){Ce.update(),this.TweenRaf=requestAnimationFrame(this.tweenUpdateRaf.bind(this))}use(e,...t){this.installPlugins.has(e.pluginName)?console.log("plugin already installed"):typeof e.install=="function"&&(e.install(this,...t),this.installPlugins.set(e.pluginName,e))}addPage({sceneOptions:e,cameraOptions:t}={}){const s=this.pageCountIndex+1,i=this.cameraController.addPerspectiveCamera(t,s),r=this.sceneController.addScene(e,s);return r.add(i),this.controlsController.addCameraControls(i,s),this.loaderController.addLoader(r,s),this.leadController.addLead(r,s),this.pageCountIndex=s,s}removePage(e){this.cameraController.removePage(e),this.sceneController.removePage(e),this.controlsController.removePage(e),this.loaderController.removePage(e),this.leadController.removePage(e),this.pageCountIndex===e&&(this.pageCountIndex-=1),this.pageActiveIndex===e&&(this.render(),this.showPage(0))}showPage(e){var s;if(e===this.pageActiveIndex)return;const t=this.scene;this.sceneController.setPageActive(e),t&&((s=this.cssRendererController)==null||s.render(t,this.camera)),this.cameraController.setPageActive(e),this.controlsController.setPageActive(e),this.loaderController.setPageActive(e),this.leadController.setPageActive(e),this.pageActiveIndex=e}init(){var n;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:a}=this.options,{width:h,height:c}=this.getSize(),f=t?new Wt({width:h,height:c,renderer:t.WebGPURenderer,rendererParams:qt}):new Zt({width:h,height:c,rendererParams:j(U({},r),{antialias:!1})}),d=new Kt({width:h,height:c}),C=new $t({}),v=new Jt({controlsParams:{domElement:(n=o==null?void 0:o.domElement)!=null?n:f.renderer.domElement}}),m=new Ts({loaderParams:U({anisotropy:f.renderer.capabilities.getMaxAnisotropy()},a)}),u=new Ps({pencil:this});this.sceneController=C,this.cameraController=d,this.controlsController=v,this.rendererController=f,this.loaderController=m,this.leadController=u;const _=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.showPage(_),s){const g=new Qt({container:e,sceneController:C,cameraController:d});g.add(C.scene),this.helperController=g,i&&g.addViewHelper()}e.appendChild(f.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,o=new vs({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=o,e&&o.addBloomPass(U({},t)),s&&o.addSSAOPass(U({},i)),o.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const o=new os(e);t&&o.addRenderer("css2d",i),s&&o.addRenderer("css3d",r),this.cssRendererController=o}}initTransformControls(){const e=new es({camera:this.camera,renderer:this.renderer,scene:this.scene});e.event.on("mouseDown",()=>{var t;(t=this.controlsController)==null||t.disable()}),e.event.on("mouseUp",()=>{var t;(t=this.controlsController)==null||t.enable()}),this.transformController=e}getSize(){const{container:e}=this.options;return{width:e.offsetWidth,height:e.offsetHeight}}initResizeObserver(){const{container:e}=this.options;if(this.resizeObserver)return;const t=new ResizeObserver(s=>{for(const i of s){const r=i.contentRect;this.handeleResize(r.width,r.height),this.setDevicePixelRatio(this.userSetDprCache)}});t.observe(e),this.resizeObserver=t}handeleResize(e,t,s=!0){const{rendererController:i,cameraController:r,composerController:o,cssRendererController:a}=this,h=this.renderer.getSize(new O.Vector2);h.x===e&&h.y===t||(r==null||r.setSize(e,t),i==null||i.setSize(e,t),o==null||o.setSize(e,t),a==null||a.setSize(e,t),this.installPlugins.forEach(c=>{var f;(f=c.setSize)==null||f.call(c,e,t)}),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var a;this.userSetDprCache=e;const{width:t,height:s}=this.getSize();let i=Math.sqrt(this.maxBackufferArea/(t*s));i=(i*100|0)/100;const r=Math.min(e,i);r!==e&&console.warn("maxBackufferArea:",this.maxBackufferArea," the pixel ratio is set to",r);const o=this.renderer.getPixelRatio();r!==o&&(this.rendererController.setPixelRatio(r),(a=this.composerController)==null||a.setPixelRatio(r))}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:o}=r,a=new O.Vector2,h=o.getBoundingClientRect();if(a.x=(e.clientX-h.left)/(h.right-h.left)*2-1,a.y=-((e.clientY-h.top)/(h.bottom-h.top))*2+1,this.camera&&this.scene){i.setFromCamera(a,this.camera);const c=i.intersectObjects(t||this.scene.children,s);if(c.length)return{object:c[0].object,index:c[0].index,intersects:c}}}render(){var s,i,r,o,a,h,c;if(!this.camera||!this.scene)return;this.timer.update(),Ce.update();const e=this.timer.getDelta(),t=this.timer.getElapsed();(s=this.controlsController)==null||s.update(e),this.installPlugins.forEach(f=>{var d;(d=f.update)==null||d.call(f,e,t)}),(i=this.helperController)==null||i.update(e,this.controlsController,this.cameraTarget),(r=this.composerController)!=null&&r.active?this.composerController.render():(o=this.rendererController)==null||o.render(this.scene,this.camera),(a=this.helperController)==null||a.renderViewHelper(this.renderer),(h=this.cssRendererController)==null||h.render(this.scene,this.camera),(c=this.stats)==null||c.update(),this.event.emit("render",{delta:e,elapsed:t})}start(){window.cancelAnimationFrame(this.TweenRaf),this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.tweenUpdateRaf(),this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(e){this.controlsController.autoRotateSpeed=e}showPipViewport(e){this.composerController.pipViewportState=e;let t=this.pipCameraControls;if(e){const{width:s,height:i}=this.getSize(),r=new DOMRect(e.x/s,(i-e.y-e.height)/i,e.width/s,e.height/i);if(t)t.enabled=!0,t.camera.position.copy(this.camera.position);else{const o=this.cameraController.cloneCamera(31);o.aspect=e.width/e.height,o.updateProjectionMatrix(),t=this.controlsController.addCameraControls(o,this.sceneController.activeIndex),t.addEventListener("update",()=>{this.controls.enabled=!1}),t.addEventListener("sleep",()=>{this.controls.enabled=!0}),this.pipCameraControls=t}t.interactiveArea=r}else if(t){this.cameraController.setPageActive(this.sceneController.activeIndex);const s=this.getSize();this.rendererController.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1});const i=s.width/s.height;this.cameraController.camera.aspect!==i&&(this.cameraController.camera.aspect=i,this.cameraController.camera.updateProjectionMatrix()),t.enabled=!1}}dispose(){var e,t,s,i,r,o,a,h,c,f,d,C,v;this.stop(),this.timer.dispose(),Ce.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(m=>{var u;(u=m.dispose)==null||u.call(m)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(i=this.cssRendererController)==null||i.dispose(),(r=this.sceneController)==null||r.dispose(),(o=this.cameraController)==null||o.dispose(),(a=this.helperController)==null||a.dispose(),(h=this.composerController)==null||h.dispose(),(c=this.rendererController)==null||c.dispose(),(f=this.loaderController)==null||f.dispose(),(d=this.leadController)==null||d.dispose(),this.cssRendererController=void 0,this.installPlugins.clear(),(C=this.stats)==null||C.dom.remove(),(v=this.renderer)==null||v.domElement.remove()}};_e.options={stats:me,helper:me,viewHelper:me,controls:!0,transformControls:me,renderer:Yt,composer:gs,scene:Xt,camera:ct,bloom:!1,bloomParams:_s,ssao:!1,loader:Os,ssaoParams:fs,css2DRenderer:!1,css2DRendererParams:U({},$e),css3DRenderer:!1,css3DRendererParams:U({},$e)};let fe=_e;const Ls=ee.ACTION;exports.BaseObject=Y.BaseObject;exports.ResourceTracker=Y.ResourceTracker;exports.Pencil=fe;exports.cameraControlsAction=Ls;exports.default=fe;
94
+ `,defines:{}}),"baseTexture");return e.needsSwap=!0,e},Le=1,me=!1,hs=new O.MeshBasicMaterial({color:"black"}),cs=new O.PointsMaterial({color:"black",sizeAttenuation:!1}),ds=new O.PointsMaterial({color:"black",sizeAttenuation:!0}),ps=new O.SpriteMaterial({color:"black",sizeAttenuation:!0}),ms=new O.SpriteMaterial({color:"black",sizeAttenuation:!1}),us=new B.MeshLineMaterial({color:"black",sizeAttenuation:0,lineWidth:0}),fs={kernelRadius:8,minDistance:.005,maxDistance:.1},_s={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},gs={multisampling:4,premultiplieAlpha:!1};class vs{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new O.Layers,this.bloomMaterials={},this.bloomVisible={},this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:o}=t;this.renderer=o;const{multisampling:a}=r,{maxSamples:h}=o.capabilities,c=o.getDrawingBufferSize(new O.Vector2),f=new O.WebGLRenderTarget(c.width,c.height,{samples:Math.min(a,h),type:O.HalfFloatType}),d=new Re.EffectComposer(o,f),C=this.getSize();d.setSize(C.width,C.height);const v=new Lt.RenderPass(s.scene,i.camera);d.addPass(v),this.scene=s.scene,this.camera=i.camera,this.finalComposer=d,this.renderPass=v,i.event.on("pageChange",m=>{this.changeCamera(m)}),s.event.on("pageChange",m=>{this.changeScene(m)})}changeCamera(e){this.renderPass.camera=e,this.camera=e}changeScene(e){this.renderPass.scene=e,this.ssaoPass&&(this.ssaoPass.scene=e),this.scene=e}addOutputPass(){const{premultiplieAlpha:e}=this.options.composerParams,t=new as;this.outputPass=t,this.setPremultiplieAlpha(e),this.finalComposer.addPass(t)}setPremultiplieAlpha(e){this.outputPass&&(this.outputPass.uniforms.premultiplieAlpha.value=e?1:0)}addSSAOPass(e){const{scene:t,camera:s,renderer:i}=this,r=i.getSize(new O.Vector2),o=r.width,a=r.height,h=new Pt.SSAOPass(t,s,o,a);h.kernelRadius=e.kernelRadius,h.minDistance=e.minDistance,h.maxDistance=e.maxDistance,this.ssaoPass=h,this.finalComposer.addPass(h)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:o}=e,a=new Dt.UnrealBloomPass(new O.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=a;const h=new Re.EffectComposer(t);h.renderToScreen=!1,h.addPass(this.renderPass),h.addPass(a),this.bloomComposer=h;const c=ls(h);c.uniforms.bloomAlphaType.value=o,this.bloomComposer=h,this.finalComposer.addPass(c),this.mixPass=c,this.bloomLayer.set(Le)}toggleBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}const{object3d:s}=e;if(!s)return;let i=t;t===void 0&&(i=!this.bloomSelection.has(s)),i?(this.bloomSelection.add(s),s.traverse(r=>{r.layers.enable(Le)})):(this.bloomSelection.delete(s),s.traverse(r=>{r.layers.disable(Le)})),this.bloomSelection.size===0?this.bloomComposerActive=!1:this.bloomComposerActive=!0}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){var s;(s=this.bloomComposer)==null||s.setSize(e,t),this.finalComposer.setSize(e,t)}setPixelRatio(e){var t;(t=this.bloomComposer)==null||t.setPixelRatio(e),this.finalComposer.setPixelRatio(e)}darkenNonBloomed(){const e=[],t=[];this.scene.children.forEach(s=>{s.isTransformControls||s.isTransformControlsRoot||s.type==="RectAreaLightHelper"?e.push(s):t.push(s)}),e.forEach(s=>{this.bloomVisible[s.uuid]=s.visible,s.visible=!1}),t.forEach(s=>{s.traverse(i=>{const r=i,o=i,a=i;r.material&&this.bloomLayer.test(r.layers)===!1&&(this.bloomMaterials[r.uuid]=r.material,o.isSprite?o.material.sizeAttenuation?o.material=ps:o.material=ms:r.material instanceof B.MeshLineMaterial?r.material=us:a.isPoints?a.material.sizeAttenuation?a.material=ds:a.material=cs:r.material=hs)})})}restoreNonBloomed(){this.scene.traverse(e=>{const t=e;this.bloomMaterials[t.uuid]?(t.material=this.bloomMaterials[t.uuid],delete this.bloomMaterials[t.uuid]):this.bloomVisible[t.uuid]!==void 0&&(t.visible=this.bloomVisible[t.uuid],delete this.bloomVisible[t.uuid])})}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed()):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new O.Vector2)}render(){if(!this.active)return;const{cameraController:e,rendererController:t,sceneController:s}=this.options;if(this.pipViewportState){e.setPageActive(s.activeIndex);const i=this.getSize();t.setViewport({x:0,y:0,width:i.width,height:i.height,scissor:!0,scissorTest:!1}),this.finalComposerRender(),e.setPageActive(31),t.setViewport(q(U({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender()}else this.finalComposerRender()}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}class Qe extends O.Loader{constructor(e){super(e),this.options={type:"image"}}setOptions(e){return this.options=e,this}load(e,t,s,i){let r,o;this.options.type==="image"?(o=document.createElement("img"),r=new O.Texture(o)):this.options.type==="video"?(o=document.createElement("video"),o.preload="auto",o.autoplay=!1,o.loop=!1,o.muted=!0,o.setAttribute("webkit-playsinline","webkit-playsinline"),o.setAttribute("playsinline",""),r=new O.VideoTexture(o)):r=new O.Texture;const a=new O.FileLoader(this.manager);return a.setResponseType("blob"),a.setRequestHeader(this.requestHeader),a.setPath(this.path),a.setWithCredentials(this.withCredentials),a.load(e,h=>{let c=h;const f=e.split(".").pop(),d=this.options.type==="image"?`image/${f||"png"}`:`video/${f||"mp4"}`;c=c.slice(0,h.size,d);const C=()=>{o.removeEventListener("load",v,!1),o.removeEventListener("error",m,!1)},v=()=>{C(),r.needsUpdate=!0,t&&t(r)},m=_=>{C(),i&&i(_),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",v,!1),o.addEventListener("error",m,!1);const u=window.URL.createObjectURL(c);o.src=u},s,i),r}}class ys extends O.Loader{constructor(e){super(e)}load(e,t,s,i){const r=new O.FileLoader(this.manager);r.setResponseType("blob"),r.setRequestHeader(this.requestHeader),r.setPath(this.path),r.setWithCredentials(this.withCredentials),r.load(e,o=>{const a=o,h=new DecompressionStream("gzip"),c=a.stream().pipeThrough(h);new Response(c).json().then(d=>{t==null||t(d)}).catch(d=>{i==null||i(d)})},s,i)}}const Cs={images:["png","jpg","jpeg","ico","webp","avif"],media:["mp4","webm","ogg"],gltf:["gltf","glb"],json:["json","geojson"],gzipJson:["json.gzip"],exr:["exr"],lottie:["lottie.json"]};class Es{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new ve.EventEmitter,this.options=U({simpleTexture4deleted:!1,prefix:""},e),this.loadingManager=new O.LoadingManager(()=>{},(t,s,i)=>{this.emit("progress",s,i)},t=>{console.warn(`Failed to load ${t}`)})}emit(e,...t){this.event.emit(e,...t)}on(e,t){this.event.on(e,t)}getAsset(e){const t=this.getAssetType(e);if(!t)return;const s=this.assets.get(e);if(!s){if((t==="images"||t==="media"||t==="exr")&&this.options.simpleTexture4deleted&&this.delLoadArr.includes(e))return new O.Texture;console.warn(`Asset ${e} not found`)}return s}getAssetType(e){var s;const t=(s=e.split(".").pop())==null?void 0:s.toLowerCase();if(t){if(e.endsWith("lottie.json"))return"lottie";if(e.endsWith("json.gzip"))return"gzipJson"}else return;for(const[i,r]of Object.entries(Cs))if(r.includes(t))return i}getLoader(e,t){if(e==="images")return this.textureLoader||(this.textureLoader=new Qe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Qe(this.loadingManager),this.videoTextureLoader.setOptions({type:"video"}),this.options.prefix&&this.videoTextureLoader.setPath(this.options.prefix)),this.videoTextureLoader;if(e==="gltf"&&(t!=null&&t.dracoPath))return this.dracoGltfLoader||(this.dracoGltfLoader=new Ue.GLTFLoader(this.loadingManager),this.dracoLoader=new Rt.DRACOLoader,this.dracoLoader.setDecoderPath(t==null?void 0:t.dracoPath),this.dracoGltfLoader.setDRACOLoader(this.dracoLoader),this.options.prefix&&this.dracoGltfLoader.setPath(this.options.prefix)),this.dracoGltfLoader;if(e==="gltf")return this.gltfLoader||(this.gltfLoader=new Ue.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new zt.LottieLoader(this.loadingManager),this.options.prefix&&this.lottieLoader.setPath(this.options.prefix)),this.lottieLoader;if(e==="gzipJson")return this.gzipJsonLoader||(this.gzipJsonLoader=new ys(this.loadingManager),this.options.prefix&&this.gzipJsonLoader.setPath(this.options.prefix)),this.gzipJsonLoader;if(e==="json")return this.jsonLoader||(this.jsonLoader=new O.FileLoader(this.loadingManager),this.jsonLoader.setResponseType("json"),this.options.prefix&&this.jsonLoader.setPath(this.options.prefix)),this.jsonLoader;if(e==="exr")return this.exrLoader||(this.exrLoader=new Ut.EXRLoader(this.loadingManager),this.options.prefix&&this.exrLoader.setPath(this.options.prefix)),this.exrLoader}add(e,t){typeof e=="string"&&(e=[e]),e.forEach(s=>{const i=U({src:s},t);this.loadObj.push(i)})}getSrcByAsset(e,t=this.assets){let s;return t.forEach((i,r)=>{i===e&&(s=r)}),s}get textureAssets(){const e=new Map;return this.assets.forEach((t,s)=>{(t instanceof O.Texture||t instanceof O.DataTexture||t instanceof O.VideoTexture)&&e.set(s,t)}),e}loadAll(){return W(this,null,function*(){const e=this.loadObj.filter(t=>!this.delLoadArr.includes(t.src));return yield Promise.all(e.map(t=>this.load(t.src,t)))})}load(e,t){return W(this,null,function*(){var a,h;const s=(a=t==null?void 0:t.type)!=null?a:this.getAssetType(e);if(!s)return;const i=(t==null?void 0:t.cache)!==!1,r=Pe.makePromiseCreator();if(i){if(this.assets.has(e))return this.assets.get(e);this.assets.set(e,r.promise)}const o=this.getLoader(s,t);try{const c=yield o.loadAsync(e);if(this.assets.set(e,c),r.resolve(c),s==="images"||s==="media"||s==="exr"||s==="lottie"){(t==null?void 0:t.colorCorrection)!==!1&&Se.colorCorrection({texture:c});const f=(h=t==null?void 0:t.anisotropy)!=null?h:this.options.anisotropy;c.anisotropy=f}return c}catch(c){r.reject(`Failed to load ${e}`);return}})}getUnusedAssets(){const{scene:e}=this.options;if(!e)return[...this.delLoadArr];const t=new Set,s=this.textureAssets;e.traverse(r=>{const o=r;o.material&&(Array.isArray(o.material)?o.material:[o.material]).forEach(h=>{[h.map,h.emissiveMap,h.normalMap,h.roughnessMap,h.metalnessMap,h.aoMap].forEach(c=>{if(c){const f=this.getSrcByAsset(c,s);f&&t.add(f)}})})});const i=new Set(this.textureAssets.keys());return t.forEach(r=>{i.delete(r)}),[...i,...this.delLoadArr]}dispose(){var e;this.assets.clear(),(e=this.dracoLoader)==null||e.dispose(),this.event.removeAllListeners(),this.delLoadArr.length=0,this.loadObj.length=0}}const Os={prefix:""};class Ts extends ne{get loader(){return this.controller}constructor(e){super(),this.options=e}addLoader(e,t){const{loaderParams:s}=this.options,i=new Es(q(U({},s),{scene:e}));return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}class xs extends B.BaseObject{constructor(e){super(),this.options=U({},e)}create(){var e;this.object3d=(e=this.options.scene)!=null?e:new O.Scene}}function Je(l){let e=!1,t=[];return function(...s){t=s,e||(e=!0,requestAnimationFrame(()=>{e=!1,l(...t)}))}}class ws{constructor(e){var t;this.enabled=!0,this.pickFunctionsMap=new Map,this.pickNodeFunctionsMap=new Map,this.pickFunctionsMapIndex=-1,this.pickNodeFunctionsMapIndex=-1,this.activeObjects=new Set,this.prevActiveObjects=new Set,this.objCallbackMap=new Map,this.pickListener={move:!1,down:!1},this.pencil=e,this.domElement=((t=e.options.controls)==null?void 0:t.domElement)||e.options.container}addPickListener(e){const t=new Set(["move","enter","leave"]),s=new Set(["down","downOutside","click"]),i=r=>{var v;if(!this.enabled)return;r.preventDefault();const o=e==="move"?t:s,a=[];if(this.pickFunctionsMap.forEach(m=>{o.has(m.type)&&a.push(q(U({},m),{objArr:m.objArr instanceof Function?m.objArr():m.objArr}))}),a.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear();const h=this.objCallbackMap,c=[];for(const m of a)for(const u of m.objArr){if(!u.object3d||!u.visibleWithAncestors)continue;h.has(u)||(h.set(u,new Map),c.push(u));const _=h.get(u);_.has(m.type)||_.set(m.type,[]),_.get(m.type).push(m.cb)}if(c.length===0)return;const f=c.map(m=>m.object3d);f.forEach(m=>{m.isGroup&&m.traverse(u=>{u instanceof O.Mesh&&f.push(u)})});const d=(v=this.pencil.pick(r,f,!1))==null?void 0:v.intersects;if(!d||d.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{this.sortIntersections(d);const m=d[0];this.processIntersection(m,r,e)}const C=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=C,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Je(i),{passive:!1})}sortIntersections(e){e.sort((t,s)=>t.distance===s.distance?t.object.getObjectById(s.object.id)?1:s.object.getObjectById(t.object.id)?-1:0:t.distance-s.distance)}processIntersection(e,t,s){const i=this.objCallbackMap,r=e.index||-1;let o=e.object;for(;o;){const a=this.pencil.lead.objMap.get(o);a&&i.has(a)&&this.activeObjects.add(a),o=o.parent}s==="move"?this.handleLeaveEvents(t):s==="down"&&this.handleDownOutside(t),this.processObjectHierarchy(t,s,r)}processObjectHierarchy(e,t,s){const i=this.objCallbackMap;let r=!1;const o=()=>{r=!0};for(const a of this.activeObjects){if(r)break;const h=i.get(a);if(h)if(t==="move"){const c=h.get("enter");if(c&&!this.prevActiveObjects.has(a))for(const d of c)d({baseObject:a,mouseEvent:e,sp:o,intersectionIndex:s});const f=h.get("move");if(f)for(const d of f)d({baseObject:a,mouseEvent:e,sp:o,intersectionIndex:s})}else{const c=h.get("down");if(c)for(const d of c)d({baseObject:a,mouseEvent:e,sp:o,intersectionIndex:s});const f=h.get("click");if(f){const d=C=>{C.preventDefault();const v=5;if(Math.abs(C.clientX-e.clientX)<=v&&Math.abs(C.clientY-e.clientY)<=v)for(const m of f)m({baseObject:a,mouseEvent:e,sp:o,intersectionIndex:s});this.domElement.removeEventListener("pointerup",d)};this.domElement.addEventListener("pointerup",d)}}}}handleLeaveEvents(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("leave");if(r&&this.prevActiveObjects.has(i)&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handleDownOutside(e){this.objCallbackMap.forEach((s,i)=>{const r=s.get("downOutside");if(r&&!this.activeObjects.has(i))for(const o of r)o({baseObject:i,mouseEvent:e})})}handlePick(e,t,s){let i=t;i==="mousemove"?i="move":i==="mouseenter"?i="enter":i==="mouseleave"&&(i="leave"),this.pickFunctionsMapIndex+=1;const r=this.pickFunctionsMapIndex;return this.pickFunctionsMap.set(r,{objArr:e,type:i,cb:s}),this.pickListener.move||Array.from(this.pickFunctionsMap.values()).some(a=>["move","enter","leave"].includes(a.type))&&(this.pickListener.move=!0,this.addPickListener("move")),this.pickListener.down||Array.from(this.pickFunctionsMap.values()).some(a=>["down","downOutside","click"].includes(a.type))&&(this.pickListener.down=!0,this.addPickListener("down")),r}removePick(e){this.pickFunctionsMap.delete(e)}handlePickNode(e,t,s){if(t==="downOutside")return console.warn("handlePickNode:err:不支持 downOutside"),-1;this.pickNodeFunctionsMapIndex+=1;const i=this.pickNodeFunctionsMapIndex,r=e instanceof Function?e():e,o=[];for(const a of r){const h=a;h.element.style.pointerEvents="auto";const c=d=>{this.enabled&&(d.preventDefault(),s({baseObject:h,mouseEvent:d}))},f=`pointer${t}`;h.element.addEventListener(f,Je(c),!1),o.push({arr:h,type:f,listener:c})}return this.pickNodeFunctionsMap.set(i,o),i}removePickNode(e){const t=this.pickNodeFunctionsMap.get(e);if(t){for(const s of t)s.arr.element.style.pointerEvents="none",s.arr.element.removeEventListener(s.type,s.listener,!1);this.pickNodeFunctionsMap.delete(e)}}dispose(){this.pickFunctionsMap.clear(),this.pickNodeFunctionsMap.clear(),this.activeObjects.clear(),this.prevActiveObjects.clear(),this.objCallbackMap.clear()}}class bs extends ws{constructor(e,t){super(e),this.objMap=new Map,this.objects=new Map,this.objectsPm=new Map,this.objectNamesToFactories=new Map,this.scene=new xs({scene:t.scene}),this.scene.create(),this.scene.lead=this,this.scene.pencil=e,this.group=new B.Group,this.group.create(),this.group.lead=this,this.group.pencil=e,this.prefabGroup=new B.Group,this.prefabGroup.create(),this.prefabGroup.lead=this,this.prefabGroup.pencil=e,this.scene.add(this.group.object3d,this.prefabGroup.object3d),this.objects.set("@Scene",this.scene),this.objects.set("@Group",this.group),this.objects.set("@PrefabGroup",this.prefabGroup),this.objMap.set(this.scene.object3d,this.scene),this.objMap.set(this.group.object3d,this.group),this.objMap.set(this.prefabGroup.object3d,this.prefabGroup)}get objectsPromise(){return this.objectsPm.values()}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(t,s)}),this}getObject(e,t){e.includes("#")&&console.warn("getObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`;return this.objects.get(i)}getAllObject(e,t){e.includes("#")&&console.warn("getAllObject:err:不支持 #",e);const{key:s}=t||{},i=`${e}${s?`#${s}`:""}`,r=[];return this.objects.forEach((o,a)=>{(a.startsWith(s?i:`${i}#`)||a===i)&&r.push(o)}),r}instantiate(s){return W(this,arguments,function*(e,{create:t}={}){const{objectType:i,objectOptions:r}=e,[,o]=i.split("#"),a=yield this.draw(o,q(U({},r||{}),{create:t,prefab:!1}));return a.isInstantiate=!0,a})}draw(e,t,s){return W(this,null,function*(){var r,o,a,h;const i=this.objectNamesToFactories.get(e);if(i){t||(t={}),t.target===void 0&&(t.target=s);const{key:c}=t;let f=`${e}${c?`#${c}`:""}`;this.objects.has(f)&&(f.includes("#")?f+=`-${Pe.generateUUID()}`:f+=`#${Pe.generateUUID()}`);const d=t.target,C=(r=t.onTop)!=null?r:0,v=(o=t.prefab)!=null?o:!1,m=(a=t.create)!=null?a:!0,u=new i().create(t);let _;d===null?_=null:typeof d=="string"?_=this.objects.get(d):(h=d==null?void 0:d.objectType)!=null&&h.startsWith("BaseObject")||d?_=d:v?_=this.prefabGroup:_=this.group,m===!1?u.create=()=>{}:m!==!0&&(u.create=()=>{m(u)}),u.pencil=this.pencil,u.lead=this,u.key=f,u.prefab=v,u.objectType=`BaseObject#${e}`,u.objectOptions=t,this.objects.set(f,u);const n=this.addBaseObject(u,_,C);return this.objectsPm.set(f,n),yield n,this.objectsPm.delete(f),u}throw new Error(`Unrecognized:${e}`)})}addBaseObject(e,t,s){return W(this,null,function*(){return yield e.create(),e.object3d&&(s&&e.setTop(s),t!==null&&(t.add(e.object3d),this.objMap.set(e.object3d,e))),e.render(),e})}erase(...e){this.handleErase(!0,...e)}eraseWithoutMaterial(...e){this.handleErase(!1,...e)}handleErase(e,...t){[...t].forEach(s=>{const i=[];if(typeof s=="string"){const[r,o]=s.split("#");i.push(...this.getAllObject(r,{key:o}))}else i.push(s);i.forEach(r=>{e?r.dispose():r.disposeWithOutMaterial()})})}update(e,t){this.objects.forEach(s=>{s.update(e,t)})}setSize(e,t){this.objects.forEach(s=>{s.resize(e,t)})}eraseAll(){this.group&&(this.objects.forEach(e=>{e.key.startsWith("Node")&&this.erase(e)}),this.erase(this.group))}dispose(){super.dispose(),this.scene.erase(),this.objects.forEach(e=>{e.erase()}),this.objects.clear(),this.objectsPm.clear(),this.objMap.clear(),this.objectNamesToFactories.clear()}}class Ls extends ne{get lead(){return this.controller}constructor(e){super(),this.options=e}addLead(e,t){const{pencil:s}=this.options,i=new bs(s,{scene:e});return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}}const _e=class _e{constructor(e){this.raycaster=new O.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new O.Vector3,this._cameraTarget=new O.Vector3,this.event=new ve.EventEmitter,this.timer=new Ct.Timer,this.userData={},this.pageActiveIndex=0,this.pageCountIndex=0,this.userSetDprCache=1,this.event.setMaxListeners(1/0),this.timer.connect(document),this.options=Ot(_e.options,e,{isMergeableObject:Se.isPlainObject}),this.userSetDprCache=this.options.renderer.devicePixelRatio;const{container:t,stats:s,transformControls:i}=this.options;if(this.init(),this.options.WebGPUTHREE||this.initComposer(),this.initCSSRenderer(),i&&this.initTransformControls(),s){const r=new Tt({horizontal:!1});r.dom.style.position="absolute",r.init(this.renderer),t.appendChild(r.dom),this.stats=r}this.initResizeObserver(),this.tweenUpdateRaf()}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?0:this.renderer.capabilities.getMaxAnisotropy()}get controls(){return this.controlsController.cameraControls}get cameraPositon(){return this.controls.getPosition(this._cameraPositon,!1)}get cameraTarget(){return this.controls.getTarget(this._cameraTarget,!1)}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}get loader(){return this.loaderController.loader}get lead(){return this.leadController.lead}tweenUpdateRaf(){Ce.update(),this.TweenRaf=requestAnimationFrame(this.tweenUpdateRaf.bind(this))}use(e,...t){this.installPlugins.has(e.pluginName)?console.log("plugin already installed"):typeof e.install=="function"&&(e.install(this,...t),this.installPlugins.set(e.pluginName,e))}addPage({sceneOptions:e,cameraOptions:t}={}){const s=this.pageCountIndex+1,i=this.cameraController.addPerspectiveCamera(t,s),r=this.sceneController.addScene(e,s);return r.add(i),this.controlsController.addCameraControls(i,s),this.loaderController.addLoader(r,s),this.leadController.addLead(r,s),this.pageCountIndex=s,s}removePage(e){this.cameraController.removePage(e),this.sceneController.removePage(e),this.controlsController.removePage(e),this.loaderController.removePage(e),this.leadController.removePage(e),this.pageCountIndex===e&&(this.pageCountIndex-=1),this.pageActiveIndex===e&&(this.render(),this.showPage(0))}showPage(e){var s;if(e===this.pageActiveIndex)return;const t=this.scene;this.sceneController.setPageActive(e),t&&((s=this.cssRendererController)==null||s.render(t,this.camera)),this.cameraController.setPageActive(e),this.controlsController.setPageActive(e),this.loaderController.setPageActive(e),this.leadController.setPageActive(e),this.pageActiveIndex=e}init(){var n;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:a}=this.options,{width:h,height:c}=this.getSize(),f=t?new Wt({width:h,height:c,renderer:t.WebGPURenderer,rendererParams:qt}):new Zt({width:h,height:c,rendererParams:q(U({},r),{antialias:!1})}),d=new Kt({width:h,height:c}),C=new $t({}),v=new Jt({controlsParams:{domElement:(n=o==null?void 0:o.domElement)!=null?n:f.renderer.domElement}}),m=new Ts({loaderParams:U({anisotropy:f.renderer.capabilities.getMaxAnisotropy()},a)}),u=new Ls({pencil:this});this.sceneController=C,this.cameraController=d,this.controlsController=v,this.rendererController=f,this.loaderController=m,this.leadController=u;const _=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.showPage(_),s){const g=new Qt({container:e,sceneController:C,cameraController:d});g.add(C.scene),this.helperController=g,i&&g.addViewHelper()}e.appendChild(f.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,o=new vs({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=o,e&&o.addBloomPass(U({},t)),s&&o.addSSAOPass(U({},i)),o.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const o=new os(e);t&&o.addRenderer("css2d",i),s&&o.addRenderer("css3d",r),this.cssRendererController=o}}initTransformControls(){const e=new es({camera:this.camera,renderer:this.renderer,scene:this.scene});e.event.on("mouseDown",()=>{var t;(t=this.controlsController)==null||t.disable()}),e.event.on("mouseUp",()=>{var t;(t=this.controlsController)==null||t.enable()}),this.transformController=e}getSize(){const{container:e}=this.options;return{width:e.offsetWidth,height:e.offsetHeight}}initResizeObserver(){const{container:e}=this.options;if(this.resizeObserver)return;const t=new ResizeObserver(s=>{for(const i of s){const r=i.contentRect;this.handeleResize(r.width,r.height),this.setDevicePixelRatio(this.userSetDprCache)}});t.observe(e),this.resizeObserver=t}handeleResize(e,t,s=!0){const{rendererController:i,cameraController:r,composerController:o,cssRendererController:a}=this,h=this.renderer.getSize(new O.Vector2);h.x===e&&h.y===t||(r==null||r.setSize(e,t),i==null||i.setSize(e,t),o==null||o.setSize(e,t),a==null||a.setSize(e,t),this.installPlugins.forEach(c=>{var f;(f=c.setSize)==null||f.call(c,e,t)}),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var a;this.userSetDprCache=e;const{width:t,height:s}=this.getSize();let i=Math.sqrt(this.maxBackufferArea/(t*s));i=(i*100|0)/100;const r=Math.min(e,i);r!==e&&console.warn("maxBackufferArea:",this.maxBackufferArea," the pixel ratio is set to",r);const o=this.renderer.getPixelRatio();r!==o&&(this.rendererController.setPixelRatio(r),(a=this.composerController)==null||a.setPixelRatio(r))}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:o}=r,a=new O.Vector2,h=o.getBoundingClientRect();if(a.x=(e.clientX-h.left)/(h.right-h.left)*2-1,a.y=-((e.clientY-h.top)/(h.bottom-h.top))*2+1,this.camera&&this.scene){i.setFromCamera(a,this.camera);const c=i.intersectObjects(t||this.scene.children,s);if(c.length)return{object:c[0].object,index:c[0].index,intersects:c}}}render(){var s,i,r,o,a,h,c;if(!this.camera||!this.scene)return;this.timer.update(),Ce.update();const e=this.timer.getDelta(),t=this.timer.getElapsed();(s=this.controlsController)==null||s.update(e),this.installPlugins.forEach(f=>{var d;(d=f.update)==null||d.call(f,e,t)}),(i=this.helperController)==null||i.update(e,this.controlsController,this.cameraTarget),(r=this.composerController)!=null&&r.active?this.composerController.render():(o=this.rendererController)==null||o.render(this.scene,this.camera),(a=this.helperController)==null||a.renderViewHelper(this.renderer),(h=this.cssRendererController)==null||h.render(this.scene,this.camera),(c=this.stats)==null||c.update(),this.event.emit("render",{delta:e,elapsed:t})}start(){window.cancelAnimationFrame(this.TweenRaf),this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.tweenUpdateRaf(),this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(e){this.controlsController.autoRotateSpeed=e}showPipViewport(e){this.composerController.pipViewportState=e;let t=this.pipCameraControls;if(e){const{width:s,height:i}=this.getSize(),r=new DOMRect(e.x/s,(i-e.y-e.height)/i,e.width/s,e.height/i);if(t)t.enabled=!0,t.camera.position.copy(this.camera.position);else{const o=this.cameraController.cloneCamera(31);o.aspect=e.width/e.height,o.updateProjectionMatrix(),t=this.controlsController.addCameraControls(o,this.sceneController.activeIndex),t.addEventListener("update",()=>{this.controls.enabled=!1}),t.addEventListener("sleep",()=>{this.controls.enabled=!0}),this.pipCameraControls=t}t.interactiveArea=r}else if(t){this.cameraController.setPageActive(this.sceneController.activeIndex);const s=this.getSize();this.rendererController.setViewport({x:0,y:0,width:s.width,height:s.height,scissor:!0,scissorTest:!1});const i=s.width/s.height;this.cameraController.camera.aspect!==i&&(this.cameraController.camera.aspect=i,this.cameraController.camera.updateProjectionMatrix()),t.enabled=!1}}dispose(){var e,t,s,i,r,o,a,h,c,f,d,C,v;this.stop(),this.timer.dispose(),Ce.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(m=>{var u;(u=m.dispose)==null||u.call(m)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(i=this.cssRendererController)==null||i.dispose(),(r=this.sceneController)==null||r.dispose(),(o=this.cameraController)==null||o.dispose(),(a=this.helperController)==null||a.dispose(),(h=this.composerController)==null||h.dispose(),(c=this.rendererController)==null||c.dispose(),(f=this.loaderController)==null||f.dispose(),(d=this.leadController)==null||d.dispose(),this.cssRendererController=void 0,this.installPlugins.clear(),(C=this.stats)==null||C.dom.remove(),(v=this.renderer)==null||v.domElement.remove()}};_e.options={stats:me,helper:me,viewHelper:me,controls:!0,transformControls:me,renderer:Yt,composer:gs,scene:Xt,camera:ct,bloom:!1,bloomParams:_s,ssao:!1,loader:Os,ssaoParams:fs,css2DRenderer:!1,css2DRendererParams:U({},$e),css3DRenderer:!1,css3DRendererParams:U({},$e)};let fe=_e;const Ps=ee.ACTION;exports.BaseObject=B.BaseObject;exports.ResourceTracker=B.ResourceTracker;exports.Pencil=fe;exports.cameraControlsAction=Ps;exports.default=fe;
@@ -1,15 +1,15 @@
1
1
  var ft = Object.defineProperty, _t = Object.defineProperties;
2
2
  var gt = Object.getOwnPropertyDescriptors;
3
- var Le = Object.getOwnPropertySymbols;
3
+ var Pe = Object.getOwnPropertySymbols;
4
4
  var vt = Object.prototype.hasOwnProperty, yt = Object.prototype.propertyIsEnumerable;
5
5
  var Se = (h, e, t) => e in h ? ft(h, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : h[e] = t, U = (h, e) => {
6
6
  for (var t in e || (e = {}))
7
7
  vt.call(e, t) && Se(h, t, e[t]);
8
- if (Le)
9
- for (var t of Le(e))
8
+ if (Pe)
9
+ for (var t of Pe(e))
10
10
  yt.call(e, t) && Se(h, t, e[t]);
11
11
  return h;
12
- }, I = (h, e) => _t(h, gt(e));
12
+ }, Y = (h, e) => _t(h, gt(e));
13
13
  var Z = (h, e, t) => new Promise((s, i) => {
14
14
  var r = (l) => {
15
15
  try {
@@ -32,7 +32,7 @@ import { Timer as Tt } from "three/examples/jsm/misc/Timer";
32
32
  import * as ye from "@tweenjs/tween.js";
33
33
  import wt from "deepmerge";
34
34
  import xt from "stats-gl";
35
- import { C as bt, c as Pt, i as Lt } from "./isPlainObject.module.js";
35
+ import { C as bt, c as Lt, i as Pt } from "./isPlainObject.module.js";
36
36
  import { R as St, M as et, B as At, G as Ae } from "./index.module2.js";
37
37
  import { RectAreaLightHelper as Mt } from "three/examples/jsm/helpers/RectAreaLightHelper";
38
38
  import { ViewHelper as Dt } from "three/examples/jsm/helpers/ViewHelper";
@@ -85,10 +85,10 @@ const D = {
85
85
  IN: 1,
86
86
  OUT: -1
87
87
  };
88
- function B(h) {
88
+ function V(h) {
89
89
  return h.isPerspectiveCamera;
90
90
  }
91
- function V(h) {
91
+ function N(h) {
92
92
  return h.isOrthographicCamera;
93
93
  }
94
94
  const G = Math.PI * 2, Ue = Math.PI / 2, tt = 1e-5, J = Math.PI / 180;
@@ -98,7 +98,7 @@ function k(h, e, t) {
98
98
  function M(h, e = tt) {
99
99
  return Math.abs(h) < e;
100
100
  }
101
- function L(h, e, t = tt) {
101
+ function P(h, e, t = tt) {
102
102
  return M(h - e, t);
103
103
  }
104
104
  function ze(h, e) {
@@ -142,7 +142,7 @@ function Ce(h, e) {
142
142
  }), e.x /= h.length, e.y /= h.length;
143
143
  }
144
144
  function Ee(h, e) {
145
- return V(h) ? (console.warn(`${e} is not supported in OrthographicCamera`), !0) : !1;
145
+ return N(h) ? (console.warn(`${e} is not supported in OrthographicCamera`), !0) : !1;
146
146
  }
147
147
  class Yt {
148
148
  constructor() {
@@ -209,7 +209,7 @@ class Yt {
209
209
  }
210
210
  }
211
211
  const he = 1 / 8, Zt = /Mac/.test(navigator.platform);
212
- let w, ke, ce, Oe, z, b, P, K, se, H, j, Y, Ie, He, F, ie, X, je, Te, Ne, we, xe, de;
212
+ let w, ke, ce, Oe, z, b, L, K, se, I, H, B, Ie, He, F, ie, X, je, Te, Ne, we, xe, de;
213
213
  class Q extends Yt {
214
214
  /**
215
215
  * Injects THREE as the dependency. You can then proceed to use CameraControls.
@@ -252,7 +252,7 @@ class Q extends Yt {
252
252
  * @category Statics
253
253
  */
254
254
  static install(e) {
255
- w = e.THREE, ke = Object.freeze(new w.Vector3(0, 0, 0)), ce = Object.freeze(new w.Vector3(0, 1, 0)), Oe = Object.freeze(new w.Vector3(0, 0, 1)), z = new w.Vector2(), b = new w.Vector3(), P = new w.Vector3(), K = new w.Vector3(), se = new w.Vector3(), H = new w.Vector3(), j = new w.Vector3(), Y = new w.Vector3(), Ie = new w.Vector3(), He = new w.Vector3(), F = new w.Spherical(), ie = new w.Spherical(), X = new w.Box3(), je = new w.Box3(), Te = new w.Sphere(), Ne = new w.Quaternion(), we = new w.Quaternion(), xe = new w.Matrix4(), de = new w.Raycaster();
255
+ w = e.THREE, ke = Object.freeze(new w.Vector3(0, 0, 0)), ce = Object.freeze(new w.Vector3(0, 1, 0)), Oe = Object.freeze(new w.Vector3(0, 0, 1)), z = new w.Vector2(), b = new w.Vector3(), L = new w.Vector3(), K = new w.Vector3(), se = new w.Vector3(), I = new w.Vector3(), H = new w.Vector3(), B = new w.Vector3(), Ie = new w.Vector3(), He = new w.Vector3(), F = new w.Spherical(), ie = new w.Spherical(), X = new w.Box3(), je = new w.Box3(), Te = new w.Sphere(), Ne = new w.Quaternion(), we = new w.Quaternion(), xe = new w.Matrix4(), de = new w.Raycaster();
256
256
  }
257
257
  /**
258
258
  * list all ACTIONs
@@ -282,10 +282,10 @@ class Q extends Yt {
282
282
  super(), this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.minDistance = Number.EPSILON, this.maxDistance = 1 / 0, this.infinityDolly = !1, this.minZoom = 0.01, this.maxZoom = 1 / 0, this.smoothTime = 0.25, this.draggingSmoothTime = 0.125, this.maxSpeed = 1 / 0, this.azimuthRotateSpeed = 1, this.polarRotateSpeed = 1, this.dollySpeed = 1, this.dollyDragInverted = !1, this.truckSpeed = 2, this.dollyToCursor = !1, this.dragToOffset = !1, this.verticalDragToForward = !1, this.boundaryFriction = 0, this.restThreshold = 0.01, this.colliderMeshes = [], this.cancel = () => {
283
283
  }, this._enabled = !0, this._state = p.NONE, this._viewport = null, this._changedDolly = 0, this._changedZoom = 0, this._hasRested = !0, this._boundaryEnclosesCamera = !1, this._needsUpdate = !0, this._updatedLastTime = !1, this._elementRect = new DOMRect(), this._isDragging = !1, this._dragNeedsUpdate = !0, this._activePointers = [], this._lockedPointer = null, this._interactiveArea = new DOMRect(0, 0, 1, 1), this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._isUserControllingOffset = !1, this._isUserControllingZoom = !1, this._lastDollyDirection = W.NONE, this._thetaVelocity = { value: 0 }, this._phiVelocity = { value: 0 }, this._radiusVelocity = { value: 0 }, this._targetVelocity = new w.Vector3(), this._focalOffsetVelocity = new w.Vector3(), this._zoomVelocity = { value: 0 }, this._truckInternal = (n, g, E) => {
284
284
  let y, x;
285
- if (B(this._camera)) {
285
+ if (V(this._camera)) {
286
286
  const T = b.copy(this._camera.position).sub(this._target), S = this._camera.getEffectiveFOV() * J, R = T.length() * Math.tan(S * 0.5);
287
287
  y = this.truckSpeed * n * R / this._elementRect.height, x = this.truckSpeed * g * R / this._elementRect.height;
288
- } else if (V(this._camera)) {
288
+ } else if (N(this._camera)) {
289
289
  const T = this._camera;
290
290
  y = n * (T.right - T.left) / T.zoom / this._elementRect.width, x = g * (T.top - T.bottom) / T.zoom / this._elementRect.height;
291
291
  } else
@@ -333,10 +333,10 @@ class Q extends Yt {
333
333
  left: p.ROTATE,
334
334
  middle: p.DOLLY,
335
335
  right: p.TRUCK,
336
- wheel: B(this._camera) ? p.DOLLY : V(this._camera) ? p.ZOOM : p.NONE
336
+ wheel: V(this._camera) ? p.DOLLY : N(this._camera) ? p.ZOOM : p.NONE
337
337
  }, this.touches = {
338
338
  one: p.TOUCH_ROTATE,
339
- two: B(this._camera) ? p.TOUCH_DOLLY_TRUCK : V(this._camera) ? p.TOUCH_ZOOM_TRUCK : p.NONE,
339
+ two: V(this._camera) ? p.TOUCH_DOLLY_TRUCK : N(this._camera) ? p.TOUCH_ZOOM_TRUCK : p.NONE,
340
340
  three: p.TOUCH_TRUCK
341
341
  };
342
342
  const s = new w.Vector2(), i = new w.Vector2(), r = new w.Vector2(), o = (n) => {
@@ -827,11 +827,11 @@ class Q extends Yt {
827
827
  this.maxAzimuthAngle
828
828
  ), r = k(t, this.minPolarAngle, this.maxPolarAngle);
829
829
  this._sphericalEnd.theta = i, this._sphericalEnd.phi = r, this._sphericalEnd.makeSafe(), this._needsUpdate = !0, s || (this._spherical.theta = this._sphericalEnd.theta, this._spherical.phi = this._sphericalEnd.phi);
830
- const o = !s || L(
830
+ const o = !s || P(
831
831
  this._spherical.theta,
832
832
  this._sphericalEnd.theta,
833
833
  this.restThreshold
834
- ) && L(
834
+ ) && P(
835
835
  this._spherical.phi,
836
836
  this._sphericalEnd.phi,
837
837
  this.restThreshold
@@ -862,7 +862,7 @@ class Q extends Yt {
862
862
  _dollyToNoClamp(e, t = !1) {
863
863
  const s = this._sphericalEnd.radius;
864
864
  if (this.colliderMeshes.length >= 1) {
865
- const o = this._collisionTest(), a = L(
865
+ const o = this._collisionTest(), a = P(
866
866
  o,
867
867
  this._spherical.radius
868
868
  );
@@ -874,7 +874,7 @@ class Q extends Yt {
874
874
  } else
875
875
  this._sphericalEnd.radius = e;
876
876
  this._needsUpdate = !0, t || (this._spherical.radius = this._sphericalEnd.radius);
877
- const r = !t || L(
877
+ const r = !t || P(
878
878
  this._spherical.radius,
879
879
  this._sphericalEnd.radius,
880
880
  this.restThreshold
@@ -892,7 +892,7 @@ class Q extends Yt {
892
892
  this._targetEnd.add(
893
893
  this._getCameraDirection(se).multiplyScalar(e)
894
894
  ), t || this._target.copy(this._targetEnd);
895
- const s = !t || L(this._target.x, this._targetEnd.x, this.restThreshold) && L(this._target.y, this._targetEnd.y, this.restThreshold) && L(this._target.z, this._targetEnd.z, this.restThreshold);
895
+ const s = !t || P(this._target.x, this._targetEnd.x, this.restThreshold) && P(this._target.y, this._targetEnd.y, this.restThreshold) && P(this._target.z, this._targetEnd.z, this.restThreshold);
896
896
  return this._createOnRestPromise(s);
897
897
  }
898
898
  /**
@@ -914,7 +914,7 @@ class Q extends Yt {
914
914
  */
915
915
  zoomTo(e, t = !1) {
916
916
  this._isUserControllingZoom = !1, this._zoomEnd = k(e, this.minZoom, this.maxZoom), this._needsUpdate = !0, t || (this._zoom = this._zoomEnd);
917
- const s = !t || L(this._zoom, this._zoomEnd, this.restThreshold);
917
+ const s = !t || P(this._zoom, this._zoomEnd, this.restThreshold);
918
918
  return this._changedZoom = 0, this._createOnRestPromise(s);
919
919
  }
920
920
  /**
@@ -932,8 +932,8 @@ class Q extends Yt {
932
932
  * @category Methods
933
933
  */
934
934
  truck(e, t, s = !1) {
935
- this._camera.updateMatrix(), H.setFromMatrixColumn(this._camera.matrix, 0), j.setFromMatrixColumn(this._camera.matrix, 1), H.multiplyScalar(e), j.multiplyScalar(-t);
936
- const i = b.copy(H).add(j), r = P.copy(this._targetEnd).add(i);
935
+ this._camera.updateMatrix(), I.setFromMatrixColumn(this._camera.matrix, 0), H.setFromMatrixColumn(this._camera.matrix, 1), I.multiplyScalar(e), H.multiplyScalar(-t);
936
+ const i = b.copy(I).add(H), r = L.copy(this._targetEnd).add(i);
937
937
  return this.moveTo(r.x, r.y, r.z, s);
938
938
  }
939
939
  /**
@@ -944,7 +944,7 @@ class Q extends Yt {
944
944
  */
945
945
  forward(e, t = !1) {
946
946
  b.setFromMatrixColumn(this._camera.matrix, 0), b.crossVectors(this._camera.up, b), b.multiplyScalar(e);
947
- const s = P.copy(this._targetEnd).add(b);
947
+ const s = L.copy(this._targetEnd).add(b);
948
948
  return this.moveTo(s.x, s.y, s.z, t);
949
949
  }
950
950
  /**
@@ -973,7 +973,7 @@ class Q extends Yt {
973
973
  this._isUserControllingTruck = !1;
974
974
  const r = b.set(e, t, s).sub(this._targetEnd);
975
975
  this._encloseToBoundary(this._targetEnd, r, this.boundaryFriction), this._needsUpdate = !0, i || this._target.copy(this._targetEnd);
976
- const o = !i || L(this._target.x, this._targetEnd.x, this.restThreshold) && L(this._target.y, this._targetEnd.y, this.restThreshold) && L(this._target.z, this._targetEnd.z, this.restThreshold);
976
+ const o = !i || P(this._target.x, this._targetEnd.x, this.restThreshold) && P(this._target.y, this._targetEnd.y, this.restThreshold) && P(this._target.z, this._targetEnd.z, this.restThreshold);
977
977
  return this._createOnRestPromise(o);
978
978
  }
979
979
  /**
@@ -1020,12 +1020,12 @@ class Q extends Yt {
1020
1020
  ), Promise.resolve());
1021
1021
  const f = ze(this._sphericalEnd.theta, Ue), d = ze(this._sphericalEnd.phi, Ue);
1022
1022
  l.push(this.rotateTo(f, d, t));
1023
- const C = b.setFromSpherical(this._sphericalEnd).normalize(), v = Ne.setFromUnitVectors(C, Oe), m = L(Math.abs(C.y), 1);
1023
+ const C = b.setFromSpherical(this._sphericalEnd).normalize(), v = Ne.setFromUnitVectors(C, Oe), m = P(Math.abs(C.y), 1);
1024
1024
  m && v.multiply(we.setFromAxisAngle(ce, f)), v.multiply(this._yAxisUpSpaceInverse);
1025
1025
  const u = je.makeEmpty();
1026
- P.copy(c.min).applyQuaternion(v), u.expandByPoint(P), P.copy(c.min).setX(c.max.x).applyQuaternion(v), u.expandByPoint(P), P.copy(c.min).setY(c.max.y).applyQuaternion(v), u.expandByPoint(P), P.copy(c.max).setZ(c.min.z).applyQuaternion(v), u.expandByPoint(P), P.copy(c.min).setZ(c.max.z).applyQuaternion(v), u.expandByPoint(P), P.copy(c.max).setY(c.min.y).applyQuaternion(v), u.expandByPoint(P), P.copy(c.max).setX(c.min.x).applyQuaternion(v), u.expandByPoint(P), P.copy(c.max).applyQuaternion(v), u.expandByPoint(P), u.min.x -= i, u.min.y -= o, u.max.x += r, u.max.y += a, v.setFromUnitVectors(Oe, C), m && v.premultiply(we.invert()), v.premultiply(this._yAxisUpSpace);
1027
- const _ = u.getSize(b), n = u.getCenter(P).applyQuaternion(v);
1028
- if (B(this._camera)) {
1026
+ L.copy(c.min).applyQuaternion(v), u.expandByPoint(L), L.copy(c.min).setX(c.max.x).applyQuaternion(v), u.expandByPoint(L), L.copy(c.min).setY(c.max.y).applyQuaternion(v), u.expandByPoint(L), L.copy(c.max).setZ(c.min.z).applyQuaternion(v), u.expandByPoint(L), L.copy(c.min).setZ(c.max.z).applyQuaternion(v), u.expandByPoint(L), L.copy(c.max).setY(c.min.y).applyQuaternion(v), u.expandByPoint(L), L.copy(c.max).setX(c.min.x).applyQuaternion(v), u.expandByPoint(L), L.copy(c.max).applyQuaternion(v), u.expandByPoint(L), u.min.x -= i, u.min.y -= o, u.max.x += r, u.max.y += a, v.setFromUnitVectors(Oe, C), m && v.premultiply(we.invert()), v.premultiply(this._yAxisUpSpace);
1027
+ const _ = u.getSize(b), n = u.getCenter(L).applyQuaternion(v);
1028
+ if (V(this._camera)) {
1029
1029
  const g = this.getDistanceToFitBox(
1030
1030
  _.x,
1031
1031
  _.y,
@@ -1035,7 +1035,7 @@ class Q extends Yt {
1035
1035
  l.push(
1036
1036
  this.moveTo(n.x, n.y, n.z, t)
1037
1037
  ), l.push(this.dollyTo(g, t)), l.push(this.setFocalOffset(0, 0, 0, t));
1038
- } else if (V(this._camera)) {
1038
+ } else if (N(this._camera)) {
1039
1039
  const g = this._camera, E = g.right - g.left, y = g.top - g.bottom, x = s ? Math.max(E / _.x, y / _.y) : Math.min(E / _.x, y / _.y);
1040
1040
  l.push(
1041
1041
  this.moveTo(n.x, n.y, n.z, t)
@@ -1058,10 +1058,10 @@ class Q extends Yt {
1058
1058
  r.center.z,
1059
1059
  t
1060
1060
  )
1061
- ), B(this._camera)) {
1061
+ ), V(this._camera)) {
1062
1062
  const o = this.getDistanceToFitSphere(r.radius);
1063
1063
  s.push(this.dollyTo(o, t));
1064
- } else if (V(this._camera)) {
1064
+ } else if (N(this._camera)) {
1065
1065
  const o = this._camera.right - this._camera.left, a = this._camera.top - this._camera.bottom, l = 2 * r.radius, c = Math.min(o / l, a / l);
1066
1066
  s.push(this.zoomTo(c, t));
1067
1067
  }
@@ -1080,19 +1080,19 @@ class Q extends Yt {
1080
1080
  */
1081
1081
  setLookAt(e, t, s, i, r, o, a = !1) {
1082
1082
  this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = W.NONE, this._changedDolly = 0;
1083
- const l = P.set(i, r, o), c = b.set(e, t, s);
1083
+ const l = L.set(i, r, o), c = b.set(e, t, s);
1084
1084
  this._targetEnd.copy(l), this._sphericalEnd.setFromVector3(
1085
1085
  c.sub(l).applyQuaternion(this._yAxisUpSpace)
1086
1086
  ), this.normalizeRotations(), this._needsUpdate = !0, a || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));
1087
- const f = !a || L(this._target.x, this._targetEnd.x, this.restThreshold) && L(this._target.y, this._targetEnd.y, this.restThreshold) && L(this._target.z, this._targetEnd.z, this.restThreshold) && L(
1087
+ const f = !a || P(this._target.x, this._targetEnd.x, this.restThreshold) && P(this._target.y, this._targetEnd.y, this.restThreshold) && P(this._target.z, this._targetEnd.z, this.restThreshold) && P(
1088
1088
  this._spherical.theta,
1089
1089
  this._sphericalEnd.theta,
1090
1090
  this.restThreshold
1091
- ) && L(
1091
+ ) && P(
1092
1092
  this._spherical.phi,
1093
1093
  this._sphericalEnd.phi,
1094
1094
  this.restThreshold
1095
- ) && L(
1095
+ ) && P(
1096
1096
  this._spherical.radius,
1097
1097
  this._sphericalEnd.radius,
1098
1098
  this.restThreshold
@@ -1119,11 +1119,11 @@ class Q extends Yt {
1119
1119
  */
1120
1120
  lerpLookAt(e, t, s, i, r, o, a, l, c, f, d, C, v, m = !1) {
1121
1121
  this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = W.NONE, this._changedDolly = 0;
1122
- const u = b.set(i, r, o), _ = P.set(e, t, s);
1122
+ const u = b.set(i, r, o), _ = L.set(e, t, s);
1123
1123
  F.setFromVector3(
1124
1124
  _.sub(u).applyQuaternion(this._yAxisUpSpace)
1125
1125
  );
1126
- const n = K.set(f, d, C), g = P.set(a, l, c);
1126
+ const n = K.set(f, d, C), g = L.set(a, l, c);
1127
1127
  ie.setFromVector3(
1128
1128
  g.sub(n).applyQuaternion(this._yAxisUpSpace)
1129
1129
  ), this._targetEnd.copy(u.lerp(n, v));
@@ -1133,15 +1133,15 @@ class Q extends Yt {
1133
1133
  F.phi + y * v,
1134
1134
  F.theta + E * v
1135
1135
  ), this.normalizeRotations(), this._needsUpdate = !0, m || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));
1136
- const T = !m || L(this._target.x, this._targetEnd.x, this.restThreshold) && L(this._target.y, this._targetEnd.y, this.restThreshold) && L(this._target.z, this._targetEnd.z, this.restThreshold) && L(
1136
+ const T = !m || P(this._target.x, this._targetEnd.x, this.restThreshold) && P(this._target.y, this._targetEnd.y, this.restThreshold) && P(this._target.z, this._targetEnd.z, this.restThreshold) && P(
1137
1137
  this._spherical.theta,
1138
1138
  this._sphericalEnd.theta,
1139
1139
  this.restThreshold
1140
- ) && L(
1140
+ ) && P(
1141
1141
  this._spherical.phi,
1142
1142
  this._sphericalEnd.phi,
1143
1143
  this.restThreshold
1144
- ) && L(
1144
+ ) && P(
1145
1145
  this._spherical.radius,
1146
1146
  this._sphericalEnd.radius,
1147
1147
  this.restThreshold
@@ -1203,15 +1203,15 @@ class Q extends Yt {
1203
1203
  */
1204
1204
  setFocalOffset(e, t, s, i = !1) {
1205
1205
  this._isUserControllingOffset = !1, this._focalOffsetEnd.set(e, t, s), this._needsUpdate = !0, i || this._focalOffset.copy(this._focalOffsetEnd);
1206
- const r = !i || L(
1206
+ const r = !i || P(
1207
1207
  this._focalOffset.x,
1208
1208
  this._focalOffsetEnd.x,
1209
1209
  this.restThreshold
1210
- ) && L(
1210
+ ) && P(
1211
1211
  this._focalOffset.y,
1212
1212
  this._focalOffsetEnd.y,
1213
1213
  this.restThreshold
1214
- ) && L(
1214
+ ) && P(
1215
1215
  this._focalOffset.z,
1216
1216
  this._focalOffsetEnd.z,
1217
1217
  this.restThreshold
@@ -1227,9 +1227,9 @@ class Q extends Yt {
1227
1227
  * @category Methods
1228
1228
  */
1229
1229
  setOrbitPoint(e, t, s) {
1230
- this._camera.updateMatrixWorld(), H.setFromMatrixColumn(this._camera.matrixWorldInverse, 0), j.setFromMatrixColumn(this._camera.matrixWorldInverse, 1), Y.setFromMatrixColumn(this._camera.matrixWorldInverse, 2);
1230
+ this._camera.updateMatrixWorld(), I.setFromMatrixColumn(this._camera.matrixWorldInverse, 0), H.setFromMatrixColumn(this._camera.matrixWorldInverse, 1), B.setFromMatrixColumn(this._camera.matrixWorldInverse, 2);
1231
1231
  const i = b.set(e, t, s), r = i.distanceTo(this._camera.position), o = i.sub(this._camera.position);
1232
- H.multiplyScalar(o.x), j.multiplyScalar(o.y), Y.multiplyScalar(o.z), b.copy(H).add(j).add(Y), b.z = b.z + r, this.dollyTo(r, !1), this.setFocalOffset(-b.x, b.y, -b.z, !1), this.moveTo(e, t, s, !1);
1232
+ I.multiplyScalar(o.x), H.multiplyScalar(o.y), B.multiplyScalar(o.z), b.copy(I).add(H).add(B), b.z = b.z + r, this.dollyTo(r, !1), this.setFocalOffset(-b.x, b.y, -b.z, !1), this.moveTo(e, t, s, !1);
1233
1233
  }
1234
1234
  /**
1235
1235
  * Set the boundary box that encloses the target of the camera. box3 is in THREE.Box3
@@ -1336,7 +1336,7 @@ class Q extends Yt {
1336
1336
  * @category Methods
1337
1337
  */
1338
1338
  reset(e = !1) {
1339
- if (!L(this._camera.up.x, this._cameraUp0.x) || !L(this._camera.up.y, this._cameraUp0.y) || !L(this._camera.up.z, this._cameraUp0.z)) {
1339
+ if (!P(this._camera.up.x, this._cameraUp0.x) || !P(this._camera.up.y, this._cameraUp0.y) || !P(this._camera.up.z, this._cameraUp0.z)) {
1340
1340
  this._camera.up.copy(this._cameraUp0);
1341
1341
  const s = this.getPosition(b);
1342
1342
  this.updateCameraUp(), this.setPosition(s.x, s.y, s.z);
@@ -1382,7 +1382,7 @@ class Q extends Yt {
1382
1382
  * @category Methods
1383
1383
  */
1384
1384
  applyCameraUp() {
1385
- const e = b.subVectors(this._target, this._camera.position).normalize(), t = P.crossVectors(e, this._camera.up);
1385
+ const e = b.subVectors(this._target, this._camera.position).normalize(), t = L.crossVectors(e, this._camera.up);
1386
1386
  this._camera.up.crossVectors(t, e).normalize(), this._camera.updateMatrixWorld();
1387
1387
  const s = this.getPosition(b);
1388
1388
  this.updateCameraUp(), this.setPosition(s.x, s.y, s.z);
@@ -1480,10 +1480,10 @@ class Q extends Yt {
1480
1480
  );
1481
1481
  }
1482
1482
  if (this.dollyToCursor) {
1483
- if (B(this._camera) && this._changedDolly !== 0) {
1483
+ if (V(this._camera) && this._changedDolly !== 0) {
1484
1484
  const d = this._spherical.radius - this._lastDistance, C = this._camera, v = this._getCameraDirection(se), m = b.copy(v).cross(C.up).normalize();
1485
1485
  m.lengthSq() === 0 && (m.x = 1);
1486
- const u = P.crossVectors(m, v), _ = this._sphericalEnd.radius * Math.tan(C.getEffectiveFOV() * J * 0.5), g = (this._sphericalEnd.radius - d - this._sphericalEnd.radius) / this._sphericalEnd.radius, E = K.copy(this._targetEnd).add(
1486
+ const u = L.crossVectors(m, v), _ = this._sphericalEnd.radius * Math.tan(C.getEffectiveFOV() * J * 0.5), g = (this._sphericalEnd.radius - d - this._sphericalEnd.radius) / this._sphericalEnd.radius, E = K.copy(this._targetEnd).add(
1487
1487
  m.multiplyScalar(
1488
1488
  this._dollyControlCoord.x * _ * C.aspect
1489
1489
  )
@@ -1492,28 +1492,28 @@ class Q extends Yt {
1492
1492
  ), y = b.copy(this._targetEnd).lerp(E, g), x = this._lastDollyDirection === W.IN && this._spherical.radius <= this.minDistance, T = this._lastDollyDirection === W.OUT && this.maxDistance <= this._spherical.radius;
1493
1493
  if (this.infinityDolly && (x || T)) {
1494
1494
  this._sphericalEnd.radius -= d, this._spherical.radius -= d;
1495
- const R = P.copy(v).multiplyScalar(-d);
1495
+ const R = L.copy(v).multiplyScalar(-d);
1496
1496
  y.add(R);
1497
1497
  }
1498
1498
  this._boundary.clampPoint(y, y);
1499
- const S = P.subVectors(y, this._targetEnd);
1499
+ const S = L.subVectors(y, this._targetEnd);
1500
1500
  this._targetEnd.copy(y), this._target.add(S), this._changedDolly -= d, M(this._changedDolly) && (this._changedDolly = 0);
1501
- } else if (V(this._camera) && this._changedZoom !== 0) {
1501
+ } else if (N(this._camera) && this._changedZoom !== 0) {
1502
1502
  const d = this._zoom - this._lastZoom, C = this._camera, v = b.set(
1503
1503
  this._dollyControlCoord.x,
1504
1504
  this._dollyControlCoord.y,
1505
1505
  (C.near + C.far) / (C.near - C.far)
1506
- ).unproject(C), m = P.set(0, 0, -1).applyQuaternion(C.quaternion), u = K.copy(v).add(m.multiplyScalar(-v.dot(C.up))), n = -(this._zoom - d - this._zoom) / this._zoom, g = this._getCameraDirection(se), E = this._targetEnd.dot(g), y = b.copy(this._targetEnd).lerp(u, n), x = y.dot(g), T = g.multiplyScalar(
1506
+ ).unproject(C), m = L.set(0, 0, -1).applyQuaternion(C.quaternion), u = K.copy(v).add(m.multiplyScalar(-v.dot(C.up))), n = -(this._zoom - d - this._zoom) / this._zoom, g = this._getCameraDirection(se), E = this._targetEnd.dot(g), y = b.copy(this._targetEnd).lerp(u, n), x = y.dot(g), T = g.multiplyScalar(
1507
1507
  x - E
1508
1508
  );
1509
1509
  y.sub(T), this._boundary.clampPoint(y, y);
1510
- const S = P.subVectors(y, this._targetEnd);
1510
+ const S = L.subVectors(y, this._targetEnd);
1511
1511
  this._targetEnd.copy(y), this._target.add(S), this._changedZoom -= d, M(this._changedZoom) && (this._changedZoom = 0);
1512
1512
  }
1513
1513
  }
1514
1514
  this._camera.zoom !== this._zoom && (this._camera.zoom = this._zoom, this._camera.updateProjectionMatrix(), this._updateNearPlaneCorners(), this._needsUpdate = !0), this._dragNeedsUpdate = !0;
1515
1515
  const l = this._collisionTest();
1516
- this._spherical.radius = Math.min(this._spherical.radius, l), this._spherical.makeSafe(), this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target), this._camera.lookAt(this._target), (!M(this._focalOffset.x) || !M(this._focalOffset.y) || !M(this._focalOffset.z)) && (this._camera.updateMatrixWorld(), H.setFromMatrixColumn(this._camera.matrix, 0), j.setFromMatrixColumn(this._camera.matrix, 1), Y.setFromMatrixColumn(this._camera.matrix, 2), H.multiplyScalar(this._focalOffset.x), j.multiplyScalar(-this._focalOffset.y), Y.multiplyScalar(this._focalOffset.z), b.copy(H).add(j).add(Y), this._camera.position.add(b)), this._boundaryEnclosesCamera && this._encloseToBoundary(
1516
+ this._spherical.radius = Math.min(this._spherical.radius, l), this._spherical.makeSafe(), this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target), this._camera.lookAt(this._target), (!M(this._focalOffset.x) || !M(this._focalOffset.y) || !M(this._focalOffset.z)) && (this._camera.updateMatrixWorld(), I.setFromMatrixColumn(this._camera.matrix, 0), H.setFromMatrixColumn(this._camera.matrix, 1), B.setFromMatrixColumn(this._camera.matrix, 2), I.multiplyScalar(this._focalOffset.x), H.multiplyScalar(-this._focalOffset.y), B.multiplyScalar(this._focalOffset.z), b.copy(I).add(H).add(B), this._camera.position.add(b)), this._boundaryEnclosesCamera && this._encloseToBoundary(
1517
1517
  this._camera.position.copy(this._target),
1518
1518
  b.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),
1519
1519
  1
@@ -1618,7 +1618,7 @@ class Q extends Yt {
1618
1618
  const i = t.lengthSq();
1619
1619
  if (i === 0)
1620
1620
  return e;
1621
- const r = P.copy(t).add(e), a = this._boundary.clampPoint(r, K).sub(r), l = a.lengthSq();
1621
+ const r = L.copy(t).add(e), a = this._boundary.clampPoint(r, K).sub(r), l = a.lengthSq();
1622
1622
  if (l === 0)
1623
1623
  return e.add(t);
1624
1624
  if (l === i)
@@ -1627,14 +1627,14 @@ class Q extends Yt {
1627
1627
  return e.add(t).add(a);
1628
1628
  {
1629
1629
  const c = 1 + s * l / t.dot(a);
1630
- return e.add(P.copy(t).multiplyScalar(c)).add(a.multiplyScalar(1 - s));
1630
+ return e.add(L.copy(t).multiplyScalar(c)).add(a.multiplyScalar(1 - s));
1631
1631
  }
1632
1632
  }
1633
1633
  _updateNearPlaneCorners() {
1634
- if (B(this._camera)) {
1634
+ if (V(this._camera)) {
1635
1635
  const e = this._camera, t = e.near, s = e.getEffectiveFOV() * J, i = Math.tan(s * 0.5) * t, r = i * e.aspect;
1636
1636
  this._nearPlaneCorners[0].set(-r, -i, 0), this._nearPlaneCorners[1].set(r, -i, 0), this._nearPlaneCorners[2].set(r, i, 0), this._nearPlaneCorners[3].set(-r, i, 0);
1637
- } else if (V(this._camera)) {
1637
+ } else if (N(this._camera)) {
1638
1638
  const e = this._camera, t = 1 / e.zoom, s = e.left * t, i = e.right * t, r = e.top * t, o = e.bottom * t;
1639
1639
  this._nearPlaneCorners[0].set(s, r, 0), this._nearPlaneCorners[1].set(i, r, 0), this._nearPlaneCorners[2].set(i, o, 0), this._nearPlaneCorners[3].set(s, o, 0);
1640
1640
  }
@@ -1647,7 +1647,7 @@ class Q extends Yt {
1647
1647
  const s = this._getTargetDirection(se);
1648
1648
  xe.lookAt(ke, s, this._camera.up);
1649
1649
  for (let i = 0; i < 4; i++) {
1650
- const r = P.copy(this._nearPlaneCorners[i]);
1650
+ const r = L.copy(this._nearPlaneCorners[i]);
1651
1651
  r.applyMatrix4(xe);
1652
1652
  const o = K.addVectors(this._target, r);
1653
1653
  de.set(o, s), de.far = this._spherical.radius + 1;
@@ -1733,7 +1733,7 @@ class Q extends Yt {
1733
1733
  }), s.radius = Math.sqrt(r), s;
1734
1734
  }
1735
1735
  }
1736
- var Pe = { exports: {} }, $ = typeof Reflect == "object" ? Reflect : null, Ve = $ && typeof $.apply == "function" ? $.apply : function(e, t, s) {
1736
+ var Le = { exports: {} }, $ = typeof Reflect == "object" ? Reflect : null, Ve = $ && typeof $.apply == "function" ? $.apply : function(e, t, s) {
1737
1737
  return Function.prototype.apply.call(e, t, s);
1738
1738
  }, me;
1739
1739
  $ && typeof $.ownKeys == "function" ? me = $.ownKeys : Object.getOwnPropertySymbols ? me = function(e) {
@@ -1750,8 +1750,8 @@ var st = Number.isNaN || function(e) {
1750
1750
  function A() {
1751
1751
  A.init.call(this);
1752
1752
  }
1753
- Pe.exports = A;
1754
- Pe.exports.once = qt;
1753
+ Le.exports = A;
1754
+ Le.exports.once = qt;
1755
1755
  A.EventEmitter = A;
1756
1756
  A.prototype._events = void 0;
1757
1757
  A.prototype._eventsCount = 0;
@@ -1956,7 +1956,7 @@ function ht(h, e, t, s) {
1956
1956
  else
1957
1957
  throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof h);
1958
1958
  }
1959
- var ge = Pe.exports;
1959
+ var ge = Le.exports;
1960
1960
  const Qt = {
1961
1961
  antialias: !1,
1962
1962
  devicePixelRatio: window.devicePixelRatio,
@@ -2394,7 +2394,7 @@ class ls {
2394
2394
  this.event.removeAllListeners(), (e = this.controls) == null || e.dispose();
2395
2395
  }
2396
2396
  }
2397
- const Ye = new re(), hs = new Ct(), Ze = new re(), N = new fe(), cs = new fe();
2397
+ const Ye = new re(), hs = new Ct(), Ze = new re(), j = new fe(), cs = new fe();
2398
2398
  class ds {
2399
2399
  constructor(e = {}) {
2400
2400
  const t = this;
@@ -2448,7 +2448,7 @@ class ds {
2448
2448
  if (x.style.display = y === !0 ? "" : "none", y === !0) {
2449
2449
  _.onBeforeRender(t, n, g);
2450
2450
  let T;
2451
- _.isCSS3DSprite ? (N.copy(g.matrixWorldInverse), N.transpose(), _.rotation2D !== 0 && N.multiply(cs.makeRotationZ(_.rotation2D)), _.matrixWorld.decompose(Ye, hs, Ze), N.setPosition(Ye), N.scale(Ze), N.elements[3] = 0, N.elements[7] = 0, N.elements[11] = 0, N.elements[15] = 1, T = v(N)) : T = v(_.matrixWorld);
2451
+ _.isCSS3DSprite ? (j.copy(g.matrixWorldInverse), j.transpose(), _.rotation2D !== 0 && j.multiply(cs.makeRotationZ(_.rotation2D)), _.matrixWorld.decompose(Ye, hs, Ze), j.setPosition(Ye), j.scale(Ze), j.elements[3] = 0, j.elements[7] = 0, j.elements[11] = 0, j.elements[15] = 1, T = v(j)) : T = v(_.matrixWorld);
2452
2452
  const S = a.objects.get(_);
2453
2453
  if (S === void 0 || S.style !== T) {
2454
2454
  x.style.transform = T;
@@ -2843,7 +2843,7 @@ class bs {
2843
2843
  height: i.height,
2844
2844
  scissor: !0,
2845
2845
  scissorTest: !1
2846
- }), this.finalComposerRender(), e.setPageActive(31), t.setViewport(I(U({}, this.pipViewportState), {
2846
+ }), this.finalComposerRender(), e.setPageActive(31), t.setViewport(Y(U({}, this.pipViewportState), {
2847
2847
  scissor: !0,
2848
2848
  scissorTest: !0
2849
2849
  })), this.finalComposerRender();
@@ -2888,7 +2888,7 @@ class $e extends O.Loader {
2888
2888
  ), r;
2889
2889
  }
2890
2890
  }
2891
- class Ps extends O.Loader {
2891
+ class Ls extends O.Loader {
2892
2892
  constructor(e) {
2893
2893
  super(e);
2894
2894
  }
@@ -2909,7 +2909,7 @@ class Ps extends O.Loader {
2909
2909
  );
2910
2910
  }
2911
2911
  }
2912
- const Ls = {
2912
+ const Ps = {
2913
2913
  images: ["png", "jpg", "jpeg", "ico", "webp", "avif"],
2914
2914
  media: ["mp4", "webm", "ogg"],
2915
2915
  gltf: ["gltf", "glb"],
@@ -2961,7 +2961,7 @@ class Ss {
2961
2961
  if (e.endsWith("json.gzip"))
2962
2962
  return "gzipJson";
2963
2963
  } else return;
2964
- for (const [i, r] of Object.entries(Ls))
2964
+ for (const [i, r] of Object.entries(Ps))
2965
2965
  if (r.includes(t))
2966
2966
  return i;
2967
2967
  }
@@ -2977,7 +2977,7 @@ class Ss {
2977
2977
  if (e === "lottie")
2978
2978
  return this.lottieLoader || (this.lottieLoader = new Vt(this.loadingManager), this.options.prefix && this.lottieLoader.setPath(this.options.prefix)), this.lottieLoader;
2979
2979
  if (e === "gzipJson")
2980
- return this.gzipJsonLoader || (this.gzipJsonLoader = new Ps(this.loadingManager), this.options.prefix && this.gzipJsonLoader.setPath(this.options.prefix)), this.gzipJsonLoader;
2980
+ return this.gzipJsonLoader || (this.gzipJsonLoader = new Ls(this.loadingManager), this.options.prefix && this.gzipJsonLoader.setPath(this.options.prefix)), this.gzipJsonLoader;
2981
2981
  if (e === "json")
2982
2982
  return this.jsonLoader || (this.jsonLoader = new O.FileLoader(this.loadingManager), this.jsonLoader.setResponseType("json"), this.options.prefix && this.jsonLoader.setPath(this.options.prefix)), this.jsonLoader;
2983
2983
  if (e === "exr")
@@ -3027,7 +3027,7 @@ class Ss {
3027
3027
  try {
3028
3028
  const c = yield o.loadAsync(e);
3029
3029
  if (this.assets.set(e, c), r.resolve(c), s === "images" || s === "media" || s === "exr" || s === "lottie") {
3030
- (t == null ? void 0 : t.colorCorrection) !== !1 && Pt({ texture: c });
3030
+ (t == null ? void 0 : t.colorCorrection) !== !1 && Lt({ texture: c });
3031
3031
  const f = (l = t == null ? void 0 : t.anisotropy) != null ? l : this.options.anisotropy;
3032
3032
  c.anisotropy = f;
3033
3033
  }
@@ -3082,7 +3082,7 @@ class Ms extends oe {
3082
3082
  super(), this.options = e;
3083
3083
  }
3084
3084
  addLoader(e, t) {
3085
- const { loaderParams: s } = this.options, i = new Ss(I(U({}, s), {
3085
+ const { loaderParams: s } = this.options, i = new Ss(Y(U({}, s), {
3086
3086
  scene: e
3087
3087
  }));
3088
3088
  return this.addController(i, t);
@@ -3126,7 +3126,7 @@ class Rs {
3126
3126
  r.preventDefault();
3127
3127
  const o = e === "move" ? t : s, a = [];
3128
3128
  if (this.pickFunctionsMap.forEach((m) => {
3129
- o.has(m.type) && a.push(I(U({}, m), {
3129
+ o.has(m.type) && a.push(Y(U({}, m), {
3130
3130
  objArr: m.objArr instanceof Function ? m.objArr() : m.objArr
3131
3131
  }));
3132
3132
  }), a.length === 0) return;
@@ -3178,75 +3178,58 @@ class Rs {
3178
3178
  processObjectHierarchy(e, t, s) {
3179
3179
  const i = this.objCallbackMap;
3180
3180
  let r = !1;
3181
- for (const o of this.activeObjects) {
3181
+ const o = () => {
3182
+ r = !0;
3183
+ };
3184
+ for (const a of this.activeObjects) {
3182
3185
  if (r) break;
3183
- const a = i.get(o);
3184
- if (a)
3186
+ const l = i.get(a);
3187
+ if (l)
3185
3188
  if (t === "move") {
3186
- const l = a.get("enter");
3187
- if (l && !this.prevActiveObjects.has(o))
3188
- for (const f of l) {
3189
- const d = I(U({}, e), {
3190
- stopPropagation: () => {
3191
- r = !0;
3192
- }
3193
- });
3194
- f({
3195
- baseObject: o,
3196
- mouseEvent: d,
3189
+ const c = l.get("enter");
3190
+ if (c && !this.prevActiveObjects.has(a))
3191
+ for (const d of c)
3192
+ d({
3193
+ baseObject: a,
3194
+ mouseEvent: e,
3195
+ sp: o,
3197
3196
  intersectionIndex: s
3198
3197
  });
3199
- }
3200
- const c = a.get("move");
3201
- if (c)
3202
- for (const f of c) {
3203
- const d = I(U({}, e), {
3204
- stopPropagation: () => {
3205
- r = !0;
3206
- }
3207
- });
3208
- f({
3209
- baseObject: o,
3210
- mouseEvent: d,
3198
+ const f = l.get("move");
3199
+ if (f)
3200
+ for (const d of f)
3201
+ d({
3202
+ baseObject: a,
3203
+ mouseEvent: e,
3204
+ sp: o,
3211
3205
  intersectionIndex: s
3212
3206
  });
3213
- }
3214
3207
  } else {
3215
- const l = a.get("down");
3216
- if (l)
3217
- for (const f of l) {
3218
- const d = I(U({}, e), {
3219
- stopPropagation: () => {
3220
- r = !0;
3221
- }
3222
- });
3223
- f({
3224
- baseObject: o,
3225
- mouseEvent: d,
3208
+ const c = l.get("down");
3209
+ if (c)
3210
+ for (const d of c)
3211
+ d({
3212
+ baseObject: a,
3213
+ mouseEvent: e,
3214
+ sp: o,
3226
3215
  intersectionIndex: s
3227
3216
  });
3228
- }
3229
- const c = a.get("click");
3230
- if (c) {
3231
- const f = (d) => {
3232
- d.preventDefault();
3233
- const C = 5;
3234
- if (Math.abs(d.clientX - e.clientX) <= C && Math.abs(d.clientY - e.clientY) <= C)
3235
- for (const v of c) {
3236
- const m = I(U({}, d), {
3237
- stopPropagation: () => {
3238
- r = !0;
3239
- }
3240
- });
3241
- v({
3242
- baseObject: o,
3243
- mouseEvent: m,
3217
+ const f = l.get("click");
3218
+ if (f) {
3219
+ const d = (C) => {
3220
+ C.preventDefault();
3221
+ const v = 5;
3222
+ if (Math.abs(C.clientX - e.clientX) <= v && Math.abs(C.clientY - e.clientY) <= v)
3223
+ for (const m of f)
3224
+ m({
3225
+ baseObject: a,
3226
+ mouseEvent: e,
3227
+ sp: o,
3244
3228
  intersectionIndex: s
3245
3229
  });
3246
- }
3247
- this.domElement.removeEventListener("pointerup", f);
3230
+ this.domElement.removeEventListener("pointerup", d);
3248
3231
  };
3249
- this.domElement.addEventListener("pointerup", f);
3232
+ this.domElement.addEventListener("pointerup", d);
3250
3233
  }
3251
3234
  }
3252
3235
  }
@@ -3355,7 +3338,7 @@ class Us extends Rs {
3355
3338
  return Z(this, arguments, function* (e, {
3356
3339
  create: t
3357
3340
  } = {}) {
3358
- const { objectType: i, objectOptions: r } = e, [, o] = i.split("#"), a = yield this.draw(o, I(U({}, r || {}), {
3341
+ const { objectType: i, objectOptions: r } = e, [, o] = i.split("#"), a = yield this.draw(o, Y(U({}, r || {}), {
3359
3342
  create: t,
3360
3343
  prefab: !1
3361
3344
  }));
@@ -3455,7 +3438,7 @@ class zs extends oe {
3455
3438
  const ue = class ue {
3456
3439
  constructor(e) {
3457
3440
  this.raycaster = new O.Raycaster(), this.maxBackufferArea = 5760 * 5760, this.installPlugins = /* @__PURE__ */ new Map(), this._cameraPositon = new O.Vector3(), this._cameraTarget = new O.Vector3(), this.event = new ge.EventEmitter(), this.timer = new Tt(), this.userData = {}, this.pageActiveIndex = 0, this.pageCountIndex = 0, this.userSetDprCache = 1, this.event.setMaxListeners(1 / 0), this.timer.connect(document), this.options = wt(ue.options, e, {
3458
- isMergeableObject: Lt
3441
+ isMergeableObject: Pt
3459
3442
  }), this.userSetDprCache = this.options.renderer.devicePixelRatio;
3460
3443
  const {
3461
3444
  container: t,
@@ -3543,7 +3526,7 @@ const ue = class ue {
3543
3526
  }) : new Jt({
3544
3527
  width: l,
3545
3528
  height: c,
3546
- rendererParams: I(U({}, r), {
3529
+ rendererParams: Y(U({}, r), {
3547
3530
  antialias: !1
3548
3531
  })
3549
3532
  }), d = new is({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gl-draw",
3
- "version": "0.14.3",
3
+ "version": "0.14.4",
4
4
  "author": "gitplus <hstits@gmail.com>",
5
5
  "scripts": {
6
6
  "start": "bundler-dev",