gl-draw 0.9.0-beta.365 → 0.9.0-beta.366

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.
@@ -1 +1 @@
1
- "use strict";const l=require("three"),d=require("esus-lite"),u=require("three/examples/jsm/renderers/CSS2DRenderer"),c=require("three/examples/jsm/renderers/CSS3DRenderer"),n=require("./disposeMesh.js");require("idb-keyval");require("d3-geo");function b(i){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const e in i)if(e!=="default"){const r=Object.getOwnPropertyDescriptor(i,e);Object.defineProperty(t,e,r.get?r:{enumerable:!0,get:()=>i[e]})}}return t.default=i,Object.freeze(t)}const a=b(l),h=(i,t,e)=>{t&&(n.disposeMesh(t,e),t.children.forEach(r=>{i.has(r)||h(i,r,e)}))};class j{constructor(){this.objectType="BaseObject",this.userData={},this.prefab=!1,this.pm=d.makePromiseCreator(),this.materialList={},this.useMaterialType="origin"}get parent(){const t=this.object3d.parent;return t?this.drawController.objMap.get(t)||this.pencil.scene:null}get children(){return this.object3d.children.map(t=>this.drawController.objMap.get(t)).filter(t=>!!t)}get position(){var t;return(t=this.object3d)==null?void 0:t.position}get rotation(){var t;return(t=this.object3d)==null?void 0:t.rotation}get scale(){var t;return(t=this.object3d)==null?void 0:t.scale}get add(){var t;return(t=this.object3d)==null?void 0:t.add.bind(this.object3d)}get remove(){var t;return(t=this.object3d)==null?void 0:t.remove.bind(this.object3d)}get visible(){return this.object3d?this.object3d.visible:!1}create(){}render(){}update(t,e){}resize(t,e){}show(){return this.object3d&&(this.object3d.visible=!0),this}hide(){return this.object3d&&(this.object3d.visible=!1),this}createMesh(...t){return this.object3d=new a.Mesh(...t),this}createGroup(){return this.object3d=new a.Group,this}createPoints(...t){return this.object3d=new a.Points(...t),this}createCSS2DObject(t){return this.object3d=new u.CSS2DObject(t),this}createCSS3DObject(t){return this.object3d=new c.CSS3DObject(t),this}createCSS3DSprite(t){return this.object3d=new c.CSS3DSprite(t),this}createSprite(t){return this.object3d=new a.Sprite(t),this}attach(...t){return[...t].forEach(e=>{this.object3d.attach(e.object3d),this.drawController!==e.drawController&&(e.drawController.objects.delete(e.key),this.drawController.objects.set(e.key,e))}),this}getSize(){const t=new a.Box3().setFromObject(this.object3d);return{min:t.min,max:t.max,size:t.getSize(new a.Vector3)}}traverse(t){t(this),this.children.forEach(e=>{e.traverse(t)})}clone(){return this.instantiate()}instantiate(){return this.drawController.instantiate(this,{create:t=>{this.object3d&&(t.object3d=this.object3d.clone(!0))}})}erase(){this.drawController.erase(this)}cloneMaterial(){const t=this.object3d;if(!t||!t.material)return;const e=t.material;if(Array.isArray(e))return e.map(r=>{const s=r.userData;r.userData={};const o=r.clone();return r.userData=s,o});{const r=e.userData;e.userData={};const s=e.clone();return e.userData=r,s}}setMaterialList(t,e,r=!0){const s=this.object3d;if(!s||!s.material)return;if(this.materialList.origin||(this.materialList.origin=s.material),!r&&this.materialList[t])return this.materialList[t];const o=e==="clone"?this.cloneMaterial():e;return this.materialList[t]=o,o}useMaterial(t){const e=this.object3d;!e||!e.material||this.useMaterialType===t||!this.materialList[t]||(this.useMaterialType=t,e.material=this.materialList[t])}setTop(t){this.object3d&&(this.object3d.renderOrder=t)}dispose(t=!0){h(this.drawController.objMap,this.object3d,t),t&&Object.keys(this.materialList).forEach(e=>{e!=="origin"&&n.disposeMesh({material:this.materialList[e]})})}}exports.BaseObject=j;
1
+ "use strict";const d=require("three"),l=require("esus-lite"),u=require("three/examples/jsm/renderers/CSS2DRenderer"),n=require("three/examples/jsm/renderers/CSS3DRenderer"),o=require("./disposeMesh.js");require("idb-keyval");require("d3-geo");function b(i){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const t in i)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>i[t]})}}return e.default=i,Object.freeze(e)}const s=b(d),h=(i,e,t)=>{e&&(o.disposeMesh(e,t),e.children.forEach(r=>{i.has(r)||h(i,r,t)}))};class j{constructor(){this.objectType="BaseObject",this.userData={},this.prefab=!1,this.pm=l.makePromiseCreator(),this.materialList={},this.useMaterialType="origin"}get parent(){const e=this.object3d.parent;return e?this.drawController.objMap.get(e)||this.pencil.scene:null}get children(){return this.object3d.children.map(e=>this.drawController.objMap.get(e)).filter(e=>!!e)}get position(){var e;return(e=this.object3d)==null?void 0:e.position}get rotation(){var e;return(e=this.object3d)==null?void 0:e.rotation}get scale(){var e;return(e=this.object3d)==null?void 0:e.scale}get add(){var e;return(e=this.object3d)==null?void 0:e.add.bind(this.object3d)}get remove(){var e;return(e=this.object3d)==null?void 0:e.remove.bind(this.object3d)}get visible(){return this.object3d?this.object3d.visible:!1}create(){}render(){}update(e,t){}resize(e,t){}show(){return this.object3d&&(this.object3d.visible=!0),this}hide(){return this.object3d&&(this.object3d.visible=!1),this}createMesh(...e){return this.object3d=new s.Mesh(...e),this}createGroup(){return this.object3d=new s.Group,this}createPoints(...e){return this.object3d=new s.Points(...e),this}createCSS2DObject(e){return this.object3d=new u.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new n.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new n.CSS3DSprite(e),this}createSprite(e){return this.object3d=new s.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d),this.drawController!==t.drawController&&(t.drawController.objects.delete(t.key),this.drawController.objects.set(t.key,t))}),this}getSize(){const e=new s.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new s.Vector3)}}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}clone(){return this.instantiate()}instantiate(e){return this.drawController.instantiate(this,{create:t=>{this.object3d&&(t.object3d=this.object3d.clone(!0)),typeof e=="number"&&(t.object3d=new s.InstancedMesh(t.object3d.geometry,t.object3d.material,e),t.object3d.instanceMatrix.setUsage(s.DynamicDrawUsage))}})}setInstancedMatrix(e){this.object3d instanceof s.InstancedMesh&&(Object.keys(e).forEach(t=>{this.object3d.setMatrixAt(Number(t),e[t])}),this.object3d.instanceMatrix.needsUpdate=!0,this.object3d.computeBoundingSphere())}erase(){this.drawController.erase(this)}cloneMaterial(){const e=this.object3d;if(!e||!e.material)return;const t=e.material;if(Array.isArray(t))return t.map(r=>{const a=r.userData;r.userData={};const c=r.clone();return r.userData=a,c});{const r=t.userData;t.userData={};const a=t.clone();return t.userData=r,a}}setMaterialList(e,t,r=!0){const a=this.object3d;if(!a||!a.material)return;if(this.materialList.origin||(this.materialList.origin=a.material),!r&&this.materialList[e])return this.materialList[e];const c=t==="clone"?this.cloneMaterial():t;return this.materialList[e]=c,c}useMaterial(e){const t=this.object3d;!t||!t.material||this.useMaterialType===e||!this.materialList[e]||(this.useMaterialType=e,t.material=this.materialList[e])}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}dispose(e=!0){h(this.drawController.objMap,this.object3d,e),e&&Object.keys(this.materialList).forEach(t=>{t!=="origin"&&o.disposeMesh({material:this.materialList[t]})})}}exports.BaseObject=j;
@@ -1,7 +1,7 @@
1
- import * as s from "three";
1
+ import * as i from "three";
2
2
  import { makePromiseCreator as h } from "esus-lite";
3
- import { CSS2DObject as l } from "three/examples/jsm/renderers/CSS2DRenderer";
4
- import { CSS3DObject as d, CSS3DSprite as b } from "three/examples/jsm/renderers/CSS3DRenderer";
3
+ import { CSS2DObject as d } from "three/examples/jsm/renderers/CSS2DRenderer";
4
+ import { CSS3DObject as l, CSS3DSprite as b } from "three/examples/jsm/renderers/CSS3DRenderer";
5
5
  import { d as c } from "./disposeMesh.module.js";
6
6
  import "idb-keyval";
7
7
  import "d3-geo";
@@ -10,7 +10,7 @@ const n = (o, t, e) => {
10
10
  o.has(r) || n(o, r, e);
11
11
  }));
12
12
  };
13
- class S {
13
+ class g {
14
14
  constructor() {
15
15
  this.objectType = "BaseObject", this.userData = {}, this.prefab = !1, this.pm = h(), this.materialList = {}, this.useMaterialType = "origin";
16
16
  }
@@ -59,25 +59,25 @@ class S {
59
59
  return this.object3d && (this.object3d.visible = !1), this;
60
60
  }
61
61
  createMesh(...t) {
62
- return this.object3d = new s.Mesh(...t), this;
62
+ return this.object3d = new i.Mesh(...t), this;
63
63
  }
64
64
  createGroup() {
65
- return this.object3d = new s.Group(), this;
65
+ return this.object3d = new i.Group(), this;
66
66
  }
67
67
  createPoints(...t) {
68
- return this.object3d = new s.Points(...t), this;
68
+ return this.object3d = new i.Points(...t), this;
69
69
  }
70
70
  createCSS2DObject(t) {
71
- return this.object3d = new l(t), this;
71
+ return this.object3d = new d(t), this;
72
72
  }
73
73
  createCSS3DObject(t) {
74
- return this.object3d = new d(t), this;
74
+ return this.object3d = new l(t), this;
75
75
  }
76
76
  createCSS3DSprite(t) {
77
77
  return this.object3d = new b(t), this;
78
78
  }
79
79
  createSprite(t) {
80
- return this.object3d = new s.Sprite(t), this;
80
+ return this.object3d = new i.Sprite(t), this;
81
81
  }
82
82
  attach(...t) {
83
83
  return [...t].forEach((e) => {
@@ -85,11 +85,11 @@ class S {
85
85
  }), this;
86
86
  }
87
87
  getSize() {
88
- const t = new s.Box3().setFromObject(this.object3d);
88
+ const t = new i.Box3().setFromObject(this.object3d);
89
89
  return {
90
90
  min: t.min,
91
91
  max: t.max,
92
- size: t.getSize(new s.Vector3())
92
+ size: t.getSize(new i.Vector3())
93
93
  };
94
94
  }
95
95
  traverse(t) {
@@ -100,13 +100,25 @@ class S {
100
100
  clone() {
101
101
  return this.instantiate();
102
102
  }
103
- instantiate() {
103
+ instantiate(t) {
104
104
  return this.drawController.instantiate(this, {
105
- create: (t) => {
106
- this.object3d && (t.object3d = this.object3d.clone(!0));
105
+ create: (e) => {
106
+ this.object3d && (e.object3d = this.object3d.clone(!0)), typeof t == "number" && (e.object3d = new i.InstancedMesh(
107
+ e.object3d.geometry,
108
+ e.object3d.material,
109
+ t
110
+ ), e.object3d.instanceMatrix.setUsage(i.DynamicDrawUsage));
107
111
  }
108
112
  });
109
113
  }
114
+ setInstancedMatrix(t) {
115
+ this.object3d instanceof i.InstancedMesh && (Object.keys(t).forEach((e) => {
116
+ this.object3d.setMatrixAt(
117
+ Number(e),
118
+ t[e]
119
+ );
120
+ }), this.object3d.instanceMatrix.needsUpdate = !0, this.object3d.computeBoundingSphere());
121
+ }
110
122
  erase() {
111
123
  this.drawController.erase(this);
112
124
  }
@@ -117,23 +129,23 @@ class S {
117
129
  const e = t.material;
118
130
  if (Array.isArray(e))
119
131
  return e.map((r) => {
120
- const i = r.userData;
132
+ const s = r.userData;
121
133
  r.userData = {};
122
134
  const a = r.clone();
123
- return r.userData = i, a;
135
+ return r.userData = s, a;
124
136
  });
125
137
  {
126
138
  const r = e.userData;
127
139
  e.userData = {};
128
- const i = e.clone();
129
- return e.userData = r, i;
140
+ const s = e.clone();
141
+ return e.userData = r, s;
130
142
  }
131
143
  }
132
144
  setMaterialList(t, e, r = !0) {
133
- const i = this.object3d;
134
- if (!i || !i.material)
145
+ const s = this.object3d;
146
+ if (!s || !s.material)
135
147
  return;
136
- if (this.materialList.origin || (this.materialList.origin = i.material), !r && this.materialList[t])
148
+ if (this.materialList.origin || (this.materialList.origin = s.material), !r && this.materialList[t])
137
149
  return this.materialList[t];
138
150
  const a = e === "clone" ? this.cloneMaterial() : e;
139
151
  return this.materialList[t] = a, a;
@@ -158,5 +170,5 @@ class S {
158
170
  }
159
171
  }
160
172
  export {
161
- S as B
173
+ g as B
162
174
  };
@@ -46,7 +46,8 @@ export default class BaseObject {
46
46
  };
47
47
  traverse(fn: (o: IBaseObject) => void): void;
48
48
  clone(): Promise<this>;
49
- instantiate(): Promise<this>;
49
+ instantiate(count?: number): Promise<this>;
50
+ setInstancedMatrix(obj: Record<string, THREE.Matrix4>): void;
50
51
  erase(): void;
51
52
  cloneMaterial(): THREE.Material | THREE.Material[] | undefined;
52
53
  materialList: Record<string, THREE.Material | THREE.Material[]>;
@@ -42,10 +42,11 @@ export declare const defaultToneMappingParams: {
42
42
  averageLuminance: number;
43
43
  adaptationRate: number;
44
44
  };
45
+ type TextureEncoding = 3000 | 3001;
45
46
  export interface ComposerParams {
46
47
  multisampling: number;
47
48
  frameBufferType: THREE.TextureDataType;
48
- encoding: THREE.TextureEncoding;
49
+ encoding: TextureEncoding;
49
50
  }
50
51
  interface Options {
51
52
  renderer: THREE.WebGLRenderer;
@@ -1,4 +1,4 @@
1
- import { ShaderMaterial } from 'three';
1
+ import { ShaderMaterial, WebGLRenderer, WebGLRenderTarget } from 'three';
2
2
  import { Pass } from 'postprocessing';
3
3
  declare class CrossFadeMaterial extends ShaderMaterial {
4
4
  constructor();
@@ -6,6 +6,6 @@ declare class CrossFadeMaterial extends ShaderMaterial {
6
6
  export default class CrossFadePass extends Pass {
7
7
  constructor();
8
8
  fullscreenMaterial: CrossFadeMaterial;
9
- render(renderer: THREE.WebGLRenderer, inputBuffer: THREE.WebGLRenderTarget, outputBuffer: THREE.WebGLRenderTarget): void;
9
+ render(renderer: WebGLRenderer, inputBuffer: WebGLRenderTarget, outputBuffer: WebGLRenderTarget): void;
10
10
  }
11
11
  export {};
@@ -1,4 +1,3 @@
1
- (function(){"use strict";try{if(typeof document!="undefined"){var e=document.createElement("style");e.appendChild(document.createTextNode("")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
1
  "use strict";var O=Object.defineProperty;var P=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var W=Math.pow,z=(a,i,e)=>i in a?O(a,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[i]=e,c=(a,i)=>{for(var e in i||(i={}))_.call(i,e)&&z(a,e,i[e]);if(P)for(var e of P(i))T.call(i,e)&&z(a,e,i[e]);return a};var b=(a,i,e)=>new Promise((t,o)=>{var f=d=>{try{l(e.next(d))}catch(m){o(m)}},r=d=>{try{l(e.throw(d))}catch(m){o(m)}},l=d=>d.done?t(d.value):Promise.resolve(d.value).then(f,r);l((e=e.apply(a,i)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("three"),V=require("@tweenjs/tween.js"),D=require("esus-lite");function j(a){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const e in a)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(a,e);Object.defineProperty(i,e,t.get?t:{enumerable:!0,get:()=>a[e]})}}return i.default=a,Object.freeze(i)}const u=j(A),C=j(V);class E{constructor(i,e={}){this.object=i,this.options=c({color:16777215,opacity:1,lineNum:10,lineWidth:1,lineHieght:10,fade:!1,fadeType:2,radius:0,range:new u.Vector2(0,1),vertical:!1,step:0,pos:"bottom",duration:5e3,yoyo:!1,repeat:0},e)}initMaterial(){const{color:i,lineNum:e,lineWidth:t,lineHieght:o,fade:f,fadeType:r,radius:l,range:d,vertical:m,step:g,opacity:w,exclude:p}=this.options,v={field:{value:new u.Vector4(0,0,0,0)},color:{value:new u.Color(i)},opacity:{value:w},lineNum:{value:e},lineWidth:{value:t},lineHieght:{value:o},sizeNum:{value:new u.Vector3(l,l,l)},objPos:{value:new u.Vector3(0,0,0)},fade:{value:f},fadeType:{value:r},range:{value:d},angle:{value:0},stepNum:{value:g}};if(!l){const{size:h}=this.object.getSize();v.sizeNum.value.copy(h)}this.uniforms=v,this.object.object3d.traverse(h=>{const n=h;!n.material||p&&p.includes(n)||(n.userData.materialO?n.material=n.userData.materialO.clone():n.userData.materialO=Array.isArray(n.material)?n.material.map(s=>s.clone()):n.material.clone(),Array.isArray(n.material)?n.material.forEach(s=>{m?this.setVerticalMaterial(s):this.setMaterial(s)}):m?this.setVerticalMaterial(n.material):this.setMaterial(n.material))})}setMaterial(i){const{uniforms:e}=this;i.onBeforeCompile=t=>{t.uniforms.field=e.field,t.uniforms.fieldColor=e.color,t.uniforms.fieldOpacity=e.opacity,t.uniforms.lineNum=e.lineNum,t.uniforms.lineWidth=e.lineWidth,t.uniforms.sizeNum=e.sizeNum,t.uniforms.fade=e.fade,t.uniforms.fadeType=e.fadeType,t.uniforms.range=e.range,t.uniforms.stepNum=e.stepNum,t.vertexShader=`
3
2
  varying vec4 vWorldPos;
4
3
  ${t.vertexShader}
@@ -1,4 +1,3 @@
1
- (function(){"use strict";try{if(typeof document!="undefined"){var e=document.createElement("style");e.appendChild(document.createTextNode("")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
1
  var S = Object.defineProperty;
3
2
  var z = Object.getOwnPropertySymbols;
4
3
  var O = Object.prototype.hasOwnProperty, _ = Object.prototype.propertyIsEnumerable;
package/dist/events.js CHANGED
@@ -1 +1 @@
1
- "use strict";exports.eventsExports={};var O={get exports(){return exports.eventsExports},set exports(t){exports.eventsExports=t}},a=typeof Reflect=="object"?Reflect:null,h=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},v;a&&typeof a.ownKeys=="function"?v=a.ownKeys:Object.getOwnPropertySymbols?v=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:v=function(e){return Object.getOwnPropertyNames(e)};function C(t){console&&console.warn&&console.warn(t)}var L=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}O.exports=o;exports.eventsExports.once=M;o.EventEmitter=o;o.prototype._events=void 0;o.prototype._eventsCount=0;o.prototype._maxListeners=void 0;var d=10;function l(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return d},set:function(t){if(typeof t!="number"||t<0||L(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");d=t}});o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||L(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function m(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return m(this)};o.prototype.emit=function(e){for(var n=[],r=1;r<arguments.length;r++)n.push(arguments[r]);var i=e==="error",f=this._events;if(f!==void 0)i=i&&f.error===void 0;else if(!i)return!1;if(i){var s;if(n.length>0&&(s=n[0]),s instanceof Error)throw s;var u=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw u.context=s,u}var c=f[e];if(c===void 0)return!1;if(typeof c=="function")h(c,this,n);else for(var p=c.length,x=b(c,p),r=0;r<p;++r)h(x[r],this,n);return!0};function y(t,e,n,r){var i,f,s;if(l(n),f=t._events,f===void 0?(f=t._events=Object.create(null),t._eventsCount=0):(f.newListener!==void 0&&(t.emit("newListener",e,n.listener?n.listener:n),f=t._events),s=f[e]),s===void 0)s=f[e]=n,++t._eventsCount;else if(typeof s=="function"?s=f[e]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),i=m(t),i>0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=s.length,C(u)}return t}o.prototype.addListener=function(e,n){return y(this,e,n,!1)};o.prototype.on=o.prototype.addListener;o.prototype.prependListener=function(e,n){return y(this,e,n,!0)};function j(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function g(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=j.bind(r);return i.listener=n,r.wrapFn=i,i}o.prototype.once=function(e,n){return l(n),this.on(e,g(this,e,n)),this};o.prototype.prependOnceListener=function(e,n){return l(n),this.prependListener(e,g(this,e,n)),this};o.prototype.removeListener=function(e,n){var r,i,f,s,u;if(l(n),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(f=-1,s=r.length-1;s>=0;s--)if(r[s]===n||r[s].listener===n){u=r[s].listener,f=s;break}if(f<0)return this;f===0?r.shift():R(r,f),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,u||n)}return this};o.prototype.off=o.prototype.removeListener;o.prototype.removeAllListeners=function(e){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var f=Object.keys(r),s;for(i=0;i<f.length;++i)s=f[i],s!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(n=r[e],typeof n=="function")this.removeListener(e,n);else if(n!==void 0)for(i=n.length-1;i>=0;i--)this.removeListener(e,n[i]);return this};function _(t,e,n){var r=t._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?N(i):b(i,i.length)}o.prototype.listeners=function(e){return _(this,e,!0)};o.prototype.rawListeners=function(e){return _(this,e,!1)};o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):w.call(t,e)};o.prototype.listenerCount=w;function w(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?v(this._events):[]};function b(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t[r];return n}function R(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}function N(t){for(var e=new Array(t.length),n=0;n<e.length;++n)e[n]=t[n].listener||t[n];return e}function M(t,e){return new Promise(function(n,r){function i(s){t.removeListener(e,f),r(s)}function f(){typeof t.removeListener=="function"&&t.removeListener("error",i),n([].slice.call(arguments))}E(t,e,f,{once:!0}),e!=="error"&&A(t,i,{once:!0})})}function A(t,e,n){typeof t.on=="function"&&E(t,"error",e,n)}function E(t,e,n,r){if(typeof t.on=="function")r.once?t.once(e,n):t.on(e,n);else if(typeof t.addEventListener=="function")t.addEventListener(e,function i(f){r.once&&t.removeEventListener(e,i),n(f)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t)}
1
+ "use strict";var p={exports:{}},a=typeof Reflect=="object"?Reflect:null,d=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},v;a&&typeof a.ownKeys=="function"?v=a.ownKeys:Object.getOwnPropertySymbols?v=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:v=function(e){return Object.getOwnPropertyNames(e)};function C(t){console&&console.warn&&console.warn(t)}var m=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}p.exports=o;p.exports.once=M;o.EventEmitter=o;o.prototype._events=void 0;o.prototype._eventsCount=0;o.prototype._maxListeners=void 0;var L=10;function l(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return L},set:function(t){if(typeof t!="number"||t<0||m(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");L=t}});o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||m(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function y(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return y(this)};o.prototype.emit=function(e){for(var n=[],r=1;r<arguments.length;r++)n.push(arguments[r]);var i=e==="error",f=this._events;if(f!==void 0)i=i&&f.error===void 0;else if(!i)return!1;if(i){var s;if(n.length>0&&(s=n[0]),s instanceof Error)throw s;var u=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw u.context=s,u}var c=f[e];if(c===void 0)return!1;if(typeof c=="function")d(c,this,n);else for(var h=c.length,x=E(c,h),r=0;r<h;++r)d(x[r],this,n);return!0};function g(t,e,n,r){var i,f,s;if(l(n),f=t._events,f===void 0?(f=t._events=Object.create(null),t._eventsCount=0):(f.newListener!==void 0&&(t.emit("newListener",e,n.listener?n.listener:n),f=t._events),s=f[e]),s===void 0)s=f[e]=n,++t._eventsCount;else if(typeof s=="function"?s=f[e]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),i=y(t),i>0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=s.length,C(u)}return t}o.prototype.addListener=function(e,n){return g(this,e,n,!1)};o.prototype.on=o.prototype.addListener;o.prototype.prependListener=function(e,n){return g(this,e,n,!0)};function j(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=j.bind(r);return i.listener=n,r.wrapFn=i,i}o.prototype.once=function(e,n){return l(n),this.on(e,_(this,e,n)),this};o.prototype.prependOnceListener=function(e,n){return l(n),this.prependListener(e,_(this,e,n)),this};o.prototype.removeListener=function(e,n){var r,i,f,s,u;if(l(n),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(f=-1,s=r.length-1;s>=0;s--)if(r[s]===n||r[s].listener===n){u=r[s].listener,f=s;break}if(f<0)return this;f===0?r.shift():R(r,f),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,u||n)}return this};o.prototype.off=o.prototype.removeListener;o.prototype.removeAllListeners=function(e){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var f=Object.keys(r),s;for(i=0;i<f.length;++i)s=f[i],s!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(n=r[e],typeof n=="function")this.removeListener(e,n);else if(n!==void 0)for(i=n.length-1;i>=0;i--)this.removeListener(e,n[i]);return this};function w(t,e,n){var r=t._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?N(i):E(i,i.length)}o.prototype.listeners=function(e){return w(this,e,!0)};o.prototype.rawListeners=function(e){return w(this,e,!1)};o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):b.call(t,e)};o.prototype.listenerCount=b;function b(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?v(this._events):[]};function E(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t[r];return n}function R(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}function N(t){for(var e=new Array(t.length),n=0;n<e.length;++n)e[n]=t[n].listener||t[n];return e}function M(t,e){return new Promise(function(n,r){function i(s){t.removeListener(e,f),r(s)}function f(){typeof t.removeListener=="function"&&t.removeListener("error",i),n([].slice.call(arguments))}O(t,e,f,{once:!0}),e!=="error"&&A(t,i,{once:!0})})}function A(t,e,n){typeof t.on=="function"&&O(t,"error",e,n)}function O(t,e,n,r){if(typeof t.on=="function")r.once?t.once(e,n):t.on(e,n);else if(typeof t.addEventListener=="function")t.addEventListener(e,function i(f){r.once&&t.removeEventListener(e,i),n(f)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t)}var P=p.exports;exports.eventsExports=P;
@@ -1,11 +1,4 @@
1
- var p = {}, C = {
2
- get exports() {
3
- return p;
4
- },
5
- set exports(t) {
6
- p = t;
7
- }
8
- }, a = typeof Reflect == "object" ? Reflect : null, d = a && typeof a.apply == "function" ? a.apply : function(e, n, r) {
1
+ var p = { exports: {} }, a = typeof Reflect == "object" ? Reflect : null, d = a && typeof a.apply == "function" ? a.apply : function(e, n, r) {
9
2
  return Function.prototype.apply.call(e, n, r);
10
3
  }, l;
11
4
  a && typeof a.ownKeys == "function" ? l = a.ownKeys : Object.getOwnPropertySymbols ? l = function(e) {
@@ -13,7 +6,7 @@ a && typeof a.ownKeys == "function" ? l = a.ownKeys : Object.getOwnPropertySymbo
13
6
  } : l = function(e) {
14
7
  return Object.getOwnPropertyNames(e);
15
8
  };
16
- function j(t) {
9
+ function C(t) {
17
10
  console && console.warn && console.warn(t);
18
11
  }
19
12
  var m = Number.isNaN || function(e) {
@@ -22,8 +15,8 @@ var m = Number.isNaN || function(e) {
22
15
  function o() {
23
16
  o.init.call(this);
24
17
  }
25
- C.exports = o;
26
- p.once = A;
18
+ p.exports = o;
19
+ p.exports.once = M;
27
20
  o.EventEmitter = o;
28
21
  o.prototype._events = void 0;
29
22
  o.prototype._eventsCount = 0;
@@ -94,7 +87,7 @@ function g(t, e, n, r) {
94
87
  else if (typeof s == "function" ? s = f[e] = r ? [n, s] : [s, n] : r ? s.unshift(n) : s.push(n), i = y(t), i > 0 && s.length > i && !s.warned) {
95
88
  s.warned = !0;
96
89
  var u = new Error("Possible EventEmitter memory leak detected. " + s.length + " " + String(e) + " listeners added. Use emitter.setMaxListeners() to increase limit");
97
- u.name = "MaxListenersExceededWarning", u.emitter = t, u.type = e, u.count = s.length, j(u);
90
+ u.name = "MaxListenersExceededWarning", u.emitter = t, u.type = e, u.count = s.length, C(u);
98
91
  }
99
92
  return t;
100
93
  }
@@ -105,12 +98,12 @@ o.prototype.on = o.prototype.addListener;
105
98
  o.prototype.prependListener = function(e, n) {
106
99
  return g(this, e, n, !0);
107
100
  };
108
- function R() {
101
+ function j() {
109
102
  if (!this.fired)
110
103
  return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, arguments.length === 0 ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
111
104
  }
112
105
  function _(t, e, n) {
113
- var r = { fired: !1, wrapFn: void 0, target: t, type: e, listener: n }, i = R.bind(r);
106
+ var r = { fired: !1, wrapFn: void 0, target: t, type: e, listener: n }, i = j.bind(r);
114
107
  return i.listener = n, r.wrapFn = i, i;
115
108
  }
116
109
  o.prototype.once = function(e, n) {
@@ -135,7 +128,7 @@ o.prototype.removeListener = function(e, n) {
135
128
  }
136
129
  if (f < 0)
137
130
  return this;
138
- f === 0 ? r.shift() : N(r, f), r.length === 1 && (i[e] = r[0]), i.removeListener !== void 0 && this.emit("removeListener", e, u || n);
131
+ f === 0 ? r.shift() : R(r, f), r.length === 1 && (i[e] = r[0]), i.removeListener !== void 0 && this.emit("removeListener", e, u || n);
139
132
  }
140
133
  return this;
141
134
  };
@@ -164,7 +157,7 @@ function w(t, e, n) {
164
157
  if (r === void 0)
165
158
  return [];
166
159
  var i = r[e];
167
- return i === void 0 ? [] : typeof i == "function" ? n ? [i.listener || i] : [i] : n ? M(i) : E(i, i.length);
160
+ return i === void 0 ? [] : typeof i == "function" ? n ? [i.listener || i] : [i] : n ? N(i) : E(i, i.length);
168
161
  }
169
162
  o.prototype.listeners = function(e) {
170
163
  return w(this, e, !0);
@@ -195,17 +188,17 @@ function E(t, e) {
195
188
  n[r] = t[r];
196
189
  return n;
197
190
  }
198
- function N(t, e) {
191
+ function R(t, e) {
199
192
  for (; e + 1 < t.length; e++)
200
193
  t[e] = t[e + 1];
201
194
  t.pop();
202
195
  }
203
- function M(t) {
196
+ function N(t) {
204
197
  for (var e = new Array(t.length), n = 0; n < e.length; ++n)
205
198
  e[n] = t[n].listener || t[n];
206
199
  return e;
207
200
  }
208
- function A(t, e) {
201
+ function M(t, e) {
209
202
  return new Promise(function(n, r) {
210
203
  function i(s) {
211
204
  t.removeListener(e, f), r(s);
@@ -213,10 +206,10 @@ function A(t, e) {
213
206
  function f() {
214
207
  typeof t.removeListener == "function" && t.removeListener("error", i), n([].slice.call(arguments));
215
208
  }
216
- O(t, e, f, { once: !0 }), e !== "error" && P(t, i, { once: !0 });
209
+ O(t, e, f, { once: !0 }), e !== "error" && A(t, i, { once: !0 });
217
210
  });
218
211
  }
219
- function P(t, e, n) {
212
+ function A(t, e, n) {
220
213
  typeof t.on == "function" && O(t, "error", e, n);
221
214
  }
222
215
  function O(t, e, n, r) {
@@ -229,6 +222,7 @@ function O(t, e, n, r) {
229
222
  else
230
223
  throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof t);
231
224
  }
225
+ var P = p.exports;
232
226
  export {
233
- p as e
227
+ P as e
234
228
  };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var U=Object.defineProperty,W=Object.defineProperties;var X=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var L=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var A=(n,e,t)=>e in n?U(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,g=(n,e)=>{for(var t in e||(e={}))L.call(e,t)&&A(n,t,e[t]);if(M)for(var t of M(e))B.call(e,t)&&A(n,t,e[t]);return n},y=(n,e)=>W(n,X(e));var T=(n,e)=>{var t={};for(var s in n)L.call(n,s)&&e.indexOf(s)<0&&(t[s]=n[s]);if(n!=null&&M)for(var s of M(n))e.indexOf(s)<0&&B.call(n,s)&&(t[s]=n[s]);return t};Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const D=require("camera-controls"),R=require("three"),$=require("@tweenjs/tween.js"),k=require("./events.js"),Y=require("deepmerge"),Z=require("three/examples/jsm/libs/stats.module"),J=require("lil-gui"),z=require("./colorCorrection.js"),K=require("./disposeMesh.js");require("idb-keyval");require("esus-lite");require("d3-geo");const F=require("./MeshLineMaterial.js"),Q=require("three/examples/jsm/helpers/RectAreaLightHelper"),ee=require("three/examples/jsm/controls/TransformControls"),te=require("three/examples/jsm/renderers/CSS3DRenderer"),se=require("three/examples/jsm/renderers/CSS2DRenderer"),u=require("postprocessing"),re=require("./isPlainObject.js"),ne=require("./BaseObject.js");function H(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const h=H(R),q=H($),oe={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputEncoding:z.TextureEncoding.Linear,outputColorSpace:z.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1,physicallyCorrectLights:!1};class ie{constructor(e){this.options=e;const{width:t,height:s,rendererParams:r}=e,{canvas:o,context:i,alpha:c,devicePixelRatio:a,antialias:l,powerPreference:d,toneMappingExposure:m,outputEncoding:p,outputColorSpace:C,logarithmicDepthBuffer:P,preserveDrawingBuffer:f,stencil:w,depth:b,physicallyCorrectLights:E}=r,v=new h.WebGLRenderer({canvas:o,context:i,alpha:c,antialias:l,powerPreference:d,logarithmicDepthBuffer:P,preserveDrawingBuffer:f,stencil:w,depth:b});if(v.setSize(t,s),v.setPixelRatio(a),v.toneMappingExposure=m,+h.REVISION<152?v.outputEncoding=p:v.outputColorSpace=C,+h.REVISION<155){const _=+h.REVISION<150?"physicallyCorrectLights":"useLegacyLights";v[_]=E}this.renderer=v}setSize(e,t){this.renderer.setSize(e,t)}render(){const{scene:e,camera:t}=this.options;this.renderer.render(e,t)}dispose(){var e,t,s;(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.renderLists.dispose()}}class x{constructor(e){this.guiParams={},e&&(this.guiParams=e)}showGui(e){e&&Object.keys(this.guiParams).forEach(t=>{const s=e.addFolder(t),r=this.guiParams[t];Object.keys(r).forEach(o=>{const{min:i,max:c,step:a,name:l,paramMap:d,items:m,value:p,target:C}=r[o],P=o.toLowerCase().indexOf("color")>-1;let f;const w=typeof p=="undefined"&&C,b=w?C():r[o],E=w?o:"value";m?f=s.add(b,E,m):P?f=s.addColor(b,E):f=s.add(b,E),f=f.name(l||o),typeof i!="undefined"&&(f=f.min(i)),typeof c!="undefined"&&(f=f.max(c)),typeof a!="undefined"&&(f=f.step(a)),f=f.onChange(()=>{this.setTargetValue(t,o,b[E],d)}),w&&f.listen()})})}setTargetValue(e,t,s,r){const{onChange:o,target:i,value:c}=this.guiParams[e][t],a=t.toLowerCase().indexOf("color")>-1;if(i&&!(typeof c=="undefined"&&i)){let d=i();Array.isArray(d)||(d=[d]),d.forEach(m=>{if(m)if(a)try{m[r||t].set(s)}catch(p){t!=="color"&&!r&&console.warn(`${t} is not a color,set paramMap`)}else m[r||t]=s})}o&&o(s)}setTargetValueByParams(){Object.keys(this.guiParams).forEach(e=>{Object.keys(this.guiParams[e]).forEach(t=>{const s=this.guiParams[e][t];typeof s.value!="undefined"&&this.setTargetValue(e,t,s.value,s.paramMap)})})}}const ae={fov:45,near:1,far:1e3,up:new h.Vector3(0,1,0)};class ce{constructor(e){this.customCamera=!1,this.options=e;const{width:t,height:s,cameraParams:r}=e;if(r instanceof h.Camera)this.camera=r,this.customCamera=!0;else{const{fov:o,far:i,near:c,up:a}=r,l=new h.PerspectiveCamera(o,t/s,c,i);l.position.set(0,0,400),l.lookAt(0,0,0),l.up=a,this.camera=l}}setSize(e,t){this.camera instanceof h.PerspectiveCamera&&(this.camera.aspect=e/t),this.camera.updateProjectionMatrix()}setGui(e){const t=new x({camera:y(g({},this.options.cameraControls?{}:{x:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},y:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},z:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position}}),{near:{min:0,max:1e3,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}},far:{min:0,max:2e4,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}})});this.camera instanceof h.PerspectiveCamera&&(t.guiParams.camera.fov={min:0,max:90,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}),t.showGui(e)}}const le={background:null,om:!0};class de{constructor(e){this.overrideMaterial=!1,this.options=e;const{camera:t,sceneParams:s}=e,{background:r,om:o}=s,i=o?new h.Scene:new Proxy(new h.Scene,{set:(c,a,l)=>Reflect.set(c,a,l),get:(c,a)=>{if(a==="overrideMaterial"){const l=Reflect.get(c,a);return this.overrideMaterial=!!l,F.meshLineMaterialArr.forEach(d=>{this.overrideMaterial?d.useDepth=1:d.useDepth=0}),null}return Reflect.get(c,a)}});r&&(i.background=r),i.add(t),this.scene=i}dispose(){var e;(e=this.scene)==null||e.traverse(t=>{K.disposeMesh(t)}),F.meshLineMaterialArr.length=0}}class he{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{scene:s}=this.options;let r=this.helpers[t];if(r===void 0){if(e.isScene)r=new h.AxesHelper(100);else if(e.isCamera)r=new h.CameraHelper(e);else if(e.isPointLight)r=new h.PointLightHelper(e,1);else if(e.isDirectionalLight)r=new h.DirectionalLightHelper(e,1);else if(e.isSpotLight)r=new h.SpotLightHelper(e);else if(e.isHemisphereLight)r=new h.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)r=new Q.RectAreaLightHelper(e);else return;s.add(r),this.helpers[t]=r}}remove(e){const t=e.uuid,{scene:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.remove(r),delete this.helpers[e.id]}}removeAll(){const{scene:e}=this.options;Object.keys(this.helpers).forEach(t=>{e.remove(this.helpers[t])}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof h.AxesHelper||this.remove(this.helpers[e])})}update(){Object.values(this.helpers).forEach(e=>{e.update&&e.update()})}dispose(){this.helpers={}}}class me{constructor(e){this.autoRotateSpeed=0,this.options=e;const{camera:t,controlsParams:s,customControl:r}=e,{domElement:o}=s;if(r){const i=new r(t,o);i.enableDamping=!0,i.dampingFactor=.063,i.autoRotate=!1,i.autoRotateSpeed=-60,i.enableZoom=!0,i.zoomSpeed=.2,this.controls=i}else D.install({THREE:h}),this.cameraControls=new D(t,o)}enable(){this.controls?this.controls.enabled=!0:this.cameraControls&&(this.cameraControls.enabled=!0)}disable(){this.controls?this.controls.enabled=!1:this.cameraControls&&(this.cameraControls.enabled=!1)}update(e){var t,s;(t=this.controls)==null||t.update(),(s=this.cameraControls)==null||s.update(e),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*h.MathUtils.DEG2RAD)}dispose(){var e,t;(e=this.controls)==null||e.dispose(),(t=this.cameraControls)==null||t.dispose()}}class fe{constructor(e){this.event=new k.eventsExports.EventEmitter;const{renderer:t,scene:s,camera:r}=e,o=new ee.TransformControls(r,t.domElement);s.add(o),this.controls=o,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 r=this.controls;r.addEventListener("change",()=>{const o=r.object;o!==void 0&&this.event.emit("change",o)}),r.addEventListener("mouseDown",()=>{const o=r.object;e=o.position.clone(),t=o.rotation.clone(),s=o.scale.clone(),this.event.emit("mouseDown",o)}),r.addEventListener("mouseUp",()=>{const o=r.object;if(o!==void 0)switch(r.getMode()){case"translate":e.equals(o.position)||this.event.emit("translate",o,o.position,e);break;case"rotate":t.equals(o.rotation)||this.event.emit("rotate",o,o.rotation,t);break;case"scale":s.equals(o.scale)||this.event.emit("scale",o,o.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const G={zIndex:"auto"};class ue{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,r=s.offsetWidth,o=s.offsetHeight,i=e==="css2d"?new se.CSS2DRenderer:new te.CSS3DRenderer;i.domElement.style.position="absolute",i.domElement.style.top="0",i.domElement.style.pointerEvents="none",i.domElement.style.zIndex=t.zIndex,i.setSize(r,o),s.appendChild(i.domElement),e==="css2d"?this.css2Drenderer=i:e==="css3d"&&(this.css3Drenderer=i)}setSize(e,t){var s,r;(s=this.css2Drenderer)==null||s.setSize(e,t),(r=this.css3Drenderer)==null||r.setSize(e,t)}render(e,t){var s,r;(s=this.css2Drenderer)==null||s.render(e,t),(r=this.css3Drenderer)==null||r.render(e,t)}dispose(){this.css2Drenderer=void 0,this.css3Drenderer=void 0}}const j=["encodings_fragment","colorspace_fragment"];class pe extends R.ShaderMaterial{constructor(){super({uniforms:{inputBuffer:new R.Uniform(null),ratio:new R.Uniform(1)},fragmentShader:`
1
+ "use strict";var _=Object.defineProperty,W=Object.defineProperties;var X=Object.getOwnPropertyDescriptors;var M=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var L=(l,e,t)=>e in l?_(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,C=(l,e)=>{for(var t in e||(e={}))B.call(e,t)&&L(l,t,e[t]);if(M)for(var t of M(e))T.call(e,t)&&L(l,t,e[t]);return l},y=(l,e)=>W(l,X(e));var z=(l,e)=>{var t={};for(var s in l)B.call(l,s)&&e.indexOf(s)<0&&(t[s]=l[s]);if(l!=null&&M)for(var s of M(l))e.indexOf(s)<0&&T.call(l,s)&&(t[s]=l[s]);return t};Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const A=require("camera-controls"),R=require("three"),$=require("@tweenjs/tween.js"),I=require("./events.js"),Y=require("deepmerge"),Z=require("three/examples/jsm/libs/stats.module"),J=require("lil-gui"),F=require("./colorCorrection.js"),K=require("./disposeMesh.js");require("idb-keyval");require("esus-lite");require("d3-geo");const q=require("./MeshLineMaterial.js"),Q=require("three/examples/jsm/helpers/RectAreaLightHelper"),ee=require("three/examples/jsm/controls/TransformControls"),te=require("three/examples/jsm/renderers/CSS3DRenderer"),se=require("three/examples/jsm/renderers/CSS2DRenderer"),u=require("postprocessing"),re=require("./isPlainObject.js"),oe=require("./BaseObject.js");function V(l){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const t in l)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(l,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>l[t]})}}return e.default=l,Object.freeze(e)}const m=V(R),G=V($),ne={antialias:!1,devicePixelRatio:window.devicePixelRatio,powerPreference:"high-performance",toneMappingExposure:1,alpha:!1,outputEncoding:F.TextureEncoding.Linear,outputColorSpace:F.ColorSpace.sRGB,logarithmicDepthBuffer:!1,preserveDrawingBuffer:!1,stencil:!1,depth:!1,physicallyCorrectLights:!1};class ie{constructor(e){this.options=e;const{width:t,height:s,rendererParams:r}=e,{canvas:o,context:n,alpha:i,devicePixelRatio:a,antialias:c,powerPreference:d,toneMappingExposure:h,outputEncoding:p,outputColorSpace:g,logarithmicDepthBuffer:P,preserveDrawingBuffer:f,stencil:w,depth:b,physicallyCorrectLights:E}=r,v=new m.WebGLRenderer({canvas:o,context:n,alpha:i,antialias:c,powerPreference:d,logarithmicDepthBuffer:P,preserveDrawingBuffer:f,stencil:w,depth:b});if(v.setSize(t,s),v.setPixelRatio(a),v.toneMappingExposure=h,+m.REVISION<152?v.outputEncoding=p:v.outputColorSpace=g,+m.REVISION<155){const U=+m.REVISION<150?"physicallyCorrectLights":"useLegacyLights";v[U]=E}this.renderer=v}setSize(e,t){this.renderer.setSize(e,t)}render(){const{scene:e,camera:t}=this.options;this.renderer.render(e,t)}dispose(){var e,t,s;(e=this.renderer)==null||e.clear(),(t=this.renderer)==null||t.dispose(),(s=this.renderer)==null||s.renderLists.dispose()}}class x{constructor(e){this.guiParams={},e&&(this.guiParams=e)}showGui(e){e&&Object.keys(this.guiParams).forEach(t=>{const s=e.addFolder(t),r=this.guiParams[t];Object.keys(r).forEach(o=>{const{min:n,max:i,step:a,name:c,paramMap:d,items:h,value:p,target:g}=r[o],P=o.toLowerCase().indexOf("color")>-1;let f;const w=typeof p=="undefined"&&g,b=w?g():r[o],E=w?o:"value";h?f=s.add(b,E,h):P?f=s.addColor(b,E):f=s.add(b,E),f=f.name(c||o),typeof n!="undefined"&&(f=f.min(n)),typeof i!="undefined"&&(f=f.max(i)),typeof a!="undefined"&&(f=f.step(a)),f=f.onChange(()=>{this.setTargetValue(t,o,b[E],d)}),w&&f.listen()})})}setTargetValue(e,t,s,r){const{onChange:o,target:n,value:i}=this.guiParams[e][t],a=t.toLowerCase().indexOf("color")>-1;if(n&&!(typeof i=="undefined"&&n)){let d=n();Array.isArray(d)||(d=[d]),d.forEach(h=>{if(h)if(a)try{h[r||t].set(s)}catch(p){t!=="color"&&!r&&console.warn(`${t} is not a color,set paramMap`)}else h[r||t]=s})}o&&o(s)}setTargetValueByParams(){Object.keys(this.guiParams).forEach(e=>{Object.keys(this.guiParams[e]).forEach(t=>{const s=this.guiParams[e][t];typeof s.value!="undefined"&&this.setTargetValue(e,t,s.value,s.paramMap)})})}}const ae={fov:45,near:1,far:1e3,up:new m.Vector3(0,1,0)};class ce{constructor(e){this.customCamera=!1,this.options=e;const{width:t,height:s,cameraParams:r}=e;if(r instanceof m.Camera)this.camera=r,this.customCamera=!0;else{const{fov:o,far:n,near:i,up:a}=r,c=new m.PerspectiveCamera(o,t/s,i,n);c.position.set(0,0,400),c.lookAt(0,0,0),c.up=a,this.camera=c}}setSize(e,t){this.camera instanceof m.PerspectiveCamera&&(this.camera.aspect=e/t),this.camera.updateProjectionMatrix()}setGui(e){const t=new x({camera:y(C({},this.options.cameraControls?{}:{x:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},y:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position},z:{min:-1e4,max:1e4,step:1,target:()=>this.camera.position}}),{near:{min:0,max:1e3,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}},far:{min:0,max:2e4,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}})});this.camera instanceof m.PerspectiveCamera&&(t.guiParams.camera.fov={min:0,max:90,step:1,target:()=>this.camera,onChange:s=>{this.camera.updateProjectionMatrix()}}),t.showGui(e)}}const le={background:null,om:!0};class de{constructor(e){this.overrideMaterial=!1,this.options=e;const{camera:t,sceneParams:s}=e,{background:r,om:o}=s,n=o?new m.Scene:new Proxy(new m.Scene,{set:(i,a,c)=>Reflect.set(i,a,c),get:(i,a)=>{if(a==="overrideMaterial"){const c=Reflect.get(i,a);return this.overrideMaterial=!!c,q.meshLineMaterialArr.forEach(d=>{this.overrideMaterial?d.useDepth=1:d.useDepth=0}),null}return Reflect.get(i,a)}});r&&(n.background=r),n.add(t),this.scene=n}dispose(){var e;(e=this.scene)==null||e.traverse(t=>{K.disposeMesh(t)}),q.meshLineMaterialArr.length=0}}class he{constructor(e){this.helpers={},this.options=e}add(e){const t=e.uuid,{scene:s}=this.options;let r=this.helpers[t];if(r===void 0){if(e.isScene)r=new m.AxesHelper(100);else if(e.isCamera)r=new m.CameraHelper(e);else if(e.isPointLight)r=new m.PointLightHelper(e,1);else if(e.isDirectionalLight)r=new m.DirectionalLightHelper(e,1);else if(e.isSpotLight)r=new m.SpotLightHelper(e);else if(e.isHemisphereLight)r=new m.HemisphereLightHelper(e,10);else if(e.isRectAreaLight)r=new Q.RectAreaLightHelper(e);else return;s.add(r),this.helpers[t]=r}}remove(e){const t=e.uuid,{scene:s}=this.options;if(this.helpers[t]!==void 0){const r=this.helpers[t];s.remove(r),delete this.helpers[e.id]}}removeAll(){const{scene:e}=this.options;Object.keys(this.helpers).forEach(t=>{e.remove(this.helpers[t])}),this.helpers={}}removeAllExcludeScene(){Object.keys(this.helpers).forEach(e=>{this.helpers[e]instanceof m.AxesHelper||this.remove(this.helpers[e])})}update(){Object.values(this.helpers).forEach(e=>{e.update&&e.update()})}dispose(){this.helpers={}}}class me{constructor(e){this.autoRotateSpeed=0,this.options=e;const{camera:t,controlsParams:s,customControl:r}=e,{domElement:o}=s;if(r){const n=new r(t,o);n.enableDamping=!0,n.dampingFactor=.063,n.autoRotate=!1,n.autoRotateSpeed=-60,n.enableZoom=!0,n.zoomSpeed=.2,this.controls=n}else A.install({THREE:m}),this.cameraControls=new A(t,o)}enable(){this.controls?this.controls.enabled=!0:this.cameraControls&&(this.cameraControls.enabled=!0)}disable(){this.controls?this.controls.enabled=!1:this.cameraControls&&(this.cameraControls.enabled=!1)}update(e){var t,s;(t=this.controls)==null||t.update(),(s=this.cameraControls)==null||s.update(e),this.autoRotateSpeed&&this.cameraControls&&(this.cameraControls.azimuthAngle+=this.autoRotateSpeed*e*m.MathUtils.DEG2RAD)}dispose(){var e,t;(e=this.controls)==null||e.dispose(),(t=this.cameraControls)==null||t.dispose()}}class fe{constructor(e){this.event=new I.eventsExports.EventEmitter;const{renderer:t,scene:s,camera:r}=e,o=new ee.TransformControls(r,t.domElement);s.add(o),this.controls=o,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 r=this.controls;r.addEventListener("change",()=>{const o=r.object;o!==void 0&&this.event.emit("change",o)}),r.addEventListener("mouseDown",()=>{const o=r.object;e=o.position.clone(),t=o.rotation.clone(),s=o.scale.clone(),this.event.emit("mouseDown",o)}),r.addEventListener("mouseUp",()=>{const o=r.object;if(o!==void 0)switch(r.getMode()){case"translate":e.equals(o.position)||this.event.emit("translate",o,o.position,e);break;case"rotate":t.equals(o.rotation)||this.event.emit("rotate",o,o.rotation,t);break;case"scale":s.equals(o.scale)||this.event.emit("scale",o,o.scale,s);break}this.event.emit("mouseUp")})}dispose(){var e;this.event.removeAllListeners(),(e=this.controls)==null||e.dispose()}}const j={zIndex:"auto"};class ue{constructor(e){this.container=e}addRenderer(e,t){const s=t.container||this.container,r=s.offsetWidth,o=s.offsetHeight,n=e==="css2d"?new se.CSS2DRenderer:new te.CSS3DRenderer;n.domElement.style.position="absolute",n.domElement.style.top="0",n.domElement.style.pointerEvents="none",n.domElement.style.zIndex=t.zIndex,n.setSize(r,o),s.appendChild(n.domElement),e==="css2d"?this.css2Drenderer=n:e==="css3d"&&(this.css3Drenderer=n)}setSize(e,t){var s,r;(s=this.css2Drenderer)==null||s.setSize(e,t),(r=this.css3Drenderer)==null||r.setSize(e,t)}render(e,t){var s,r;(s=this.css2Drenderer)==null||s.render(e,t),(r=this.css3Drenderer)==null||r.render(e,t)}dispose(){this.css2Drenderer=void 0,this.css3Drenderer=void 0}}const k=["encodings_fragment","colorspace_fragment"];class pe extends R.ShaderMaterial{constructor(){super({uniforms:{inputBuffer:new R.Uniform(null),ratio:new R.Uniform(1)},fragmentShader:`
2
2
  uniform sampler2D inputBuffer;
3
3
  uniform float ratio;
4
4
  varying vec2 vUv;
@@ -6,7 +6,7 @@
6
6
  vec4 texel = texture2D(inputBuffer, vUv);
7
7
  gl_FragColor = texel * ratio;
8
8
  // Support automatic output encoding.
9
- #include <${+R.REVISION<154?j[0]:j[1]}>
9
+ #include <${+R.REVISION<154?k[0]:k[1]}>
10
10
 
11
11
  }
12
12
  `,vertexShader:`
@@ -15,4 +15,4 @@
15
15
  vUv = position.xy * 0.5 + 0.5;
16
16
  gl_Position = vec4(position.xy, 1.0, 1.0);
17
17
  }
18
- `,toneMapped:!1,depthWrite:!1,depthTest:!1})}}class ge extends u.Pass{constructor(){super("CrossFadePass"),this.fullscreenMaterial=new pe}render(e,t,s){const r=this.fullscreenMaterial;r.uniforms.inputBuffer.value=t.texture,e.setRenderTarget(this.renderToScreen?null:s),e.render(this.scene,this.camera)}}const I={luminancePass:!1,luminanceThreshold:.4,luminanceSmoothing:.3,mipmapBlur:!0,intensity:3,mipmapBlurPassRadius:.85,blendFunction:u.BlendFunction.ADD,ignoreBackground:!0,epsilon:.001},Ce={mode:u.ToneMappingMode.REINHARD2_ADAPTIVE,resolution:256,whitePoint:16,middleGrey:.6,minLuminance:.01,averageLuminance:.01,adaptationRate:1};class ve{constructor(e){this.active=!0,this.options=e;const{renderer:t,scene:s,camera:r,composerParams:o}=e,{multisampling:i,frameBufferType:c}=o,{maxSamples:a}=t.capabilities,l=new u.EffectComposer(t,{multisampling:Math.min(i,a),frameBufferType:c});l.addPass(new u.RenderPass(s,r)),this.finalComposer=l,this.renderer=t,this.scene=s,this.camera=r}addCopyPass(){const e=new u.CopyPass;this.finalComposer.addPass(e),this.copyPass=e}addCrossFadePass(){const e=new ge;this.finalComposer.addPass(e),this.crossFadePass=e}addFXAAPass(){const{camera:e}=this,t=new u.FXAAEffect({blendFunction:u.BlendFunction.NORMAL}),s=new u.EffectPass(e,t);this.finalComposer.addPass(s),this.fxaaPass=s}addToneMappingPass(e){const{camera:t}=this,s=new u.ToneMappingEffect(g({},e));this.toneMappingEffect=s;const r=new u.EffectPass(t,s);this.finalComposer.addPass(r),this.toneMappingPass=r}addToneMappingGui(e){if(!this.toneMappingEffect)return;new x({toneMapping:{blendFunction:{value:this.toneMappingEffect.mode,items:u.ToneMappingMode,onChange:s=>{this.toneMappingEffect.mode=Number(s)}},exposure:{min:0,max:2,value:this.renderer.toneMappingExposure,step:.001,onChange:s=>{this.renderer.toneMappingExposure=s}}},"Reinhard (Modified)":{whitePoint:{min:2,max:32,step:.001,target:()=>this.toneMappingEffect},middleGrey:{min:0,max:1,step:1e-4,target:()=>this.toneMappingEffect},averageLuminance:{min:1e-4,max:1,step:1e-4,target:()=>this.toneMappingEffect}}}).showGui(e)}addBloomPass(e){const{camera:t,scene:s}=this,d=g(g({},I),e),{epsilon:r,ignoreBackground:o,mipmapBlurPassRadius:i}=d,c=T(d,["epsilon","ignoreBackground","mipmapBlurPassRadius"]),a=new u.SelectiveBloomEffect(s,t,g({},c));o&&(a.ignoreBackground=o),i&&(a.mipmapBlurPass.radius=i),a.depthMaskMaterial.epsilon=r,a.luminancePass.enabled=!1,a.luminancePass.enabled=e.luminancePass;const l=new u.EffectPass(t,a);this.finalComposer.addPass(l),this.bloomPass=l,this.bloomEffect=a}addBloomGui(e){if(!this.bloomEffect)return;new x({bloom:{intensity:{min:0,max:10,step:.01,target:()=>this.bloomEffect},radius:{min:0,max:1,step:.001,target:()=>this.bloomEffect.mipmapBlurPass},blendFunction:{value:this.bloomEffect.blendMode.blendFunction,items:u.BlendFunction,onChange:s=>{this.bloomEffect.blendMode.blendFunction=Number(s)}},ignoreBackground:{value:this.bloomEffect.ignoreBackground,onChange:s=>{this.bloomEffect.ignoreBackground=s}}},bloomLuminanceFilter:{enabled:{value:this.bloomEffect.luminancePass.enabled,onChange:s=>{this.bloomEffect.luminancePass.enabled=s}},threshold:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial},smoothing:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial}}}).showGui(e)}toggleBloomSelection(e,t){if(!this.bloomEffect||!this.bloomPass){console.warn("err:pencil.options.bloom");return}e?t===!0?this.bloomEffect.selection.add(e):t===!1?this.bloomEffect.selection.delete(e):this.bloomEffect.selection.toggle(e):this.bloomEffect.selection.clear()}getSize(){const{renderer:e}=this.options;return e.getSize(new h.Vector2)}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){this.finalComposer.setSize(e,t)}render(){this.active&&this.finalComposer.render()}dispose(){this.finalComposer.dispose()}}const Pe=()=>{try{const n=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&n.getContext("webgl2"))}catch(n){return!1}},S=!1,V=Pe()!==!1,N=class{constructor(n,e){this.raycaster=new h.Raycaster,this.installPlugins=new Map,this.event=new k.eventsExports.EventEmitter,this.clock=new h.Clock,this.userData={},this.options=Y(N.options,n,{isMergeableObject:re.isPlainObject}),this.event.setMaxListeners(1/0);const{container:t,stats:s,gui:r,resizeObserver:o}=this.options;if(r){const i=new J;i.open(!1),this.gui=i}if(s){const i=new Z;i.showPanel(0),i.dom.style.position="absolute",t.appendChild(i.dom),this.stats=i}this.init(),this.initComposer(),this.initCSSRenderer(),this.initControls(),o&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime(),e&&(Array.isArray(e)||(e=[e]),e.forEach(i=>{Array.isArray(i)||(i=[i]),this.use(i[0],i[1])}))}getPlugin(n){return this.installPlugins.get(n)}get renderer(){return this.rendererController.renderer}get cameraControls(){return this.controlsController.cameraControls}get cameraPositon(){return this.cameraControls.getPosition(new h.Vector3,!1)}get cameraTarget(){return this.cameraControls.getTarget(new h.Vector3,!1)}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}use(n,...e){this.installPlugins.has(n.pluginName)?console.log("plugin already installed"):typeof n.install=="function"&&(n.install(this,...e),this.installPlugins.set(n.pluginName,n))}init(){const{container:n,isdev:e,helper:t,renderer:s,scene:r,camera:o,control:i}=this.options,{width:c,height:a}=this.getSize(),l=new ce({isdev:e,width:c,height:a,cameraParams:o,cameraControls:i===!0});this.gui&&l.setGui(this.gui);const d=l.camera,m=new de({camera:d,sceneParams:r}),p=m.scene,C=new ie({width:c,height:a,scene:p,camera:d,isdev:e,rendererParams:y(g({},s),{antialias:!1})});if(t){const P=new he({scene:p});P.add(p),this.helperController=P}this.sceneController=m,this.rendererController=C,this.cameraController=l,n.appendChild(C.renderer.domElement)}initComposer(){const{bloom:n,bloomParams:e,toneMapping:t,toneMappingParams:s,crossOpacity:r,renderer:o,multisampling:i,frameBufferType:c,passes:a}=this.options;let{antialias:l}=o;l==="msaa"&&!V&&(l=!1,console.warn("MSAA is not supported on this browser"));const d=new ve({renderer:this.renderer,scene:this.scene,camera:this.camera,composerParams:{multisampling:l==="msaa"?i:0,frameBufferType:t?h.HalfFloatType:c,encoding:o.outputEncoding}});this.composerController=d,n&&(d.addBloomPass(e),this.gui&&d.addBloomGui(this.gui)),t&&(d.addToneMappingPass(s),this.gui&&d.addToneMappingGui(this.gui)),l==="fxaa"&&d.addFXAAPass(),r&&d.addCrossFadePass(),a&&a.forEach(m=>{d.finalComposer.addPass(m)}),d.finalComposer.passes.length===1&&d.addCopyPass()}get opacity(){const{crossFadePass:n}=this.composerController;return n?n.fullscreenMaterial.uniforms.ratio.value:1}set opacity(n){const{crossFadePass:e}=this.composerController;if(!e){console.warn("err:pencil.options.crossOpacity");return}e.fullscreenMaterial.uniforms.ratio.value=n}initCSSRenderer(){const{container:n,css2DRenderer:e,css3DRenderer:t,css2DRendererParams:s,css3DRendererParams:r}=this.options;if(e||t){const o=new ue(n);e&&o.addRenderer("css2d",s),t&&o.addRenderer("css3d",r),this.cssRendererController=o}}initControls(){const{control:n,controlParams:e,transformControls:t}=this.options;if(n){const s=new me({camera:this.camera,controlsParams:{domElement:(e==null?void 0:e.domElement)||this.renderer.domElement},customControl:typeof n=="boolean"?void 0:n});this.controlsController=s}if(t){const s=new fe({camera:this.camera,renderer:this.renderer,scene:this.scene});s.event.on("mouseDown",()=>{var r;(r=this.controlsController)==null||r.disable()}),s.event.on("mouseUp",()=>{var r;(r=this.controlsController)==null||r.enable()}),this.transformController=s}}getSize(){const{container:n}=this.options;return{width:n.offsetWidth,height:n.offsetHeight}}initResizeObserver(){const{container:n}=this.options;if(this.resizeObserver)return;const e=new ResizeObserver(t=>{for(const s of t){const r=s.contentRect;this.handeleResize(r.width,r.height),this.render()}});e.observe(n),this.resizeObserver=e}handeleResize(n,e,t=!0){const{rendererController:s,cameraController:r,composerController:o,cssRendererController:i}=this;r==null||r.setSize(n,e),s==null||s.setSize(n,e),o==null||o.setSize(n,e),i==null||i.setSize(n,e),this.installPlugins.forEach(c=>{var a;(a=c.setSize)==null||a.call(c,n,e)}),t&&this.event.emit("resize",{width:n,height:e})}pick(n,e,t=!1){const{raycaster:s,options:r}=this,{container:o}=r,i=new h.Vector2,c=o.getBoundingClientRect();if(i.x=(n.clientX-c.left)/(c.right-c.left)*2-1,i.y=-((n.clientY-c.top)/(c.bottom-c.top))*2+1,this.camera&&this.scene){s.setFromCamera(i,this.camera);const a=s.intersectObjects(e||this.scene.children,t);if(a.length)return{object:a[0].object,intersects:a}}}render(){var o,i,c,a,l,d;const{scene:n,camera:e,clock:t}=this,s=t.getDelta(),r=t.getElapsedTime();q.update(),(o=this.controlsController)==null||o.update(s),this.installPlugins.forEach(m=>{var p;(p=m.update)==null||p.call(m,s,r)}),(i=this.helperController)==null||i.update(),(c=this.composerController)!=null&&c.active?this.composerController.render():(a=this.rendererController)==null||a.render(),(l=this.cssRendererController)==null||l.render(n,e),(d=this.stats)==null||d.update(),this.event.emit("render",{delta:s,elapsed:r})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(n){this.controlsController.autoRotateSpeed=n}dispose(){var n,e,t,s,r,o,i,c,a;this.stop(),q.removeAll(),this.event.removeAllListeners(),(n=this.resizeObserver)==null||n.unobserve(this.options.container),this.handeleResize(0,0),this.installPlugins.forEach(l=>{var d;(d=l.dispose)==null||d.call(l)}),(e=this.controlsController)==null||e.dispose(),(t=this.transformController)==null||t.dispose(),(s=this.cssRendererController)==null||s.dispose(),(r=this.sceneController)==null||r.dispose(),(o=this.helperController)==null||o.dispose(),(i=this.composerController)==null||i.dispose(),(c=this.rendererController)==null||c.dispose(),this.cssRendererController=void 0,(a=this.gui)==null||a.destroy(),this.installPlugins.clear()}};let O=N;O.options={isdev:S,stats:S,gui:S,helper:S,control:!0,transformControls:S,resizeObserver:!0,renderer:y(g({},oe),{antialias:V?"msaa":"fxaa"}),multisampling:4,frameBufferType:h.UnsignedByteType,scene:le,camera:ae,bloom:!1,bloomParams:I,toneMapping:!1,toneMappingParams:Ce,crossOpacity:!1,css2DRenderer:!1,css2DRendererParams:g({},G),css3DRenderer:!1,css3DRendererParams:g({},G)};const be=D.ACTION;exports.BaseObject=ne.BaseObject;exports.GUIObject=x;exports.Pencil=O;exports.cameraControlsAction=be;exports.default=O;
18
+ `,toneMapped:!1,depthWrite:!1,depthTest:!1})}}class ge extends u.Pass{constructor(){super("CrossFadePass"),this.fullscreenMaterial=new pe}render(e,t,s){const r=this.fullscreenMaterial;r.uniforms.inputBuffer.value=t.texture,e.setRenderTarget(this.renderToScreen?null:s),e.render(this.scene,this.camera)}}const N={luminancePass:!1,luminanceThreshold:.4,luminanceSmoothing:.3,mipmapBlur:!0,intensity:3,mipmapBlurPassRadius:.85,blendFunction:u.BlendFunction.ADD,ignoreBackground:!0,epsilon:.001},Ce={mode:u.ToneMappingMode.REINHARD2_ADAPTIVE,resolution:256,whitePoint:16,middleGrey:.6,minLuminance:.01,averageLuminance:.01,adaptationRate:1};class ve{constructor(e){this.active=!0,this.options=e;const{renderer:t,scene:s,camera:r,composerParams:o}=e,{multisampling:n,frameBufferType:i}=o,{maxSamples:a}=t.capabilities,c=new u.EffectComposer(t,{multisampling:Math.min(n,a),frameBufferType:i});c.addPass(new u.RenderPass(s,r)),this.finalComposer=c,this.renderer=t,this.scene=s,this.camera=r}addCopyPass(){const e=new u.CopyPass;this.finalComposer.addPass(e),this.copyPass=e}addCrossFadePass(){const e=new ge;this.finalComposer.addPass(e),this.crossFadePass=e}addFXAAPass(){const{camera:e}=this,t=new u.FXAAEffect({blendFunction:u.BlendFunction.NORMAL}),s=new u.EffectPass(e,t);this.finalComposer.addPass(s),this.fxaaPass=s}addToneMappingPass(e){const{camera:t}=this,s=new u.ToneMappingEffect(C({},e));this.toneMappingEffect=s;const r=new u.EffectPass(t,s);this.finalComposer.addPass(r),this.toneMappingPass=r}addToneMappingGui(e){if(!this.toneMappingEffect)return;new x({toneMapping:{blendFunction:{value:this.toneMappingEffect.mode,items:u.ToneMappingMode,onChange:s=>{this.toneMappingEffect.mode=Number(s)}},exposure:{min:0,max:2,value:this.renderer.toneMappingExposure,step:.001,onChange:s=>{this.renderer.toneMappingExposure=s}}},"Reinhard (Modified)":{whitePoint:{min:2,max:32,step:.001,target:()=>this.toneMappingEffect},middleGrey:{min:0,max:1,step:1e-4,target:()=>this.toneMappingEffect},averageLuminance:{min:1e-4,max:1,step:1e-4,target:()=>this.toneMappingEffect}}}).showGui(e)}addBloomPass(e){const{camera:t,scene:s}=this,d=C(C({},N),e),{epsilon:r,ignoreBackground:o,mipmapBlurPassRadius:n}=d,i=z(d,["epsilon","ignoreBackground","mipmapBlurPassRadius"]),a=new u.SelectiveBloomEffect(s,t,C({},i));o&&(a.ignoreBackground=o),n&&(a.mipmapBlurPass.radius=n),a.depthMaskMaterial.epsilon=r,a.luminancePass.enabled=!1,a.luminancePass.enabled=e.luminancePass;const c=new u.EffectPass(t,a);this.finalComposer.addPass(c),this.bloomPass=c,this.bloomEffect=a}addBloomGui(e){if(!this.bloomEffect)return;new x({bloom:{intensity:{min:0,max:10,step:.01,target:()=>this.bloomEffect},radius:{min:0,max:1,step:.001,target:()=>this.bloomEffect.mipmapBlurPass},blendFunction:{value:this.bloomEffect.blendMode.blendFunction,items:u.BlendFunction,onChange:s=>{this.bloomEffect.blendMode.blendFunction=Number(s)}},ignoreBackground:{value:this.bloomEffect.ignoreBackground,onChange:s=>{this.bloomEffect.ignoreBackground=s}}},bloomLuminanceFilter:{enabled:{value:this.bloomEffect.luminancePass.enabled,onChange:s=>{this.bloomEffect.luminancePass.enabled=s}},threshold:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial},smoothing:{min:0,max:1,step:.01,target:()=>this.bloomEffect.luminanceMaterial}}}).showGui(e)}toggleBloomSelection(e,t){if(!this.bloomEffect||!this.bloomPass){console.warn("err:pencil.options.bloom");return}e?t===!0?this.bloomEffect.selection.add(e):t===!1?this.bloomEffect.selection.delete(e):this.bloomEffect.selection.toggle(e):this.bloomEffect.selection.clear()}getSize(){const{renderer:e}=this.options;return e.getSize(new m.Vector2)}enable(){this.active||(this.active=!0)}disable(){this.active&&(this.active=!1)}setSize(e,t){this.finalComposer.setSize(e,t)}render(){this.active&&this.finalComposer.render()}dispose(){this.finalComposer.dispose()}}const Pe=()=>{try{const l=document.createElement("canvas");return!!(window.WebGL2RenderingContext&&l.getContext("webgl2"))}catch(l){return!1}},S=!1,H=Pe()!==!1,O=class O{constructor(e,t){this.raycaster=new m.Raycaster,this.installPlugins=new Map,this.event=new I.eventsExports.EventEmitter,this.clock=new m.Clock,this.userData={},this.options=Y(O.options,e,{isMergeableObject:re.isPlainObject}),this.event.setMaxListeners(1/0);const{container:s,stats:r,gui:o,resizeObserver:n}=this.options;if(o){const i=new J;i.open(!1),this.gui=i}if(r){const i=new Z;i.showPanel(0),i.dom.style.position="absolute",s.appendChild(i.dom),this.stats=i}this.init(),this.initComposer(),this.initCSSRenderer(),this.initControls(),n&&this.initResizeObserver(),this.clock.getDelta(),this.clock.getElapsedTime(),t&&(Array.isArray(t)||(t=[t]),t.forEach(i=>{Array.isArray(i)||(i=[i]),this.use(i[0],i[1])}))}getPlugin(e){return this.installPlugins.get(e)}get renderer(){return this.rendererController.renderer}get cameraControls(){return this.controlsController.cameraControls}get cameraPositon(){return this.cameraControls.getPosition(new m.Vector3,!1)}get cameraTarget(){return this.cameraControls.getTarget(new m.Vector3,!1)}get camera(){return this.cameraController.camera}get scene(){return this.sceneController.scene}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))}init(){const{container:e,isdev:t,helper:s,renderer:r,scene:o,camera:n,control:i}=this.options,{width:a,height:c}=this.getSize(),d=new ce({isdev:t,width:a,height:c,cameraParams:n,cameraControls:i===!0});this.gui&&d.setGui(this.gui);const h=d.camera,p=new de({camera:h,sceneParams:o}),g=p.scene,P=new ie({width:a,height:c,scene:g,camera:h,isdev:t,rendererParams:y(C({},r),{antialias:!1})});if(s){const f=new he({scene:g});f.add(g),this.helperController=f}this.sceneController=p,this.rendererController=P,this.cameraController=d,e.appendChild(P.renderer.domElement)}initComposer(){const{bloom:e,bloomParams:t,toneMapping:s,toneMappingParams:r,crossOpacity:o,renderer:n,multisampling:i,frameBufferType:a,passes:c}=this.options;let{antialias:d}=n;d==="msaa"&&!H&&(d=!1,console.warn("MSAA is not supported on this browser"));const h=new ve({renderer:this.renderer,scene:this.scene,camera:this.camera,composerParams:{multisampling:d==="msaa"?i:0,frameBufferType:s?m.HalfFloatType:a,encoding:n.outputEncoding}});this.composerController=h,e&&(h.addBloomPass(t),this.gui&&h.addBloomGui(this.gui)),s&&(h.addToneMappingPass(r),this.gui&&h.addToneMappingGui(this.gui)),d==="fxaa"&&h.addFXAAPass(),o&&h.addCrossFadePass(),c&&c.forEach(p=>{h.finalComposer.addPass(p)}),h.finalComposer.passes.length===1&&h.addCopyPass()}get opacity(){const{crossFadePass:e}=this.composerController;return e?e.fullscreenMaterial.uniforms.ratio.value:1}set opacity(e){const{crossFadePass:t}=this.composerController;if(!t){console.warn("err:pencil.options.crossOpacity");return}t.fullscreenMaterial.uniforms.ratio.value=e}initCSSRenderer(){const{container:e,css2DRenderer:t,css3DRenderer:s,css2DRendererParams:r,css3DRendererParams:o}=this.options;if(t||s){const n=new ue(e);t&&n.addRenderer("css2d",r),s&&n.addRenderer("css3d",o),this.cssRendererController=n}}initControls(){const{control:e,controlParams:t,transformControls:s}=this.options;if(e){const r=new me({camera:this.camera,controlsParams:{domElement:(t==null?void 0:t.domElement)||this.renderer.domElement},customControl:typeof e=="boolean"?void 0:e});this.controlsController=r}if(s){const r=new fe({camera:this.camera,renderer:this.renderer,scene:this.scene});r.event.on("mouseDown",()=>{var o;(o=this.controlsController)==null||o.disable()}),r.event.on("mouseUp",()=>{var o;(o=this.controlsController)==null||o.enable()}),this.transformController=r}}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 r of s){const o=r.contentRect;this.handeleResize(o.width,o.height),this.render()}});t.observe(e),this.resizeObserver=t}handeleResize(e,t,s=!0){const{rendererController:r,cameraController:o,composerController:n,cssRendererController:i}=this;o==null||o.setSize(e,t),r==null||r.setSize(e,t),n==null||n.setSize(e,t),i==null||i.setSize(e,t),this.installPlugins.forEach(a=>{var c;(c=a.setSize)==null||c.call(a,e,t)}),s&&this.event.emit("resize",{width:e,height:t})}pick(e,t,s=!1){const{raycaster:r,options:o}=this,{container:n}=o,i=new m.Vector2,a=n.getBoundingClientRect();if(i.x=(e.clientX-a.left)/(a.right-a.left)*2-1,i.y=-((e.clientY-a.top)/(a.bottom-a.top))*2+1,this.camera&&this.scene){r.setFromCamera(i,this.camera);const c=r.intersectObjects(t||this.scene.children,s);if(c.length)return{object:c[0].object,intersects:c}}}render(){var n,i,a,c,d,h;const{scene:e,camera:t,clock:s}=this,r=s.getDelta(),o=s.getElapsedTime();G.update(),(n=this.controlsController)==null||n.update(r),this.installPlugins.forEach(p=>{var g;(g=p.update)==null||g.call(p,r,o)}),(i=this.helperController)==null||i.update(),(a=this.composerController)!=null&&a.active?this.composerController.render():(c=this.rendererController)==null||c.render(),(d=this.cssRendererController)==null||d.render(e,t),(h=this.stats)==null||h.update(),this.event.emit("render",{delta:r,elapsed:o})}start(){this.renderer.setAnimationLoop(this.render.bind(this)),this.event.emit("start")}stop(){this.renderer.setAnimationLoop(null),this.event.emit("stop")}autoRotate(e){this.controlsController.autoRotateSpeed=e}dispose(){var e,t,s,r,o,n,i,a,c;this.stop(),G.removeAll(),this.event.removeAllListeners(),(e=this.resizeObserver)==null||e.unobserve(this.options.container),this.handeleResize(0,0),this.installPlugins.forEach(d=>{var h;(h=d.dispose)==null||h.call(d)}),(t=this.controlsController)==null||t.dispose(),(s=this.transformController)==null||s.dispose(),(r=this.cssRendererController)==null||r.dispose(),(o=this.sceneController)==null||o.dispose(),(n=this.helperController)==null||n.dispose(),(i=this.composerController)==null||i.dispose(),(a=this.rendererController)==null||a.dispose(),this.cssRendererController=void 0,(c=this.gui)==null||c.destroy(),this.installPlugins.clear()}};O.options={isdev:S,stats:S,gui:S,helper:S,control:!0,transformControls:S,resizeObserver:!0,renderer:y(C({},ne),{antialias:H?"msaa":"fxaa"}),multisampling:4,frameBufferType:m.UnsignedByteType,scene:le,camera:ae,bloom:!1,bloomParams:N,toneMapping:!1,toneMappingParams:Ce,crossOpacity:!1,css2DRenderer:!1,css2DRendererParams:C({},j),css3DRenderer:!1,css3DRendererParams:C({},j)};let D=O;const be=A.ACTION;exports.BaseObject=oe.BaseObject;exports.GUIObject=x;exports.Pencil=D;exports.cameraControlsAction=be;exports.default=D;