@operato/scene-visualizer 1.2.90 → 1.2.91

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/attachments/0d91a37d-c2d7-4c6d-88dc-a29e5bbea361.png +0 -0
  3. package/attachments/1b07c8d3-07d5-4007-b02e-031ee1755539.glb +0 -0
  4. package/attachments/226c6c23-c4fd-46c8-93e3-3d3d9c4bb8a9.glb +0 -0
  5. package/attachments/4425ca46-cf1d-476d-9185-dcb881ecad1f.glb +0 -0
  6. package/attachments/51e7c45d-6eae-4baf-a4e2-ba979b7e77cd.glb +0 -0
  7. package/attachments/54427925-c109-4499-875c-fb14207b95c5.glb +0 -0
  8. package/attachments/8cc70a65-e20f-4187-83c8-64deb3faf3d9.glb +0 -0
  9. package/attachments/964d004d-1fe7-4224-89a6-2b6e86db233c.glb +0 -0
  10. package/attachments/ff47fd63-6f1c-4a69-b965-9bb03797a415.png +0 -0
  11. package/db.sqlite +0 -0
  12. package/dist/banner.d.ts +1 -0
  13. package/dist/banner.js.map +1 -1
  14. package/dist/camera.d.ts +1 -0
  15. package/dist/camera.js.map +1 -1
  16. package/dist/cube.d.ts +1 -0
  17. package/dist/cylinder.d.ts +1 -0
  18. package/dist/desk.d.ts +1 -0
  19. package/dist/desk.js.map +1 -1
  20. package/dist/editors/property-editor-gltf-info.d.ts +1 -0
  21. package/dist/editors/property-editor-gltf-info.js.map +1 -1
  22. package/dist/editors/property-editor-location-increase-pattern.js.map +1 -1
  23. package/dist/gltf-object.d.ts +1 -0
  24. package/dist/gltf-object.js.map +1 -1
  25. package/dist/light.d.ts +1 -0
  26. package/dist/light.js.map +1 -1
  27. package/dist/polygon.js.map +1 -1
  28. package/dist/rack-table-cell.d.ts +1 -0
  29. package/dist/rack-table-cell.js.map +1 -1
  30. package/dist/rack-table.js.map +1 -1
  31. package/dist/rack.js.map +1 -1
  32. package/dist/rect.js.map +1 -1
  33. package/dist/scene/component.js.map +1 -1
  34. package/dist/sphere.d.ts +1 -0
  35. package/dist/sprite.d.ts +1 -0
  36. package/dist/stock.d.ts +1 -0
  37. package/dist/stock.js.map +1 -1
  38. package/dist/three-container-editor.js.map +1 -1
  39. package/dist/three-container.js.map +1 -1
  40. package/dist/three-controls.d.ts +1 -0
  41. package/dist/three-controls.js.map +1 -1
  42. package/dist/three-layout.d.ts +1 -0
  43. package/dist/three-space.js.map +1 -1
  44. package/dist/threed/common.js.map +1 -1
  45. package/dist/threed/floor/floor.d.ts +1 -0
  46. package/dist/threed/floor/floor.js.map +1 -1
  47. package/dist/threed/real-object-camera-meshed.js.map +1 -1
  48. package/dist/threed/real-object-extrude.js.map +1 -1
  49. package/dist/threed/real-object-gltf.d.ts +1 -0
  50. package/dist/threed/real-object-gltf.js.map +1 -1
  51. package/dist/threed/real-object-mesh.js.map +1 -1
  52. package/dist/threed/real-object-scene.js.map +1 -1
  53. package/dist/threed/real-object-sprite-2d.js.map +1 -1
  54. package/dist/threed/real-object-sprite.js.map +1 -1
  55. package/dist/threed/real-object-text.js.map +1 -1
  56. package/dist/threed/real-object.d.ts +1 -0
  57. package/dist/threed/real-object.js.map +1 -1
  58. package/dist/threed/texture/canvas-texture.d.ts +1 -0
  59. package/dist/threed/texture/canvas-texture.js.map +1 -1
  60. package/dist/threed/texture/text-texture.js.map +1 -1
  61. package/dist/threed/three-dimensional-container.d.ts +1 -0
  62. package/dist/threed/utils/bound-uv-generator.js.map +1 -1
  63. package/dist/visualizer.d.ts +1 -0
  64. package/dist/visualizer.js.map +1 -1
  65. package/dist/wall.d.ts +1 -0
  66. package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +15 -0
  67. package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +20 -0
  68. package/logs/application-2023-11-26-10.log +6 -0
  69. package/logs/connections-2023-11-12-12.log +38 -0
  70. package/logs/connections-2023-11-26-10.log +41 -0
  71. package/package.json +2 -2
  72. package/schema.gql +3761 -0
  73. package/schema.graphql +73 -0
  74. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.2.91](https://github.com/things-scene/operato-scene/compare/v1.2.90...v1.2.91) (2023-11-26)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * support 3-dimension for location property ([fc6aad1](https://github.com/things-scene/operato-scene/commit/fc6aad1f5dc6df985acf6942e2b955be9410962b))
12
+
13
+
14
+
6
15
  ## [1.2.90](https://github.com/things-scene/operato-scene/compare/v1.2.89...v1.2.90) (2023-11-22)
7
16
 
8
17
  **Note:** Version bump only for package @operato/scene-visualizer
package/db.sqlite ADDED
Binary file
package/dist/banner.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import * as THREE from 'three';
2
3
  import { Shape } from '@hatiolab/things-scene';
3
4
  import { RealObject } from './threed/real-object';
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport * as THREE from 'three'\nimport { Component, RectPath, Shape } from '@hatiolab/things-scene'\nimport { RealObject } from './threed/real-object'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'color',\n label: 'box-color',\n name: 'boxColor',\n property: 'boxColor'\n }\n ],\n help: 'scene/component/banner'\n}\n\nexport class Banner3D extends RealObject {\n build() {\n super.build()\n\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n this.object3d.add(this.createCube(width, height, depth))\n\n let textureBoard = this.createTextureBoard(width, depth)\n textureBoard.position.set(0, 0, 0.5 * height + 1)\n this.object3d.add(textureBoard)\n }\n\n createCube(w: number, h: number, d: number) {\n var { boxColor = '#ccaa76' } = this.component.state\n\n var geometry = new THREE.BoxGeometry(w, d, h)\n var material = new THREE.MeshStandardMaterial({\n color: boxColor,\n side: THREE.FrontSide\n })\n\n var cube = new THREE.Mesh(geometry, material)\n cube.castShadow = true\n\n return cube\n }\n\n createTextureBoard(w: number, h: number) {\n var boardMaterial\n\n let { fillStyle = '#ccaa76' } = this.component.state\n const texture = RealObject.buildFillStyleTexture(this.component)\n\n if (texture) {\n boardMaterial = new THREE.MeshStandardMaterial({ map: texture })\n } else {\n boardMaterial = new THREE.MeshStandardMaterial({\n color: fillStyle || '#ccaa76',\n side: THREE.FrontSide\n })\n }\n\n var boardGeometry = new THREE.PlaneGeometry(w, h, 1, 1)\n var boardMesh = new THREE.Mesh(boardGeometry, boardMaterial)\n boardMesh.castShadow = true\n\n return boardMesh\n }\n}\n\nexport class Banner extends RectPath(Shape) {\n is3dish() {\n return true\n }\n\n get nature() {\n return NATURE\n }\n\n buildRealObject(): RealObject | undefined {\n return new Banner3D(this)\n }\n}\n\nComponent.register('banner', Banner)\n"]}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport * as THREE from 'three'\nimport { Component, RectPath, Shape } from '@hatiolab/things-scene'\nimport { RealObject } from './threed/real-object'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'color',\n label: 'box-color',\n name: 'boxColor',\n property: 'boxColor'\n }\n ],\n help: 'scene/component/banner'\n}\n\nexport class Banner3D extends RealObject {\n build() {\n super.build()\n\n var { width = 1, height = 1, depth = 1 } = this.component.state\n\n this.object3d.add(this.createCube(width, height, depth))\n\n let textureBoard = this.createTextureBoard(width, depth)\n textureBoard.position.set(0, 0, 0.5 * height + 1)\n this.object3d.add(textureBoard)\n }\n\n createCube(w: number, h: number, d: number) {\n var { boxColor = '#ccaa76' } = this.component.state\n\n var geometry = new THREE.BoxGeometry(w, d, h)\n var material = new THREE.MeshStandardMaterial({\n color: boxColor,\n side: THREE.FrontSide\n })\n\n var cube = new THREE.Mesh(geometry, material)\n cube.castShadow = true\n\n return cube\n }\n\n createTextureBoard(w: number, h: number) {\n var boardMaterial\n\n let { fillStyle = '#ccaa76' } = this.component.state\n const texture = RealObject.buildFillStyleTexture(this.component)\n\n if (texture) {\n boardMaterial = new THREE.MeshStandardMaterial({ map: texture })\n } else {\n boardMaterial = new THREE.MeshStandardMaterial({\n color: fillStyle || '#ccaa76',\n side: THREE.FrontSide\n })\n }\n\n var boardGeometry = new THREE.PlaneGeometry(w, h, 1, 1)\n var boardMesh = new THREE.Mesh(boardGeometry, boardMaterial)\n boardMesh.castShadow = true\n\n return boardMesh\n }\n}\n\nexport class Banner extends RectPath(Shape) {\n is3dish() {\n return true\n }\n\n get nature() {\n return NATURE\n }\n\n buildRealObject(): RealObject | undefined {\n return new Banner3D(this)\n }\n}\n\nComponent.register('banner', Banner)\n"]}
package/dist/camera.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import { ComponentNature, Shape } from '@hatiolab/things-scene';
2
3
  import * as THREE from 'three';
3
4
  import { RealObject } from './threed/real-object';
@@ -1 +1 @@
1
- {"version":3,"file":"camera.js","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, ComponentNature, RectPath, Shape } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\n\nconst DEFAULT = {\n far: 100000,\n fov: 80,\n near: 1,\n zoom: 1\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'near',\n name: 'near'\n },\n {\n type: 'number',\n label: 'far',\n name: 'far'\n },\n {\n type: 'number',\n label: 'fov',\n name: 'fov'\n },\n {\n type: 'number',\n label: 'zoom',\n name: 'zoom'\n },\n {\n type: 'checkbox',\n label: 'show-helper',\n name: 'showHelper'\n }\n ],\n help: 'scene/component/camera'\n}\n\nexport class Camera3D extends RealObject<THREE.Mesh> {\n camera?: THREE.PerspectiveCamera\n helper?: THREE.CameraHelper\n\n protected getObject3dInstance() {\n return new THREE.Mesh()\n }\n\n updateCamera() {\n var {\n near = DEFAULT.near,\n far = DEFAULT.far,\n fov = DEFAULT.fov,\n zoom = DEFAULT.zoom,\n showHelper\n } = this.component.state\n\n this.camera!.far = far\n this.camera!.fov = fov\n this.camera!.near = near\n this.camera!.zoom = zoom\n\n if (showHelper) {\n if (!this.helper) {\n this.helper = new THREE.CameraHelper(this.camera!)\n this.object3d.add(this.helper)\n }\n } else if (this.helper) {\n this.object3d.remove(this.helper)\n delete this.helper\n }\n }\n\n build() {\n super.build()\n\n var { width = 0, height = 0, depth = 0, fillStyle = 'lightgray' } = this.component.state\n\n this.object3d.geometry = new THREE.BoxGeometry(width, depth, height)\n this.object3d.material = new THREE.MeshStandardMaterial({ color: fillStyle, side: THREE.FrontSide })\n\n this.camera = new THREE.PerspectiveCamera()\n this.camera.position.set(0, 0, 0)\n\n this.object3d.add(this.camera)\n this.object3d.lookAt(0, 0, 0)\n\n this.updateCamera()\n }\n}\n\nexport class Camera extends RectPath(Shape) {\n static _image: HTMLImageElement\n\n is3dish() {\n return true\n }\n\n static get image() {\n if (!Camera._image) {\n Camera._image = new Image()\n Camera._image.src = new URL('../icons/camera-big.png', import.meta.url).href\n }\n\n return Camera._image\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, Camera.image, left, top, width, height)\n }\n\n buildRealObject(): RealObject | undefined {\n return new Camera3D(this)\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n}\n\nComponent.register('camera', Camera)\n"]}
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, ComponentNature, RectPath, Shape } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\n\nconst DEFAULT = {\n far: 100000,\n fov: 80,\n near: 1,\n zoom: 1\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'near',\n name: 'near'\n },\n {\n type: 'number',\n label: 'far',\n name: 'far'\n },\n {\n type: 'number',\n label: 'fov',\n name: 'fov'\n },\n {\n type: 'number',\n label: 'zoom',\n name: 'zoom'\n },\n {\n type: 'checkbox',\n label: 'show-helper',\n name: 'showHelper'\n }\n ],\n help: 'scene/component/camera'\n}\n\nexport class Camera3D extends RealObject<THREE.Mesh> {\n camera?: THREE.PerspectiveCamera\n helper?: THREE.CameraHelper\n\n protected getObject3dInstance() {\n return new THREE.Mesh()\n }\n\n updateCamera() {\n var {\n near = DEFAULT.near,\n far = DEFAULT.far,\n fov = DEFAULT.fov,\n zoom = DEFAULT.zoom,\n showHelper\n } = this.component.state\n\n this.camera!.far = far\n this.camera!.fov = fov\n this.camera!.near = near\n this.camera!.zoom = zoom\n\n if (showHelper) {\n if (!this.helper) {\n this.helper = new THREE.CameraHelper(this.camera!)\n this.object3d.add(this.helper)\n }\n } else if (this.helper) {\n this.object3d.remove(this.helper)\n delete this.helper\n }\n }\n\n build() {\n super.build()\n\n var { width = 0, height = 0, depth = 0, fillStyle = 'lightgray' } = this.component.state\n\n this.object3d.geometry = new THREE.BoxGeometry(width, depth, height)\n this.object3d.material = new THREE.MeshStandardMaterial({ color: fillStyle, side: THREE.FrontSide })\n\n this.camera = new THREE.PerspectiveCamera()\n this.camera.position.set(0, 0, 0)\n\n this.object3d.add(this.camera)\n this.object3d.lookAt(0, 0, 0)\n\n this.updateCamera()\n }\n}\n\nexport class Camera extends RectPath(Shape) {\n static _image: HTMLImageElement\n\n is3dish() {\n return true\n }\n\n static get image() {\n if (!Camera._image) {\n Camera._image = new Image()\n Camera._image.src = new URL('../icons/camera-big.png', import.meta.url).href\n }\n\n return Camera._image\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, Camera.image, left, top, width, height)\n }\n\n buildRealObject(): RealObject | undefined {\n return new Camera3D(this)\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n}\n\nComponent.register('camera', Camera)\n"]}
package/dist/cube.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import { Shape } from '@hatiolab/things-scene';
2
3
  import { RealObject } from './threed/real-object';
3
4
  import { RealObjectMesh } from './threed/real-object-mesh';
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import { Ellipse } from '@hatiolab/things-scene';
2
3
  import { RealObject } from './threed/real-object';
3
4
  import { RealObjectMesh } from './threed/real-object-mesh';
package/dist/desk.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import { Shape } from '@hatiolab/things-scene';
2
3
  import * as THREE from 'three';
3
4
  import { RealObject } from './threed/real-object';
package/dist/desk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"desk.js","sourceRoot":"","sources":["../src/desk.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, RectPath, Shape } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'color',\n label: 'leg-color',\n name: 'legColor',\n property: 'legColor'\n }\n ],\n help: 'scene/component/desk'\n}\n\nexport class Desk3D extends RealObject {\n get boardThickness() {\n var { depth } = this.component.state\n\n return Math.min(10, depth / 10)\n }\n\n get legThickness() {\n var { width, height } = this.component.state\n\n var min = Math.min(width, height)\n\n return Math.min(10, min / 10)\n }\n\n get margin() {\n return Math.min(this.legThickness / 5, 2)\n }\n\n build() {\n super.build()\n\n var { width, height, depth } = this.component.state\n\n var top = (depth - this.boardThickness) / 2\n\n var legs = this.createDeskLegs(width, height, depth)\n legs.position.set(0, -this.boardThickness / 2, 0)\n legs.castShadow = true\n\n this.object3d.add(legs)\n\n let board = this.createDeskBoard(width, height)\n board.position.set(0, top, 0)\n board.rotation.x = Math.PI / 2\n board.castShadow = true\n\n this.object3d.add(board)\n }\n\n createDeskLegs(w: number, h: number, d: number) {\n var { legColor } = this.component.state\n\n var legThickness = this.legThickness\n var margin = this.margin\n d -= this.boardThickness\n\n var legs = new THREE.Group()\n\n var posX = w / 2 - legThickness / 2 - margin\n var posY = h / 2 - legThickness / 2 - margin\n var posZ = 0\n\n for (var i = 0; i < 4; i++) {\n var geometry = new THREE.BoxGeometry(legThickness, d, legThickness)\n var material = new THREE.MeshStandardMaterial({\n color: legColor || '#252525'\n })\n\n var leg = new THREE.Mesh(geometry, material)\n leg.castShadow = true\n\n switch (i) {\n case 0:\n leg.position.set(posX, posZ, posY)\n break\n case 1:\n leg.position.set(posX, posZ, -posY)\n break\n case 2:\n leg.position.set(-posX, posZ, posY)\n break\n case 3:\n leg.position.set(-posX, posZ, -posY)\n break\n }\n\n legs.add(leg)\n }\n\n return legs\n }\n\n createDeskBoard(w: number, h: number) {\n var { fillStyle } = this.component.state\n\n var d = 10\n\n var boardMaterial = new THREE.MeshStandardMaterial({\n color: fillStyle || '#ccaa76'\n })\n var boardGeometry = new THREE.BoxGeometry(w, h, d, 1, 1)\n var board = new THREE.Mesh(boardGeometry, boardMaterial)\n\n return board\n }\n}\n\nexport class Desk extends RectPath(Shape) {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new Desk3D(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('desk', Desk)\n"]}
1
+ {"version":3,"file":"desk.js","sourceRoot":"","sources":["../src/desk.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, RectPath, Shape } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'color',\n label: 'leg-color',\n name: 'legColor',\n property: 'legColor'\n }\n ],\n help: 'scene/component/desk'\n}\n\nexport class Desk3D extends RealObject {\n get boardThickness() {\n var { depth } = this.component.state\n\n return Math.min(10, depth / 10)\n }\n\n get legThickness() {\n var { width, height } = this.component.state\n\n var min = Math.min(width, height)\n\n return Math.min(10, min / 10)\n }\n\n get margin() {\n return Math.min(this.legThickness / 5, 2)\n }\n\n build() {\n super.build()\n\n var { width, height, depth } = this.component.state\n\n var top = (depth - this.boardThickness) / 2\n\n var legs = this.createDeskLegs(width, height, depth)\n legs.position.set(0, -this.boardThickness / 2, 0)\n legs.castShadow = true\n\n this.object3d.add(legs)\n\n let board = this.createDeskBoard(width, height)\n board.position.set(0, top, 0)\n board.rotation.x = Math.PI / 2\n board.castShadow = true\n\n this.object3d.add(board)\n }\n\n createDeskLegs(w: number, h: number, d: number) {\n var { legColor } = this.component.state\n\n var legThickness = this.legThickness\n var margin = this.margin\n d -= this.boardThickness\n\n var legs = new THREE.Group()\n\n var posX = w / 2 - legThickness / 2 - margin\n var posY = h / 2 - legThickness / 2 - margin\n var posZ = 0\n\n for (var i = 0; i < 4; i++) {\n var geometry = new THREE.BoxGeometry(legThickness, d, legThickness)\n var material = new THREE.MeshStandardMaterial({\n color: legColor || '#252525'\n })\n\n var leg = new THREE.Mesh(geometry, material)\n leg.castShadow = true\n\n switch (i) {\n case 0:\n leg.position.set(posX, posZ, posY)\n break\n case 1:\n leg.position.set(posX, posZ, -posY)\n break\n case 2:\n leg.position.set(-posX, posZ, posY)\n break\n case 3:\n leg.position.set(-posX, posZ, -posY)\n break\n }\n\n legs.add(leg)\n }\n\n return legs\n }\n\n createDeskBoard(w: number, h: number) {\n var { fillStyle } = this.component.state\n\n var d = 10\n\n var boardMaterial = new THREE.MeshStandardMaterial({\n color: fillStyle || '#ccaa76'\n })\n var boardGeometry = new THREE.BoxGeometry(w, h, d, 1, 1)\n var board = new THREE.Mesh(boardGeometry, boardMaterial)\n\n return board\n }\n}\n\nexport class Desk extends RectPath(Shape) {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new Desk3D(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('desk', Desk)\n"]}
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../src/component.d.ts" />
1
2
  import '@operato/i18n/ox-i18n.js';
2
3
  import { PropertyValues, TemplateResult } from 'lit';
3
4
  import { OxPropertyEditor, PropertySpec } from '@operato/property-editor';
@@ -1 +1 @@
1
- {"version":3,"file":"property-editor-gltf-info.js","sourceRoot":"","sources":["../../src/editors/property-editor-gltf-info.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { css, html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\nimport { Component } from '@hatiolab/things-scene'\n\nimport * as THREE from 'three'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'\n\n@customElement('property-editor-gltf-info')\nexport default class GLTFInfoEditor extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n div[info] {\n display: flex;\n flex-direction: row;\n font-size: 12px;\n }\n\n div[info] * {\n align-self: center;\n }\n\n div[info] title {\n font-weight: bold;\n }\n\n div[info] mwc-icon-button {\n margin-left: auto;\n --mdc-icon-button-size: 24px;\n }\n `\n ]\n\n @property({ type: Number }) src?: string\n\n @state() width: number = 0\n @state() height: number = 0\n @state() depth: number = 0\n\n editorTemplate(value: any, spec: PropertySpec): TemplateResult {\n const valid = this.width && this.height && this.depth\n\n var property = spec.property || {}\n var { action } = property\n\n return html`\n <fieldset fullwidth>\n <legend><ox-i18n msgid=\"label.gltf-info\">GLTF info.</ox-i18n></legend>\n\n <div>\n <div info>\n <div label>[W x H x D] :</div>\n ${valid\n ? html` <div value>${this.width} x ${this.height} x ${this.depth}</div>\n <mwc-icon-button\n icon=\"autorenew\"\n @click=${(e: MouseEvent) => {\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: any[]) => {\n typeof action === 'function' &&\n action(selected[0], {\n width: this.width,\n height: this.height,\n depth: this.depth\n })\n }\n }\n })\n )\n }}\n ></mwc-icon-button>`\n : html` <div></div> `}\n </div>\n </div>\n </fieldset>\n `\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('src')) {\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: async (selected: any[]) => {\n await this.fetchSourceInfo(selected[0], this.src!)\n }\n }\n })\n )\n }\n }\n\n async fetchSourceInfo(component: Component, src: string) {\n if (!src || !src.trim()) {\n return\n }\n\n try {\n const path = component.app.url(src)\n\n let gltfLoader = new GLTFLoader()\n\n gltfLoader.setCrossOrigin('use-credentials')\n\n return new Promise((resolve: any) => {\n gltfLoader.load(path, gltf => {\n var box = new THREE.Box3().setFromObject(gltf.scene)\n var { x, y, z } = box.getSize(new THREE.Vector3())\n\n this.width = Math.floor(x)\n this.depth = Math.floor(y)\n this.height = Math.floor(z)\n\n resolve()\n })\n })\n } catch (e) {\n console.error(e)\n return\n }\n }\n}\n"]}
1
+ {"version":3,"file":"property-editor-gltf-info.js","sourceRoot":"","sources":["../../src/editors/property-editor-gltf-info.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { css, html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\nimport { Component } from '@hatiolab/things-scene'\n\nimport * as THREE from 'three'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'\n\n@customElement('property-editor-gltf-info')\nexport default class GLTFInfoEditor extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n div[info] {\n display: flex;\n flex-direction: row;\n font-size: 12px;\n }\n\n div[info] * {\n align-self: center;\n }\n\n div[info] title {\n font-weight: bold;\n }\n\n div[info] mwc-icon-button {\n margin-left: auto;\n --mdc-icon-button-size: 24px;\n }\n `\n ]\n\n @property({ type: Number }) src?: string\n\n @state() width: number = 0\n @state() height: number = 0\n @state() depth: number = 0\n\n editorTemplate(value: any, spec: PropertySpec): TemplateResult {\n const valid = this.width && this.height && this.depth\n\n var property = spec.property || {}\n var { action } = property\n\n return html`\n <fieldset fullwidth>\n <legend><ox-i18n msgid=\"label.gltf-info\">GLTF info.</ox-i18n></legend>\n\n <div>\n <div info>\n <div label>[W x H x D] :</div>\n ${valid\n ? html` <div value>${this.width} x ${this.height} x ${this.depth}</div>\n <mwc-icon-button\n icon=\"autorenew\"\n @click=${(e: MouseEvent) => {\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: any[]) => {\n typeof action === 'function' &&\n action(selected[0], {\n width: this.width,\n height: this.height,\n depth: this.depth\n })\n }\n }\n })\n )\n }}\n ></mwc-icon-button>`\n : html` <div></div> `}\n </div>\n </div>\n </fieldset>\n `\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('src')) {\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: async (selected: any[]) => {\n await this.fetchSourceInfo(selected[0], this.src!)\n }\n }\n })\n )\n }\n }\n\n async fetchSourceInfo(component: Component, src: string) {\n if (!src || !src.trim()) {\n return\n }\n\n try {\n const path = component.app.url(src)\n\n let gltfLoader = new GLTFLoader()\n\n gltfLoader.setCrossOrigin('use-credentials')\n\n return new Promise((resolve: any) => {\n gltfLoader.load(path, gltf => {\n var box = new THREE.Box3().setFromObject(gltf.scene)\n var { x, y, z } = box.getSize(new THREE.Vector3())\n\n this.width = Math.floor(x)\n this.depth = Math.floor(y)\n this.height = Math.floor(z)\n\n resolve()\n })\n })\n } catch (e) {\n console.error(e)\n return\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"property-editor-location-increase-pattern.js","sourceRoot":"","sources":["../../src/editors/property-editor-location-increase-pattern.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\n\n@customElement('property-editor-location-increase-pattern')\nexport default class LocationIncreasePatternEditor extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n fieldset {\n border: none;\n border-bottom: 1px solid #cfd8dc;\n color: var(--primary-text-color);\n font-size: 12px;\n padding: 0 0 10px 0;\n margin: 0 0 10px 0;\n }\n\n fieldset legend {\n padding: 5px 0 0 5px;\n font-size: 11px;\n color: #e46c2e;\n font-weight: bold;\n text-transform: capitalize;\n }\n\n .property-grid {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n margin: 10px 0 0 0;\n }\n\n .property-grid > * {\n line-height: 1.5;\n }\n\n #border-set > mwc-icon {\n grid-column: span 2;\n margin: 0 0 0 8px;\n width: 32px;\n height: 32px;\n }\n\n .property-grid > label {\n grid-column: span 3;\n text-align: right;\n text-transform: capitalize;\n }\n\n .property-grid > paper-dropdown-menu,\n .property-grid > input {\n grid-column: span 7;\n padding: 0;\n margin: 0;\n }\n\n .property-grid > .checkbox-row {\n grid-column: span 10;\n\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n align-items: center;\n }\n\n .checkbox-row > input {\n grid-column: span 4 / auto;\n order: 1;\n place-self: center end;\n }\n\n .checkbox-row > label {\n grid-column: span 6;\n text-align: left;\n }\n\n #pattern-set {\n overflow: hidden;\n grid-column: 1 / -1;\n }\n\n #pattern-set paper-button {\n background: url('data:image/png;base64,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')\n no-repeat;\n display: block;\n float: left;\n margin: 0 7px 10px 0 !important;\n width: 55px;\n height: 40px;\n min-width: inherit;\n }\n #pattern-set paper-button iron-icon {\n display: none;\n }\n #pattern-set paper-button[data-value='+u+s'] {\n background-position: 50% 3px;\n }\n #pattern-set paper-button[data-value='+u-s'] {\n background-position: 50% -97px;\n }\n #pattern-set paper-button[data-value='-u+s'] {\n background-position: 50% -197px;\n }\n #pattern-set paper-button[data-value='-u-s'] {\n background-position: 50% -297px;\n }\n #pattern-set paper-button[data-value='+s+u'] {\n background-position: 50% -397px;\n }\n #pattern-set paper-button[data-value='+s-u'] {\n background-position: 50% -497px;\n }\n #pattern-set paper-button[data-value='-s+u'] {\n background-position: 50% -597px;\n }\n #pattern-set paper-button[data-value='-s-u'] {\n background-position: 50% -697px;\n }\n #pattern-set paper-button[data-value='cw'] {\n background-position: 50% -797px;\n }\n #pattern-set paper-button[data-value='ccw'] {\n background-position: 50% -897px;\n }\n #pattern-set paper-button[data-value='zigzag'] {\n background-position: 50% -997px;\n }\n #pattern-set paper-button[data-value='zigzag-reverse'] {\n background-position: 50% -1097px;\n }\n\n label {\n order: initial;\n }\n\n input {\n order: initial;\n }\n\n #skip-numbering {\n order: initial;\n grid-column: span 4;\n }\n label[for='skip-numbering'] {\n order: 1;\n grid-column: span 5;\n text-align: left;\n }\n `\n ]\n\n editorTemplate(value: any, spec: PropertySpec): TemplateResult {\n // TODO: background image change to use the url-loader\n return html`\n <fieldset fullwidth>\n <legend><ox-i18n msgid=\"label.location-increase-pattern\">Increase Pattern</ox-i18n></legend>\n\n <div class=\"property-grid\">\n <label> <ox-i18n msgid=\"label.start-section\">Start Section</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-section\n value=\"${this.startSection}\"\n @change=${(e: Event) => (this.startSection = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <label> <ox-i18n msgid=\"label.start-unit\">Start Unit</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-unit\n value=\"${this.startUnit}\"\n @change=${(e: Event) => (this.startUnit = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <div class=\"checkbox-row\" fullwidth>\n <input id=\"skip-numbering\" type=\"checkbox\" data-skip-numbering ?checked=\"${this.skipNumbering}\" />\n <label for=\"skip-numbering\">\n <ox-i18n msgid=\"label.skip-numbering\">Skip Numbering</ox-i18n>\n </label>\n </div>\n\n <div\n id=\"pattern-set\"\n class=\"property-grid location-increase-pattern-btn\"\n @click=${(e: Event) => this._onTapType(e)}\n >\n <paper-button data-value=\"cw\"> <iron-icon icon=\"editor:border-outer\"></iron-icon> </paper-button>\n <paper-button data-value=\"ccw\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag-reverse\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n </div>\n </div>\n </fieldset>\n `\n }\n\n @property({ type: Number }) startSection: number = 1\n @property({ type: Number }) startUnit: number = 1\n @property({ type: Boolean }) skipNumbering: boolean = true\n @property({ type: Object }) _specificPropEl: HTMLElement | null = null\n\n connectedCallback() {\n super.connectedCallback()\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.addEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.removeEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n _onTapType(e: Event) {\n var target = e.target as HTMLElement\n\n const increasingDirection = target?.closest('[data-value]')?.getAttribute('data-value')\n if (!increasingDirection) {\n return\n }\n\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: any[]) => {\n const table = selected[0].parent\n table.increaseLocation(increasingDirection, this.skipNumbering, this.startSection, this.startUnit)\n }\n }\n })\n )\n\n e.stopPropagation()\n }\n}\n"]}
1
+ {"version":3,"file":"property-editor-location-increase-pattern.js","sourceRoot":"","sources":["../../src/editors/property-editor-location-increase-pattern.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\n\n@customElement('property-editor-location-increase-pattern')\nexport default class LocationIncreasePatternEditor extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n fieldset {\n border: none;\n border-bottom: 1px solid #cfd8dc;\n color: var(--primary-text-color);\n font-size: 12px;\n padding: 0 0 10px 0;\n margin: 0 0 10px 0;\n }\n\n fieldset legend {\n padding: 5px 0 0 5px;\n font-size: 11px;\n color: #e46c2e;\n font-weight: bold;\n text-transform: capitalize;\n }\n\n .property-grid {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n margin: 10px 0 0 0;\n }\n\n .property-grid > * {\n line-height: 1.5;\n }\n\n #border-set > mwc-icon {\n grid-column: span 2;\n margin: 0 0 0 8px;\n width: 32px;\n height: 32px;\n }\n\n .property-grid > label {\n grid-column: span 3;\n text-align: right;\n text-transform: capitalize;\n }\n\n .property-grid > paper-dropdown-menu,\n .property-grid > input {\n grid-column: span 7;\n padding: 0;\n margin: 0;\n }\n\n .property-grid > .checkbox-row {\n grid-column: span 10;\n\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n align-items: center;\n }\n\n .checkbox-row > input {\n grid-column: span 4 / auto;\n order: 1;\n place-self: center end;\n }\n\n .checkbox-row > label {\n grid-column: span 6;\n text-align: left;\n }\n\n #pattern-set {\n overflow: hidden;\n grid-column: 1 / -1;\n }\n\n #pattern-set paper-button {\n background: url('data:image/png;base64,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')\n no-repeat;\n display: block;\n float: left;\n margin: 0 7px 10px 0 !important;\n width: 55px;\n height: 40px;\n min-width: inherit;\n }\n #pattern-set paper-button iron-icon {\n display: none;\n }\n #pattern-set paper-button[data-value='+u+s'] {\n background-position: 50% 3px;\n }\n #pattern-set paper-button[data-value='+u-s'] {\n background-position: 50% -97px;\n }\n #pattern-set paper-button[data-value='-u+s'] {\n background-position: 50% -197px;\n }\n #pattern-set paper-button[data-value='-u-s'] {\n background-position: 50% -297px;\n }\n #pattern-set paper-button[data-value='+s+u'] {\n background-position: 50% -397px;\n }\n #pattern-set paper-button[data-value='+s-u'] {\n background-position: 50% -497px;\n }\n #pattern-set paper-button[data-value='-s+u'] {\n background-position: 50% -597px;\n }\n #pattern-set paper-button[data-value='-s-u'] {\n background-position: 50% -697px;\n }\n #pattern-set paper-button[data-value='cw'] {\n background-position: 50% -797px;\n }\n #pattern-set paper-button[data-value='ccw'] {\n background-position: 50% -897px;\n }\n #pattern-set paper-button[data-value='zigzag'] {\n background-position: 50% -997px;\n }\n #pattern-set paper-button[data-value='zigzag-reverse'] {\n background-position: 50% -1097px;\n }\n\n label {\n order: initial;\n }\n\n input {\n order: initial;\n }\n\n #skip-numbering {\n order: initial;\n grid-column: span 4;\n }\n label[for='skip-numbering'] {\n order: 1;\n grid-column: span 5;\n text-align: left;\n }\n `\n ]\n\n editorTemplate(value: any, spec: PropertySpec): TemplateResult {\n // TODO: background image change to use the url-loader\n return html`\n <fieldset fullwidth>\n <legend><ox-i18n msgid=\"label.location-increase-pattern\">Increase Pattern</ox-i18n></legend>\n\n <div class=\"property-grid\">\n <label> <ox-i18n msgid=\"label.start-section\">Start Section</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-section\n value=\"${this.startSection}\"\n @change=${(e: Event) => (this.startSection = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <label> <ox-i18n msgid=\"label.start-unit\">Start Unit</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-unit\n value=\"${this.startUnit}\"\n @change=${(e: Event) => (this.startUnit = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <div class=\"checkbox-row\" fullwidth>\n <input id=\"skip-numbering\" type=\"checkbox\" data-skip-numbering ?checked=\"${this.skipNumbering}\" />\n <label for=\"skip-numbering\">\n <ox-i18n msgid=\"label.skip-numbering\">Skip Numbering</ox-i18n>\n </label>\n </div>\n\n <div\n id=\"pattern-set\"\n class=\"property-grid location-increase-pattern-btn\"\n @click=${(e: Event) => this._onTapType(e)}\n >\n <paper-button data-value=\"cw\"> <iron-icon icon=\"editor:border-outer\"></iron-icon> </paper-button>\n <paper-button data-value=\"ccw\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag-reverse\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n </div>\n </div>\n </fieldset>\n `\n }\n\n @property({ type: Number }) startSection: number = 1\n @property({ type: Number }) startUnit: number = 1\n @property({ type: Boolean }) skipNumbering: boolean = true\n @property({ type: Object }) _specificPropEl: HTMLElement | null = null\n\n connectedCallback() {\n super.connectedCallback()\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.addEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.removeEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n _onTapType(e: Event) {\n var target = e.target as HTMLElement\n\n const increasingDirection = target?.closest('[data-value]')?.getAttribute('data-value')\n if (!increasingDirection) {\n return\n }\n\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: any[]) => {\n const table = selected[0].parent\n table.increaseLocation(increasingDirection, this.skipNumbering, this.startSection, this.startUnit)\n }\n }\n })\n )\n\n e.stopPropagation()\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import { Control, Shape } from '@hatiolab/things-scene';
2
3
  import { RealObject } from './threed/real-object';
3
4
  declare const GLTFObject_base: typeof Shape;
@@ -1 +1 @@
1
- {"version":3,"file":"gltf-object.js","sourceRoot":"","sources":["../src/gltf-object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Control, RectPath, Shape } from '@hatiolab/things-scene'\nimport { RealObject } from './threed/real-object'\n\nimport { RealObjectGLTF } from './threed/real-object-gltf'\n\nconst BASE_URL_ALIAS = '$base_url'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'gltf-selector',\n label: 'url',\n name: 'src',\n property: {\n displayField: 'id',\n displayFullUrl: true,\n baseUrlAlias: BASE_URL_ALIAS,\n defaultStorage: '3d-model',\n storageFilters: {\n type: Array,\n value: [\n {\n name: 'category',\n value: 'image'\n }\n ]\n },\n useUpload: true,\n category: 'application'\n },\n observe: function (this: HTMLElement, src: string) {\n const info: any = this.parentNode!.querySelector('[name=gltfInfo]')\n info.src = src\n }\n },\n {\n type: 'gltf-info',\n label: '',\n name: 'gltfInfo',\n readonly: true,\n property: {\n action: (component: GLTFObject, options: any) => {\n component.set(options)\n }\n },\n editor: {\n fullwidth: true\n }\n }\n ],\n 'value-property': 'source',\n help: 'scene/component/gltf-object'\n}\n\nexport class GLTFObject extends RectPath(Shape) {\n static _image: HTMLImageElement\n\n is3dish() {\n return true\n }\n\n static get image() {\n if (!GLTFObject._image) {\n GLTFObject._image = new Image()\n GLTFObject._image.src = new URL('../icons/canvasicon-gltf.png', import.meta.url).href\n }\n\n return GLTFObject._image\n }\n\n get controls(): Array<Control> | undefined {\n return []\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, GLTFObject.image, left, top, width, height)\n }\n\n buildRealObject(): RealObject | undefined {\n return new RealObjectGLTF(this)\n }\n\n get nature() {\n return NATURE\n }\n\n get source() {\n return this.getState('src')\n }\n\n set source(source) {\n this.setState('src', source)\n }\n\n set dimension(dimension: { width: number; height: number; depth: number }) {\n const { width = 1, height = 1, depth = 1 } = dimension\n this.setState({\n width,\n height,\n depth\n })\n\n this.realObject?.updateDimension()\n }\n}\n\nComponent.register('gltf-object', GLTFObject)\n"]}
1
+ {"version":3,"file":"gltf-object.js","sourceRoot":"","sources":["../src/gltf-object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Control, RectPath, Shape } from '@hatiolab/things-scene'\nimport { RealObject } from './threed/real-object'\n\nimport { RealObjectGLTF } from './threed/real-object-gltf'\n\nconst BASE_URL_ALIAS = '$base_url'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'gltf-selector',\n label: 'url',\n name: 'src',\n property: {\n displayField: 'id',\n displayFullUrl: true,\n baseUrlAlias: BASE_URL_ALIAS,\n defaultStorage: '3d-model',\n storageFilters: {\n type: Array,\n value: [\n {\n name: 'category',\n value: 'image'\n }\n ]\n },\n useUpload: true,\n category: 'application'\n },\n observe: function (this: HTMLElement, src: string) {\n const info: any = this.parentNode!.querySelector('[name=gltfInfo]')\n info.src = src\n }\n },\n {\n type: 'gltf-info',\n label: '',\n name: 'gltfInfo',\n readonly: true,\n property: {\n action: (component: GLTFObject, options: any) => {\n component.set(options)\n }\n },\n editor: {\n fullwidth: true\n }\n }\n ],\n 'value-property': 'source',\n help: 'scene/component/gltf-object'\n}\n\nexport class GLTFObject extends RectPath(Shape) {\n static _image: HTMLImageElement\n\n is3dish() {\n return true\n }\n\n static get image() {\n if (!GLTFObject._image) {\n GLTFObject._image = new Image()\n GLTFObject._image.src = new URL('../icons/canvasicon-gltf.png', import.meta.url).href\n }\n\n return GLTFObject._image\n }\n\n get controls(): Array<Control> | undefined {\n return []\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.beginPath()\n this.drawImage(context, GLTFObject.image, left, top, width, height)\n }\n\n buildRealObject(): RealObject | undefined {\n return new RealObjectGLTF(this)\n }\n\n get nature() {\n return NATURE\n }\n\n get source() {\n return this.getState('src')\n }\n\n set source(source) {\n this.setState('src', source)\n }\n\n set dimension(dimension: { width: number; height: number; depth: number }) {\n const { width = 1, height = 1, depth = 1 } = dimension\n this.setState({\n width,\n height,\n depth\n })\n\n this.realObject?.updateDimension()\n }\n}\n\nComponent.register('gltf-object', GLTFObject)\n"]}
package/dist/light.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import { Anchor, ComponentNature, Ellipse } from '@hatiolab/things-scene';
2
3
  import * as THREE from 'three';
3
4
  import { RealObject } from './threed/real-object';
package/dist/light.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"light.js","sourceRoot":"","sources":["../src/light.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Anchor, Component, ComponentNature, Ellipse } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'light-type',\n name: 'lightType',\n property: {\n options: ['', 'point', 'directional']\n }\n },\n {\n type: 'number',\n label: 'intensity',\n name: 'intensity'\n },\n {\n type: 'number',\n label: 'distance',\n name: 'distance'\n },\n {\n type: 'number',\n label: 'decay',\n name: 'decay'\n },\n {\n type: 'checkbox',\n label: 'cast-shadow',\n name: 'castShadow'\n },\n {\n type: 'number',\n label: 'near',\n name: 'near',\n placeholder: '0.5'\n },\n {\n type: 'number',\n label: 'far',\n name: 'far',\n placeholder: '1000'\n },\n {\n type: 'number',\n label: 'fov',\n name: 'fov',\n placeholder: '90'\n },\n {\n type: 'number',\n label: 'zoom',\n name: 'zoom',\n placeholder: '1'\n },\n {\n type: 'checkbox',\n label: 'show-helper',\n name: 'showHelper'\n }\n ],\n help: 'scene/component/light'\n}\n\nexport class LightObject extends RealObject<THREE.Light> {\n helper?: THREE.CameraHelper\n\n updatePointLight() {\n var {\n lightType = 'point',\n distance = 0, // unlimited\n intensity = 10,\n decay = 1,\n fillStyle: color = 'white',\n castShadow,\n near = 0.5,\n far = 1000,\n fov = 90,\n zoom = 1,\n showHelper\n } = this.component.state\n\n this.object3d!.color = new THREE.Color(color)\n if (lightType == 'point') {\n ;(this.object3d as THREE.PointLight)!.distance = distance\n ;(this.object3d as THREE.PointLight)!.decay = decay\n }\n this.object3d!.intensity = intensity\n this.object3d!.castShadow = castShadow\n if (castShadow) {\n const camera = this.object3d!.shadow?.camera as THREE.PerspectiveCamera\n camera.far = far\n camera.near = near\n camera.fov = fov\n camera.zoom = zoom\n }\n\n if (showHelper) {\n const camera = this.object3d!.shadow?.camera as THREE.PerspectiveCamera\n\n if (!this.helper) {\n this.helper = new THREE.CameraHelper(camera!)\n this.object3d.add(this.helper)\n }\n } else if (this.helper) {\n this.object3d.remove(this.helper)\n delete this.helper\n }\n }\n\n protected getObject3dInstance(): THREE.Light {\n var { lightType = 'point' } = this.component.state\n\n return lightType == 'point' ? new THREE.PointLight() : new THREE.DirectionalLight()\n }\n\n update() {\n this.clear()\n this.build()\n\n this.updateDimension()\n this.updateHidden()\n\n this.updatePointLight()\n }\n}\n\nexport class PointLight extends Ellipse {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new LightObject(this)\n }\n\n get anchors(): Array<Anchor> {\n return []\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n}\n\nComponent.register('light', PointLight)\n"]}
1
+ {"version":3,"file":"light.js","sourceRoot":"","sources":["../src/light.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Anchor, Component, ComponentNature, Ellipse } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'select',\n label: 'light-type',\n name: 'lightType',\n property: {\n options: ['', 'point', 'directional']\n }\n },\n {\n type: 'number',\n label: 'intensity',\n name: 'intensity'\n },\n {\n type: 'number',\n label: 'distance',\n name: 'distance'\n },\n {\n type: 'number',\n label: 'decay',\n name: 'decay'\n },\n {\n type: 'checkbox',\n label: 'cast-shadow',\n name: 'castShadow'\n },\n {\n type: 'number',\n label: 'near',\n name: 'near',\n placeholder: '0.5'\n },\n {\n type: 'number',\n label: 'far',\n name: 'far',\n placeholder: '1000'\n },\n {\n type: 'number',\n label: 'fov',\n name: 'fov',\n placeholder: '90'\n },\n {\n type: 'number',\n label: 'zoom',\n name: 'zoom',\n placeholder: '1'\n },\n {\n type: 'checkbox',\n label: 'show-helper',\n name: 'showHelper'\n }\n ],\n help: 'scene/component/light'\n}\n\nexport class LightObject extends RealObject<THREE.Light> {\n helper?: THREE.CameraHelper\n\n updatePointLight() {\n var {\n lightType = 'point',\n distance = 0, // unlimited\n intensity = 10,\n decay = 1,\n fillStyle: color = 'white',\n castShadow,\n near = 0.5,\n far = 1000,\n fov = 90,\n zoom = 1,\n showHelper\n } = this.component.state\n\n this.object3d!.color = new THREE.Color(color)\n if (lightType == 'point') {\n ;(this.object3d as THREE.PointLight)!.distance = distance\n ;(this.object3d as THREE.PointLight)!.decay = decay\n }\n this.object3d!.intensity = intensity\n this.object3d!.castShadow = castShadow\n if (castShadow) {\n const camera = this.object3d!.shadow?.camera as THREE.PerspectiveCamera\n camera.far = far\n camera.near = near\n camera.fov = fov\n camera.zoom = zoom\n }\n\n if (showHelper) {\n const camera = this.object3d!.shadow?.camera as THREE.PerspectiveCamera\n\n if (!this.helper) {\n this.helper = new THREE.CameraHelper(camera!)\n this.object3d.add(this.helper)\n }\n } else if (this.helper) {\n this.object3d.remove(this.helper)\n delete this.helper\n }\n }\n\n protected getObject3dInstance(): THREE.Light {\n var { lightType = 'point' } = this.component.state\n\n return lightType == 'point' ? new THREE.PointLight() : new THREE.DirectionalLight()\n }\n\n update() {\n this.clear()\n this.build()\n\n this.updateDimension()\n this.updateHidden()\n\n this.updatePointLight()\n }\n}\n\nexport class PointLight extends Ellipse {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new LightObject(this)\n }\n\n get anchors(): Array<Anchor> {\n return []\n }\n\n get nature(): ComponentNature {\n return NATURE\n }\n}\n\nComponent.register('light', PointLight)\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"polygon.js","sourceRoot":"","sources":["../src/polygon.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { POINT, Polygon } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObjectExtrude } from './threed/real-object-extrude'\n\nexport class PolygonExtrude extends RealObjectExtrude {\n _minMax?: {\n minX?: number\n minY?: number\n maxX?: number\n maxY?: number\n }\n\n get shape() {\n var { path = [], round = 0 } = this.component.state\n\n var shape = new THREE.Shape()\n\n for (var i = 0; i < path.length; i++) {\n const prev = path[(i - 1 + path.length) % path.length]\n const cursor = path[(i + path.length) % path.length]\n const next = path[(i + 1) % path.length]\n\n if (prev.x === cursor.x && prev.y === cursor.y) {\n continue\n }\n\n var length = Math.sqrt((prev.x - cursor.x) * (prev.x - cursor.x) + (prev.y - cursor.y) * (prev.y - cursor.y))\n var theta = length !== 0 ? Math.atan2(prev.x - cursor.x, prev.y - cursor.y) : 0\n var x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x\n var y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y\n\n const p1 = round > 0 || length !== 0 ? { x, y } : cursor\n\n var length = Math.sqrt((next.x - cursor.x) * (next.x - cursor.x) + (next.y - cursor.y) * (next.y - cursor.y))\n theta = length !== 0 ? Math.atan2(next.x - cursor.x, next.y - cursor.y) : 0\n x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x\n y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y\n\n const p2 = round > 0 || length !== 0 ? { x, y } : cursor\n\n i == 0 ? shape.moveTo(p1.x, p1.y) : shape.lineTo(p1.x, p1.y)\n round > 0 && shape.quadraticCurveTo(cursor.x, cursor.y, p2.x, p2.y)\n }\n\n return shape\n }\n\n get minMax() {\n if (!this._minMax) {\n var { path } = this.component.state\n\n var minX: number | undefined\n var minY: number | undefined\n var maxX: number | undefined\n var maxY: number | undefined\n\n path.forEach((p: POINT, i: number) => {\n if (i == 0) {\n minX = maxX = p.x\n minY = maxY = p.y\n return\n }\n\n minX = Math.min(minX!, p.x)\n maxX = Math.max(maxX!, p.x)\n minY = Math.min(minY!, p.y)\n maxY = Math.max(maxY!, p.y)\n })\n\n this._minMax = {\n minX,\n minY,\n maxX,\n maxY\n }\n }\n\n return this._minMax\n }\n}\n\nPolygon.prototype.buildRealObject = function () {\n return new PolygonExtrude(this)\n}\n"]}
1
+ {"version":3,"file":"polygon.js","sourceRoot":"","sources":["../src/polygon.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { POINT, Polygon } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObjectExtrude } from './threed/real-object-extrude'\n\nexport class PolygonExtrude extends RealObjectExtrude {\n _minMax?: {\n minX?: number\n minY?: number\n maxX?: number\n maxY?: number\n }\n\n get shape() {\n var { path = [], round = 0 } = this.component.state\n\n var shape = new THREE.Shape()\n\n for (var i = 0; i < path.length; i++) {\n const prev = path[(i - 1 + path.length) % path.length]\n const cursor = path[(i + path.length) % path.length]\n const next = path[(i + 1) % path.length]\n\n if (prev.x === cursor.x && prev.y === cursor.y) {\n continue\n }\n\n var length = Math.sqrt((prev.x - cursor.x) * (prev.x - cursor.x) + (prev.y - cursor.y) * (prev.y - cursor.y))\n var theta = length !== 0 ? Math.atan2(prev.x - cursor.x, prev.y - cursor.y) : 0\n var x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x\n var y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y\n\n const p1 = round > 0 || length !== 0 ? { x, y } : cursor\n\n var length = Math.sqrt((next.x - cursor.x) * (next.x - cursor.x) + (next.y - cursor.y) * (next.y - cursor.y))\n theta = length !== 0 ? Math.atan2(next.x - cursor.x, next.y - cursor.y) : 0\n x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x\n y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y\n\n const p2 = round > 0 || length !== 0 ? { x, y } : cursor\n\n i == 0 ? shape.moveTo(p1.x, p1.y) : shape.lineTo(p1.x, p1.y)\n round > 0 && shape.quadraticCurveTo(cursor.x, cursor.y, p2.x, p2.y)\n }\n\n return shape\n }\n\n get minMax() {\n if (!this._minMax) {\n var { path } = this.component.state\n\n var minX: number | undefined\n var minY: number | undefined\n var maxX: number | undefined\n var maxY: number | undefined\n\n path.forEach((p: POINT, i: number) => {\n if (i == 0) {\n minX = maxX = p.x\n minY = maxY = p.y\n return\n }\n\n minX = Math.min(minX!, p.x)\n maxX = Math.max(maxX!, p.x)\n minY = Math.min(minY!, p.y)\n maxY = Math.max(maxY!, p.y)\n })\n\n this._minMax = {\n minX,\n minY,\n maxX,\n maxY\n }\n }\n\n return this._minMax\n }\n}\n\nPolygon.prototype.buildRealObject = function () {\n return new PolygonExtrude(this)\n}\n"]}
@@ -1,3 +1,4 @@
1
+ /// <reference path="../src/component.d.ts" />
1
2
  import { Component, Properties } from '@hatiolab/things-scene';
2
3
  import { RealObject } from './threed/real-object';
3
4
  declare const RackTableCell_base: typeof Component;
@@ -1 +1 @@
1
- {"version":3,"file":"rack-table-cell.js","sourceRoot":"","sources":["../src/rack-table-cell.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, Properties, RectPath } from '@hatiolab/things-scene'\nimport { Rack } from './rack'\nimport { RealObject } from './threed/real-object'\n\nconst EMPTY_BORDER = {}\n\nfunction isBottomMost(idx: number, rows: number, columns: number) {\n return idx >= (rows - 1) * columns\n}\n\nfunction isRightMost(idx: number, rows: number, columns: number) {\n return (idx + 1) % columns == 0\n}\n\nfunction hasAnyProperty(o: any, ...properties: string[]) {\n for (let p in properties) {\n if (o.hasOwnProperty(properties[p])) {\n return true\n }\n }\n}\n\nconst EMPTY_CELL_STROKE_STYLE = '#ccc'\nconst EMPTY_CELL_LINE_WIDTH = 1\nconst EMPTY_CELL_FILL_STYLE = '#efefef'\n\n/**\n * 1. 스타일을 상속 받아야 함. (cascade-style)\n * 2. 스타일을 동적처리할 수 있음. (로직처리)\n * 3. 데이타를 받을 수 있음.\n */\nexport class RackTableCell extends RectPath(Component) {\n _focused: boolean = false\n\n get hasTextProperty() {\n return false\n }\n\n get nature() {\n return {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'section',\n name: 'section'\n },\n {\n type: 'string',\n label: 'unit',\n name: 'unit'\n },\n {\n type: 'string',\n label: 'shelf-locations',\n name: 'shelfLocations',\n placeholder: '1,2,3,... / ,,,04'\n },\n {\n type: 'textarea',\n label: 'bin-locations',\n name: 'binLocations',\n placeholder: '1,2,3,...'\n },\n {\n type: 'checkbox',\n label: 'is-empty',\n name: 'isEmpty'\n },\n {\n type: 'location-increase-pattern',\n label: '',\n name: '',\n property: {\n event: {\n 'increase-location-pattern': (event: CustomEvent) => {\n var { increasingDirection, skipNumbering, startSection, startUnit } = event.detail\n const rackTable = this.parent as any\n rackTable.increaseLocation(increasingDirection, skipNumbering, startSection, startUnit)\n }\n }\n }\n },\n {\n type: 'editor-table',\n label: '',\n name: '',\n property: {\n merge: false,\n split: false\n }\n }\n ]\n }\n }\n\n buildRealObject(): RealObject | undefined {\n return new Rack(this)\n }\n\n set merged(merged) {\n this.set('merged', !!merged)\n if (merged) this.set('text', '')\n }\n\n get merged() {\n return this.getState('merged')\n }\n\n set rowspan(rowspan) {\n this.set('rowspan', rowspan)\n }\n\n get rowspan() {\n return this.getState('rowspan')\n }\n\n set colspan(colspan) {\n this.set('colspan', colspan)\n }\n\n get colspan() {\n return this.getState('colspan')\n }\n\n get border() {\n return this.state.border || EMPTY_BORDER\n }\n\n get isEmpty() {\n return this.getState('isEmpty')\n }\n\n _drawBorder(context: CanvasRenderingContext2D, x: number, y: number, to_x: number, to_y: number, style: any) {\n if (style && style.strokeStyle && style.lineWidth && style.lineDash) {\n context.beginPath()\n context.moveTo(x, y)\n context.lineTo(to_x, to_y)\n\n Component.drawStroke(context, style)\n }\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n var { isEmpty } = this.state\n\n var border = this.border\n\n if (!isEmpty) {\n this._draw_rack_cell(context)\n }\n\n // Cell 채우기.\n context.beginPath()\n context.lineWidth = 0\n context.rect(left, top, width, height)\n\n // Border 그리기\n var parent = this.parent as any\n var idx = parent.components.indexOf(this)\n var columns = parent.columns || 1\n var rows = parent.rows || 1\n\n this._drawBorder(context, left, top, left + width, top, border.top)\n this._drawBorder(context, left, top + height, left, top, border.left)\n if (isRightMost(idx, rows, columns))\n this._drawBorder(context, left + width, top, left + width, top + height, border.right)\n if (isBottomMost(idx, rows, columns))\n this._drawBorder(context, left + width, top + height, left, top + height, border.bottom)\n }\n\n _draw_rack_cell(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.save()\n context.fillStyle = EMPTY_CELL_FILL_STYLE\n context.fillRect(left, top, width, height)\n\n context.beginPath()\n context.lineWidth = EMPTY_CELL_LINE_WIDTH\n context.strokeStyle = EMPTY_CELL_STROKE_STYLE\n\n context.moveTo(left, top)\n context.lineTo(left + width, top + height)\n context.moveTo(left + width, top)\n context.lineTo(left, top + height)\n\n context.stroke()\n context.closePath()\n context.restore()\n }\n\n get decotag() {\n var rackTable = this.parent\n var { locPattern, zone = '' } = rackTable.model\n\n locPattern = locPattern.substring(0, locPattern.indexOf('{u}') + 3)\n\n var locationString = ''\n if (this.getState('section') && this.getState('unit'))\n locationString = locPattern\n .replace('{z}', zone)\n .replace('{s}', this.getState('section'))\n .replace('{u}', this.getState('unit'))\n\n return locationString || ''\n }\n\n get index() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = Math.floor(index / rackTable.columns)\n var columnIndex = index % rackTable.columns\n\n return {\n row: rowIndex,\n column: columnIndex\n }\n }\n\n get rowIndex() {\n return this.index.row\n }\n\n get columnIndex() {\n return this.index.column\n }\n\n get leftCell() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (columnIndex === 0) return null\n\n var leftCell = rackTable.components[rowIndex * rackTable.columns + columnIndex - 1]\n\n return leftCell\n }\n\n get rightCell() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (columnIndex === rackTable.columns) return null\n\n var rightCell = rackTable.components[rowIndex * rackTable.columns + columnIndex + 1]\n\n return rightCell\n }\n\n get aboveCell() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (rowIndex === 0) return null\n\n var aboveCell = rackTable.components[(rowIndex - 1) * rackTable.columns + columnIndex]\n\n return aboveCell\n }\n\n get belowCell() {\n var rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (rowIndex === rackTable.rows) return null\n\n var belowCell = rackTable.components[(rowIndex + 1) * rackTable.columns + columnIndex]\n\n return belowCell\n }\n\n get rowCells() {\n var rackTable = this.parent as any\n return rackTable.getCellsByRow(this.rowIndex)\n }\n\n get columnCells() {\n var rackTable = this.parent as any\n return rackTable.getCellsByColumn(this.columnIndex)\n }\n\n get aboveRowCells() {\n var aboveCell = this.aboveCell\n while (1) {\n var aboveRowCells = aboveCell.notEmptyRowCells\n\n if (aboveRowCells.length > 0) return aboveRowCells\n\n aboveCell = aboveCell.aboveCell\n }\n }\n\n get lastUnit() {\n var rowCells = this.aboveRowCells\n\n for (let i = rowCells.length - 1; i > 0; i--) {\n var cell = rowCells[i]\n\n var unit = cell.getState('unit')\n\n if (unit) return Number(unit)\n }\n\n return 0\n }\n\n get firstUnit() {\n var rowCells = this.aboveRowCells\n\n for (let i = 0; i < rowCells.length; i++) {\n var cell = rowCells[i]\n\n var unit = cell.getState('unit')\n\n if (unit) return Number(unit)\n }\n\n return 0\n }\n\n get notEmptyRowCells() {\n return this.rowCells.filter((c: Component) => {\n return !c.getState('isEmpty')\n })\n }\n\n get emptyRowCells() {\n return this.rowCells.filter((c: Component) => {\n return c.getState('isEmpty')\n })\n }\n\n get isAisle() {\n return this.notEmptyRowCells.length === 0\n }\n\n onchange(after: Properties, before: Properties) {\n if (hasAnyProperty(after, 'isEmpty')) {\n // FIXME\n delete this.model.unit\n delete this.model.section\n }\n }\n\n onmouseenter() {\n this.trigger('deco')\n }\n\n onmouseleave() {\n this.trigger('decoreset')\n }\n\n contains(x: number, y: number) {\n var contains = super.contains(x, y)\n if (!contains) {\n this._focused = false\n this.invalidate()\n }\n\n return contains\n }\n}\n\n;['border'].forEach(getter => Component.memoize(RackTableCell.prototype, getter, false))\n\nComponent.register('rack-table-cell', RackTableCell)\n"]}
1
+ {"version":3,"file":"rack-table-cell.js","sourceRoot":"","sources":["../src/rack-table-cell.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, Properties, RectPath } from '@hatiolab/things-scene'\nimport { Rack } from './rack'\nimport { RealObject } from './threed/real-object'\n\nconst EMPTY_BORDER = {}\n\nfunction isBottomMost(idx: number, rows: number, columns: number) {\n return idx >= (rows - 1) * columns\n}\n\nfunction isRightMost(idx: number, rows: number, columns: number) {\n return (idx + 1) % columns == 0\n}\n\nfunction hasAnyProperty(o: any, ...properties: string[]) {\n for (let p in properties) {\n if (o.hasOwnProperty(properties[p])) {\n return true\n }\n }\n}\n\nconst EMPTY_CELL_STROKE_STYLE = '#ccc'\nconst EMPTY_CELL_LINE_WIDTH = 1\nconst EMPTY_CELL_FILL_STYLE = '#efefef'\n\n/**\n * 1. 스타일을 상속 받아야 함. (cascade-style)\n * 2. 스타일을 동적처리할 수 있음. (로직처리)\n * 3. 데이타를 받을 수 있음.\n */\nexport class RackTableCell extends RectPath(Component) {\n _focused: boolean = false\n\n get hasTextProperty() {\n return false\n }\n\n get nature() {\n return {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'section',\n name: 'section'\n },\n {\n type: 'string',\n label: 'unit',\n name: 'unit'\n },\n {\n type: 'string',\n label: 'shelf-locations',\n name: 'shelfLocations',\n placeholder: '1,2,3,... / ,,,04'\n },\n {\n type: 'textarea',\n label: 'bin-locations',\n name: 'binLocations',\n placeholder: '1,2,3,...'\n },\n {\n type: 'checkbox',\n label: 'is-empty',\n name: 'isEmpty'\n },\n {\n type: 'location-increase-pattern',\n label: '',\n name: '',\n property: {\n event: {\n 'increase-location-pattern': (event: CustomEvent) => {\n var { increasingDirection, skipNumbering, startSection, startUnit } = event.detail\n const rackTable = this.parent as any\n rackTable.increaseLocation(increasingDirection, skipNumbering, startSection, startUnit)\n }\n }\n }\n },\n {\n type: 'editor-table',\n label: '',\n name: '',\n property: {\n merge: false,\n split: false\n }\n }\n ]\n }\n }\n\n buildRealObject(): RealObject | undefined {\n return new Rack(this)\n }\n\n set merged(merged) {\n this.set('merged', !!merged)\n if (merged) this.set('text', '')\n }\n\n get merged() {\n return this.getState('merged')\n }\n\n set rowspan(rowspan) {\n this.set('rowspan', rowspan)\n }\n\n get rowspan() {\n return this.getState('rowspan')\n }\n\n set colspan(colspan) {\n this.set('colspan', colspan)\n }\n\n get colspan() {\n return this.getState('colspan')\n }\n\n get border() {\n return this.state.border || EMPTY_BORDER\n }\n\n get isEmpty() {\n return this.getState('isEmpty')\n }\n\n _drawBorder(context: CanvasRenderingContext2D, x: number, y: number, to_x: number, to_y: number, style: any) {\n if (style && style.strokeStyle && style.lineWidth && style.lineDash) {\n context.beginPath()\n context.moveTo(x, y)\n context.lineTo(to_x, to_y)\n\n Component.drawStroke(context, style)\n }\n }\n\n render(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n var { isEmpty } = this.state\n\n var border = this.border\n\n if (!isEmpty) {\n this._draw_rack_cell(context)\n }\n\n // Cell 채우기.\n context.beginPath()\n context.lineWidth = 0\n context.rect(left, top, width, height)\n\n // Border 그리기\n var parent = this.parent as any\n var idx = parent.components.indexOf(this)\n var columns = parent.columns || 1\n var rows = parent.rows || 1\n\n this._drawBorder(context, left, top, left + width, top, border.top)\n this._drawBorder(context, left, top + height, left, top, border.left)\n if (isRightMost(idx, rows, columns))\n this._drawBorder(context, left + width, top, left + width, top + height, border.right)\n if (isBottomMost(idx, rows, columns))\n this._drawBorder(context, left + width, top + height, left, top + height, border.bottom)\n }\n\n _draw_rack_cell(context: CanvasRenderingContext2D) {\n var { left, top, width, height } = this.bounds\n\n context.save()\n context.fillStyle = EMPTY_CELL_FILL_STYLE\n context.fillRect(left, top, width, height)\n\n context.beginPath()\n context.lineWidth = EMPTY_CELL_LINE_WIDTH\n context.strokeStyle = EMPTY_CELL_STROKE_STYLE\n\n context.moveTo(left, top)\n context.lineTo(left + width, top + height)\n context.moveTo(left + width, top)\n context.lineTo(left, top + height)\n\n context.stroke()\n context.closePath()\n context.restore()\n }\n\n get decotag() {\n var rackTable = this.parent\n var { locPattern, zone = '' } = rackTable.model\n\n locPattern = locPattern.substring(0, locPattern.indexOf('{u}') + 3)\n\n var locationString = ''\n if (this.getState('section') && this.getState('unit'))\n locationString = locPattern\n .replace('{z}', zone)\n .replace('{s}', this.getState('section'))\n .replace('{u}', this.getState('unit'))\n\n return locationString || ''\n }\n\n get index() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = Math.floor(index / rackTable.columns)\n var columnIndex = index % rackTable.columns\n\n return {\n row: rowIndex,\n column: columnIndex\n }\n }\n\n get rowIndex() {\n return this.index.row\n }\n\n get columnIndex() {\n return this.index.column\n }\n\n get leftCell() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (columnIndex === 0) return null\n\n var leftCell = rackTable.components[rowIndex * rackTable.columns + columnIndex - 1]\n\n return leftCell\n }\n\n get rightCell() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (columnIndex === rackTable.columns) return null\n\n var rightCell = rackTable.components[rowIndex * rackTable.columns + columnIndex + 1]\n\n return rightCell\n }\n\n get aboveCell() {\n let rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (rowIndex === 0) return null\n\n var aboveCell = rackTable.components[(rowIndex - 1) * rackTable.columns + columnIndex]\n\n return aboveCell\n }\n\n get belowCell() {\n var rackTable = this.parent as any\n var index = rackTable.components.indexOf(this)\n\n var rowIndex = this.rowIndex\n var columnIndex = this.columnIndex\n\n if (rowIndex === rackTable.rows) return null\n\n var belowCell = rackTable.components[(rowIndex + 1) * rackTable.columns + columnIndex]\n\n return belowCell\n }\n\n get rowCells() {\n var rackTable = this.parent as any\n return rackTable.getCellsByRow(this.rowIndex)\n }\n\n get columnCells() {\n var rackTable = this.parent as any\n return rackTable.getCellsByColumn(this.columnIndex)\n }\n\n get aboveRowCells() {\n var aboveCell = this.aboveCell\n while (1) {\n var aboveRowCells = aboveCell.notEmptyRowCells\n\n if (aboveRowCells.length > 0) return aboveRowCells\n\n aboveCell = aboveCell.aboveCell\n }\n }\n\n get lastUnit() {\n var rowCells = this.aboveRowCells\n\n for (let i = rowCells.length - 1; i > 0; i--) {\n var cell = rowCells[i]\n\n var unit = cell.getState('unit')\n\n if (unit) return Number(unit)\n }\n\n return 0\n }\n\n get firstUnit() {\n var rowCells = this.aboveRowCells\n\n for (let i = 0; i < rowCells.length; i++) {\n var cell = rowCells[i]\n\n var unit = cell.getState('unit')\n\n if (unit) return Number(unit)\n }\n\n return 0\n }\n\n get notEmptyRowCells() {\n return this.rowCells.filter((c: Component) => {\n return !c.getState('isEmpty')\n })\n }\n\n get emptyRowCells() {\n return this.rowCells.filter((c: Component) => {\n return c.getState('isEmpty')\n })\n }\n\n get isAisle() {\n return this.notEmptyRowCells.length === 0\n }\n\n onchange(after: Properties, before: Properties) {\n if (hasAnyProperty(after, 'isEmpty')) {\n // FIXME\n delete this.model.unit\n delete this.model.section\n }\n }\n\n onmouseenter() {\n this.trigger('deco')\n }\n\n onmouseleave() {\n this.trigger('decoreset')\n }\n\n contains(x: number, y: number) {\n var contains = super.contains(x, y)\n if (!contains) {\n this._focused = false\n this.invalidate()\n }\n\n return contains\n }\n}\n\n;['border'].forEach(getter => Component.memoize(RackTableCell.prototype, getter, false))\n\nComponent.register('rack-table-cell', RackTableCell)\n"]}