kitchen-simulator 4.0.6-react-18 → 4.0.7-measurement-unit-payload

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 (204) hide show
  1. package/README.md +3 -0
  2. package/es/AppContext.js +1 -1
  3. package/es/LiteKitchenConfigurator.js +162 -107
  4. package/es/LiteRenderer.js +162 -137
  5. package/es/actions/export.js +25 -12
  6. package/es/actions/project-actions.js +2 -1
  7. package/es/assets/gltf/door_sliding.bin +0 -0
  8. package/es/assets/img/png/helper/video_preview_start.png +0 -0
  9. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  10. package/es/catalog/catalog.js +21 -5
  11. package/es/catalog/factories/wall-factory.js +1 -1
  12. package/es/catalog/holes/window-clear/planner-element.js +2 -2
  13. package/es/catalog/properties/export.js +21 -0
  14. package/es/catalog/properties/property-checkbox.js +68 -0
  15. package/es/catalog/properties/property-color.js +39 -0
  16. package/es/catalog/properties/property-enum.js +50 -0
  17. package/es/catalog/properties/property-hidden.js +19 -0
  18. package/es/catalog/properties/property-lenght-measure.js +100 -0
  19. package/es/catalog/properties/property-length-measure.js +84 -0
  20. package/es/catalog/properties/property-length-measure_hole.js +100 -0
  21. package/es/catalog/properties/property-number.js +48 -0
  22. package/es/catalog/properties/property-read-only.js +26 -0
  23. package/es/catalog/properties/property-string.js +48 -0
  24. package/es/catalog/properties/property-toggle.js +39 -0
  25. package/es/catalog/properties/shared-property-style.js +14 -0
  26. package/es/catalog/utils/exporter.js +24 -11
  27. package/es/catalog/utils/item-loader.js +38 -34
  28. package/es/class/hole.js +0 -2
  29. package/es/class/item.js +99 -70
  30. package/es/class/layer.js +1 -1
  31. package/es/class/line.js +4 -8
  32. package/es/class/project.js +96 -81
  33. package/es/components/content.js +5 -93
  34. package/es/components/export.js +4 -6
  35. package/es/components/style/button.js +106 -0
  36. package/es/components/style/cancel-button.js +21 -0
  37. package/es/components/style/content-container.js +30 -0
  38. package/es/components/style/content-title.js +25 -0
  39. package/es/components/style/delete-button.js +24 -0
  40. package/es/components/style/export.js +28 -2
  41. package/es/components/style/form-block.js +20 -0
  42. package/es/components/style/form-color-input.js +26 -0
  43. package/es/components/style/form-label.js +22 -0
  44. package/es/components/style/form-number-input.js +29 -27
  45. package/es/components/style/form-number-input_2.js +200 -0
  46. package/es/components/style/form-select.js +19 -0
  47. package/es/components/style/form-slider.js +60 -0
  48. package/es/components/style/form-submit-button.js +25 -0
  49. package/es/components/style/form-text-input.js +69 -0
  50. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  51. package/es/components/viewer2d/group.js +5 -4
  52. package/es/components/viewer2d/item.js +155 -359
  53. package/es/components/viewer2d/layer.js +1 -1
  54. package/es/components/viewer2d/line.js +22 -52
  55. package/es/components/viewer2d/ruler.js +16 -11
  56. package/es/components/viewer2d/rulerDist.js +38 -51
  57. package/es/components/viewer2d/rulerX.js +4 -2
  58. package/es/components/viewer2d/rulerY.js +3 -0
  59. package/es/components/viewer2d/scene.js +17 -12
  60. package/es/components/viewer2d/state.js +1 -1
  61. package/es/components/viewer2d/utils.js +2 -2
  62. package/es/components/viewer2d/vertex.js +3 -2
  63. package/es/components/viewer2d/viewer2d.js +56 -87
  64. package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
  65. package/es/components/viewer3d/scene-creator.js +270 -69
  66. package/es/components/viewer3d/viewer3d-first-person.js +24 -26
  67. package/es/components/viewer3d/viewer3d.js +115 -120
  68. package/es/constants.js +7 -2
  69. package/es/devLiteRenderer.js +491 -150
  70. package/es/index.js +627 -1
  71. package/es/models.js +13 -8
  72. package/es/plugins/SVGLoader.js +1414 -0
  73. package/es/plugins/console-debugger.js +34 -0
  74. package/es/plugins/export.js +7 -0
  75. package/es/plugins/keyboard.js +110 -0
  76. package/es/reducers/project-reducer.js +4 -1
  77. package/es/reducers/viewer2d-reducer.js +3 -1
  78. package/es/reducers/viewer3d-reducer.js +3 -1
  79. package/es/styles/export.js +5 -0
  80. package/es/styles/tabs.css +40 -0
  81. package/es/utils/geometry.js +77 -119
  82. package/es/utils/helper.js +38 -1
  83. package/es/utils/isolate-event-handler.js +829 -609
  84. package/es/utils/molding.js +459 -11
  85. package/es/utils/ruler.js +58 -0
  86. package/lib/AppContext.js +1 -1
  87. package/lib/LiteKitchenConfigurator.js +161 -107
  88. package/lib/LiteRenderer.js +161 -137
  89. package/lib/actions/export.js +35 -39
  90. package/lib/actions/project-actions.js +2 -1
  91. package/lib/assets/gltf/door_sliding.bin +0 -0
  92. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  93. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  94. package/lib/catalog/catalog.js +20 -4
  95. package/lib/catalog/factories/wall-factory.js +1 -1
  96. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  97. package/lib/catalog/properties/export.js +81 -0
  98. package/lib/catalog/properties/property-checkbox.js +76 -0
  99. package/lib/catalog/properties/property-color.js +47 -0
  100. package/lib/catalog/properties/property-enum.js +58 -0
  101. package/lib/catalog/properties/property-hidden.js +27 -0
  102. package/lib/catalog/properties/property-lenght-measure.js +108 -0
  103. package/lib/catalog/properties/property-length-measure.js +92 -0
  104. package/lib/catalog/properties/property-length-measure_hole.js +108 -0
  105. package/lib/catalog/properties/property-number.js +56 -0
  106. package/lib/catalog/properties/property-read-only.js +34 -0
  107. package/lib/catalog/properties/property-string.js +56 -0
  108. package/lib/catalog/properties/property-toggle.js +47 -0
  109. package/lib/catalog/properties/shared-property-style.js +21 -0
  110. package/lib/catalog/utils/exporter.js +24 -11
  111. package/lib/catalog/utils/item-loader.js +38 -34
  112. package/lib/class/hole.js +0 -2
  113. package/lib/class/item.js +97 -68
  114. package/lib/class/layer.js +1 -1
  115. package/lib/class/line.js +3 -7
  116. package/lib/class/project.js +96 -81
  117. package/lib/components/content.js +5 -93
  118. package/lib/components/export.js +6 -26
  119. package/lib/components/style/button.js +115 -0
  120. package/lib/components/style/cancel-button.js +29 -0
  121. package/lib/components/style/content-container.js +38 -0
  122. package/lib/components/style/content-title.js +35 -0
  123. package/lib/components/style/delete-button.js +34 -0
  124. package/lib/components/style/export.js +105 -1
  125. package/lib/components/style/form-block.js +28 -0
  126. package/lib/components/style/form-color-input.js +34 -0
  127. package/lib/components/style/form-label.js +30 -0
  128. package/lib/components/style/form-number-input.js +29 -27
  129. package/lib/components/style/form-number-input_2.js +209 -0
  130. package/lib/components/style/form-select.js +29 -0
  131. package/lib/components/style/form-slider.js +68 -0
  132. package/lib/components/style/form-submit-button.js +35 -0
  133. package/lib/components/style/form-text-input.js +78 -0
  134. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  135. package/lib/components/viewer2d/group.js +5 -4
  136. package/lib/components/viewer2d/item.js +152 -356
  137. package/lib/components/viewer2d/layer.js +1 -1
  138. package/lib/components/viewer2d/line.js +22 -52
  139. package/lib/components/viewer2d/ruler.js +15 -10
  140. package/lib/components/viewer2d/rulerDist.js +38 -51
  141. package/lib/components/viewer2d/rulerX.js +4 -2
  142. package/lib/components/viewer2d/rulerY.js +3 -0
  143. package/lib/components/viewer2d/scene.js +17 -12
  144. package/lib/components/viewer2d/state.js +1 -1
  145. package/lib/components/viewer2d/utils.js +2 -2
  146. package/lib/components/viewer2d/vertex.js +3 -2
  147. package/lib/components/viewer2d/viewer2d.js +54 -84
  148. package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
  149. package/lib/components/viewer3d/scene-creator.js +267 -66
  150. package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
  151. package/lib/components/viewer3d/viewer3d.js +112 -116
  152. package/lib/constants.js +12 -7
  153. package/lib/devLiteRenderer.js +489 -148
  154. package/lib/index.js +630 -6
  155. package/lib/models.js +13 -8
  156. package/lib/plugins/SVGLoader.js +1419 -0
  157. package/lib/plugins/console-debugger.js +42 -0
  158. package/lib/plugins/export.js +25 -0
  159. package/lib/plugins/keyboard.js +117 -0
  160. package/lib/reducers/project-reducer.js +4 -1
  161. package/lib/reducers/viewer2d-reducer.js +3 -1
  162. package/lib/reducers/viewer3d-reducer.js +3 -1
  163. package/lib/styles/export.js +13 -0
  164. package/lib/styles/tabs.css +40 -0
  165. package/lib/utils/geometry.js +77 -119
  166. package/lib/utils/helper.js +40 -1
  167. package/lib/utils/isolate-event-handler.js +829 -608
  168. package/lib/utils/molding.js +460 -9
  169. package/lib/utils/ruler.js +63 -0
  170. package/package.json +21 -20
  171. package/es/mocks/appliancePayload.json +0 -27
  172. package/es/mocks/cabinetPayload.json +0 -1914
  173. package/es/mocks/cabinetPayload2.json +0 -76
  174. package/es/mocks/dataBundle2.json +0 -4
  175. package/es/mocks/distancePayload.json +0 -6
  176. package/es/mocks/doorStylePayload2.json +0 -84
  177. package/es/mocks/furnishingPayload.json +0 -23
  178. package/es/mocks/itemCDSPayload.json +0 -27
  179. package/es/mocks/lightingPayload.json +0 -23
  180. package/es/mocks/mockProps.json +0 -43
  181. package/es/mocks/mockProps2.json +0 -9
  182. package/es/mocks/moldingPayload.json +0 -19
  183. package/es/mocks/projectItemsCatalog.json +0 -133
  184. package/es/mocks/rectangleShape.json +0 -238
  185. package/es/mocks/replaceCabinetPayload.json +0 -81
  186. package/es/mocks/roomShapePayload.json +0 -5
  187. package/es/useAppContext.js +0 -8
  188. package/lib/mocks/appliancePayload.json +0 -27
  189. package/lib/mocks/cabinetPayload.json +0 -1914
  190. package/lib/mocks/cabinetPayload2.json +0 -76
  191. package/lib/mocks/dataBundle2.json +0 -4
  192. package/lib/mocks/distancePayload.json +0 -6
  193. package/lib/mocks/doorStylePayload2.json +0 -84
  194. package/lib/mocks/furnishingPayload.json +0 -23
  195. package/lib/mocks/itemCDSPayload.json +0 -27
  196. package/lib/mocks/lightingPayload.json +0 -23
  197. package/lib/mocks/mockProps.json +0 -43
  198. package/lib/mocks/mockProps2.json +0 -9
  199. package/lib/mocks/moldingPayload.json +0 -19
  200. package/lib/mocks/projectItemsCatalog.json +0 -133
  201. package/lib/mocks/rectangleShape.json +0 -238
  202. package/lib/mocks/replaceCabinetPayload.json +0 -81
  203. package/lib/mocks/roomShapePayload.json +0 -5
  204. package/lib/useAppContext.js +0 -16
@@ -19,17 +19,16 @@ 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, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT, MODE_ROTATING_ITEM, MODE_DRAGGING_HOLE_3D, INTERNAL_EVENT_REPLACE_CABINET } from "../../constants";
23
23
  import { isUndefined } from 'util';
24
24
  import { verticesDistance } from "../../utils/geometry";
25
25
  import { convert } from "../../utils/convert-units-lite";
26
26
  import { GeometryUtils } from "../../utils/export";
27
- import { handleCamRect, isElevationView, isEmpty } from "../../utils/helper";
27
+ import { handleCamRect, isElevationView, isEmpty, updatePayloadOfInternalEvent } from "../../utils/helper";
28
28
  import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
29
29
  import CameraControls from 'camera-controls';
30
30
  import { getAllMeshes, vectorIntersectWithMesh } from "../../utils/objects-utils";
31
- import { isWarningItem, returnReplaceableDeepSearchType } from "../viewer2d/utils";
32
- import { MoldingUtils } from "../../utils/export";
31
+ import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
33
32
  CameraControls.install({
34
33
  THREE: Three
35
34
  });
@@ -232,6 +231,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
232
231
  });
233
232
  self.renderer.domElement.style.display = 'block';
234
233
  }, 1500);
234
+ self.planData = planData;
235
235
  });
236
236
  var area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
237
237
  var layer = scene.getIn(['layers', scene.selectedLayer]);
@@ -670,7 +670,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
670
670
  layer.lines.forEach(function (line) {
671
671
  line.holes.forEach(function (holeID) {
672
672
  var hole = layer.holes.get(holeID);
673
- holes.push(hole);
673
+ if (hole) holes.push(hole);
674
674
  });
675
675
  });
676
676
  var i = 0;
@@ -816,17 +816,19 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
816
816
  this.snap = function (obj, layer) {
817
817
  // snap operation
818
818
  var target = obj.userData.target;
819
+ if (isEmpty(target)) return;
819
820
  for (; target.parent != null;) {
820
821
  if (target.name == 'pivot') break;
821
822
  target = target.parent;
822
823
  }
823
824
  var source = obj.parent.parent.parent;
824
825
  if (target.userData.type == 'item') {
826
+ var _item$properties$getI;
825
827
  var sRot = layer.getIn(['items', source.userData.itemId]).rotation;
826
828
  var tRot = layer.getIn(['items', target.userData.itemId]) ? layer.getIn(['items', target.userData.itemId]).rotation : 0;
827
829
  var item = layer.getIn(['items', source.userData.itemId]);
828
830
  var layoutType = item.layoutpos;
829
- var altitudeLength = convert(item.properties.getIn(['altitude', '_length'])).from('in').to('cm');
831
+ var altitudeLength = convert(item.properties.getIn(['altitude', '_length'])).from((_item$properties$getI = item.properties.getIn(['altitude', '_unit'])) !== null && _item$properties$getI !== void 0 ? _item$properties$getI : 'in').to('cm');
830
832
  var sBounding = source.children[0].userData;
831
833
  var tBounding = target.children[0].userData;
832
834
  var tPos = target.position.clone();
@@ -926,8 +928,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
926
928
  snapFlag = false;
927
929
  return;
928
930
  } else {
931
+ var _item3$properties$get;
929
932
  var _layoutType = _item3.layoutpos;
930
- var _altitudeLength = convert(_item3.properties.getIn(['altitude', '_length'])).from('in').to('cm');
933
+ var _altitudeLength = convert(_item3.properties.getIn(['altitude', '_length'])).from((_item3$properties$get = _item3.properties.getIn(['altitude', '_unit'])) !== null && _item3$properties$get !== void 0 ? _item3$properties$get : 'in').to('cm');
931
934
  var _sBounding = source.children[0].userData;
932
935
  var _width = _sBounding.max.x - _sBounding.min.x;
933
936
  var _height = _sBounding.max.y - _sBounding.min.y;
@@ -1186,18 +1189,10 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1186
1189
  };
1187
1190
  var sendInternalEvent = function sendInternalEvent(evtType, evtElement) {
1188
1191
  var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1189
- if (!isEmpty(evtType)) {
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) === 'items') {
1193
- // check this cabinet has warning box
1194
- payload.isWarning = isWarningItem(evtElement);
1195
- // check this item is available molding
1196
- payload.isMoldingAvailable = MoldingUtils.isEnableItemForMolding(layer, evtElement); // check this item is snapped to wall
1197
- payload.isAttachedWall = MoldingUtils.isAttachedWall(layer, evtElement);
1198
- // update distArray
1199
- if (pointArray) payload.distArray = pointArray;
1200
- }
1192
+ if (!isEmpty(evtType) && !isEmpty(evtElement)) {
1193
+ var _state$get, _this2$props$onIntern, _this2$props;
1194
+ var catalog = (_state$get = state.get('catalog')) === null || _state$get === void 0 ? void 0 : _state$get.toJS();
1195
+ var payload = updatePayloadOfInternalEvent(evtElement, layer, catalog, pointArray);
1201
1196
  (_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
1202
1197
  type: evtType,
1203
1198
  value: payload
@@ -1355,11 +1350,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1355
1350
  if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
1356
1351
  cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
1357
1352
  selectedFlag = false;
1358
- } else {
1359
- isSelected = false;
1360
- _this2.context.projectActions.unselectAll();
1361
- scene3D.remove(toolObj);
1362
- _this2.context.itemsActions.removeReplacingSupport();
1363
1353
  }
1364
1354
  }
1365
1355
  } else {
@@ -1372,10 +1362,12 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1372
1362
  }
1373
1363
  };
1374
1364
  this.mouseUpEvent = function (event) {
1365
+ var _selectedObject;
1375
1366
  var internalType = ''; // internalEvent type - select/drag/draw
1376
1367
  var selectedElement; // internalEvent data
1377
1368
  firstMove = 0;
1378
1369
  var altitude = 0;
1370
+ var curLayer = _this2.props.state.scene.getIn(['layers', (_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.layerID]);
1379
1371
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
1380
1372
  var properties = allItemRect.cur.itemInfo.properties;
1381
1373
  altitude = properties.getIn(['altitude', '_length']);
@@ -1396,7 +1388,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1396
1388
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
1397
1389
  } else {
1398
1390
  removeSnapBox();
1399
- var polygon = GeometryUtils.getPoylgonPoints(layer);
1391
+ var polygon = GeometryUtils.getPoylgonPoints(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1400
1392
  // if cursor is outside of room
1401
1393
  if (polygon.length > 0 && !GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
1402
1394
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
@@ -1412,11 +1404,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1412
1404
  }
1413
1405
  switch (_this2.props.state.mode) {
1414
1406
  case MODE_DRAGGING_ITEM_3D:
1407
+ case MODE_DRAGGING_HOLE_3D:
1415
1408
  internalType = INTERNAL_EVENT_DRAG_ELEMENT;
1416
1409
  break;
1417
1410
  case MODE_ROTATING_ITEM_3D:
1418
1411
  internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
1419
1412
  break;
1413
+ case MODE_DRAWING_HOLE_3D:
1414
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
1415
+ break;
1416
+ case MODE_IDLE_3D:
1417
+ internalType = INTERNAL_EVENT_SELECT_ELEMENT;
1418
+ break;
1420
1419
  }
1421
1420
  if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
1422
1421
  _this2.context.itemsActions.endDraggingItem3D();
@@ -1450,7 +1449,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1450
1449
  });
1451
1450
  });
1452
1451
  var intersects = raycaster.intersectObjects(meshes, true);
1453
- var _i10;
1452
+ var _i10; // index of warning object in intersects
1453
+
1454
1454
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1455
1455
  for (_i10 = 0; _i10 < intersects.length; _i10++) {
1456
1456
  if (intersects[_i10].object.name === 'warningObj') break;
@@ -1466,6 +1466,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1466
1466
  var replaceInfo = intersects[_i10].object.parent.parent.userData;
1467
1467
  _this2.context.itemsActions.selectItem(replaceInfo.layerId, replaceInfo.itemId);
1468
1468
  !_this2.props.downloadFlag && _this2.props.replaceCabinet(true);
1469
+ internalType = INTERNAL_EVENT_REPLACE_CABINET;
1470
+ var replaceElement = _this2.props.state.scene.layers.get(replaceInfo.layerId).items.get(replaceInfo.itemId);
1471
+ sendInternalEvent(internalType, replaceElement);
1469
1472
  return;
1470
1473
  }
1471
1474
  }
@@ -1478,6 +1481,19 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1478
1481
  }
1479
1482
  }
1480
1483
  gridMatrix.copy(gridPlane.matrixWorld).invert();
1484
+ var addItemToolObj = function addItemToolObj() {
1485
+ var _planData$sceneGraph, _selectedObject2, _intersects$_i;
1486
+ var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.itemID];
1487
+ if (isUndefined(selectedItem)) return;
1488
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1489
+ var itemPos = selectedItem.position.clone();
1490
+ 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) {
1491
+ toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1492
+ } else {
1493
+ 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);
1494
+ }
1495
+ scene3D.add(toolObj);
1496
+ };
1481
1497
  if (Math.abs(mouse.x - _this2.lastMousePosition.x) <= 0.02 && Math.abs(mouse.y - _this2.lastMousePosition.y) <= 0.02 || bMove) {
1482
1498
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1483
1499
  if (intersects[_i10] === undefined) {
@@ -1500,38 +1516,20 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1500
1516
  }
1501
1517
  isSelected = true;
1502
1518
  setTimeout(function () {
1503
- getDistances(layer);
1504
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1505
- if (isUndefined(selectedItem)) return;
1506
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1507
- var itemPos = selectedItem.position.clone();
1508
- if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
1509
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1510
- } else {
1511
- 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);
1512
- }
1513
- scene3D.add(toolObj);
1519
+ var _curLayer$id;
1520
+ addItemToolObj();
1521
+ getDistances(curLayer !== null && curLayer !== void 0 ? curLayer : layer, selectedElement);
1514
1522
  _this2.setState({
1515
1523
  toolObj: toolObj
1516
1524
  });
1517
1525
  // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
1518
- var pointArray = [],
1519
- cnt = 0;
1520
- pointArray.push([fVLine[0].userData.distance, 90]);
1521
- pointArray.push([fVLine[1].userData.distance, -90]);
1522
- pointArray.push([fVLine[2].userData.distance, 180]);
1523
- pointArray.push([fVLine[3].userData.distance, 0]);
1524
- pointArray.forEach(function (pointElement, index) {
1525
- if (pointElement[0] == undefined) pointArray[index][0] = 0;
1526
- });
1527
- pointArray.forEach(function (pointElement) {
1528
- if (pointElement[0] == 0) cnt++;
1529
- });
1530
- if (cnt == 4 || cnt == 3) {
1531
- pointArray[0][0] = 100;
1532
- pointArray[1][0] = 100;
1533
- }
1534
- actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
1526
+ var pointArray = [];
1527
+ // pointArray.push([fVLine[0].userData.distance, 90]);
1528
+ // pointArray.push([fVLine[1].userData.distance, -90]);
1529
+ // pointArray.push([fVLine[2].userData.distance, 180]);
1530
+ // pointArray.push([fVLine[3].userData.distance, 0]);
1531
+ pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, curLayer !== null && curLayer !== void 0 ? curLayer : layer).PointArray;
1532
+ actions.itemsActions.storeDistArray((_curLayer$id = curLayer === null || curLayer === void 0 ? void 0 : curLayer.id) !== null && _curLayer$id !== void 0 ? _curLayer$id : layer.id, selectedObject.itemID, pointArray);
1535
1533
  internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
1536
1534
  sendInternalEvent(internalType, selectedElement, pointArray);
1537
1535
  });
@@ -1541,16 +1539,17 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1541
1539
  var elementPrototype = null;
1542
1540
  switch (true) {
1543
1541
  case 'holeID' in selectedObject:
1544
- case 'lineID' in selectedObject:
1542
+ elementID = selectedObject.holeID;
1543
+ elementPrototype = 'holes';
1545
1544
  if (_this2.props.state.mode === MODE_DRAGGING_HOLE_3D) {
1546
1545
  actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1547
- internalType = INTERNAL_EVENT_SELECT_ELEMENT;
1548
- elementID = selectedObject.holeID;
1549
- elementPrototype = 'holes';
1550
1546
  }
1551
1547
  break;
1548
+ case 'lineID' in selectedObject:
1549
+ elementID = selectedObject.lineID;
1550
+ elementPrototype = 'lines';
1551
+ break;
1552
1552
  case 'areaID' in selectedObject:
1553
- internalType = INTERNAL_EVENT_SELECT_ELEMENT;
1554
1553
  elementID = selectedObject.areaID;
1555
1554
  elementPrototype = 'areas';
1556
1555
  break;
@@ -1562,25 +1561,31 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1562
1561
  isSelected = false;
1563
1562
  }
1564
1563
  } else {
1565
- isSelected = false;
1566
- _this2.context.projectActions.unselectAll();
1567
- switch (true) {
1568
- case 'holeID' in selectedObject:
1569
- actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1570
- break;
1571
- default:
1572
- _this2.context.itemsActions.removeReplacingSupport();
1573
- break;
1564
+ var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1565
+ if (bMove && !isEmpty(selectedItem)) {
1566
+ addItemToolObj();
1567
+ } else {
1568
+ isSelected = false;
1569
+ _this2.context.projectActions.unselectAll();
1570
+ switch (true) {
1571
+ case 'holeID' in selectedObject:
1572
+ actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1573
+ break;
1574
+ default:
1575
+ _this2.context.itemsActions.removeReplacingSupport();
1576
+ break;
1577
+ }
1574
1578
  }
1575
1579
  }
1576
1580
  bMove = false;
1577
1581
  bRotate = false;
1578
1582
  bMoveUP = false;
1579
1583
  if (isSelected) {
1580
- prepareSnap(layer);
1584
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1581
1585
  selectedObj = allItemRect.cur;
1582
1586
  }
1583
1587
  } else {
1588
+ var _planData$sceneGraph2, _selectedObject3, _selectedObject4;
1584
1589
  visibleTransformBox(false);
1585
1590
  var alti = 0;
1586
1591
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1590,18 +1595,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1590
1595
  alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
1591
1596
  }
1592
1597
  getPoint(event, alti);
1598
+ var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject4 = selectedObject) === null || _selectedObject4 === void 0 ? void 0 : _selectedObject4.itemID];
1599
+ if (isSelected && !isEmpty(_selectedItem)) addItemToolObj();
1593
1600
  if (bRotate) {
1594
- var _intersects$_i;
1595
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1596
- if (isUndefined(selectedItem)) return;
1597
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1598
- var itemPos = selectedItem.position.clone();
1599
- 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) {
1600
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1601
- } else {
1602
- 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);
1603
- }
1604
- scene3D.add(toolObj);
1605
1601
  _this2.setState({
1606
1602
  toolObj: toolObj
1607
1603
  });
@@ -1610,16 +1606,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1610
1606
  }
1611
1607
  if (bMove) {
1612
1608
  bMove = false;
1613
- var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1614
- if (isUndefined(_selectedItem)) return;
1615
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1616
- var _itemPos = _selectedItem.position.clone();
1617
- if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
1618
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1619
- } else {
1620
- 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);
1621
- }
1622
- scene3D.add(toolObj);
1623
1609
  _this2.setState({
1624
1610
  toolObj: toolObj
1625
1611
  });
@@ -1647,7 +1633,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1647
1633
  removeSnapBox();
1648
1634
  actions.sceneActions.updateMovingState(true);
1649
1635
  if (isSelected === true) {
1650
- prepareSnap(layer);
1636
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1651
1637
  selectedObj = allItemRect.cur;
1652
1638
  }
1653
1639
  }
@@ -2046,8 +2032,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2046
2032
  // handle snapBox, distArray, backsplash
2047
2033
  this.handleAfterMovingItem = function () {
2048
2034
  var layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
2035
+ var item = layer.getIn(['items', selectedObject.itemID]);
2049
2036
  var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
2050
- getDistances(layer);
2037
+ getDistances(layer, item);
2051
2038
  var pointArray = [],
2052
2039
  cnt = 0;
2053
2040
  pointArray.push([fVLine[0].userData.distance, 90]);
@@ -2086,7 +2073,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2086
2073
  if (minDis < snapDelta && !snapFlag) {
2087
2074
  _this2.snap(snapObj, layer);
2088
2075
  snapFlag = true;
2089
- getDistances(layer, true);
2076
+ getDistances(layer, item);
2090
2077
  var _i13 = 0;
2091
2078
  for (_i13 = 0; _i13 < fVLine.length; _i13++) {
2092
2079
  if (fVLine[_i13].userData.distance < snapDelta) {
@@ -2445,18 +2432,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2445
2432
  this.renderer.renderLists.dispose();
2446
2433
  }
2447
2434
  }, {
2448
- key: "componentDidUpdate",
2449
- value: function componentDidUpdate(prevProps) {
2435
+ key: "componentWillReceiveProps",
2436
+ value: function componentWillReceiveProps(nextProps) {
2450
2437
  var _this4 = this;
2451
- // Early return if downloadFlag and state are unchanged or scene is empty
2452
- if (this.props.downloadFlag && diff(prevProps.state, this.props.state).toJS().length == 0 || isEmpty(this.props.state.scene)) {
2453
- return;
2454
- }
2455
- var _this$props = this.props,
2456
- width = _this$props.width,
2457
- height = _this$props.height;
2458
- var selectedLayer = this.props.state.getIn(['scene', 'layers', this.props.state.scene.selectedLayer]);
2459
- var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(this.props.state.scene.unit);
2438
+ if (this.props.downloadFlag && diff(this.props.state, nextProps.state).toJS().length == 0 || isEmpty(nextProps.state.scene)) return;
2439
+ var width = nextProps.width,
2440
+ height = nextProps.height;
2441
+ var selectedLayer = nextProps.state.getIn(['scene', 'layers', nextProps.state.scene.selectedLayer]);
2442
+ var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(nextProps.state.scene.unit);
2460
2443
  var actions = {
2461
2444
  areaActions: this.context.areaActions,
2462
2445
  holesActions: this.context.holesActions,
@@ -2466,7 +2449,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2466
2449
  projectActions: this.context.projectActions,
2467
2450
  catalog: this.context.catalog
2468
2451
  };
2469
- var isLoadingCabinet = this.props.state.scene.isLoadingCabinet;
2452
+ var isLoadingCabinet = nextProps.state.scene.isLoadingCabinet;
2470
2453
  if (this.state.isLoadingCabinet !== isLoadingCabinet) this.setState({
2471
2454
  isLoadingCabinet: isLoadingCabinet
2472
2455
  });
@@ -2477,7 +2460,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2477
2460
  var allItemRect;
2478
2461
 
2479
2462
  // handle camera setting
2480
- switch (prevProps.state.mode) {
2463
+ switch (this.props.state.mode) {
2481
2464
  case MODE_ELEVATION_VIEW:
2482
2465
  // when Elevation mode (camera: Orthographic)
2483
2466
  var cameraRect = handleCamRect(width, height, ceilHeight, this.state.lineLength);
@@ -2495,12 +2478,12 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2495
2478
  break;
2496
2479
  }
2497
2480
  this.camera.updateProjectionMatrix();
2498
- var data = this.props.state.scene;
2481
+ var data = nextProps.state.scene;
2499
2482
  var layer = data.getIn(['layers', data.selectedLayer]);
2500
2483
  var self = this;
2501
2484
  function implementBacksplash() {
2502
- if (isElevationView(self.props.state.mode)) return;
2503
- var allItems = GeometryUtils.getAllItemSpecified(self.props.state.scene, actions.catalog, BASE_CABINET_LAYOUTPOS);
2485
+ if (isElevationView(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode
2486
+ var allItems = GeometryUtils.getAllItemSpecified(nextProps.state.scene, actions.catalog, BASE_CABINET_LAYOUTPOS);
2504
2487
  var i,
2505
2488
  items = [];
2506
2489
  for (i = 0; i < allItems.others.length; i++) items.push(allItems.others[i]);
@@ -2509,7 +2492,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2509
2492
  var calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);
2510
2493
  var visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);
2511
2494
  actions.itemsActions.setBacksplashVisible(items[i].itemInfo.id, visible);
2512
- createBacksplash(items[i], self.props.state.scene.getIn(['layers', self.props.state.scene.selectedLayer]), planData, self.props.state.scene);
2495
+ createBacksplash(items[i], nextProps.state.scene.getIn(['layers', nextProps.state.scene.selectedLayer]), planData, nextProps.state.scene);
2513
2496
  }
2514
2497
  }
2515
2498
  function implementWarningBox() {
@@ -2537,13 +2520,16 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2537
2520
  showflag: false
2538
2521
  });
2539
2522
  }
2540
- if (this.props.state.scene !== prevProps.state.scene || this.props.state.doorStyle && this.props.state.doorStyle.get('name') !== prevProps.state.doorStyle.get('name')) {
2541
- var changedValues = diff(prevProps.state.scene, this.props.state.scene);
2523
+ if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
2524
+ var changedValues = diff(this.props.state.scene, nextProps.state.scene);
2542
2525
  prepareSnapSpec(layer);
2543
- if (this.props.state.doorStyle && this.props.state.doorStyle.get('name') === prevProps.state.doorStyle.get('name')) {
2544
- self.setState({
2545
- isLoading: true
2546
- });
2526
+ var isInteractiveMove = nextProps.state.mode === MODE_DRAGGING_ITEM_3D || nextProps.state.mode === MODE_ROTATING_ITEM_3D || nextProps.state.mode === MODE_DRAWING_ITEM_3D || nextProps.state.mode === MODE_DRAGGING_HOLE_3D || nextProps.state.mode === MODE_IDLE_3D;
2527
+ if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
2528
+ if (!isInteractiveMove) {
2529
+ self.setState({
2530
+ isLoading: true
2531
+ });
2532
+ }
2547
2533
  if (self.props.downloadFlag) {
2548
2534
  self.setState({
2549
2535
  waitForRender: 0
@@ -2559,7 +2545,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2559
2545
  }
2560
2546
  self.renderer.domElement.style.display = 'none';
2561
2547
  }
2562
- if (this.props.state.scene.showfg == true) {
2548
+ if (nextProps.state.scene.showfg == true) {
2563
2549
  implementBacksplash();
2564
2550
  implementWarningBox();
2565
2551
  } else {
@@ -2568,7 +2554,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2568
2554
  var _this$state = this.state,
2569
2555
  toolObj = _this$state.toolObj,
2570
2556
  angleObj = _this$state.angleObj;
2571
- var _updateScene = updateScene(this.planData, this.props.state.scene, prevProps.state.scene, changedValues.toJS(), actions, this.context.catalog, this.props.state.mode, toolObj, angleObj, this.props.state.draggingSupport),
2557
+ var _updateScene = updateScene(this.planData, nextProps.state.scene, this.props.state.scene, changedValues.toJS(), actions, this.context.catalog, nextProps.state.mode, toolObj, angleObj, nextProps.state.draggingSupport),
2572
2558
  promise = _updateScene.promise;
2573
2559
  self.setState();
2574
2560
  promise.then(function (p1Value) {
@@ -2580,8 +2566,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2580
2566
  });
2581
2567
  self.renderer.domElement.style.display = 'block';
2582
2568
  });
2583
- if (this.props.state.getIn(['scene', 'isEndDragging'])) {
2584
- this.props.state.setIn(['scene', 'isEndDragging'], false);
2569
+ if (nextProps.state.getIn(['scene', 'isEndDragging'])) {
2570
+ nextProps.state.setIn(['scene', 'isEndDragging'], false);
2585
2571
  }
2586
2572
  }
2587
2573
  this.renderer.setSize(width, height);
@@ -2669,4 +2655,13 @@ Scene3DViewer.propTypes = {
2669
2655
  width: PropTypes.number.isRequired,
2670
2656
  height: PropTypes.number.isRequired,
2671
2657
  replaceCabinet: PropTypes.func.isRequired
2658
+ };
2659
+ Scene3DViewer.contextTypes = {
2660
+ areaActions: PropTypes.object.isRequired,
2661
+ holesActions: PropTypes.object.isRequired,
2662
+ itemsActions: PropTypes.object.isRequired,
2663
+ linesActions: PropTypes.object.isRequired,
2664
+ sceneActions: PropTypes.object.isRequired,
2665
+ projectActions: PropTypes.object.isRequired,
2666
+ catalog: PropTypes.object
2672
2667
  };
package/es/constants.js CHANGED
@@ -66,6 +66,7 @@ export var CHANGE_WALL_LENGTH_MEASURE = 'CHANGE_WALL_LENGTH_MEASURE';
66
66
  export var CHANGE_BASE_CABINET_MEASURE = 'CHANGE_BASE_CABINET_MEASURE';
67
67
  export var CHANGE_WALL_CABINET_MEASURE = 'CHANGE_WALL_CABINET_MEASURE';
68
68
  export var CHANGE_WINDOW_DOOR_MEASURE = 'CHANGE_WINDOW_DOOR_MEASURE';
69
+ export var CHANGE_MEASUREMENT_UNIT = 'CHANGE_MEASUREMENT_UNIT';
69
70
 
70
71
  //ACTIONS viewer3D
71
72
  export var SELECT_TOOL_3D_VIEW = 'SELECT_TOOL_3D_VIEW';
@@ -650,10 +651,11 @@ export var PROJECT_SETTING_OPTION = {
650
651
  CHANGE_WALL_LENGTH_MEASURE: CHANGE_WALL_LENGTH_MEASURE,
651
652
  CHANGE_BASE_CABINET_MEASURE: CHANGE_BASE_CABINET_MEASURE,
652
653
  CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
653
- CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE
654
+ CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE,
655
+ CHANGE_MEASUREMENT_UNIT: CHANGE_MEASUREMENT_UNIT
654
656
  };
655
657
  export var HOLE_NAMES = {
656
- WINDOW_CLEAR: 'Clear Window',
658
+ WINDOW_CLEAR: 'Window',
657
659
  WINDOW_CROSS: 'Cross Window',
658
660
  WINDOW_DOUBLE_HUNG: 'Double Hung Window',
659
661
  WINDOW_VERTICAL: 'window-vertical',
@@ -739,6 +741,7 @@ export var EXTERNAL_EVENT_UPDATE_ATTRIBUTE = 'EXTERNAL_EVENT_UPDATE_ATTRIBUTE';
739
741
  export var EXTERNAL_EVENT_UPDATE_PROPERTY = 'EXTERNAL_EVENT_UPDATE_PROPERTY'; // update the element's property (flip_doorhandle, open_doors...) in the property window
740
742
  export var EXTERNAL_EVENT_REPLACE_CABINET = 'EXTERNAL_EVENT_REPLACE_CABINET';
741
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
742
745
 
743
746
  // internal event type
744
747
  export var INTERNAL_EVENT_UNSELECT_ALL = 'INTERNAL_EVENT_UNSELECT_ALL';
@@ -748,9 +751,11 @@ export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
748
751
  export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
749
752
  export var INTERNAL_EVENT_REPLACE_CABINET = 'INTERNAL_EVENT_REPLACE_CABINET';
750
753
  export var INTERNAL_EVENT_START_DRAW_WALL = 'INTERNAL_EVENT_START_DRAW_WALL';
754
+ export var INTERNAL_EVENT_TOGGLE_TO_ELEVATION = 'INTERNAL_EVENT_TOGGLE_TO_ELEVATION';
751
755
 
752
756
  // room shape type
753
757
  export var ROOM_SHAPE_TYPE = {
758
+ CUSTOM: 'custom',
754
759
  RECTANGLE: 'rectangle',
755
760
  TWO_WALLS_LEFT_TOP: '2wLeftTop',
756
761
  TWO_WALLS_RIGHT_TOP: '2wRightTop',