kitchen-simulator 3.1.15 → 4.0.0-alpha.12

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 (105) hide show
  1. package/es/LiteKitchenConfigurator.js +204 -21
  2. package/es/LiteRenderer.js +277 -12
  3. package/es/actions/items-actions.js +6 -10
  4. package/es/actions/lines-actions.js +1 -3
  5. package/es/actions/project-actions.js +5 -15
  6. package/es/assets/Window.hdr +2100 -0
  7. package/es/assets/gltf/door_sliding.bin +0 -0
  8. package/es/assets/img/1.jpg +0 -0
  9. package/es/catalog/areas/area/planner-element.js +5 -10
  10. package/es/catalog/catalog.js +4 -1
  11. package/es/catalog/factories/area-factory-3d.js +17 -18
  12. package/es/catalog/factories/wall-factory-3d.js +2 -2
  13. package/es/catalog/factories/wall-factory.js +8 -8
  14. package/es/catalog/lines/wall/planner-element.js +9 -18
  15. package/es/catalog/utils/exporter.js +3 -6
  16. package/es/catalog/utils/item-loader.js +197 -202
  17. package/es/catalog/utils/mtl-loader.js +2 -2
  18. package/es/catalog/utils/obj-loader.js +2 -2
  19. package/es/class/item.js +127 -107
  20. package/es/class/line.js +2 -14
  21. package/es/class/project.js +44 -150
  22. package/es/components/content.js +6 -19
  23. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  24. package/es/components/viewer2d/item.js +51 -84
  25. package/es/components/viewer2d/line.js +243 -315
  26. package/es/components/viewer2d/ruler.js +36 -16
  27. package/es/components/viewer2d/rulerDist.js +75 -44
  28. package/es/components/viewer2d/utils.js +0 -6
  29. package/es/components/viewer2d/viewer2d.js +205 -301
  30. package/es/components/viewer3d/front3D.js +2 -3
  31. package/es/components/viewer3d/libs/mtl-loader.js +2 -2
  32. package/es/components/viewer3d/libs/obj-loader.js +2 -2
  33. package/es/components/viewer3d/libs/orbit-controls.js +4 -3
  34. package/es/components/viewer3d/libs/pointer-lock-controls.js +7 -6
  35. package/es/components/viewer3d/viewer3d.js +80 -127
  36. package/es/constants.js +3 -110
  37. package/es/devLiteRenderer.js +38 -597
  38. package/es/index.js +86 -16
  39. package/es/models.js +5 -8
  40. package/es/plugins/SVGLoader.js +5 -7
  41. package/es/plugins/keyboard.js +6 -15
  42. package/es/reducers/items-reducer.js +5 -5
  43. package/es/reducers/lines-reducer.js +1 -1
  44. package/es/reducers/project-reducer.js +3 -5
  45. package/es/shared-style.js +4 -4
  46. package/es/utils/geometry.js +0 -161
  47. package/es/utils/get-edges-of-subgraphs.js +1 -1
  48. package/es/utils/graph-cycles.js +1 -1
  49. package/es/utils/graph.js +1 -1
  50. package/es/utils/helper.js +2 -67
  51. package/es/utils/isolate-event-handler.js +124 -1367
  52. package/es/utils/molding.js +2 -238
  53. package/lib/LiteKitchenConfigurator.js +205 -22
  54. package/lib/LiteRenderer.js +278 -13
  55. package/lib/actions/items-actions.js +6 -10
  56. package/lib/actions/lines-actions.js +1 -3
  57. package/lib/actions/project-actions.js +4 -15
  58. package/lib/assets/Window.hdr +2100 -0
  59. package/lib/assets/gltf/door_sliding.bin +0 -0
  60. package/lib/assets/img/1.jpg +0 -0
  61. package/lib/catalog/areas/area/planner-element.js +5 -11
  62. package/lib/catalog/catalog.js +4 -1
  63. package/lib/catalog/factories/area-factory-3d.js +14 -15
  64. package/lib/catalog/factories/wall-factory-3d.js +2 -2
  65. package/lib/catalog/factories/wall-factory.js +8 -8
  66. package/lib/catalog/lines/wall/planner-element.js +9 -19
  67. package/lib/catalog/utils/exporter.js +3 -6
  68. package/lib/catalog/utils/item-loader.js +194 -199
  69. package/lib/catalog/utils/mtl-loader.js +2 -9
  70. package/lib/catalog/utils/obj-loader.js +2 -10
  71. package/lib/class/item.js +125 -105
  72. package/lib/class/line.js +1 -13
  73. package/lib/class/project.js +43 -149
  74. package/lib/components/content.js +6 -19
  75. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  76. package/lib/components/viewer2d/item.js +50 -83
  77. package/lib/components/viewer2d/line.js +242 -315
  78. package/lib/components/viewer2d/ruler.js +35 -15
  79. package/lib/components/viewer2d/rulerDist.js +75 -44
  80. package/lib/components/viewer2d/utils.js +0 -7
  81. package/lib/components/viewer2d/viewer2d.js +205 -299
  82. package/lib/components/viewer3d/front3D.js +2 -3
  83. package/lib/components/viewer3d/libs/mtl-loader.js +2 -9
  84. package/lib/components/viewer3d/libs/obj-loader.js +2 -9
  85. package/lib/components/viewer3d/libs/orbit-controls.js +5 -11
  86. package/lib/components/viewer3d/libs/pointer-lock-controls.js +7 -13
  87. package/lib/components/viewer3d/viewer3d.js +79 -125
  88. package/lib/constants.js +7 -115
  89. package/lib/devLiteRenderer.js +33 -592
  90. package/lib/index.js +86 -16
  91. package/lib/models.js +5 -8
  92. package/lib/plugins/SVGLoader.js +5 -7
  93. package/lib/plugins/keyboard.js +6 -15
  94. package/lib/reducers/items-reducer.js +5 -5
  95. package/lib/reducers/lines-reducer.js +1 -1
  96. package/lib/reducers/project-reducer.js +2 -4
  97. package/lib/shared-style.js +4 -4
  98. package/lib/utils/geometry.js +0 -162
  99. package/lib/utils/get-edges-of-subgraphs.js +1 -6
  100. package/lib/utils/graph-cycles.js +8 -7
  101. package/lib/utils/graph.js +1 -6
  102. package/lib/utils/helper.js +3 -70
  103. package/lib/utils/isolate-event-handler.js +121 -1364
  104. package/lib/utils/molding.js +0 -238
  105. package/package.json +1 -1
@@ -2,7 +2,6 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useState, useEffect } from 'react';
3
3
  import Viewer3D from "./viewer3d";
4
4
  import State3D from "./ruler-utils/state3D";
5
- import { isEmpty } from "../viewer2d/utils";
6
5
  var k = 0;
7
6
  export default function Front3D(_ref, _ref2) {
8
7
  var width = _ref.width,
@@ -27,9 +26,9 @@ export default function Front3D(_ref, _ref2) {
27
26
  setToolbar('');
28
27
  };
29
28
  useEffect(function () {
30
- if (!isEmpty(document.getElementById('front'))) document.getElementById('front').addEventListener('mouseup', mouseUpEvent);
29
+ document.getElementById('front').addEventListener('mouseup', mouseUpEvent);
31
30
  return function () {
32
- if (!isEmpty(document.getElementById('front'))) document.getElementById('front').removeEventListener('mouseup', mouseUpEvent);
31
+ document.getElementById('front').removeEventListener('mouseup', mouseUpEvent);
33
32
  };
34
33
  }, []);
35
34
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("svg", {
@@ -4,7 +4,7 @@
4
4
  * @author angelxuanchang
5
5
  */
6
6
 
7
- import * as THREE from 'three';
7
+ var THREE = window.THREE || require('three');
8
8
  var MTLLoader;
9
9
  MTLLoader = function MTLLoader(manager) {
10
10
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -354,4 +354,4 @@ MTLLoader.MaterialCreator.prototype = {
354
354
  return texture;
355
355
  }
356
356
  };
357
- export default MTLLoader;
357
+ module.exports = MTLLoader;
@@ -2,7 +2,7 @@
2
2
  * @author mrdoob / http://mrdoob.com/
3
3
  */
4
4
 
5
- import * as THREE from 'three';
5
+ var THREE = window.THREE || require('three');
6
6
  var OBJLoader;
7
7
  OBJLoader = function OBJLoader(manager) {
8
8
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -459,4 +459,4 @@ OBJLoader.prototype = {
459
459
  return container;
460
460
  }
461
461
  };
462
- export default OBJLoader;
462
+ module.exports = OBJLoader;
@@ -13,8 +13,9 @@
13
13
  // Zoom - middle mouse, or mousewheel / touch: two finger spread or squish
14
14
  // Pan - right mouse, or arrow keys / touch: three finter swipe
15
15
 
16
- import * as THREE from 'three';
17
- export default function OrbitControls(object, domElement) {
16
+ var THREE = window.THREE || require('three');
17
+ var OrbitControls;
18
+ module.exports = OrbitControls = function OrbitControls(object, domElement) {
18
19
  this.object = object;
19
20
  this.domElement = domElement !== undefined ? domElement : document;
20
21
 
@@ -622,7 +623,7 @@ export default function OrbitControls(object, domElement) {
622
623
  // force an update at start
623
624
 
624
625
  this.update();
625
- }
626
+ };
626
627
  OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);
627
628
  OrbitControls.prototype.constructor = OrbitControls;
628
629
  Object.defineProperties(OrbitControls.prototype, {
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * @author mrdoob / http://mrdoob.com/
3
- * Converted to ESM
4
3
  */
5
4
 
6
- import * as THREE from 'three';
7
- export default function PointerLockControls(camera) {
5
+ var THREE = window.THREE || require('three');
6
+ var PointerLockControls;
7
+ module.exports = PointerLockControls = function PointerLockControls(camera) {
8
8
  var scope = this;
9
9
  camera.rotation.set(0, 0, 0);
10
10
  var pitchObject = new THREE.Object3D();
@@ -15,14 +15,14 @@ export default function PointerLockControls(camera) {
15
15
  yawObject.position.y = 10;
16
16
  yawObject.add(pitchObject);
17
17
  var PI_2 = Math.PI / 2;
18
- function onMouseMove(event) {
18
+ var onMouseMove = function onMouseMove(event) {
19
19
  if (scope.enabled === false) return;
20
20
  var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
21
21
  var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
22
22
  yawObject.rotation.y -= movementX * 0.002;
23
23
  pitchObject.rotation.x -= movementY * 0.002;
24
24
  pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x));
25
- }
25
+ };
26
26
  this.dispose = function () {
27
27
  document.removeEventListener('mousemove', onMouseMove, false);
28
28
  };
@@ -33,6 +33,7 @@ export default function PointerLockControls(camera) {
33
33
  };
34
34
  this.getDirection = function () {
35
35
  // assumes the camera itself is not rotated
36
+
36
37
  var direction = new THREE.Vector3(0, 0, -1);
37
38
  var rotation = new THREE.Euler(0, 0, 0, 'YXZ');
38
39
  return function (v) {
@@ -41,4 +42,4 @@ export default function PointerLockControls(camera) {
41
42
  return v;
42
43
  };
43
44
  }();
44
- }
45
+ };
@@ -19,7 +19,7 @@ import { checkCabinetOverlap, createBacksplash, deleteSpecifiedMeshObjects, fVLi
19
19
  import { disposeObject, disposeScene } from "./three-memory-cleaner";
20
20
  import diff from 'immutablediff';
21
21
  import * as SharedStyle from "../../shared-style";
22
- import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT, MODE_ROTATING_ITEM, MODE_DRAGGING_HOLE_3D } from "../../constants";
22
+ import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS } from "../../constants";
23
23
  import { isUndefined } from 'util';
24
24
  import { verticesDistance } from "../../utils/geometry";
25
25
  import { convert } from "../../utils/convert-units-lite";
@@ -27,9 +27,8 @@ import { GeometryUtils } from "../../utils/export";
27
27
  import { handleCamRect, isElevationView, isEmpty } from "../../utils/helper";
28
28
  import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
29
29
  import CameraControls from 'camera-controls';
30
+ import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
30
31
  import { getAllMeshes, vectorIntersectWithMesh } from "../../utils/objects-utils";
31
- import { isWarningItem, returnReplaceableDeepSearchType } from "../viewer2d/utils";
32
- import { MoldingUtils } from "../../utils/export";
33
32
  CameraControls.install({
34
33
  THREE: Three
35
34
  });
@@ -1184,34 +1183,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1184
1183
  itemID: selItemId
1185
1184
  };
1186
1185
  };
1187
- var sendInternalEvent = function sendInternalEvent(evtType, evtElement) {
1188
- var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1189
- if (!isEmpty(evtType) && !isEmpty(evtElement)) {
1190
- var _this2$props$onIntern, _this2$props;
1191
- var payload = evtElement === null || evtElement === void 0 ? void 0 : evtElement.toJS();
1192
- if ((evtElement === null || evtElement === void 0 ? void 0 : evtElement.prototype) === 'lines') {
1193
- // caculating length of selected line//
1194
- var v_a = layer.vertices.get(evtElement.vertices.get(0));
1195
- var v_b = layer.vertices.get(evtElement.vertices.get(1));
1196
- var distance = GeometryUtils.pointsDistance(v_a.x, v_a.y, v_b.x, v_b.y);
1197
- var _length = convert(distance).from('cm').to(layer.unit);
1198
- payload.length = _length;
1199
- //////////////////////////////////////
1200
- } else if ((evtElement === null || evtElement === void 0 ? void 0 : evtElement.prototype) === 'items') {
1201
- // check this cabinet has warning box
1202
- payload.isWarning = isWarningItem(evtElement);
1203
- // check this item is available molding
1204
- payload.isMoldingAvailable = MoldingUtils.isEnableItemForMolding(layer, evtElement); // check this item is snapped to wall
1205
- payload.isAttachedWall = MoldingUtils.isAttachedWall(layer, evtElement);
1206
- // update distArray
1207
- if (pointArray) payload.distArray = pointArray;
1208
- }
1209
- (_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
1210
- type: evtType,
1211
- value: payload
1212
- });
1213
- }
1214
- };
1215
1186
  this.mouseDownEvent = function (event) {
1216
1187
  gridPlanOrigin = gridPlane.position;
1217
1188
  gridMatrix.copy(gridPlane.matrixWorld).invert();
@@ -1303,18 +1274,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1303
1274
  }
1304
1275
  }
1305
1276
  if (selectedObject !== undefined) {
1306
- // get selected object from planData.sceneGraph
1307
- var selectedItem = null;
1308
- switch (true) {
1309
- case 'itemID' in selectedObject:
1310
- selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1311
- break;
1312
- case 'holeID' in selectedObject:
1313
- selectedItem = planData.sceneGraph.layers[selectedObject.layerID].holes[selectedObject.holeID];
1314
- break;
1315
- default:
1316
- break;
1317
- }
1277
+ var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1318
1278
  sPoint.set(Point.x, Point.y);
1319
1279
  if (transflag == 0) {
1320
1280
  scene3D.remove(toolObj);
@@ -1363,6 +1323,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1363
1323
  if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
1364
1324
  cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
1365
1325
  selectedFlag = false;
1326
+ } else {
1327
+ isSelected = false;
1328
+ _this2.context.projectActions.unselectAll();
1329
+ scene3D.remove(toolObj);
1330
+ _this2.context.itemsActions.removeReplacingSupport();
1366
1331
  }
1367
1332
  }
1368
1333
  } else {
@@ -1375,8 +1340,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1375
1340
  }
1376
1341
  };
1377
1342
  this.mouseUpEvent = function (event) {
1378
- var internalType = ''; // internalEvent type - select/drag/draw
1379
- var selectedElement; // internalEvent data
1343
+ var _selObj$object, _selObj$object2;
1380
1344
  firstMove = 0;
1381
1345
  var altitude = 0;
1382
1346
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1413,21 +1377,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1413
1377
  isInitialPhase = true;
1414
1378
  return;
1415
1379
  }
1416
- switch (_this2.props.state.mode) {
1417
- case MODE_DRAGGING_ITEM_3D:
1418
- case MODE_DRAGGING_HOLE_3D:
1419
- internalType = INTERNAL_EVENT_DRAG_ELEMENT;
1420
- break;
1421
- case MODE_ROTATING_ITEM_3D:
1422
- internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
1423
- break;
1424
- case MODE_DRAWING_HOLE_3D:
1425
- internalType = INTERNAL_EVENT_DRAW_ELEMENT;
1426
- break;
1427
- case MODE_IDLE_3D:
1428
- internalType = INTERNAL_EVENT_SELECT_ELEMENT;
1429
- break;
1430
- }
1431
1380
  if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
1432
1381
  _this2.context.itemsActions.endDraggingItem3D();
1433
1382
  }
@@ -1460,8 +1409,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1460
1409
  });
1461
1410
  });
1462
1411
  var intersects = raycaster.intersectObjects(meshes, true);
1463
- var _i10; // index of warning object in intersects
1464
-
1412
+ var _i10;
1465
1413
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1466
1414
  for (_i10 = 0; _i10 < intersects.length; _i10++) {
1467
1415
  if (intersects[_i10].object.name === 'warningObj') break;
@@ -1489,19 +1437,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1489
1437
  }
1490
1438
  }
1491
1439
  gridMatrix.copy(gridPlane.matrixWorld).invert();
1492
- var addItemToolObj = function addItemToolObj() {
1493
- var _intersects$_i;
1494
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1495
- if (isUndefined(selectedItem)) return;
1496
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1497
- var itemPos = selectedItem.position.clone();
1498
- if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) === selectedItem.userData.itemId) {
1499
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1500
- } else {
1501
- toolObj.position.set(planData.plan.position.x + itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
1502
- }
1503
- scene3D.add(toolObj);
1504
- };
1505
1440
  if (Math.abs(mouse.x - _this2.lastMousePosition.x) <= 0.02 && Math.abs(mouse.y - _this2.lastMousePosition.y) <= 0.02 || bMove) {
1506
1441
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1507
1442
  if (intersects[_i10] === undefined) {
@@ -1525,63 +1460,67 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1525
1460
  isSelected = true;
1526
1461
  setTimeout(function () {
1527
1462
  getDistances(layer);
1528
- addItemToolObj();
1463
+ var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1464
+ if (isUndefined(selectedItem)) return;
1465
+ var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1466
+ var itemPos = selectedItem.position.clone();
1467
+ if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
1468
+ toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1469
+ } else {
1470
+ toolObj.position.set(planData.plan.position.x + itemPos.x, selItem.category === 'lighting' ? -planData.plan.position.y - selItem.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
1471
+ }
1472
+ scene3D.add(toolObj);
1529
1473
  _this2.setState({
1530
1474
  toolObj: toolObj
1531
1475
  });
1532
1476
  // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
1533
- var pointArray = [];
1534
- // pointArray.push([fVLine[0].userData.distance, 90]);
1535
- // pointArray.push([fVLine[1].userData.distance, -90]);
1536
- // pointArray.push([fVLine[2].userData.distance, 180]);
1537
- // pointArray.push([fVLine[3].userData.distance, 0]);
1538
- pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
1477
+ var pointArray = [],
1478
+ cnt = 0;
1479
+ pointArray.push([fVLine[0].userData.distance, 90]);
1480
+ pointArray.push([fVLine[1].userData.distance, -90]);
1481
+ pointArray.push([fVLine[2].userData.distance, 180]);
1482
+ pointArray.push([fVLine[3].userData.distance, 0]);
1483
+ pointArray.forEach(function (pointElement, index) {
1484
+ if (pointElement[0] == undefined) pointArray[index][0] = 0;
1485
+ });
1486
+ pointArray.forEach(function (pointElement) {
1487
+ if (pointElement[0] == 0) cnt++;
1488
+ });
1489
+ if (cnt == 4 || cnt == 3) {
1490
+ pointArray[0][0] = 100;
1491
+ pointArray[1][0] = 100;
1492
+ }
1539
1493
  actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
1540
- internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
1541
- sendInternalEvent(internalType, selectedElement, pointArray);
1542
1494
  });
1543
1495
  } else {
1544
1496
  if (selectedObject) {
1545
- var elementID = null;
1546
- var elementPrototype = null;
1547
1497
  switch (true) {
1548
1498
  case 'holeID' in selectedObject:
1549
- elementID = selectedObject.holeID;
1550
- elementPrototype = 'holes';
1551
- if (_this2.props.state.mode === MODE_DRAGGING_HOLE_3D) {
1499
+ if (selObj !== null && selObj !== void 0 && (_selObj$object = selObj.object) !== null && _selObj$object !== void 0 && _selObj$object.name.includes('transHole')) {
1552
1500
  actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1553
1501
  }
1554
1502
  break;
1555
1503
  case 'lineID' in selectedObject:
1556
- elementID = selectedObject.lineID;
1557
- elementPrototype = 'lines';
1558
- break;
1559
- case 'areaID' in selectedObject:
1560
- elementID = selectedObject.areaID;
1561
- elementPrototype = 'areas';
1504
+ if (selObj !== null && selObj !== void 0 && (_selObj$object2 = selObj.object) !== null && _selObj$object2 !== void 0 && _selObj$object2.name.includes('transHole')) {
1505
+ actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1506
+ }
1562
1507
  break;
1563
1508
  default:
1564
1509
  break;
1565
1510
  }
1566
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).getIn([elementPrototype, elementID]);
1567
1511
  }
1568
1512
  isSelected = false;
1569
1513
  }
1570
1514
  } else {
1571
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1572
- if (bMove && !isEmpty(selectedItem)) {
1573
- addItemToolObj();
1574
- } else {
1575
- isSelected = false;
1576
- _this2.context.projectActions.unselectAll();
1577
- switch (true) {
1578
- case 'holeID' in selectedObject:
1579
- actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1580
- break;
1581
- default:
1582
- _this2.context.itemsActions.removeReplacingSupport();
1583
- break;
1584
- }
1515
+ isSelected = false;
1516
+ _this2.context.projectActions.unselectAll();
1517
+ switch (true) {
1518
+ case 'holeID' in selectedObject:
1519
+ actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1520
+ break;
1521
+ default:
1522
+ _this2.context.itemsActions.removeReplacingSupport();
1523
+ break;
1585
1524
  }
1586
1525
  }
1587
1526
  bMove = false;
@@ -1602,15 +1541,35 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1602
1541
  }
1603
1542
  getPoint(event, alti);
1604
1543
  if (bRotate) {
1605
- addItemToolObj();
1544
+ var _intersects$_i;
1545
+ var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1546
+ if (isUndefined(selectedItem)) return;
1547
+ var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1548
+ var itemPos = selectedItem.position.clone();
1549
+ if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) === selectedItem.userData.itemId) {
1550
+ toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1551
+ } else {
1552
+ toolObj.position.set(planData.plan.position.x + itemPos.x, selItem.category === 'lighting' ? -planData.plan.position.y - selItem.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
1553
+ }
1554
+ scene3D.add(toolObj);
1606
1555
  _this2.setState({
1607
1556
  toolObj: toolObj
1608
1557
  });
1609
1558
  _this2.context.itemsActions.endRotatingItem3D(Point.x, Point.y);
1610
1559
  bRotate = false;
1611
- } else if (bMove) {
1560
+ }
1561
+ if (bMove) {
1612
1562
  bMove = false;
1613
- addItemToolObj();
1563
+ var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1564
+ if (isUndefined(_selectedItem)) return;
1565
+ var _selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1566
+ var _itemPos = _selectedItem.position.clone();
1567
+ if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
1568
+ toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1569
+ } else {
1570
+ toolObj.position.set(planData.plan.position.x + _itemPos.x, _selItem.category === 'lighting' ? -planData.plan.position.y - _selItem.properties.get('height').get('length') : planData.plan.position.y + _selectedItem.children[0].position.y, planData.plan.position.z + _itemPos.z);
1571
+ }
1572
+ scene3D.add(toolObj);
1614
1573
  _this2.setState({
1615
1574
  toolObj: toolObj
1616
1575
  });
@@ -1630,7 +1589,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1630
1589
  _item3D.position.z = targetPoint.z;
1631
1590
  _item3D.visible = true;
1632
1591
  }
1633
- } else {}
1592
+ }
1634
1593
  if (bMoveUP) {
1635
1594
  bMoveUP = false;
1636
1595
  }
@@ -1642,7 +1601,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1642
1601
  selectedObj = allItemRect.cur;
1643
1602
  }
1644
1603
  }
1645
- sendInternalEvent(internalType, selectedElement);
1646
1604
  };
1647
1605
  this.mouseEnterEvent = function (event) {
1648
1606
  if (_this2.props.state.mode !== MODE_DRAWING_ITEM_3D) return;
@@ -2077,7 +2035,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2077
2035
  if (minDis < snapDelta && !snapFlag) {
2078
2036
  _this2.snap(snapObj, layer);
2079
2037
  snapFlag = true;
2080
- getDistances(layer);
2038
+ getDistances(layer, true);
2081
2039
  var _i13 = 0;
2082
2040
  for (_i13 = 0; _i13 < fVLine.length; _i13++) {
2083
2041
  if (fVLine[_i13].userData.distance < snapDelta) {
@@ -2201,7 +2159,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2201
2159
  scene3D = new Three.Scene();
2202
2160
  if (isElevationView(state.mode)) scene3D.background = new Three.Color(0xffffff);
2203
2161
  // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2204
- else scene3D.background = new Three.Color(0xe4ebfe); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2162
+ else scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2205
2163
  // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);
2206
2164
  window.scene3D = scene3D;
2207
2165
  // Camera
@@ -2596,7 +2554,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2596
2554
  height: '70px',
2597
2555
  animation: 'spin 2s linear infinite'
2598
2556
  },
2599
- src: '/assets/img/loading/loading.gif',
2557
+ src: '/assets/img/loading_large.gif',
2600
2558
  alt: "img"
2601
2559
  }));
2602
2560
  } else {
@@ -2610,12 +2568,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2610
2568
  }, /*#__PURE__*/React.createElement("img", {
2611
2569
  style: {
2612
2570
  animation: 'spin 2s linear infinite',
2613
- position: "absolute",
2614
- top: "50%",
2615
- width: '70px',
2616
- height: '70px'
2571
+ marginTop: "22%"
2617
2572
  },
2618
- src: '/assets/img/loading/loading.gif',
2573
+ src: '/assets/img/loading_large.gif',
2619
2574
  alt: "img"
2620
2575
  }));
2621
2576
  }
@@ -2632,11 +2587,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2632
2587
  style: {
2633
2588
  animation: 'spin 2s linear infinite',
2634
2589
  position: "absolute",
2635
- top: "50%",
2636
- width: '70px',
2637
- height: '70px'
2590
+ top: "50%"
2638
2591
  },
2639
- src: '/assets/img/loading/loading.gif',
2592
+ src: '/assets/img/loading_large.gif',
2640
2593
  alt: "img"
2641
2594
  }));
2642
2595
  } else {
package/es/constants.js CHANGED
@@ -55,7 +55,6 @@ export var REMOVE_CIRCULAR_GUIDE = 'REMOVE_CIRCULAR_GUIDE';
55
55
  export var REMOVE_DRAWING_SUPPORT = 'REMOVE_DRAWING_SUPPORT';
56
56
  export var SET_IS_HELP = 'SET_IS_HELP';
57
57
  export var SET_IS_CABINET_DRAWING = 'SET_IS_CABINET_DRAWING';
58
- export var CREATE_ROOM_WITH_SHAPE = 'CREATE_ROOM_WITH_SHAPE';
59
58
 
60
59
  // ACTIONS viewer2D
61
60
  export var SELECT_TOOL_ZOOM_IN = 'SELECT_TOOL_ZOOM_IN';
@@ -66,7 +65,6 @@ export var CHANGE_WALL_LENGTH_MEASURE = 'CHANGE_WALL_LENGTH_MEASURE';
66
65
  export var CHANGE_BASE_CABINET_MEASURE = 'CHANGE_BASE_CABINET_MEASURE';
67
66
  export var CHANGE_WALL_CABINET_MEASURE = 'CHANGE_WALL_CABINET_MEASURE';
68
67
  export var CHANGE_WINDOW_DOOR_MEASURE = 'CHANGE_WINDOW_DOOR_MEASURE';
69
- export var CHANGE_MEASUREMENT_UNIT = 'CHANGE_MEASUREMENT_UNIT';
70
68
 
71
69
  //ACTIONS viewer3D
72
70
  export var SELECT_TOOL_3D_VIEW = 'SELECT_TOOL_3D_VIEW';
@@ -246,8 +244,7 @@ export var PROJECT_ACTIONS = {
246
244
  SHIFT2DOFF: SHIFT2DOFF,
247
245
  SHIFT2DON: SHIFT2DON,
248
246
  SET_IS_HELP: SET_IS_HELP,
249
- SET_IS_CABINET_DRAWING: SET_IS_CABINET_DRAWING,
250
- CREATE_ROOM_WITH_SHAPE: CREATE_ROOM_WITH_SHAPE
247
+ SET_IS_CABINET_DRAWING: SET_IS_CABINET_DRAWING
251
248
  };
252
249
  export var VIEWER2D_ACTIONS = {
253
250
  SELECT_TOOL_ZOOM_IN: SELECT_TOOL_ZOOM_IN,
@@ -548,12 +545,6 @@ export var LABEL_COLOR = '#6E7191';
548
545
  export var TEXT_COLOR = '#000000';
549
546
  export var ACCENT_COLOR = '#AD00FF';
550
547
  export var BROWN_COLOR = '#624100';
551
- export var ROOM_SHAPE_MEASUREMENT_LINE_COLOR = '#455A64';
552
- export var ROOM_ELEMENT_MEASUREMENT_LINE_COLOR = '#B0BEC5';
553
- export var BASE_ITEM_MEASUREMENT_LINE_COLOR = '#0277BD';
554
- export var WALL_ITEM_MEASUREMENT_LINE_COLOR = '#00897B';
555
- export var DISTANCE_MEASUREMENT_LINE_COLOR = '#7B1FA2';
556
- export var DASH_LINE_COLOR = '#78909C';
557
548
  export var DEFAULT_FONT_FAMILY = 'Open Sans';
558
549
 
559
550
  // Download summary
@@ -646,26 +637,6 @@ export var ITEM_TYPE = {
646
637
  LIGHTING: 'lighting',
647
638
  FURNISHING: 'furnishing'
648
639
  };
649
- export var PROJECT_SETTING_OPTION = {
650
- UPDATE_CEIL_HEIGHT: UPDATE_CEIL_HEIGHT,
651
- CHANGE_WALL_LENGTH_MEASURE: CHANGE_WALL_LENGTH_MEASURE,
652
- CHANGE_BASE_CABINET_MEASURE: CHANGE_BASE_CABINET_MEASURE,
653
- CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
654
- CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE,
655
- CHANGE_MEASUREMENT_UNIT: CHANGE_MEASUREMENT_UNIT
656
- };
657
- export var HOLE_NAMES = {
658
- WINDOW_CLEAR: 'Window',
659
- WINDOW_CROSS: 'Cross Window',
660
- WINDOW_DOUBLE_HUNG: 'Double Hung Window',
661
- WINDOW_VERTICAL: 'window-vertical',
662
- DOOR_CLOSET: 'Closet',
663
- DOOR_EXTERIOR: 'Exterior',
664
- DOOR_INTERIOR: 'Interior',
665
- DOOR_SLIDING: 'Sliding',
666
- DOOR_FRAMED: 'Framed Doorway',
667
- DOOR_FRAMELESS: 'FrameLess Doorway'
668
- };
669
640
 
670
641
  // direction type
671
642
  export var LEFT = 'Left';
@@ -673,94 +644,16 @@ export var RIGHT = 'Right';
673
644
  export var TOP = 'Top';
674
645
  export var BOTTOM = 'Bottom';
675
646
 
676
- // distance direction angle
677
- export var LEFT_DIST_ANG = 0;
678
- export var RIGHT_DIST_ANG = 180;
679
- export var BACK_DIST_ANG = 90;
680
- export var FRONT_DIST_ANG = -90;
681
-
682
- // element prototype
683
- export var ELEMENT_LINE = 'lines';
684
- export var ELEMENT_HOLE = 'holes';
685
- export var ELEMENT_ITEM = 'items';
686
- export var ELEMENT_AREA = 'areas';
687
- export var ELEMENT_VERTEX = 'vertices';
688
- // element attributes
689
- export var ATT_ITEM_POS = 'pos';
690
- export var ATT_ITEM_ROTATION = 'rotation';
691
- export var ATT_LINE_LENGTH = 'lineLength';
692
- export var ATT_VERTEXT_ONE = 'vertexOne';
693
- export var ATT_VERTEXT_TWO = 'vertexTwo';
694
- export var ATT_HOLE_OFFSET_A = 'offsetA';
695
- export var ATT_HOLE_OFFSET_B = 'offsetB';
696
- // element properties
697
- export var PROP_FLIP_DOOR_HANDLE = 'flip_doorhandle';
698
- export var PROP_OPEN_DOORS = 'open_doors';
699
- export var PROP_ALTITUDE = 'altitude';
700
- export var PROP_RESIZE_WIDTH = 'width';
701
- export var PROP_RESIZE_HEIGHT = 'height';
702
- export var PROP_RESIZE_DEPTH = 'depth';
703
-
704
- // finishing typs
705
- export var FINISHING_TYPE = {
706
- COUNTER_TOP: 'counterTop',
707
- DOOR_HANDLE: 'doorHandle',
708
- WALL_COLOR: 'wallColor',
709
- FLOOR_STYLE: 'floorStyle',
710
- BACKSPLASH: 'backsplash'
711
- };
712
- export var MAX_ZOOM_IN_SCALE = Infinity;
713
-
714
647
  // external event type
715
- export var EXTERNAL_EVENT_SYNC_SCENE = 'EXTERNAL_EVENT_SYNC_SCENE'; // Host request the scene data to 3DTool for sync : Host -> 3DTool
716
- export var INTERNAL_EVENT_SYNC_SCENE = 'INTERNAL_EVENT_SYNC_SCENE'; // 3DTool send the scene data to Host for sync : 3DTool -> HostApp
717
- export var INTERNAL_EVENT_ITEMS_CATALOG = 'INTERNAL_EVENT_ITEMS_CATALOG'; // Request item's catalog data to Host
718
-
719
- // external event type
720
- export var EXTERNAL_EVENT_LOAD_PROJECT = 'EXTERNAL_EVENT_LOAD_PROJECT';
721
648
  export var EXTERNAL_EVENT_TOGGLE_TO_3D = 'EXTERNAL_EVENT_TOGGLE_TO_3D';
722
649
  export var EXTERNAL_EVENT_TOGGLE_TO_2D = 'EXTERNAL_EVENT_TOGGLE_TO_2D';
723
650
  export var EXTERNAL_EVENT_TOGGLE_TO_ELEVATION = 'EXTERNAL_EVENT_TOGGLE_TO_ELEVATION';
724
651
  export var EXTERNAL_EVENT_ADD_WALL = 'EXTERNAL_EVENT_ADD_WALL';
725
652
  export var EXTERNAL_EVENT_ADD_ITEM = 'EXTERNAL_EVENT_ADD_ITEM';
726
- export var EXTERNAL_EVENT_ADD_HOLE = 'EXTERNAL_EVENT_ADD_HOLE';
727
653
  export var EXTERNAL_EVENT_MOVE_PAN = 'EXTERNAL_EVENT_MOVE_PAN';
728
654
  export var EXTERNAL_EVENT_NEW_PROJECT = 'EXTERNAL_EVENT_NEW_PROJECT';
729
655
  export var EXTERNAL_EVENT_CHANGE_DOORSTYLE = 'EXTERNAL_EVENT_CHANGE_DOORSTYLE';
656
+ export var EXTERNAL_EVENT_SET_INITIAL_DATA = 'EXTERNAL_EVENT_SET_INITIAL_DATA';
730
657
  export var EXTERNAL_EVENT_ADD_ROOM_SHAPE = 'EXTERNAL_EVENT_ADD_ROOM_SHAPE';
731
658
  export var EXTERNAL_EVENT_ZOOM_IN = 'EXTERNAL_EVENT_ZOOM_IN';
732
- export var EXTERNAL_EVENT_ZOOM_OUT = 'EXTERNAL_EVENT_ZOOM_OUT';
733
- export var EXTERNAL_EVENT_UNDO = 'EXTERNAL_EVENT_UNDO';
734
- export var EXTERNAL_EVENT_REDO = 'EXTERNAL_EVENT_REDO';
735
- export var EXTERNAL_EVENT_SET_MOLDING = 'EXTERNAL_EVENT_SET_MOLDING';
736
- export var EXTERNAL_EVENT_PROJECT_SETTING = 'EXTERNAL_EVENT_PROJECT_SETTING'; // project setting event
737
- export var EXTERNAL_EVENT_CENTERING_2D = 'EXTERNAL_EVENT_CENTERING_2D';
738
- export var EXTERNAL_EVENT_DUPLICATE_ELEMENT = 'EXTERNAL_EVENT_DUPLICATE_ELEMENT';
739
- export var EXTERNAL_EVENT_DELETE_ELEMENT = 'EXTERNAL_EVENT_DELETE_ELEMENT';
740
- export var EXTERNAL_EVENT_UPDATE_ATTRIBUTE = 'EXTERNAL_EVENT_UPDATE_ATTRIBUTE'; // update the element's attributes (distance, rotation...) in the property window
741
- export var EXTERNAL_EVENT_UPDATE_PROPERTY = 'EXTERNAL_EVENT_UPDATE_PROPERTY'; // update the element's property (flip_doorhandle, open_doors...) in the property window
742
- export var EXTERNAL_EVENT_REPLACE_CABINET = 'EXTERNAL_EVENT_REPLACE_CABINET';
743
- export var EXTERNAL_EVENT_SET_FINISHING = 'EXTERNAL_EVENT_SET_FINISHING'; // set finishing(wallColor, floorStyle, doorHandle, backsplash, counterTop)
744
- export var EXTERNAL_EVENT_ROTATE_PAN = 'EXTERNAL_EVENT_ROTATE_PAN'; // external event for rotate pan
745
-
746
- // internal event type
747
- export var INTERNAL_EVENT_UNSELECT_ALL = 'INTERNAL_EVENT_UNSELECT_ALL';
748
- export var INTERNAL_EVENT_SELECT_ELEMENT = 'INTERNAL_EVENT_SELECT_ELEMENT';
749
- export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
750
- export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
751
- export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
752
- export var INTERNAL_EVENT_REPLACE_CABINET = 'INTERNAL_EVENT_REPLACE_CABINET';
753
- export var INTERNAL_EVENT_START_DRAW_WALL = 'INTERNAL_EVENT_START_DRAW_WALL';
754
-
755
- // room shape type
756
- export var ROOM_SHAPE_TYPE = {
757
- RECTANGLE: 'rectangle',
758
- TWO_WALLS_LEFT_TOP: '2wLeftTop',
759
- TWO_WALLS_RIGHT_TOP: '2wRightTop',
760
- TWO_WALLS_LEFT_BOTTOM: '2wLeftBottom',
761
- TWO_WALLS_RIGHT_BOTTOM: '2wRightBottom',
762
- THREE_WALLS_LEFT_TOP_RIGHT: '3wLeftTopRight',
763
- THREE_WALLS_TOP_RIGHT_BOTTOM: '3wTopRightBottom',
764
- THREE_WALLS_RIGHT_BOTTOM_LEFT: '3wRightBottomLeft',
765
- THREE_WALLS_BOTTOM_LEFT_TOP: '3wBottomLeftTop'
766
- };
659
+ export var EXTERNAL_EVENT_ZOOM_OUT = 'EXTERNAL_EVENT_ZOOM_OUT';