kitchen-simulator 1.0.0-alin.9 → 1.0.0-clark.101

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 (85) hide show
  1. package/es/LiteKitchenConfigurator.js +17 -175
  2. package/es/LiteRenderer.js +29 -114
  3. package/es/actions/items-actions.js +11 -6
  4. package/es/actions/project-actions.js +2 -3
  5. package/es/assets/img/svg/logo.svg +11 -0
  6. package/es/assets/img/svg/logo_with_text.svg +25 -0
  7. package/es/catalog/areas/area/planner-element.js +10 -5
  8. package/es/catalog/catalog.js +1 -4
  9. package/es/catalog/factories/wall-factory.js +8 -8
  10. package/es/catalog/lines/wall/planner-element.js +18 -9
  11. package/es/catalog/utils/exporter.js +5 -1
  12. package/es/catalog/utils/item-loader.js +112 -31
  13. package/es/catalog/utils/mtl-loader.js +2 -2
  14. package/es/catalog/utils/obj-loader.js +2 -2
  15. package/es/class/item.js +111 -145
  16. package/es/class/line.js +27 -12
  17. package/es/class/project.js +9 -23
  18. package/es/components/content.js +10 -5
  19. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  20. package/es/components/viewer2d/item.js +20 -81
  21. package/es/components/viewer2d/layer.js +1 -1
  22. package/es/components/viewer2d/line.js +334 -259
  23. package/es/components/viewer2d/ruler.js +15 -35
  24. package/es/components/viewer2d/rulerDist.js +18 -32
  25. package/es/components/viewer2d/viewer2d.js +123 -95
  26. package/es/components/viewer3d/libs/mtl-loader.js +2 -2
  27. package/es/components/viewer3d/libs/obj-loader.js +2 -2
  28. package/es/components/viewer3d/libs/orbit-controls.js +3 -4
  29. package/es/components/viewer3d/libs/pointer-lock-controls.js +6 -7
  30. package/es/components/viewer3d/viewer3d.js +91 -70
  31. package/es/constants.js +38 -3
  32. package/es/devLiteRenderer.js +165 -10
  33. package/es/index.js +52 -3
  34. package/es/models.js +7 -5
  35. package/es/reducers/items-reducer.js +8 -4
  36. package/es/reducers/project-reducer.js +1 -1
  37. package/es/shared-style.js +4 -4
  38. package/es/utils/get-edges-of-subgraphs.js +1 -1
  39. package/es/utils/graph-cycles.js +1 -1
  40. package/es/utils/graph.js +1 -1
  41. package/es/utils/helper.js +1 -1
  42. package/es/utils/isolate-event-handler.js +567 -46
  43. package/lib/LiteKitchenConfigurator.js +18 -176
  44. package/lib/LiteRenderer.js +29 -114
  45. package/lib/actions/items-actions.js +11 -5
  46. package/lib/actions/project-actions.js +2 -3
  47. package/lib/assets/img/svg/logo.svg +11 -0
  48. package/lib/assets/img/svg/logo_with_text.svg +25 -0
  49. package/lib/catalog/areas/area/planner-element.js +11 -5
  50. package/lib/catalog/catalog.js +1 -4
  51. package/lib/catalog/factories/wall-factory.js +8 -8
  52. package/lib/catalog/lines/wall/planner-element.js +19 -9
  53. package/lib/catalog/utils/exporter.js +5 -1
  54. package/lib/catalog/utils/item-loader.js +111 -31
  55. package/lib/catalog/utils/mtl-loader.js +9 -2
  56. package/lib/catalog/utils/obj-loader.js +10 -2
  57. package/lib/class/item.js +111 -145
  58. package/lib/class/line.js +27 -12
  59. package/lib/class/project.js +9 -23
  60. package/lib/components/content.js +10 -5
  61. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  62. package/lib/components/viewer2d/item.js +20 -81
  63. package/lib/components/viewer2d/layer.js +1 -1
  64. package/lib/components/viewer2d/line.js +334 -258
  65. package/lib/components/viewer2d/ruler.js +15 -35
  66. package/lib/components/viewer2d/rulerDist.js +18 -32
  67. package/lib/components/viewer2d/viewer2d.js +121 -93
  68. package/lib/components/viewer3d/libs/mtl-loader.js +9 -2
  69. package/lib/components/viewer3d/libs/obj-loader.js +9 -2
  70. package/lib/components/viewer3d/libs/orbit-controls.js +11 -5
  71. package/lib/components/viewer3d/libs/pointer-lock-controls.js +13 -7
  72. package/lib/components/viewer3d/viewer3d.js +90 -69
  73. package/lib/constants.js +42 -7
  74. package/lib/devLiteRenderer.js +164 -9
  75. package/lib/index.js +52 -3
  76. package/lib/models.js +7 -5
  77. package/lib/reducers/items-reducer.js +7 -3
  78. package/lib/reducers/project-reducer.js +1 -1
  79. package/lib/shared-style.js +4 -4
  80. package/lib/utils/get-edges-of-subgraphs.js +6 -1
  81. package/lib/utils/graph-cycles.js +7 -8
  82. package/lib/utils/graph.js +6 -1
  83. package/lib/utils/helper.js +2 -2
  84. package/lib/utils/isolate-event-handler.js +567 -45
  85. package/package.json +5 -9
@@ -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 } 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, 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";
23
23
  import { isUndefined } from 'util';
24
24
  import { verticesDistance } from "../../utils/geometry";
25
25
  import { convert } from "../../utils/convert-units-lite";
@@ -94,9 +94,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
94
94
  } else {
95
95
  if (_this.props.downloadFlag) window.__elevationRendererDownload[mode] = _this.renderer;else window.__elevationRenderer = _this.renderer;
96
96
  }
97
- if (_this.renderer && _this.renderer.domElement) {
98
- _this.renderer.domElement.style.display = 'none';
99
- }
97
+ _this.renderer.domElement.style.display = 'none';
100
98
  return _this;
101
99
  }
102
100
  _inherits(Scene3DViewer, _React$Component);
@@ -1276,7 +1274,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1276
1274
  }
1277
1275
  }
1278
1276
  if (selectedObject !== undefined) {
1279
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1277
+ // get selected object from planData.sceneGraph
1278
+ var selectedItem = null;
1279
+ switch (true) {
1280
+ case 'itemID' in selectedObject:
1281
+ selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1282
+ break;
1283
+ case 'holeID' in selectedObject:
1284
+ selectedItem = planData.sceneGraph.layers[selectedObject.layerID].holes[selectedObject.holeID];
1285
+ break;
1286
+ default:
1287
+ break;
1288
+ }
1280
1289
  sPoint.set(Point.x, Point.y);
1281
1290
  if (transflag == 0) {
1282
1291
  scene3D.remove(toolObj);
@@ -1342,7 +1351,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1342
1351
  }
1343
1352
  };
1344
1353
  this.mouseUpEvent = function (event) {
1345
- var _selObj$object, _selObj$object2;
1354
+ var internalType = ''; // internalEvent type - select/drag/draw
1355
+ var selectedElement; // internalEvent data
1346
1356
  firstMove = 0;
1347
1357
  var altitude = 0;
1348
1358
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1379,6 +1389,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1379
1389
  isInitialPhase = true;
1380
1390
  return;
1381
1391
  }
1392
+ switch (_this2.props.state.mode) {
1393
+ case MODE_DRAGGING_ITEM_3D:
1394
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
1395
+ break;
1396
+ case MODE_ROTATING_ITEM_3D:
1397
+ internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
1398
+ break;
1399
+ }
1382
1400
  if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
1383
1401
  _this2.context.itemsActions.endDraggingItem3D();
1384
1402
  }
@@ -1460,56 +1478,62 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1460
1478
  currentObject = currentObject.parent;
1461
1479
  }
1462
1480
  isSelected = true;
1463
- setTimeout(function () {
1464
- getDistances(layer);
1465
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1466
- if (isUndefined(selectedItem)) return;
1467
- var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1468
- var itemPos = selectedItem.position.clone();
1469
- if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
1470
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1471
- } else {
1472
- 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);
1473
- }
1474
- scene3D.add(toolObj);
1475
- _this2.setState({
1476
- toolObj: toolObj
1477
- });
1478
- // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
1479
- var pointArray = [],
1480
- cnt = 0;
1481
- pointArray.push([fVLine[0].userData.distance, 90]);
1482
- pointArray.push([fVLine[1].userData.distance, -90]);
1483
- pointArray.push([fVLine[2].userData.distance, 180]);
1484
- pointArray.push([fVLine[3].userData.distance, 0]);
1485
- pointArray.forEach(function (pointElement, index) {
1486
- if (pointElement[0] == undefined) pointArray[index][0] = 0;
1487
- });
1488
- pointArray.forEach(function (pointElement) {
1489
- if (pointElement[0] == 0) cnt++;
1490
- });
1491
- if (cnt == 4 || cnt == 3) {
1492
- pointArray[0][0] = 100;
1493
- pointArray[1][0] = 100;
1494
- }
1495
- actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
1481
+ getDistances(layer);
1482
+ var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1483
+ if (isUndefined(selectedItem)) return;
1484
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1485
+ var itemPos = selectedItem.position.clone();
1486
+ if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
1487
+ toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1488
+ } else {
1489
+ 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);
1490
+ }
1491
+ scene3D.add(toolObj);
1492
+ _this2.setState({
1493
+ toolObj: toolObj
1494
+ });
1495
+ // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
1496
+ var pointArray = [],
1497
+ cnt = 0;
1498
+ pointArray.push([fVLine[0].userData.distance, 90]);
1499
+ pointArray.push([fVLine[1].userData.distance, -90]);
1500
+ pointArray.push([fVLine[2].userData.distance, 180]);
1501
+ pointArray.push([fVLine[3].userData.distance, 0]);
1502
+ pointArray.forEach(function (pointElement, index) {
1503
+ if (pointElement[0] == undefined) pointArray[index][0] = 0;
1496
1504
  });
1505
+ pointArray.forEach(function (pointElement) {
1506
+ if (pointElement[0] == 0) cnt++;
1507
+ });
1508
+ if (cnt == 4 || cnt == 3) {
1509
+ pointArray[0][0] = 100;
1510
+ pointArray[1][0] = 100;
1511
+ }
1512
+ actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
1513
+ internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
1497
1514
  } else {
1498
1515
  if (selectedObject) {
1516
+ var elementID = null;
1517
+ var elementPrototype = null;
1499
1518
  switch (true) {
1500
1519
  case 'holeID' in selectedObject:
1501
- if (selObj !== null && selObj !== void 0 && (_selObj$object = selObj.object) !== null && _selObj$object !== void 0 && _selObj$object.name.includes('transHole')) {
1502
- actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1503
- }
1504
- break;
1505
1520
  case 'lineID' in selectedObject:
1506
- if (selObj !== null && selObj !== void 0 && (_selObj$object2 = selObj.object) !== null && _selObj$object2 !== void 0 && _selObj$object2.name.includes('transHole')) {
1521
+ if (_this2.props.state.mode === MODE_DRAGGING_HOLE_3D) {
1507
1522
  actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1523
+ internalType = INTERNAL_EVENT_SELECT_ELEMENT;
1524
+ elementID = selectedObject.holeID;
1525
+ elementPrototype = 'holeID';
1508
1526
  }
1509
1527
  break;
1528
+ case 'areaID' in selectedObject:
1529
+ internalType = INTERNAL_EVENT_SELECT_ELEMENT;
1530
+ elementID = selectedObject.areaID;
1531
+ elementPrototype = 'areas';
1532
+ break;
1510
1533
  default:
1511
1534
  break;
1512
1535
  }
1536
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).getIn([elementPrototype, elementID]);
1513
1537
  }
1514
1538
  isSelected = false;
1515
1539
  }
@@ -1544,14 +1568,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1544
1568
  getPoint(event, alti);
1545
1569
  if (bRotate) {
1546
1570
  var _intersects$_i;
1547
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1548
- if (isUndefined(selectedItem)) return;
1549
- var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1550
- var itemPos = selectedItem.position.clone();
1551
- 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) {
1571
+ var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1572
+ if (isUndefined(_selectedItem)) return;
1573
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1574
+ var _itemPos = _selectedItem.position.clone();
1575
+ 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) {
1552
1576
  toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1553
1577
  } else {
1554
- 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);
1578
+ 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);
1555
1579
  }
1556
1580
  scene3D.add(toolObj);
1557
1581
  _this2.setState({
@@ -1562,14 +1586,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1562
1586
  }
1563
1587
  if (bMove) {
1564
1588
  bMove = false;
1565
- var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1566
- if (isUndefined(_selectedItem)) return;
1567
- var _selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1568
- var _itemPos = _selectedItem.position.clone();
1569
- if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
1589
+ var _selectedItem2 = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1590
+ if (isUndefined(_selectedItem2)) return;
1591
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1592
+ var _itemPos2 = _selectedItem2.position.clone();
1593
+ if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem2.userData.itemId) {
1570
1594
  toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1571
1595
  } else {
1572
- 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);
1596
+ toolObj.position.set(planData.plan.position.x + _itemPos2.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + _selectedItem2.children[0].position.y, planData.plan.position.z + _itemPos2.z);
1573
1597
  }
1574
1598
  scene3D.add(toolObj);
1575
1599
  _this2.setState({
@@ -1603,6 +1627,13 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1603
1627
  selectedObj = allItemRect.cur;
1604
1628
  }
1605
1629
  }
1630
+ if (!isEmpty(internalType)) {
1631
+ var _this2$props$onIntern, _this2$props;
1632
+ (_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
1633
+ type: internalType,
1634
+ value: selectedElement.toJS()
1635
+ });
1636
+ }
1606
1637
  };
1607
1638
  this.mouseEnterEvent = function (event) {
1608
1639
  if (_this2.props.state.mode !== MODE_DRAWING_ITEM_3D) return;
@@ -2360,9 +2391,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2360
2391
  self.props.setIsLoadingElevation('front', false);
2361
2392
  }, 100);
2362
2393
  }
2363
- if (self.renderer && self.renderer.domElement) {
2364
- self.renderer.domElement.style.display = 'block';
2365
- }
2394
+ self.renderer.domElement.style.display = 'block';
2366
2395
  }
2367
2396
  }
2368
2397
  }
@@ -2506,9 +2535,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2506
2535
  break;
2507
2536
  }
2508
2537
  }
2509
- if (self.renderer && self.renderer.domElement) {
2510
- self.renderer.domElement.style.display = 'none';
2511
- }
2538
+ self.renderer.domElement.style.display = 'none';
2512
2539
  }
2513
2540
  if (nextProps.state.scene.showfg == true) {
2514
2541
  implementBacksplash();
@@ -2545,9 +2572,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2545
2572
  isLoadingCabinet = _this$state2.isLoadingCabinet;
2546
2573
  if (isLoading) {
2547
2574
  if (this.props.downloadFlag) {
2548
- if (this.renderer && this.renderer.domElement) {
2549
- this.renderer.domElement.style.display = 'none';
2550
- }
2575
+ this.renderer.domElement.style.display = 'none';
2551
2576
  return /*#__PURE__*/React.createElement("div", {
2552
2577
  style: {
2553
2578
  alignItems: ' center',
@@ -2567,10 +2592,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2567
2592
  }));
2568
2593
  } else {
2569
2594
  document.getElementById('front') && (document.getElementById('front').style.display = 'none');
2570
- document.getElementById('error').style.display = 'none';
2571
- if (this.renderer && this.renderer.domElement) {
2572
- this.renderer.domElement.style.display = 'none';
2573
- }
2595
+ this.renderer.domElement.style.display = 'none';
2574
2596
  return /*#__PURE__*/React.createElement("div", {
2575
2597
  style: {
2576
2598
  textAlign: 'center',
@@ -2604,7 +2626,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2604
2626
  alt: "img"
2605
2627
  }));
2606
2628
  } else {
2607
- !this.props.downloadFlag && (document.getElementById('error').style.display = 'block');
2608
2629
  this.renderer.domElement.style.pointerEvents = 'auto';
2609
2630
  this.renderer.domElement.style.opacity = '1';
2610
2631
  !this.props.downloadFlag && document.getElementById('front') && (document.getElementById('front').style.display = 'block');
package/es/constants.js CHANGED
@@ -103,6 +103,7 @@ export var ANIMATE_OBJECT = 'ANIMATE_OBJECT';
103
103
  export var REMOVE_REPLACE_SUBMODULE = 'REMOVE_REPLACE_SUBMODULE';
104
104
  export var ITEM_MOVE_UP = 'ITEM_MOVE_UP';
105
105
  export var SET_DOOR_STYLE = 'SET_DOOR_STYLE';
106
+ export var CHANGE_DISTANCE = 'CHANGE_DISTANCE';
106
107
  export var SET_HANDLE_MATERIAL = 'SET_HANDLE_MATERIAL';
107
108
  export var SET_INITIAL_DOOR_STYLE = 'SET_INITIAL_DOOR_STYLE';
108
109
  export var UPDATE_ITEM_POSITION = 'UPDATE_ITEM_POSITION';
@@ -170,12 +171,16 @@ export var END_DRAGGING_HOLE = 'END_DRAGGING_HOLE';
170
171
  export var END_DRAGGING_HOLE_3D = 'END_DRAGGING_HOLE_3D';
171
172
  export var UPDATE_DRAGGING_HOLE_3D = 'UPDATE_DRAGGING_HOLE_3D';
172
173
  export var SET_RELATED_LINE = 'SET_RELATED_LINE';
173
-
174
+ export var EXTERNAL_EVENT_CHANGE_DISTANCE = 'EXTERNAL_EVENT_CHANGE_DISTANCE';
175
+ export var EXTERNAL_EVENT_SYNC_SCENE = 'EXTERNAL_EVENT_SYNC_SCENE'; //External event for sync scene data : HostApp -> 3DTool
174
176
  //ACTIONS vertices
175
177
  export var BEGIN_DRAGGING_VERTEX = 'BEGIN_DRAGGING_VERTEX';
176
178
  export var UPDATE_DRAGGING_VERTEX = 'UPDATE_DRAGGING_VERTEX';
177
179
  export var END_DRAGGING_VERTEX = 'END_DRAGGING_VERTEX';
178
180
 
181
+ //Interanl Event Types
182
+ export var INTERNAL_EVENT_SYNC_SCENE = 'INTERNAL_EVENT_SYNC_SCENE'; //Internal event for sync scene data : 3DTool -> HostApp
183
+
179
184
  //ACTIONS scene
180
185
  export var SET_LAYER_PROPERTIES = 'SET_LAYER_PROPERTIES';
181
186
  export var ADD_LAYER = 'ADD_LAYER';
@@ -313,7 +318,8 @@ export var ITEMS_ACTIONS = {
313
318
  END_LOADING: END_LOADING,
314
319
  STORE_DIST_ARRAY: STORE_DIST_ARRAY,
315
320
  VALIDATE_ITEM_POSTIONS: VALIDATE_ITEM_POSTIONS,
316
- REPLACE_ITEM: REPLACE_ITEM
321
+ REPLACE_ITEM: REPLACE_ITEM,
322
+ CHANGE_DISTANCE: CHANGE_DISTANCE
317
323
  };
318
324
  export var HOLE_ACTIONS = {
319
325
  SELECT_HOLE: SELECT_HOLE,
@@ -545,6 +551,12 @@ export var LABEL_COLOR = '#6E7191';
545
551
  export var TEXT_COLOR = '#000000';
546
552
  export var ACCENT_COLOR = '#AD00FF';
547
553
  export var BROWN_COLOR = '#624100';
554
+ export var ROOM_SHAPE_MEASUREMENT_LINE_COLOR = '#455A64';
555
+ export var ROOM_ELEMENT_MEASUREMENT_LINE_COLOR = '#B0BEC5';
556
+ export var BASE_ITEM_MEASUREMENT_LINE_COLOR = '#0277BD';
557
+ export var WALL_ITEM_MEASUREMENT_LINE_COLOR = '#00897B';
558
+ export var DISTANCE_MEASUREMENT_LINE_COLOR = '#7B1FA2';
559
+ export var DASH_LINE_COLOR = '#78909C';
548
560
  export var DEFAULT_FONT_FAMILY = 'Open Sans';
549
561
 
550
562
  // Download summary
@@ -579,6 +591,7 @@ export var ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT = 0.1;
579
591
  export var DIFFERENT_VALUES_PATH_LENGTH = 5;
580
592
  export var MIN_ANGLE_DISALLOW_DRAW_WALL = 45;
581
593
  export var UNIT_ANGLE = 5;
594
+ export var MAX_ANGLE_SCALE = 30;
582
595
  export var HDR_URLS = ['px.hdr', 'nx.hdr', 'py.hdr', 'ny.hdr', 'pz.hdr', 'nz.hdr'];
583
596
  export var SUBMIT_REQUEST_ASSIST = 'submit';
584
597
  export var SUBMIT_ADD_CART = 'addCart';
@@ -636,6 +649,13 @@ export var ITEM_TYPE = {
636
649
  LIGHTING: 'lighting',
637
650
  FURNISHING: 'furnishing'
638
651
  };
652
+ export var PROJECT_SETTING_OPTION = {
653
+ UPDATE_CEIL_HEIGHT: UPDATE_CEIL_HEIGHT,
654
+ CHANGE_WALL_LENGTH_MEASURE: CHANGE_WALL_LENGTH_MEASURE,
655
+ CHANGE_BASE_CABINET_MEASURE: CHANGE_BASE_CABINET_MEASURE,
656
+ CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
657
+ CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE
658
+ };
639
659
 
640
660
  // direction type
641
661
  export var LEFT = 'Left';
@@ -650,4 +670,19 @@ export var EXTERNAL_EVENT_TOGGLE_TO_ELEVATION = 'EXTERNAL_EVENT_TOGGLE_TO_ELEVAT
650
670
  export var EXTERNAL_EVENT_ADD_WALL = 'EXTERNAL_EVENT_ADD_WALL';
651
671
  export var EXTERNAL_EVENT_ADD_ITEM = 'EXTERNAL_EVENT_ADD_ITEM';
652
672
  export var EXTERNAL_EVENT_MOVE_PAN = 'EXTERNAL_EVENT_MOVE_PAN';
653
- export var EXTERNAL_EVENT_NEW_PROJECT = 'EXTERNAL_EVENT_NEW_PROJECT';
673
+ export var EXTERNAL_EVENT_NEW_PROJECT = 'EXTERNAL_EVENT_NEW_PROJECT';
674
+ export var EXTERNAL_EVENT_CHANGE_DOORSTYLE = 'EXTERNAL_EVENT_CHANGE_DOORSTYLE';
675
+ export var EXTERNAL_EVENT_SET_INITIAL_DATA = 'EXTERNAL_EVENT_SET_INITIAL_DATA';
676
+ export var EXTERNAL_EVENT_ADD_ROOM_SHAPE = 'EXTERNAL_EVENT_ADD_ROOM_SHAPE';
677
+ export var EXTERNAL_EVENT_ZOOM_IN = 'EXTERNAL_EVENT_ZOOM_IN';
678
+ export var EXTERNAL_EVENT_ZOOM_OUT = 'EXTERNAL_EVENT_ZOOM_OUT';
679
+ export var EXTERNAL_EVENT_UNDO = 'EXTERNAL_EVENT_UNDO';
680
+ export var EXTERNAL_EVENT_REDO = 'EXTERNAL_EVENT_REDO';
681
+ export var EXTERNAL_EVENT_SET_MOLDING = 'EXTERNAL_EVENT_SET_MOLDING';
682
+ export var EXTERNAL_EVENT_PROJECT_SETTING = 'EXTERNAL_EVENT_PROJECT_SETTING';
683
+
684
+ // internal event type
685
+ export var INTERNAL_EVENT_SELECT_ELEMENT = 'INTERNAL_EVENT_SELECT_ELEMENT';
686
+ export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
687
+ export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
688
+ export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
@@ -1,20 +1,28 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useState, useEffect } from 'react';
3
3
  import ContainerDimensions from 'react-container-dimensions';
4
- import mockProps from "./mocks/mockProps.json";
5
- import mockCategoryData from "./mocks/categoryData.json";
6
- import mockDataBundle from "./mocks/dataBundle.json";
7
- import cabinetPaylod from "./mocks/cabinetPayload.json";
4
+ import mockProps from "./mocks/mockProps2.json";
5
+ import mockDataBundle from "./mocks/dataBundle2.json";
6
+ import cabinetPaylod from "./mocks/cabinetPayload2.json";
7
+ import doorStylePaylod from "./mocks/doorStylePayload.json";
8
+ import doorStylePaylod2 from "./mocks/doorStylePayload2.json";
9
+ import itemCDSPayload from "./mocks/itemCDSPayload.json";
10
+ import rectangleData from "./mocks/rectangleShape.json";
11
+ import moldingPayload from "./mocks/moldingPayload.json";
12
+ import distancePayload from "./mocks/distancePayload.json";
8
13
  import ReactDOM from 'react-dom';
9
14
  import LiteRenderer from "./LiteRenderer";
10
15
  import { Button } from 'antd';
11
- import { LEFT, RIGHT, TOP, BOTTOM, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT } from "./constants";
16
+ import { LEFT, RIGHT, TOP, BOTTOM, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_SET_INITIAL_DATA, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_CHANGE_DISTANCE, EXTERNAL_EVENT_SYNC_SCENE } from "./constants";
12
17
 
13
18
  // --- renderer props ---
14
19
  var options = {
15
20
  unit: 'in',
16
21
  enable3D: true
17
22
  };
23
+ var onInternalEvent = function onInternalEvent(evt) {
24
+ console.log('EVENT:', evt.type, evt.value);
25
+ };
18
26
  document.getElementById('app').style.display = 'block';
19
27
  function WorkSpace(props) {
20
28
  var _useState = useState(null),
@@ -22,6 +30,17 @@ function WorkSpace(props) {
22
30
  externalEvent = _useState2[0],
23
31
  setExternalEvent = _useState2[1];
24
32
  var offset = 5;
33
+ useEffect(function () {
34
+ var evt = {
35
+ type: EXTERNAL_EVENT_SET_INITIAL_DATA,
36
+ payload: {
37
+ doorStyle: {
38
+ doorStyle: doorStylePaylod
39
+ }
40
+ }
41
+ };
42
+ setExternalEvent(evt);
43
+ }, []);
25
44
  return /*#__PURE__*/React.createElement("div", {
26
45
  className: "flex gap-4"
27
46
  }, /*#__PURE__*/React.createElement(Button, {
@@ -107,6 +126,28 @@ function WorkSpace(props) {
107
126
  }
108
127
  }, /*#__PURE__*/React.createElement("img", {
109
128
  src: "/assets/img/svg/bottombar/arrow-right.svg"
129
+ })), /*#__PURE__*/React.createElement(Button, {
130
+ actionType: "primary",
131
+ onClick: function onClick() {
132
+ var evt = {
133
+ type: EXTERNAL_EVENT_ZOOM_IN,
134
+ payload: {}
135
+ };
136
+ setExternalEvent(evt);
137
+ }
138
+ }, /*#__PURE__*/React.createElement("img", {
139
+ src: "/assets/img/svg/bottombar/arrow-minus.svg"
140
+ })), /*#__PURE__*/React.createElement(Button, {
141
+ actionType: "primary",
142
+ onClick: function onClick() {
143
+ var evt = {
144
+ type: EXTERNAL_EVENT_ZOOM_OUT,
145
+ payload: {}
146
+ };
147
+ setExternalEvent(evt);
148
+ }
149
+ }, /*#__PURE__*/React.createElement("img", {
150
+ src: "/assets/img/svg/bottombar/arrow-plus.svg"
110
151
  })), /*#__PURE__*/React.createElement(Button, {
111
152
  actionType: "primary",
112
153
  onClick: function onClick() {
@@ -134,11 +175,117 @@ function WorkSpace(props) {
134
175
  };
135
176
  setExternalEvent(evt);
136
177
  }
137
- }, "Add B12 Cabinet"), /*#__PURE__*/React.createElement(LiteRenderer, {
138
- width: 1200,
139
- height: 953,
178
+ }, "Add B12 Cabinet"), /*#__PURE__*/React.createElement(Button, {
179
+ actionType: "danger",
180
+ onClick: function onClick() {
181
+ var evt = {
182
+ type: EXTERNAL_EVENT_CHANGE_DOORSTYLE,
183
+ payload: {
184
+ doorStyle: doorStylePaylod2,
185
+ itemCDS: itemCDSPayload,
186
+ isAll: true
187
+ }
188
+ };
189
+ setExternalEvent(evt);
190
+ }
191
+ }, "DoorStyle (Change into Midtown White Shaker)"), /*#__PURE__*/React.createElement(Button, {
192
+ actionType: "danger",
193
+ onClick: function onClick() {
194
+ var evt = {
195
+ type: EXTERNAL_EVENT_ADD_ROOM_SHAPE,
196
+ payload: rectangleData
197
+ };
198
+ setExternalEvent(evt);
199
+ }
200
+ }, "Add Room shape(rectangle)"), /*#__PURE__*/React.createElement(Button, {
201
+ actionType: "danger",
202
+ onClick: function onClick() {
203
+ var evt = {
204
+ type: EXTERNAL_EVENT_UNDO,
205
+ payload: {}
206
+ };
207
+ setExternalEvent(evt);
208
+ }
209
+ }, "Undo"), /*#__PURE__*/React.createElement(Button, {
210
+ actionType: "danger",
211
+ onClick: function onClick() {
212
+ var evt = {
213
+ type: EXTERNAL_EVENT_REDO,
214
+ payload: {}
215
+ };
216
+ setExternalEvent(evt);
217
+ }
218
+ }, "Redo"), /*#__PURE__*/React.createElement(Button, {
219
+ actionType: "danger",
220
+ onClick: function onClick() {
221
+ var evt = {
222
+ type: EXTERNAL_EVENT_SET_MOLDING,
223
+ payload: {
224
+ isGlobal: true,
225
+ moldingInfo: moldingPayload
226
+ }
227
+ };
228
+ setExternalEvent(evt);
229
+ }
230
+ }, "Global Molding (FBM)"), /*#__PURE__*/React.createElement(Button, {
231
+ actionType: "danger",
232
+ onClick: function onClick() {
233
+ var evt = {
234
+ type: EXTERNAL_EVENT_SET_MOLDING,
235
+ payload: {
236
+ isGlobal: false,
237
+ moldingInfo: moldingPayload
238
+ }
239
+ };
240
+ setExternalEvent(evt);
241
+ }
242
+ }, "Individual Molding (FBM)"), /*#__PURE__*/React.createElement(Button, {
243
+ actionType: "danger",
244
+ onClick: function onClick() {
245
+ var evt = {
246
+ type: EXTERNAL_EVENT_PROJECT_SETTING,
247
+ payload: {
248
+ option: PROJECT_SETTING_OPTION.UPDATE_CEIL_HEIGHT,
249
+ value: 100 // ceiling length
250
+ }
251
+ };
252
+ setExternalEvent(evt);
253
+ }
254
+ }, "Setting-CeilingHeight"), /*#__PURE__*/React.createElement(Button, {
255
+ actionType: "danger",
256
+ onClick: function onClick() {
257
+ var evt = {
258
+ type: EXTERNAL_EVENT_PROJECT_SETTING,
259
+ payload: {
260
+ option: PROJECT_SETTING_OPTION.CHANGE_WALL_LENGTH_MEASURE,
261
+ value: 1 // 0-false, 1-true
262
+ }
263
+ };
264
+ setExternalEvent(evt);
265
+ }
266
+ }, "Setting-WallLength"), /*#__PURE__*/React.createElement(Button, {
267
+ actionType: "danger",
268
+ onClick: function onClick() {
269
+ var evt = {
270
+ type: EXTERNAL_EVENT_CHANGE_DISTANCE,
271
+ payload: distancePayload
272
+ };
273
+ setExternalEvent(evt);
274
+ }
275
+ }, "Setting-Distance"), /*#__PURE__*/React.createElement(Button, {
276
+ actionType: "danger",
277
+ onClick: function onClick() {
278
+ var evt = {
279
+ type: EXTERNAL_EVENT_SYNC_SCENE,
280
+ // send request for sync scene data to 3DTool
281
+ payload: {}
282
+ };
283
+ setExternalEvent(evt);
284
+ }
285
+ }, "Event-sync"), /*#__PURE__*/React.createElement(LiteRenderer, {
286
+ width: props.width,
287
+ height: props.height,
140
288
  projectElement: mockProps.projectElement,
141
- categoryData: mockCategoryData,
142
289
  dataBundle: mockDataBundle,
143
290
  configData: mockProps.configData,
144
291
  options: options,
@@ -146,6 +293,7 @@ function WorkSpace(props) {
146
293
  companyUrl: "https://example.com",
147
294
  toolbarButtons: [],
148
295
  externalEvent: externalEvent,
296
+ onInternalEvent: onInternalEvent,
149
297
  onError: function onError(payload) {
150
298
  // payload = {
151
299
  // type: 'render-error' | 'runtime-error' | 'unhandled-rejection',
@@ -158,4 +306,11 @@ function WorkSpace(props) {
158
306
  }
159
307
  }));
160
308
  }
161
- ReactDOM.render(/*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(WorkSpace, null)), document.getElementById('app'));
309
+ ReactDOM.render(/*#__PURE__*/React.createElement(ContainerDimensions, null, function (_ref) {
310
+ var width = _ref.width,
311
+ height = _ref.height;
312
+ return /*#__PURE__*/React.createElement(WorkSpace, {
313
+ width: width,
314
+ height: height
315
+ });
316
+ }), document.getElementById('app'));
package/es/index.js CHANGED
@@ -1,7 +1,56 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
6
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
7
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
1
9
  import React from 'react';
10
+ import ReactDOM from 'react-dom';
2
11
  import LiteRenderer from "./LiteRenderer";
3
- export function renderKitchenSimulator() {
4
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5
- return /*#__PURE__*/React.createElement(LiteRenderer, props);
12
+ export function renderKitchenSimulator(container) {
13
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
+ var setExternalEventFn = null;
15
+
16
+ // Internal wrapper that exposes a state setter
17
+ var Wrapper = /*#__PURE__*/function (_React$Component) {
18
+ function Wrapper(p) {
19
+ var _this;
20
+ _classCallCheck(this, Wrapper);
21
+ _this = _callSuper(this, Wrapper, [p]);
22
+ _this.state = {
23
+ externalEvent: p.externalEvent || null
24
+ };
25
+ setExternalEventFn = _this.setExternalEvent.bind(_this);
26
+ return _this;
27
+ }
28
+ _inherits(Wrapper, _React$Component);
29
+ return _createClass(Wrapper, [{
30
+ key: "setExternalEvent",
31
+ value: function setExternalEvent(newEvent) {
32
+ this.setState({
33
+ externalEvent: newEvent
34
+ });
35
+ }
36
+ }, {
37
+ key: "render",
38
+ value: function render() {
39
+ return /*#__PURE__*/React.createElement(LiteRenderer, _extends({}, this.props, {
40
+ externalEvent: this.state.externalEvent
41
+ }));
42
+ }
43
+ }]);
44
+ }(React.Component); // Mount once
45
+ ReactDOM.render(/*#__PURE__*/React.createElement(Wrapper, props), container);
46
+ return {
47
+ updateExternalEvent: function updateExternalEvent(newExternalEvent) {
48
+ var _setExternalEventFn;
49
+ (_setExternalEventFn = setExternalEventFn) === null || _setExternalEventFn === void 0 || _setExternalEventFn(newExternalEvent);
50
+ },
51
+ unmount: function unmount() {
52
+ ReactDOM.unmountComponentAtNode(container);
53
+ }
54
+ };
6
55
  }
7
56
  export default renderKitchenSimulator;