gl-draw 0.17.0-beta.16 → 0.17.0-beta.18

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.
package/dist/index.js CHANGED
@@ -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 Ae.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Ae.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}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Be=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,c=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(c.width,c.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Se.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const _=new Et.RenderPass(s.scene,i.camera);p.addPass(_),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=_,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 Tt.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 wt.UnrealBloomPass(new v.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=n;const a=new Se.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const c=Vt(a);c.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(c),this.mixPass=c,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 c;const o=r,n=r,a=r;if((c=o.material)!=null&&c.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=$t:n.material=Gt: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;this.scene.userData._backgroundOriginal=s,this.scene.background=Be}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===Be){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(z({},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 G=new v.Vector3,Ve=new v.Matrix4,Ye=new v.Matrix4,Ze=new v.Vector3,We=new v.Vector3;class is{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.sortObjects=!0,this.getSize=function(){return{width:s,height:i}},this.render=function(u,g){u.matrixWorldAutoUpdate===!0&&u.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),Ve.copy(g.matrixWorldInverse),Ye.multiplyMatrices(g.projectionMatrix,Ve),m(u,u,g),this.sortObjects&&_(u)},this.setSize=function(u,g){s=u,i=g,r=s/2,o=i/2,a.style.width=u+"px",a.style.height=g+"px"};function c(u){u.isCSS2DObject&&(u.element.style.display="none");for(let g=0,y=u.children.length;g<y;g++)c(u.children[g])}function m(u,g,y){if(u.visible===!1){c(u);return}if(u.isCSS2DObject){G.setFromMatrixPosition(u.matrixWorld),G.applyMatrix4(Ye);const l=G.z>=-1&&G.z<=1&&u.layers.test(y.layers)===!0,f=u.element;f.style.display=l===!0?"":"none",l===!0&&(u.onBeforeRender(t,g,y),f.style.transform="translate("+-100*u.center.x+"%,"+-100*u.center.y+"%)translate("+(G.x*r+r)+"px,"+(-G.y*o+o)+"px)",f.parentNode!==a&&a.appendChild(f),u.onAfterRender(t,g,y));const E={distanceToCameraSquared:p(y,u)};n.objects.set(u,E)}for(let l=0,f=u.children.length;l<f;l++)m(u.children[l],g,y)}function p(u,g){return Ze.setFromMatrixPosition(u.matrixWorld),We.setFromMatrixPosition(g.matrixWorld),Ze.distanceToSquared(We)}function C(u){const g=[];return u.traverseVisible(function(y){y.isCSS2DObject&&g.push(y)}),g}function _(u){const g=C(u).sort(function(l,f){if(l.renderOrder!==f.renderOrder)return f.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(f).distanceToCameraSquared;return E-O}),y=g.length;for(let l=0,f=g.length;l<f;l++)g[l].element.style.zIndex=y-l}}}const qe=new v.Vector3,rs=new v.Quaternion,Ke=new v.Vector3,H=new v.Matrix4,os=new v.Matrix4;class ns{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 c=document.createElement("div");c.style.transformOrigin="0 0",c.style.pointerEvents="none",a.appendChild(c);const m=document.createElement("div");m.style.transformStyle="preserve-3d",c.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const f=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(c.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,c.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):c.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 b=l.view&&l.view.enabled?l.view.height/l.view.fullHeight:1,T=l.isOrthographicCamera?`scale( ${b} )scale(`+f+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${b} )translateZ(`+f+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+f+"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",c.style.width=y+"px",c.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 _(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,f=y.children.length;l<f;l++)u(y.children[l])}function g(y,l,f,E){if(y.visible===!1){u(y);return}if(y.isCSS3DObject){const O=y.layers.test(f.layers)===!0,b=y.element;if(b.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,f);let T;y.isCSS3DSprite?(H.copy(f.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(os.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(qe,rs,Ke),H.setPosition(qe),H.scale(Ke),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=_(H)):T=_(y.matrixWorld);const L=n.objects.get(y);if(L===void 0||L.style!==T){b.style.transform=T;const D={style:T};n.objects.set(y,D)}b.parentNode!==m&&m.appendChild(b),y.onAfterRender(t,l,f)}}for(let O=0,b=y.children.length;O<b;O++)g(y.children[O],l,f)}}}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 is:new ns;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 Lt.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 Pt.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:c}=a.userData;c&&n.box.setFromObject(c,!0)}}),((r=this.viewHelper)==null?void 0:r.animating)===!0&&(this.viewHelper.update(e),(o=t.cameraControls)==null||o.setPosition(...i.camera.position.toArray()),this.viewHelper.center.copy(s))}renderViewHelper(e){if(!this.viewHelper)return;const t=e.autoClear;e.autoClear=!1,this.viewHelper.render(e),e.autoClear=t}dispose(){var e;this.helpers={},(e=this.viewHelper)==null||e.dispose()}}function Ge(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(_=>{o.has(_.type)&&n.push(ee(z({},_),{objArr:_.objArr instanceof Function?_.objArr():_.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const _ of n)for(const u of _.objArr){if(!u.object3d||!u.visibleWithAncestors)continue;a.has(u)||a.set(u,new Map);const g=a.get(u);g.has(_.type)||g.set(_.type,[]),g.get(_.type).push(_.cb)}if(a.size===0)return;const c=[...a.keys()].map(_=>_.object3d),m=(C=this.pencil.pick(r,c,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const _=m[0];this.processIntersection(_,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Ge(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 c=a.get("enter");if(c&&!this.prevActiveObjects.has(n))for(const p of c)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 c=a.get("down");if(c)for(const p of c)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 _=5;if(!r&&Math.abs(C.clientX-e.clientX)<=_&&Math.abs(C.clientY-e.clientY)<=_)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 c=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Ge(c),!1),o.push({arr:a,type:m,listener:c})}return this.pickNodeFunctionsMap.set(i,o),i}removePickNode(e){const t=this.pickNodeFunctionsMap.get(e);if(t){for(const s of t)s.arr.element.style.pointerEvents="none",s.arr.element.removeEventListener(s.type,s.listener,!1);this.pickNodeFunctionsMap.delete(e)}}dispose(){this.pickFunctionsMap.clear(),this.pickNodeFunctionsMap.clear(),this.activeObjects.clear(),this.prevActiveObjects.clear(),this.objCallbackMap.clear()}}class 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=z({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),!s.key&&s.target)if(s.target.key==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target),n=o!==void 0?o+1:0;this.objectWrapChindIdMap.set(s.target,n),this.setBaseObjectKey(i,{type:`$p:__c__${n}`,uId:"$p:",key:"$p:"},s.target)}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})}),this.pencil.event.emit("lead.draw",{baseObject:i}),i}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(String(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 p,C,_;const i=this.objectNamesToFactories.get(String(e));if(!i)throw new Error(`Unrecognized factory: ${String(e)}`);t||(t={}),t.target===void 0&&(t.target=s);const r=t.target,o=(p=t.onTop)!=null?p:0,n=(C=t.prefab)!=null?C:!1,a=(_=t.create)!=null?_:!0,c=new i().create(t);let m;if(r===null)m=null;else if(typeof r=="string"){const u=this.objects.get(r);if(!u)throw new Error(`Object with key "${r}" not found`);m=u}else r!=null&&r.isBaseObject||r?m=r:n?m=this.prefabGroup:m=this.group;return a===!1?c.create=()=>{}:a!==!0&&(c.create=()=>{a(c)}),c.pencil=this.pencil,c.lead=this,c.mList=this.mList,c.isPrefab=n,c.objectType=`${e}`,c.objectOptions=t,this.setBaseObjectKey(c,{type:t.keyType,key:t.key,uId:t.uId},m),this.objectsPm.set(c,this.addBaseObject(c,m,o)),yield this.objectsPm.get(c),this.objectsPm.delete(c),c})}setBaseObjectKey(e,t,s){let i="",r=t.key,o=t.type||e.keyType||e.objectType,n=t.uId;return s&&(r!=null&&r.includes("$p:")&&(r=r.replace("$p:",s.keyName||"")),o!=null&&o.includes("$p:")&&(o=o.replace("$p:",s.keyType||"")),n!=null&&n.includes("$p:")&&(n=n.replace("$p:",s.keyUId||""))),i=`${o}`,r&&n?i+=`#${r}-${n}`:(r||n)&&(i+=`#${r||n}`),this.objects.has(i)?this.setBaseObjectKey(e,{type:t.type,key:t.key,uId:Qe.generateUUID()},s):(e.key=i,e.keyType=o,e.keyUId=n,e.keyName=r,this.objects.set(i,e),i)}updateBaseObjectKey(e,t){const s=e.key;this.objects.delete(s);const i=e.parent,r=this.setBaseObjectKey(e,t,i);return this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach(o=>{var n;if(o.key.includes("__c__")){const a=(n=/__c__(\d+)/.exec(o.key))==null?void 0:n[1];typeof a!="undefined"&&this.updateBaseObjectKey(o,{type:`$p:__c__${a}`,key:"$p:",uId:"$p:"})}}),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"),c=n.stream().pipeThrough(a);new Response(c).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Xe 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 c=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;c=c.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",_,!1),o.removeEventListener("error",u,!1)},_=()=>{C(),r.needsUpdate=!0,t&&t(r)},u=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",_,!1),o.addEventListener("error",u,!1);const g=window.URL.createObjectURL(c);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","json.gz"],exr:["exr"],lottie:["lottie.json"]};class us{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new _e.EventEmitter,this.options=z({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")||e.endsWith("json.gz"))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 Xe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Xe(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 Me.GLTFLoader(this.loadingManager),this.dracoLoader=new St.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 Me.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new Mt.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 At.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=z({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=Qe.makePromiseCreator();if(i){if(this.assets.has(e))return this.assets.get(e);this.assets.set(e,r.promise)}const o=this.getLoader(s,t);try{const c=yield o.loadAsync(e);if(this.assets.set(e,c),r.resolve(c),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;c.anisotropy=m}return c}catch(c){r.reject(`Failed to load ${e}`),this.assets.delete(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(c=>{if(c){const m=this.getSrcByAsset(c,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(z({},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 c=`${t}#${n}`;this.add(c,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,c,m)=>{if(typeof c=="string"&&!Number.isNaN(Number(c))){const p=Number(c);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[c]=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 c=o[n];return this.rmBaseObjectMap(e,c),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 c=s(a);return c!==a&&(o[n]=c),c}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,e.handleMaterialChange(o);return}this.rmBaseObjectMap(e),t[r]=o,o&&this.applyColorSpaceToMaterials(o),this.addBaseObjectMap(e)}e.handleMaterialChange(o)},enumerable:!0,configurable:!0})}applyColorSpaceToMaterials(e){be.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 c;const a=(c=i.materialList)==null?void 0:c[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:be.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:c,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u}=i,g=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u});g.setSize(t,s),g.setPixelRatio(o),g.toneMappingExposure=c,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,c;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(c=e.scissorTest)!=null?c:!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 Rt.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 ws={antialias:!0,devicePixelRatio:window.devicePixelRatio};class bs{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.pages=new lt,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=Ct(ue.options,e,{isMergeableObject:be.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 Ot({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.pages.getMinDisabledLayer(),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.pages.enable(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.pages.disable(e),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 f;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:c}=this.getSize(),m=t?new bs({width:a,height:c,renderer:this.options.WebGPURenderer,rendererParams:ws}):new Cs({width:a,height:c,rendererParams:ee(z({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:c}),C=new Es({}),_=new ss({controlsParams:{domElement:(f=o==null?void 0:o.domElement)!=null?f:m.renderer.domElement}}),u=new _s({loaderParams:z({anisotropy:this.maxAnisotropy},n)}),g=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=_,this.loaderController=u,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(z({},t)),s&&o.addSSAOPass(z({},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,c=this.renderer.getSize(new v.Vector2);c.x===e&&c.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 c=i.intersectObjects(t||this.scene.children,s);if(c.length)return{object:c[0].object,index:c[0].index,intersects:c}}}render(){var s,i,r,o,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(c=>{var m;(m=c.update)==null||m.call(c,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,c,m,p,C,_,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(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(),(c=this.rendererController)==null||c.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(),(_=this.stats)==null||_.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:ht,bloom:!1,bloomParams:Jt,ssao:!1,loader:fs,ssaoParams:Qt,css2DRenderer:!1,css2DRendererParams:z({},$e),css3DRenderer:!1,css3DRendererParams:z({},$e)};let me=ue;const xs=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=xs;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 Ae.FullScreenQuad(this.material):this._fsQuad&&(this._fsQuad=new Ae.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}),$t=new v.SpriteMaterial({color:"black",sizeAttenuation:!0}),Gt=new v.SpriteMaterial({color:"black",sizeAttenuation:!1}),Xt=new U.MeshLineMaterial({color:"black",sizeAttenuation:!1,lineWidth:0}),Be=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,c=o.getDrawingBufferSize(new v.Vector2),m=new v.WebGLRenderTarget(c.width,c.height,{samples:Math.min(n,a),type:v.HalfFloatType}),p=new Se.EffectComposer(o,m),C=this.getSize();p.setSize(C.width,C.height);const _=new Et.RenderPass(s.scene,i.camera);p.addPass(_),this.scene=s.scene,this.camera=i.camera,this.finalComposer=p,this.renderPass=_,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 Tt.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 wt.UnrealBloomPass(new v.Vector2(window.innerWidth,window.innerHeight),i,r,s);this.bloomPass=n;const a=new Se.EffectComposer(t);a.renderToScreen=!1,a.addPass(this.renderPass),a.addPass(n),this.bloomComposer=a;const c=Vt(a);c.uniforms.bloomAlphaType.value=o,this.bloomComposer=a,this.finalComposer.addPass(c),this.mixPass=c,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 c;const o=r,n=r,a=r;if((c=o.material)!=null&&c.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=$t:n.material=Gt: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;this.scene.userData._backgroundOriginal=s,this.scene.background=Be}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===Be){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(z({},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 G=new v.Vector3,Ve=new v.Matrix4,Ye=new v.Matrix4,Ze=new v.Vector3,We=new v.Vector3;class is{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.sortObjects=!0,this.getSize=function(){return{width:s,height:i}},this.render=function(u,g){u.matrixWorldAutoUpdate===!0&&u.updateMatrixWorld(),g.parent===null&&g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),Ve.copy(g.matrixWorldInverse),Ye.multiplyMatrices(g.projectionMatrix,Ve),m(u,u,g),this.sortObjects&&_(u)},this.setSize=function(u,g){s=u,i=g,r=s/2,o=i/2,a.style.width=u+"px",a.style.height=g+"px"};function c(u){u.isCSS2DObject&&(u.element.style.display="none");for(let g=0,y=u.children.length;g<y;g++)c(u.children[g])}function m(u,g,y){if(u.visible===!1){c(u);return}if(u.isCSS2DObject){G.setFromMatrixPosition(u.matrixWorld),G.applyMatrix4(Ye);const l=G.z>=-1&&G.z<=1&&u.layers.test(y.layers)===!0,f=u.element;f.style.display=l===!0?"":"none",l===!0&&(u.onBeforeRender(t,g,y),f.style.transform="translate("+-100*u.center.x+"%,"+-100*u.center.y+"%)translate("+(G.x*r+r)+"px,"+(-G.y*o+o)+"px)",f.parentNode!==a&&a.appendChild(f),u.onAfterRender(t,g,y));const E={distanceToCameraSquared:p(y,u)};n.objects.set(u,E)}for(let l=0,f=u.children.length;l<f;l++)m(u.children[l],g,y)}function p(u,g){return Ze.setFromMatrixPosition(u.matrixWorld),We.setFromMatrixPosition(g.matrixWorld),Ze.distanceToSquared(We)}function C(u){const g=[];return u.traverseVisible(function(y){y.isCSS2DObject&&g.push(y)}),g}function _(u){const g=C(u).sort(function(l,f){if(l.renderOrder!==f.renderOrder)return f.renderOrder-l.renderOrder;const E=n.objects.get(l).distanceToCameraSquared,O=n.objects.get(f).distanceToCameraSquared;return E-O}),y=g.length;for(let l=0,f=g.length;l<f;l++)g[l].element.style.zIndex=y-l}}}const qe=new v.Vector3,rs=new v.Quaternion,Ke=new v.Vector3,H=new v.Matrix4,os=new v.Matrix4;class ns{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 c=document.createElement("div");c.style.transformOrigin="0 0",c.style.pointerEvents="none",a.appendChild(c);const m=document.createElement("div");m.style.transformStyle="preserve-3d",c.appendChild(m),this.getSize=function(){return{width:s,height:i}},this.render=function(y,l){const f=l.projectionMatrix.elements[5]*o;l.view&&l.view.enabled?(c.style.transform=`translate( ${-l.view.offsetX*(s/l.view.width)}px, ${-l.view.offsetY*(i/l.view.height)}px )`,c.style.transform+=`scale( ${l.view.fullWidth/l.view.width}, ${l.view.fullHeight/l.view.height} )`):c.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 b=l.view&&l.view.enabled?l.view.height/l.view.fullHeight:1,T=l.isOrthographicCamera?`scale( ${b} )scale(`+f+")translate("+p(E)+"px,"+p(O)+"px)"+C(l.matrixWorldInverse):`scale( ${b} )translateZ(`+f+"px)"+C(l.matrixWorldInverse),D=(l.isPerspectiveCamera?"perspective("+f+"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",c.style.width=y+"px",c.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 _(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,f=y.children.length;l<f;l++)u(y.children[l])}function g(y,l,f,E){if(y.visible===!1){u(y);return}if(y.isCSS3DObject){const O=y.layers.test(f.layers)===!0,b=y.element;if(b.style.display=O===!0?"":"none",O===!0){y.onBeforeRender(t,l,f);let T;y.isCSS3DSprite?(H.copy(f.matrixWorldInverse),H.transpose(),y.rotation2D!==0&&H.multiply(os.makeRotationZ(y.rotation2D)),y.matrixWorld.decompose(qe,rs,Ke),H.setPosition(qe),H.scale(Ke),H.elements[3]=0,H.elements[7]=0,H.elements[11]=0,H.elements[15]=1,T=_(H)):T=_(y.matrixWorld);const L=n.objects.get(y);if(L===void 0||L.style!==T){b.style.transform=T;const D={style:T};n.objects.set(y,D)}b.parentNode!==m&&m.appendChild(b),y.onAfterRender(t,l,f)}}for(let O=0,b=y.children.length;O<b;O++)g(y.children[O],l,f)}}}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 is:new ns;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 Lt.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 Pt.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:c}=a.userData;c&&n.box.setFromObject(c,!0)}}),((r=this.viewHelper)==null?void 0:r.animating)===!0&&(this.viewHelper.update(e),(o=t.cameraControls)==null||o.setPosition(...i.camera.position.toArray()),this.viewHelper.center.copy(s))}renderViewHelper(e){if(!this.viewHelper)return;const t=e.autoClear;e.autoClear=!1,this.viewHelper.render(e),e.autoClear=t}dispose(){var e;this.helpers={},(e=this.viewHelper)==null||e.dispose()}}function Ge(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(_=>{o.has(_.type)&&n.push(ee(z({},_),{objArr:_.objArr instanceof Function?_.objArr():_.objArr}))}),n.length===0)return;this.activeObjects.clear(),this.objCallbackMap.clear(),this.activeObject=null;const a=this.objCallbackMap;for(const _ of n)for(const u of _.objArr){if(!u.object3d||!u.visibleWithAncestors)continue;a.has(u)||a.set(u,new Map);const g=a.get(u);g.has(_.type)||g.set(_.type,[]),g.get(_.type).push(_.cb)}if(a.size===0)return;const c=[...a.keys()].map(_=>_.object3d),m=(C=this.pencil.pick(r,c,!0))==null?void 0:C.intersects;if(!m||m.length===0)e==="down"?this.handleDownOutside(r):e==="move"&&this.handleLeaveEvents(r);else{const _=m[0];this.processIntersection(_,r,e)}const p=this.prevActiveObjects;this.prevActiveObjects=this.activeObjects,this.activeObjects=p,this.activeObjects.clear()};this.domElement.addEventListener(`pointer${e}`,Ge(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 c=a.get("enter");if(c&&!this.prevActiveObjects.has(n))for(const p of c)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 c=a.get("down");if(c)for(const p of c)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 _=5;if(!r&&Math.abs(C.clientX-e.clientX)<=_&&Math.abs(C.clientY-e.clientY)<=_)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 c=p=>{this.enabled&&(p.preventDefault(),s({baseObject:a,mouseEvent:p}))},m=`pointer${t}`;a.element.addEventListener(m,Ge(c),!1),o.push({arr:a,type:m,listener:c})}return this.pickNodeFunctionsMap.set(i,o),i}removePickNode(e){const t=this.pickNodeFunctionsMap.get(e);if(t){for(const s of t)s.arr.element.style.pointerEvents="none",s.arr.element.removeEventListener(s.type,s.listener,!1);this.pickNodeFunctionsMap.delete(e)}}dispose(){this.pickFunctionsMap.clear(),this.pickNodeFunctionsMap.clear(),this.activeObjects.clear(),this.prevActiveObjects.clear(),this.objCallbackMap.clear()}}class 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=z({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),!s.key&&s.target)if(s.target.key==="@Scene"&&e instanceof v.Camera)i.key="@Camera";else{const o=this.objectWrapChindIdMap.get(s.target),n=o!==void 0?o+1:0;this.objectWrapChindIdMap.set(s.target,n),this.setBaseObjectKey(i,{type:`$p:__c__${n}`,uId:"$p:",key:"$p:"},s.target)}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})}),this.pencil.event.emit("lead.draw",{baseObject:i}),i}init(e){return Object.keys(e).forEach(t=>{const s=class{create(r={}){return new e[t](r)}};this.objectNamesToFactories.set(String(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 p,C,_;const i=this.objectNamesToFactories.get(String(e));if(!i)throw new Error(`Unrecognized factory: ${String(e)}`);t||(t={}),t.target===void 0&&(t.target=s);const r=t.target,o=(p=t.onTop)!=null?p:0,n=(C=t.prefab)!=null?C:!1,a=(_=t.create)!=null?_:!0,c=new i().create(t);let m;if(r===null)m=null;else if(typeof r=="string"){const u=this.objects.get(r);if(!u)throw new Error(`Object with key "${r}" not found`);m=u}else r!=null&&r.isBaseObject||r?m=r:n?m=this.prefabGroup:m=this.group;return a===!1?c.create=()=>{}:a!==!0&&(c.create=()=>{a(c)}),c.pencil=this.pencil,c.lead=this,c.mList=this.mList,c.isPrefab=n,c.objectType=`${e}`,c.objectOptions=t,this.setBaseObjectKey(c,{type:t.keyType,key:t.key,uId:t.uId},m),this.objectsPm.set(c,this.addBaseObject(c,m,o)),yield this.objectsPm.get(c),this.objectsPm.delete(c),c})}setBaseObjectKey(e,t,s){let i="",r=t.key,o=t.type||e.keyType||e.objectType,n=t.uId;return s&&(r!=null&&r.includes("$p:")&&(r=r.replace("$p:",s.keyName||"")),o!=null&&o.includes("$p:")&&(o=o.replace("$p:",s.keyType||"")),n!=null&&n.includes("$p:")&&(n=n.replace("$p:",s.keyUId||""))),i=`${o}`,r&&n?i+=`#${r}-${n}`:(r||n)&&(i+=`#${r||n}`),this.objects.has(i)?this.setBaseObjectKey(e,{type:t.type,key:t.key,uId:Qe.generateUUID()},s):(e.key=i,e.keyType=o,e.keyUId=n,e.keyName=r,this.objects.set(i,e),i)}updateBaseObjectKey(e,t){const s=e.key;this.objects.delete(s);const i=e.parent,r=this.setBaseObjectKey(e,t,i);return this.pencil.event.emit("lead.updateKey",{baseObject:e,key:r,oldKey:s}),e.children.forEach(o=>{var n;if(o.key.includes("__c__")){const a=(n=/__c__(\d+)/.exec(o.key))==null?void 0:n[1];typeof a!="undefined"&&this.updateBaseObjectKey(o,{type:`$p:__c__${a}`,key:"$p:",uId:"$p:"})}}),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"),c=n.stream().pipeThrough(a);new Response(c).json().then(p=>{t==null||t(p)}).catch(p=>{i==null||i(p)})},s,i)}}class Xe 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 c=a;const m=e.split(".").pop(),p=this.options.type==="image"?`image/${m||"png"}`:`video/${m||"mp4"}`;c=c.slice(0,a.size,p);const C=()=>{o.removeEventListener("load",_,!1),o.removeEventListener("error",u,!1)},_=()=>{C(),r.needsUpdate=!0,t&&t(r)},u=y=>{C(),i&&i(y),this.manager.itemError(e),this.manager.itemEnd(e)};o.addEventListener("load",_,!1),o.addEventListener("error",u,!1);const g=window.URL.createObjectURL(c);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","json.gz"],exr:["exr"],lottie:["lottie.json"]};class us{constructor(e){this.loadObj=[],this.delLoadArr=[],this.assets=new Map,this.event=new _e.EventEmitter,this.options=z({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")||e.endsWith("json.gz"))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 Xe(this.loadingManager),this.options.prefix&&this.textureLoader.setPath(this.options.prefix)),this.textureLoader;if(e==="media")return this.videoTextureLoader||(this.videoTextureLoader=new Xe(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 Me.GLTFLoader(this.loadingManager),this.dracoLoader=new St.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 Me.GLTFLoader(this.loadingManager),this.options.prefix&&this.gltfLoader.setPath(this.options.prefix)),this.gltfLoader;if(e==="lottie")return this.lottieLoader||(this.lottieLoader=new Mt.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 At.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=z({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=Qe.makePromiseCreator();if(i){if(this.assets.has(e))return this.assets.get(e);this.assets.set(e,r.promise)}const o=this.getLoader(s,t);try{const c=yield o.loadAsync(e);if(this.assets.set(e,c),r.resolve(c),s==="images"||s==="media"||s==="exr"||s==="lottie"){const m=(a=t==null?void 0:t.anisotropy)!=null?a:this.options.anisotropy;c.anisotropy=m}return c}catch(c){r.reject(`Failed to load ${e}`),this.assets.delete(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(c=>{if(c){const m=this.getSrcByAsset(c,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(z({},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 c=`${t}#${n}`;this.add(c,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,c,m)=>{if(typeof c=="string"&&!Number.isNaN(Number(c))){const p=Number(c);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[c]=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 c=o[n];return this.rmBaseObjectMap(e,c),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 c=s(a);return c!==a&&(o[n]=c),c}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,e.handleMaterialChange(o);return}this.rmBaseObjectMap(e),t[r]=o,o&&this.applyColorSpaceToMaterials(o),this.addBaseObjectMap(e)}e.handleMaterialChange(o)},enumerable:!0,configurable:!0})}applyColorSpaceToMaterials(e){be.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 c;const a=(c=i.materialList)==null?void 0:c[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:be.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:c,outputColorSpace:m,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u}=i,g=new v.WebGLRenderer({alpha:r,antialias:n,powerPreference:a,logarithmicDepthBuffer:p,preserveDrawingBuffer:C,stencil:_,depth:u});g.setSize(t,s),g.setPixelRatio(o),g.toneMappingExposure=c,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,c;const{x:t,y:s,width:i,height:r}=e,o=(a=e.scissor)!=null?a:!1,n=(c=e.scissorTest)!=null?c:!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 Rt.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 ws={antialias:!0,devicePixelRatio:window.devicePixelRatio};class bs{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.pages=new lt,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=Ct(ue.options,e,{isMergeableObject:be.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 Ot({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.pages.getMinDisabledLayer(),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.pages.enable(s),s}removePage(e){this.controlsController.removePage(e),this.loaderController.removePage(e),this.mListController.removePage(e),this.leadController.removePage(e),this.cameraController.removePage(e),this.sceneController.removePage(e),this.pages.disable(e),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 f;const{container:e,WebGPUTHREE:t,helper:s,viewHelper:i,renderer:r,controls:o,loader:n}=this.options,{width:a,height:c}=this.getSize(),m=t?new bs({width:a,height:c,renderer:this.options.WebGPURenderer,rendererParams:ws}):new Cs({width:a,height:c,rendererParams:ee(z({},r),{antialias:!1})});this.rendererController=m;const p=new Bt({width:a,height:c}),C=new Es({}),_=new ss({controlsParams:{domElement:(f=o==null?void 0:o.domElement)!=null?f:m.renderer.domElement}}),u=new _s({loaderParams:z({anisotropy:this.maxAnisotropy},n)}),g=new ys({pencil:this}),y=new ds({pencil:this});this.sceneController=C,this.cameraController=p,this.controlsController=_,this.loaderController=u,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(z({},t)),s&&o.addSSAOPass(z({},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,c=this.renderer.getSize(new v.Vector2);c.x===e&&c.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 c=i.intersectObjects(t||this.scene.children,s);if(c.length)return{object:c[0].object,index:c[0].index,intersects:c}}}render(){var s,i,r,o,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(c=>{var m;(m=c.update)==null||m.call(c,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,c,m,p,C,_,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(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(),(c=this.rendererController)==null||c.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(),(_=this.stats)==null||_.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:ht,bloom:!1,bloomParams:Jt,ssao:!1,loader:fs,ssaoParams:Qt,css2DRenderer:!1,css2DRendererParams:z({},$e),css3DRenderer:!1,css3DRendererParams:z({},$e)};let me=ue;const xs=Q.ACTION;exports.BaseObject=U.BaseObject;exports.ResourceTracker=U.ResourceTracker;exports.Pencil=me;exports.cameraControlsAction=xs;exports.default=me;
@@ -3829,7 +3829,7 @@ const _e = class _e {
3829
3829
  return this.leadController.addLead(r, o, s), this.pages.enable(s), s;
3830
3830
  }
3831
3831
  removePage(e) {
3832
- 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.pages.disable(e), this.pageActiveIndex === e && (this.render(), this.showPage(0));
3832
+ this.controlsController.removePage(e), this.loaderController.removePage(e), this.mListController.removePage(e), this.leadController.removePage(e), this.cameraController.removePage(e), this.sceneController.removePage(e), this.pages.disable(e), this.pageActiveIndex === e && (this.render(), this.showPage(0));
3833
3833
  }
3834
3834
  showPage(e) {
3835
3835
  var s;
@@ -1,43 +1,43 @@
1
- var Ie = Object.defineProperty, Be = Object.defineProperties;
2
- var Te = Object.getOwnPropertyDescriptors;
1
+ var Ie = Object.defineProperty, Oe = Object.defineProperties;
2
+ var Be = Object.getOwnPropertyDescriptors;
3
3
  var W = Object.getOwnPropertySymbols;
4
4
  var se = Object.prototype.hasOwnProperty, ne = Object.prototype.propertyIsEnumerable;
5
- var re = Math.pow, ie = (n, e, t) => e in n ? Ie(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, L = (n, e) => {
5
+ var re = Math.pow, ie = (r, e, t) => e in r ? Ie(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, L = (r, e) => {
6
6
  for (var t in e || (e = {}))
7
- se.call(e, t) && ie(n, t, e[t]);
7
+ se.call(e, t) && ie(r, t, e[t]);
8
8
  if (W)
9
9
  for (var t of W(e))
10
- ne.call(e, t) && ie(n, t, e[t]);
11
- return n;
12
- }, q = (n, e) => Be(n, Te(e));
13
- var oe = (n, e) => {
10
+ ne.call(e, t) && ie(r, t, e[t]);
11
+ return r;
12
+ }, q = (r, e) => Oe(r, Be(e));
13
+ var oe = (r, e) => {
14
14
  var t = {};
15
- for (var i in n)
16
- se.call(n, i) && e.indexOf(i) < 0 && (t[i] = n[i]);
17
- if (n != null && W)
18
- for (var i of W(n))
19
- e.indexOf(i) < 0 && ne.call(n, i) && (t[i] = n[i]);
15
+ for (var i in r)
16
+ se.call(r, i) && e.indexOf(i) < 0 && (t[i] = r[i]);
17
+ if (r != null && W)
18
+ for (var i of W(r))
19
+ e.indexOf(i) < 0 && ne.call(r, i) && (t[i] = r[i]);
20
20
  return t;
21
21
  };
22
- var ae = (n, e, t) => new Promise((i, s) => {
23
- var o = (c) => {
22
+ var ae = (r, e, t) => new Promise((i, s) => {
23
+ var o = (a) => {
24
24
  try {
25
- r(t.next(c));
25
+ n(t.next(a));
26
26
  } catch (l) {
27
27
  s(l);
28
28
  }
29
- }, a = (c) => {
29
+ }, c = (a) => {
30
30
  try {
31
- r(t.throw(c));
31
+ n(t.throw(a));
32
32
  } catch (l) {
33
33
  s(l);
34
34
  }
35
- }, r = (c) => c.done ? i(c.value) : Promise.resolve(c.value).then(o, a);
36
- r((t = t.apply(n, e)).next());
35
+ }, n = (a) => a.done ? i(a.value) : Promise.resolve(a.value).then(o, c);
36
+ n((t = t.apply(r, e)).next());
37
37
  });
38
- import { merge as H, mean as De, extent as ce } from "d3-array";
39
- import Oe, { flatten as Se } from "earcut";
40
- import { Material as le, Object3D as R, Texture as ue, BufferGeometry as ee, Float32BufferAttribute as G, PointsMaterial as Ee, Points as te, InstancedMesh as je, Vector3 as S, Quaternion as ke, Group as ze, Mesh as Ce, Sprite as de, Box3 as Pe, ShaderMaterial as Le, Vector2 as K, Color as he, Vector4 as V, Matrix4 as Ve, Line3 as Ne, Sphere as We, InstancedInterleavedBuffer as _e, InterleavedBufferAttribute as fe, MathUtils as Ue } from "three";
38
+ import { merge as J, mean as Te, extent as ce } from "d3-array";
39
+ import De, { flatten as Se } from "earcut";
40
+ import { Material as le, Object3D as R, Texture as ue, BufferGeometry as ee, Float32BufferAttribute as G, PointsMaterial as Ee, Points as te, InstancedMesh as je, Vector3 as S, Quaternion as ze, Group as ke, Mesh as Ce, Sprite as de, Box3 as Pe, ShaderMaterial as Le, Vector2 as K, Color as he, Vector4 as V, Matrix4 as Ve, Line3 as Ne, Sphere as We, InstancedInterleavedBuffer as Ue, InterleavedBufferAttribute as fe, MathUtils as _e } from "three";
41
41
  import Re from "@turf/boolean-clockwise";
42
42
  import { p as pe, a as Ge } from "./polar2Cartesian.module.js";
43
43
  import $e from "delaunator";
@@ -47,9 +47,9 @@ import { geoVoronoi as Xe } from "d3-geo-voronoi";
47
47
  import { scaleLinear as me } from "d3-scale";
48
48
  import { LineSegmentsGeometry as Ye } from "three/examples/jsm/lines/LineSegmentsGeometry";
49
49
  import { CSS2DObject as Ze } from "three/examples/jsm/renderers/CSS2DRenderer";
50
- import { CSS3DObject as Je, CSS3DSprite as He } from "three/examples/jsm/renderers/CSS3DRenderer";
50
+ import { CSS3DObject as He, CSS3DSprite as Je } from "three/examples/jsm/renderers/CSS3DRenderer";
51
51
  import "d3-geo-projection";
52
- const et = 0, Ot = 1, tt = 2, Et = !1;
52
+ const et = 0, Dt = 1, tt = 2, Et = !1;
53
53
  class it {
54
54
  constructor() {
55
55
  this.resources = /* @__PURE__ */ new Set(), this.disposeMaterial = !0, this.disposeVideo = !0;
@@ -91,7 +91,7 @@ class it {
91
91
  }), e.length = 0, this.resources.clear();
92
92
  }
93
93
  }
94
- const st = (n, e = 1) => {
94
+ const st = (r, e = 1) => {
95
95
  const t = new ee();
96
96
  t.setAttribute(
97
97
  "position",
@@ -100,7 +100,7 @@ const st = (n, e = 1) => {
100
100
  "scaleAtt",
101
101
  new G(new Array(e).fill(1), 1)
102
102
  );
103
- const i = n.material, s = new Ee({
103
+ const i = r.material, s = new Ee({
104
104
  size: 10,
105
105
  map: i.map,
106
106
  alphaMap: i.alphaMap,
@@ -122,17 +122,17 @@ const st = (n, e = 1) => {
122
122
  )}
123
123
  `;
124
124
  }, new te(t, s);
125
- }, nt = (n, e) => {
125
+ }, nt = (r, e) => {
126
126
  const t = new R();
127
127
  e.forEach((i, s) => {
128
- const o = pe(i.position), a = pe(i.scale || [1, 1, 1]);
129
- t.position.copy(o), t.scale.copy(a), t.updateMatrix();
130
- const r = t.matrix.clone();
131
- if (n instanceof je || n.isInstantiate)
132
- n.setMatrixAt(s, r);
133
- else if (n instanceof te || n.type === "Points") {
134
- const l = n.geometry, m = l.attributes.position.array, u = l.attributes.scaleAtt.array, f = new S(), d = new S(), p = new ke(), h = s * 3, v = s * 1;
135
- r.decompose(f, p, d), m[h] = f.x, m[h + 1] = f.y, m[h + 2] = f.z, u[v] = Math.max(d.x, d.y, d.z), l.attributes.position.needsUpdate = !0, l.attributes.scaleAtt.needsUpdate = !0;
128
+ const o = pe(i.position), c = pe(i.scale || [1, 1, 1]);
129
+ t.position.copy(o), t.scale.copy(c), t.updateMatrix();
130
+ const n = t.matrix.clone();
131
+ if (r instanceof je || r.isInstantiate)
132
+ r.setMatrixAt(s, n);
133
+ else if (r instanceof te || r.type === "Points") {
134
+ const l = r.geometry, m = l.attributes.position.array, u = l.attributes.scaleAtt.array, f = new S(), d = new S(), p = new ze(), h = s * 3, v = s * 1;
135
+ n.decompose(f, p, d), m[h] = f.x, m[h + 1] = f.y, m[h + 2] = f.z, u[v] = Math.max(d.x, d.y, d.z), l.attributes.position.needsUpdate = !0, l.attributes.scaleAtt.needsUpdate = !0;
136
136
  }
137
137
  });
138
138
  };
@@ -291,7 +291,7 @@ class Z extends ot {
291
291
  return this.object3d.visible = !1, this.object3d.layers.set(tt), this;
292
292
  }
293
293
  createGroup() {
294
- return this.object3d = new ze(), this;
294
+ return this.object3d = new ke(), this;
295
295
  }
296
296
  createMesh(...e) {
297
297
  return this.object3d = new Ce(...e), this;
@@ -303,10 +303,10 @@ class Z extends ot {
303
303
  return this.object3d = new Ze(e), this;
304
304
  }
305
305
  createCSS3DObject(e) {
306
- return this.object3d = new Je(e), this;
306
+ return this.object3d = new He(e), this;
307
307
  }
308
308
  createCSS3DSprite(e) {
309
- return this.object3d = new He(e), this;
309
+ return this.object3d = new Je(e), this;
310
310
  }
311
311
  createSprite(e) {
312
312
  return this.object3d = new de(e), this;
@@ -337,10 +337,10 @@ class Z extends ot {
337
337
  return ae(this, null, function* () {
338
338
  var l, m;
339
339
  const t = (l = e == null ? void 0 : e.recursive) != null ? l : !0, i = (m = e == null ? void 0 : e.cloneMaterial) != null ? m : !1, { objectType: s, objectOptions: o } = this;
340
- let a = e == null ? void 0 : e.create, r, c = (e == null ? void 0 : e.target) || this.parent;
341
- return c === this.lead.prefabGroup && (c = this.lead.group), this.objectType === "BaseObject" ? r = this.lead.createBaseObject(this.object3d.clone(!1), {
342
- target: c
343
- }) : (a === void 0 && (a = (u) => {
340
+ let c = e == null ? void 0 : e.create, n, a = (e == null ? void 0 : e.target) || this.parent;
341
+ return a === this.lead.prefabGroup && (a = this.lead.group), this.objectType === "BaseObject" ? n = this.lead.createBaseObject(this.object3d.clone(!1), {
342
+ target: a
343
+ }) : (c === void 0 && (c = (u) => {
344
344
  var f;
345
345
  if (this.object3d) {
346
346
  if ((f = e == null ? void 0 : e.instancedAttr) != null && f.length) {
@@ -360,23 +360,23 @@ class Z extends ot {
360
360
  u.object3d = this.object3d.clone(!1), i && u.object3d.material && (u.object3d.material = this.cloneMaterial());
361
361
  u.object3d.userData.prefab && delete u.object3d.userData.prefab;
362
362
  }
363
- }), r = yield this.lead.draw(s, q(L({}, o || {}), {
364
- create: a,
363
+ }), n = yield this.lead.draw(s, q(L({}, o || {}), {
364
+ create: c,
365
365
  prefab: !1,
366
366
  keyType: this.keyType,
367
367
  key: (e == null ? void 0 : e.key) || this.keyName,
368
368
  uId: (e == null ? void 0 : e.uId) || this.keyUId,
369
- target: c
370
- }))), this.isBloom && r.enableBloom(), t && (yield Promise.all(
369
+ target: a
370
+ }))), this.isBloom && n.enableBloom(), t && (yield Promise.all(
371
371
  this.children.map(
372
372
  (u) => u.instantiate({
373
373
  key: u.keyUId && u.keyName ? `${u.keyName}-${u.keyUId}` : u.keyName,
374
374
  uId: e == null ? void 0 : e.uId,
375
375
  cloneMaterial: i,
376
- target: r
376
+ target: n
377
377
  })
378
378
  )
379
- )), r.isInstantiate = !0, r;
379
+ )), n.isInstantiate = !0, n;
380
380
  });
381
381
  }
382
382
  erase() {
@@ -400,90 +400,90 @@ class Z extends ot {
400
400
  }
401
401
  }
402
402
  }
403
- function at(n, e) {
404
- return n.map((t) => {
403
+ function at(r, e) {
404
+ return r.map((t) => {
405
405
  const i = [];
406
406
  let s;
407
407
  return t.forEach((o) => {
408
408
  if (s) {
409
- const a = Ke(o, s) * 180 / Math.PI;
410
- if (a > e) {
411
- const r = Qe(s, o), c = 1 / Math.ceil(a / e);
412
- let l = c;
409
+ const c = Ke(o, s) * 180 / Math.PI;
410
+ if (c > e) {
411
+ const n = Qe(s, o), a = 1 / Math.ceil(c / e);
412
+ let l = a;
413
413
  for (; l < 1; )
414
- i.push(r(l)), l += c;
414
+ i.push(n(l)), l += a;
415
415
  }
416
416
  }
417
417
  i.push(s = o);
418
418
  }), i;
419
419
  });
420
420
  }
421
- function ct(n, { minLng: e, maxLng: t, minLat: i, maxLat: s } = {}) {
422
- const o = Math.round(re(360 / n, 2) / Math.PI), a = (1 + Math.sqrt(5)) / 2, r = (d) => d / a * 360 % 360 - 180, c = (d) => Math.acos(2 * d / o - 1) / Math.PI * 180 - 90, l = (d) => o * (Math.cos((d + 90) * Math.PI / 180) + 1) / 2, m = [
421
+ function ct(r, { minLng: e, maxLng: t, minLat: i, maxLat: s } = {}) {
422
+ const o = Math.round(re(360 / r, 2) / Math.PI), c = (1 + Math.sqrt(5)) / 2, n = (d) => d / c * 360 % 360 - 180, a = (d) => Math.acos(2 * d / o - 1) / Math.PI * 180 - 90, l = (d) => o * (Math.cos((d + 90) * Math.PI / 180) + 1) / 2, m = [
423
423
  s !== void 0 ? Math.ceil(l(s)) : 0,
424
424
  i !== void 0 ? Math.floor(l(i)) : o - 1
425
425
  ], u = e === void 0 && t === void 0 ? () => !0 : e === void 0 ? (d) => d <= t : t === void 0 ? (d) => d >= e : t >= e ? (d) => d >= e && d <= t : (d) => d >= e || d <= t, f = [];
426
426
  for (let d = m[0]; d <= m[1]; d++) {
427
- const p = r(d);
428
- u(p) && f.push([p, c(d)]);
427
+ const p = n(d);
428
+ u(p) && f.push([p, a(d)]);
429
429
  }
430
430
  return f;
431
431
  }
432
- function J(n, e, t = !1) {
433
- return t ? qe(e, n) : Fe(n, e);
432
+ function H(r, e, t = !1) {
433
+ return t ? qe(e, r) : Fe(r, e);
434
434
  }
435
- function lt(n, e) {
436
- const t = { type: "Polygon", coordinates: n }, [[i, s], [o, a]] = Ae(t);
437
- if (Math.min(Math.abs(o - i), Math.abs(a - s)) < e)
435
+ function lt(r, e) {
436
+ const t = { type: "Polygon", coordinates: r }, [[i, s], [o, c]] = Ae(t);
437
+ if (Math.min(Math.abs(o - i), Math.abs(c - s)) < e)
438
438
  return [];
439
- const r = i > o || a >= 89 || s <= -89;
439
+ const n = i > o || c >= 89 || s <= -89;
440
440
  return ct(e, {
441
441
  minLng: i,
442
442
  maxLng: o,
443
443
  minLat: s,
444
- maxLat: a
444
+ maxLat: c
445
445
  }).filter(
446
- (c) => J(c, t, r)
446
+ (a) => H(a, t, n)
447
447
  );
448
448
  }
449
- function ut(n, { resolution: e = 1 / 0, bbox: t, projection: i } = {}) {
450
- const s = at(n, e), o = H(s), a = lt(n, e), r = [...o, ...a], c = { type: "Polygon", coordinates: n }, [[l, m], [u, f]] = Ae(c), d = l > u || // crosses antimeridian
449
+ function ut(r, { resolution: e = 1 / 0, bbox: t, projection: i } = {}) {
450
+ const s = at(r, e), o = J(s), c = lt(r, e), n = [...o, ...c], a = { type: "Polygon", coordinates: r }, [[l, m], [u, f]] = Ae(a), d = l > u || // crosses antimeridian
451
451
  f >= 89 || // crosses north pole
452
452
  m <= -89;
453
453
  let p = [];
454
454
  if (d) {
455
- const b = Xe(r).triangles(), w = new Map(
456
- r.map(([A, I], k) => [`${A}-${I}`, k])
455
+ const y = Xe(n).triangles(), x = new Map(
456
+ n.map(([A, I], z) => [`${A}-${I}`, z])
457
457
  );
458
- b.features.forEach((A) => {
459
- const I = A.geometry.coordinates[0].slice(0, 3).reverse(), k = [];
460
- if (I.forEach(([B, F]) => {
461
- const N = `${B}-${F}`;
462
- w.has(N) && k.push(w.get(N));
463
- }), k.length === 3) {
464
- if (k.some((B) => B < o.length)) {
465
- const B = A.properties.circumcenter;
466
- if (!J(
467
- B,
468
- c,
458
+ y.features.forEach((A) => {
459
+ const I = A.geometry.coordinates[0].slice(0, 3).reverse(), z = [];
460
+ if (I.forEach(([O, F]) => {
461
+ const N = `${O}-${F}`;
462
+ x.has(N) && z.push(x.get(N));
463
+ }), z.length === 3) {
464
+ if (z.some((O) => O < o.length)) {
465
+ const O = A.properties.circumcenter;
466
+ if (!H(
467
+ O,
468
+ a,
469
469
  d
470
470
  ))
471
471
  return;
472
472
  }
473
- p.push(...k);
473
+ p.push(...z);
474
474
  }
475
475
  });
476
- } else if (a.length) {
477
- const b = $e.from(r);
478
- for (let w = 0, A = b.triangles.length; w < A; w += 3) {
479
- const I = [2, 1, 0].map((B) => b.triangles[w + B]), k = I.map((B) => r[B]);
480
- if (I.some((B) => B < o.length)) {
481
- const B = [0, 1].map(
482
- (F) => De(k, (N) => N[F])
476
+ } else if (c.length) {
477
+ const y = $e.from(n);
478
+ for (let x = 0, A = y.triangles.length; x < A; x += 3) {
479
+ const I = [2, 1, 0].map((O) => y.triangles[x + O]), z = I.map((O) => n[O]);
480
+ if (I.some((O) => O < o.length)) {
481
+ const O = [0, 1].map(
482
+ (F) => Te(z, (N) => N[F])
483
483
  );
484
- if (!J(
485
- B,
486
- c,
484
+ if (!H(
485
+ O,
486
+ a,
487
487
  d
488
488
  ))
489
489
  continue;
@@ -491,48 +491,48 @@ function ut(n, { resolution: e = 1 / 0, bbox: t, projection: i } = {}) {
491
491
  p.push(...I);
492
492
  }
493
493
  } else {
494
- const { vertices: b, holes: w = [] } = Se(s);
495
- p = Oe(b, w, 2);
494
+ const { vertices: y, holes: x = [] } = Se(s);
495
+ p = De(y, x, 2);
496
496
  }
497
- let h = t ? [t[0], t[2]] : ce(r, (b) => b[0]), v = t ? [t[1], t[3]] : ce(r, (b) => b[1]);
497
+ let h = t ? [t[0], t[2]] : ce(n, (y) => y[0]), v = t ? [t[1], t[3]] : ce(n, (y) => y[1]);
498
498
  if (i) {
499
- const [b, w] = i([h[0], v[0]]), [A, I] = i([h[1], v[1]]);
500
- h = [b, A], v = [-w, -I];
499
+ const [y, x] = i([h[0], v[0]]), [A, I] = i([h[1], v[1]]);
500
+ h = [y, A], v = [-x, -I];
501
501
  }
502
- const j = me(h, [0, 1]), C = me(v, [0, 1]), T = r.map(([b, w]) => {
502
+ const j = me(h, [0, 1]), C = me(v, [0, 1]), B = n.map(([y, x]) => {
503
503
  if (i) {
504
- const [A, I] = i([b, w]);
504
+ const [A, I] = i([y, x]);
505
505
  return [j(A), C(-I)];
506
506
  } else
507
- return [j(b), C(w)];
507
+ return [j(y), C(x)];
508
508
  });
509
- return { contour: s, triangles: { points: r, indices: p, uvs: T } };
509
+ return { contour: s, triangles: { points: n, indices: p, uvs: B } };
510
510
  }
511
511
  const ve = new ee().setAttribute ? "setAttribute" : "addAttribute";
512
- function $(n, e, t, i) {
513
- const s = n.map(
514
- (o) => o.map(([a, r]) => {
512
+ function $(r, e, t, i) {
513
+ const s = r.map(
514
+ (o) => o.map(([c, n]) => {
515
515
  if (i) {
516
- const [c, l] = i([a, r]);
517
- return [c, -l, e];
516
+ const [a, l] = i([c, n]);
517
+ return [a, -l, e];
518
518
  }
519
- return t ? Ge(a, r, e) : [a, r, e];
519
+ return t ? Ge(c, n, e) : [c, n, e];
520
520
  })
521
521
  );
522
522
  return Se(s);
523
523
  }
524
- function dt(n, e, t, i, s) {
525
- const { vertices: o, holes: a } = $(
526
- n,
524
+ function dt(r, e, t, i, s) {
525
+ const { vertices: o, holes: c } = $(
526
+ r,
527
527
  e,
528
528
  i,
529
529
  s
530
- ), { vertices: r } = $(
531
- n,
530
+ ), { vertices: n } = $(
531
+ r,
532
532
  t,
533
533
  i,
534
534
  s
535
- ), c = H([r, o]), l = Math.round(r.length / 3), m = new Set(a);
535
+ ), a = J([n, o]), l = Math.round(n.length / 3), m = new Set(c);
536
536
  let u = 0;
537
537
  const f = [];
538
538
  for (let p = 0; p < l; p++) {
@@ -548,13 +548,13 @@ function dt(n, e, t, i, s) {
548
548
  const d = [];
549
549
  for (let p = 1; p >= 0; p--)
550
550
  for (let h = 0; h < l; h += 1) d.push(h / (l - 1), p);
551
- return { indices: f, vertices: c, uvs: d, topVerts: r };
551
+ return { indices: f, vertices: a, uvs: d, topVerts: n };
552
552
  }
553
- function be(n, e, t, i, s, o) {
553
+ function be(r, e, t, i, s, o) {
554
554
  return {
555
- indices: i ? n.indices : n.indices.slice().reverse(),
555
+ indices: i ? r.indices : r.indices.slice().reverse(),
556
556
  vertices: $(
557
- [n.points],
557
+ [r.points],
558
558
  e,
559
559
  s,
560
560
  o
@@ -563,24 +563,24 @@ function be(n, e, t, i, s, o) {
563
563
  };
564
564
  }
565
565
  const ht = ({
566
- polygonGeoJson: n,
566
+ polygonGeoJson: r,
567
567
  startHeight: e,
568
568
  endHeight: t,
569
569
  curvatureResolution: i = 1,
570
570
  cartesian: s = !0,
571
571
  hasSide: o = !0,
572
- hasBottom: a = !1,
573
- hasTop: r = !1,
574
- projection: c,
572
+ hasBottom: c = !1,
573
+ hasTop: n = !1,
574
+ projection: a,
575
575
  bbox: l
576
576
  }) => {
577
- n.forEach((j) => {
577
+ r.forEach((j) => {
578
578
  Re(j) || j.reverse();
579
579
  });
580
- const { contour: m, triangles: u } = ut(n, {
580
+ const { contour: m, triangles: u } = ut(r, {
581
581
  resolution: i,
582
582
  bbox: l,
583
- projection: c
583
+ projection: a
584
584
  });
585
585
  let f = {}, d;
586
586
  o && (f = dt(
@@ -588,30 +588,30 @@ const ht = ({
588
588
  e != null ? e : t,
589
589
  t != null ? t : e,
590
590
  s,
591
- c
591
+ a
592
592
  ), d = f.topVerts);
593
593
  let p = [];
594
- (a || r) && (p = H(u.uvs));
594
+ (c || n) && (p = J(u.uvs));
595
595
  let h = {};
596
- a && (h = be(
596
+ c && (h = be(
597
597
  u,
598
598
  e,
599
599
  p,
600
600
  !1,
601
601
  s,
602
- c
602
+ a
603
603
  ));
604
604
  let v = {};
605
- return r && (v = be(
605
+ return n && (v = be(
606
606
  u,
607
607
  t,
608
608
  p,
609
609
  !0,
610
610
  s,
611
- c
611
+ a
612
612
  )), { contour: m, triangles: u, sideTorso: f, bottomCap: h, topCap: v, topVerts: d };
613
613
  };
614
- class kt extends ee {
614
+ class zt extends ee {
615
615
  constructor(e, t = {}) {
616
616
  super(), this.type = "PolygonBufferGeometry", this.parameters = L({
617
617
  polygonGeoJson: e,
@@ -629,25 +629,25 @@ class kt extends ee {
629
629
  endHeight: i,
630
630
  hasTop: s,
631
631
  topFirst: o,
632
- hasBottom: a,
633
- hasSide: r,
634
- cartesian: c,
632
+ hasBottom: c,
633
+ hasSide: n,
634
+ cartesian: a,
635
635
  userDataRsoOffset: l,
636
636
  projection: m
637
637
  } = this.parameters, { contour: u, sideTorso: f, topVerts: d, bottomCap: p, topCap: h } = ht(L({}, this.parameters));
638
- let v = [], j = [], C = [], T = 0;
639
- const P = (b) => {
640
- const w = Math.round(v.length / 3), A = C.length;
641
- v = v.concat(b.vertices), j = j.concat(b.uvs), C = C.concat(
642
- w ? b.indices.map((I) => I + w) : b.indices
643
- ), this.addGroup(A, C.length - A, T++);
638
+ let v = [], j = [], C = [], B = 0;
639
+ const P = (y) => {
640
+ const x = Math.round(v.length / 3), A = C.length;
641
+ v = v.concat(y.vertices), j = j.concat(y.uvs), C = C.concat(
642
+ x ? y.indices.map((I) => I + x) : y.indices
643
+ ), this.addGroup(A, C.length - A, B++);
644
644
  };
645
- s && o && P(h), r && (P(f), this.userData.topVerts = l ? $(
645
+ s && o && P(h), n && (P(f), this.userData.topVerts = l ? $(
646
646
  u,
647
647
  i + l,
648
- c,
648
+ a,
649
649
  m
650
- ).vertices : d), a && P(p), s && !o && P(h), this.setIndex(C), this[ve]("position", new G(v, 3)), this[ve]("uv", new G(j, 2)), this.computeVertexNormals();
650
+ ).vertices : d), c && P(p), s && !o && P(h), this.setIndex(C), this[ve]("position", new G(v, 3)), this[ve]("uv", new G(j, 2)), this.computeVertexNormals();
651
651
  }
652
652
  }
653
653
  const ft = `
@@ -787,16 +787,16 @@ void main() {
787
787
  #include <fog_vertex>
788
788
  }
789
789
  `;
790
- class zt extends Le {
790
+ class kt extends Le {
791
791
  constructor(e = {}) {
792
792
  const C = e, {
793
793
  lineWidth: t = 1,
794
794
  color: i = "#ffffff",
795
795
  opacity: s = 1,
796
796
  map: o = null,
797
- dashOffset: a = 0,
798
- dashArray: r = 0,
799
- dashRatio: c = 0,
797
+ dashOffset: c = 0,
798
+ dashArray: n = 0,
799
+ dashRatio: a = 0,
800
800
  sizeAttenuation: l = !0,
801
801
  offsetLoop: m = !0,
802
802
  offset: u = new K(0, 0),
@@ -833,10 +833,10 @@ class zt extends Le {
833
833
  sizeAttenuation: { value: l ? 1 : 0 },
834
834
  offset: { value: u },
835
835
  offsetLoop: { value: m ? 1 : 0 },
836
- dashArray: { value: r },
837
- dashOffset: { value: a },
838
- dashRatio: { value: c },
839
- useDash: { value: r > 0 ? 1 : 0 },
836
+ dashArray: { value: n },
837
+ dashOffset: { value: c },
838
+ dashRatio: { value: a },
839
+ useDash: { value: n > 0 ? 1 : 0 },
840
840
  scaleDown: { value: f / 10 },
841
841
  alphaTest: { value: p },
842
842
  alphaMap: { value: d },
@@ -895,53 +895,53 @@ class zt extends Le {
895
895
  this.uniforms.sizeAttenuation.value = e ? 1 : 0;
896
896
  }
897
897
  }
898
- const Q = new V(), ye = new S(), ge = new S(), y = new V(), g = new V(), D = new V(), X = new S(), Y = new Ve(), M = new Ne(), Me = new S(), _ = new Pe(), U = new We(), O = new V();
899
- let E, z;
900
- function we(n, e, t) {
901
- return O.set(0, 0, -e, 1).applyMatrix4(n.projectionMatrix), O.multiplyScalar(1 / O.w), O.x = z / t.width, O.y = z / t.height, O.applyMatrix4(n.projectionMatrixInverse), O.multiplyScalar(1 / O.w), Math.abs(Math.max(O.x, O.y));
898
+ const Q = new V(), ye = new S(), ge = new S(), g = new V(), M = new V(), T = new V(), X = new S(), Y = new Ve(), w = new Ne(), Me = new S(), U = new Pe(), _ = new We(), D = new V();
899
+ let E, k;
900
+ function we(r, e, t) {
901
+ return D.set(0, 0, -e, 1).applyMatrix4(r.projectionMatrix), D.multiplyScalar(1 / D.w), D.x = k / t.width, D.y = k / t.height, D.applyMatrix4(r.projectionMatrixInverse), D.multiplyScalar(1 / D.w), Math.abs(Math.max(D.x, D.y));
902
902
  }
903
- function mt(n, e) {
904
- const t = n.matrixWorld, i = n.geometry, s = i.attributes.instanceStart, o = i.attributes.instanceEnd, a = Math.min(i.instanceCount, s.count);
905
- for (let r = 0, c = a; r < c; r++) {
906
- M.start.fromBufferAttribute(s, r), M.end.fromBufferAttribute(o, r), M.applyMatrix4(t);
903
+ function mt(r, e) {
904
+ const t = r.matrixWorld, i = r.geometry, s = i.attributes.instanceStart, o = i.attributes.instanceEnd, c = Math.min(i.instanceCount, s.count);
905
+ for (let n = 0, a = c; n < a; n++) {
906
+ w.start.fromBufferAttribute(s, n), w.end.fromBufferAttribute(o, n), w.applyMatrix4(t);
907
907
  const l = new S(), m = new S();
908
- E.distanceSqToSegment(M.start, M.end, m, l), m.distanceTo(l) < z * 0.5 && e.push({
908
+ E.distanceSqToSegment(w.start, w.end, m, l), m.distanceTo(l) < k * 0.5 && e.push({
909
909
  point: m,
910
910
  pointOnLine: l,
911
911
  distance: E.origin.distanceTo(m),
912
- object: n,
912
+ object: r,
913
913
  face: null,
914
- faceIndex: r,
914
+ faceIndex: n,
915
915
  uv: null,
916
916
  uv1: null
917
917
  });
918
918
  }
919
919
  }
920
- function vt(n, e, t) {
921
- const i = e.projectionMatrix, o = n.material.resolution, a = n.matrixWorld, r = n.geometry, c = r.attributes.instanceStart, l = r.attributes.instanceEnd, m = Math.min(r.instanceCount, c.count), u = -e.near;
922
- E.at(1, D), D.w = 1, D.applyMatrix4(e.matrixWorldInverse), D.applyMatrix4(i), D.multiplyScalar(1 / D.w), D.x *= o.x / 2, D.y *= o.y / 2, D.z = 0, X.copy(D), Y.multiplyMatrices(e.matrixWorldInverse, a);
920
+ function vt(r, e, t) {
921
+ const i = e.projectionMatrix, o = r.material.resolution, c = r.matrixWorld, n = r.geometry, a = n.attributes.instanceStart, l = n.attributes.instanceEnd, m = Math.min(n.instanceCount, a.count), u = -e.near;
922
+ E.at(1, T), T.w = 1, T.applyMatrix4(e.matrixWorldInverse), T.applyMatrix4(i), T.multiplyScalar(1 / T.w), T.x *= o.x / 2, T.y *= o.y / 2, T.z = 0, X.copy(T), Y.multiplyMatrices(e.matrixWorldInverse, c);
923
923
  for (let f = 0, d = m; f < d; f++) {
924
- if (y.fromBufferAttribute(c, f), g.fromBufferAttribute(l, f), y.w = 1, g.w = 1, y.applyMatrix4(Y), g.applyMatrix4(Y), y.z > u && g.z > u)
924
+ if (g.fromBufferAttribute(a, f), M.fromBufferAttribute(l, f), g.w = 1, M.w = 1, g.applyMatrix4(Y), M.applyMatrix4(Y), g.z > u && M.z > u)
925
925
  continue;
926
- if (y.z > u) {
927
- const T = y.z - g.z, P = (y.z - u) / T;
928
- y.lerp(g, P);
929
- } else if (g.z > u) {
930
- const T = g.z - y.z, P = (g.z - u) / T;
931
- g.lerp(y, P);
926
+ if (g.z > u) {
927
+ const B = g.z - M.z, P = (g.z - u) / B;
928
+ g.lerp(M, P);
929
+ } else if (M.z > u) {
930
+ const B = M.z - g.z, P = (M.z - u) / B;
931
+ M.lerp(g, P);
932
932
  }
933
- y.applyMatrix4(i), g.applyMatrix4(i), y.multiplyScalar(1 / y.w), g.multiplyScalar(1 / g.w), y.x *= o.x / 2, y.y *= o.y / 2, g.x *= o.x / 2, g.y *= o.y / 2, M.start.copy(y), M.start.z = 0, M.end.copy(g), M.end.z = 0;
934
- const h = M.closestPointToPointParameter(X, !0);
935
- M.at(h, Me);
936
- const v = Ue.lerp(y.z, g.z, h), j = v >= -1 && v <= 1, C = X.distanceTo(Me) < z * 0.5;
933
+ g.applyMatrix4(i), M.applyMatrix4(i), g.multiplyScalar(1 / g.w), M.multiplyScalar(1 / M.w), g.x *= o.x / 2, g.y *= o.y / 2, M.x *= o.x / 2, M.y *= o.y / 2, w.start.copy(g), w.start.z = 0, w.end.copy(M), w.end.z = 0;
934
+ const h = w.closestPointToPointParameter(X, !0);
935
+ w.at(h, Me);
936
+ const v = _e.lerp(g.z, M.z, h), j = v >= -1 && v <= 1, C = X.distanceTo(Me) < k * 0.5;
937
937
  if (j && C) {
938
- M.start.fromBufferAttribute(c, f), M.end.fromBufferAttribute(l, f), M.start.applyMatrix4(a), M.end.applyMatrix4(a);
939
- const T = new S(), P = new S();
940
- E.distanceSqToSegment(M.start, M.end, P, T), t.push({
938
+ w.start.fromBufferAttribute(a, f), w.end.fromBufferAttribute(l, f), w.start.applyMatrix4(c), w.end.applyMatrix4(c);
939
+ const B = new S(), P = new S();
940
+ E.distanceSqToSegment(w.start, w.end, P, B), t.push({
941
941
  point: P,
942
- pointOnLine: T,
942
+ pointOnLine: B,
943
943
  distance: E.origin.distanceTo(P),
944
- object: n,
944
+ object: r,
945
945
  face: null,
946
946
  faceIndex: f,
947
947
  uv: null,
@@ -957,9 +957,9 @@ class Lt extends Ce {
957
957
  // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
958
958
  computeLineDistances() {
959
959
  const e = this.geometry, t = e.attributes.instanceStart, i = e.attributes.instanceEnd, s = new Float32Array(2 * t.count);
960
- for (let a = 0, r = 0, c = t.count; a < c; a++, r += 2)
961
- ye.fromBufferAttribute(t, a), ge.fromBufferAttribute(i, a), s[r] = r === 0 ? 0 : s[r - 1], s[r + 1] = s[r] + ye.distanceTo(ge);
962
- const o = new _e(
960
+ for (let c = 0, n = 0, a = t.count; c < a; c++, n += 2)
961
+ ye.fromBufferAttribute(t, c), ge.fromBufferAttribute(i, c), s[n] = n === 0 ? 0 : s[n - 1], s[n + 1] = s[n] + ye.distanceTo(ge);
962
+ const o = new Ue(
963
963
  s,
964
964
  2,
965
965
  1
@@ -979,47 +979,47 @@ class Lt extends Ce {
979
979
  );
980
980
  const o = e.params.Line2 !== void 0 && e.params.Line2.threshold || 0;
981
981
  E = e.ray;
982
- const a = this.matrixWorld, r = this.geometry, c = this.material;
983
- z = c.linewidth + o, r.boundingSphere === null && r.computeBoundingSphere(), U.copy(r.boundingSphere).applyMatrix4(a);
982
+ const c = this.matrixWorld, n = this.geometry, a = this.material;
983
+ k = a.linewidth + o, n.boundingSphere === null && n.computeBoundingSphere(), _.copy(n.boundingSphere).applyMatrix4(c);
984
984
  let l;
985
985
  if (i)
986
- l = z * 0.5;
986
+ l = k * 0.5;
987
987
  else {
988
988
  const u = Math.max(
989
989
  s.near,
990
- U.distanceToPoint(E.origin)
990
+ _.distanceToPoint(E.origin)
991
991
  );
992
992
  l = we(
993
993
  s,
994
994
  u,
995
- c.resolution
995
+ a.resolution
996
996
  );
997
997
  }
998
- if (U.radius += l, E.intersectsSphere(U) === !1)
998
+ if (_.radius += l, E.intersectsSphere(_) === !1)
999
999
  return;
1000
- r.boundingBox === null && r.computeBoundingBox(), _.copy(r.boundingBox).applyMatrix4(a);
1000
+ n.boundingBox === null && n.computeBoundingBox(), U.copy(n.boundingBox).applyMatrix4(c);
1001
1001
  let m;
1002
1002
  if (i)
1003
- m = z * 0.5;
1003
+ m = k * 0.5;
1004
1004
  else {
1005
1005
  const u = Math.max(
1006
1006
  s.near,
1007
- _.distanceToPoint(E.origin)
1007
+ U.distanceToPoint(E.origin)
1008
1008
  );
1009
1009
  m = we(
1010
1010
  s,
1011
1011
  u,
1012
- c.resolution
1012
+ a.resolution
1013
1013
  );
1014
1014
  }
1015
- _.expandByScalar(m), E.intersectsBox(_) !== !1 && (i ? mt(this, t) : vt(this, s, t));
1015
+ U.expandByScalar(m), E.intersectsBox(U) !== !1 && (i ? mt(this, t) : vt(this, s, t));
1016
1016
  }
1017
1017
  onBeforeRender(e) {
1018
1018
  const t = this.material.uniforms;
1019
1019
  t && t.resolution && (e.getViewport(Q), this.material.uniforms.resolution.value.set(Q.z, Q.w));
1020
1020
  }
1021
1021
  }
1022
- const x = class x extends Z {
1022
+ const b = class b extends Z {
1023
1023
  constructor(e) {
1024
1024
  super(), this.objectType = "Node", this.onNodePointerIndex = [], this.options = L({
1025
1025
  type: "2d"
@@ -1041,18 +1041,18 @@ const x = class x extends Z {
1041
1041
  moveElementToViewport() {
1042
1042
  const e = this.options.children;
1043
1043
  if (!e) return;
1044
- const t = e.getBoundingClientRect(), i = window.innerWidth, s = window.innerHeight;
1045
- let o = 0, a = 0;
1046
- t.left < 0 ? o = -t.left : t.right > i && (o = i - t.right), t.top < 0 ? a = -t.top : t.bottom > s && (a = s - t.bottom), t.left + o < 0 && (o = -t.left), t.top + a < 0 && (a = -t.top), (o !== 0 || a !== 0) && (e.style.transform = `translate(${o}px, ${a}px)`);
1044
+ const t = e.getBoundingClientRect(), i = window.innerWidth, s = window.innerHeight, o = t.width, c = t.height;
1045
+ let n = 0, a = 0;
1046
+ o > i ? t.left > 0 && (n = -t.left) : t.left < 0 ? n = -t.left : t.right > i && (n = i - t.right, t.left + n < 0 && (n = -t.left)), c > s ? t.top > 0 && (a = -t.top) : t.top < 0 ? a = -t.top : t.bottom > s && (a = s - t.bottom, t.top + a < 0 && (a = -t.top)), (n !== 0 || a !== 0) && (e.style.transform = `translate(${n}px, ${a}px)`);
1047
1047
  }
1048
1048
  ensureVisible() {
1049
1049
  const e = this.options.children;
1050
- e && (e.style.transform && (e.style.transform = ""), x.sharedObserver || (x.sharedObserver = new IntersectionObserver((t) => {
1050
+ e && (e.style.transform && (e.style.transform = ""), !b.observerMap.has(e) && (b.sharedObserver || (b.sharedObserver = new IntersectionObserver((t) => {
1051
1051
  t.forEach((i) => {
1052
- const s = i.target, o = x.observerMap.get(s);
1053
- o && i.isIntersecting && (o.moveElementToViewport(), x.observerMap.delete(s), x.sharedObserver && x.sharedObserver.unobserve(s));
1052
+ const s = i.target, o = b.observerMap.get(s);
1053
+ o && i.isIntersecting && (o.moveElementToViewport(), b.observerMap.delete(s), b.sharedObserver && (b.sharedObserver.unobserve(s), b.observerMap.size === 0 && (b.sharedObserver.disconnect(), b.sharedObserver = void 0)));
1054
1054
  });
1055
- })), x.observerMap.set(e, this), x.sharedObserver.observe(e));
1055
+ })), b.observerMap.set(e, this), b.sharedObserver.observe(e)));
1056
1056
  }
1057
1057
  onPointerEvent(e, t) {
1058
1058
  const i = this.lead.handlePickNode([this], e, t);
@@ -1060,20 +1060,20 @@ const x = class x extends Z {
1060
1060
  }
1061
1061
  dispose() {
1062
1062
  const e = this.options.children;
1063
- e && x.sharedObserver && (x.observerMap.delete(e), x.sharedObserver.unobserve(e)), this.onNodePointerIndex.forEach((t) => {
1063
+ e && b.sharedObserver && (b.observerMap.delete(e), b.sharedObserver.unobserve(e), b.observerMap.size === 0 && (b.sharedObserver.disconnect(), b.sharedObserver = void 0)), this.onNodePointerIndex.forEach((t) => {
1064
1064
  this.lead.removePickNode(t);
1065
1065
  }), super.dispose();
1066
1066
  }
1067
1067
  };
1068
- x.observerMap = /* @__PURE__ */ new WeakMap();
1069
- let xe = x;
1068
+ b.observerMap = /* @__PURE__ */ new Map();
1069
+ let xe = b;
1070
1070
  export {
1071
- Ot as B,
1071
+ Dt as B,
1072
1072
  Et as I,
1073
1073
  Lt as L,
1074
- zt as M,
1074
+ kt as M,
1075
1075
  xe as N,
1076
- kt as P,
1076
+ zt as P,
1077
1077
  it as R,
1078
1078
  Z as a,
1079
1079
  ht as g
package/dist/index2.js CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var ve=Object.defineProperty,be=Object.defineProperties;var ye=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable;var se=Math.pow,ee=(r,e,t)=>e in r?ve(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,L=(r,e)=>{for(var t in e||(e={}))te.call(e,t)&&ee(r,t,e[t]);if(W)for(var t of W(e))ie.call(e,t)&&ee(r,t,e[t]);return r},$=(r,e)=>be(r,ye(e));var re=(r,e)=>{var t={};for(var i in r)te.call(r,i)&&e.indexOf(i)<0&&(t[i]=r[i]);if(r!=null&&W)for(var i of W(r))e.indexOf(i)<0&&ie.call(r,i)&&(t[i]=r[i]);return t};var ne=(r,e,t)=>new Promise((i,s)=>{var o=l=>{try{n(t.next(l))}catch(u){s(u)}},c=l=>{try{n(t.throw(l))}catch(u){s(u)}},n=l=>l.done?i(l.value):Promise.resolve(l.value).then(o,c);n((t=t.apply(r,e)).next())});const z=require("d3-array"),Y=require("earcut"),a=require("three"),ge=require("@turf/boolean-clockwise"),Z=require("./polar2Cartesian.js"),Me=require("delaunator"),we=require("@turf/boolean-point-in-polygon"),N=require("d3-geo"),xe=require("d3-geo-voronoi"),oe=require("d3-scale"),Se=require("three/examples/jsm/lines/LineSegmentsGeometry"),je=require("three/examples/jsm/renderers/CSS2DRenderer"),ae=require("three/examples/jsm/renderers/CSS3DRenderer");require("d3-geo-projection");const Ce=0,Ae=1,Pe=2,Ie=!1;class pe{constructor(){this.resources=new Set,this.disposeMaterial=!0,this.disposeVideo=!0}track(e){if(!e)return e;if(Array.isArray(e))return e.forEach(t=>this.track(t)),e;if(!this.disposeMaterial&&e instanceof a.Material)return e;if(e instanceof R?(e.disposeTrack&&e.object3d?this.track(e.object3d):this.resources.add(e),Object.values(e.materialList).map(t=>this.track(t))):(e instanceof a.Object3D||Reflect.has(e,"dispose"))&&this.resources.add(e),e instanceof R)e.children.forEach(t=>{t.disposeTrack=!1}),this.track(e.children);else if(e instanceof a.Object3D){const t=e;this.track(t.geometry),this.track(t.material),this.track(t.children)}else if(e instanceof a.Material){for(const i of Object.values(e))i instanceof a.Texture&&this.track(i);const t=e;if(t.uniforms){for(const i of Object.values(t.uniforms))if(i){const s=i.value;(s instanceof a.Texture||Array.isArray(s))&&this.track(s)}}}else this.disposeVideo&&e.isVideoTexture&&e.source.data&&this.resources.add(e.source.data);return e}dispose(){const e=[];for(const t of this.resources)t instanceof a.Object3D?e.push(t):t instanceof HTMLVideoElement&&t.pause(),Reflect.has(t,"dispose")&&t.dispose();e.forEach(t=>{t.removeFromParent()}),e.length=0,this.resources.clear()}}const Be=(r,e=1)=>{const t=new a.BufferGeometry;t.setAttribute("position",new a.Float32BufferAttribute(new Array(e*3).fill(0),3)),t.setAttribute("scaleAtt",new a.Float32BufferAttribute(new Array(e).fill(1),1));const i=r.material,s=new a.PointsMaterial({size:10,map:i.map,alphaMap:i.alphaMap,color:i.color,blending:i.blending,depthTest:i.depthTest,depthWrite:!1,opacity:i.opacity,transparent:!0,alphaTest:i.alphaTest,sizeAttenuation:!1});return s.onBeforeCompile=o=>{o.vertexShader=`
1
+ "use strict";var ve=Object.defineProperty,be=Object.defineProperties;var ye=Object.getOwnPropertyDescriptors;var U=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable;var se=Math.pow,ee=(n,e,t)=>e in n?ve(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,L=(n,e)=>{for(var t in e||(e={}))te.call(e,t)&&ee(n,t,e[t]);if(U)for(var t of U(e))ie.call(e,t)&&ee(n,t,e[t]);return n},$=(n,e)=>be(n,ye(e));var re=(n,e)=>{var t={};for(var i in n)te.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&U)for(var i of U(n))e.indexOf(i)<0&&ie.call(n,i)&&(t[i]=n[i]);return t};var ne=(n,e,t)=>new Promise((i,s)=>{var a=c=>{try{r(t.next(c))}catch(u){s(u)}},l=c=>{try{r(t.throw(c))}catch(u){s(u)}},r=c=>c.done?i(c.value):Promise.resolve(c.value).then(a,l);r((t=t.apply(n,e)).next())});const k=require("d3-array"),Y=require("earcut"),o=require("three"),ge=require("@turf/boolean-clockwise"),Z=require("./polar2Cartesian.js"),Me=require("delaunator"),we=require("@turf/boolean-point-in-polygon"),N=require("d3-geo"),xe=require("d3-geo-voronoi"),oe=require("d3-scale"),Se=require("three/examples/jsm/lines/LineSegmentsGeometry"),je=require("three/examples/jsm/renderers/CSS2DRenderer"),ae=require("three/examples/jsm/renderers/CSS3DRenderer");require("d3-geo-projection");const Ce=0,Ae=1,Pe=2,Ie=!1;class pe{constructor(){this.resources=new Set,this.disposeMaterial=!0,this.disposeVideo=!0}track(e){if(!e)return e;if(Array.isArray(e))return e.forEach(t=>this.track(t)),e;if(!this.disposeMaterial&&e instanceof o.Material)return e;if(e instanceof R?(e.disposeTrack&&e.object3d?this.track(e.object3d):this.resources.add(e),Object.values(e.materialList).map(t=>this.track(t))):(e instanceof o.Object3D||Reflect.has(e,"dispose"))&&this.resources.add(e),e instanceof R)e.children.forEach(t=>{t.disposeTrack=!1}),this.track(e.children);else if(e instanceof o.Object3D){const t=e;this.track(t.geometry),this.track(t.material),this.track(t.children)}else if(e instanceof o.Material){for(const i of Object.values(e))i instanceof o.Texture&&this.track(i);const t=e;if(t.uniforms){for(const i of Object.values(t.uniforms))if(i){const s=i.value;(s instanceof o.Texture||Array.isArray(s))&&this.track(s)}}}else this.disposeVideo&&e.isVideoTexture&&e.source.data&&this.resources.add(e.source.data);return e}dispose(){const e=[];for(const t of this.resources)t instanceof o.Object3D?e.push(t):t instanceof HTMLVideoElement&&t.pause(),Reflect.has(t,"dispose")&&t.dispose();e.forEach(t=>{t.removeFromParent()}),e.length=0,this.resources.clear()}}const Be=(n,e=1)=>{const t=new o.BufferGeometry;t.setAttribute("position",new o.Float32BufferAttribute(new Array(e*3).fill(0),3)),t.setAttribute("scaleAtt",new o.Float32BufferAttribute(new Array(e).fill(1),1));const i=n.material,s=new o.PointsMaterial({size:10,map:i.map,alphaMap:i.alphaMap,color:i.color,blending:i.blending,depthTest:i.depthTest,depthWrite:!1,opacity:i.opacity,transparent:!0,alphaTest:i.alphaTest,sizeAttenuation:!1});return s.onBeforeCompile=a=>{a.vertexShader=`
2
2
  attribute float scaleAtt;
3
- ${o.vertexShader.replace("gl_PointSize = size;","gl_PointSize = size * scaleAtt;")}
4
- `},new a.Points(t,s)},De=(r,e)=>{const t=new a.Object3D;e.forEach((i,s)=>{const o=Z.parseVector3(i.position),c=Z.parseVector3(i.scale||[1,1,1]);t.position.copy(o),t.scale.copy(c),t.updateMatrix();const n=t.matrix.clone();if(r instanceof a.InstancedMesh||r.isInstantiate)r.setMatrixAt(s,n);else if(r instanceof a.Points||r.type==="Points"){const u=r.geometry,v=u.attributes.position.array,d=u.attributes.scaleAtt.array,p=new a.Vector3,h=new a.Vector3,m=new a.Quaternion,f=s*3,b=s*1;n.decompose(p,m,h),v[f]=p.x,v[f+1]=p.y,v[f+2]=p.z,d[b]=Math.max(h.x,h.y,h.z),u.attributes.position.needsUpdate=!0,u.attributes.scaleAtt.needsUpdate=!0}})};class Ve{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const i=this.lead.handlePick([this],e,t);this.onPointerIndex.push(i)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerLeave(e){this.onPointerEvent("leave",e)}onPointerMove(e){this.onPointerEvent("move",e)}onPointerDown(e){this.onPointerEvent("down",e)}dispose(){this.onPointerIndex.forEach(e=>{this.lead.removePick(e)})}}class Oe extends Ve{constructor(){super(...arguments),this.userData={},this.materialList={},this.useMaterialType="origin",this.disposeMaterialIfNotUsed=!0}cloneMaterial(){const e=this.object3d;if(!e||!e.material)return;const t=e.material;if(Array.isArray(t))return t.map(i=>{const s=i.userData;i.userData={};const o=i.clone();return i.userData=s,o});{const i=t.userData;t.userData={};const s=t.clone();return t.userData=i,s}}setMaterialList(e,t){const i=this.object3d;if(!i||!i.material)return;this.materialList.origin||(this.materialList.origin=i.material);const s=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=s,s}useMaterial(e){const t=this.object3d;!t||!t.material||this.useMaterialType===e||!this.materialList[e]||(this.useMaterialType=e,t.material=this.materialList[e])}useMListById(e,t){if(!this.mList)return;const i=this.mList.get(e);if(!i)return;const s=this.object3d;Array.isArray(s.material)&&t!==void 0?s.material[t]=i:s.material=i}useMListByName(e,t){if(!this.mList)return;const i=this.mList.getKeyByName(e);i&&this.useMListById(i,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class R extends Oe{constructor(){super(...arguments),this.key="",this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,this.disposeTrack=!0}get parent(){const e=this.object3d.parent;return e&&this.lead.objMap.get(e)||null}get children(){return this.object3d.children.map(e=>this.lead.objMap.get(e)).filter(e=>!!e)}get position(){return this.object3d.position}get rotation(){return this.object3d.rotation}get scale(){return this.object3d.scale}lookAt(e){const t=e instanceof a.Vector3?e:new a.Vector3(...e);this.object3d.lookAt(t)}add(...e){[...e].forEach(t=>{this.lead.objMap.get(t)?this.object3d.add(t):this.lead.createBaseObject(t,{target:this})})}remove(...e){[...e].forEach(t=>{var i;this.lead.objMap.get(t)?(i=this.lead.objMap.get(t))==null||i.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}get visibleWithAncestors(){if(this.visible){let e=this.parent;for(;e;){if(!e.visible)return!1;e=e.parent}return!0}else return!1}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.object3d.layers.set(Ce),this.isBloom&&this.enableBloom(),this}hide(){return this.object3d.visible=!1,this.object3d.layers.set(Pe),this}createGroup(){return this.object3d=new a.Group,this}createMesh(...e){return this.object3d=new a.Mesh(...e),this}createPoints(...e){return this.object3d=new a.Points(...e),this}createCSS2DObject(e){return this.object3d=new je.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ae.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ae.CSS3DSprite(e),this}createSprite(e){return this.object3d=new a.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new a.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new a.Vector3),center:e.getCenter(new a.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return ne(this,null,function*(){var u,v;const t=(u=e==null?void 0:e.recursive)!=null?u:!0,i=(v=e==null?void 0:e.cloneMaterial)!=null?v:!1,{objectType:s,objectOptions:o}=this;let c=e==null?void 0:e.create,n,l=(e==null?void 0:e.target)||this.parent;return l===this.lead.prefabGroup&&(l=this.lead.group),this.objectType==="BaseObject"?n=this.lead.createBaseObject(this.object3d.clone(!1),{target:l}):(c===void 0&&(c=d=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const h=e.instancedAttr.length;if(this.object3d instanceof a.Sprite)d.object3d=Be(this.object3d,h);else{const m=this.object3d,f=i?this.cloneMaterial():m.material;d.object3d=new a.InstancedMesh(m.geometry,f,h)}De(d.object3d,e==null?void 0:e.instancedAttr)}else d.object3d=this.object3d.clone(!1),i&&d.object3d.material&&(d.object3d.material=this.cloneMaterial());d.object3d.userData.prefab&&delete d.object3d.userData.prefab}}),n=yield this.lead.draw(s,$(L({},o||{}),{create:c,prefab:!1,keyType:this.keyType,key:(e==null?void 0:e.key)||this.keyName,uId:(e==null?void 0:e.uId)||this.keyUId,target:l}))),this.isBloom&&n.enableBloom(),t&&(yield Promise.all(this.children.map(d=>d.instantiate({key:d.keyUId&&d.keyName?`${d.keyName}-${d.keyUId}`:d.keyName,uId:e==null?void 0:e.uId,cloneMaterial:i,target:n})))),n.isInstantiate=!0,n})}erase(){this.lead.erase(this)}handleMaterialChange(e){}enableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!0),this.isBloom=!0}disableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!1),this.isBloom=!1}dispose(){var e;if(super.dispose(),(e=this.pencil.composerController)==null||e.bloomSelection.delete(this),this.lead&&(this.lead.objects.delete(this.key),this.lead.objectWrapChindIdMap.delete(this),this.object3d&&this.lead.objMap.delete(this.object3d)),this.disposeTrack){const t=new pe;t.disposeMaterial=!1,t.track(this),t.dispose()}}}function Te(r,e){return r.map(t=>{const i=[];let s;return t.forEach(o=>{if(s){const c=N.geoDistance(o,s)*180/Math.PI;if(c>e){const n=N.geoInterpolate(s,o),l=1/Math.ceil(c/e);let u=l;for(;u<1;)i.push(n(u)),u+=l}}i.push(s=o)}),i})}function Ee(r,{minLng:e,maxLng:t,minLat:i,maxLat:s}={}){const o=Math.round(se(360/r,2)/Math.PI),c=(1+Math.sqrt(5))/2,n=h=>h/c*360%360-180,l=h=>Math.acos(2*h/o-1)/Math.PI*180-90,u=h=>o*(Math.cos((h+90)*Math.PI/180)+1)/2,v=[s!==void 0?Math.ceil(u(s)):0,i!==void 0?Math.floor(u(i)):o-1],d=e===void 0&&t===void 0?()=>!0:e===void 0?h=>h<=t:t===void 0?h=>h>=e:t>=e?h=>h>=e&&h<=t:h=>h>=e||h<=t,p=[];for(let h=v[0];h<=v[1];h++){const m=n(h);d(m)&&p.push([m,l(h)])}return p}function J(r,e,t=!1){return t?N.geoContains(e,r):we(r,e)}function ke(r,e){const t={type:"Polygon",coordinates:r},[[i,s],[o,c]]=N.geoBounds(t);if(Math.min(Math.abs(o-i),Math.abs(c-s))<e)return[];const n=i>o||c>=89||s<=-89;return Ee(e,{minLng:i,maxLng:o,minLat:s,maxLat:c}).filter(l=>J(l,t,n))}function Le(r,{resolution:e=1/0,bbox:t,projection:i}={}){const s=Te(r,e),o=z.merge(s),c=ke(r,e),n=[...o,...c],l={type:"Polygon",coordinates:r},[[u,v],[d,p]]=N.geoBounds(l),h=u>d||p>=89||v<=-89;let m=[];if(h){const y=xe.geoVoronoi(n).triangles(),x=new Map(n.map(([P,I],E)=>[`${P}-${I}`,E]));y.features.forEach(P=>{const I=P.geometry.coordinates[0].slice(0,3).reverse(),E=[];if(I.forEach(([B,F])=>{const _=`${B}-${F}`;x.has(_)&&E.push(x.get(_))}),E.length===3){if(E.some(B=>B<o.length)){const B=P.properties.circumcenter;if(!J(B,l,h))return}m.push(...E)}})}else if(c.length){const y=Me.from(n);for(let x=0,P=y.triangles.length;x<P;x+=3){const I=[2,1,0].map(B=>y.triangles[x+B]),E=I.map(B=>n[B]);if(I.some(B=>B<o.length)){const B=[0,1].map(F=>z.mean(E,_=>_[F]));if(!J(B,l,h))continue}m.push(...I)}}else{const{vertices:y,holes:x=[]}=Y.flatten(s);m=Y(y,x,2)}let f=t?[t[0],t[2]]:z.extent(n,y=>y[0]),b=t?[t[1],t[3]]:z.extent(n,y=>y[1]);if(i){const[y,x]=i([f[0],b[0]]),[P,I]=i([f[1],b[1]]);f=[y,P],b=[-x,-I]}const j=oe.scaleLinear(f,[0,1]),C=oe.scaleLinear(b,[0,1]),D=n.map(([y,x])=>{if(i){const[P,I]=i([y,x]);return[j(P),C(-I)]}else return[j(y),C(x)]});return{contour:s,triangles:{points:n,indices:m,uvs:D}}}const ce=new a.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function q(r,e,t,i){const s=r.map(o=>o.map(([c,n])=>{if(i){const[l,u]=i([c,n]);return[l,-u,e]}return t?Z.polar2Cartesian(c,n,e):[c,n,e]}));return Y.flatten(s)}function ze(r,e,t,i,s){const{vertices:o,holes:c}=q(r,e,i,s),{vertices:n}=q(r,t,i,s),l=z.merge([n,o]),u=Math.round(n.length/3),v=new Set(c);let d=0;const p=[];for(let m=0;m<u;m++){let f=m+1;if(f===u)f=d;else if(v.has(f)){const b=f;f=d,d=b}p.push(m,m+u,f+u),p.push(f+u,f,m)}const h=[];for(let m=1;m>=0;m--)for(let f=0;f<u;f+=1)h.push(f/(u-1),m);return{indices:p,vertices:l,uvs:h,topVerts:n}}function le(r,e,t,i,s,o){return{indices:i?r.indices:r.indices.slice().reverse(),vertices:q([r.points],e,s,o).vertices,uvs:t}}const me=({polygonGeoJson:r,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:s=!0,hasSide:o=!0,hasBottom:c=!1,hasTop:n=!1,projection:l,bbox:u})=>{r.forEach(j=>{ge(j)||j.reverse()});const{contour:v,triangles:d}=Le(r,{resolution:i,bbox:u,projection:l});let p={},h;o&&(p=ze(v,e!=null?e:t,t!=null?t:e,s,l),h=p.topVerts);let m=[];(c||n)&&(m=z.merge(d.uvs));let f={};c&&(f=le(d,e,m,!1,s,l));let b={};return n&&(b=le(d,t,m,!0,s,l)),{contour:v,triangles:d,sideTorso:p,bottomCap:f,topCap:b,topVerts:h}};class Ne extends a.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=L({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:i,hasTop:s,topFirst:o,hasBottom:c,hasSide:n,cartesian:l,userDataRsoOffset:u,projection:v}=this.parameters,{contour:d,sideTorso:p,topVerts:h,bottomCap:m,topCap:f}=me(L({},this.parameters));let b=[],j=[],C=[],D=0;const A=y=>{const x=Math.round(b.length/3),P=C.length;b=b.concat(y.vertices),j=j.concat(y.uvs),C=C.concat(x?y.indices.map(I=>I+x):y.indices),this.addGroup(P,C.length-P,D++)};s&&o&&A(f),n&&(A(p),this.userData.topVerts=u?q(d,i+u,l,v).vertices:h),c&&A(m),s&&!o&&A(f),this.setIndex(C),this[ce]("position",new a.Float32BufferAttribute(b,3)),this[ce]("uv",new a.Float32BufferAttribute(j,2)),this.computeVertexNormals()}}const _e=`
3
+ ${a.vertexShader.replace("gl_PointSize = size;","gl_PointSize = size * scaleAtt;")}
4
+ `},new o.Points(t,s)},Oe=(n,e)=>{const t=new o.Object3D;e.forEach((i,s)=>{const a=Z.parseVector3(i.position),l=Z.parseVector3(i.scale||[1,1,1]);t.position.copy(a),t.scale.copy(l),t.updateMatrix();const r=t.matrix.clone();if(n instanceof o.InstancedMesh||n.isInstantiate)n.setMatrixAt(s,r);else if(n instanceof o.Points||n.type==="Points"){const u=n.geometry,v=u.attributes.position.array,d=u.attributes.scaleAtt.array,p=new o.Vector3,h=new o.Vector3,m=new o.Quaternion,f=s*3,b=s*1;r.decompose(p,m,h),v[f]=p.x,v[f+1]=p.y,v[f+2]=p.z,d[b]=Math.max(h.x,h.y,h.z),u.attributes.position.needsUpdate=!0,u.attributes.scaleAtt.needsUpdate=!0}})};class De{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const i=this.lead.handlePick([this],e,t);this.onPointerIndex.push(i)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerLeave(e){this.onPointerEvent("leave",e)}onPointerMove(e){this.onPointerEvent("move",e)}onPointerDown(e){this.onPointerEvent("down",e)}dispose(){this.onPointerIndex.forEach(e=>{this.lead.removePick(e)})}}class Ve extends De{constructor(){super(...arguments),this.userData={},this.materialList={},this.useMaterialType="origin",this.disposeMaterialIfNotUsed=!0}cloneMaterial(){const e=this.object3d;if(!e||!e.material)return;const t=e.material;if(Array.isArray(t))return t.map(i=>{const s=i.userData;i.userData={};const a=i.clone();return i.userData=s,a});{const i=t.userData;t.userData={};const s=t.clone();return t.userData=i,s}}setMaterialList(e,t){const i=this.object3d;if(!i||!i.material)return;this.materialList.origin||(this.materialList.origin=i.material);const s=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=s,s}useMaterial(e){const t=this.object3d;!t||!t.material||this.useMaterialType===e||!this.materialList[e]||(this.useMaterialType=e,t.material=this.materialList[e])}useMListById(e,t){if(!this.mList)return;const i=this.mList.get(e);if(!i)return;const s=this.object3d;Array.isArray(s.material)&&t!==void 0?s.material[t]=i:s.material=i}useMListByName(e,t){if(!this.mList)return;const i=this.mList.getKeyByName(e);i&&this.useMListById(i,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class R extends Ve{constructor(){super(...arguments),this.key="",this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,this.disposeTrack=!0}get parent(){const e=this.object3d.parent;return e&&this.lead.objMap.get(e)||null}get children(){return this.object3d.children.map(e=>this.lead.objMap.get(e)).filter(e=>!!e)}get position(){return this.object3d.position}get rotation(){return this.object3d.rotation}get scale(){return this.object3d.scale}lookAt(e){const t=e instanceof o.Vector3?e:new o.Vector3(...e);this.object3d.lookAt(t)}add(...e){[...e].forEach(t=>{this.lead.objMap.get(t)?this.object3d.add(t):this.lead.createBaseObject(t,{target:this})})}remove(...e){[...e].forEach(t=>{var i;this.lead.objMap.get(t)?(i=this.lead.objMap.get(t))==null||i.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}get visibleWithAncestors(){if(this.visible){let e=this.parent;for(;e;){if(!e.visible)return!1;e=e.parent}return!0}else return!1}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.object3d.layers.set(Ce),this.isBloom&&this.enableBloom(),this}hide(){return this.object3d.visible=!1,this.object3d.layers.set(Pe),this}createGroup(){return this.object3d=new o.Group,this}createMesh(...e){return this.object3d=new o.Mesh(...e),this}createPoints(...e){return this.object3d=new o.Points(...e),this}createCSS2DObject(e){return this.object3d=new je.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ae.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ae.CSS3DSprite(e),this}createSprite(e){return this.object3d=new o.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new o.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new o.Vector3),center:e.getCenter(new o.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return ne(this,null,function*(){var u,v;const t=(u=e==null?void 0:e.recursive)!=null?u:!0,i=(v=e==null?void 0:e.cloneMaterial)!=null?v:!1,{objectType:s,objectOptions:a}=this;let l=e==null?void 0:e.create,r,c=(e==null?void 0:e.target)||this.parent;return c===this.lead.prefabGroup&&(c=this.lead.group),this.objectType==="BaseObject"?r=this.lead.createBaseObject(this.object3d.clone(!1),{target:c}):(l===void 0&&(l=d=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const h=e.instancedAttr.length;if(this.object3d instanceof o.Sprite)d.object3d=Be(this.object3d,h);else{const m=this.object3d,f=i?this.cloneMaterial():m.material;d.object3d=new o.InstancedMesh(m.geometry,f,h)}Oe(d.object3d,e==null?void 0:e.instancedAttr)}else d.object3d=this.object3d.clone(!1),i&&d.object3d.material&&(d.object3d.material=this.cloneMaterial());d.object3d.userData.prefab&&delete d.object3d.userData.prefab}}),r=yield this.lead.draw(s,$(L({},a||{}),{create:l,prefab:!1,keyType:this.keyType,key:(e==null?void 0:e.key)||this.keyName,uId:(e==null?void 0:e.uId)||this.keyUId,target:c}))),this.isBloom&&r.enableBloom(),t&&(yield Promise.all(this.children.map(d=>d.instantiate({key:d.keyUId&&d.keyName?`${d.keyName}-${d.keyUId}`:d.keyName,uId:e==null?void 0:e.uId,cloneMaterial:i,target:r})))),r.isInstantiate=!0,r})}erase(){this.lead.erase(this)}handleMaterialChange(e){}enableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!0),this.isBloom=!0}disableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!1),this.isBloom=!1}dispose(){var e;if(super.dispose(),(e=this.pencil.composerController)==null||e.bloomSelection.delete(this),this.lead&&(this.lead.objects.delete(this.key),this.lead.objectWrapChindIdMap.delete(this),this.object3d&&this.lead.objMap.delete(this.object3d)),this.disposeTrack){const t=new pe;t.disposeMaterial=!1,t.track(this),t.dispose()}}}function Te(n,e){return n.map(t=>{const i=[];let s;return t.forEach(a=>{if(s){const l=N.geoDistance(a,s)*180/Math.PI;if(l>e){const r=N.geoInterpolate(s,a),c=1/Math.ceil(l/e);let u=c;for(;u<1;)i.push(r(u)),u+=c}}i.push(s=a)}),i})}function Ee(n,{minLng:e,maxLng:t,minLat:i,maxLat:s}={}){const a=Math.round(se(360/n,2)/Math.PI),l=(1+Math.sqrt(5))/2,r=h=>h/l*360%360-180,c=h=>Math.acos(2*h/a-1)/Math.PI*180-90,u=h=>a*(Math.cos((h+90)*Math.PI/180)+1)/2,v=[s!==void 0?Math.ceil(u(s)):0,i!==void 0?Math.floor(u(i)):a-1],d=e===void 0&&t===void 0?()=>!0:e===void 0?h=>h<=t:t===void 0?h=>h>=e:t>=e?h=>h>=e&&h<=t:h=>h>=e||h<=t,p=[];for(let h=v[0];h<=v[1];h++){const m=r(h);d(m)&&p.push([m,c(h)])}return p}function H(n,e,t=!1){return t?N.geoContains(e,n):we(n,e)}function ze(n,e){const t={type:"Polygon",coordinates:n},[[i,s],[a,l]]=N.geoBounds(t);if(Math.min(Math.abs(a-i),Math.abs(l-s))<e)return[];const r=i>a||l>=89||s<=-89;return Ee(e,{minLng:i,maxLng:a,minLat:s,maxLat:l}).filter(c=>H(c,t,r))}function Le(n,{resolution:e=1/0,bbox:t,projection:i}={}){const s=Te(n,e),a=k.merge(s),l=ze(n,e),r=[...a,...l],c={type:"Polygon",coordinates:n},[[u,v],[d,p]]=N.geoBounds(c),h=u>d||p>=89||v<=-89;let m=[];if(h){const g=xe.geoVoronoi(r).triangles(),S=new Map(r.map(([P,I],E)=>[`${P}-${I}`,E]));g.features.forEach(P=>{const I=P.geometry.coordinates[0].slice(0,3).reverse(),E=[];if(I.forEach(([B,F])=>{const W=`${B}-${F}`;S.has(W)&&E.push(S.get(W))}),E.length===3){if(E.some(B=>B<a.length)){const B=P.properties.circumcenter;if(!H(B,c,h))return}m.push(...E)}})}else if(l.length){const g=Me.from(r);for(let S=0,P=g.triangles.length;S<P;S+=3){const I=[2,1,0].map(B=>g.triangles[S+B]),E=I.map(B=>r[B]);if(I.some(B=>B<a.length)){const B=[0,1].map(F=>k.mean(E,W=>W[F]));if(!H(B,c,h))continue}m.push(...I)}}else{const{vertices:g,holes:S=[]}=Y.flatten(s);m=Y(g,S,2)}let f=t?[t[0],t[2]]:k.extent(r,g=>g[0]),b=t?[t[1],t[3]]:k.extent(r,g=>g[1]);if(i){const[g,S]=i([f[0],b[0]]),[P,I]=i([f[1],b[1]]);f=[g,P],b=[-S,-I]}const j=oe.scaleLinear(f,[0,1]),C=oe.scaleLinear(b,[0,1]),O=r.map(([g,S])=>{if(i){const[P,I]=i([g,S]);return[j(P),C(-I)]}else return[j(g),C(S)]});return{contour:s,triangles:{points:r,indices:m,uvs:O}}}const ce=new o.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function q(n,e,t,i){const s=n.map(a=>a.map(([l,r])=>{if(i){const[c,u]=i([l,r]);return[c,-u,e]}return t?Z.polar2Cartesian(l,r,e):[l,r,e]}));return Y.flatten(s)}function ke(n,e,t,i,s){const{vertices:a,holes:l}=q(n,e,i,s),{vertices:r}=q(n,t,i,s),c=k.merge([r,a]),u=Math.round(r.length/3),v=new Set(l);let d=0;const p=[];for(let m=0;m<u;m++){let f=m+1;if(f===u)f=d;else if(v.has(f)){const b=f;f=d,d=b}p.push(m,m+u,f+u),p.push(f+u,f,m)}const h=[];for(let m=1;m>=0;m--)for(let f=0;f<u;f+=1)h.push(f/(u-1),m);return{indices:p,vertices:c,uvs:h,topVerts:r}}function le(n,e,t,i,s,a){return{indices:i?n.indices:n.indices.slice().reverse(),vertices:q([n.points],e,s,a).vertices,uvs:t}}const me=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:s=!0,hasSide:a=!0,hasBottom:l=!1,hasTop:r=!1,projection:c,bbox:u})=>{n.forEach(j=>{ge(j)||j.reverse()});const{contour:v,triangles:d}=Le(n,{resolution:i,bbox:u,projection:c});let p={},h;a&&(p=ke(v,e!=null?e:t,t!=null?t:e,s,c),h=p.topVerts);let m=[];(l||r)&&(m=k.merge(d.uvs));let f={};l&&(f=le(d,e,m,!1,s,c));let b={};return r&&(b=le(d,t,m,!0,s,c)),{contour:v,triangles:d,sideTorso:p,bottomCap:f,topCap:b,topVerts:h}};class Ne extends o.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=L({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:i,hasTop:s,topFirst:a,hasBottom:l,hasSide:r,cartesian:c,userDataRsoOffset:u,projection:v}=this.parameters,{contour:d,sideTorso:p,topVerts:h,bottomCap:m,topCap:f}=me(L({},this.parameters));let b=[],j=[],C=[],O=0;const A=g=>{const S=Math.round(b.length/3),P=C.length;b=b.concat(g.vertices),j=j.concat(g.uvs),C=C.concat(S?g.indices.map(I=>I+S):g.indices),this.addGroup(P,C.length-P,O++)};s&&a&&A(f),r&&(A(p),this.userData.topVerts=u?q(d,i+u,c,v).vertices:h),l&&A(m),s&&!a&&A(f),this.setIndex(C),this[ce]("position",new o.Float32BufferAttribute(b,3)),this[ce]("uv",new o.Float32BufferAttribute(j,2)),this.computeVertexNormals()}}const We=`
5
5
  #include <fog_pars_fragment>
6
6
  #include <logdepthbuf_pars_fragment>
7
7
 
@@ -45,7 +45,7 @@ void main() {
45
45
  #include <tonemapping_fragment>
46
46
  #include <colorspace_fragment>
47
47
  }
48
- `,We=`
48
+ `,Ue=`
49
49
  #include <common>
50
50
  #include <logdepthbuf_pars_vertex>
51
51
  #include <fog_pars_vertex>
@@ -137,4 +137,4 @@ void main() {
137
137
  #include <logdepthbuf_vertex>
138
138
  #include <fog_vertex>
139
139
  }
140
- `;class Ue extends a.ShaderMaterial{constructor(e={}){const C=e,{lineWidth:t=1,color:i="#ffffff",opacity:s=1,map:o=null,dashOffset:c=0,dashArray:n=0,dashRatio:l=0,sizeAttenuation:u=!0,offsetLoop:v=!0,offset:d=new a.Vector2(0,0),scaleDown:p=0,alphaMap:h=void 0,alphaTest:m=0,repeat:f=new a.Vector2(1,1),resolution:b=new a.Vector2(1,1)}=C,j=re(C,["lineWidth","color","opacity","map","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super($(L({},j),{uniforms:{lineWidth:{value:t},color:{value:new a.Color(i)},opacity:{value:s},map:{value:o},useMap:{value:o?1:0},resolution:{value:b},sizeAttenuation:{value:u?1:0},offset:{value:d},offsetLoop:{value:v?1:0},dashArray:{value:n},dashOffset:{value:c},dashRatio:{value:l},useDash:{value:n>0?1:0},scaleDown:{value:p/10},alphaTest:{value:m},alphaMap:{value:h},useAlphaMap:{value:h?1:0},repeat:{value:f}},vertexShader:We,fragmentShader:_e})),this.type="MeshLineMaterial"}get color(){return this.uniforms.color.value}set color(e){this.uniforms.color.value=new a.Color(e)}get opacity(){var e;return((e=this.uniforms)==null?void 0:e.opacity.value)||1}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms&&(this.uniforms.alphaTest.value=e)}get map(){return this.uniforms.map.value}set map(e){this.uniforms.map.value=e,this.uniforms.useMap.value=e?1:0}get repeat(){return this.uniforms.repeat.value}set repeat(e){this.uniforms.repeat.value.copy(e)}get lineWidth(){return this.uniforms.lineWidth.value}set lineWidth(e){this.uniforms.lineWidth.value=e}get sizeAttenuation(){return this.uniforms.sizeAttenuation.value===1}set sizeAttenuation(e){this.uniforms.sizeAttenuation.value=e?1:0}}const K=new a.Vector4,ue=new a.Vector3,de=new a.Vector3,g=new a.Vector4,M=new a.Vector4,V=new a.Vector4,Q=new a.Vector3,X=new a.Matrix4,w=new a.Line3,he=new a.Vector3,U=new a.Box3,G=new a.Sphere,O=new a.Vector4;let T,k;function fe(r,e,t){return O.set(0,0,-e,1).applyMatrix4(r.projectionMatrix),O.multiplyScalar(1/O.w),O.x=k/t.width,O.y=k/t.height,O.applyMatrix4(r.projectionMatrixInverse),O.multiplyScalar(1/O.w),Math.abs(Math.max(O.x,O.y))}function Ge(r,e){const t=r.matrixWorld,i=r.geometry,s=i.attributes.instanceStart,o=i.attributes.instanceEnd,c=Math.min(i.instanceCount,s.count);for(let n=0,l=c;n<l;n++){w.start.fromBufferAttribute(s,n),w.end.fromBufferAttribute(o,n),w.applyMatrix4(t);const u=new a.Vector3,v=new a.Vector3;T.distanceSqToSegment(w.start,w.end,v,u),v.distanceTo(u)<k*.5&&e.push({point:v,pointOnLine:u,distance:T.origin.distanceTo(v),object:r,face:null,faceIndex:n,uv:null,uv1:null})}}function Re(r,e,t){const i=e.projectionMatrix,o=r.material.resolution,c=r.matrixWorld,n=r.geometry,l=n.attributes.instanceStart,u=n.attributes.instanceEnd,v=Math.min(n.instanceCount,l.count),d=-e.near;T.at(1,V),V.w=1,V.applyMatrix4(e.matrixWorldInverse),V.applyMatrix4(i),V.multiplyScalar(1/V.w),V.x*=o.x/2,V.y*=o.y/2,V.z=0,Q.copy(V),X.multiplyMatrices(e.matrixWorldInverse,c);for(let p=0,h=v;p<h;p++){if(g.fromBufferAttribute(l,p),M.fromBufferAttribute(u,p),g.w=1,M.w=1,g.applyMatrix4(X),M.applyMatrix4(X),g.z>d&&M.z>d)continue;if(g.z>d){const D=g.z-M.z,A=(g.z-d)/D;g.lerp(M,A)}else if(M.z>d){const D=M.z-g.z,A=(M.z-d)/D;M.lerp(g,A)}g.applyMatrix4(i),M.applyMatrix4(i),g.multiplyScalar(1/g.w),M.multiplyScalar(1/M.w),g.x*=o.x/2,g.y*=o.y/2,M.x*=o.x/2,M.y*=o.y/2,w.start.copy(g),w.start.z=0,w.end.copy(M),w.end.z=0;const f=w.closestPointToPointParameter(Q,!0);w.at(f,he);const b=a.MathUtils.lerp(g.z,M.z,f),j=b>=-1&&b<=1,C=Q.distanceTo(he)<k*.5;if(j&&C){w.start.fromBufferAttribute(l,p),w.end.fromBufferAttribute(u,p),w.start.applyMatrix4(c),w.end.applyMatrix4(c);const D=new a.Vector3,A=new a.Vector3;T.distanceSqToSegment(w.start,w.end,A,D),t.push({point:A,pointOnLine:D,distance:T.origin.distanceTo(A),object:r,face:null,faceIndex:p,uv:null,uv1:null})}}}class qe extends a.Mesh{constructor(e=new Se.LineSegmentsGeometry,t){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,i=e.attributes.instanceEnd,s=new Float32Array(2*t.count);for(let c=0,n=0,l=t.count;c<l;c++,n+=2)ue.fromBufferAttribute(t,c),de.fromBufferAttribute(i,c),s[n]=n===0?0:s[n-1],s[n+1]=s[n]+ue.distanceTo(de);const o=new a.InstancedInterleavedBuffer(s,2,1);return e.setAttribute("instanceDistanceStart",new a.InterleavedBufferAttribute(o,1,0)),e.setAttribute("instanceDistanceEnd",new a.InterleavedBufferAttribute(o,1,1)),this}raycast(e,t){const i=this.material.worldUnits,s=e.camera;s===null&&!i&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const o=e.params.Line2!==void 0&&e.params.Line2.threshold||0;T=e.ray;const c=this.matrixWorld,n=this.geometry,l=this.material;k=l.linewidth+o,n.boundingSphere===null&&n.computeBoundingSphere(),G.copy(n.boundingSphere).applyMatrix4(c);let u;if(i)u=k*.5;else{const d=Math.max(s.near,G.distanceToPoint(T.origin));u=fe(s,d,l.resolution)}if(G.radius+=u,T.intersectsSphere(G)===!1)return;n.boundingBox===null&&n.computeBoundingBox(),U.copy(n.boundingBox).applyMatrix4(c);let v;if(i)v=k*.5;else{const d=Math.max(s.near,U.distanceToPoint(T.origin));v=fe(s,d,l.resolution)}U.expandByScalar(v),T.intersectsBox(U)!==!1&&(i?Ge(this,t):Re(this,s,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(K),this.material.uniforms.resolution.value.set(K.z,K.w))}}const S=class S extends R{constructor(e){super(),this.objectType="Node",this.onNodePointerIndex=[],this.options=L({type:"2d"},e)}create(){const{position:e,children:t}=this.options,i=document.createElement("div");this.element=i,t&&i.appendChild(t),this.options.type==="3d"?this.createCSS3DObject(i):this.options.type==="3dSprite"?this.createCSS3DSprite(i):this.createCSS2DObject(i),e&&this.object3d.position.copy(e)}setChildren(e){this.options.children=e,this.element.innerHTML="",this.element.appendChild(e)}showAndEnsureVisible(){const e=this.options.children;e&&(e.style.visibility="hidden",this.show(),setTimeout(()=>{e.style.visibility="",this.ensureVisible()}))}moveElementToViewport(){const e=this.options.children;if(!e)return;const t=e.getBoundingClientRect(),i=window.innerWidth,s=window.innerHeight;let o=0,c=0;t.left<0?o=-t.left:t.right>i&&(o=i-t.right),t.top<0?c=-t.top:t.bottom>s&&(c=s-t.bottom),t.left+o<0&&(o=-t.left),t.top+c<0&&(c=-t.top),(o!==0||c!==0)&&(e.style.transform=`translate(${o}px, ${c}px)`)}ensureVisible(){const e=this.options.children;e&&(e.style.transform&&(e.style.transform=""),S.sharedObserver||(S.sharedObserver=new IntersectionObserver(t=>{t.forEach(i=>{const s=i.target,o=S.observerMap.get(s);o&&i.isIntersecting&&(o.moveElementToViewport(),S.observerMap.delete(s),S.sharedObserver&&S.sharedObserver.unobserve(s))})})),S.observerMap.set(e,this),S.sharedObserver.observe(e))}onPointerEvent(e,t){const i=this.lead.handlePickNode([this],e,t);this.onNodePointerIndex.push(i)}dispose(){const e=this.options.children;e&&S.sharedObserver&&(S.observerMap.delete(e),S.sharedObserver.unobserve(e)),this.onNodePointerIndex.forEach(t=>{this.lead.removePickNode(t)}),super.dispose()}};S.observerMap=new WeakMap;let H=S;exports.BLOOM_SCENE=Ae;exports.BaseObject=R;exports.IS_DEV=Ie;exports.LineSegments2=qe;exports.MeshLineMaterial=Ue;exports.Node=H;exports.PolygonGeometry=Ne;exports.ResourceTracker=pe;exports.getMetas=me;
140
+ `;class _e extends o.ShaderMaterial{constructor(e={}){const C=e,{lineWidth:t=1,color:i="#ffffff",opacity:s=1,map:a=null,dashOffset:l=0,dashArray:r=0,dashRatio:c=0,sizeAttenuation:u=!0,offsetLoop:v=!0,offset:d=new o.Vector2(0,0),scaleDown:p=0,alphaMap:h=void 0,alphaTest:m=0,repeat:f=new o.Vector2(1,1),resolution:b=new o.Vector2(1,1)}=C,j=re(C,["lineWidth","color","opacity","map","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super($(L({},j),{uniforms:{lineWidth:{value:t},color:{value:new o.Color(i)},opacity:{value:s},map:{value:a},useMap:{value:a?1:0},resolution:{value:b},sizeAttenuation:{value:u?1:0},offset:{value:d},offsetLoop:{value:v?1:0},dashArray:{value:r},dashOffset:{value:l},dashRatio:{value:c},useDash:{value:r>0?1:0},scaleDown:{value:p/10},alphaTest:{value:m},alphaMap:{value:h},useAlphaMap:{value:h?1:0},repeat:{value:f}},vertexShader:Ue,fragmentShader:We})),this.type="MeshLineMaterial"}get color(){return this.uniforms.color.value}set color(e){this.uniforms.color.value=new o.Color(e)}get opacity(){var e;return((e=this.uniforms)==null?void 0:e.opacity.value)||1}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms&&(this.uniforms.alphaTest.value=e)}get map(){return this.uniforms.map.value}set map(e){this.uniforms.map.value=e,this.uniforms.useMap.value=e?1:0}get repeat(){return this.uniforms.repeat.value}set repeat(e){this.uniforms.repeat.value.copy(e)}get lineWidth(){return this.uniforms.lineWidth.value}set lineWidth(e){this.uniforms.lineWidth.value=e}get sizeAttenuation(){return this.uniforms.sizeAttenuation.value===1}set sizeAttenuation(e){this.uniforms.sizeAttenuation.value=e?1:0}}const K=new o.Vector4,ue=new o.Vector3,de=new o.Vector3,M=new o.Vector4,w=new o.Vector4,D=new o.Vector4,Q=new o.Vector3,X=new o.Matrix4,x=new o.Line3,he=new o.Vector3,_=new o.Box3,G=new o.Sphere,V=new o.Vector4;let T,z;function fe(n,e,t){return V.set(0,0,-e,1).applyMatrix4(n.projectionMatrix),V.multiplyScalar(1/V.w),V.x=z/t.width,V.y=z/t.height,V.applyMatrix4(n.projectionMatrixInverse),V.multiplyScalar(1/V.w),Math.abs(Math.max(V.x,V.y))}function Ge(n,e){const t=n.matrixWorld,i=n.geometry,s=i.attributes.instanceStart,a=i.attributes.instanceEnd,l=Math.min(i.instanceCount,s.count);for(let r=0,c=l;r<c;r++){x.start.fromBufferAttribute(s,r),x.end.fromBufferAttribute(a,r),x.applyMatrix4(t);const u=new o.Vector3,v=new o.Vector3;T.distanceSqToSegment(x.start,x.end,v,u),v.distanceTo(u)<z*.5&&e.push({point:v,pointOnLine:u,distance:T.origin.distanceTo(v),object:n,face:null,faceIndex:r,uv:null,uv1:null})}}function Re(n,e,t){const i=e.projectionMatrix,a=n.material.resolution,l=n.matrixWorld,r=n.geometry,c=r.attributes.instanceStart,u=r.attributes.instanceEnd,v=Math.min(r.instanceCount,c.count),d=-e.near;T.at(1,D),D.w=1,D.applyMatrix4(e.matrixWorldInverse),D.applyMatrix4(i),D.multiplyScalar(1/D.w),D.x*=a.x/2,D.y*=a.y/2,D.z=0,Q.copy(D),X.multiplyMatrices(e.matrixWorldInverse,l);for(let p=0,h=v;p<h;p++){if(M.fromBufferAttribute(c,p),w.fromBufferAttribute(u,p),M.w=1,w.w=1,M.applyMatrix4(X),w.applyMatrix4(X),M.z>d&&w.z>d)continue;if(M.z>d){const O=M.z-w.z,A=(M.z-d)/O;M.lerp(w,A)}else if(w.z>d){const O=w.z-M.z,A=(w.z-d)/O;w.lerp(M,A)}M.applyMatrix4(i),w.applyMatrix4(i),M.multiplyScalar(1/M.w),w.multiplyScalar(1/w.w),M.x*=a.x/2,M.y*=a.y/2,w.x*=a.x/2,w.y*=a.y/2,x.start.copy(M),x.start.z=0,x.end.copy(w),x.end.z=0;const f=x.closestPointToPointParameter(Q,!0);x.at(f,he);const b=o.MathUtils.lerp(M.z,w.z,f),j=b>=-1&&b<=1,C=Q.distanceTo(he)<z*.5;if(j&&C){x.start.fromBufferAttribute(c,p),x.end.fromBufferAttribute(u,p),x.start.applyMatrix4(l),x.end.applyMatrix4(l);const O=new o.Vector3,A=new o.Vector3;T.distanceSqToSegment(x.start,x.end,A,O),t.push({point:A,pointOnLine:O,distance:T.origin.distanceTo(A),object:n,face:null,faceIndex:p,uv:null,uv1:null})}}}class qe extends o.Mesh{constructor(e=new Se.LineSegmentsGeometry,t){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,i=e.attributes.instanceEnd,s=new Float32Array(2*t.count);for(let l=0,r=0,c=t.count;l<c;l++,r+=2)ue.fromBufferAttribute(t,l),de.fromBufferAttribute(i,l),s[r]=r===0?0:s[r-1],s[r+1]=s[r]+ue.distanceTo(de);const a=new o.InstancedInterleavedBuffer(s,2,1);return e.setAttribute("instanceDistanceStart",new o.InterleavedBufferAttribute(a,1,0)),e.setAttribute("instanceDistanceEnd",new o.InterleavedBufferAttribute(a,1,1)),this}raycast(e,t){const i=this.material.worldUnits,s=e.camera;s===null&&!i&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const a=e.params.Line2!==void 0&&e.params.Line2.threshold||0;T=e.ray;const l=this.matrixWorld,r=this.geometry,c=this.material;z=c.linewidth+a,r.boundingSphere===null&&r.computeBoundingSphere(),G.copy(r.boundingSphere).applyMatrix4(l);let u;if(i)u=z*.5;else{const d=Math.max(s.near,G.distanceToPoint(T.origin));u=fe(s,d,c.resolution)}if(G.radius+=u,T.intersectsSphere(G)===!1)return;r.boundingBox===null&&r.computeBoundingBox(),_.copy(r.boundingBox).applyMatrix4(l);let v;if(i)v=z*.5;else{const d=Math.max(s.near,_.distanceToPoint(T.origin));v=fe(s,d,c.resolution)}_.expandByScalar(v),T.intersectsBox(_)!==!1&&(i?Ge(this,t):Re(this,s,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(K),this.material.uniforms.resolution.value.set(K.z,K.w))}}const y=class y extends R{constructor(e){super(),this.objectType="Node",this.onNodePointerIndex=[],this.options=L({type:"2d"},e)}create(){const{position:e,children:t}=this.options,i=document.createElement("div");this.element=i,t&&i.appendChild(t),this.options.type==="3d"?this.createCSS3DObject(i):this.options.type==="3dSprite"?this.createCSS3DSprite(i):this.createCSS2DObject(i),e&&this.object3d.position.copy(e)}setChildren(e){this.options.children=e,this.element.innerHTML="",this.element.appendChild(e)}showAndEnsureVisible(){const e=this.options.children;e&&(e.style.visibility="hidden",this.show(),setTimeout(()=>{e.style.visibility="",this.ensureVisible()}))}moveElementToViewport(){const e=this.options.children;if(!e)return;const t=e.getBoundingClientRect(),i=window.innerWidth,s=window.innerHeight,a=t.width,l=t.height;let r=0,c=0;a>i?t.left>0&&(r=-t.left):t.left<0?r=-t.left:t.right>i&&(r=i-t.right,t.left+r<0&&(r=-t.left)),l>s?t.top>0&&(c=-t.top):t.top<0?c=-t.top:t.bottom>s&&(c=s-t.bottom,t.top+c<0&&(c=-t.top)),(r!==0||c!==0)&&(e.style.transform=`translate(${r}px, ${c}px)`)}ensureVisible(){const e=this.options.children;e&&(e.style.transform&&(e.style.transform=""),!y.observerMap.has(e)&&(y.sharedObserver||(y.sharedObserver=new IntersectionObserver(t=>{t.forEach(i=>{const s=i.target,a=y.observerMap.get(s);a&&i.isIntersecting&&(a.moveElementToViewport(),y.observerMap.delete(s),y.sharedObserver&&(y.sharedObserver.unobserve(s),y.observerMap.size===0&&(y.sharedObserver.disconnect(),y.sharedObserver=void 0)))})})),y.observerMap.set(e,this),y.sharedObserver.observe(e)))}onPointerEvent(e,t){const i=this.lead.handlePickNode([this],e,t);this.onNodePointerIndex.push(i)}dispose(){const e=this.options.children;e&&y.sharedObserver&&(y.observerMap.delete(e),y.sharedObserver.unobserve(e),y.observerMap.size===0&&(y.sharedObserver.disconnect(),y.sharedObserver=void 0)),this.onNodePointerIndex.forEach(t=>{this.lead.removePickNode(t)}),super.dispose()}};y.observerMap=new Map;let J=y;exports.BLOOM_SCENE=Ae;exports.BaseObject=R;exports.IS_DEV=Ie;exports.LineSegments2=qe;exports.MeshLineMaterial=_e;exports.Node=J;exports.PolygonGeometry=Ne;exports.ResourceTracker=pe;exports.getMetas=me;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gl-draw",
3
- "version": "0.17.0-beta.16",
3
+ "version": "0.17.0-beta.18",
4
4
  "author": "gitplus <hstits@gmail.com>",
5
5
  "scripts": {
6
6
  "start": "bundler-dev",