gl-draw 0.16.0-beta.8 → 0.16.0-beta.9

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.
@@ -42,14 +42,12 @@ export default class Draw<T extends {
42
42
  onTop?: number;
43
43
  create?: ((...args: any[]) => any) | boolean;
44
44
  prefab?: boolean;
45
- objectType?: string;
46
45
  } : ConstructorParameters<T[Y]>[0] & {
47
46
  key?: string;
48
47
  target?: U;
49
48
  onTop?: number;
50
49
  create?: ((...args: any[]) => any) | boolean;
51
50
  prefab?: boolean;
52
- objectType?: string;
53
51
  }, target?: U): Promise<InstanceType<T[Y]>>;
54
52
  private setBaseObjectKey;
55
53
  updateBaseObjectKey(baseObject: IBaseObject, keyOrigin: string): string;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var mt=Object.defineProperty,ut=Object.defineProperties;var ft=Object.getOwnPropertyDescriptors;var Pe=Object.getOwnPropertySymbols;var _t=Object.prototype.hasOwnProperty,gt=Object.prototype.propertyIsEnumerable;var Se=(h,e,t)=>e in h?mt(h,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):h[e]=t,k=(h,e)=>{for(var t in e||(e={}))_t.call(e,t)&&Se(h,t,e[t]);if(Pe)for(var t of Pe(e))gt.call(e,t)&&Se(h,t,e[t]);return h},ee=(h,e)=>ut(h,ft(e));var te=(h,e,t)=>new Promise((s,i)=>{var r=a=>{try{n(t.next(a))}catch(d){i(d)}},o=a=>{try{n(t.throw(a))}catch(d){i(d)}},n=a=>a.done?s(a.value):Promise.resolve(a.value).then(r,o);n((t=t.apply(h,e)).next())});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const yt=require("@tweenjs/tween.js"),vt=require("deepmerge"),Ct=require("stats-gl"),v=require("three"),U=require("./WebGPULineSegments2.js"),Ae=require("three/examples/jsm/postprocessing/EffectComposer"),Ot=require("three/examples/jsm/postprocessing/RenderPass"),Et=require("three/examples/jsm/postprocessing/SSAOPass"),Tt=require("three/examples/jsm/postprocessing/UnrealBloomPass");require("three/examples/jsm/lines/LineMaterial");require("three/examples/jsm/lines/LineSegmentsGeometry");require("three/examples/jsm/renderers/CSS2DRenderer");require("three/examples/jsm/renderers/CSS3DRenderer");require("d3-geo");require("d3-geo-projection");require("three/examples/jsm/utils/BufferGeometryUtils");require("three-bvh-csg");require("three/examples/jsm/lights/RectAreaLightUniformsLib");require("three/examples/jsm/lines/LineSegments2");const bt=require("three/examples/jsm/postprocessing/ShaderPass"),xt=require("three/examples/jsm/postprocessing/OutputPass"),Me=require("three/examples/jsm/postprocessing/Pass"),wt=require("three/examples/jsm/helpers/RectAreaLightHelper"),Lt=require("three/examples/jsm/helpers/ViewHelper"),xe=require("esus-lite"),Pt=require("three/examples/jsm/loaders/DRACOLoader"),St=require("three/examples/jsm/loaders/EXRLoader"),Re=require("three/examples/jsm/loaders/GLTFLoader"),At=require("three/examples/jsm/loaders/LottieLoader"),we=require("./isPlainObject.js"),Mt=require("three/examples/jsm/controls/TransformControls");function Rt(h){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(h){for(const t in h)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(h,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>h[t]})}}return e.default=h,Object.freeze(e)}const ye=Rt(yt),R={LEFT:1,RIGHT:2,MIDDLE:4},c=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,SCREEN_PAN:65536,TOUCH_SCREEN_PAN:131072,TOUCH_DOLLY_SCREEN_PAN:262144,TOUCH_ZOOM_SCREEN_PAN:524288}),W={NONE:0,IN:1,OUT:-1};function Y(h){return h.isPerspectiveCamera}function B(h){return h.isOrthographicCamera}const q=Math.PI*2,De=Math.PI/2,Je=1e-5,se=Math.PI/180;function N(h,e,t){return Math.max(e,Math.min(t,h))}function M(h,e=Je){return Math.abs(h)<e}function S(h,e,t=Je){return M(h-e,t)}function Ue(h,e){return Math.round(h/e)*e}function ie(h){return isFinite(h)?h:h<0?-Number.MAX_VALUE:Number.MAX_VALUE}function re(h){return Math.abs(h)<Number.MAX_VALUE?h:h*(1/0)}function le(h,e,t,s,i=1/0,r){s=Math.max(1e-4,s);const o=2/s,n=o*r,a=1/(1+n+.48*n*n+.235*n*n*n);let d=h-e;const m=e,p=i*s;d=N(d,-p,p),e=h-d;const C=(t.value+o*d)*r;t.value=(t.value-o*C)*a;let g=e+(d+C)*a;return m-h>0==g>m&&(g=m,t.value=(g-m)/r),g}function ze(h,e,t,s,i=1/0,r,o){s=Math.max(1e-4,s);const n=2/s,a=n*r,d=1/(1+a+.48*a*a+.235*a*a*a);let m=e.x,p=e.y,C=e.z,g=h.x-m,u=h.y-p,f=h.z-C;const y=m,l=p,_=C,E=i*s,O=E*E,x=g*g+u*u+f*f;if(x>O){const ge=Math.sqrt(x);g=g/ge*E,u=u/ge*E,f=f/ge*E}m=h.x-g,p=h.y-u,C=h.z-f;const T=(t.x+n*g)*r,L=(t.y+n*u)*r,D=(t.z+n*f)*r;t.x=(t.x-n*T)*d,t.y=(t.y-n*L)*d,t.z=(t.z-n*D)*d,o.x=m+(g+T)*d,o.y=p+(u+L)*d,o.z=C+(f+D)*d;const V=y-h.x,ae=l-h.y,ht=_-h.z,ct=o.x-y,dt=o.y-l,pt=o.z-_;return V*ct+ae*dt+ht*pt>0&&(o.x=y,o.y=l,o.z=_,t.x=(o.x-y)/r,t.y=(o.y-l)/r,t.z=(o.z-_)/r),o}function ve(h,e){e.set(0,0),h.forEach(t=>{e.x+=t.clientX,e.y+=t.clientY}),e.x/=h.length,e.y/=h.length}function Ce(h,e){return B(h)?(console.warn(`${e} is not supported in OrthographicCamera`),!0):!1}class Dt{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 he=1/8,Ut=/Mac/.test(navigator.platform);let b,ke,ce,Oe,z,w,P,K,oe,j,I,Z,Fe,Ne,F,ne,G,je,Ee,Ie,Te,be,de;class Q extends Dt{static install(e){b=e.THREE,ke=Object.freeze(new b.Vector3(0,0,0)),ce=Object.freeze(new b.Vector3(0,1,0)),Oe=Object.freeze(new b.Vector3(0,0,1)),z=new b.Vector2,w=new b.Vector3,P=new b.Vector3,K=new b.Vector3,oe=new b.Vector3,j=new b.Vector3,I=new b.Vector3,Z=new b.Vector3,Fe=new b.Vector3,Ne=new b.Vector3,F=new b.Spherical,ne=new b.Spherical,G=new b.Box3,je=new b.Box3,Ee=new b.Sphere,Ie=new b.Quaternion,Te=new b.Quaternion,be=new b.Matrix4,de=new b.Raycaster}static get ACTION(){return c}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.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=c.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 b.Vector3,this._focalOffsetVelocity=new b.Vector3,this._zoomVelocity={value:0},this._truckInternal=(l,_,E,O)=>{let x,T;if(Y(this._camera)){const L=w.copy(this._camera.position).sub(this._target),D=this._camera.getEffectiveFOV()*se,V=L.length()*Math.tan(D*.5);x=this.truckSpeed*l*V/this._elementRect.height,T=this.truckSpeed*_*V/this._elementRect.height}else if(B(this._camera)){const L=this._camera;x=this.truckSpeed*l*(L.right-L.left)/L.zoom/this._elementRect.width,T=this.truckSpeed*_*(L.top-L.bottom)/L.zoom/this._elementRect.height}else return;O?(E?this.setFocalOffset(this._focalOffsetEnd.x+x,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(x,0,!0),this.forward(-T,!0)):E?this.setFocalOffset(this._focalOffsetEnd.x+x,this._focalOffsetEnd.y+T,this._focalOffsetEnd.z,!0):this.truck(x,T,!0)},this._rotateInternal=(l,_)=>{const E=q*this.azimuthRotateSpeed*l/this._elementRect.height,O=q*this.polarRotateSpeed*_/this._elementRect.height;this.rotate(E,O,!0)},this._dollyInternal=(l,_,E)=>{const O=Math.pow(.95,-l*this.dollySpeed),x=this._sphericalEnd.radius,T=this._sphericalEnd.radius*O,L=N(T,this.minDistance,this.maxDistance),D=L-T;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(T,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(D,!0),this._dollyToNoClamp(L,!0)):this._dollyToNoClamp(L,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?T:L)-x,this._dollyControlCoord.set(_,E)),this._lastDollyDirection=Math.sign(-l)},this._zoomInternal=(l,_,E)=>{const O=Math.pow(.95,l*this.dollySpeed),x=this._zoom,T=this._zoom*O;this.zoomTo(T,!0),this.dollyToCursor&&(this._changedZoom+=T-x,this._dollyControlCoord.set(_,E))},typeof b=="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 b.Quaternion().setFromUnitVectors(this._camera.up,ce),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=c.NONE,this._target=new b.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new b.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new b.Spherical().setFromVector3(w.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 b.Vector3,new b.Vector3,new b.Vector3,new b.Vector3],this._updateNearPlaneCorners(),this._boundary=new b.Box3(new b.Vector3(-1/0,-1/0,-1/0),new b.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 b.Vector2,this.mouseButtons={left:c.ROTATE,middle:c.DOLLY,right:c.TRUCK,wheel:Y(this._camera)?c.DOLLY:B(this._camera)?c.ZOOM:c.NONE},this.touches={one:c.TOUCH_ROTATE,two:Y(this._camera)?c.TOUCH_DOLLY_TRUCK:B(this._camera)?c.TOUCH_ZOOM_TRUCK:c.NONE,three:c.TOUCH_TRUCK};const s=new b.Vector2,i=new b.Vector2,r=new b.Vector2,o=l=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const O=this._domElement.getBoundingClientRect(),x=(l.clientX-O.left)/(O.right-O.left),T=(l.clientY-O.top)/(O.bottom-O.top);if(x<this._interactiveArea.left||x>this._interactiveArea.right||T<this._interactiveArea.top||T>this._interactiveArea.bottom)return}const _=l.pointerType!=="mouse"?null:(l.buttons&R.LEFT)===R.LEFT?R.LEFT:(l.buttons&R.MIDDLE)===R.MIDDLE?R.MIDDLE:(l.buttons&R.RIGHT)===R.RIGHT?R.RIGHT:null;if(_!==null){const O=this._findPointerByMouseButton(_);O&&this._disposePointer(O)}if((l.buttons&R.LEFT)===R.LEFT&&this._lockedPointer)return;const E={pointerId:l.pointerId,clientX:l.clientX,clientY:l.clientY,deltaX:0,deltaY:0,mouseButton:_};this._activePointers.push(E),this._domElement.ownerDocument.removeEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),this._domElement.ownerDocument.addEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",a),this._isDragging=!0,C(l)},n=l=>{l.cancelable&&l.preventDefault();const _=l.pointerId,E=this._lockedPointer||this._findPointerById(_);if(E){if(E.clientX=l.clientX,E.clientY=l.clientY,E.deltaX=l.movementX,E.deltaY=l.movementY,this._state=0,l.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&&(l.buttons&R.LEFT)===R.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(l.buttons&R.MIDDLE)===R.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(l.buttons&R.RIGHT)===R.RIGHT&&(this._state=this._state|this.mouseButtons.right);g()}},a=l=>{const _=this._findPointerById(l.pointerId);if(!(_&&_===this._lockedPointer)){if(_&&this._disposePointer(_),l.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=c.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=c.NONE;u()}};let d=-1;const m=l=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===c.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const T=this._domElement.getBoundingClientRect(),L=(l.clientX-T.left)/(T.right-T.left),D=(l.clientY-T.top)/(T.bottom-T.top);if(L<this._interactiveArea.left||L>this._interactiveArea.right||D<this._interactiveArea.top||D>this._interactiveArea.bottom)return}if(l.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===c.ROTATE||this.mouseButtons.wheel===c.TRUCK){const T=performance.now();d-T<1e3&&this._getClientRect(this._elementRect),d=T}const _=Ut?-1:-3,E=l.deltaMode===1||l.ctrlKey?l.deltaY/_:l.deltaY/(_*10),O=this.dollyToCursor?(l.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,x=this.dollyToCursor?(l.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case c.ROTATE:{this._rotateInternal(l.deltaX,l.deltaY),this._isUserControllingRotate=!0;break}case c.TRUCK:{this._truckInternal(l.deltaX,l.deltaY,!1,!1),this._isUserControllingTruck=!0;break}case c.SCREEN_PAN:{this._truckInternal(l.deltaX,l.deltaY,!1,!0),this._isUserControllingTruck=!0;break}case c.OFFSET:{this._truckInternal(l.deltaX,l.deltaY,!0,!1),this._isUserControllingOffset=!0;break}case c.DOLLY:{this._dollyInternal(-E,O,x),this._isUserControllingDolly=!0;break}case c.ZOOM:{this._zoomInternal(-E,O,x),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},p=l=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===Q.ACTION.NONE){const _=l instanceof PointerEvent?l.pointerId:0,E=this._findPointerById(_);E&&this._disposePointer(E),this._domElement.ownerDocument.removeEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a);return}l.preventDefault()}},C=l=>{if(!this._enabled)return;if(ve(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,O=z.y-this._activePointers[1].clientY,x=Math.sqrt(E*E+O*O);r.set(0,x);const T=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,L=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;i.set(T,L)}if(this._state=0,!l)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in l&&l.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&&(l.buttons&R.LEFT)===R.LEFT&&(this._state=this._state|this.mouseButtons.left),(l.buttons&R.MIDDLE)===R.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(l.buttons&R.RIGHT)===R.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&c.ROTATE)===c.ROTATE||(this._state&c.TOUCH_ROTATE)===c.TOUCH_ROTATE||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_ZOOM_ROTATE)===c.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&c.TRUCK)===c.TRUCK||(this._state&c.SCREEN_PAN)===c.SCREEN_PAN||(this._state&c.TOUCH_TRUCK)===c.TOUCH_TRUCK||(this._state&c.TOUCH_SCREEN_PAN)===c.TOUCH_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&c.DOLLY)===c.DOLLY||(this._state&c.TOUCH_DOLLY)===c.TOUCH_DOLLY||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&c.ZOOM)===c.ZOOM||(this._state&c.TOUCH_ZOOM)===c.TOUCH_ZOOM||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_ZOOM_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET||(this._state&c.TOUCH_ZOOM_ROTATE)===c.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&c.OFFSET)===c.OFFSET||(this._state&c.TOUCH_OFFSET)===c.TOUCH_OFFSET||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},g=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,ve(this._activePointers,z);const _=this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,E=_?-_.deltaX:i.x-z.x,O=_?-_.deltaY:i.y-z.y;if(i.copy(z),((this._state&c.ROTATE)===c.ROTATE||(this._state&c.TOUCH_ROTATE)===c.TOUCH_ROTATE||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_ZOOM_ROTATE)===c.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(E,O),this._isUserControllingRotate=!0),(this._state&c.DOLLY)===c.DOLLY||(this._state&c.ZOOM)===c.ZOOM){const x=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,L=this.dollyDragInverted?-1:1;(this._state&c.DOLLY)===c.DOLLY?(this._dollyInternal(L*O*he,x,T),this._isUserControllingDolly=!0):(this._zoomInternal(L*O*he,x,T),this._isUserControllingZoom=!0)}if((this._state&c.TOUCH_DOLLY)===c.TOUCH_DOLLY||(this._state&c.TOUCH_ZOOM)===c.TOUCH_ZOOM||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_ZOOM_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_ZOOM_ROTATE)===c.TOUCH_ZOOM_ROTATE){const x=z.x-this._activePointers[1].clientX,T=z.y-this._activePointers[1].clientY,L=Math.sqrt(x*x+T*T),D=r.y-L;r.set(0,L);const V=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,ae=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&c.TOUCH_DOLLY)===c.TOUCH_DOLLY||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET?(this._dollyInternal(D*he,V,ae),this._isUserControllingDolly=!0):(this._zoomInternal(D*he,V,ae),this._isUserControllingZoom=!0)}((this._state&c.TRUCK)===c.TRUCK||(this._state&c.TOUCH_TRUCK)===c.TOUCH_TRUCK||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(E,O,!1,!1),this._isUserControllingTruck=!0),((this._state&c.SCREEN_PAN)===c.SCREEN_PAN||(this._state&c.TOUCH_SCREEN_PAN)===c.TOUCH_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_ZOOM_SCREEN_PAN)&&(this._truckInternal(E,O,!1,!0),this._isUserControllingTruck=!0),((this._state&c.OFFSET)===c.OFFSET||(this._state&c.TOUCH_OFFSET)===c.TOUCH_OFFSET||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(E,O,!0,!1),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},u=()=>{ve(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",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),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",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",f),this._domElement.ownerDocument.addEventListener("pointerlockerror",y),this._domElement.ownerDocument.addEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",a),C())},this.unlockPointer=()=>{var l,_,E;this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),(l=this._domElement)===null||l===void 0||l.ownerDocument.exitPointerLock(),(_=this._domElement)===null||_===void 0||_.ownerDocument.removeEventListener("pointerlockchange",f),(E=this._domElement)===null||E===void 0||E.ownerDocument.removeEventListener("pointerlockerror",y),this.cancel()};const f=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},y=()=>{this.unlockPointer()};this._addAllEventListeners=l=>{this._domElement=l,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",o),this._domElement.addEventListener("pointercancel",a),this._domElement.addEventListener("wheel",m,{passive:!1}),this._domElement.addEventListener("contextmenu",p)},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",a),this._domElement.removeEventListener("wheel",m,{passive:!1}),this._domElement.removeEventListener("contextmenu",p),this._domElement.ownerDocument.removeEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),this._domElement.ownerDocument.removeEventListener("pointerlockchange",f),this._domElement.ownerDocument.removeEventListener("pointerlockerror",y))},this.cancel=()=>{this._state!==c.NONE&&(this._state=c.NONE,this._activePointers.length=0,u())},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=N(e.width,0,1),this._interactiveArea.height=N(e.height,0,1),this._interactiveArea.x=N(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=N(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=N(e,this.minAzimuthAngle,this.maxAzimuthAngle),r=N(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||S(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&S(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=W.NONE,this._changedDolly=0,this._dollyToNoClamp(N(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const s=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const o=this._collisionTest(),n=S(o,this._spherical.radius);if(!(s>e)&&n)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||S(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(r)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(oe).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const s=!t||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(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=N(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const s=!t||S(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),I.setFromMatrixColumn(this._camera.matrix,1),j.multiplyScalar(e),I.multiplyScalar(-t);const i=w.copy(j).add(I),r=P.copy(this._targetEnd).add(i);return this.moveTo(r.x,r.y,r.z,s)}forward(e,t=!1){w.setFromMatrixColumn(this._camera.matrix,0),w.crossVectors(this._camera.up,w),w.multiplyScalar(e);const s=P.copy(this._targetEnd).add(w);return this.moveTo(s.x,s.y,s.z,t)}elevate(e,t=!1){return w.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+w.x,this._targetEnd.y+w.y,this._targetEnd.z+w.z,t)}moveTo(e,t,s,i=!1){this._isUserControllingTruck=!1;const r=w.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||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(o)}lookInDirectionOf(e,t,s,i=!1){const n=w.set(e,t,s).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius).add(this._targetEnd);return this.setPosition(n.x,n.y,n.z,i)}fitToBox(e,t,{cover:s=!1,paddingLeft:i=0,paddingRight:r=0,paddingBottom:o=0,paddingTop:n=0}={}){const a=[],d=e.isBox3?G.copy(e):G.setFromObject(e);d.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const m=Ue(this._sphericalEnd.theta,De),p=Ue(this._sphericalEnd.phi,De);a.push(this.rotateTo(m,p,t));const C=w.setFromSpherical(this._sphericalEnd).normalize(),g=Ie.setFromUnitVectors(C,Oe),u=S(Math.abs(C.y),1);u&&g.multiply(Te.setFromAxisAngle(ce,m)),g.multiply(this._yAxisUpSpaceInverse);const f=je.makeEmpty();P.copy(d.min).applyQuaternion(g),f.expandByPoint(P),P.copy(d.min).setX(d.max.x).applyQuaternion(g),f.expandByPoint(P),P.copy(d.min).setY(d.max.y).applyQuaternion(g),f.expandByPoint(P),P.copy(d.max).setZ(d.min.z).applyQuaternion(g),f.expandByPoint(P),P.copy(d.min).setZ(d.max.z).applyQuaternion(g),f.expandByPoint(P),P.copy(d.max).setY(d.min.y).applyQuaternion(g),f.expandByPoint(P),P.copy(d.max).setX(d.min.x).applyQuaternion(g),f.expandByPoint(P),P.copy(d.max).applyQuaternion(g),f.expandByPoint(P),f.min.x-=i,f.min.y-=o,f.max.x+=r,f.max.y+=n,g.setFromUnitVectors(Oe,C),u&&g.premultiply(Te.invert()),g.premultiply(this._yAxisUpSpace);const y=f.getSize(w),l=f.getCenter(P).applyQuaternion(g);if(Y(this._camera)){const _=this.getDistanceToFitBox(y.x,y.y,y.z,s);a.push(this.moveTo(l.x,l.y,l.z,t)),a.push(this.dollyTo(_,t)),a.push(this.setFocalOffset(0,0,0,t))}else if(B(this._camera)){const _=this._camera,E=_.right-_.left,O=_.top-_.bottom,x=s?Math.max(E/y.x,O/y.y):Math.min(E/y.x,O/y.y);a.push(this.moveTo(l.x,l.y,l.z,t)),a.push(this.zoomTo(x,t)),a.push(this.setFocalOffset(0,0,0,t))}return Promise.all(a)}fitToSphere(e,t){const s=[],r="isObject3D"in e?Q.createBoundingSphere(e,Ee):Ee.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(B(this._camera)){const o=this._camera.right-this._camera.left,n=this._camera.top-this._camera.bottom,a=2*r.radius,d=Math.min(o/a,n/a);s.push(this.zoomTo(d,t))}return s.push(this.setFocalOffset(0,0,0,t)),Promise.all(s)}setLookAt(e,t,s,i,r,o,n=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=W.NONE,this._changedDolly=0;const a=P.set(i,r,o),d=w.set(e,t,s);this._targetEnd.copy(a),this._sphericalEnd.setFromVector3(d.sub(a).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,n||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const m=!n||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(this._target.z,this._targetEnd.z,this.restThreshold)&&S(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&S(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&S(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(m)}lerpLookAt(e,t,s,i,r,o,n,a,d,m,p,C,g,u=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=W.NONE,this._changedDolly=0;const f=w.set(i,r,o),y=P.set(e,t,s);F.setFromVector3(y.sub(f).applyQuaternion(this._yAxisUpSpace));const l=K.set(m,p,C),_=P.set(n,a,d);ne.setFromVector3(_.sub(l).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(f.lerp(l,g));const E=ne.theta-F.theta,O=ne.phi-F.phi,x=ne.radius-F.radius;this._sphericalEnd.set(F.radius+x*g,F.phi+O*g,F.theta+E*g),this.normalizeRotations(),this._needsUpdate=!0,u||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const T=!u||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(this._target.z,this._targetEnd.z,this.restThreshold)&&S(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&S(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&S(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(w),o=this.setLookAt(r.x,r.y,r.z,e,t,s,i);return this._sphericalEnd.phi=N(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||S(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&S(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&S(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),I.setFromMatrixColumn(this._camera.matrixWorldInverse,1),Z.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=w.set(e,t,s),r=i.distanceTo(this._camera.position),o=i.sub(this._camera.position);j.multiplyScalar(o.x),I.multiplyScalar(o.y),Z.multiplyScalar(o.z),w.copy(j).add(I).add(Z),w.z=w.z+r,this.dollyTo(r,!1),this.setFocalOffset(-w.x,w.y,-w.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 b.Vector4,typeof e=="number"?this._viewport.set(e,t,s,i):this._viewport.copy(e)}getDistanceToFitBox(e,t,s,i=!1){if(Ce(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const r=e/t,o=this._camera.getEffectiveFOV()*se,n=this._camera.aspect;return((i?r>n:r<n)?t:e/n)*.5/Math.tan(o*.5)+s*.5}getDistanceToFitSphere(e){if(Ce(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*se,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 b.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new b.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e||new b.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new b.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%q,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=q),this._spherical.theta+=q*Math.round((this._sphericalEnd.theta-this._spherical.theta)/q)}stop(){this._focalOffset.copy(this._focalOffsetEnd),this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd),this._zoom=this._zoomEnd}reset(e=!1){if(!S(this._camera.up.x,this._cameraUp0.x)||!S(this._camera.up.y,this._cameraUp0.y)||!S(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const s=this.getPosition(w);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,ce),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=w.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(w);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=Fe.subVectors(this._targetEnd,this._target),o=Ne.subVectors(this._focalOffsetEnd,this._focalOffset),n=this._zoomEnd-this._zoom;if(M(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const p=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=le(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,p,1/0,e),this._needsUpdate=!0}if(M(s))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const p=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=le(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,p,1/0,e),this._needsUpdate=!0}if(M(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const p=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=le(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,p,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 p=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;ze(this._target,this._targetEnd,this._targetVelocity,p,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 p=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;ze(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,p,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(M(n))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const p=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=le(this._zoom,this._zoomEnd,this._zoomVelocity,p,1/0,e)}if(this.dollyToCursor){if(Y(this._camera)&&this._changedDolly!==0){const p=this._spherical.radius-this._lastDistance,C=this._camera,g=this._getCameraDirection(oe),u=w.copy(g).cross(C.up).normalize();u.lengthSq()===0&&(u.x=1);const f=P.crossVectors(u,g),y=this._sphericalEnd.radius*Math.tan(C.getEffectiveFOV()*se*.5),_=(this._sphericalEnd.radius-p-this._sphericalEnd.radius)/this._sphericalEnd.radius,E=K.copy(this._targetEnd).add(u.multiplyScalar(this._dollyControlCoord.x*y*C.aspect)).add(f.multiplyScalar(this._dollyControlCoord.y*y)),O=w.copy(this._targetEnd).lerp(E,_),x=this._lastDollyDirection===W.IN&&this._spherical.radius<=this.minDistance,T=this._lastDollyDirection===W.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(x||T)){this._sphericalEnd.radius-=p,this._spherical.radius-=p;const D=P.copy(g).multiplyScalar(-p);O.add(D)}this._boundary.clampPoint(O,O);const L=P.subVectors(O,this._targetEnd);this._targetEnd.copy(O),this._target.add(L),this._changedDolly-=p,M(this._changedDolly)&&(this._changedDolly=0)}else if(B(this._camera)&&this._changedZoom!==0){const p=this._zoom-this._lastZoom,C=this._camera,g=w.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(C.near+C.far)/(C.near-C.far)).unproject(C),u=P.set(0,0,-1).applyQuaternion(C.quaternion),f=K.copy(g).add(u.multiplyScalar(-g.dot(C.up))),l=-(this._zoom-p-this._zoom)/this._zoom,_=this._getCameraDirection(oe),E=this._targetEnd.dot(_),O=w.copy(this._targetEnd).lerp(f,l),x=O.dot(_),T=_.multiplyScalar(x-E);O.sub(T),this._boundary.clampPoint(O,O);const L=P.subVectors(O,this._targetEnd);this._targetEnd.copy(O),this._target.add(L),this._changedZoom-=p,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 a=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,a),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))&&(j.setFromMatrixColumn(this._camera.matrix,0),I.setFromMatrixColumn(this._camera.matrix,1),Z.setFromMatrixColumn(this._camera.matrix,2),j.multiplyScalar(this._focalOffset.x),I.multiplyScalar(-this._focalOffset.y),Z.multiplyScalar(this._focalOffset.z),w.copy(j).add(I).add(Z),this._camera.position.add(w),this._camera.updateMatrixWorld()),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),w.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const m=this._needsUpdate;return m&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):m?(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(n,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!m&&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=m,this._needsUpdate=!1,m}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:ie(this.maxDistance),minZoom:this.minZoom,maxZoom:ie(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:ie(this.maxPolarAngle),minAzimuthAngle:ie(this.minAzimuthAngle),maxAzimuthAngle:ie(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,target:this._targetEnd.toArray(),position:w.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=re(s.maxDistance),this.minZoom=s.minZoom,this.maxZoom=re(s.maxZoom),this.minPolarAngle=s.minPolarAngle,this.maxPolarAngle=re(s.maxPolarAngle),this.minAzimuthAngle=re(s.minAzimuthAngle),this.maxAzimuthAngle=re(s.maxAzimuthAngle),this.smoothTime=s.smoothTime,this.draggingSmoothTime=s.draggingSmoothTime,this.dollySpeed=s.dollySpeed,this.truckSpeed=s.truckSpeed,this.dollyToCursor=s.dollyToCursor,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),F.setFromVector3(w.fromArray(s.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(F.theta,F.phi,t),this.dollyTo(F.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),n=this._boundary.clampPoint(r,K).sub(r),a=n.lengthSq();if(a===0)return e.add(t);if(a===i)return e;if(s===0)return e.add(t).add(n);{const d=1+s*a/t.dot(n);return e.add(P.copy(t).multiplyScalar(d)).add(n.multiplyScalar(1-s))}}_updateNearPlaneCorners(){if(Y(this._camera)){const e=this._camera,t=e.near,s=e.getEffectiveFOV()*se,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)||Ce(this._camera,"_collisionTest"))return e;const s=this._getTargetDirection(oe);be.lookAt(ke,s,this._camera.up);for(let i=0;i<4;i++){const r=P.copy(this._nearPlaneCorners[i]);r.applyMatrix4(be);const o=K.addVectors(this._target,r);de.set(o,s),de.far=this._spherical.radius+1;const n=de.intersectObjects(this.colliderMeshes);n.length!==0&&n[0].distance<e&&(e=n[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 b.Sphere){const s=t,i=s.center;G.makeEmpty(),e.traverseVisible(o=>{o.isMesh&&G.expandByObject(o)}),G.getCenter(i);let r=0;return e.traverseVisible(o=>{if(!o.isMesh)return;const n=o;if(!n.geometry)return;const a=n.geometry.clone();a.applyMatrix4(n.matrixWorld);const m=a.attributes.position;for(let p=0,C=m.count;p<C;p++)w.fromBufferAttribute(m,p),r=Math.max(r,i.distanceToSquared(w))}),s.radius=Math.sqrt(r),s}}var Le={exports:{}},X=typeof Reflect=="object"?Reflect:null,He=X&&typeof X.apply=="function"?X.apply:function(e,t,s){return Function.prototype.apply.call(e,t,s)},pe;X&&typeof X.ownKeys=="function"?pe=X.ownKeys:Object.getOwnPropertySymbols?pe=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:pe=function(e){return Object.getOwnPropertyNames(e)};function zt(h){console&&console.warn&&console.warn(h)}var et=Number.isNaN||function(e){return e!==e};function A(){A.init.call(this)}Le.exports=A;Le.exports.once=jt;A.EventEmitter=A;A.prototype._events=void 0;A.prototype._eventsCount=0;A.prototype._maxListeners=void 0;var Be=10;function fe(h){if(typeof h!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof h)}Object.defineProperty(A,"defaultMaxListeners",{enumerable:!0,get:function(){return Be},set:function(h){if(typeof h!="number"||h<0||et(h))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+h+".");Be=h}});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||et(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 tt(h){return h._maxListeners===void 0?A.defaultMaxListeners:h._maxListeners}A.prototype.getMaxListeners=function(){return tt(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 n=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw n.context=o,n}var a=r[e];if(a===void 0)return!1;if(typeof a=="function")He(a,this,t);else for(var d=a.length,m=nt(a,d),s=0;s<d;++s)He(m[s],this,t);return!0};function st(h,e,t,s){var i,r,o;if(fe(t),r=h._events,r===void 0?(r=h._events=Object.create(null),h._eventsCount=0):(r.newListener!==void 0&&(h.emit("newListener",e,t.listener?t.listener:t),r=h._events),o=r[e]),o===void 0)o=r[e]=t,++h._eventsCount;else if(typeof o=="function"?o=r[e]=s?[t,o]:[o,t]:s?o.unshift(t):o.push(t),i=tt(h),i>0&&o.length>i&&!o.warned){o.warned=!0;var n=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");n.name="MaxListenersExceededWarning",n.emitter=h,n.type=e,n.count=o.length,zt(n)}return h}A.prototype.addListener=function(e,t){return st(this,e,t,!1)};A.prototype.on=A.prototype.addListener;A.prototype.prependListener=function(e,t){return st(this,e,t,!0)};function kt(){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 it(h,e,t){var s={fired:!1,wrapFn:void 0,target:h,type:e,listener:t},i=kt.bind(s);return i.listener=t,s.wrapFn=i,i}A.prototype.once=function(e,t){return fe(t),this.on(e,it(this,e,t)),this};A.prototype.prependOnceListener=function(e,t){return fe(t),this.prependListener(e,it(this,e,t)),this};A.prototype.removeListener=function(e,t){var s,i,r,o,n;if(fe(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){n=s[o].listener,r=o;break}if(r<0)return this;r===0?s.shift():Ft(s,r),s.length===1&&(i[e]=s[0]),i.removeListener!==void 0&&this.emit("removeListener",e,n||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 rt(h,e,t){var s=h._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):nt(i,i.length)}A.prototype.listeners=function(e){return rt(this,e,!0)};A.prototype.rawListeners=function(e){return rt(this,e,!1)};A.listenerCount=function(h,e){return typeof h.listenerCount=="function"?h.listenerCount(e):ot.call(h,e)};A.prototype.listenerCount=ot;function ot(h){var e=this._events;if(e!==void 0){var t=e[h];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}A.prototype.eventNames=function(){return this._eventsCount>0?pe(this._events):[]};function nt(h,e){for(var t=new Array(e),s=0;s<e;++s)t[s]=h[s];return t}function Ft(h,e){for(;e+1<h.length;e++)h[e]=h[e+1];h.pop()}function Nt(h){for(var e=new Array(h.length),t=0;t<e.length;++t)e[t]=h[t].listener||h[t];return e}function jt(h,e){return new Promise(function(t,s){function i(o){h.removeListener(e,r),s(o)}function r(){typeof h.removeListener=="function"&&h.removeListener("error",i),t([].slice.call(arguments))}at(h,e,r,{once:!0}),e!=="error"&&It(h,i,{once:!0})})}function It(h,e,t){typeof h.on=="function"&&at(h,"error",e,t)}function at(h,e,t,s){if(typeof h.on=="function")s.once?h.once(e,t):h.on(e,t);else if(typeof h.addEventListener=="function")h.addEventListener(e,function i(r){s.once&&h.removeEventListener(e,i),t(r)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof h)}var _e=Le.exports;let Ht=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 J{constructor(){this.event=new _e.EventEmitter,this.controllerMap=new Map,this.activeIndex=-1,this.activeControllerSet=new Set}addController(e,t){const s=new Ht;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();const s=Array.from(this.controllerMap.entries()).map(([i,r])=>{const o=r.isEnabled(e);if(t==null||t(i,o),o)return this.activeControllerSet.add(i),i}).filter(Boolean);this.controller=s[0],this.event.emit("pageChange",this.controller)}update(e,t){this.activeControllerSet.forEach(s=>{var i;(i=s.update)==null||i.call(s,e,t)})}dispose(){this.controllerMap.forEach((e,t)=>{e.set(0)}),this.removePage(0),this.controllerMap.clear(),this.event.removeAllListeners(),this.activeControllerSet.clear()}}const lt={fov:45,near:1,far:1e3,up:new v.Vector3(0,1,0)};class Bt extends J{constructor(e){super(),this.width=0,this.height=0,this.width=e.width,this.height=e.height}get camera(){return this.controller}addPerspectiveCamera(e=lt,t){const{fov:s,far:i,near:r,up:o,aspect:n}=e,a=n!=null?n:this.width/this.height,d=new v.PerspectiveCamera(s,a,r,i);return d.up=o,this.addController(d,t)}setPageActive(e){super.setPageActive(e,(t,s)=>{s&&this.setAspect(this.width/this.height,t)})}setSize(e,t){this.width=e,this.height=t,this.setAspect(e/t)}setAspect(e,t){const s=t||this.camera;s.aspect!==e&&(s.aspect=e,s.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 v.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 v.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:n,height:a}=this,d=n/a;(this.camera.fov!==t.fov||this.camera.aspect!==d||!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=d,this.camera.updateProjectionMatrix())}}}const Vt=h=>{const e=new bt.ShaderPass(new v.ShaderMaterial({uniforms:{baseTexture:{value:null},bloomTexture:{value:h.renderTarget2.texture},bloomAlphaType:{value:0}},vertexShader:`
1
+ "use strict";var mt=Object.defineProperty,ut=Object.defineProperties;var ft=Object.getOwnPropertyDescriptors;var Pe=Object.getOwnPropertySymbols;var _t=Object.prototype.hasOwnProperty,gt=Object.prototype.propertyIsEnumerable;var Se=(h,e,t)=>e in h?mt(h,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):h[e]=t,k=(h,e)=>{for(var t in e||(e={}))_t.call(e,t)&&Se(h,t,e[t]);if(Pe)for(var t of Pe(e))gt.call(e,t)&&Se(h,t,e[t]);return h},ee=(h,e)=>ut(h,ft(e));var te=(h,e,t)=>new Promise((s,i)=>{var r=a=>{try{n(t.next(a))}catch(d){i(d)}},o=a=>{try{n(t.throw(a))}catch(d){i(d)}},n=a=>a.done?s(a.value):Promise.resolve(a.value).then(r,o);n((t=t.apply(h,e)).next())});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const yt=require("@tweenjs/tween.js"),vt=require("deepmerge"),Ct=require("stats-gl"),v=require("three"),U=require("./WebGPULineSegments2.js"),Ae=require("three/examples/jsm/postprocessing/EffectComposer"),Ot=require("three/examples/jsm/postprocessing/RenderPass"),Et=require("three/examples/jsm/postprocessing/SSAOPass"),Tt=require("three/examples/jsm/postprocessing/UnrealBloomPass");require("three/examples/jsm/lines/LineMaterial");require("three/examples/jsm/lines/LineSegmentsGeometry");require("three/examples/jsm/renderers/CSS2DRenderer");require("three/examples/jsm/renderers/CSS3DRenderer");require("d3-geo");require("d3-geo-projection");require("three/examples/jsm/utils/BufferGeometryUtils");require("three-bvh-csg");require("three/examples/jsm/lights/RectAreaLightUniformsLib");require("three/examples/jsm/lines/LineSegments2");const bt=require("three/examples/jsm/postprocessing/ShaderPass"),xt=require("three/examples/jsm/postprocessing/OutputPass"),Me=require("three/examples/jsm/postprocessing/Pass"),wt=require("three/examples/jsm/helpers/RectAreaLightHelper"),Lt=require("three/examples/jsm/helpers/ViewHelper"),xe=require("esus-lite"),Pt=require("three/examples/jsm/loaders/DRACOLoader"),St=require("three/examples/jsm/loaders/EXRLoader"),Re=require("three/examples/jsm/loaders/GLTFLoader"),At=require("three/examples/jsm/loaders/LottieLoader"),we=require("./isPlainObject.js"),Mt=require("three/examples/jsm/controls/TransformControls");function Rt(h){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(h){for(const t in h)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(h,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>h[t]})}}return e.default=h,Object.freeze(e)}const ye=Rt(yt),R={LEFT:1,RIGHT:2,MIDDLE:4},c=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,SCREEN_PAN:65536,TOUCH_SCREEN_PAN:131072,TOUCH_DOLLY_SCREEN_PAN:262144,TOUCH_ZOOM_SCREEN_PAN:524288}),W={NONE:0,IN:1,OUT:-1};function Y(h){return h.isPerspectiveCamera}function B(h){return h.isOrthographicCamera}const q=Math.PI*2,De=Math.PI/2,Je=1e-5,se=Math.PI/180;function N(h,e,t){return Math.max(e,Math.min(t,h))}function M(h,e=Je){return Math.abs(h)<e}function S(h,e,t=Je){return M(h-e,t)}function Ue(h,e){return Math.round(h/e)*e}function ie(h){return isFinite(h)?h:h<0?-Number.MAX_VALUE:Number.MAX_VALUE}function re(h){return Math.abs(h)<Number.MAX_VALUE?h:h*(1/0)}function le(h,e,t,s,i=1/0,r){s=Math.max(1e-4,s);const o=2/s,n=o*r,a=1/(1+n+.48*n*n+.235*n*n*n);let d=h-e;const m=e,p=i*s;d=N(d,-p,p),e=h-d;const C=(t.value+o*d)*r;t.value=(t.value-o*C)*a;let u=e+(d+C)*a;return m-h>0==u>m&&(u=m,t.value=(u-m)/r),u}function ze(h,e,t,s,i=1/0,r,o){s=Math.max(1e-4,s);const n=2/s,a=n*r,d=1/(1+a+.48*a*a+.235*a*a*a);let m=e.x,p=e.y,C=e.z,u=h.x-m,f=h.y-p,g=h.z-C;const y=m,l=p,_=C,E=i*s,O=E*E,x=u*u+f*f+g*g;if(x>O){const ge=Math.sqrt(x);u=u/ge*E,f=f/ge*E,g=g/ge*E}m=h.x-u,p=h.y-f,C=h.z-g;const T=(t.x+n*u)*r,L=(t.y+n*f)*r,D=(t.z+n*g)*r;t.x=(t.x-n*T)*d,t.y=(t.y-n*L)*d,t.z=(t.z-n*D)*d,o.x=m+(u+T)*d,o.y=p+(f+L)*d,o.z=C+(g+D)*d;const V=y-h.x,ae=l-h.y,ht=_-h.z,ct=o.x-y,dt=o.y-l,pt=o.z-_;return V*ct+ae*dt+ht*pt>0&&(o.x=y,o.y=l,o.z=_,t.x=(o.x-y)/r,t.y=(o.y-l)/r,t.z=(o.z-_)/r),o}function ve(h,e){e.set(0,0),h.forEach(t=>{e.x+=t.clientX,e.y+=t.clientY}),e.x/=h.length,e.y/=h.length}function Ce(h,e){return B(h)?(console.warn(`${e} is not supported in OrthographicCamera`),!0):!1}class Dt{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 he=1/8,Ut=/Mac/.test(navigator.platform);let b,ke,ce,Oe,z,w,P,K,oe,j,I,Z,Fe,Ne,F,ne,G,je,Ee,Ie,Te,be,de;class Q extends Dt{static install(e){b=e.THREE,ke=Object.freeze(new b.Vector3(0,0,0)),ce=Object.freeze(new b.Vector3(0,1,0)),Oe=Object.freeze(new b.Vector3(0,0,1)),z=new b.Vector2,w=new b.Vector3,P=new b.Vector3,K=new b.Vector3,oe=new b.Vector3,j=new b.Vector3,I=new b.Vector3,Z=new b.Vector3,Fe=new b.Vector3,Ne=new b.Vector3,F=new b.Spherical,ne=new b.Spherical,G=new b.Box3,je=new b.Box3,Ee=new b.Sphere,Ie=new b.Quaternion,Te=new b.Quaternion,be=new b.Matrix4,de=new b.Raycaster}static get ACTION(){return c}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.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=c.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 b.Vector3,this._focalOffsetVelocity=new b.Vector3,this._zoomVelocity={value:0},this._truckInternal=(l,_,E,O)=>{let x,T;if(Y(this._camera)){const L=w.copy(this._camera.position).sub(this._target),D=this._camera.getEffectiveFOV()*se,V=L.length()*Math.tan(D*.5);x=this.truckSpeed*l*V/this._elementRect.height,T=this.truckSpeed*_*V/this._elementRect.height}else if(B(this._camera)){const L=this._camera;x=this.truckSpeed*l*(L.right-L.left)/L.zoom/this._elementRect.width,T=this.truckSpeed*_*(L.top-L.bottom)/L.zoom/this._elementRect.height}else return;O?(E?this.setFocalOffset(this._focalOffsetEnd.x+x,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(x,0,!0),this.forward(-T,!0)):E?this.setFocalOffset(this._focalOffsetEnd.x+x,this._focalOffsetEnd.y+T,this._focalOffsetEnd.z,!0):this.truck(x,T,!0)},this._rotateInternal=(l,_)=>{const E=q*this.azimuthRotateSpeed*l/this._elementRect.height,O=q*this.polarRotateSpeed*_/this._elementRect.height;this.rotate(E,O,!0)},this._dollyInternal=(l,_,E)=>{const O=Math.pow(.95,-l*this.dollySpeed),x=this._sphericalEnd.radius,T=this._sphericalEnd.radius*O,L=N(T,this.minDistance,this.maxDistance),D=L-T;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(T,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(D,!0),this._dollyToNoClamp(L,!0)):this._dollyToNoClamp(L,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?T:L)-x,this._dollyControlCoord.set(_,E)),this._lastDollyDirection=Math.sign(-l)},this._zoomInternal=(l,_,E)=>{const O=Math.pow(.95,l*this.dollySpeed),x=this._zoom,T=this._zoom*O;this.zoomTo(T,!0),this.dollyToCursor&&(this._changedZoom+=T-x,this._dollyControlCoord.set(_,E))},typeof b=="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 b.Quaternion().setFromUnitVectors(this._camera.up,ce),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=c.NONE,this._target=new b.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new b.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new b.Spherical().setFromVector3(w.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 b.Vector3,new b.Vector3,new b.Vector3,new b.Vector3],this._updateNearPlaneCorners(),this._boundary=new b.Box3(new b.Vector3(-1/0,-1/0,-1/0),new b.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 b.Vector2,this.mouseButtons={left:c.ROTATE,middle:c.DOLLY,right:c.TRUCK,wheel:Y(this._camera)?c.DOLLY:B(this._camera)?c.ZOOM:c.NONE},this.touches={one:c.TOUCH_ROTATE,two:Y(this._camera)?c.TOUCH_DOLLY_TRUCK:B(this._camera)?c.TOUCH_ZOOM_TRUCK:c.NONE,three:c.TOUCH_TRUCK};const s=new b.Vector2,i=new b.Vector2,r=new b.Vector2,o=l=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const O=this._domElement.getBoundingClientRect(),x=(l.clientX-O.left)/(O.right-O.left),T=(l.clientY-O.top)/(O.bottom-O.top);if(x<this._interactiveArea.left||x>this._interactiveArea.right||T<this._interactiveArea.top||T>this._interactiveArea.bottom)return}const _=l.pointerType!=="mouse"?null:(l.buttons&R.LEFT)===R.LEFT?R.LEFT:(l.buttons&R.MIDDLE)===R.MIDDLE?R.MIDDLE:(l.buttons&R.RIGHT)===R.RIGHT?R.RIGHT:null;if(_!==null){const O=this._findPointerByMouseButton(_);O&&this._disposePointer(O)}if((l.buttons&R.LEFT)===R.LEFT&&this._lockedPointer)return;const E={pointerId:l.pointerId,clientX:l.clientX,clientY:l.clientY,deltaX:0,deltaY:0,mouseButton:_};this._activePointers.push(E),this._domElement.ownerDocument.removeEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),this._domElement.ownerDocument.addEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",a),this._isDragging=!0,C(l)},n=l=>{l.cancelable&&l.preventDefault();const _=l.pointerId,E=this._lockedPointer||this._findPointerById(_);if(E){if(E.clientX=l.clientX,E.clientY=l.clientY,E.deltaX=l.movementX,E.deltaY=l.movementY,this._state=0,l.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&&(l.buttons&R.LEFT)===R.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(l.buttons&R.MIDDLE)===R.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(l.buttons&R.RIGHT)===R.RIGHT&&(this._state=this._state|this.mouseButtons.right);u()}},a=l=>{const _=this._findPointerById(l.pointerId);if(!(_&&_===this._lockedPointer)){if(_&&this._disposePointer(_),l.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=c.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=c.NONE;f()}};let d=-1;const m=l=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===c.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const T=this._domElement.getBoundingClientRect(),L=(l.clientX-T.left)/(T.right-T.left),D=(l.clientY-T.top)/(T.bottom-T.top);if(L<this._interactiveArea.left||L>this._interactiveArea.right||D<this._interactiveArea.top||D>this._interactiveArea.bottom)return}if(l.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===c.ROTATE||this.mouseButtons.wheel===c.TRUCK){const T=performance.now();d-T<1e3&&this._getClientRect(this._elementRect),d=T}const _=Ut?-1:-3,E=l.deltaMode===1||l.ctrlKey?l.deltaY/_:l.deltaY/(_*10),O=this.dollyToCursor?(l.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,x=this.dollyToCursor?(l.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case c.ROTATE:{this._rotateInternal(l.deltaX,l.deltaY),this._isUserControllingRotate=!0;break}case c.TRUCK:{this._truckInternal(l.deltaX,l.deltaY,!1,!1),this._isUserControllingTruck=!0;break}case c.SCREEN_PAN:{this._truckInternal(l.deltaX,l.deltaY,!1,!0),this._isUserControllingTruck=!0;break}case c.OFFSET:{this._truckInternal(l.deltaX,l.deltaY,!0,!1),this._isUserControllingOffset=!0;break}case c.DOLLY:{this._dollyInternal(-E,O,x),this._isUserControllingDolly=!0;break}case c.ZOOM:{this._zoomInternal(-E,O,x),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},p=l=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===Q.ACTION.NONE){const _=l instanceof PointerEvent?l.pointerId:0,E=this._findPointerById(_);E&&this._disposePointer(E),this._domElement.ownerDocument.removeEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a);return}l.preventDefault()}},C=l=>{if(!this._enabled)return;if(ve(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,O=z.y-this._activePointers[1].clientY,x=Math.sqrt(E*E+O*O);r.set(0,x);const T=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,L=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;i.set(T,L)}if(this._state=0,!l)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in l&&l.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&&(l.buttons&R.LEFT)===R.LEFT&&(this._state=this._state|this.mouseButtons.left),(l.buttons&R.MIDDLE)===R.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(l.buttons&R.RIGHT)===R.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&c.ROTATE)===c.ROTATE||(this._state&c.TOUCH_ROTATE)===c.TOUCH_ROTATE||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_ZOOM_ROTATE)===c.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&c.TRUCK)===c.TRUCK||(this._state&c.SCREEN_PAN)===c.SCREEN_PAN||(this._state&c.TOUCH_TRUCK)===c.TOUCH_TRUCK||(this._state&c.TOUCH_SCREEN_PAN)===c.TOUCH_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&c.DOLLY)===c.DOLLY||(this._state&c.TOUCH_DOLLY)===c.TOUCH_DOLLY||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&c.ZOOM)===c.ZOOM||(this._state&c.TOUCH_ZOOM)===c.TOUCH_ZOOM||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_ZOOM_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET||(this._state&c.TOUCH_ZOOM_ROTATE)===c.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&c.OFFSET)===c.OFFSET||(this._state&c.TOUCH_OFFSET)===c.TOUCH_OFFSET||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},u=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,ve(this._activePointers,z);const _=this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,E=_?-_.deltaX:i.x-z.x,O=_?-_.deltaY:i.y-z.y;if(i.copy(z),((this._state&c.ROTATE)===c.ROTATE||(this._state&c.TOUCH_ROTATE)===c.TOUCH_ROTATE||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_ZOOM_ROTATE)===c.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(E,O),this._isUserControllingRotate=!0),(this._state&c.DOLLY)===c.DOLLY||(this._state&c.ZOOM)===c.ZOOM){const x=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,L=this.dollyDragInverted?-1:1;(this._state&c.DOLLY)===c.DOLLY?(this._dollyInternal(L*O*he,x,T),this._isUserControllingDolly=!0):(this._zoomInternal(L*O*he,x,T),this._isUserControllingZoom=!0)}if((this._state&c.TOUCH_DOLLY)===c.TOUCH_DOLLY||(this._state&c.TOUCH_ZOOM)===c.TOUCH_ZOOM||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_ZOOM_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_ZOOM_ROTATE)===c.TOUCH_ZOOM_ROTATE){const x=z.x-this._activePointers[1].clientX,T=z.y-this._activePointers[1].clientY,L=Math.sqrt(x*x+T*T),D=r.y-L;r.set(0,L);const V=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,ae=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&c.TOUCH_DOLLY)===c.TOUCH_DOLLY||(this._state&c.TOUCH_DOLLY_ROTATE)===c.TOUCH_DOLLY_ROTATE||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET?(this._dollyInternal(D*he,V,ae),this._isUserControllingDolly=!0):(this._zoomInternal(D*he,V,ae),this._isUserControllingZoom=!0)}((this._state&c.TRUCK)===c.TRUCK||(this._state&c.TOUCH_TRUCK)===c.TOUCH_TRUCK||(this._state&c.TOUCH_DOLLY_TRUCK)===c.TOUCH_DOLLY_TRUCK||(this._state&c.TOUCH_ZOOM_TRUCK)===c.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(E,O,!1,!1),this._isUserControllingTruck=!0),((this._state&c.SCREEN_PAN)===c.SCREEN_PAN||(this._state&c.TOUCH_SCREEN_PAN)===c.TOUCH_SCREEN_PAN||(this._state&c.TOUCH_DOLLY_SCREEN_PAN)===c.TOUCH_DOLLY_SCREEN_PAN||(this._state&c.TOUCH_ZOOM_SCREEN_PAN)===c.TOUCH_ZOOM_SCREEN_PAN)&&(this._truckInternal(E,O,!1,!0),this._isUserControllingTruck=!0),((this._state&c.OFFSET)===c.OFFSET||(this._state&c.TOUCH_OFFSET)===c.TOUCH_OFFSET||(this._state&c.TOUCH_DOLLY_OFFSET)===c.TOUCH_DOLLY_OFFSET||(this._state&c.TOUCH_ZOOM_OFFSET)===c.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(E,O,!0,!1),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},f=()=>{ve(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",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),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",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",g),this._domElement.ownerDocument.addEventListener("pointerlockerror",y),this._domElement.ownerDocument.addEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",a),C())},this.unlockPointer=()=>{var l,_,E;this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),(l=this._domElement)===null||l===void 0||l.ownerDocument.exitPointerLock(),(_=this._domElement)===null||_===void 0||_.ownerDocument.removeEventListener("pointerlockchange",g),(E=this._domElement)===null||E===void 0||E.ownerDocument.removeEventListener("pointerlockerror",y),this.cancel()};const g=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},y=()=>{this.unlockPointer()};this._addAllEventListeners=l=>{this._domElement=l,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",o),this._domElement.addEventListener("pointercancel",a),this._domElement.addEventListener("wheel",m,{passive:!1}),this._domElement.addEventListener("contextmenu",p)},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",a),this._domElement.removeEventListener("wheel",m,{passive:!1}),this._domElement.removeEventListener("contextmenu",p),this._domElement.ownerDocument.removeEventListener("pointermove",n,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",a),this._domElement.ownerDocument.removeEventListener("pointerlockchange",g),this._domElement.ownerDocument.removeEventListener("pointerlockerror",y))},this.cancel=()=>{this._state!==c.NONE&&(this._state=c.NONE,this._activePointers.length=0,f())},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=N(e.width,0,1),this._interactiveArea.height=N(e.height,0,1),this._interactiveArea.x=N(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=N(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=N(e,this.minAzimuthAngle,this.maxAzimuthAngle),r=N(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||S(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&S(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=W.NONE,this._changedDolly=0,this._dollyToNoClamp(N(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const s=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const o=this._collisionTest(),n=S(o,this._spherical.radius);if(!(s>e)&&n)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||S(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(r)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(oe).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const s=!t||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(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=N(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const s=!t||S(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),I.setFromMatrixColumn(this._camera.matrix,1),j.multiplyScalar(e),I.multiplyScalar(-t);const i=w.copy(j).add(I),r=P.copy(this._targetEnd).add(i);return this.moveTo(r.x,r.y,r.z,s)}forward(e,t=!1){w.setFromMatrixColumn(this._camera.matrix,0),w.crossVectors(this._camera.up,w),w.multiplyScalar(e);const s=P.copy(this._targetEnd).add(w);return this.moveTo(s.x,s.y,s.z,t)}elevate(e,t=!1){return w.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+w.x,this._targetEnd.y+w.y,this._targetEnd.z+w.z,t)}moveTo(e,t,s,i=!1){this._isUserControllingTruck=!1;const r=w.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||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(o)}lookInDirectionOf(e,t,s,i=!1){const n=w.set(e,t,s).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius).add(this._targetEnd);return this.setPosition(n.x,n.y,n.z,i)}fitToBox(e,t,{cover:s=!1,paddingLeft:i=0,paddingRight:r=0,paddingBottom:o=0,paddingTop:n=0}={}){const a=[],d=e.isBox3?G.copy(e):G.setFromObject(e);d.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const m=Ue(this._sphericalEnd.theta,De),p=Ue(this._sphericalEnd.phi,De);a.push(this.rotateTo(m,p,t));const C=w.setFromSpherical(this._sphericalEnd).normalize(),u=Ie.setFromUnitVectors(C,Oe),f=S(Math.abs(C.y),1);f&&u.multiply(Te.setFromAxisAngle(ce,m)),u.multiply(this._yAxisUpSpaceInverse);const g=je.makeEmpty();P.copy(d.min).applyQuaternion(u),g.expandByPoint(P),P.copy(d.min).setX(d.max.x).applyQuaternion(u),g.expandByPoint(P),P.copy(d.min).setY(d.max.y).applyQuaternion(u),g.expandByPoint(P),P.copy(d.max).setZ(d.min.z).applyQuaternion(u),g.expandByPoint(P),P.copy(d.min).setZ(d.max.z).applyQuaternion(u),g.expandByPoint(P),P.copy(d.max).setY(d.min.y).applyQuaternion(u),g.expandByPoint(P),P.copy(d.max).setX(d.min.x).applyQuaternion(u),g.expandByPoint(P),P.copy(d.max).applyQuaternion(u),g.expandByPoint(P),g.min.x-=i,g.min.y-=o,g.max.x+=r,g.max.y+=n,u.setFromUnitVectors(Oe,C),f&&u.premultiply(Te.invert()),u.premultiply(this._yAxisUpSpace);const y=g.getSize(w),l=g.getCenter(P).applyQuaternion(u);if(Y(this._camera)){const _=this.getDistanceToFitBox(y.x,y.y,y.z,s);a.push(this.moveTo(l.x,l.y,l.z,t)),a.push(this.dollyTo(_,t)),a.push(this.setFocalOffset(0,0,0,t))}else if(B(this._camera)){const _=this._camera,E=_.right-_.left,O=_.top-_.bottom,x=s?Math.max(E/y.x,O/y.y):Math.min(E/y.x,O/y.y);a.push(this.moveTo(l.x,l.y,l.z,t)),a.push(this.zoomTo(x,t)),a.push(this.setFocalOffset(0,0,0,t))}return Promise.all(a)}fitToSphere(e,t){const s=[],r="isObject3D"in e?Q.createBoundingSphere(e,Ee):Ee.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(B(this._camera)){const o=this._camera.right-this._camera.left,n=this._camera.top-this._camera.bottom,a=2*r.radius,d=Math.min(o/a,n/a);s.push(this.zoomTo(d,t))}return s.push(this.setFocalOffset(0,0,0,t)),Promise.all(s)}setLookAt(e,t,s,i,r,o,n=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=W.NONE,this._changedDolly=0;const a=P.set(i,r,o),d=w.set(e,t,s);this._targetEnd.copy(a),this._sphericalEnd.setFromVector3(d.sub(a).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,n||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const m=!n||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(this._target.z,this._targetEnd.z,this.restThreshold)&&S(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&S(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&S(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(m)}lerpLookAt(e,t,s,i,r,o,n,a,d,m,p,C,u,f=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=W.NONE,this._changedDolly=0;const g=w.set(i,r,o),y=P.set(e,t,s);F.setFromVector3(y.sub(g).applyQuaternion(this._yAxisUpSpace));const l=K.set(m,p,C),_=P.set(n,a,d);ne.setFromVector3(_.sub(l).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(g.lerp(l,u));const E=ne.theta-F.theta,O=ne.phi-F.phi,x=ne.radius-F.radius;this._sphericalEnd.set(F.radius+x*u,F.phi+O*u,F.theta+E*u),this.normalizeRotations(),this._needsUpdate=!0,f||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const T=!f||S(this._target.x,this._targetEnd.x,this.restThreshold)&&S(this._target.y,this._targetEnd.y,this.restThreshold)&&S(this._target.z,this._targetEnd.z,this.restThreshold)&&S(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&S(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&S(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(w),o=this.setLookAt(r.x,r.y,r.z,e,t,s,i);return this._sphericalEnd.phi=N(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||S(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&S(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&S(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),I.setFromMatrixColumn(this._camera.matrixWorldInverse,1),Z.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=w.set(e,t,s),r=i.distanceTo(this._camera.position),o=i.sub(this._camera.position);j.multiplyScalar(o.x),I.multiplyScalar(o.y),Z.multiplyScalar(o.z),w.copy(j).add(I).add(Z),w.z=w.z+r,this.dollyTo(r,!1),this.setFocalOffset(-w.x,w.y,-w.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 b.Vector4,typeof e=="number"?this._viewport.set(e,t,s,i):this._viewport.copy(e)}getDistanceToFitBox(e,t,s,i=!1){if(Ce(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const r=e/t,o=this._camera.getEffectiveFOV()*se,n=this._camera.aspect;return((i?r>n:r<n)?t:e/n)*.5/Math.tan(o*.5)+s*.5}getDistanceToFitSphere(e){if(Ce(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*se,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 b.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new b.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e||new b.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new b.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%q,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=q),this._spherical.theta+=q*Math.round((this._sphericalEnd.theta-this._spherical.theta)/q)}stop(){this._focalOffset.copy(this._focalOffsetEnd),this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd),this._zoom=this._zoomEnd}reset(e=!1){if(!S(this._camera.up.x,this._cameraUp0.x)||!S(this._camera.up.y,this._cameraUp0.y)||!S(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const s=this.getPosition(w);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,ce),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=w.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(w);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=Fe.subVectors(this._targetEnd,this._target),o=Ne.subVectors(this._focalOffsetEnd,this._focalOffset),n=this._zoomEnd-this._zoom;if(M(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const p=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=le(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,p,1/0,e),this._needsUpdate=!0}if(M(s))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const p=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=le(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,p,1/0,e),this._needsUpdate=!0}if(M(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const p=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=le(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,p,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 p=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;ze(this._target,this._targetEnd,this._targetVelocity,p,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 p=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;ze(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,p,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(M(n))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const p=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=le(this._zoom,this._zoomEnd,this._zoomVelocity,p,1/0,e)}if(this.dollyToCursor){if(Y(this._camera)&&this._changedDolly!==0){const p=this._spherical.radius-this._lastDistance,C=this._camera,u=this._getCameraDirection(oe),f=w.copy(u).cross(C.up).normalize();f.lengthSq()===0&&(f.x=1);const g=P.crossVectors(f,u),y=this._sphericalEnd.radius*Math.tan(C.getEffectiveFOV()*se*.5),_=(this._sphericalEnd.radius-p-this._sphericalEnd.radius)/this._sphericalEnd.radius,E=K.copy(this._targetEnd).add(f.multiplyScalar(this._dollyControlCoord.x*y*C.aspect)).add(g.multiplyScalar(this._dollyControlCoord.y*y)),O=w.copy(this._targetEnd).lerp(E,_),x=this._lastDollyDirection===W.IN&&this._spherical.radius<=this.minDistance,T=this._lastDollyDirection===W.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(x||T)){this._sphericalEnd.radius-=p,this._spherical.radius-=p;const D=P.copy(u).multiplyScalar(-p);O.add(D)}this._boundary.clampPoint(O,O);const L=P.subVectors(O,this._targetEnd);this._targetEnd.copy(O),this._target.add(L),this._changedDolly-=p,M(this._changedDolly)&&(this._changedDolly=0)}else if(B(this._camera)&&this._changedZoom!==0){const p=this._zoom-this._lastZoom,C=this._camera,u=w.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(C.near+C.far)/(C.near-C.far)).unproject(C),f=P.set(0,0,-1).applyQuaternion(C.quaternion),g=K.copy(u).add(f.multiplyScalar(-u.dot(C.up))),l=-(this._zoom-p-this._zoom)/this._zoom,_=this._getCameraDirection(oe),E=this._targetEnd.dot(_),O=w.copy(this._targetEnd).lerp(g,l),x=O.dot(_),T=_.multiplyScalar(x-E);O.sub(T),this._boundary.clampPoint(O,O);const L=P.subVectors(O,this._targetEnd);this._targetEnd.copy(O),this._target.add(L),this._changedZoom-=p,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 a=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,a),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))&&(j.setFromMatrixColumn(this._camera.matrix,0),I.setFromMatrixColumn(this._camera.matrix,1),Z.setFromMatrixColumn(this._camera.matrix,2),j.multiplyScalar(this._focalOffset.x),I.multiplyScalar(-this._focalOffset.y),Z.multiplyScalar(this._focalOffset.z),w.copy(j).add(I).add(Z),this._camera.position.add(w),this._camera.updateMatrixWorld()),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),w.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const m=this._needsUpdate;return m&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):m?(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(n,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!m&&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=m,this._needsUpdate=!1,m}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:ie(this.maxDistance),minZoom:this.minZoom,maxZoom:ie(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:ie(this.maxPolarAngle),minAzimuthAngle:ie(this.minAzimuthAngle),maxAzimuthAngle:ie(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,target:this._targetEnd.toArray(),position:w.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=re(s.maxDistance),this.minZoom=s.minZoom,this.maxZoom=re(s.maxZoom),this.minPolarAngle=s.minPolarAngle,this.maxPolarAngle=re(s.maxPolarAngle),this.minAzimuthAngle=re(s.minAzimuthAngle),this.maxAzimuthAngle=re(s.maxAzimuthAngle),this.smoothTime=s.smoothTime,this.draggingSmoothTime=s.draggingSmoothTime,this.dollySpeed=s.dollySpeed,this.truckSpeed=s.truckSpeed,this.dollyToCursor=s.dollyToCursor,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),F.setFromVector3(w.fromArray(s.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(F.theta,F.phi,t),this.dollyTo(F.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),n=this._boundary.clampPoint(r,K).sub(r),a=n.lengthSq();if(a===0)return e.add(t);if(a===i)return e;if(s===0)return e.add(t).add(n);{const d=1+s*a/t.dot(n);return e.add(P.copy(t).multiplyScalar(d)).add(n.multiplyScalar(1-s))}}_updateNearPlaneCorners(){if(Y(this._camera)){const e=this._camera,t=e.near,s=e.getEffectiveFOV()*se,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)||Ce(this._camera,"_collisionTest"))return e;const s=this._getTargetDirection(oe);be.lookAt(ke,s,this._camera.up);for(let i=0;i<4;i++){const r=P.copy(this._nearPlaneCorners[i]);r.applyMatrix4(be);const o=K.addVectors(this._target,r);de.set(o,s),de.far=this._spherical.radius+1;const n=de.intersectObjects(this.colliderMeshes);n.length!==0&&n[0].distance<e&&(e=n[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 b.Sphere){const s=t,i=s.center;G.makeEmpty(),e.traverseVisible(o=>{o.isMesh&&G.expandByObject(o)}),G.getCenter(i);let r=0;return e.traverseVisible(o=>{if(!o.isMesh)return;const n=o;if(!n.geometry)return;const a=n.geometry.clone();a.applyMatrix4(n.matrixWorld);const m=a.attributes.position;for(let p=0,C=m.count;p<C;p++)w.fromBufferAttribute(m,p),r=Math.max(r,i.distanceToSquared(w))}),s.radius=Math.sqrt(r),s}}var Le={exports:{}},X=typeof Reflect=="object"?Reflect:null,He=X&&typeof X.apply=="function"?X.apply:function(e,t,s){return Function.prototype.apply.call(e,t,s)},pe;X&&typeof X.ownKeys=="function"?pe=X.ownKeys:Object.getOwnPropertySymbols?pe=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:pe=function(e){return Object.getOwnPropertyNames(e)};function zt(h){console&&console.warn&&console.warn(h)}var et=Number.isNaN||function(e){return e!==e};function A(){A.init.call(this)}Le.exports=A;Le.exports.once=jt;A.EventEmitter=A;A.prototype._events=void 0;A.prototype._eventsCount=0;A.prototype._maxListeners=void 0;var Be=10;function fe(h){if(typeof h!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof h)}Object.defineProperty(A,"defaultMaxListeners",{enumerable:!0,get:function(){return Be},set:function(h){if(typeof h!="number"||h<0||et(h))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+h+".");Be=h}});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||et(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 tt(h){return h._maxListeners===void 0?A.defaultMaxListeners:h._maxListeners}A.prototype.getMaxListeners=function(){return tt(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 n=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw n.context=o,n}var a=r[e];if(a===void 0)return!1;if(typeof a=="function")He(a,this,t);else for(var d=a.length,m=nt(a,d),s=0;s<d;++s)He(m[s],this,t);return!0};function st(h,e,t,s){var i,r,o;if(fe(t),r=h._events,r===void 0?(r=h._events=Object.create(null),h._eventsCount=0):(r.newListener!==void 0&&(h.emit("newListener",e,t.listener?t.listener:t),r=h._events),o=r[e]),o===void 0)o=r[e]=t,++h._eventsCount;else if(typeof o=="function"?o=r[e]=s?[t,o]:[o,t]:s?o.unshift(t):o.push(t),i=tt(h),i>0&&o.length>i&&!o.warned){o.warned=!0;var n=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");n.name="MaxListenersExceededWarning",n.emitter=h,n.type=e,n.count=o.length,zt(n)}return h}A.prototype.addListener=function(e,t){return st(this,e,t,!1)};A.prototype.on=A.prototype.addListener;A.prototype.prependListener=function(e,t){return st(this,e,t,!0)};function kt(){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 it(h,e,t){var s={fired:!1,wrapFn:void 0,target:h,type:e,listener:t},i=kt.bind(s);return i.listener=t,s.wrapFn=i,i}A.prototype.once=function(e,t){return fe(t),this.on(e,it(this,e,t)),this};A.prototype.prependOnceListener=function(e,t){return fe(t),this.prependListener(e,it(this,e,t)),this};A.prototype.removeListener=function(e,t){var s,i,r,o,n;if(fe(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){n=s[o].listener,r=o;break}if(r<0)return this;r===0?s.shift():Ft(s,r),s.length===1&&(i[e]=s[0]),i.removeListener!==void 0&&this.emit("removeListener",e,n||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 rt(h,e,t){var s=h._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):nt(i,i.length)}A.prototype.listeners=function(e){return rt(this,e,!0)};A.prototype.rawListeners=function(e){return rt(this,e,!1)};A.listenerCount=function(h,e){return typeof h.listenerCount=="function"?h.listenerCount(e):ot.call(h,e)};A.prototype.listenerCount=ot;function ot(h){var e=this._events;if(e!==void 0){var t=e[h];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}A.prototype.eventNames=function(){return this._eventsCount>0?pe(this._events):[]};function nt(h,e){for(var t=new Array(e),s=0;s<e;++s)t[s]=h[s];return t}function Ft(h,e){for(;e+1<h.length;e++)h[e]=h[e+1];h.pop()}function Nt(h){for(var e=new Array(h.length),t=0;t<e.length;++t)e[t]=h[t].listener||h[t];return e}function jt(h,e){return new Promise(function(t,s){function i(o){h.removeListener(e,r),s(o)}function r(){typeof h.removeListener=="function"&&h.removeListener("error",i),t([].slice.call(arguments))}at(h,e,r,{once:!0}),e!=="error"&&It(h,i,{once:!0})})}function It(h,e,t){typeof h.on=="function"&&at(h,"error",e,t)}function at(h,e,t,s){if(typeof h.on=="function")s.once?h.once(e,t):h.on(e,t);else if(typeof h.addEventListener=="function")h.addEventListener(e,function i(r){s.once&&h.removeEventListener(e,i),t(r)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof h)}var _e=Le.exports;let Ht=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 J{constructor(){this.event=new _e.EventEmitter,this.controllerMap=new Map,this.activeIndex=-1,this.activeControllerSet=new Set}addController(e,t){const s=new Ht;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();const s=Array.from(this.controllerMap.entries()).map(([i,r])=>{const o=r.isEnabled(e);if(t==null||t(i,o),o)return this.activeControllerSet.add(i),i}).filter(Boolean);this.controller=s[0],this.event.emit("pageChange",this.controller)}update(e,t){this.activeControllerSet.forEach(s=>{var i;(i=s.update)==null||i.call(s,e,t)})}dispose(){this.controllerMap.forEach((e,t)=>{e.set(0)}),this.removePage(0),this.controllerMap.clear(),this.event.removeAllListeners(),this.activeControllerSet.clear()}}const lt={fov:45,near:1,far:1e3,up:new v.Vector3(0,1,0)};class Bt extends J{constructor(e){super(),this.width=0,this.height=0,this.width=e.width,this.height=e.height}get camera(){return this.controller}addPerspectiveCamera(e=lt,t){const{fov:s,far:i,near:r,up:o,aspect:n}=e,a=n!=null?n:this.width/this.height,d=new v.PerspectiveCamera(s,a,r,i);return d.up=o,this.addController(d,t)}setPageActive(e){super.setPageActive(e,(t,s)=>{s&&this.setAspect(this.width/this.height,t)})}setSize(e,t){this.width=e,this.height=t,this.setAspect(e/t)}setAspect(e,t){const s=t||this.camera;s.aspect!==e&&(s.aspect=e,s.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 v.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 v.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:n,height:a}=this,d=n/a;(this.camera.fov!==t.fov||this.camera.aspect!==d||!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=d,this.camera.updateProjectionMatrix())}}}const Vt=h=>{const e=new bt.ShaderPass(new v.ShaderMaterial({uniforms:{baseTexture:{value:null},bloomTexture:{value:h.renderTarget2.texture},bloomAlphaType:{value:0}},vertexShader:`
2
2
  varying vec2 vUv;
3
3
  void main() {
4
4
  vUv = uv;
@@ -95,4 +95,4 @@
95
95
 
96
96
  #endif
97
97
 
98
- }`};class Zt extends xt.OutputPass{constructor(){super();const e=Yt;this.uniforms=v.UniformsUtils.clone(e.uniforms),this.material=new v.RawShaderMaterial({name:e.name,uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader}),this.fsQuad?this.fsQuad=new Me.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Me.FullScreenQuad(this.material))}}const Wt=new v.MeshBasicMaterial({color:"black"}),qt=new v.PointsMaterial({color:"black",sizeAttenuation:!1}),Kt=new v.PointsMaterial({color:"black",sizeAttenuation:!0}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Ve=new v.Color(0),Qt={kernelRadius:8,minDistance:.005,maxDistance:.1},Jt={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},es={multisampling:4,premultiplieAlpha:!1};class ts{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new v.Layers,this.bloomMaterials={},this.bloomVisible={},this.bloomComposerRenderIng=!1,this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:o}=t;this.renderer=o;const{multisampling:n}=r,{maxSamples:a}=o.capabilities,d=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(d.width,d.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Ae.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const g=new Ot.RenderPass(s.scene,i.camera);p.addPass(g),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=g,i.event.on("pageChange",u=>{this.changeCamera(u)}),s.event.on("pageChange",u=>{this.changeScene(u)})}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 Zt;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 v.Vector2),o=r.width,n=r.height,a=new Et.SSAOPass(t,s,o,n);a.kernelRadius=e.kernelRadius,a.minDistance=e.minDistance,a.maxDistance=e.maxDistance,this.ssaoPass=a,this.finalComposer.addPass(a)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:o}=e,n=new Tt.UnrealBloomPass(new v.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=n;const a=new Ae.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const d=Vt(a);d.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(d),this.mixPass=d,this.bloomLayer.set(U.BLOOM_SCENE)}setBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}e.traverse(s=>{const{object3d:i}=s;i&&(t?(this.bloomSelection.add(s),i.layers.enable(U.BLOOM_SCENE)):(this.bloomSelection.delete(s),i.layers.disable(U.BLOOM_SCENE)))}),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(i=>{i.isTransformControls||i.isTransformControlsRoot||i.type==="RectAreaLightHelper"?e.push(i):t.push(i)}),t.forEach(i=>{i.traverse(r=>{var d;const o=r,n=r,a=r;if((d=o.material)!=null&&d.isShadowMaterial)e.push(o);else if(o.material&&this.bloomLayer.test(o.layers)===!1){if(o.material.transparent===!0&&(o.material.opacity!==1||o.material.alphaMap)){e.push(o);return}this.bloomMaterials[o.uuid]=o.material,n.isSprite?n.material.sizeAttenuation?n.material=Gt:n.material=$t:o.material instanceof U.MeshLineMaterial?o.material=Xt:a.isPoints?a.material.sizeAttenuation?a.material=Kt:a.material=qt:o.material=Wt}})}),e.forEach(i=>{this.bloomVisible[i.uuid]=i.visible,i.visible=!1});const s=this.scene.background;s!=null&&s.isTexture&&(this.scene.userData._backgroundOriginal=s,this.scene.background=Ve)}restoreNonBloomed(){if(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])}),this.scene.background===Ve){const e=this.scene.userData._backgroundOriginal;e&&(this.scene.background=e,delete this.scene.userData._backgroundOriginal)}}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.bloomComposerRenderIng=!0,this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed(),this.bloomComposerRenderIng=!1):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new v.Vector2)}render(){if(!this.active)return;const{cameraController:e,rendererController:t,sceneController:s}=this.options;if(this.finalComposerRender(),this.pipViewportState){e.setPageActive(31),e.setAspect(this.pipViewportState.width/this.pipViewportState.height),t.setViewport(ee(k({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender(),e.setPageActive(s.activeIndex);const i=this.getSize();t.setViewport({x:0,y:0,width:i.width,height:i.height,scissor:!0,scissorTest:!1})}}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}class ss extends J{constructor(e){super(),this.autoRotateSpeed=0,this.options=e;const t={Vector2:v.Vector2,Vector3:v.Vector3,Vector4:v.Vector4,Quaternion:v.Quaternion,Matrix4:v.Matrix4,Spherical:v.Spherical,Box3:v.Box3,Sphere:v.Sphere,Raycaster:v.Raycaster};Q.install({THREE:t})}get cameraControls(){return this.controller}addCameraControls(e,t){const{domElement:s}=this.options.controlsParams,i=new Q(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,t){super.update(e,t),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*v.MathUtils.DEG2RAD)}}const Ye=new v.Vector3,is=new v.Quaternion,Ze=new v.Vector3,H=new v.Matrix4,rs=new v.Matrix4;class os{constructor(e={}){const t=this;let s,i,r,o;const n={camera:{style:""},objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a;const d=document.createElement("div");d.style.transformOrigin="0 0",d.style.pointerEvents="none",a.appendChild(d);const m=document.createElement("div");m.style.transformStyle="preserve-3d",d.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const _=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(d.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,d.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):d.style.transform="",y.matrixWorldAutoUpdate===!0&&y.updateMatrixWorld(),l.parent===null&&l.matrixWorldAutoUpdate===!0&&l.updateMatrixWorld();let E,O;l.isOrthographicCamera&&(E=-(l.right+l.left)/2,O=(l.top+l.bottom)/2);const x=l.view&&l.view.enabled?l.view.height/l.view.fullHeight:1,T=l.isOrthographicCamera?`scale( ${x} )scale(`+_+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${x} )translateZ(`+_+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+_+"px) ":"")+T+"translate("+r+"px,"+o+"px)";n.camera.style!==D&&(m.style.transform=D,n.camera.style=D),f(y,y,l)},this.setSize=function(y,l){s=y,i=l,r=s/2,o=i/2,a.style.width=y+"px",a.style.height=l+"px",d.style.width=y+"px",d.style.height=l+"px",m.style.width=y+"px",m.style.height=l+"px"};function p(y){return Math.abs(y)<1e-10?0:y}function C(y){const l=y.elements;return"matrix3d("+p(l[0])+","+p(-l[1])+","+p(l[2])+","+p(l[3])+","+p(l[4])+","+p(-l[5])+","+p(l[6])+","+p(l[7])+","+p(l[8])+","+p(-l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(-l[13])+","+p(l[14])+","+p(l[15])+")"}function g(y){const l=y.elements;return"translate(-50%,-50%)"+("matrix3d("+p(l[0])+","+p(l[1])+","+p(l[2])+","+p(l[3])+","+p(-l[4])+","+p(-l[5])+","+p(-l[6])+","+p(-l[7])+","+p(l[8])+","+p(l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(l[13])+","+p(l[14])+","+p(l[15])+")")}function u(y){y.isCSS3DObject&&(y.element.style.display="none");for(let l=0,_=y.children.length;l<_;l++)u(y.children[l])}function f(y,l,_,E){if(y.visible===!1){u(y);return}if(y.isCSS3DObject){const O=y.layers.test(_.layers)===!0,x=y.element;if(x.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,_);let T;y.isCSS3DSprite?(H.copy(_.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(rs.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(Ye,is,Ze),H.setPosition(Ye),H.scale(Ze),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=g(H)):T=g(y.matrixWorld);const L=n.objects.get(y);if(L===void 0||L.style!==T){x.style.transform=T;const D={style:T};n.objects.set(y,D)}x.parentNode!==m&&m.appendChild(x),y.onAfterRender(t,l,_)}}for(let O=0,x=y.children.length;O<x;O++)f(y.children[O],l,_)}}}const $=new v.Vector3,We=new v.Matrix4,qe=new v.Matrix4,Ke=new v.Vector3,Ge=new v.Vector3;class ns{constructor(e={}){const t=this;let s,i,r,o;const n={objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a,this.getSize=function(){return{width:s,height:i}},this.render=function(u,f){u.matrixWorldAutoUpdate===!0&&u.updateMatrixWorld(),f.parent===null&&f.matrixWorldAutoUpdate===!0&&f.updateMatrixWorld(),We.copy(f.matrixWorldInverse),qe.multiplyMatrices(f.projectionMatrix,We),m(u,u,f),g(u)},this.setSize=function(u,f){s=u,i=f,r=s/2,o=i/2,a.style.width=u+"px",a.style.height=f+"px"};function d(u){u.isCSS2DObject&&(u.element.style.display="none");for(let f=0,y=u.children.length;f<y;f++)d(u.children[f])}function m(u,f,y){if(u.visible===!1){d(u);return}if(u.isCSS2DObject){$.setFromMatrixPosition(u.matrixWorld),$.applyMatrix4(qe);const l=$.z>=-1&&$.z<=1&&u.layers.test(y.layers)===!0,_=u.element;_.style.display=l===!0?"":"none",l===!0&&(u.onBeforeRender(t,f,y),_.style.transform="translate("+-100*u.center.x+"%,"+-100*u.center.y+"%)translate("+($.x*r+r)+"px,"+(-$.y*o+o)+"px)",_.parentNode!==a&&a.appendChild(_),u.onAfterRender(t,f,y));const E={distanceToCameraSquared:p(y,u)};n.objects.set(u,E)}for(let l=0,_=u.children.length;l<_;l++)m(u.children[l],f,y)}function p(u,f){return Ke.setFromMatrixPosition(u.matrixWorld),Ge.setFromMatrixPosition(f.matrixWorld),Ke.distanceToSquared(Ge)}function C(u){const f=[];return u.traverseVisible(function(y){y.isCSS2DObject&&f.push(y)}),f}function g(u){const f=C(u).sort(function(l,_){if(l.renderOrder!==_.renderOrder)return _.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(_).distanceToCameraSquared;return E-O}),y=f.length;for(let l=0,_=f.length;l<_;l++)f[l].element.style.zIndex=y-l}}}const $e={zIndex:"auto"};class as{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,i=s.offsetWidth,r=s.offsetHeight,o=e==="css2d"?new ns:new os;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}}class ls{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 v.AxesHelper(100);else if(e.isCamera)i=new v.CameraHelper(e);else if(e.isPointLight)i=new v.PointLightHelper(e,1);else if(e.isDirectionalLight)i=new v.DirectionalLightHelper(e,1);else if(e.isSpotLight)i=new v.SpotLightHelper(e);else if(e.isHemisphereLight)i=new v.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)i=new wt.RectAreaLightHelper(e);else{const r=new v.Box3;if(r.setFromObject(e,!0),r.isEmpty()===!1){i=new v.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 Lt.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 v.AxesHelper||this.remove({uuid:e})})}update(e,t,s){var r,o;const{cameraController:i}=this.options;Object.values(this.helpers).forEach(n=>{if(n.update&&n.update(),n instanceof v.Box3Helper){const a=n.material,{object:d}=a.userData;d&&n.box.setFromObject(d,!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()}}function Xe(h){let e=!1,t=[];return function(...s){t=s,e||(e=!0,requestAnimationFrame(()=>{e=!1,h(...t)}))}}class hs{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.activeObject=null,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 C;if(!this.enabled)return;r.preventDefault();const o=e==="move"?t:s,n=[];if(this.pickFunctionsMap.forEach(g=>{o.has(g.type)&&n.push(ee(k({},g),{objArr:g.objArr instanceof Function?g.objArr():g.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const g of n)for(const u of g.objArr){if(!u.object3d||!u.visibleWithAncestors)continue;a.has(u)||a.set(u,new Map);const f=a.get(u);f.has(g.type)||f.set(g.type,[]),f.get(g.type).push(g.cb)}if(a.size===0)return;const d=[...a.keys()].map(g=>g.object3d),m=(C=this.pencil.pick(r,d,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const g=m[0];this.processIntersection(g,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Xe(i),{passive:!1})}processIntersection(e,t,s){const i=this.objCallbackMap,r=e.index||-1;let o=e.object;for(;o;){const n=this.pencil.lead.objMap.get(o);n&&n.visible&&(this.activeObject||(this.activeObject=n),i.has(n)&&this.activeObjects.add(n)),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 n of this.activeObjects){if(r)break;const a=i.get(n);if(a)if(t==="move"){const d=a.get("enter");if(d&&!this.prevActiveObjects.has(n))for(const p of d)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("move");if(m)for(const p of m)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s})}else{const d=a.get("down");if(d)for(const p of d)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("click");if(m){const p=C=>{C.preventDefault();const g=5;if(!r&&Math.abs(C.clientX-e.clientX)<=g&&Math.abs(C.clientY-e.clientY)<=g)for(const u of m)u({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});this.domElement.removeEventListener("pointerup",p)};this.domElement.addEventListener("pointerup",p)}}}}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(n=>["move","enter","leave"].includes(n.type))&&(this.pickListener.move=!0,this.addPickListener("move")),this.pickListener.down||Array.from(this.pickFunctionsMap.values()).some(n=>["down","downOutside","click"].includes(n.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 n of r){const a=n;a.element.style.pointerEvents="auto";const d=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Xe(d),!1),o.push({arr:a,type:m,listener:d})}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 cs extends hs{constructor(e,t){super(e),this.objMap=new Map,this.objects=new Map,this.objectsPm=new Map,this.objectWrapChindIdMap=new Map,this.objectNamesToFactories=new Map,this.mList=t.mList,this.scene=this.createBaseObject(t.scene||new v.Scene,{key:"@Scene",name:"场景",mList:!1}),this.group=this.createBaseObject(new v.Group,{key:"@Group",name:"物体组",target:this.scene,mList:!1}),this.prefabGroup=this.createBaseObject(new v.Group,{key:"@PrefabGroup",name:"预制组",target:this.scene,mList:!1})}get objectsPromise(){return this.objectsPm.values()}createBaseObject(e,t={}){const s=k({mList:!0},t),i=new U.BaseObject;if(i.object3d=e,i.pencil=this.pencil,i.lead=this,i.mList=this.mList,s.key)i.key=s.key;else if(s.target){const r=s.target.key;if(r==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target)?this.objectWrapChindIdMap.get(s.target)+1:0;this.objectWrapChindIdMap.set(s.target,o),i.key=`${r}__c__${o}`}}return s.name&&(e.name=s.name),s.target&&!s.target.object3d.getObjectById(e.id)&&s.target.object3d.add(e),this.objects.set(i.key,i),this.objMap.set(i.object3d,i),s.mList&&(this.mList.proxyBaseObject(i),this.mList.addBaseObjectMap(i)),e.children&&e.children.forEach(r=>{this.createBaseObject(r,{target:i,mList:s.mList})}),i}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,n)=>{(n.startsWith(s?i:`${i}#`)||n===i)&&r.push(o)}),r}draw(e,t,s){return te(this,null,function*(){var r,o,n,a;const i=this.objectNamesToFactories.get(e);if(i){t||(t={}),t.target===void 0&&(t.target=s);const d=(r=t.objectType)!=null?r:e,m=t.target,p=(o=t.onTop)!=null?o:0,C=(n=t.prefab)!=null?n:!1,g=(a=t.create)!=null?a:!0,u=new i().create(t);let f;return m===null?f=null:typeof m=="string"?f=this.objects.get(m):m!=null&&m.isBaseObject||m?f=m:C?f=this.prefabGroup:f=this.group,g===!1?u.create=()=>{}:g!==!0&&(u.create=()=>{g(u)}),u.pencil=this.pencil,u.lead=this,u.mList=this.mList,u.isPrefab=C,u.objectType=`${d}`,u.objectOptions=t,this.setBaseObjectKey(u,t.key?`$t:#${t.key}`:"$t:",f==null?void 0:f.key),this.objectsPm.set(u,this.addBaseObject(u,f,p)),yield this.objectsPm.get(u),this.objectsPm.delete(u),u}throw new Error(`Unrecognized:${e}`)})}setBaseObjectKey(e,t,s){const i=e.objectType;let r=t.replace("$t:",i);if(s){const[,o]=s.split("#");r=r.replace("$p:",o)}return this.objects.has(r)&&(r.includes("#")?r+=`-${xe.generateUUID()}`:r+=`#${xe.generateUUID()}`),e.key=r,this.objects.set(r,e),r}updateBaseObjectKey(e,t){var o;let s;for(const[n,a]of this.objects.entries())if(a===e){s=n;break}const i=(o=e.parent)==null?void 0:o.key,r=this.setBaseObjectKey(e,t,i);return s&&this.objects.delete(s),this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach((n,a)=>{n.key.includes("__c__")&&this.updateBaseObjectKey(n,`${r}__c__${a}`)}),r}addBaseObject(e,t,s){return te(this,null,function*(){if(yield e.create(),e.object3d){const i=e.object3d;i.material&&Array.isArray(i.material)&&(i.material=i.material.slice()),this.mList.proxyBaseObject(e),this.mList.addBaseObjectMap(e),s&&e.setTop(s),t!==null&&t.object3d.add(e.object3d),this.objMap.set(e.object3d,e),i.children.forEach(r=>{this.objMap.get(r)||this.createBaseObject(r,{target:e})})}e.render(),this.pencil.event.emit("lead.draw",{baseObject: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=>{r.disposeMaterialIfNotUsed=e,r.dispose()})}),this.pencil.event.emit("lead.erase")}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.objectWrapChindIdMap.clear(),this.objectNamesToFactories.clear()}}class ds extends J{get lead(){return this.controller}constructor(e){super(),this.options=e}addLead(e,t,s){const{pencil:i}=this.options,r=new cs(i,{scene:e,mList:t});return this.addController(r,s)}removePage(e){super.removePage(e,t=>{t.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}setSize(e,t){this.controllerMap.forEach((s,i)=>{i.setSize(e,t)})}}class ps extends v.Loader{constructor(e){super(e)}load(e,t,s,i){const r=new v.FileLoader(this.manager);r.setResponseType("blob"),r.setRequestHeader(this.requestHeader),r.setPath(this.path),r.setWithCredentials(this.withCredentials),r.load(e,o=>{const n=o,a=new DecompressionStream("gzip"),d=n.stream().pipeThrough(a);new Response(d).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Qe extends v.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 v.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 v.VideoTexture(o)):r=new v.Texture;const n=new v.FileLoader(this.manager);return n.setResponseType("blob"),n.setRequestHeader(this.requestHeader),n.setPath(this.path),n.setWithCredentials(this.withCredentials),n.load(e,a=>{let d=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;d=d.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",g,!1),o.removeEventListener("error",u,!1)},g=()=>{C(),r.needsUpdate=!0,t&&t(r)},u=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",g,!1),o.addEventListener("error",u,!1);const f=window.URL.createObjectURL(d);o.src=f},s,i),r}}const ms={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 us{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new _e.EventEmitter,this.options=k({simpleTexture4deleted:!1,prefix:""},e),this.loadingManager=new v.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 v.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(ms))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 Re.GLTFLoader(this.loadingManager),this.dracoLoader=new Pt.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 Re.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new At.LottieLoader(this.loadingManager),this.options.prefix&&this.lottieLoader.setPath(this.options.prefix)),this.lottieLoader;if(e==="gzipJson")return this.gzipJsonLoader||(this.gzipJsonLoader=new ps(this.loadingManager),this.options.prefix&&this.gzipJsonLoader.setPath(this.options.prefix)),this.gzipJsonLoader;if(e==="json")return this.jsonLoader||(this.jsonLoader=new v.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 St.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=k({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 v.Texture||t instanceof v.DataTexture||t.isVideoTexture)&&e.set(s,t)}),e}loadAll(){return te(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 te(this,null,function*(){var n,a;const s=(n=t==null?void 0:t.type)!=null?n:this.getAssetType(e);if(!s)return;const i=(t==null?void 0:t.cache)!==!1,r=xe.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 d=yield o.loadAsync(e);if(this.assets.set(e,d),r.resolve(d),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;d.anisotropy=m}return d}catch(d){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(a=>{[a.map,a.emissiveMap,a.normalMap,a.roughnessMap,a.metalnessMap,a.aoMap].forEach(d=>{if(d){const m=this.getSrcByAsset(d,s);m&&t.add(m)}})})});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 fs={prefix:""};class _s extends J{get loader(){return this.controller}constructor(e){super(),this.options=e}addLoader(e,t){const{loaderParams:s}=this.options,i=new us(ee(k({},s),{scene:e}));return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}class gs{constructor(e){this.materials=new Map,this.fixBaseObjects=new Map,this.materialBaseObjectMap=new Map,this.pencil=e}add(e,t){this.materials.set(e,t);const s={object3d:new Proxy({material:t},{set:(i,r,o)=>{var n;if(r==="material"&&!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)){const a=i.material;return i.material=o,this.materials.set(e,o),this.disposeMaterial(a),this.syncChangeMaterial(a,o),!0}return i[r]=o,!0}})};this.fixBaseObjects.set(e,s),this.pencil.event.emit("mList.add",{key:e,material:t,baseObject:s})}get(e){const t=this.materials.get(e);return t||console.warn(`Material with key "${e}" not found.`),t}getByName(e){for(const[,t]of this.materials.entries())if(t.name===e)return t;console.warn(`Material with name "${e}" not found.`)}getKey(e){for(const[t,s]of this.materials.entries())if(s===e)return t}getKeyByName(e){for(const[t,s]of this.materials.entries())if(s.name===e)return t;console.warn(`Material key with name "${e}" not found.`)}addMultiple(e,t){for(const[s,i]of Object.entries(t)){const r=`${e}#${s}`;i&&this.add(r,i)}}getMultiple(e){const t={},s=`${e}#`;let i=!1;for(const[r,o]of this.materials.entries())if(r.startsWith(s)){const n=r.substring(s.length);t[n]=o,i=!0}return i?t:null}copy(e,t,s={}){const i=this.get(e);if(!i)return console.warn(`Material with key "${e}" not found.`),null;const r=i.clone();return s.name&&(r.name=s.name),this.add(t,r),r}copyMultiple(e,t){const s={},i=`${e}#`;for(const[r,o]of this.materials.entries())if(r.startsWith(i)){const n=r.substring(i.length),a=o.clone();s[n]=a;const d=`${t}#${n}`;this.add(d,a)}return s}disposeMaterial(e){if(!e)return;const t=new U.ResourceTracker;t.track(Array.isArray(e)?e:[e]),t.dispose()}remove(e){const t=this.materials.get(e);t&&this.disposeMaterial(t),this.materials.delete(e),this.fixBaseObjects.delete(e),this.pencil.event.emit("mList.remove",{key:e,material:t})}removeByMaterial(e){[...this.materials.entries()].some(([t,s])=>s===e?(this.remove(t),!0):!1)}proxyBaseObject(e){const t=e.object3d;if(!t.material)return;this.applyColorSpaceToMaterials(t.material);const s=o=>{if("__isProxy"in o)return o;const n=new Proxy(o,{set:(a,d,m)=>{if(typeof d=="string"&&!Number.isNaN(Number(d))){const p=Number(d);if(p>=0&&p<a.length){const C=a[p];return this.rmBaseObjectMap(e,C),a[p]=m,m&&(this.applyColorSpaceToMaterials(m),this.addBaseObjectMap(e)),!0}}return a[d]=m,!0}});return Object.defineProperty(n,"__isProxy",{value:!0,enumerable:!1}),n};e.materialList&&(Object.values(e.materialList).forEach(o=>{o&&this.applyColorSpaceToMaterials(o)}),e.materialList=new Proxy(e.materialList,{set:(o,n,a)=>{if(typeof n=="string"){const d=o[n];return this.rmBaseObjectMap(e,d),o[n]=a,a&&(this.applyColorSpaceToMaterials(a),this.addBaseObjectMap(e)),!0}return o[n]=a,!0},get:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];if(Array.isArray(a)){const d=s(a);return d!==a&&(o[n]=d),d}return a}return o[n]},deleteProperty:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];this.rmBaseObjectMap(e,a)}return delete o[n],!0}}));const i=t.material,r="_enhancedMaterial";t[r]=i,Object.defineProperty(t,"material",{get:()=>{var n;const o=t[r];if(!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)&&Array.isArray(o)){const a=s(o);return a!==o&&(t[r]=a),a}return o},set:o=>{var n;if((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)t[r]=o;else{if(e.materialList&&Object.values(e.materialList).includes(o)){t[r]=o;return}this.rmBaseObjectMap(e),t[r]=o,o&&this.applyColorSpaceToMaterials(o),this.addBaseObjectMap(e)}e.handleMaterialChange(o)},enumerable:!0,configurable:!0})}applyColorSpaceToMaterials(e){we.applyTextureColorSpace({material:e})}material2array(e){return Array.isArray(e)?e:[e]}addBaseObjectMap(e){const t=e.object3d;t.material&&([...Object.values(e.materialList),t.material].forEach(s=>{s&&this.material2array(s).forEach(r=>{const o=this.materialBaseObjectMap.get(r);o?o.add(e):this.materialBaseObjectMap.set(r,new Set([e]))})}),this.pencil.event.emit("mList.addBaseObjectMap"))}rmBaseObjectMap(e,t,s=!0){const i=t&&this.material2array(t);this.materialBaseObjectMap.forEach((r,o)=>{i&&!i.includes(o)||r.has(e)&&(r.delete(e),r.size===0&&s&&(this.materialBaseObjectMap.delete(o),this.disposeMaterial(o)))}),this.pencil.event.emit("mList.rmBaseObjectMap")}getBaseObjectMap(e){return this.materialBaseObjectMap.get(e)||new Set}syncChangeMaterial(e,t){const s=this.materialBaseObjectMap.get(e);s&&s.forEach(i=>{const r=i.object3d,o=r.material;if(Array.isArray(o)){const n=o.indexOf(e);n!==-1&&(o[n]=t)}else o===e&&(r.material=t);i.materialList&&Object.keys(i.materialList).forEach(n=>{var d;const a=(d=i.materialList)==null?void 0:d[n];if(Array.isArray(a)){const m=a.indexOf(e);m!==-1&&(a[m]=t)}else a===e&&i.materialList&&(i.materialList[n]=t)})})}dispose(){const e=new U.ResourceTracker;e.track([...this.materials.values()]),e.dispose(),this.materials.clear(),this.fixBaseObjects.clear(),this.materialBaseObjectMap.clear()}}class ys extends J{get mList(){return this.controller}constructor(e){super(),this.options=e}addMList(e,t){const{pencil:s}=this.options,i=new gs(s);return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}const vs={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:we.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1};class Cs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i}=e,{alpha:r,devicePixelRatio:o,antialias:n,powerPreference:a,toneMappingExposure:d,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:g,depth:u}=i,f=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:g,depth:u});f.setSize(t,s),f.setPixelRatio(o),f.toneMappingExposure=d,f.outputColorSpace=m,this.renderer=f}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 a,d;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(d=e.scissorTest)!=null?d:!1;this.renderer.setViewport(t,s,i,r),o&&(this.renderer.setScissor(t,s,i,r),this.renderer.setScissorTest(n))}dispose(){var e,t,s;this.setSize(0,0),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.forceContextLoss()}}const Os={background:null};class Es extends J{get scene(){return this.controller}constructor(e){super(),this.options=e}addScene(e,t){const s=new v.Scene;return e!=null&&e.background&&(s.background=e.background),this.addController(s,t)}removePage(e){super.removePage(e,t=>{const s=new U.ResourceTracker;s.track(t),s.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.visible=s})}}class Ts{constructor(e){this.event=new _e.EventEmitter;const{renderer:t,scene:s,camera:i}=e,r=new Mt.TransformControls(i,t.domElement);if(r.getHelper){const o=r.getHelper();if(s.add(o),+v.REVISION<170){const n=r._root;n.dispose=()=>{n.traverse(a=>{a.geometry&&a.geometry.dispose(),a.material&&a.material.dispose()})},r.dispose=()=>{r.disconnect(),n.dispose()}}}else r instanceof v.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 bs={antialias:!0,devicePixelRatio:window.devicePixelRatio};class xs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i,renderer:r}=e,{devicePixelRatio:o,antialias:n}=i,a=new r({antialias:n});a.setSize(t,s),a.setPixelRatio(o),this.renderer=a}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()}}const ue=class ue{constructor(e){var r,o;this.raycaster=new v.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new v.Vector3,this._cameraTarget=new v.Vector3,this.event=new _e.EventEmitter,this.timer=new v.Timer,this.userData={},this.pageActiveIndex=0,this.pageCountIndex=0,this.userSetDprCache=1,this.viewPadding=[0,0,0,0],this._isDispose=!1,this.event.setMaxListeners(1/0),(o=(r=this.timer).connect)==null||o.call(r,document),this.options=vt(ue.options,e,{isMergeableObject:we.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 n=new Ct({horizontal:!1});n.dom.style.position="absolute",n.init(this.renderer),t.appendChild(n.dom),this.stats=n}this.initResizeObserver(),this.tweenUpdateRaf()}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?2: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}get mList(){return this.mListController.mList}tweenUpdateRaf(){ye.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);r.add(i),this.controlsController.addCameraControls(i,s),this.loaderController.addLoader(r,s);const o=this.mListController.addMList(null,s);return this.leadController.addLead(r,o,s),this.pageCountIndex=s,s}removePage(e){this.cameraController.removePage(e),this.sceneController.removePage(e),this.controlsController.removePage(e),this.loaderController.removePage(e),this.mListController.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.mListController.setPageActive(e),this.leadController.setPageActive(e),this.pageActiveIndex=e}init(){var _;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:d}=this.getSize(),m=t?new xs({width:a,height:d,renderer:this.options.WebGPURenderer,rendererParams:bs}):new Cs({width:a,height:d,rendererParams:ee(k({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:d}),C=new Es({}),g=new ss({controlsParams:{domElement:(_=o==null?void 0:o.domElement)!=null?_:m.renderer.domElement}}),u=new _s({loaderParams:k({anisotropy:this.maxAnisotropy},n)}),f=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=g,this.loaderController=u,this.mListController=f,this.leadController=y;const l=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.showPage(l),s){const E=new ls({container:e,sceneController:C,cameraController:p});E.add(C.scene),this.helperController=E,i&&E.addViewHelper()}e.appendChild(m.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,o=new ts({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=o,e&&o.addBloomPass(k({},t)),s&&o.addSSAOPass(k({},i)),o.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const o=new as(e);t&&o.addRenderer("css2d",i),s&&o.addRenderer("css3d",r),this.cssRendererController=o}}initTransformControls(){const e=new Ts({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:n,leadController:a}=this,d=this.renderer.getSize(new v.Vector2);d.x===e&&d.y===t||(r.setSize(e,t),i.setSize(e,t),o==null||o.setSize(e,t),n==null||n.setSize(e,t),a.setSize(e,t),this.installPlugins.forEach(m=>{var p;(p=m.setSize)==null||p.call(m,e,t)}),this.viewPadding.some(m=>m!==0)&&this.setViewPadding(...this.viewPadding),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var n;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),(n=this.composerController)==null||n.setPixelRatio(r),this.viewPadding.some(a=>a!==0)&&this.setViewPadding(...this.viewPadding))}setViewPadding(e=0,t=0,s=0,i=0){const{width:r,height:o}=this.renderer.getSize(new v.Vector2),n={x:i,y:s,width:r-i-t,height:o-e-s};this.rendererController.setViewport(n),this.cameraController.setAspect(n.width/n.height),this.viewPadding=[e,t,s,i]}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:o}=r,n=new v.Vector2,a=o.getBoundingClientRect();if(n.x=(e.clientX-a.left)/(a.right-a.left)*2-1,n.y=-((e.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){i.setFromCamera(n,this.camera);const d=i.intersectObjects(t||this.scene.children,s);if(d.length)return{object:d[0].object,index:d[0].index,intersects:d}}}render(){var s,i,r,o,n,a;if(!this.camera||!this.scene)return;this.event.emit("beforeRender"),this.timer.update(),ye.update();const e=this.timer.getDelta(),t=this.timer.getElapsed();this.controlsController.update(e,t),this.leadController.update(e,t),this.installPlugins.forEach(d=>{var m;(m=d.update)==null||m.call(d,e,t)}),(s=this.helperController)==null||s.update(e,this.controlsController,this.cameraTarget),(i=this.composerController)!=null&&i.active?this.composerController.render():(r=this.rendererController)==null||r.render(this.scene,this.camera),(o=this.helperController)==null||o.renderViewHelper(this.renderer),(n=this.cssRendererController)==null||n.render(this.scene,this.camera),(a=this.stats)==null||a.update(),this.event.emit("render",{delta:e,elapsed:t})}start(){var e;window.cancelAnimationFrame(this.TweenRaf),(e=this.renderer)==null||e.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){var e;this.tweenUpdateRaf(),(e=this.renderer)==null||e.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}}dispose(){var e,t,s,i,r,o,n,a,d,m,p,C,g,u;this.handeleResize(1,1,!1),this.stop(),this.timer.dispose(),ye.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(f=>{var y;(y=f.dispose)==null||y.call(f)}),(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(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(d=this.rendererController)==null||d.dispose(),(m=this.loaderController)==null||m.dispose(),(p=this.leadController)==null||p.dispose(),(C=this.mListController)==null||C.dispose(),this.cssRendererController=void 0,this.installPlugins.clear(),(g=this.stats)==null||g.dom.remove(),(u=this.renderer)==null||u.domElement.remove(),this._isDispose=!0}};ue.options={stats:U.IS_DEV,helper:U.IS_DEV,viewHelper:U.IS_DEV,controls:!0,transformControls:U.IS_DEV,renderer:vs,composer:es,scene:Os,camera:lt,bloom:!1,bloomParams:Jt,ssao:!1,loader:fs,ssaoParams:Qt,css2DRenderer:!1,css2DRendererParams:k({},$e),css3DRenderer:!1,css3DRendererParams:k({},$e)};let me=ue;const ws=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=ws;exports.default=me;
98
+ }`};class Zt extends xt.OutputPass{constructor(){super();const e=Yt;this.uniforms=v.UniformsUtils.clone(e.uniforms),this.material=new v.RawShaderMaterial({name:e.name,uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader}),this.fsQuad?this.fsQuad=new Me.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Me.FullScreenQuad(this.material))}}const Wt=new v.MeshBasicMaterial({color:"black"}),qt=new v.PointsMaterial({color:"black",sizeAttenuation:!1}),Kt=new v.PointsMaterial({color:"black",sizeAttenuation:!0}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Ve=new v.Color(0),Qt={kernelRadius:8,minDistance:.005,maxDistance:.1},Jt={threshold:0,strength:.4,radius:.1,bloomAlphaType:0},es={multisampling:4,premultiplieAlpha:!1};class ts{constructor(e){this.bloomComposerActive=!1,this.active=!0,this.bloomSelection=new Set,this.bloomLayer=new v.Layers,this.bloomMaterials={},this.bloomVisible={},this.bloomComposerRenderIng=!1,this.pipViewportState=null,this.options=e;const{rendererController:t,sceneController:s,cameraController:i,composerParams:r}=e,{renderer:o}=t;this.renderer=o;const{multisampling:n}=r,{maxSamples:a}=o.capabilities,d=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(d.width,d.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Ae.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const u=new Ot.RenderPass(s.scene,i.camera);p.addPass(u),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=u,i.event.on("pageChange",f=>{this.changeCamera(f)}),s.event.on("pageChange",f=>{this.changeScene(f)})}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 Zt;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 v.Vector2),o=r.width,n=r.height,a=new Et.SSAOPass(t,s,o,n);a.kernelRadius=e.kernelRadius,a.minDistance=e.minDistance,a.maxDistance=e.maxDistance,this.ssaoPass=a,this.finalComposer.addPass(a)}addBloomPass(e){const{renderer:t}=this,{threshold:s,strength:i,radius:r,bloomAlphaType:o}=e,n=new Tt.UnrealBloomPass(new v.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=n;const a=new Ae.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const d=Vt(a);d.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(d),this.mixPass=d,this.bloomLayer.set(U.BLOOM_SCENE)}setBloomSelection(e,t){if(!this.bloomComposer){console.warn("err:pencil.options.bloom");return}e.traverse(s=>{const{object3d:i}=s;i&&(t?(this.bloomSelection.add(s),i.layers.enable(U.BLOOM_SCENE)):(this.bloomSelection.delete(s),i.layers.disable(U.BLOOM_SCENE)))}),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(i=>{i.isTransformControls||i.isTransformControlsRoot||i.type==="RectAreaLightHelper"?e.push(i):t.push(i)}),t.forEach(i=>{i.traverse(r=>{var d;const o=r,n=r,a=r;if((d=o.material)!=null&&d.isShadowMaterial)e.push(o);else if(o.material&&this.bloomLayer.test(o.layers)===!1){if(o.material.transparent===!0&&(o.material.opacity!==1||o.material.alphaMap)){e.push(o);return}this.bloomMaterials[o.uuid]=o.material,n.isSprite?n.material.sizeAttenuation?n.material=Gt:n.material=$t:o.material instanceof U.MeshLineMaterial?o.material=Xt:a.isPoints?a.material.sizeAttenuation?a.material=Kt:a.material=qt:o.material=Wt}})}),e.forEach(i=>{this.bloomVisible[i.uuid]=i.visible,i.visible=!1});const s=this.scene.background;s!=null&&s.isTexture&&(this.scene.userData._backgroundOriginal=s,this.scene.background=Ve)}restoreNonBloomed(){if(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])}),this.scene.background===Ve){const e=this.scene.userData._backgroundOriginal;e&&(this.scene.background=e,delete this.scene.userData._backgroundOriginal)}}finalComposerRender(){this.bloomComposerActive&&this.bloomComposer?(this.bloomComposerRenderIng=!0,this.mixPass.enabled=!0,this.darkenNonBloomed(),this.bloomComposer.render(),this.restoreNonBloomed(),this.bloomComposerRenderIng=!1):this.mixPass&&(this.mixPass.enabled=!1),this.finalComposer.render()}getSize(){return this.renderer.getSize(new v.Vector2)}render(){if(!this.active)return;const{cameraController:e,rendererController:t,sceneController:s}=this.options;if(this.finalComposerRender(),this.pipViewportState){e.setPageActive(31),e.setAspect(this.pipViewportState.width/this.pipViewportState.height),t.setViewport(ee(k({},this.pipViewportState),{scissor:!0,scissorTest:!0})),this.finalComposerRender(),e.setPageActive(s.activeIndex);const i=this.getSize();t.setViewport({x:0,y:0,width:i.width,height:i.height,scissor:!0,scissorTest:!1})}}dispose(){var e;this.bloomMaterials={},this.bloomVisible={},this.bloomSelection.clear(),this.finalComposer.dispose(),(e=this.bloomComposer)==null||e.dispose()}}class ss extends J{constructor(e){super(),this.autoRotateSpeed=0,this.options=e;const t={Vector2:v.Vector2,Vector3:v.Vector3,Vector4:v.Vector4,Quaternion:v.Quaternion,Matrix4:v.Matrix4,Spherical:v.Spherical,Box3:v.Box3,Sphere:v.Sphere,Raycaster:v.Raycaster};Q.install({THREE:t})}get cameraControls(){return this.controller}addCameraControls(e,t){const{domElement:s}=this.options.controlsParams,i=new Q(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,t){super.update(e,t),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*v.MathUtils.DEG2RAD)}}const Ye=new v.Vector3,is=new v.Quaternion,Ze=new v.Vector3,H=new v.Matrix4,rs=new v.Matrix4;class os{constructor(e={}){const t=this;let s,i,r,o;const n={camera:{style:""},objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a;const d=document.createElement("div");d.style.transformOrigin="0 0",d.style.pointerEvents="none",a.appendChild(d);const m=document.createElement("div");m.style.transformStyle="preserve-3d",d.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const _=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(d.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,d.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):d.style.transform="",y.matrixWorldAutoUpdate===!0&&y.updateMatrixWorld(),l.parent===null&&l.matrixWorldAutoUpdate===!0&&l.updateMatrixWorld();let E,O;l.isOrthographicCamera&&(E=-(l.right+l.left)/2,O=(l.top+l.bottom)/2);const x=l.view&&l.view.enabled?l.view.height/l.view.fullHeight:1,T=l.isOrthographicCamera?`scale( ${x} )scale(`+_+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${x} )translateZ(`+_+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+_+"px) ":"")+T+"translate("+r+"px,"+o+"px)";n.camera.style!==D&&(m.style.transform=D,n.camera.style=D),g(y,y,l)},this.setSize=function(y,l){s=y,i=l,r=s/2,o=i/2,a.style.width=y+"px",a.style.height=l+"px",d.style.width=y+"px",d.style.height=l+"px",m.style.width=y+"px",m.style.height=l+"px"};function p(y){return Math.abs(y)<1e-10?0:y}function C(y){const l=y.elements;return"matrix3d("+p(l[0])+","+p(-l[1])+","+p(l[2])+","+p(l[3])+","+p(l[4])+","+p(-l[5])+","+p(l[6])+","+p(l[7])+","+p(l[8])+","+p(-l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(-l[13])+","+p(l[14])+","+p(l[15])+")"}function u(y){const l=y.elements;return"translate(-50%,-50%)"+("matrix3d("+p(l[0])+","+p(l[1])+","+p(l[2])+","+p(l[3])+","+p(-l[4])+","+p(-l[5])+","+p(-l[6])+","+p(-l[7])+","+p(l[8])+","+p(l[9])+","+p(l[10])+","+p(l[11])+","+p(l[12])+","+p(l[13])+","+p(l[14])+","+p(l[15])+")")}function f(y){y.isCSS3DObject&&(y.element.style.display="none");for(let l=0,_=y.children.length;l<_;l++)f(y.children[l])}function g(y,l,_,E){if(y.visible===!1){f(y);return}if(y.isCSS3DObject){const O=y.layers.test(_.layers)===!0,x=y.element;if(x.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,_);let T;y.isCSS3DSprite?(H.copy(_.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(rs.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(Ye,is,Ze),H.setPosition(Ye),H.scale(Ze),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=u(H)):T=u(y.matrixWorld);const L=n.objects.get(y);if(L===void 0||L.style!==T){x.style.transform=T;const D={style:T};n.objects.set(y,D)}x.parentNode!==m&&m.appendChild(x),y.onAfterRender(t,l,_)}}for(let O=0,x=y.children.length;O<x;O++)g(y.children[O],l,_)}}}const $=new v.Vector3,We=new v.Matrix4,qe=new v.Matrix4,Ke=new v.Vector3,Ge=new v.Vector3;class ns{constructor(e={}){const t=this;let s,i,r,o;const n={objects:new WeakMap},a=e.element!==void 0?e.element:document.createElement("div");a.style.overflow="hidden",this.domElement=a,this.getSize=function(){return{width:s,height:i}},this.render=function(f,g){f.matrixWorldAutoUpdate===!0&&f.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),We.copy(g.matrixWorldInverse),qe.multiplyMatrices(g.projectionMatrix,We),m(f,f,g),u(f)},this.setSize=function(f,g){s=f,i=g,r=s/2,o=i/2,a.style.width=f+"px",a.style.height=g+"px"};function d(f){f.isCSS2DObject&&(f.element.style.display="none");for(let g=0,y=f.children.length;g<y;g++)d(f.children[g])}function m(f,g,y){if(f.visible===!1){d(f);return}if(f.isCSS2DObject){$.setFromMatrixPosition(f.matrixWorld),$.applyMatrix4(qe);const l=$.z>=-1&&$.z<=1&&f.layers.test(y.layers)===!0,_=f.element;_.style.display=l===!0?"":"none",l===!0&&(f.onBeforeRender(t,g,y),_.style.transform="translate("+-100*f.center.x+"%,"+-100*f.center.y+"%)translate("+($.x*r+r)+"px,"+(-$.y*o+o)+"px)",_.parentNode!==a&&a.appendChild(_),f.onAfterRender(t,g,y));const E={distanceToCameraSquared:p(y,f)};n.objects.set(f,E)}for(let l=0,_=f.children.length;l<_;l++)m(f.children[l],g,y)}function p(f,g){return Ke.setFromMatrixPosition(f.matrixWorld),Ge.setFromMatrixPosition(g.matrixWorld),Ke.distanceToSquared(Ge)}function C(f){const g=[];return f.traverseVisible(function(y){y.isCSS2DObject&&g.push(y)}),g}function u(f){const g=C(f).sort(function(l,_){if(l.renderOrder!==_.renderOrder)return _.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(_).distanceToCameraSquared;return E-O}),y=g.length;for(let l=0,_=g.length;l<_;l++)g[l].element.style.zIndex=y-l}}}const $e={zIndex:"auto"};class as{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,i=s.offsetWidth,r=s.offsetHeight,o=e==="css2d"?new ns:new os;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}}class ls{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 v.AxesHelper(100);else if(e.isCamera)i=new v.CameraHelper(e);else if(e.isPointLight)i=new v.PointLightHelper(e,1);else if(e.isDirectionalLight)i=new v.DirectionalLightHelper(e,1);else if(e.isSpotLight)i=new v.SpotLightHelper(e);else if(e.isHemisphereLight)i=new v.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)i=new wt.RectAreaLightHelper(e);else{const r=new v.Box3;if(r.setFromObject(e,!0),r.isEmpty()===!1){i=new v.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 Lt.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 v.AxesHelper||this.remove({uuid:e})})}update(e,t,s){var r,o;const{cameraController:i}=this.options;Object.values(this.helpers).forEach(n=>{if(n.update&&n.update(),n instanceof v.Box3Helper){const a=n.material,{object:d}=a.userData;d&&n.box.setFromObject(d,!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()}}function Xe(h){let e=!1,t=[];return function(...s){t=s,e||(e=!0,requestAnimationFrame(()=>{e=!1,h(...t)}))}}class hs{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.activeObject=null,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 C;if(!this.enabled)return;r.preventDefault();const o=e==="move"?t:s,n=[];if(this.pickFunctionsMap.forEach(u=>{o.has(u.type)&&n.push(ee(k({},u),{objArr:u.objArr instanceof Function?u.objArr():u.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const u of n)for(const f of u.objArr){if(!f.object3d||!f.visibleWithAncestors)continue;a.has(f)||a.set(f,new Map);const g=a.get(f);g.has(u.type)||g.set(u.type,[]),g.get(u.type).push(u.cb)}if(a.size===0)return;const d=[...a.keys()].map(u=>u.object3d),m=(C=this.pencil.pick(r,d,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const u=m[0];this.processIntersection(u,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Xe(i),{passive:!1})}processIntersection(e,t,s){const i=this.objCallbackMap,r=e.index||-1;let o=e.object;for(;o;){const n=this.pencil.lead.objMap.get(o);n&&n.visible&&(this.activeObject||(this.activeObject=n),i.has(n)&&this.activeObjects.add(n)),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 n of this.activeObjects){if(r)break;const a=i.get(n);if(a)if(t==="move"){const d=a.get("enter");if(d&&!this.prevActiveObjects.has(n))for(const p of d)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("move");if(m)for(const p of m)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s})}else{const d=a.get("down");if(d)for(const p of d)p({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});const m=a.get("click");if(m){const p=C=>{C.preventDefault();const u=5;if(!r&&Math.abs(C.clientX-e.clientX)<=u&&Math.abs(C.clientY-e.clientY)<=u)for(const f of m)f({baseObject:n,realBaseObject:this.activeObject,mouseEvent:e,sp:o,intersectionIndex:s});this.domElement.removeEventListener("pointerup",p)};this.domElement.addEventListener("pointerup",p)}}}}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(n=>["move","enter","leave"].includes(n.type))&&(this.pickListener.move=!0,this.addPickListener("move")),this.pickListener.down||Array.from(this.pickFunctionsMap.values()).some(n=>["down","downOutside","click"].includes(n.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 n of r){const a=n;a.element.style.pointerEvents="auto";const d=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Xe(d),!1),o.push({arr:a,type:m,listener:d})}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 cs extends hs{constructor(e,t){super(e),this.objMap=new Map,this.objects=new Map,this.objectsPm=new Map,this.objectWrapChindIdMap=new Map,this.objectNamesToFactories=new Map,this.mList=t.mList,this.scene=this.createBaseObject(t.scene||new v.Scene,{key:"@Scene",name:"场景",mList:!1}),this.group=this.createBaseObject(new v.Group,{key:"@Group",name:"物体组",target:this.scene,mList:!1}),this.prefabGroup=this.createBaseObject(new v.Group,{key:"@PrefabGroup",name:"预制组",target:this.scene,mList:!1})}get objectsPromise(){return this.objectsPm.values()}createBaseObject(e,t={}){const s=k({mList:!0},t),i=new U.BaseObject;if(i.object3d=e,i.pencil=this.pencil,i.lead=this,i.mList=this.mList,s.key)i.key=s.key;else if(s.target){const r=s.target.key;if(r==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target)?this.objectWrapChindIdMap.get(s.target)+1:0;this.objectWrapChindIdMap.set(s.target,o),i.key=`${r}__c__${o}`}}return s.name&&(e.name=s.name),s.target&&!s.target.object3d.getObjectById(e.id)&&s.target.object3d.add(e),this.objects.set(i.key,i),this.objMap.set(i.object3d,i),s.mList&&(this.mList.proxyBaseObject(i),this.mList.addBaseObjectMap(i)),e.children&&e.children.forEach(r=>{this.createBaseObject(r,{target:i,mList:s.mList})}),i}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,n)=>{(n.startsWith(s?i:`${i}#`)||n===i)&&r.push(o)}),r}draw(e,t,s){return te(this,null,function*(){var r,o,n;const i=this.objectNamesToFactories.get(e);if(i){t||(t={}),t.target===void 0&&(t.target=s);const a=t.target,d=(r=t.onTop)!=null?r:0,m=(o=t.prefab)!=null?o:!1,p=(n=t.create)!=null?n:!0,C=new i().create(t);let u;return a===null?u=null:typeof a=="string"?u=this.objects.get(a):a!=null&&a.isBaseObject||a?u=a:m?u=this.prefabGroup:u=this.group,p===!1?C.create=()=>{}:p!==!0&&(C.create=()=>{p(C)}),C.pencil=this.pencil,C.lead=this,C.mList=this.mList,C.isPrefab=m,C.objectType==="BaseObject"&&(C.objectType=`${e}`),C.objectOptions=t,this.setBaseObjectKey(C,t.key?`$t:#${t.key}`:"$t:",u==null?void 0:u.key),this.objectsPm.set(C,this.addBaseObject(C,u,d)),yield this.objectsPm.get(C),this.objectsPm.delete(C),C}throw new Error(`Unrecognized:${e}`)})}setBaseObjectKey(e,t,s){const i=e.objectType;let r=t.replace("$t:",i);if(s){const[,o]=s.split("#");r=r.replace("$p:",o)}return this.objects.has(r)&&(r.includes("#")?r+=`-${xe.generateUUID()}`:r+=`#${xe.generateUUID()}`),e.key=r,this.objects.set(r,e),r}updateBaseObjectKey(e,t){var o;let s;for(const[n,a]of this.objects.entries())if(a===e){s=n;break}const i=(o=e.parent)==null?void 0:o.key,r=this.setBaseObjectKey(e,t,i);return s&&this.objects.delete(s),this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach((n,a)=>{n.key.includes("__c__")&&this.updateBaseObjectKey(n,`${r}__c__${a}`)}),r}addBaseObject(e,t,s){return te(this,null,function*(){if(yield e.create(),e.object3d){const i=e.object3d;i.material&&Array.isArray(i.material)&&(i.material=i.material.slice()),this.mList.proxyBaseObject(e),this.mList.addBaseObjectMap(e),s&&e.setTop(s),t!==null&&t.object3d.add(e.object3d),this.objMap.set(e.object3d,e),i.children.forEach(r=>{this.objMap.get(r)||this.createBaseObject(r,{target:e})})}e.render(),this.pencil.event.emit("lead.draw",{baseObject: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=>{r.disposeMaterialIfNotUsed=e,r.dispose()})}),this.pencil.event.emit("lead.erase")}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.objectWrapChindIdMap.clear(),this.objectNamesToFactories.clear()}}class ds extends J{get lead(){return this.controller}constructor(e){super(),this.options=e}addLead(e,t,s){const{pencil:i}=this.options,r=new cs(i,{scene:e,mList:t});return this.addController(r,s)}removePage(e){super.removePage(e,t=>{t.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.enabled=s})}setSize(e,t){this.controllerMap.forEach((s,i)=>{i.setSize(e,t)})}}class ps extends v.Loader{constructor(e){super(e)}load(e,t,s,i){const r=new v.FileLoader(this.manager);r.setResponseType("blob"),r.setRequestHeader(this.requestHeader),r.setPath(this.path),r.setWithCredentials(this.withCredentials),r.load(e,o=>{const n=o,a=new DecompressionStream("gzip"),d=n.stream().pipeThrough(a);new Response(d).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Qe extends v.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 v.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 v.VideoTexture(o)):r=new v.Texture;const n=new v.FileLoader(this.manager);return n.setResponseType("blob"),n.setRequestHeader(this.requestHeader),n.setPath(this.path),n.setWithCredentials(this.withCredentials),n.load(e,a=>{let d=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;d=d.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",u,!1),o.removeEventListener("error",f,!1)},u=()=>{C(),r.needsUpdate=!0,t&&t(r)},f=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",u,!1),o.addEventListener("error",f,!1);const g=window.URL.createObjectURL(d);o.src=g},s,i),r}}const ms={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 us{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new _e.EventEmitter,this.options=k({simpleTexture4deleted:!1,prefix:""},e),this.loadingManager=new v.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 v.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(ms))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 Re.GLTFLoader(this.loadingManager),this.dracoLoader=new Pt.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 Re.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new At.LottieLoader(this.loadingManager),this.options.prefix&&this.lottieLoader.setPath(this.options.prefix)),this.lottieLoader;if(e==="gzipJson")return this.gzipJsonLoader||(this.gzipJsonLoader=new ps(this.loadingManager),this.options.prefix&&this.gzipJsonLoader.setPath(this.options.prefix)),this.gzipJsonLoader;if(e==="json")return this.jsonLoader||(this.jsonLoader=new v.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 St.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=k({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 v.Texture||t instanceof v.DataTexture||t.isVideoTexture)&&e.set(s,t)}),e}loadAll(){return te(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 te(this,null,function*(){var n,a;const s=(n=t==null?void 0:t.type)!=null?n:this.getAssetType(e);if(!s)return;const i=(t==null?void 0:t.cache)!==!1,r=xe.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 d=yield o.loadAsync(e);if(this.assets.set(e,d),r.resolve(d),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;d.anisotropy=m}return d}catch(d){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(a=>{[a.map,a.emissiveMap,a.normalMap,a.roughnessMap,a.metalnessMap,a.aoMap].forEach(d=>{if(d){const m=this.getSrcByAsset(d,s);m&&t.add(m)}})})});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 fs={prefix:""};class _s extends J{get loader(){return this.controller}constructor(e){super(),this.options=e}addLoader(e,t){const{loaderParams:s}=this.options,i=new us(ee(k({},s),{scene:e}));return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}class gs{constructor(e){this.materials=new Map,this.fixBaseObjects=new Map,this.materialBaseObjectMap=new Map,this.pencil=e}add(e,t){this.materials.set(e,t);const s={object3d:new Proxy({material:t},{set:(i,r,o)=>{var n;if(r==="material"&&!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)){const a=i.material;return i.material=o,this.materials.set(e,o),this.disposeMaterial(a),this.syncChangeMaterial(a,o),!0}return i[r]=o,!0}})};this.fixBaseObjects.set(e,s),this.pencil.event.emit("mList.add",{key:e,material:t,baseObject:s})}get(e){const t=this.materials.get(e);return t||console.warn(`Material with key "${e}" not found.`),t}getByName(e){for(const[,t]of this.materials.entries())if(t.name===e)return t;console.warn(`Material with name "${e}" not found.`)}getKey(e){for(const[t,s]of this.materials.entries())if(s===e)return t}getKeyByName(e){for(const[t,s]of this.materials.entries())if(s.name===e)return t;console.warn(`Material key with name "${e}" not found.`)}addMultiple(e,t){for(const[s,i]of Object.entries(t)){const r=`${e}#${s}`;i&&this.add(r,i)}}getMultiple(e){const t={},s=`${e}#`;let i=!1;for(const[r,o]of this.materials.entries())if(r.startsWith(s)){const n=r.substring(s.length);t[n]=o,i=!0}return i?t:null}copy(e,t,s={}){const i=this.get(e);if(!i)return console.warn(`Material with key "${e}" not found.`),null;const r=i.clone();return s.name&&(r.name=s.name),this.add(t,r),r}copyMultiple(e,t){const s={},i=`${e}#`;for(const[r,o]of this.materials.entries())if(r.startsWith(i)){const n=r.substring(i.length),a=o.clone();s[n]=a;const d=`${t}#${n}`;this.add(d,a)}return s}disposeMaterial(e){if(!e)return;const t=new U.ResourceTracker;t.track(Array.isArray(e)?e:[e]),t.dispose()}remove(e){const t=this.materials.get(e);t&&this.disposeMaterial(t),this.materials.delete(e),this.fixBaseObjects.delete(e),this.pencil.event.emit("mList.remove",{key:e,material:t})}removeByMaterial(e){[...this.materials.entries()].some(([t,s])=>s===e?(this.remove(t),!0):!1)}proxyBaseObject(e){const t=e.object3d;if(!t.material)return;this.applyColorSpaceToMaterials(t.material);const s=o=>{if("__isProxy"in o)return o;const n=new Proxy(o,{set:(a,d,m)=>{if(typeof d=="string"&&!Number.isNaN(Number(d))){const p=Number(d);if(p>=0&&p<a.length){const C=a[p];return this.rmBaseObjectMap(e,C),a[p]=m,m&&(this.applyColorSpaceToMaterials(m),this.addBaseObjectMap(e)),!0}}return a[d]=m,!0}});return Object.defineProperty(n,"__isProxy",{value:!0,enumerable:!1}),n};e.materialList&&(Object.values(e.materialList).forEach(o=>{o&&this.applyColorSpaceToMaterials(o)}),e.materialList=new Proxy(e.materialList,{set:(o,n,a)=>{if(typeof n=="string"){const d=o[n];return this.rmBaseObjectMap(e,d),o[n]=a,a&&(this.applyColorSpaceToMaterials(a),this.addBaseObjectMap(e)),!0}return o[n]=a,!0},get:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];if(Array.isArray(a)){const d=s(a);return d!==a&&(o[n]=d),d}return a}return o[n]},deleteProperty:(o,n)=>{if(typeof n=="string"&&o[n]){const a=o[n];this.rmBaseObjectMap(e,a)}return delete o[n],!0}}));const i=t.material,r="_enhancedMaterial";t[r]=i,Object.defineProperty(t,"material",{get:()=>{var n;const o=t[r];if(!((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)&&Array.isArray(o)){const a=s(o);return a!==o&&(t[r]=a),a}return o},set:o=>{var n;if((n=this.pencil.composerController)!=null&&n.bloomComposerRenderIng)t[r]=o;else{if(e.materialList&&Object.values(e.materialList).includes(o)){t[r]=o;return}this.rmBaseObjectMap(e),t[r]=o,o&&this.applyColorSpaceToMaterials(o),this.addBaseObjectMap(e)}e.handleMaterialChange(o)},enumerable:!0,configurable:!0})}applyColorSpaceToMaterials(e){we.applyTextureColorSpace({material:e})}material2array(e){return Array.isArray(e)?e:[e]}addBaseObjectMap(e){const t=e.object3d;t.material&&([...Object.values(e.materialList),t.material].forEach(s=>{s&&this.material2array(s).forEach(r=>{const o=this.materialBaseObjectMap.get(r);o?o.add(e):this.materialBaseObjectMap.set(r,new Set([e]))})}),this.pencil.event.emit("mList.addBaseObjectMap"))}rmBaseObjectMap(e,t,s=!0){const i=t&&this.material2array(t);this.materialBaseObjectMap.forEach((r,o)=>{i&&!i.includes(o)||r.has(e)&&(r.delete(e),r.size===0&&s&&(this.materialBaseObjectMap.delete(o),this.disposeMaterial(o)))}),this.pencil.event.emit("mList.rmBaseObjectMap")}getBaseObjectMap(e){return this.materialBaseObjectMap.get(e)||new Set}syncChangeMaterial(e,t){const s=this.materialBaseObjectMap.get(e);s&&s.forEach(i=>{const r=i.object3d,o=r.material;if(Array.isArray(o)){const n=o.indexOf(e);n!==-1&&(o[n]=t)}else o===e&&(r.material=t);i.materialList&&Object.keys(i.materialList).forEach(n=>{var d;const a=(d=i.materialList)==null?void 0:d[n];if(Array.isArray(a)){const m=a.indexOf(e);m!==-1&&(a[m]=t)}else a===e&&i.materialList&&(i.materialList[n]=t)})})}dispose(){const e=new U.ResourceTracker;e.track([...this.materials.values()]),e.dispose(),this.materials.clear(),this.fixBaseObjects.clear(),this.materialBaseObjectMap.clear()}}class ys extends J{get mList(){return this.controller}constructor(e){super(),this.options=e}addMList(e,t){const{pencil:s}=this.options,i=new gs(s);return this.addController(i,t)}removePage(e){super.removePage(e,t=>{t.dispose()})}}const vs={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputColorSpace:we.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1};class Cs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i}=e,{alpha:r,devicePixelRatio:o,antialias:n,powerPreference:a,toneMappingExposure:d,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:u,depth:f}=i,g=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:u,depth:f});g.setSize(t,s),g.setPixelRatio(o),g.toneMappingExposure=d,g.outputColorSpace=m,this.renderer=g}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 a,d;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(d=e.scissorTest)!=null?d:!1;this.renderer.setViewport(t,s,i,r),o&&(this.renderer.setScissor(t,s,i,r),this.renderer.setScissorTest(n))}dispose(){var e,t,s;this.setSize(0,0),(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.forceContextLoss()}}const Os={background:null};class Es extends J{get scene(){return this.controller}constructor(e){super(),this.options=e}addScene(e,t){const s=new v.Scene;return e!=null&&e.background&&(s.background=e.background),this.addController(s,t)}removePage(e){super.removePage(e,t=>{const s=new U.ResourceTracker;s.track(t),s.dispose()})}setPageActive(e){super.setPageActive(e,(t,s)=>{t.visible=s})}}class Ts{constructor(e){this.event=new _e.EventEmitter;const{renderer:t,scene:s,camera:i}=e,r=new Mt.TransformControls(i,t.domElement);if(r.getHelper){const o=r.getHelper();if(s.add(o),+v.REVISION<170){const n=r._root;n.dispose=()=>{n.traverse(a=>{a.geometry&&a.geometry.dispose(),a.material&&a.material.dispose()})},r.dispose=()=>{r.disconnect(),n.dispose()}}}else r instanceof v.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 bs={antialias:!0,devicePixelRatio:window.devicePixelRatio};class xs{constructor(e){this.options=e;const{width:t,height:s,rendererParams:i,renderer:r}=e,{devicePixelRatio:o,antialias:n}=i,a=new r({antialias:n});a.setSize(t,s),a.setPixelRatio(o),this.renderer=a}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()}}const ue=class ue{constructor(e){var r,o;this.raycaster=new v.Raycaster,this.maxBackufferArea=5760*5760,this.installPlugins=new Map,this._cameraPositon=new v.Vector3,this._cameraTarget=new v.Vector3,this.event=new _e.EventEmitter,this.timer=new v.Timer,this.userData={},this.pageActiveIndex=0,this.pageCountIndex=0,this.userSetDprCache=1,this.viewPadding=[0,0,0,0],this._isDispose=!1,this.event.setMaxListeners(1/0),(o=(r=this.timer).connect)==null||o.call(r,document),this.options=vt(ue.options,e,{isMergeableObject:we.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 n=new Ct({horizontal:!1});n.dom.style.position="absolute",n.init(this.renderer),t.appendChild(n.dom),this.stats=n}this.initResizeObserver(),this.tweenUpdateRaf()}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get maxAnisotropy(){return this.options.WebGPUTHREE?2: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}get mList(){return this.mListController.mList}tweenUpdateRaf(){ye.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);r.add(i),this.controlsController.addCameraControls(i,s),this.loaderController.addLoader(r,s);const o=this.mListController.addMList(null,s);return this.leadController.addLead(r,o,s),this.pageCountIndex=s,s}removePage(e){this.cameraController.removePage(e),this.sceneController.removePage(e),this.controlsController.removePage(e),this.loaderController.removePage(e),this.mListController.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.mListController.setPageActive(e),this.leadController.setPageActive(e),this.pageActiveIndex=e}init(){var _;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:d}=this.getSize(),m=t?new xs({width:a,height:d,renderer:this.options.WebGPURenderer,rendererParams:bs}):new Cs({width:a,height:d,rendererParams:ee(k({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:d}),C=new Es({}),u=new ss({controlsParams:{domElement:(_=o==null?void 0:o.domElement)!=null?_:m.renderer.domElement}}),f=new _s({loaderParams:k({anisotropy:this.maxAnisotropy},n)}),g=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=u,this.loaderController=f,this.mListController=g,this.leadController=y;const l=this.addPage({sceneOptions:this.options.scene,cameraOptions:this.options.camera});if(this.showPage(l),s){const E=new ls({container:e,sceneController:C,cameraController:p});E.add(C.scene),this.helperController=E,i&&E.addViewHelper()}e.appendChild(m.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,ssao:s,ssaoParams:i,composer:r}=this.options,o=new ts({rendererController:this.rendererController,sceneController:this.sceneController,cameraController:this.cameraController,composerParams:r});this.composerController=o,e&&o.addBloomPass(k({},t)),s&&o.addSSAOPass(k({},i)),o.addOutputPass()}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:i,css3DRendererParams:r}=this.options;if(t||s){const o=new as(e);t&&o.addRenderer("css2d",i),s&&o.addRenderer("css3d",r),this.cssRendererController=o}}initTransformControls(){const e=new Ts({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:n,leadController:a}=this,d=this.renderer.getSize(new v.Vector2);d.x===e&&d.y===t||(r.setSize(e,t),i.setSize(e,t),o==null||o.setSize(e,t),n==null||n.setSize(e,t),a.setSize(e,t),this.installPlugins.forEach(m=>{var p;(p=m.setSize)==null||p.call(m,e,t)}),this.viewPadding.some(m=>m!==0)&&this.setViewPadding(...this.viewPadding),this.render(),s&&this.event.emit("resize",{width:e,height:t}))}setDevicePixelRatio(e){var n;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),(n=this.composerController)==null||n.setPixelRatio(r),this.viewPadding.some(a=>a!==0)&&this.setViewPadding(...this.viewPadding))}setViewPadding(e=0,t=0,s=0,i=0){const{width:r,height:o}=this.renderer.getSize(new v.Vector2),n={x:i,y:s,width:r-i-t,height:o-e-s};this.rendererController.setViewport(n),this.cameraController.setAspect(n.width/n.height),this.viewPadding=[e,t,s,i]}pick(e,t,s=!0){const{raycaster:i,options:r}=this,{container:o}=r,n=new v.Vector2,a=o.getBoundingClientRect();if(n.x=(e.clientX-a.left)/(a.right-a.left)*2-1,n.y=-((e.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){i.setFromCamera(n,this.camera);const d=i.intersectObjects(t||this.scene.children,s);if(d.length)return{object:d[0].object,index:d[0].index,intersects:d}}}render(){var s,i,r,o,n,a;if(!this.camera||!this.scene)return;this.event.emit("beforeRender"),this.timer.update(),ye.update();const e=this.timer.getDelta(),t=this.timer.getElapsed();this.controlsController.update(e,t),this.leadController.update(e,t),this.installPlugins.forEach(d=>{var m;(m=d.update)==null||m.call(d,e,t)}),(s=this.helperController)==null||s.update(e,this.controlsController,this.cameraTarget),(i=this.composerController)!=null&&i.active?this.composerController.render():(r=this.rendererController)==null||r.render(this.scene,this.camera),(o=this.helperController)==null||o.renderViewHelper(this.renderer),(n=this.cssRendererController)==null||n.render(this.scene,this.camera),(a=this.stats)==null||a.update(),this.event.emit("render",{delta:e,elapsed:t})}start(){var e;window.cancelAnimationFrame(this.TweenRaf),(e=this.renderer)==null||e.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){var e;this.tweenUpdateRaf(),(e=this.renderer)==null||e.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}}dispose(){var e,t,s,i,r,o,n,a,d,m,p,C,u,f;this.handeleResize(1,1,!1),this.stop(),this.timer.dispose(),ye.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.installPlugins.forEach(g=>{var y;(y=g.dispose)==null||y.call(g)}),(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(),(n=this.helperController)==null||n.dispose(),(a=this.composerController)==null||a.dispose(),(d=this.rendererController)==null||d.dispose(),(m=this.loaderController)==null||m.dispose(),(p=this.leadController)==null||p.dispose(),(C=this.mListController)==null||C.dispose(),this.cssRendererController=void 0,this.installPlugins.clear(),(u=this.stats)==null||u.dom.remove(),(f=this.renderer)==null||f.domElement.remove(),this._isDispose=!0}};ue.options={stats:U.IS_DEV,helper:U.IS_DEV,viewHelper:U.IS_DEV,controls:!0,transformControls:U.IS_DEV,renderer:vs,composer:es,scene:Os,camera:lt,bloom:!1,bloomParams:Jt,ssao:!1,loader:fs,ssaoParams:Qt,css2DRenderer:!1,css2DRendererParams:k({},$e),css3DRenderer:!1,css3DRendererParams:k({},$e)};let me=ue;const ws=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=ws;exports.default=me;
@@ -29,8 +29,8 @@ var se = (h, e, t) => new Promise((s, i) => {
29
29
  import * as Ce from "@tweenjs/tween.js";
30
30
  import Ut from "deepmerge";
31
31
  import zt from "stats-gl";
32
- import { Vector3 as j, PerspectiveCamera as kt, Matrix4 as W, ShaderMaterial as Ft, UniformsUtils as Nt, RawShaderMaterial as It, MeshBasicMaterial as jt, PointsMaterial as at, SpriteMaterial as lt, Color as Ht, Layers as Bt, Vector2 as B, WebGLRenderTarget as Vt, HalfFloatType as Yt, MathUtils as Zt, Vector4 as Wt, Quaternion as ht, Spherical as Kt, Box3 as ct, Sphere as $t, Raycaster as dt, AxesHelper as De, CameraHelper as Gt, PointLightHelper as Xt, DirectionalLightHelper as qt, SpotLightHelper as Qt, HemisphereLightHelper as Jt, Box3Helper as Ue, Scene as pt, Group as ze, Camera as es, Loader as mt, FileLoader as Se, Texture as fe, VideoTexture as ts, LoadingManager as ss, DataTexture as is, WebGLRenderer as rs, REVISION as os, Object3D as ns, Timer as as } from "three";
33
- import { M as ut, B as Oe, a as ls, R as Pe, I as he } from "./WebGPULineSegments2.module.js";
32
+ import { Vector3 as j, PerspectiveCamera as kt, Matrix4 as W, ShaderMaterial as Ft, UniformsUtils as Nt, RawShaderMaterial as It, MeshBasicMaterial as jt, PointsMaterial as at, SpriteMaterial as lt, Color as Ht, Layers as Bt, Vector2 as B, WebGLRenderTarget as Vt, HalfFloatType as Yt, MathUtils as Zt, Vector4 as Wt, Quaternion as ht, Spherical as Kt, Box3 as ct, Sphere as $t, Raycaster as dt, AxesHelper as De, CameraHelper as Gt, PointLightHelper as Xt, DirectionalLightHelper as qt, SpotLightHelper as Qt, HemisphereLightHelper as Jt, Box3Helper as Ue, Scene as pt, Group as ze, Camera as es, Loader as mt, FileLoader as Se, Texture as ue, VideoTexture as ts, LoadingManager as ss, DataTexture as is, WebGLRenderer as rs, REVISION as os, Object3D as ns, Timer as as } from "three";
33
+ import { M as ft, B as Oe, a as ls, R as Pe, I as he } from "./WebGPULineSegments2.module.js";
34
34
  import { EffectComposer as ke } from "three/examples/jsm/postprocessing/EffectComposer";
35
35
  import { RenderPass as hs } from "three/examples/jsm/postprocessing/RenderPass";
36
36
  import { SSAOPass as cs } from "three/examples/jsm/postprocessing/SSAOPass";
@@ -48,8 +48,8 @@ import "three/examples/jsm/lines/LineSegments2";
48
48
  import { ShaderPass as ps } from "three/examples/jsm/postprocessing/ShaderPass";
49
49
  import { OutputPass as ms } from "three/examples/jsm/postprocessing/OutputPass";
50
50
  import { FullScreenQuad as Fe } from "three/examples/jsm/postprocessing/Pass";
51
- import { RectAreaLightHelper as us } from "three/examples/jsm/helpers/RectAreaLightHelper";
52
- import { ViewHelper as fs } from "three/examples/jsm/helpers/ViewHelper";
51
+ import { RectAreaLightHelper as fs } from "three/examples/jsm/helpers/RectAreaLightHelper";
52
+ import { ViewHelper as us } from "three/examples/jsm/helpers/ViewHelper";
53
53
  import { generateUUID as Ne, makePromiseCreator as _s } from "esus-lite";
54
54
  import { DRACOLoader as gs } from "three/examples/jsm/loaders/DRACOLoader";
55
55
  import { EXRLoader as ys } from "three/examples/jsm/loaders/EXRLoader";
@@ -94,14 +94,14 @@ function Y(h) {
94
94
  function H(h) {
95
95
  return h.isOrthographicCamera;
96
96
  }
97
- const $ = Math.PI * 2, je = Math.PI / 2, ft = 1e-5, ie = Math.PI / 180;
97
+ const $ = Math.PI * 2, je = Math.PI / 2, ut = 1e-5, ie = Math.PI / 180;
98
98
  function k(h, e, t) {
99
99
  return Math.max(e, Math.min(t, h));
100
100
  }
101
- function A(h, e = ft) {
101
+ function A(h, e = ut) {
102
102
  return Math.abs(h) < e;
103
103
  }
104
- function P(h, e, t = ft) {
104
+ function P(h, e, t = ut) {
105
105
  return A(h - e, t);
106
106
  }
107
107
  function He(h, e) {
@@ -121,21 +121,21 @@ function ce(h, e, t, s, i = 1 / 0, r) {
121
121
  d = k(d, -p, p), e = h - d;
122
122
  const v = (t.value + o * d) * r;
123
123
  t.value = (t.value - o * v) * a;
124
- let g = e + (d + v) * a;
125
- return m - h > 0 == g > m && (g = m, t.value = (g - m) / r), g;
124
+ let f = e + (d + v) * a;
125
+ return m - h > 0 == f > m && (f = m, t.value = (f - m) / r), f;
126
126
  }
127
127
  function Be(h, e, t, s, i = 1 / 0, r, o) {
128
128
  s = Math.max(1e-4, s);
129
129
  const n = 2 / s, a = n * r, d = 1 / (1 + a + 0.48 * a * a + 0.235 * a * a * a);
130
- let m = e.x, p = e.y, v = e.z, g = h.x - m, u = h.y - p, f = h.z - v;
131
- const y = m, l = p, _ = v, O = i * s, C = O * O, w = g * g + u * u + f * f;
130
+ let m = e.x, p = e.y, v = e.z, f = h.x - m, u = h.y - p, g = h.z - v;
131
+ const y = m, l = p, _ = v, O = i * s, C = O * O, w = f * f + u * u + g * g;
132
132
  if (w > C) {
133
133
  const ve = Math.sqrt(w);
134
- g = g / ve * O, u = u / ve * O, f = f / ve * O;
134
+ f = f / ve * O, u = u / ve * O, g = g / ve * O;
135
135
  }
136
- m = h.x - g, p = h.y - u, v = h.z - f;
137
- const E = (t.x + n * g) * r, x = (t.y + n * u) * r, R = (t.z + n * f) * r;
138
- t.x = (t.x - n * E) * d, t.y = (t.y - n * x) * d, t.z = (t.z - n * R) * d, o.x = m + (g + E) * d, o.y = p + (u + x) * d, o.z = v + (f + R) * d;
136
+ m = h.x - f, p = h.y - u, v = h.z - g;
137
+ const E = (t.x + n * f) * r, x = (t.y + n * u) * r, R = (t.z + n * g) * r;
138
+ t.x = (t.x - n * E) * d, t.y = (t.y - n * x) * d, t.z = (t.z - n * R) * d, o.x = m + (f + E) * d, o.y = p + (u + x) * d, o.z = v + (g + R) * d;
139
139
  const V = y - h.x, le = l - h.y, bt = _ - h.z, xt = o.x - y, Lt = o.y - l, Pt = o.z - _;
140
140
  return V * xt + le * Lt + bt * Pt > 0 && (o.x = y, o.y = l, o.z = _, t.x = (o.x - y) / r, t.y = (o.y - l) / r, t.z = (o.z - _) / r), o;
141
141
  }
@@ -354,7 +354,7 @@ class J extends ws {
354
354
  }
355
355
  else
356
356
  (!this._isDragging && this._lockedPointer || this._isDragging && (l.buttons & M.LEFT) === M.LEFT) && (this._state = this._state | this.mouseButtons.left), this._isDragging && (l.buttons & M.MIDDLE) === M.MIDDLE && (this._state = this._state | this.mouseButtons.middle), this._isDragging && (l.buttons & M.RIGHT) === M.RIGHT && (this._state = this._state | this.mouseButtons.right);
357
- g();
357
+ f();
358
358
  }
359
359
  }, a = (l) => {
360
360
  const _ = this._findPointerById(l.pointerId);
@@ -460,7 +460,7 @@ class J extends ws {
460
460
  else
461
461
  !this._lockedPointer && (l.buttons & M.LEFT) === M.LEFT && (this._state = this._state | this.mouseButtons.left), (l.buttons & M.MIDDLE) === M.MIDDLE && (this._state = this._state | this.mouseButtons.middle), (l.buttons & M.RIGHT) === M.RIGHT && (this._state = this._state | this.mouseButtons.right);
462
462
  ((this._state & c.ROTATE) === c.ROTATE || (this._state & c.TOUCH_ROTATE) === c.TOUCH_ROTATE || (this._state & c.TOUCH_DOLLY_ROTATE) === c.TOUCH_DOLLY_ROTATE || (this._state & c.TOUCH_ZOOM_ROTATE) === c.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 & c.TRUCK) === c.TRUCK || (this._state & c.SCREEN_PAN) === c.SCREEN_PAN || (this._state & c.TOUCH_TRUCK) === c.TOUCH_TRUCK || (this._state & c.TOUCH_SCREEN_PAN) === c.TOUCH_SCREEN_PAN || (this._state & c.TOUCH_DOLLY_TRUCK) === c.TOUCH_DOLLY_TRUCK || (this._state & c.TOUCH_DOLLY_SCREEN_PAN) === c.TOUCH_DOLLY_SCREEN_PAN || (this._state & c.TOUCH_ZOOM_TRUCK) === c.TOUCH_ZOOM_TRUCK || (this._state & c.TOUCH_ZOOM_SCREEN_PAN) === c.TOUCH_DOLLY_SCREEN_PAN) && (this._targetEnd.copy(this._target), this._targetVelocity.set(0, 0, 0)), ((this._state & c.DOLLY) === c.DOLLY || (this._state & c.TOUCH_DOLLY) === c.TOUCH_DOLLY || (this._state & c.TOUCH_DOLLY_TRUCK) === c.TOUCH_DOLLY_TRUCK || (this._state & c.TOUCH_DOLLY_SCREEN_PAN) === c.TOUCH_DOLLY_SCREEN_PAN || (this._state & c.TOUCH_DOLLY_OFFSET) === c.TOUCH_DOLLY_OFFSET || (this._state & c.TOUCH_DOLLY_ROTATE) === c.TOUCH_DOLLY_ROTATE) && (this._sphericalEnd.radius = this._spherical.radius, this._radiusVelocity.value = 0), ((this._state & c.ZOOM) === c.ZOOM || (this._state & c.TOUCH_ZOOM) === c.TOUCH_ZOOM || (this._state & c.TOUCH_ZOOM_TRUCK) === c.TOUCH_ZOOM_TRUCK || (this._state & c.TOUCH_ZOOM_SCREEN_PAN) === c.TOUCH_ZOOM_SCREEN_PAN || (this._state & c.TOUCH_ZOOM_OFFSET) === c.TOUCH_ZOOM_OFFSET || (this._state & c.TOUCH_ZOOM_ROTATE) === c.TOUCH_ZOOM_ROTATE) && (this._zoomEnd = this._zoom, this._zoomVelocity.value = 0), ((this._state & c.OFFSET) === c.OFFSET || (this._state & c.TOUCH_OFFSET) === c.TOUCH_OFFSET || (this._state & c.TOUCH_DOLLY_OFFSET) === c.TOUCH_DOLLY_OFFSET || (this._state & c.TOUCH_ZOOM_OFFSET) === c.TOUCH_ZOOM_OFFSET) && (this._focalOffsetEnd.copy(this._focalOffset), this._focalOffsetVelocity.set(0, 0, 0)), this.dispatchEvent({ type: "controlstart" });
463
- }, g = () => {
463
+ }, f = () => {
464
464
  if (!this._enabled || !this._dragNeedsUpdate) return;
465
465
  this._dragNeedsUpdate = !1, Ee(this._activePointers, D);
466
466
  const _ = this._domElement && this._domElement.ownerDocument.pointerLockElement === this._domElement ? this._lockedPointer || this._activePointers[0] : null, O = _ ? -_.deltaX : i.x - D.x, C = _ ? -_.deltaY : i.y - D.y;
@@ -510,7 +510,7 @@ class J extends ws {
510
510
  a
511
511
  ), this._domElement.requestPointerLock(), this._domElement.ownerDocument.addEventListener(
512
512
  "pointerlockchange",
513
- f
513
+ g
514
514
  ), this._domElement.ownerDocument.addEventListener(
515
515
  "pointerlockerror",
516
516
  y
@@ -523,13 +523,13 @@ class J extends ws {
523
523
  var l, _, O;
524
524
  this._lockedPointer !== null && (this._disposePointer(this._lockedPointer), this._lockedPointer = null), (l = this._domElement) === null || l === void 0 || l.ownerDocument.exitPointerLock(), (_ = this._domElement) === null || _ === void 0 || _.ownerDocument.removeEventListener(
525
525
  "pointerlockchange",
526
- f
526
+ g
527
527
  ), (O = this._domElement) === null || O === void 0 || O.ownerDocument.removeEventListener(
528
528
  "pointerlockerror",
529
529
  y
530
530
  ), this.cancel();
531
531
  };
532
- const f = () => {
532
+ const g = () => {
533
533
  this._domElement && this._domElement.ownerDocument.pointerLockElement === this._domElement || this.unlockPointer();
534
534
  }, y = () => {
535
535
  this.unlockPointer();
@@ -550,7 +550,7 @@ class J extends ws {
550
550
  a
551
551
  ), this._domElement.ownerDocument.removeEventListener(
552
552
  "pointerlockchange",
553
- f
553
+ g
554
554
  ), this._domElement.ownerDocument.removeEventListener(
555
555
  "pointerlockerror",
556
556
  y
@@ -987,11 +987,11 @@ class J extends ws {
987
987
  ), Promise.resolve());
988
988
  const m = He(this._sphericalEnd.theta, je), p = He(this._sphericalEnd.phi, je);
989
989
  a.push(this.rotateTo(m, p, t));
990
- const v = b.setFromSpherical(this._sphericalEnd).normalize(), g = Ke.setFromUnitVectors(v, we), u = P(Math.abs(v.y), 1);
991
- u && g.multiply(xe.setFromAxisAngle(pe, m)), g.multiply(this._yAxisUpSpaceInverse);
992
- const f = We.makeEmpty();
993
- L.copy(d.min).applyQuaternion(g), f.expandByPoint(L), L.copy(d.min).setX(d.max.x).applyQuaternion(g), f.expandByPoint(L), L.copy(d.min).setY(d.max.y).applyQuaternion(g), f.expandByPoint(L), L.copy(d.max).setZ(d.min.z).applyQuaternion(g), f.expandByPoint(L), L.copy(d.min).setZ(d.max.z).applyQuaternion(g), f.expandByPoint(L), L.copy(d.max).setY(d.min.y).applyQuaternion(g), f.expandByPoint(L), L.copy(d.max).setX(d.min.x).applyQuaternion(g), f.expandByPoint(L), L.copy(d.max).applyQuaternion(g), f.expandByPoint(L), f.min.x -= i, f.min.y -= o, f.max.x += r, f.max.y += n, g.setFromUnitVectors(we, v), u && g.premultiply(xe.invert()), g.premultiply(this._yAxisUpSpace);
994
- const y = f.getSize(b), l = f.getCenter(L).applyQuaternion(g);
990
+ const v = b.setFromSpherical(this._sphericalEnd).normalize(), f = Ke.setFromUnitVectors(v, we), u = P(Math.abs(v.y), 1);
991
+ u && f.multiply(xe.setFromAxisAngle(pe, m)), f.multiply(this._yAxisUpSpaceInverse);
992
+ const g = We.makeEmpty();
993
+ L.copy(d.min).applyQuaternion(f), g.expandByPoint(L), L.copy(d.min).setX(d.max.x).applyQuaternion(f), g.expandByPoint(L), L.copy(d.min).setY(d.max.y).applyQuaternion(f), g.expandByPoint(L), L.copy(d.max).setZ(d.min.z).applyQuaternion(f), g.expandByPoint(L), L.copy(d.min).setZ(d.max.z).applyQuaternion(f), g.expandByPoint(L), L.copy(d.max).setY(d.min.y).applyQuaternion(f), g.expandByPoint(L), L.copy(d.max).setX(d.min.x).applyQuaternion(f), g.expandByPoint(L), L.copy(d.max).applyQuaternion(f), g.expandByPoint(L), g.min.x -= i, g.min.y -= o, g.max.x += r, g.max.y += n, f.setFromUnitVectors(we, v), u && f.premultiply(xe.invert()), f.premultiply(this._yAxisUpSpace);
994
+ const y = g.getSize(b), l = g.getCenter(L).applyQuaternion(f);
995
995
  if (Y(this._camera)) {
996
996
  const _ = this.getDistanceToFitBox(
997
997
  y.x,
@@ -1084,21 +1084,21 @@ class J extends ws {
1084
1084
  * @param enableTransition
1085
1085
  * @category Methods
1086
1086
  */
1087
- lerpLookAt(e, t, s, i, r, o, n, a, d, m, p, v, g, u = !1) {
1087
+ lerpLookAt(e, t, s, i, r, o, n, a, d, m, p, v, f, u = !1) {
1088
1088
  this._isUserControllingRotate = !1, this._isUserControllingDolly = !1, this._isUserControllingTruck = !1, this._lastDollyDirection = K.NONE, this._changedDolly = 0;
1089
- const f = b.set(i, r, o), y = L.set(e, t, s);
1089
+ const g = b.set(i, r, o), y = L.set(e, t, s);
1090
1090
  z.setFromVector3(
1091
- y.sub(f).applyQuaternion(this._yAxisUpSpace)
1091
+ y.sub(g).applyQuaternion(this._yAxisUpSpace)
1092
1092
  );
1093
1093
  const l = G.set(m, p, v), _ = L.set(n, a, d);
1094
1094
  ae.setFromVector3(
1095
1095
  _.sub(l).applyQuaternion(this._yAxisUpSpace)
1096
- ), this._targetEnd.copy(f.lerp(l, g));
1096
+ ), this._targetEnd.copy(g.lerp(l, f));
1097
1097
  const O = ae.theta - z.theta, C = ae.phi - z.phi, w = ae.radius - z.radius;
1098
1098
  this._sphericalEnd.set(
1099
- z.radius + w * g,
1100
- z.phi + C * g,
1101
- z.theta + O * g
1099
+ z.radius + w * f,
1100
+ z.phi + C * f,
1101
+ z.theta + O * f
1102
1102
  ), this.normalizeRotations(), this._needsUpdate = !0, u || (this._target.copy(this._targetEnd), this._spherical.copy(this._sphericalEnd));
1103
1103
  const E = !u || 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(
1104
1104
  this._spherical.theta,
@@ -1454,29 +1454,29 @@ class J extends ws {
1454
1454
  }
1455
1455
  if (this.dollyToCursor) {
1456
1456
  if (Y(this._camera) && this._changedDolly !== 0) {
1457
- const p = this._spherical.radius - this._lastDistance, v = this._camera, g = this._getCameraDirection(ne), u = b.copy(g).cross(v.up).normalize();
1457
+ const p = this._spherical.radius - this._lastDistance, v = this._camera, f = this._getCameraDirection(ne), u = b.copy(f).cross(v.up).normalize();
1458
1458
  u.lengthSq() === 0 && (u.x = 1);
1459
- const f = L.crossVectors(u, g), y = this._sphericalEnd.radius * Math.tan(v.getEffectiveFOV() * ie * 0.5), _ = (this._sphericalEnd.radius - p - this._sphericalEnd.radius) / this._sphericalEnd.radius, O = G.copy(this._targetEnd).add(
1459
+ const g = L.crossVectors(u, f), y = this._sphericalEnd.radius * Math.tan(v.getEffectiveFOV() * ie * 0.5), _ = (this._sphericalEnd.radius - p - this._sphericalEnd.radius) / this._sphericalEnd.radius, O = G.copy(this._targetEnd).add(
1460
1460
  u.multiplyScalar(
1461
1461
  this._dollyControlCoord.x * y * v.aspect
1462
1462
  )
1463
1463
  ).add(
1464
- f.multiplyScalar(this._dollyControlCoord.y * y)
1464
+ g.multiplyScalar(this._dollyControlCoord.y * y)
1465
1465
  ), C = b.copy(this._targetEnd).lerp(O, _), w = this._lastDollyDirection === K.IN && this._spherical.radius <= this.minDistance, E = this._lastDollyDirection === K.OUT && this.maxDistance <= this._spherical.radius;
1466
1466
  if (this.infinityDolly && (w || E)) {
1467
1467
  this._sphericalEnd.radius -= p, this._spherical.radius -= p;
1468
- const R = L.copy(g).multiplyScalar(-p);
1468
+ const R = L.copy(f).multiplyScalar(-p);
1469
1469
  C.add(R);
1470
1470
  }
1471
1471
  this._boundary.clampPoint(C, C);
1472
1472
  const x = L.subVectors(C, this._targetEnd);
1473
1473
  this._targetEnd.copy(C), this._target.add(x), this._changedDolly -= p, A(this._changedDolly) && (this._changedDolly = 0);
1474
1474
  } else if (H(this._camera) && this._changedZoom !== 0) {
1475
- const p = this._zoom - this._lastZoom, v = this._camera, g = b.set(
1475
+ const p = this._zoom - this._lastZoom, v = this._camera, f = b.set(
1476
1476
  this._dollyControlCoord.x,
1477
1477
  this._dollyControlCoord.y,
1478
1478
  (v.near + v.far) / (v.near - v.far)
1479
- ).unproject(v), u = L.set(0, 0, -1).applyQuaternion(v.quaternion), f = G.copy(g).add(u.multiplyScalar(-g.dot(v.up))), l = -(this._zoom - p - this._zoom) / this._zoom, _ = this._getCameraDirection(ne), O = this._targetEnd.dot(_), C = b.copy(this._targetEnd).lerp(f, l), w = C.dot(_), E = _.multiplyScalar(
1479
+ ).unproject(v), u = L.set(0, 0, -1).applyQuaternion(v.quaternion), g = G.copy(f).add(u.multiplyScalar(-f.dot(v.up))), l = -(this._zoom - p - this._zoom) / this._zoom, _ = this._getCameraDirection(ne), O = this._targetEnd.dot(_), C = b.copy(this._targetEnd).lerp(g, l), w = C.dot(_), E = _.multiplyScalar(
1480
1480
  w - O
1481
1481
  );
1482
1482
  C.sub(E), this._boundary.clampPoint(C, C);
@@ -1709,10 +1709,10 @@ class J extends ws {
1709
1709
  }
1710
1710
  var Ae = { exports: {} }, Q = typeof Reflect == "object" ? Reflect : null, $e = Q && typeof Q.apply == "function" ? Q.apply : function(e, t, s) {
1711
1711
  return Function.prototype.apply.call(e, t, s);
1712
- }, ue;
1713
- Q && typeof Q.ownKeys == "function" ? ue = Q.ownKeys : Object.getOwnPropertySymbols ? ue = function(e) {
1712
+ }, fe;
1713
+ Q && typeof Q.ownKeys == "function" ? fe = Q.ownKeys : Object.getOwnPropertySymbols ? fe = function(e) {
1714
1714
  return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e));
1715
- } : ue = function(e) {
1715
+ } : fe = function(e) {
1716
1716
  return Object.getOwnPropertyNames(e);
1717
1717
  };
1718
1718
  function xs(h) {
@@ -1889,7 +1889,7 @@ function Ot(h) {
1889
1889
  return 0;
1890
1890
  }
1891
1891
  S.prototype.eventNames = function() {
1892
- return this._eventsCount > 0 ? ue(this._events) : [];
1892
+ return this._eventsCount > 0 ? fe(this._events) : [];
1893
1893
  };
1894
1894
  function Et(h, e) {
1895
1895
  for (var t = new Array(e), s = 0; s < e; ++s)
@@ -2231,7 +2231,7 @@ const Fs = new jt({ color: "black" }), Ns = new at({
2231
2231
  }), Hs = new lt({
2232
2232
  color: "black",
2233
2233
  sizeAttenuation: !1
2234
- }), Bs = new ut({
2234
+ }), Bs = new ft({
2235
2235
  color: "black",
2236
2236
  sizeAttenuation: !1,
2237
2237
  lineWidth: 0
@@ -2267,11 +2267,11 @@ class Ws {
2267
2267
  }
2268
2268
  ), p = new ke(o, m), v = this.getSize();
2269
2269
  p.setSize(v.width, v.height);
2270
- const g = new hs(
2270
+ const f = new hs(
2271
2271
  s.scene,
2272
2272
  i.camera
2273
2273
  );
2274
- p.addPass(g), this.scene = s.scene, this.camera = i.camera, this.finalComposer = p, this.renderPass = g, i.event.on("pageChange", (u) => {
2274
+ p.addPass(f), this.scene = s.scene, this.camera = i.camera, this.finalComposer = p, this.renderPass = f, i.event.on("pageChange", (u) => {
2275
2275
  this.changeCamera(u);
2276
2276
  }), s.event.on("pageChange", (u) => {
2277
2277
  this.changeScene(u);
@@ -2346,7 +2346,7 @@ class Ws {
2346
2346
  e.push(o);
2347
2347
  return;
2348
2348
  }
2349
- this.bloomMaterials[o.uuid] = o.material, n.isSprite ? n.material.sizeAttenuation ? n.material = js : n.material = Hs : o.material instanceof ut ? o.material = Bs : a.isPoints ? a.material.sizeAttenuation ? a.material = Is : a.material = Ns : o.material = Fs;
2349
+ this.bloomMaterials[o.uuid] = o.material, n.isSprite ? n.material.sizeAttenuation ? n.material = js : n.material = Hs : o.material instanceof ft ? o.material = Bs : a.isPoints ? a.material.sizeAttenuation ? a.material = Is : a.material = Ns : o.material = Fs;
2350
2350
  }
2351
2351
  });
2352
2352
  }), e.forEach((i) => {
@@ -2472,7 +2472,7 @@ class Xs {
2472
2472
  let O, C;
2473
2473
  l.isOrthographicCamera && (O = -(l.right + l.left) / 2, C = (l.top + l.bottom) / 2);
2474
2474
  const w = l.view && l.view.enabled ? l.view.height / l.view.fullHeight : 1, E = l.isOrthographicCamera ? `scale( ${w} )scale(` + _ + ")translate(" + p(O) + "px," + p(C) + "px)" + v(l.matrixWorldInverse) : `scale( ${w} )translateZ(` + _ + "px)" + v(l.matrixWorldInverse), R = (l.isPerspectiveCamera ? "perspective(" + _ + "px) " : "") + E + "translate(" + r + "px," + o + "px)";
2475
- n.camera.style !== R && (m.style.transform = R, n.camera.style = R), f(y, y, l);
2475
+ n.camera.style !== R && (m.style.transform = R, n.camera.style = R), g(y, y, l);
2476
2476
  }, this.setSize = function(y, l) {
2477
2477
  s = y, i = l, r = s / 2, o = i / 2, a.style.width = y + "px", a.style.height = l + "px", d.style.width = y + "px", d.style.height = l + "px", m.style.width = y + "px", m.style.height = l + "px";
2478
2478
  };
@@ -2483,7 +2483,7 @@ class Xs {
2483
2483
  const l = y.elements;
2484
2484
  return "matrix3d(" + p(l[0]) + "," + p(-l[1]) + "," + p(l[2]) + "," + p(l[3]) + "," + p(l[4]) + "," + p(-l[5]) + "," + p(l[6]) + "," + p(l[7]) + "," + p(l[8]) + "," + p(-l[9]) + "," + p(l[10]) + "," + p(l[11]) + "," + p(l[12]) + "," + p(-l[13]) + "," + p(l[14]) + "," + p(l[15]) + ")";
2485
2485
  }
2486
- function g(y) {
2486
+ function f(y) {
2487
2487
  const l = y.elements;
2488
2488
  return "translate(-50%,-50%)" + ("matrix3d(" + p(l[0]) + "," + p(l[1]) + "," + p(l[2]) + "," + p(l[3]) + "," + p(-l[4]) + "," + p(-l[5]) + "," + p(-l[6]) + "," + p(-l[7]) + "," + p(l[8]) + "," + p(l[9]) + "," + p(l[10]) + "," + p(l[11]) + "," + p(l[12]) + "," + p(l[13]) + "," + p(l[14]) + "," + p(l[15]) + ")");
2489
2489
  }
@@ -2492,7 +2492,7 @@ class Xs {
2492
2492
  for (let l = 0, _ = y.children.length; l < _; l++)
2493
2493
  u(y.children[l]);
2494
2494
  }
2495
- function f(y, l, _, O) {
2495
+ function g(y, l, _, O) {
2496
2496
  if (y.visible === !1) {
2497
2497
  u(y);
2498
2498
  return;
@@ -2502,7 +2502,7 @@ class Xs {
2502
2502
  if (w.style.display = C === !0 ? "" : "none", C === !0) {
2503
2503
  y.onBeforeRender(t, l, _);
2504
2504
  let E;
2505
- y.isCSS3DSprite ? (I.copy(_.matrixWorldInverse), I.transpose(), y.rotation2D !== 0 && I.multiply(Gs.makeRotationZ(y.rotation2D)), y.matrixWorld.decompose(qe, $s, Qe), I.setPosition(qe), I.scale(Qe), I.elements[3] = 0, I.elements[7] = 0, I.elements[11] = 0, I.elements[15] = 1, E = g(I)) : E = g(y.matrixWorld);
2505
+ y.isCSS3DSprite ? (I.copy(_.matrixWorldInverse), I.transpose(), y.rotation2D !== 0 && I.multiply(Gs.makeRotationZ(y.rotation2D)), y.matrixWorld.decompose(qe, $s, Qe), I.setPosition(qe), I.scale(Qe), I.elements[3] = 0, I.elements[7] = 0, I.elements[11] = 0, I.elements[15] = 1, E = f(I)) : E = f(y.matrixWorld);
2506
2506
  const x = n.objects.get(y);
2507
2507
  if (x === void 0 || x.style !== E) {
2508
2508
  w.style.transform = E;
@@ -2513,7 +2513,7 @@ class Xs {
2513
2513
  }
2514
2514
  }
2515
2515
  for (let C = 0, w = y.children.length; C < w; C++)
2516
- f(y.children[C], l, _);
2516
+ g(y.children[C], l, _);
2517
2517
  }
2518
2518
  }
2519
2519
  }
@@ -2535,17 +2535,17 @@ class qs {
2535
2535
  width: s,
2536
2536
  height: i
2537
2537
  };
2538
- }, this.render = function(u, f) {
2539
- u.matrixWorldAutoUpdate === !0 && u.updateMatrixWorld(), f.parent === null && f.matrixWorldAutoUpdate === !0 && f.updateMatrixWorld(), Je.copy(f.matrixWorldInverse), et.multiplyMatrices(f.projectionMatrix, Je), m(u, u, f), g(u);
2540
- }, this.setSize = function(u, f) {
2541
- s = u, i = f, r = s / 2, o = i / 2, a.style.width = u + "px", a.style.height = f + "px";
2538
+ }, this.render = function(u, g) {
2539
+ u.matrixWorldAutoUpdate === !0 && u.updateMatrixWorld(), g.parent === null && g.matrixWorldAutoUpdate === !0 && g.updateMatrixWorld(), Je.copy(g.matrixWorldInverse), et.multiplyMatrices(g.projectionMatrix, Je), m(u, u, g), f(u);
2540
+ }, this.setSize = function(u, g) {
2541
+ s = u, i = g, r = s / 2, o = i / 2, a.style.width = u + "px", a.style.height = g + "px";
2542
2542
  };
2543
2543
  function d(u) {
2544
2544
  u.isCSS2DObject && (u.element.style.display = "none");
2545
- for (let f = 0, y = u.children.length; f < y; f++)
2546
- d(u.children[f]);
2545
+ for (let g = 0, y = u.children.length; g < y; g++)
2546
+ d(u.children[g]);
2547
2547
  }
2548
- function m(u, f, y) {
2548
+ function m(u, g, y) {
2549
2549
  if (u.visible === !1) {
2550
2550
  d(u);
2551
2551
  return;
@@ -2553,33 +2553,33 @@ class qs {
2553
2553
  if (u.isCSS2DObject) {
2554
2554
  q.setFromMatrixPosition(u.matrixWorld), q.applyMatrix4(et);
2555
2555
  const l = q.z >= -1 && q.z <= 1 && u.layers.test(y.layers) === !0, _ = u.element;
2556
- _.style.display = l === !0 ? "" : "none", l === !0 && (u.onBeforeRender(t, f, y), _.style.transform = "translate(" + -100 * u.center.x + "%," + -100 * u.center.y + "%)translate(" + (q.x * r + r) + "px," + (-q.y * o + o) + "px)", _.parentNode !== a && a.appendChild(_), u.onAfterRender(t, f, y));
2556
+ _.style.display = l === !0 ? "" : "none", l === !0 && (u.onBeforeRender(t, g, y), _.style.transform = "translate(" + -100 * u.center.x + "%," + -100 * u.center.y + "%)translate(" + (q.x * r + r) + "px," + (-q.y * o + o) + "px)", _.parentNode !== a && a.appendChild(_), u.onAfterRender(t, g, y));
2557
2557
  const O = {
2558
2558
  distanceToCameraSquared: p(y, u)
2559
2559
  };
2560
2560
  n.objects.set(u, O);
2561
2561
  }
2562
2562
  for (let l = 0, _ = u.children.length; l < _; l++)
2563
- m(u.children[l], f, y);
2563
+ m(u.children[l], g, y);
2564
2564
  }
2565
- function p(u, f) {
2566
- return tt.setFromMatrixPosition(u.matrixWorld), st.setFromMatrixPosition(f.matrixWorld), tt.distanceToSquared(st);
2565
+ function p(u, g) {
2566
+ return tt.setFromMatrixPosition(u.matrixWorld), st.setFromMatrixPosition(g.matrixWorld), tt.distanceToSquared(st);
2567
2567
  }
2568
2568
  function v(u) {
2569
- const f = [];
2569
+ const g = [];
2570
2570
  return u.traverseVisible(function(y) {
2571
- y.isCSS2DObject && f.push(y);
2572
- }), f;
2571
+ y.isCSS2DObject && g.push(y);
2572
+ }), g;
2573
2573
  }
2574
- function g(u) {
2575
- const f = v(u).sort(function(l, _) {
2574
+ function f(u) {
2575
+ const g = v(u).sort(function(l, _) {
2576
2576
  if (l.renderOrder !== _.renderOrder)
2577
2577
  return _.renderOrder - l.renderOrder;
2578
2578
  const O = n.objects.get(l).distanceToCameraSquared, C = n.objects.get(_).distanceToCameraSquared;
2579
2579
  return O - C;
2580
- }), y = f.length;
2581
- for (let l = 0, _ = f.length; l < _; l++)
2582
- f[l].element.style.zIndex = y - l;
2580
+ }), y = g.length;
2581
+ for (let l = 0, _ = g.length; l < _; l++)
2582
+ g[l].element.style.zIndex = y - l;
2583
2583
  }
2584
2584
  }
2585
2585
  }
@@ -2628,7 +2628,7 @@ class Js {
2628
2628
  else if (e.isHemisphereLight)
2629
2629
  i = new Jt(e, 10);
2630
2630
  else if (e.isRectAreaLight)
2631
- i = new us(e);
2631
+ i = new fs(e);
2632
2632
  else {
2633
2633
  const r = new ct();
2634
2634
  if (r.setFromObject(e, !0), r.isEmpty() === !1) {
@@ -2642,7 +2642,7 @@ class Js {
2642
2642
  }
2643
2643
  }
2644
2644
  addViewHelper() {
2645
- const { cameraController: e, container: t } = this.options, s = new fs(e.camera, t);
2645
+ const { cameraController: e, container: t } = this.options, s = new us(e.camera, t);
2646
2646
  t.addEventListener("pointerdown", (i) => {
2647
2647
  i.preventDefault(), s.handleClick(i);
2648
2648
  }), this.viewHelper = s;
@@ -2715,27 +2715,27 @@ class ei {
2715
2715
  return;
2716
2716
  r.preventDefault();
2717
2717
  const o = e === "move" ? t : s, n = [];
2718
- if (this.pickFunctionsMap.forEach((g) => {
2719
- o.has(g.type) && n.push(te(U({}, g), {
2720
- objArr: g.objArr instanceof Function ? g.objArr() : g.objArr
2718
+ if (this.pickFunctionsMap.forEach((f) => {
2719
+ o.has(f.type) && n.push(te(U({}, f), {
2720
+ objArr: f.objArr instanceof Function ? f.objArr() : f.objArr
2721
2721
  }));
2722
2722
  }), n.length === 0) return;
2723
2723
  this.activeObjects.clear(), this.objCallbackMap.clear(), this.activeObject = null;
2724
2724
  const a = this.objCallbackMap;
2725
- for (const g of n)
2726
- for (const u of g.objArr) {
2725
+ for (const f of n)
2726
+ for (const u of f.objArr) {
2727
2727
  if (!u.object3d || !u.visibleWithAncestors) continue;
2728
2728
  a.has(u) || a.set(u, /* @__PURE__ */ new Map());
2729
- const f = a.get(u);
2730
- f.has(g.type) || f.set(g.type, []), f.get(g.type).push(g.cb);
2729
+ const g = a.get(u);
2730
+ g.has(f.type) || g.set(f.type, []), g.get(f.type).push(f.cb);
2731
2731
  }
2732
2732
  if (a.size === 0) return;
2733
- const d = [...a.keys()].map((g) => g.object3d), m = (v = this.pencil.pick(r, d, !0)) == null ? void 0 : v.intersects;
2733
+ const d = [...a.keys()].map((f) => f.object3d), m = (v = this.pencil.pick(r, d, !0)) == null ? void 0 : v.intersects;
2734
2734
  if (!m || m.length === 0)
2735
2735
  e === "down" ? this.handleDownOutside(r) : e === "move" && this.handleLeaveEvents(r);
2736
2736
  else {
2737
- const g = m[0];
2738
- this.processIntersection(g, r, e);
2737
+ const f = m[0];
2738
+ this.processIntersection(f, r, e);
2739
2739
  }
2740
2740
  const p = this.prevActiveObjects;
2741
2741
  this.prevActiveObjects = this.activeObjects, this.activeObjects = p, this.activeObjects.clear();
@@ -2801,8 +2801,8 @@ class ei {
2801
2801
  if (m) {
2802
2802
  const p = (v) => {
2803
2803
  v.preventDefault();
2804
- const g = 5;
2805
- if (!r && Math.abs(v.clientX - e.clientX) <= g && Math.abs(v.clientY - e.clientY) <= g)
2804
+ const f = 5;
2805
+ if (!r && Math.abs(v.clientX - e.clientX) <= f && Math.abs(v.clientY - e.clientY) <= f)
2806
2806
  for (const u of m)
2807
2807
  u({
2808
2808
  baseObject: n,
@@ -2954,23 +2954,23 @@ class ti extends ei {
2954
2954
  }
2955
2955
  draw(e, t, s) {
2956
2956
  return se(this, null, function* () {
2957
- var r, o, n, a;
2957
+ var r, o, n;
2958
2958
  const i = this.objectNamesToFactories.get(e);
2959
2959
  if (i) {
2960
2960
  t || (t = {}), t.target === void 0 && (t.target = s);
2961
- const d = (r = t.objectType) != null ? r : e, m = t.target, p = (o = t.onTop) != null ? o : 0, v = (n = t.prefab) != null ? n : !1, g = (a = t.create) != null ? a : !0, u = new i().create(t);
2961
+ const a = t.target, d = (r = t.onTop) != null ? r : 0, m = (o = t.prefab) != null ? o : !1, p = (n = t.create) != null ? n : !0, v = new i().create(t);
2962
2962
  let f;
2963
- return m === null ? f = null : typeof m == "string" ? f = this.objects.get(m) : m != null && m.isBaseObject || m ? f = m : v ? f = this.prefabGroup : f = this.group, g === !1 ? u.create = () => {
2964
- } : g !== !0 && (u.create = () => {
2965
- g(u);
2966
- }), u.pencil = this.pencil, u.lead = this, u.mList = this.mList, u.isPrefab = v, u.objectType = `${d}`, u.objectOptions = t, this.setBaseObjectKey(
2967
- u,
2963
+ return a === null ? f = null : typeof a == "string" ? f = this.objects.get(a) : a != null && a.isBaseObject || a ? f = a : m ? f = this.prefabGroup : f = this.group, p === !1 ? v.create = () => {
2964
+ } : p !== !0 && (v.create = () => {
2965
+ p(v);
2966
+ }), v.pencil = this.pencil, v.lead = this, v.mList = this.mList, v.isPrefab = m, v.objectType === "BaseObject" && (v.objectType = `${e}`), v.objectOptions = t, this.setBaseObjectKey(
2967
+ v,
2968
2968
  t.key ? `$t:#${t.key}` : "$t:",
2969
2969
  f == null ? void 0 : f.key
2970
2970
  ), this.objectsPm.set(
2971
- u,
2972
- this.addBaseObject(u, f, p)
2973
- ), yield this.objectsPm.get(u), this.objectsPm.delete(u), u;
2971
+ v,
2972
+ this.addBaseObject(v, f, d)
2973
+ ), yield this.objectsPm.get(v), this.objectsPm.delete(v), v;
2974
2974
  }
2975
2975
  throw new Error(`Unrecognized:${e}`);
2976
2976
  });
@@ -3110,7 +3110,7 @@ class ot extends mt {
3110
3110
  }
3111
3111
  load(e, t, s, i) {
3112
3112
  let r, o;
3113
- this.options.type === "image" ? (o = document.createElement("img"), r = new fe(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 ts(o)) : r = new fe();
3113
+ this.options.type === "image" ? (o = document.createElement("img"), r = new ue(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 ts(o)) : r = new ue();
3114
3114
  const n = new Se(this.manager);
3115
3115
  return n.setResponseType("blob"), n.setRequestHeader(this.requestHeader), n.setPath(this.path), n.setWithCredentials(this.withCredentials), n.load(
3116
3116
  e,
@@ -3119,15 +3119,15 @@ class ot extends mt {
3119
3119
  const m = e.split(".").pop(), p = this.options.type === "image" ? `image/${m || "png"}` : `video/${m || "mp4"}`;
3120
3120
  d = d.slice(0, a.size, p);
3121
3121
  const v = () => {
3122
- o.removeEventListener("load", g, !1), o.removeEventListener("error", u, !1);
3123
- }, g = () => {
3122
+ o.removeEventListener("load", f, !1), o.removeEventListener("error", u, !1);
3123
+ }, f = () => {
3124
3124
  v(), r.needsUpdate = !0, t && t(r);
3125
3125
  }, u = (y) => {
3126
3126
  v(), i && i(y), this.manager.itemError(e), this.manager.itemEnd(e);
3127
3127
  };
3128
- o.addEventListener("load", g, !1), o.addEventListener("error", u, !1);
3129
- const f = window.URL.createObjectURL(d);
3130
- o.src = f;
3128
+ o.addEventListener("load", f, !1), o.addEventListener("error", u, !1);
3129
+ const g = window.URL.createObjectURL(d);
3130
+ o.src = g;
3131
3131
  },
3132
3132
  s,
3133
3133
  i
@@ -3172,7 +3172,7 @@ class oi {
3172
3172
  const s = this.assets.get(e);
3173
3173
  if (!s) {
3174
3174
  if ((t === "images" || t === "media" || t === "exr") && this.options.simpleTexture4deleted && this.delLoadArr.includes(e))
3175
- return new fe();
3175
+ return new ue();
3176
3176
  console.warn(`Asset ${e} not found`);
3177
3177
  }
3178
3178
  return s;
@@ -3225,7 +3225,7 @@ class oi {
3225
3225
  get textureAssets() {
3226
3226
  const e = /* @__PURE__ */ new Map();
3227
3227
  return this.assets.forEach((t, s) => {
3228
- (t instanceof fe || t instanceof is || t.isVideoTexture) && e.set(s, t);
3228
+ (t instanceof ue || t instanceof is || t.isVideoTexture) && e.set(s, t);
3229
3229
  }), e;
3230
3230
  }
3231
3231
  loadAll() {
@@ -3585,18 +3585,18 @@ class di {
3585
3585
  outputColorSpace: m,
3586
3586
  logarithmicDepthBuffer: p,
3587
3587
  preserveDrawingBuffer: v,
3588
- stencil: g,
3588
+ stencil: f,
3589
3589
  depth: u
3590
- } = i, f = new rs({
3590
+ } = i, g = new rs({
3591
3591
  alpha: r,
3592
3592
  antialias: n,
3593
3593
  powerPreference: a,
3594
3594
  logarithmicDepthBuffer: p,
3595
3595
  preserveDrawingBuffer: v,
3596
- stencil: g,
3596
+ stencil: f,
3597
3597
  depth: u
3598
3598
  });
3599
- f.setSize(t, s), f.setPixelRatio(o), f.toneMappingExposure = d, f.outputColorSpace = m, this.renderer = f;
3599
+ g.setSize(t, s), g.setPixelRatio(o), g.toneMappingExposure = d, g.outputColorSpace = m, this.renderer = g;
3600
3600
  }
3601
3601
  setSize(e, t) {
3602
3602
  this.renderer.setSize(e, t);
@@ -3643,7 +3643,7 @@ class mi extends ee {
3643
3643
  });
3644
3644
  }
3645
3645
  }
3646
- class ui {
3646
+ class fi {
3647
3647
  constructor(e) {
3648
3648
  this.event = new ye.EventEmitter();
3649
3649
  const { renderer: t, scene: s, camera: i } = e, r = new Ts(
@@ -3712,7 +3712,7 @@ class ui {
3712
3712
  this.event.removeAllListeners(), (e = this.controls) == null || e.dispose();
3713
3713
  }
3714
3714
  }
3715
- const fi = {
3715
+ const ui = {
3716
3716
  antialias: !0,
3717
3717
  devicePixelRatio: window.devicePixelRatio
3718
3718
  };
@@ -3829,7 +3829,7 @@ const _e = class _e {
3829
3829
  height: d,
3830
3830
  //@ts-ignore
3831
3831
  renderer: this.options.WebGPURenderer,
3832
- rendererParams: fi
3832
+ rendererParams: ui
3833
3833
  }) : new di({
3834
3834
  width: a,
3835
3835
  height: d,
@@ -3841,7 +3841,7 @@ const _e = class _e {
3841
3841
  const p = new Ds({
3842
3842
  width: a,
3843
3843
  height: d
3844
- }), v = new mi({}), g = new Ks({
3844
+ }), v = new mi({}), f = new Ks({
3845
3845
  controlsParams: {
3846
3846
  domElement: (_ = o == null ? void 0 : o.domElement) != null ? _ : m.renderer.domElement
3847
3847
  }
@@ -3849,12 +3849,12 @@ const _e = class _e {
3849
3849
  loaderParams: U({
3850
3850
  anisotropy: this.maxAnisotropy
3851
3851
  }, n)
3852
- }), f = new hi({
3852
+ }), g = new hi({
3853
3853
  pencil: this
3854
3854
  }), y = new si({
3855
3855
  pencil: this
3856
3856
  });
3857
- this.sceneController = v, this.cameraController = p, this.controlsController = g, this.loaderController = u, this.mListController = f, this.leadController = y;
3857
+ this.sceneController = v, this.cameraController = p, this.controlsController = f, this.loaderController = u, this.mListController = g, this.leadController = y;
3858
3858
  const l = this.addPage({
3859
3859
  sceneOptions: this.options.scene,
3860
3860
  cameraOptions: this.options.camera
@@ -3898,7 +3898,7 @@ const _e = class _e {
3898
3898
  }
3899
3899
  }
3900
3900
  initTransformControls() {
3901
- const e = new ui({
3901
+ const e = new fi({
3902
3902
  camera: this.camera,
3903
3903
  renderer: this.renderer,
3904
3904
  scene: this.scene
@@ -4036,11 +4036,11 @@ const _e = class _e {
4036
4036
  }
4037
4037
  }
4038
4038
  dispose() {
4039
- var e, t, s, i, r, o, n, a, d, m, p, v, g, u;
4040
- this.handeleResize(1, 1, !1), this.stop(), this.timer.dispose(), Ce.removeAll(), this.event.removeAllListeners(), (e = this.resizeObserver) == null || e.unobserve(this.options.container), this.installPlugins.forEach((f) => {
4039
+ var e, t, s, i, r, o, n, a, d, m, p, v, f, u;
4040
+ this.handeleResize(1, 1, !1), this.stop(), this.timer.dispose(), Ce.removeAll(), this.event.removeAllListeners(), (e = this.resizeObserver) == null || e.unobserve(this.options.container), this.installPlugins.forEach((g) => {
4041
4041
  var y;
4042
- (y = f.dispose) == null || y.call(f);
4043
- }), (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(), (n = this.helperController) == null || n.dispose(), (a = this.composerController) == null || a.dispose(), (d = this.rendererController) == null || d.dispose(), (m = this.loaderController) == null || m.dispose(), (p = this.leadController) == null || p.dispose(), (v = this.mListController) == null || v.dispose(), this.cssRendererController = void 0, this.installPlugins.clear(), (g = this.stats) == null || g.dom.remove(), (u = this.renderer) == null || u.domElement.remove(), this._isDispose = !0;
4042
+ (y = g.dispose) == null || y.call(g);
4043
+ }), (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(), (n = this.helperController) == null || n.dispose(), (a = this.composerController) == null || a.dispose(), (d = this.rendererController) == null || d.dispose(), (m = this.loaderController) == null || m.dispose(), (p = this.leadController) == null || p.dispose(), (v = this.mListController) == null || v.dispose(), this.cssRendererController = void 0, this.installPlugins.clear(), (f = this.stats) == null || f.dom.remove(), (u = this.renderer) == null || u.domElement.remove(), this._isDispose = !0;
4044
4044
  }
4045
4045
  };
4046
4046
  _e.options = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gl-draw",
3
- "version": "0.16.0-beta.8",
3
+ "version": "0.16.0-beta.9",
4
4
  "author": "gitplus <hstits@gmail.com>",
5
5
  "scripts": {
6
6
  "start": "bundler-dev",