@operato/scene-visualizer 1.2.42 → 1.2.46

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.
@@ -9,7 +9,7 @@ import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
9
9
  import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader';
10
10
  // @ts-ignore
11
11
  import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
12
- class RealObjectGLTF extends RealObject {
12
+ export class RealObjectGLTF extends RealObject {
13
13
  constructor() {
14
14
  super(...arguments);
15
15
  this.objectSize = new THREE.Vector3();
@@ -98,5 +98,4 @@ class RealObjectGLTF extends RealObject {
98
98
  }
99
99
  }
100
100
  RealObjectGLTF._GLTFLoader = new GLTFLoader();
101
- export { RealObjectGLTF };
102
101
  //# sourceMappingURL=real-object-gltf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"real-object-gltf.js","sourceRoot":"","sources":["../../src/threed/real-object-gltf.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAQ,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAA;AAGlF,MAAa,cAAe,SAAQ,UAAU;IAA9C;;QAIU,eAAU,GAAmB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAA;IAmH1D,CAAC;IAjHC,MAAM,KAAK,UAAU;QACnB,OAAO,cAAc,CAAC,WAAW,CAAA;IACnC,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE1C,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,OAAM;SACP;QAED,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAEjC,0EAA0E;QAC1E,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;QACrC,WAAW,CAAC,cAAc,CAAC,8CAA8C,CAAC,CAAA;QAC1E,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAEtC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QACnC,UAAU,CAAC,iBAAiB,CAAC,8CAA8C,CAAC,CAAA;QAC5E,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAe,CAAC,UAAW,CAAC,CAAA;QAC1D,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAEpC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAA;QAE5C,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/C,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;QAE5C,UAAU,CAAC,IAAI,CACb,UAAU,EACV,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,CAAA;QACtE,CAAC,EACD,GAAG,CAAC,EAAE;YACJ,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC,CACF,CAAA;IACH,CAAC;IAEO,UAAU,CAAC,IAAU;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAEtB,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC1B,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;QAE9B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAqB,EAAE,EAAE;YACxC,IAAK,KAAa,CAAC,MAAM,EAAE;gBACzB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;aACxB;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAW,CAAC,CAAA;QAEvD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;QAEzB,6CAA6C;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEtB,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,cAAe,CAAC,KAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBAC9D,MAAM,CAAC,IAAI,EAAE,CAAA;aACd;SACF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;SAC/B;IACH,CAAC;IAED,KAAK;QACH,yCAAyC;QACzC,mCAAmC;QAEnC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,eAAe;QACb,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE/D,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;QAEnD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;QAEpE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,QAAQ,CAAC,KAAiB,EAAE,MAAkB;QAC5C,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAE7B,IAAI,KAAK,IAAI,KAAK,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE,CAAA;SACpB;IACH,CAAC;;AArHc,0BAAW,GAAG,IAAI,UAAU,EAAE,AAAnB,CAAmB;SADlC,cAAc","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '@hatiolab/things-scene'\n\nimport { RealObject } from './real-object'\n\nimport { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'\nimport { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader'\n// @ts-ignore\nimport { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js'\nimport { Properties } from '@hatiolab/things-scene'\n\nexport class RealObjectGLTF extends RealObject {\n private static _GLTFLoader = new GLTFLoader()\n\n private pivot?: THREE.Object3D\n private objectSize?: THREE.Vector3 = new THREE.Vector3()\n\n static get GLTFLoader() {\n return RealObjectGLTF._GLTFLoader\n }\n\n build() {\n super.build()\n\n var { src: source } = this.component.state\n\n if (!source) {\n this.clear()\n return\n }\n\n let gltfLoader = new GLTFLoader()\n\n // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n const dracoLoader = new DRACOLoader()\n dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/')\n gltfLoader.setDRACOLoader(dracoLoader)\n\n const ktx2Loader = new KTX2Loader()\n ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`)\n ktx2Loader.detectSupport(this.threeContainer!.renderer3d!)\n gltfLoader.setKTX2Loader(ktx2Loader)\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder)\n\n var fullsource = this.component.app.url(source)\n gltfLoader.setCrossOrigin('use-credentials')\n\n gltfLoader.load(\n fullsource,\n gltf => {\n this.gltfLoaded(gltf)\n },\n xhr => {\n console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded')\n },\n err => {\n error('GLTFLoader.load', err)\n this.clear()\n }\n )\n }\n\n private gltfLoaded(gltf: GLTF) {\n let scene = gltf.scene\n\n var animations = gltf.animations\n var object = scene.clone()\n object.userData.context = this\n\n object.traverse((child: THREE.Object3D) => {\n if ((child as any).isMesh) {\n child.castShadow = true\n }\n })\n\n var boundingBox = new THREE.Box3().setFromObject(object)\n var center = boundingBox.getCenter(object.position)\n this.objectSize = boundingBox.getSize(this.objectSize!)\n\n center.multiplyScalar(-1)\n\n // 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.\n this.clear()\n\n this.pivot = new THREE.Object3D()\n this.object3d.add(this.pivot)\n this.pivot.add(object)\n\n this.updateDimension()\n\n if (animations && animations.length) {\n for (var i = 0; i < animations.length; i++) {\n var animation = animations[i]\n var action = this.threeContainer!.mixer!.clipAction(animation)\n action.play()\n }\n } else {\n console.log('no animations..')\n }\n }\n\n clear() {\n // TODO gltf object 리소스 해제가 필요하면, 여기에 추가.\n // 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.\n\n return super.clear()\n }\n\n updateDimension() {\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n var { x = 1, y = 1, z = 1 } = this.objectSize || {}\n\n this.pivot && this.pivot.scale.set(width / x, depth / y, height / z)\n\n this.component.invalidate()\n }\n\n updateSource() {\n this.build()\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if ('src' in after) {\n this.updateSource()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"real-object-gltf.js","sourceRoot":"","sources":["../../src/threed/real-object-gltf.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { error } from '@hatiolab/things-scene'\n\nimport { RealObject } from './real-object'\n\nimport { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'\nimport { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader'\n// @ts-ignore\nimport { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js'\nimport { Properties } from '@hatiolab/things-scene'\n\nexport class RealObjectGLTF extends RealObject {\n private static _GLTFLoader = new GLTFLoader()\n\n private pivot?: THREE.Object3D\n private objectSize?: THREE.Vector3 = new THREE.Vector3()\n\n static get GLTFLoader() {\n return RealObjectGLTF._GLTFLoader\n }\n\n build() {\n super.build()\n\n var { src: source } = this.component.state\n\n if (!source) {\n this.clear()\n return\n }\n\n let gltfLoader = new GLTFLoader()\n\n // Optional: Provide a DRACOLoader instance to decode compressed mesh data\n const dracoLoader = new DRACOLoader()\n dracoLoader.setDecoderPath('/node_modules/three/examples/jsm/libs/draco/')\n gltfLoader.setDRACOLoader(dracoLoader)\n\n const ktx2Loader = new KTX2Loader()\n ktx2Loader.setTranscoderPath(`/node_modules/three/examples/jsm/libs/basis/`)\n ktx2Loader.detectSupport(this.threeContainer!.renderer3d!)\n gltfLoader.setKTX2Loader(ktx2Loader)\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder)\n\n var fullsource = this.component.app.url(source)\n gltfLoader.setCrossOrigin('use-credentials')\n\n gltfLoader.load(\n fullsource,\n gltf => {\n this.gltfLoaded(gltf)\n },\n xhr => {\n console.log(Math.round((xhr.loaded / xhr.total) * 100) + '% loaded')\n },\n err => {\n error('GLTFLoader.load', err)\n this.clear()\n }\n )\n }\n\n private gltfLoaded(gltf: GLTF) {\n let scene = gltf.scene\n\n var animations = gltf.animations\n var object = scene.clone()\n object.userData.context = this\n\n object.traverse((child: THREE.Object3D) => {\n if ((child as any).isMesh) {\n child.castShadow = true\n }\n })\n\n var boundingBox = new THREE.Box3().setFromObject(object)\n var center = boundingBox.getCenter(object.position)\n this.objectSize = boundingBox.getSize(this.objectSize!)\n\n center.multiplyScalar(-1)\n\n // 오브젝트 공백을 최소로 하기위해서 clear() 를 최대한 pending함.\n this.clear()\n\n this.pivot = new THREE.Object3D()\n this.object3d.add(this.pivot)\n this.pivot.add(object)\n\n this.updateDimension()\n\n if (animations && animations.length) {\n for (var i = 0; i < animations.length; i++) {\n var animation = animations[i]\n var action = this.threeContainer!.mixer!.clipAction(animation)\n action.play()\n }\n } else {\n console.log('no animations..')\n }\n }\n\n clear() {\n // TODO gltf object 리소스 해제가 필요하면, 여기에 추가.\n // 반복적으로 로딩하면 WebGL 리소스 부족으로 오류 발생.\n\n return super.clear()\n }\n\n updateDimension() {\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n var { x = 1, y = 1, z = 1 } = this.objectSize || {}\n\n this.pivot && this.pivot.scale.set(width / x, depth / y, height / z)\n\n this.component.invalidate()\n }\n\n updateSource() {\n this.build()\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n if ('src' in after) {\n this.updateSource()\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@operato/scene-visualizer",
3
3
  "description": "visualizer component for operato-scene",
4
4
  "author": "heartyoh",
5
- "version": "1.2.42",
5
+ "version": "1.2.46",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
8
8
  "license": "MIT",
@@ -62,5 +62,5 @@
62
62
  "prettier --write"
63
63
  ]
64
64
  },
65
- "gitHead": "ba6eec7938fb081674c1ad24e240aba21d3b9d3e"
65
+ "gitHead": "1642231c4a8e50b20f520fad3ac3e00ebf7fe8d8"
66
66
  }
@@ -99,7 +99,7 @@ export class GLTFObject extends RectPath(Shape) {
99
99
  }
100
100
 
101
101
  set source(source) {
102
- this.set('src', source)
102
+ this.setState('src', source)
103
103
  }
104
104
 
105
105
  set dimension(dimension: { width: number; height: number; depth: number }) {
@@ -125,7 +125,7 @@ export class RackTableCell extends RectPath(Component) {
125
125
  }
126
126
 
127
127
  get colspan() {
128
- return this.get('colspan')
128
+ return this.getState('colspan')
129
129
  }
130
130
 
131
131
  get border() {
@@ -133,7 +133,7 @@ export class RackTableCell extends RectPath(Component) {
133
133
  }
134
134
 
135
135
  get isEmpty() {
136
- return this.get('isEmpty')
136
+ return this.getState('isEmpty')
137
137
  }
138
138
 
139
139
  _drawBorder(context: CanvasRenderingContext2D, x: number, y: number, to_x: number, to_y: number, style: any) {
@@ -203,11 +203,11 @@ export class RackTableCell extends RectPath(Component) {
203
203
  locPattern = locPattern.substring(0, locPattern.indexOf('{u}') + 3)
204
204
 
205
205
  var locationString = ''
206
- if (this.get('section') && this.get('unit'))
206
+ if (this.getState('section') && this.getState('unit'))
207
207
  locationString = locPattern
208
208
  .replace('{z}', zone)
209
- .replace('{s}', this.get('section'))
210
- .replace('{u}', this.get('unit'))
209
+ .replace('{s}', this.getState('section'))
210
+ .replace('{u}', this.getState('unit'))
211
211
 
212
212
  return locationString || ''
213
213
  }
@@ -316,7 +316,7 @@ export class RackTableCell extends RectPath(Component) {
316
316
  for (let i = rowCells.length - 1; i > 0; i--) {
317
317
  var cell = rowCells[i]
318
318
 
319
- var unit = cell.get('unit')
319
+ var unit = cell.getState('unit')
320
320
 
321
321
  if (unit) return Number(unit)
322
322
  }
@@ -330,7 +330,7 @@ export class RackTableCell extends RectPath(Component) {
330
330
  for (let i = 0; i < rowCells.length; i++) {
331
331
  var cell = rowCells[i]
332
332
 
333
- var unit = cell.get('unit')
333
+ var unit = cell.getState('unit')
334
334
 
335
335
  if (unit) return Number(unit)
336
336
  }
@@ -340,13 +340,13 @@ export class RackTableCell extends RectPath(Component) {
340
340
 
341
341
  get notEmptyRowCells() {
342
342
  return this.rowCells.filter((c: Component) => {
343
- return !c.get('isEmpty')
343
+ return !c.getState('isEmpty')
344
344
  })
345
345
  }
346
346
 
347
347
  get emptyRowCells() {
348
348
  return this.rowCells.filter((c: Component) => {
349
- return c.get('isEmpty')
349
+ return c.getState('isEmpty')
350
350
  })
351
351
  }
352
352
 
package/src/rack-table.ts CHANGED
@@ -18,6 +18,7 @@ import {
18
18
  import { Rack } from './rack'
19
19
  import { RackTableCell } from './rack-table-cell'
20
20
  import { RealObjectGroup } from './threed/real-object-group'
21
+ import { RealObject } from './threed'
21
22
 
22
23
  const NATURE = {
23
24
  mutable: false,
@@ -161,7 +162,7 @@ function setCellBorder(cell: RackTableCell, style: any, where: SIDE_KEY) {
161
162
  return
162
163
  }
163
164
 
164
- cell.set('border', Object.assign({}, cell.get('border') || {}, buildBorderStyle(style, where)))
165
+ cell.set('border', Object.assign({}, cell.getState('border') || {}, buildBorderStyle(style, where)))
165
166
  }
166
167
 
167
168
  function isLeftMost(total: number, columns: number, indices: number[], i: number) {
@@ -398,7 +399,7 @@ export class RackTable extends ContainerAbstract {
398
399
  return true
399
400
  }
400
401
 
401
- buildRealObject() {
402
+ buildRealObject(): RealObject | undefined {
402
403
  return new RackTable3d(this)
403
404
  }
404
405
 
@@ -425,8 +426,8 @@ export class RackTable extends ContainerAbstract {
425
426
  this.add(newbies)
426
427
  }
427
428
 
428
- var widths = this.get('widths')
429
- var heights = this.get('heights')
429
+ var widths = this.getState('widths')
430
+ var heights = this.getState('heights')
430
431
 
431
432
  if (!widths || widths.length < this.columns) this.set('widths', this.widths)
432
433
  if (!heights || heights.length < this.rows) this.set('heights', this.heights)
@@ -438,7 +439,7 @@ export class RackTable extends ContainerAbstract {
438
439
  }
439
440
 
440
441
  get widths(): number[] {
441
- var widths = this.get('widths')
442
+ var widths = this.getState('widths')
442
443
 
443
444
  if (!widths) return array(1, this.columns)
444
445
 
@@ -449,7 +450,7 @@ export class RackTable extends ContainerAbstract {
449
450
  }
450
451
 
451
452
  get heights(): number[] {
452
- var heights = this.get('heights')
453
+ var heights = this.getState('heights')
453
454
 
454
455
  if (!heights) return array(1, this.rows)
455
456
 
@@ -506,13 +507,13 @@ export class RackTable extends ContainerAbstract {
506
507
  }
507
508
 
508
509
  get rows() {
509
- return this.get('rows')
510
+ return this.getState('rows')
510
511
  }
511
512
 
512
513
  setCellsStyle(cells: RackTableCell[], style: any, where: string) {
513
514
  var components = this.components
514
515
  var total = components.length
515
- var columns = this.get('columns')
516
+ var columns = this.getState('columns')
516
517
 
517
518
  // 병합된 셀도 포함시킨다.
518
519
  var _cells = [] as RackTableCell[]
@@ -1174,7 +1175,7 @@ export class RackTable extends ContainerAbstract {
1174
1175
  }
1175
1176
 
1176
1177
  get columns() {
1177
- return this.get('columns')
1178
+ return this.getState('columns')
1178
1179
  }
1179
1180
 
1180
1181
  get lefts() {
@@ -1262,10 +1263,10 @@ export class RackTable extends ContainerAbstract {
1262
1263
  onchange(after: Properties, before: Properties) {
1263
1264
  if ('rows' in after || 'columns' in after) {
1264
1265
  this.buildCells(
1265
- this.get('rows'),
1266
- this.get('columns'),
1267
- before.hasOwnProperty('rows') ? before.rows : this.get('rows'),
1268
- before.hasOwnProperty('columns') ? before.columns : this.get('columns')
1266
+ this.getState('rows'),
1267
+ this.getState('columns'),
1268
+ before.hasOwnProperty('rows') ? before.rows : this.getState('rows'),
1269
+ before.hasOwnProperty('columns') ? before.columns : this.getState('columns')
1269
1270
  )
1270
1271
  }
1271
1272
 
package/src/stock.ts CHANGED
@@ -35,10 +35,10 @@ export class Stock extends RealObject<THREE.Mesh> {
35
35
  getMaterial(index: number) {
36
36
  var visualizer = this.visualizer
37
37
 
38
- if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')))
38
+ if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.getState('status')))
39
39
  return this.userDefineDefaultMaterial
40
40
 
41
- var stockStatus = visualizer.legendTarget.get('status')
41
+ var stockStatus = visualizer.legendTarget.getState('status')
42
42
  var range = stockStatus.ranges[index]
43
43
  if (!(range && range.color)) {
44
44
  this.stockMaterials[index] = this.userDefineDefaultMaterial
@@ -80,10 +80,10 @@ export class Stock extends RealObject<THREE.Mesh> {
80
80
  var visualizer = this.visualizer
81
81
 
82
82
  if (!visualizer!._default_material) {
83
- if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')))
83
+ if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.getState('status')))
84
84
  return Stock.defaultMaterial
85
85
 
86
- var stockStatus = visualizer!.legendTarget.get('status')
86
+ var stockStatus = visualizer!.legendTarget.getState('status')
87
87
  var defaultColor = stockStatus.defaultColor
88
88
 
89
89
  if (!defaultColor) return Stock.defaultMaterial
@@ -107,8 +107,8 @@ export class Stock extends RealObject<THREE.Mesh> {
107
107
 
108
108
  var defaultColor = STOCK_COLOR
109
109
  if (!visualizer!._empty_material) {
110
- if (visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')) {
111
- var stockStatus = visualizer!.legendTarget.get('status')
110
+ if (visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.getState('status')) {
111
+ var stockStatus = visualizer!.legendTarget.getState('status')
112
112
  defaultColor = stockStatus.defaultColor || STOCK_COLOR
113
113
  }
114
114
 
@@ -160,9 +160,9 @@ export class Stock extends RealObject<THREE.Mesh> {
160
160
  }
161
161
  var visualizer = this.visualizer
162
162
 
163
- if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status'))) return
163
+ if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.getState('status'))) return
164
164
 
165
- var stockStatus = visualizer!.legendTarget.get('status') as {
165
+ var stockStatus = visualizer!.legendTarget.getState('status') as {
166
166
  field: string
167
167
  ranges: { min: number; max: number }[]
168
168
  }
@@ -624,7 +624,7 @@ export class ThreeContainer extends Container implements ThreeDimensionalContain
624
624
 
625
625
  ondblclick(e: MouseEvent) {
626
626
  if (this._controls) {
627
- this.setState('zoom', this.get('zoom'))
627
+ this.setState('zoom', this.getState('zoom'))
628
628
  this._controls.reset()
629
629
  e.stopPropagation()
630
630
  }
@@ -540,10 +540,10 @@ var ThreeControls = function (this: any, object: THREE.Camera, component: Compon
540
540
  var element = scope.component
541
541
 
542
542
  // rotating across whole screen goes 360 degrees around
543
- rotateLeft(((2 * Math.PI * rotateDelta.x) / element.get('width')) * scope.rotateSpeed)
543
+ rotateLeft(((2 * Math.PI * rotateDelta.x) / element.getState('width')) * scope.rotateSpeed)
544
544
 
545
545
  // rotating up and down along whole screen attempts to go 360, but limited to 180
546
- rotateUp(((2 * Math.PI * rotateDelta.y) / element.get('height')) * scope.rotateSpeed)
546
+ rotateUp(((2 * Math.PI * rotateDelta.y) / element.getState('height')) * scope.rotateSpeed)
547
547
 
548
548
  rotateStart.copy(rotateEnd)
549
549
 
@@ -633,7 +633,7 @@ export class ThreeSpace extends Container implements ThreeDimensionalContainer {
633
633
 
634
634
  ondblclick(e: MouseEvent) {
635
635
  if (this._controls) {
636
- this.setState('zoom', this.get('zoom'))
636
+ this.setState('zoom', this.getState('zoom'))
637
637
  this._controls.reset()
638
638
  e.stopPropagation()
639
639
  }
package/tsconfig.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "module": "esnext",
5
5
  "moduleResolution": "node",
6
6
  "noEmitOnError": true,
7
- "lib": ["es2017", "dom"],
7
+ "lib": ["es2019", "dom"],
8
8
  "strict": true,
9
9
  "esModuleInterop": false,
10
10
  "allowSyntheticDefaultImports": true,
@@ -16,7 +16,7 @@
16
16
  "rootDir": "src",
17
17
  "declaration": true,
18
18
  "incremental": true,
19
- "types": ["node"]
19
+ "types": []
20
20
  },
21
21
  "include": ["**/*.ts", "**/*.d.ts"]
22
22
  }