kitchen-simulator 4.0.9-react-18 → 4.0.9

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 (202) 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/assets/gltf/door_sliding.bin +0 -0
  7. package/es/assets/img/png/helper/video_preview_start.png +0 -0
  8. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  9. package/es/catalog/catalog.js +21 -5
  10. package/es/catalog/factories/wall-factory.js +1 -1
  11. package/es/catalog/holes/window-clear/planner-element.js +2 -2
  12. package/es/catalog/properties/export.js +21 -0
  13. package/es/catalog/properties/property-checkbox.js +68 -0
  14. package/es/catalog/properties/property-color.js +39 -0
  15. package/es/catalog/properties/property-enum.js +50 -0
  16. package/es/catalog/properties/property-hidden.js +19 -0
  17. package/es/catalog/properties/property-lenght-measure.js +100 -0
  18. package/es/catalog/properties/property-length-measure.js +84 -0
  19. package/es/catalog/properties/property-length-measure_hole.js +100 -0
  20. package/es/catalog/properties/property-number.js +48 -0
  21. package/es/catalog/properties/property-read-only.js +26 -0
  22. package/es/catalog/properties/property-string.js +48 -0
  23. package/es/catalog/properties/property-toggle.js +39 -0
  24. package/es/catalog/properties/shared-property-style.js +14 -0
  25. package/es/catalog/utils/exporter.js +24 -11
  26. package/es/catalog/utils/item-loader.js +35 -26
  27. package/es/class/hole.js +0 -2
  28. package/es/class/item.js +96 -70
  29. package/es/class/layer.js +1 -1
  30. package/es/class/line.js +4 -8
  31. package/es/class/project.js +97 -80
  32. package/es/components/content.js +5 -93
  33. package/es/components/export.js +4 -6
  34. package/es/components/style/button.js +106 -0
  35. package/es/components/style/cancel-button.js +21 -0
  36. package/es/components/style/content-container.js +30 -0
  37. package/es/components/style/content-title.js +25 -0
  38. package/es/components/style/delete-button.js +24 -0
  39. package/es/components/style/export.js +28 -2
  40. package/es/components/style/form-block.js +20 -0
  41. package/es/components/style/form-color-input.js +26 -0
  42. package/es/components/style/form-label.js +22 -0
  43. package/es/components/style/form-number-input.js +29 -27
  44. package/es/components/style/form-number-input_2.js +200 -0
  45. package/es/components/style/form-select.js +19 -0
  46. package/es/components/style/form-slider.js +60 -0
  47. package/es/components/style/form-submit-button.js +25 -0
  48. package/es/components/style/form-text-input.js +69 -0
  49. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  50. package/es/components/viewer2d/group.js +5 -4
  51. package/es/components/viewer2d/item.js +155 -359
  52. package/es/components/viewer2d/layer.js +1 -1
  53. package/es/components/viewer2d/line.js +22 -52
  54. package/es/components/viewer2d/ruler.js +16 -11
  55. package/es/components/viewer2d/rulerDist.js +38 -51
  56. package/es/components/viewer2d/rulerX.js +4 -2
  57. package/es/components/viewer2d/rulerY.js +3 -0
  58. package/es/components/viewer2d/scene.js +17 -12
  59. package/es/components/viewer2d/state.js +1 -1
  60. package/es/components/viewer2d/utils.js +2 -2
  61. package/es/components/viewer2d/vertex.js +3 -2
  62. package/es/components/viewer2d/viewer2d.js +56 -87
  63. package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
  64. package/es/components/viewer3d/scene-creator.js +108 -52
  65. package/es/components/viewer3d/viewer3d-first-person.js +24 -26
  66. package/es/components/viewer3d/viewer3d.js +115 -120
  67. package/es/constants.js +7 -2
  68. package/es/devLiteRenderer.js +491 -150
  69. package/es/index.js +614 -29
  70. package/es/models.js +13 -8
  71. package/es/plugins/SVGLoader.js +1414 -0
  72. package/es/plugins/console-debugger.js +34 -0
  73. package/es/plugins/export.js +7 -0
  74. package/es/plugins/keyboard.js +110 -0
  75. package/es/reducers/project-reducer.js +3 -0
  76. package/es/reducers/viewer2d-reducer.js +3 -1
  77. package/es/reducers/viewer3d-reducer.js +3 -1
  78. package/es/styles/export.js +5 -0
  79. package/es/styles/tabs.css +40 -0
  80. package/es/utils/geometry.js +77 -119
  81. package/es/utils/helper.js +38 -1
  82. package/es/utils/isolate-event-handler.js +827 -607
  83. package/es/utils/molding.js +459 -11
  84. package/es/utils/ruler.js +58 -0
  85. package/lib/AppContext.js +1 -1
  86. package/lib/LiteKitchenConfigurator.js +161 -107
  87. package/lib/LiteRenderer.js +161 -137
  88. package/lib/actions/export.js +35 -39
  89. package/lib/assets/gltf/door_sliding.bin +0 -0
  90. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  91. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  92. package/lib/catalog/catalog.js +20 -4
  93. package/lib/catalog/factories/wall-factory.js +1 -1
  94. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  95. package/lib/catalog/properties/export.js +81 -0
  96. package/lib/catalog/properties/property-checkbox.js +76 -0
  97. package/lib/catalog/properties/property-color.js +47 -0
  98. package/lib/catalog/properties/property-enum.js +58 -0
  99. package/lib/catalog/properties/property-hidden.js +27 -0
  100. package/lib/catalog/properties/property-lenght-measure.js +108 -0
  101. package/lib/catalog/properties/property-length-measure.js +92 -0
  102. package/lib/catalog/properties/property-length-measure_hole.js +108 -0
  103. package/lib/catalog/properties/property-number.js +56 -0
  104. package/lib/catalog/properties/property-read-only.js +34 -0
  105. package/lib/catalog/properties/property-string.js +56 -0
  106. package/lib/catalog/properties/property-toggle.js +47 -0
  107. package/lib/catalog/properties/shared-property-style.js +21 -0
  108. package/lib/catalog/utils/exporter.js +24 -11
  109. package/lib/catalog/utils/item-loader.js +35 -26
  110. package/lib/class/hole.js +0 -2
  111. package/lib/class/item.js +94 -68
  112. package/lib/class/layer.js +1 -1
  113. package/lib/class/line.js +3 -7
  114. package/lib/class/project.js +97 -80
  115. package/lib/components/content.js +5 -93
  116. package/lib/components/export.js +6 -26
  117. package/lib/components/style/button.js +115 -0
  118. package/lib/components/style/cancel-button.js +29 -0
  119. package/lib/components/style/content-container.js +38 -0
  120. package/lib/components/style/content-title.js +35 -0
  121. package/lib/components/style/delete-button.js +34 -0
  122. package/lib/components/style/export.js +105 -1
  123. package/lib/components/style/form-block.js +28 -0
  124. package/lib/components/style/form-color-input.js +34 -0
  125. package/lib/components/style/form-label.js +30 -0
  126. package/lib/components/style/form-number-input.js +29 -27
  127. package/lib/components/style/form-number-input_2.js +209 -0
  128. package/lib/components/style/form-select.js +29 -0
  129. package/lib/components/style/form-slider.js +68 -0
  130. package/lib/components/style/form-submit-button.js +35 -0
  131. package/lib/components/style/form-text-input.js +78 -0
  132. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  133. package/lib/components/viewer2d/group.js +5 -4
  134. package/lib/components/viewer2d/item.js +152 -356
  135. package/lib/components/viewer2d/layer.js +1 -1
  136. package/lib/components/viewer2d/line.js +22 -52
  137. package/lib/components/viewer2d/ruler.js +15 -10
  138. package/lib/components/viewer2d/rulerDist.js +38 -51
  139. package/lib/components/viewer2d/rulerX.js +4 -2
  140. package/lib/components/viewer2d/rulerY.js +3 -0
  141. package/lib/components/viewer2d/scene.js +17 -12
  142. package/lib/components/viewer2d/state.js +1 -1
  143. package/lib/components/viewer2d/utils.js +2 -2
  144. package/lib/components/viewer2d/vertex.js +3 -2
  145. package/lib/components/viewer2d/viewer2d.js +54 -84
  146. package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
  147. package/lib/components/viewer3d/scene-creator.js +105 -49
  148. package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
  149. package/lib/components/viewer3d/viewer3d.js +112 -116
  150. package/lib/constants.js +12 -7
  151. package/lib/devLiteRenderer.js +489 -148
  152. package/lib/index.js +614 -29
  153. package/lib/models.js +13 -8
  154. package/lib/plugins/SVGLoader.js +1419 -0
  155. package/lib/plugins/console-debugger.js +42 -0
  156. package/lib/plugins/export.js +25 -0
  157. package/lib/plugins/keyboard.js +117 -0
  158. package/lib/reducers/project-reducer.js +3 -0
  159. package/lib/reducers/viewer2d-reducer.js +3 -1
  160. package/lib/reducers/viewer3d-reducer.js +3 -1
  161. package/lib/styles/export.js +13 -0
  162. package/lib/styles/tabs.css +40 -0
  163. package/lib/utils/geometry.js +77 -119
  164. package/lib/utils/helper.js +40 -1
  165. package/lib/utils/isolate-event-handler.js +827 -606
  166. package/lib/utils/molding.js +460 -9
  167. package/lib/utils/ruler.js +63 -0
  168. package/package.json +20 -15
  169. package/es/mocks/appliancePayload.json +0 -27
  170. package/es/mocks/cabinetPayload.json +0 -1914
  171. package/es/mocks/cabinetPayload2.json +0 -76
  172. package/es/mocks/dataBundle2.json +0 -4
  173. package/es/mocks/distancePayload.json +0 -6
  174. package/es/mocks/doorStylePayload2.json +0 -84
  175. package/es/mocks/furnishingPayload.json +0 -23
  176. package/es/mocks/itemCDSPayload.json +0 -27
  177. package/es/mocks/lightingPayload.json +0 -23
  178. package/es/mocks/mockProps.json +0 -43
  179. package/es/mocks/mockProps2.json +0 -9
  180. package/es/mocks/moldingPayload.json +0 -19
  181. package/es/mocks/projectItemsCatalog.json +0 -133
  182. package/es/mocks/rectangleShape.json +0 -238
  183. package/es/mocks/replaceCabinetPayload.json +0 -81
  184. package/es/mocks/roomShapePayload.json +0 -5
  185. package/es/useAppContext.js +0 -8
  186. package/lib/mocks/appliancePayload.json +0 -27
  187. package/lib/mocks/cabinetPayload.json +0 -1914
  188. package/lib/mocks/cabinetPayload2.json +0 -76
  189. package/lib/mocks/dataBundle2.json +0 -4
  190. package/lib/mocks/distancePayload.json +0 -6
  191. package/lib/mocks/doorStylePayload2.json +0 -84
  192. package/lib/mocks/furnishingPayload.json +0 -23
  193. package/lib/mocks/itemCDSPayload.json +0 -27
  194. package/lib/mocks/lightingPayload.json +0 -23
  195. package/lib/mocks/mockProps.json +0 -43
  196. package/lib/mocks/mockProps2.json +0 -9
  197. package/lib/mocks/moldingPayload.json +0 -19
  198. package/lib/mocks/projectItemsCatalog.json +0 -133
  199. package/lib/mocks/rectangleShape.json +0 -238
  200. package/lib/mocks/replaceCabinetPayload.json +0 -81
  201. package/lib/mocks/roomShapePayload.json +0 -5
  202. package/lib/useAppContext.js +0 -16
@@ -261,12 +261,10 @@ var Viewer3DFirstPerson = exports["default"] = /*#__PURE__*/function (_React$Com
261
261
  this.renderer.renderLists.dispose();
262
262
  }
263
263
  }, {
264
- key: "componentDidUpdate",
265
- value: function componentDidUpdate(prevProps) {
266
- var _this$props = this.props,
267
- width = _this$props.width,
268
- height = _this$props.height,
269
- state = _this$props.state;
264
+ key: "componentWillReceiveProps",
265
+ value: function componentWillReceiveProps(nextProps) {
266
+ var width = nextProps.width,
267
+ height = nextProps.height;
270
268
  var camera = this.camera,
271
269
  renderer = this.renderer,
272
270
  scene3D = this.scene3D,
@@ -279,27 +277,19 @@ var Viewer3DFirstPerson = exports["default"] = /*#__PURE__*/function (_React$Com
279
277
  linesActions: this.context.linesActions,
280
278
  projectActions: this.context.projectActions
281
279
  };
282
-
283
- // Handle width/height changes
284
- if (width !== prevProps.width || height !== prevProps.height) {
285
- this.width = width;
286
- this.height = height;
287
- camera.aspect = width / height;
288
- camera.updateProjectionMatrix();
289
- renderer.setSize(width, height);
290
- }
291
-
292
- // Handle scene changes
293
- if (state.scene !== prevProps.state.scene) {
294
- var changedValues = (0, _immutablediff["default"])(prevProps.state.scene, state.scene);
295
- (0, _sceneCreator.updateScene)(planData, state.scene, prevProps.state.scene, changedValues.toJS(), actions, this.context.catalog);
280
+ this.width = width;
281
+ this.height = height;
282
+ camera.aspect = width / height;
283
+ camera.updateProjectionMatrix();
284
+ if (nextProps.scene !== this.props.state.scene) {
285
+ var changedValues = (0, _immutablediff["default"])(this.props.state.scene, nextProps.state.scene);
286
+ (0, _sceneCreator.updateScene)(planData, nextProps.state.scene, this.props.state.scene, changedValues.toJS(), actions, this.context.catalog);
296
287
  }
297
-
298
- // Always re-render after updates
299
- renderer.clear();
300
- renderer.render(scene3D, camera);
301
- renderer.clearDepth();
302
- renderer.render(sceneOnTop, camera);
288
+ renderer.setSize(width, height);
289
+ renderer.clear(); // clear buffers
290
+ renderer.render(scene3D, camera); // render scene 1
291
+ renderer.clearDepth(); // clear depth buffer
292
+ renderer.render(sceneOnTop, camera); // render scene 2
303
293
  }
304
294
  }, {
305
295
  key: "render",
@@ -315,4 +305,12 @@ Viewer3DFirstPerson.propTypes = {
315
305
  width: _propTypes["default"].number.isRequired,
316
306
  height: _propTypes["default"].number.isRequired
317
307
  };
308
+ Viewer3DFirstPerson.contextTypes = {
309
+ areaActions: _propTypes["default"].object.isRequired,
310
+ holesActions: _propTypes["default"].object.isRequired,
311
+ itemsActions: _propTypes["default"].object.isRequired,
312
+ linesActions: _propTypes["default"].object.isRequired,
313
+ projectActions: _propTypes["default"].object.isRequired,
314
+ catalog: _propTypes["default"].object
315
+ };
318
316
  module.exports = exports.default;
@@ -238,6 +238,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
238
238
  });
239
239
  self.renderer.domElement.style.display = 'block';
240
240
  }, 1500);
241
+ self.planData = planData;
241
242
  });
242
243
  var area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
243
244
  var layer = scene.getIn(['layers', scene.selectedLayer]);
@@ -676,7 +677,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
676
677
  layer.lines.forEach(function (line) {
677
678
  line.holes.forEach(function (holeID) {
678
679
  var hole = layer.holes.get(holeID);
679
- holes.push(hole);
680
+ if (hole) holes.push(hole);
680
681
  });
681
682
  });
682
683
  var i = 0;
@@ -822,17 +823,19 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
822
823
  this.snap = function (obj, layer) {
823
824
  // snap operation
824
825
  var target = obj.userData.target;
826
+ if ((0, _helper.isEmpty)(target)) return;
825
827
  for (; target.parent != null;) {
826
828
  if (target.name == 'pivot') break;
827
829
  target = target.parent;
828
830
  }
829
831
  var source = obj.parent.parent.parent;
830
832
  if (target.userData.type == 'item') {
833
+ var _item$properties$getI;
831
834
  var sRot = layer.getIn(['items', source.userData.itemId]).rotation;
832
835
  var tRot = layer.getIn(['items', target.userData.itemId]) ? layer.getIn(['items', target.userData.itemId]).rotation : 0;
833
836
  var item = layer.getIn(['items', source.userData.itemId]);
834
837
  var layoutType = item.layoutpos;
835
- var altitudeLength = (0, _convertUnitsLite.convert)(item.properties.getIn(['altitude', '_length'])).from('in').to('cm');
838
+ var altitudeLength = (0, _convertUnitsLite.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');
836
839
  var sBounding = source.children[0].userData;
837
840
  var tBounding = target.children[0].userData;
838
841
  var tPos = target.position.clone();
@@ -932,8 +935,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
932
935
  snapFlag = false;
933
936
  return;
934
937
  } else {
938
+ var _item3$properties$get;
935
939
  var _layoutType = _item3.layoutpos;
936
- var _altitudeLength = (0, _convertUnitsLite.convert)(_item3.properties.getIn(['altitude', '_length'])).from('in').to('cm');
940
+ var _altitudeLength = (0, _convertUnitsLite.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');
937
941
  var _sBounding = source.children[0].userData;
938
942
  var _width = _sBounding.max.x - _sBounding.min.x;
939
943
  var _height = _sBounding.max.y - _sBounding.min.y;
@@ -1192,18 +1196,10 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1192
1196
  };
1193
1197
  var sendInternalEvent = function sendInternalEvent(evtType, evtElement) {
1194
1198
  var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1195
- if (!(0, _helper.isEmpty)(evtType)) {
1196
- var _this2$props$onIntern, _this2$props;
1197
- var payload = evtElement === null || evtElement === void 0 ? void 0 : evtElement.toJS();
1198
- if ((evtElement === null || evtElement === void 0 ? void 0 : evtElement.prototype) === 'items') {
1199
- // check this cabinet has warning box
1200
- payload.isWarning = (0, _utils.isWarningItem)(evtElement);
1201
- // check this item is available molding
1202
- payload.isMoldingAvailable = _export.MoldingUtils.isEnableItemForMolding(layer, evtElement); // check this item is snapped to wall
1203
- payload.isAttachedWall = _export.MoldingUtils.isAttachedWall(layer, evtElement);
1204
- // update distArray
1205
- if (pointArray) payload.distArray = pointArray;
1206
- }
1199
+ if (!(0, _helper.isEmpty)(evtType) && !(0, _helper.isEmpty)(evtElement)) {
1200
+ var _state$get, _this2$props$onIntern, _this2$props;
1201
+ var catalog = (_state$get = state.get('catalog')) === null || _state$get === void 0 ? void 0 : _state$get.toJS();
1202
+ var payload = (0, _helper.updatePayloadOfInternalEvent)(evtElement, layer, catalog, pointArray);
1207
1203
  (_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
1208
1204
  type: evtType,
1209
1205
  value: payload
@@ -1361,11 +1357,6 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1361
1357
  if (selectedFlag || toolIntersects.length > 0 && !(0, _helper.isElevationView)(mode)) {
1362
1358
  cameraControls.mouseButtons.left = _cameraControls["default"].ACTION.NONE;
1363
1359
  selectedFlag = false;
1364
- } else {
1365
- isSelected = false;
1366
- _this2.context.projectActions.unselectAll();
1367
- scene3D.remove(toolObj);
1368
- _this2.context.itemsActions.removeReplacingSupport();
1369
1360
  }
1370
1361
  }
1371
1362
  } else {
@@ -1378,10 +1369,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1378
1369
  }
1379
1370
  };
1380
1371
  this.mouseUpEvent = function (event) {
1372
+ var _selectedObject;
1381
1373
  var internalType = ''; // internalEvent type - select/drag/draw
1382
1374
  var selectedElement; // internalEvent data
1383
1375
  firstMove = 0;
1384
1376
  var altitude = 0;
1377
+ var curLayer = _this2.props.state.scene.getIn(['layers', (_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.layerID]);
1385
1378
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
1386
1379
  var properties = allItemRect.cur.itemInfo.properties;
1387
1380
  altitude = properties.getIn(['altitude', '_length']);
@@ -1402,7 +1395,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1402
1395
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
1403
1396
  } else {
1404
1397
  removeSnapBox();
1405
- var polygon = _export.GeometryUtils.getPoylgonPoints(layer);
1398
+ var polygon = _export.GeometryUtils.getPoylgonPoints(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1406
1399
  // if cursor is outside of room
1407
1400
  if (polygon.length > 0 && !_export.GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
1408
1401
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
@@ -1418,11 +1411,18 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1418
1411
  }
1419
1412
  switch (_this2.props.state.mode) {
1420
1413
  case _constants.MODE_DRAGGING_ITEM_3D:
1414
+ case _constants.MODE_DRAGGING_HOLE_3D:
1421
1415
  internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
1422
1416
  break;
1423
1417
  case _constants.MODE_ROTATING_ITEM_3D:
1424
1418
  internalType = _constants.INTERNAL_EVENT_ROTATE_ELEMENT;
1425
1419
  break;
1420
+ case _constants.MODE_DRAWING_HOLE_3D:
1421
+ internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
1422
+ break;
1423
+ case _constants.MODE_IDLE_3D:
1424
+ internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
1425
+ break;
1426
1426
  }
1427
1427
  if (_this2.props.state.mode == _constants.MODE_DRAGGING_ITEM_3D) {
1428
1428
  _this2.context.itemsActions.endDraggingItem3D();
@@ -1456,7 +1456,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1456
1456
  });
1457
1457
  });
1458
1458
  var intersects = raycaster.intersectObjects(meshes, true);
1459
- var _i10;
1459
+ var _i10; // index of warning object in intersects
1460
+
1460
1461
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1461
1462
  for (_i10 = 0; _i10 < intersects.length; _i10++) {
1462
1463
  if (intersects[_i10].object.name === 'warningObj') break;
@@ -1472,6 +1473,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1472
1473
  var replaceInfo = intersects[_i10].object.parent.parent.userData;
1473
1474
  _this2.context.itemsActions.selectItem(replaceInfo.layerId, replaceInfo.itemId);
1474
1475
  !_this2.props.downloadFlag && _this2.props.replaceCabinet(true);
1476
+ internalType = _constants.INTERNAL_EVENT_REPLACE_CABINET;
1477
+ var replaceElement = _this2.props.state.scene.layers.get(replaceInfo.layerId).items.get(replaceInfo.itemId);
1478
+ sendInternalEvent(internalType, replaceElement);
1475
1479
  return;
1476
1480
  }
1477
1481
  }
@@ -1484,6 +1488,19 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1484
1488
  }
1485
1489
  }
1486
1490
  gridMatrix.copy(gridPlane.matrixWorld).invert();
1491
+ var addItemToolObj = function addItemToolObj() {
1492
+ var _planData$sceneGraph, _selectedObject2, _intersects$_i;
1493
+ 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];
1494
+ if ((0, _util.isUndefined)(selectedItem)) return;
1495
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1496
+ var itemPos = selectedItem.position.clone();
1497
+ 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) {
1498
+ toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1499
+ } else {
1500
+ 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);
1501
+ }
1502
+ scene3D.add(toolObj);
1503
+ };
1487
1504
  if (Math.abs(mouse.x - _this2.lastMousePosition.x) <= 0.02 && Math.abs(mouse.y - _this2.lastMousePosition.y) <= 0.02 || bMove) {
1488
1505
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1489
1506
  if (intersects[_i10] === undefined) {
@@ -1506,38 +1523,20 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1506
1523
  }
1507
1524
  isSelected = true;
1508
1525
  setTimeout(function () {
1509
- (0, _sceneCreator.getDistances)(layer);
1510
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1511
- if ((0, _util.isUndefined)(selectedItem)) return;
1512
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1513
- var itemPos = selectedItem.position.clone();
1514
- if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
1515
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1516
- } else {
1517
- 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);
1518
- }
1519
- scene3D.add(toolObj);
1526
+ var _curLayer$id;
1527
+ addItemToolObj();
1528
+ (0, _sceneCreator.getDistances)(curLayer !== null && curLayer !== void 0 ? curLayer : layer, selectedElement);
1520
1529
  _this2.setState({
1521
1530
  toolObj: toolObj
1522
1531
  });
1523
1532
  // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
1524
- var pointArray = [],
1525
- cnt = 0;
1526
- pointArray.push([_sceneCreator.fVLine[0].userData.distance, 90]);
1527
- pointArray.push([_sceneCreator.fVLine[1].userData.distance, -90]);
1528
- pointArray.push([_sceneCreator.fVLine[2].userData.distance, 180]);
1529
- pointArray.push([_sceneCreator.fVLine[3].userData.distance, 0]);
1530
- pointArray.forEach(function (pointElement, index) {
1531
- if (pointElement[0] == undefined) pointArray[index][0] = 0;
1532
- });
1533
- pointArray.forEach(function (pointElement) {
1534
- if (pointElement[0] == 0) cnt++;
1535
- });
1536
- if (cnt == 4 || cnt == 3) {
1537
- pointArray[0][0] = 100;
1538
- pointArray[1][0] = 100;
1539
- }
1540
- actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
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 = _export.GeometryUtils.calcDistancesFromItemToWalls(selectedElement, curLayer !== null && curLayer !== void 0 ? curLayer : layer).PointArray;
1539
+ 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);
1541
1540
  internalType = internalType ? internalType : _constants.INTERNAL_EVENT_SELECT_ELEMENT;
1542
1541
  sendInternalEvent(internalType, selectedElement, pointArray);
1543
1542
  });
@@ -1547,16 +1546,17 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1547
1546
  var elementPrototype = null;
1548
1547
  switch (true) {
1549
1548
  case 'holeID' in selectedObject:
1550
- case 'lineID' in selectedObject:
1549
+ elementID = selectedObject.holeID;
1550
+ elementPrototype = 'holes';
1551
1551
  if (_this2.props.state.mode === _constants.MODE_DRAGGING_HOLE_3D) {
1552
1552
  actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1553
- internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
1554
- elementID = selectedObject.holeID;
1555
- elementPrototype = 'holes';
1556
1553
  }
1557
1554
  break;
1555
+ case 'lineID' in selectedObject:
1556
+ elementID = selectedObject.lineID;
1557
+ elementPrototype = 'lines';
1558
+ break;
1558
1559
  case 'areaID' in selectedObject:
1559
- internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
1560
1560
  elementID = selectedObject.areaID;
1561
1561
  elementPrototype = 'areas';
1562
1562
  break;
@@ -1568,25 +1568,31 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1568
1568
  isSelected = false;
1569
1569
  }
1570
1570
  } else {
1571
- isSelected = false;
1572
- _this2.context.projectActions.unselectAll();
1573
- switch (true) {
1574
- case 'holeID' in selectedObject:
1575
- actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1576
- break;
1577
- default:
1578
- _this2.context.itemsActions.removeReplacingSupport();
1579
- break;
1571
+ var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1572
+ if (bMove && !(0, _helper.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
+ }
1580
1585
  }
1581
1586
  }
1582
1587
  bMove = false;
1583
1588
  bRotate = false;
1584
1589
  bMoveUP = false;
1585
1590
  if (isSelected) {
1586
- prepareSnap(layer);
1591
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1587
1592
  selectedObj = allItemRect.cur;
1588
1593
  }
1589
1594
  } else {
1595
+ var _planData$sceneGraph2, _selectedObject3, _selectedObject4;
1590
1596
  (0, _sceneCreator.visibleTransformBox)(false);
1591
1597
  var alti = 0;
1592
1598
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1596,18 +1602,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1596
1602
  alti = (0, _convertUnitsLite.convert)(alti).from(_unit2).to(_this2.props.state.scene.unit);
1597
1603
  }
1598
1604
  getPoint(event, alti);
1605
+ 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];
1606
+ if (isSelected && !(0, _helper.isEmpty)(_selectedItem)) addItemToolObj();
1599
1607
  if (bRotate) {
1600
- var _intersects$_i;
1601
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1602
- if ((0, _util.isUndefined)(selectedItem)) return;
1603
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1604
- var itemPos = selectedItem.position.clone();
1605
- 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) {
1606
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1607
- } else {
1608
- 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);
1609
- }
1610
- scene3D.add(toolObj);
1611
1608
  _this2.setState({
1612
1609
  toolObj: toolObj
1613
1610
  });
@@ -1616,16 +1613,6 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1616
1613
  }
1617
1614
  if (bMove) {
1618
1615
  bMove = false;
1619
- var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1620
- if ((0, _util.isUndefined)(_selectedItem)) return;
1621
- selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1622
- var _itemPos = _selectedItem.position.clone();
1623
- if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
1624
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1625
- } else {
1626
- 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);
1627
- }
1628
- scene3D.add(toolObj);
1629
1616
  _this2.setState({
1630
1617
  toolObj: toolObj
1631
1618
  });
@@ -1653,7 +1640,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1653
1640
  removeSnapBox();
1654
1641
  actions.sceneActions.updateMovingState(true);
1655
1642
  if (isSelected === true) {
1656
- prepareSnap(layer);
1643
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1657
1644
  selectedObj = allItemRect.cur;
1658
1645
  }
1659
1646
  }
@@ -2052,8 +2039,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2052
2039
  // handle snapBox, distArray, backsplash
2053
2040
  this.handleAfterMovingItem = function () {
2054
2041
  var layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
2042
+ var item = layer.getIn(['items', selectedObject.itemID]);
2055
2043
  var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
2056
- (0, _sceneCreator.getDistances)(layer);
2044
+ (0, _sceneCreator.getDistances)(layer, item);
2057
2045
  var pointArray = [],
2058
2046
  cnt = 0;
2059
2047
  pointArray.push([_sceneCreator.fVLine[0].userData.distance, 90]);
@@ -2092,7 +2080,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2092
2080
  if (minDis < snapDelta && !snapFlag) {
2093
2081
  _this2.snap(snapObj, layer);
2094
2082
  snapFlag = true;
2095
- (0, _sceneCreator.getDistances)(layer, true);
2083
+ (0, _sceneCreator.getDistances)(layer, item);
2096
2084
  var _i13 = 0;
2097
2085
  for (_i13 = 0; _i13 < _sceneCreator.fVLine.length; _i13++) {
2098
2086
  if (_sceneCreator.fVLine[_i13].userData.distance < snapDelta) {
@@ -2451,18 +2439,14 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2451
2439
  this.renderer.renderLists.dispose();
2452
2440
  }
2453
2441
  }, {
2454
- key: "componentDidUpdate",
2455
- value: function componentDidUpdate(prevProps) {
2442
+ key: "componentWillReceiveProps",
2443
+ value: function componentWillReceiveProps(nextProps) {
2456
2444
  var _this4 = this;
2457
- // Early return if downloadFlag and state are unchanged or scene is empty
2458
- if (this.props.downloadFlag && (0, _immutablediff["default"])(prevProps.state, this.props.state).toJS().length == 0 || (0, _helper.isEmpty)(this.props.state.scene)) {
2459
- return;
2460
- }
2461
- var _this$props = this.props,
2462
- width = _this$props.width,
2463
- height = _this$props.height;
2464
- var selectedLayer = this.props.state.getIn(['scene', 'layers', this.props.state.scene.selectedLayer]);
2465
- var ceilHeight = (0, _convertUnitsLite.convert)(selectedLayer.ceilHeight).from(selectedLayer.unit).to(this.props.state.scene.unit);
2445
+ if (this.props.downloadFlag && (0, _immutablediff["default"])(this.props.state, nextProps.state).toJS().length == 0 || (0, _helper.isEmpty)(nextProps.state.scene)) return;
2446
+ var width = nextProps.width,
2447
+ height = nextProps.height;
2448
+ var selectedLayer = nextProps.state.getIn(['scene', 'layers', nextProps.state.scene.selectedLayer]);
2449
+ var ceilHeight = (0, _convertUnitsLite.convert)(selectedLayer.ceilHeight).from(selectedLayer.unit).to(nextProps.state.scene.unit);
2466
2450
  var actions = {
2467
2451
  areaActions: this.context.areaActions,
2468
2452
  holesActions: this.context.holesActions,
@@ -2472,7 +2456,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2472
2456
  projectActions: this.context.projectActions,
2473
2457
  catalog: this.context.catalog
2474
2458
  };
2475
- var isLoadingCabinet = this.props.state.scene.isLoadingCabinet;
2459
+ var isLoadingCabinet = nextProps.state.scene.isLoadingCabinet;
2476
2460
  if (this.state.isLoadingCabinet !== isLoadingCabinet) this.setState({
2477
2461
  isLoadingCabinet: isLoadingCabinet
2478
2462
  });
@@ -2483,7 +2467,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2483
2467
  var allItemRect;
2484
2468
 
2485
2469
  // handle camera setting
2486
- switch (prevProps.state.mode) {
2470
+ switch (this.props.state.mode) {
2487
2471
  case _constants.MODE_ELEVATION_VIEW:
2488
2472
  // when Elevation mode (camera: Orthographic)
2489
2473
  var cameraRect = (0, _helper.handleCamRect)(width, height, ceilHeight, this.state.lineLength);
@@ -2501,12 +2485,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2501
2485
  break;
2502
2486
  }
2503
2487
  this.camera.updateProjectionMatrix();
2504
- var data = this.props.state.scene;
2488
+ var data = nextProps.state.scene;
2505
2489
  var layer = data.getIn(['layers', data.selectedLayer]);
2506
2490
  var self = this;
2507
2491
  function implementBacksplash() {
2508
- if ((0, _helper.isElevationView)(self.props.state.mode)) return;
2509
- var allItems = _export.GeometryUtils.getAllItemSpecified(self.props.state.scene, actions.catalog, _constants.BASE_CABINET_LAYOUTPOS);
2492
+ if ((0, _helper.isElevationView)(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode
2493
+ var allItems = _export.GeometryUtils.getAllItemSpecified(nextProps.state.scene, actions.catalog, _constants.BASE_CABINET_LAYOUTPOS);
2510
2494
  var i,
2511
2495
  items = [];
2512
2496
  for (i = 0; i < allItems.others.length; i++) items.push(allItems.others[i]);
@@ -2515,7 +2499,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2515
2499
  var calcRect = _export.GeometryUtils.getCalcRectFromItem3D(items[i]);
2516
2500
  var visible = _export.GeometryUtils.isSnappedLine(calcRect, allLineRects);
2517
2501
  actions.itemsActions.setBacksplashVisible(items[i].itemInfo.id, visible);
2518
- (0, _sceneCreator.createBacksplash)(items[i], self.props.state.scene.getIn(['layers', self.props.state.scene.selectedLayer]), planData, self.props.state.scene);
2502
+ (0, _sceneCreator.createBacksplash)(items[i], nextProps.state.scene.getIn(['layers', nextProps.state.scene.selectedLayer]), planData, nextProps.state.scene);
2519
2503
  }
2520
2504
  }
2521
2505
  function implementWarningBox() {
@@ -2543,13 +2527,16 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2543
2527
  showflag: false
2544
2528
  });
2545
2529
  }
2546
- if (this.props.state.scene !== prevProps.state.scene || this.props.state.doorStyle && this.props.state.doorStyle.get('name') !== prevProps.state.doorStyle.get('name')) {
2547
- var changedValues = (0, _immutablediff["default"])(prevProps.state.scene, this.props.state.scene);
2530
+ if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
2531
+ var changedValues = (0, _immutablediff["default"])(this.props.state.scene, nextProps.state.scene);
2548
2532
  prepareSnapSpec(layer);
2549
- if (this.props.state.doorStyle && this.props.state.doorStyle.get('name') === prevProps.state.doorStyle.get('name')) {
2550
- self.setState({
2551
- isLoading: true
2552
- });
2533
+ var isInteractiveMove = nextProps.state.mode === _constants.MODE_DRAGGING_ITEM_3D || nextProps.state.mode === _constants.MODE_ROTATING_ITEM_3D || nextProps.state.mode === _constants.MODE_DRAWING_ITEM_3D || nextProps.state.mode === _constants.MODE_DRAGGING_HOLE_3D || nextProps.state.mode === _constants.MODE_IDLE_3D;
2534
+ if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
2535
+ if (!isInteractiveMove) {
2536
+ self.setState({
2537
+ isLoading: true
2538
+ });
2539
+ }
2553
2540
  if (self.props.downloadFlag) {
2554
2541
  self.setState({
2555
2542
  waitForRender: 0
@@ -2565,7 +2552,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2565
2552
  }
2566
2553
  self.renderer.domElement.style.display = 'none';
2567
2554
  }
2568
- if (this.props.state.scene.showfg == true) {
2555
+ if (nextProps.state.scene.showfg == true) {
2569
2556
  implementBacksplash();
2570
2557
  implementWarningBox();
2571
2558
  } else {
@@ -2574,7 +2561,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2574
2561
  var _this$state = this.state,
2575
2562
  toolObj = _this$state.toolObj,
2576
2563
  angleObj = _this$state.angleObj;
2577
- var _updateScene = (0, _sceneCreator.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),
2564
+ var _updateScene = (0, _sceneCreator.updateScene)(this.planData, nextProps.state.scene, this.props.state.scene, changedValues.toJS(), actions, this.context.catalog, nextProps.state.mode, toolObj, angleObj, nextProps.state.draggingSupport),
2578
2565
  promise = _updateScene.promise;
2579
2566
  self.setState();
2580
2567
  promise.then(function (p1Value) {
@@ -2586,8 +2573,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2586
2573
  });
2587
2574
  self.renderer.domElement.style.display = 'block';
2588
2575
  });
2589
- if (this.props.state.getIn(['scene', 'isEndDragging'])) {
2590
- this.props.state.setIn(['scene', 'isEndDragging'], false);
2576
+ if (nextProps.state.getIn(['scene', 'isEndDragging'])) {
2577
+ nextProps.state.setIn(['scene', 'isEndDragging'], false);
2591
2578
  }
2592
2579
  }
2593
2580
  this.renderer.setSize(width, height);
@@ -2675,4 +2662,13 @@ Scene3DViewer.propTypes = {
2675
2662
  height: _propTypes["default"].number.isRequired,
2676
2663
  replaceCabinet: _propTypes["default"].func.isRequired
2677
2664
  };
2665
+ Scene3DViewer.contextTypes = {
2666
+ areaActions: _propTypes["default"].object.isRequired,
2667
+ holesActions: _propTypes["default"].object.isRequired,
2668
+ itemsActions: _propTypes["default"].object.isRequired,
2669
+ linesActions: _propTypes["default"].object.isRequired,
2670
+ sceneActions: _propTypes["default"].object.isRequired,
2671
+ projectActions: _propTypes["default"].object.isRequired,
2672
+ catalog: _propTypes["default"].object
2673
+ };
2678
2674
  module.exports = exports.default;