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
@@ -222,6 +222,31 @@ function createWarningObject() {
222
222
  warningObj.name = 'warningObj';
223
223
  return warningObj;
224
224
  }
225
+ function swapLengthProperty(diffs) {
226
+ var idx1 = diffs.findIndex(function (v) {
227
+ return v.path[v.path.length - 1] === 'length';
228
+ });
229
+ var idx2 = diffs.findIndex(function (v) {
230
+ return v.path[v.path.length - 1] === '_length';
231
+ });
232
+ if (idx1 < 0 || idx2 < 0) return diffs;
233
+ if (idx1 > idx2) return diffs;
234
+ if (diffs[idx1].op === diffs[idx2].op) {
235
+ var isSwap = true;
236
+ for (var i = 0; i < diffs[idx1].path.length - 2; i++) {
237
+ if (diffs[idx1].path[i] !== diffs[idx2].path[i]) {
238
+ isSwap = false;
239
+ break;
240
+ }
241
+ }
242
+ if (isSwap) {
243
+ var temp = diffs[idx1];
244
+ diffs[idx1] = diffs[idx2];
245
+ diffs[idx2] = temp;
246
+ }
247
+ }
248
+ return diffs;
249
+ }
225
250
  function updateScene(planData, sceneData, oldSceneData, diffArray, actions, catalog) {
226
251
  var _draggingItem$toJS, _filteredDiffs, _filteredDiffs2;
227
252
  var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
@@ -239,6 +264,9 @@ function updateScene(planData, sceneData, oldSceneData, diffArray, actions, cata
239
264
  value: el.value
240
265
  };
241
266
  });
267
+
268
+ // move "length" to after "_length"
269
+ splitted = swapLengthProperty(splitted);
242
270
  var filteredDiffs = filterDiffs(splitted, sceneData, oldSceneData);
243
271
  //***testing additional filter***
244
272
  filteredDiffs = filteredDiffs.filter(function (_ref) {
@@ -273,7 +301,7 @@ function updateScene(planData, sceneData, oldSceneData, diffArray, actions, cata
273
301
  * Every 'doorStyle' change has a 'door_style_id' change.
274
302
  * So, if door_style_id changes, it indicates 'doorStyle' change.
275
303
  */
276
- if (['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
304
+ if (path[1] === 'layers' && path[3] === 'molding' || path[path.length - 2] === 'doorStyle' && path[path.length - 1] === 'id' || ['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
277
305
 
278
306
  // If there are any molding change of layer
279
307
  if (path[1] === 'layers' && path[3] === 'molding') isUpdateMolding = true;
@@ -486,19 +514,19 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
486
514
  if (modifiedPath[keyIndex] == 'rotation') {
487
515
  item3D.rotation.set(0, value * Math.PI / 180 + Math.PI, 0);
488
516
  setTimeout(function () {
489
- getDistances(layer);
517
+ getDistances(layer, item);
490
518
  }, 50);
491
519
  removeSelItemMesh(tmpMoldings, item, planData, mode);
492
520
  } else if (modifiedPath[keyIndex] == 'x') {
493
521
  item3D.position.x = value;
494
522
  setTimeout(function () {
495
- getDistances(layer);
523
+ getDistances(layer, item);
496
524
  }, 50);
497
525
  removeSelItemMesh(tmpMoldings, item, planData, mode);
498
526
  } else if (modifiedPath[keyIndex] == 'y') {
499
527
  item3D.position.z = -value;
500
528
  setTimeout(function () {
501
- getDistances(layer);
529
+ getDistances(layer, item);
502
530
  }, 50);
503
531
  removeSelItemMesh(tmpMoldings, item, planData, mode);
504
532
  } else if (modifiedPath[keyIndex] == 'selected') {
@@ -649,10 +677,10 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
649
677
  vLine3.material.depthTest = false;
650
678
  var uVec = new Three.Vector3(-posVec.x / scalevec.x, -posVec.y / scalevec.y, -posVec.z / scalevec.z);
651
679
  var blLighting = item.type.includes('Light');
652
- vLine.translateY(blLighting ? 1.6 : 0.1);
653
- vLine1.translateY(blLighting ? 1.6 : 0.1);
654
- vLine2.translateY(blLighting ? 1.6 : 0.1);
655
- vLine3.translateY(blLighting ? 1.6 : 0.1);
680
+ vLine.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
681
+ vLine1.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
682
+ vLine2.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
683
+ vLine3.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
656
684
  upObj.translateOnAxis(uVec, 1);
657
685
  upObj.translateY(max.y - min.y);
658
686
  _mBox.name = 'TransformBox';
@@ -724,7 +752,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
724
752
  return actions.itemsActions.selectItem(layer.id, modifiedPath[4]);
725
753
  });
726
754
  setTimeout(function () {
727
- getDistances(layer);
755
+ getDistances(layer, item);
728
756
  }, 100);
729
757
  }
730
758
  } else if (modifiedPath[keyIndex] == 'length') {
@@ -852,7 +880,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
852
880
  removeItemWithoutItem(planData, layer.id, modifiedPath[4]);
853
881
  promises.push(addItem(sceneData, planData, layer, modifiedPath[4], catalog, actions.itemsActions, mode, null, rItem));
854
882
  setTimeout(function () {
855
- getDistances(layer);
883
+ getDistances(layer, item);
856
884
  }, 100);
857
885
  }
858
886
  break;
@@ -898,10 +926,169 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
898
926
  promise: p1
899
927
  };
900
928
  }
901
- function getDistances(layer, isCalcWall) {
929
+ function getDistances(layer, curItem, isCalcWall) {
930
+ // matching fvLine distance with OP
931
+ var pointArray = (0, _geometry2.calcDistancesFromItemToWalls)(curItem, layer).PointArray;
932
+ if ((pointArray === null || pointArray === void 0 ? void 0 : pointArray.length) > 0) {
933
+ var _loop2 = function _loop2() {
934
+ var direction = i === 0 ? 90 : i === 1 ? -90 : i === 2 ? 180 : 0;
935
+ if (fVLine[i].userData) {
936
+ var _pointArray$filter$;
937
+ var opDist = (_pointArray$filter$ = pointArray.filter(function (v) {
938
+ return v[1] === direction;
939
+ })[0]) !== null && _pointArray$filter$ !== void 0 ? _pointArray$filter$ : fVLine[i].userData.distance;
940
+ fVLine[i].userData.opDist = opDist[0];
941
+ }
942
+ };
943
+ for (var i = 0; i < ((_fVLine = fVLine) === null || _fVLine === void 0 ? void 0 : _fVLine.length); i++) {
944
+ var _fVLine;
945
+ _loop2();
946
+ }
947
+ }
902
948
  fVLine.forEach(function (line, index) {
903
- getLineDistance(line, layer, isCalcWall === undefined ? false : isCalcWall, index);
949
+ getLineDistance2(line, layer, (0, _helper.isEmpty)(isCalcWall) ? false : isCalcWall, index);
950
+ });
951
+ }
952
+ function getLineDistance2(obj, layer, isCalcWall, index) {
953
+ var _obj$userData$opDist, _obj$userData, _obj$userData2, _obj$userData$opDist2, _obj$userData3, _obj$userData4;
954
+ if (obj === undefined) return;
955
+ var positionAttribute = obj.geometry.attributes.position;
956
+ if (positionAttribute === undefined) return;
957
+ var wPoint0 = new Three.Vector3().fromBufferAttribute(positionAttribute, 0).applyMatrix4(obj.matrixWorld);
958
+ var wPoint1 = new Three.Vector3().fromBufferAttribute(positionAttribute, 1).applyMatrix4(obj.matrixWorld);
959
+ var raycaster = new Three.Raycaster(wPoint0, new Three.Vector3(wPoint1.x - wPoint0.x, wPoint1.y - wPoint0.y, wPoint1.z - wPoint0.z));
960
+ var rayDirection = raycaster.ray.direction;
961
+ raycaster.camera = new Three.Camera();
962
+ rayDirection.normalize();
963
+ var meshes = [];
964
+ planData.plan.traverse(function (child) {
965
+ if (child.isMesh && child.geometry) {
966
+ meshes.push(child);
967
+ }
904
968
  });
969
+ var dx = wPoint0.x - wPoint1.x;
970
+ var dy = wPoint0.y - wPoint1.y;
971
+ var dz = wPoint0.z - wPoint1.z;
972
+ var length = Math.sqrt(dx * dx + dy * dy + dz * dz);
973
+ var scale = 1;
974
+ var extrudeSettings = {
975
+ steps: 2,
976
+ depth: 0.01,
977
+ bevelEnabled: false
978
+ };
979
+ var w = 0.2;
980
+ var h = w * (Math.sqrt(3) / 2);
981
+ var shape = new Three.Shape();
982
+ shape.moveTo(0, 0);
983
+ shape.lineTo(-w / 4, h / 2);
984
+ shape.lineTo(w / 4, h / 2);
985
+ var geom = new Three.ExtrudeGeometry(shape, extrudeSettings);
986
+ geom.center();
987
+ var opDist = (_obj$userData$opDist = (_obj$userData = obj.userData) === null || _obj$userData === void 0 ? void 0 : _obj$userData.opDist) !== null && _obj$userData$opDist !== void 0 ? _obj$userData$opDist : (_obj$userData2 = obj.userData) === null || _obj$userData2 === void 0 ? void 0 : _obj$userData2.distance;
988
+ scale = opDist / length;
989
+ if (opDist <= 0.1) {
990
+ scale = 0.1 / length;
991
+ }
992
+ obj.userData.distance = (_obj$userData$opDist2 = (_obj$userData3 = obj.userData) === null || _obj$userData3 === void 0 ? void 0 : _obj$userData3.opDist) !== null && _obj$userData$opDist2 !== void 0 ? _obj$userData$opDist2 : (_obj$userData4 = obj.userData) === null || _obj$userData4 === void 0 ? void 0 : _obj$userData4.distance;
993
+ // obj.userData.target = intersects[i].object;
994
+ var originPoint = obj.geometry.attributes.position.array.slice(0, 3);
995
+ var lx = obj.geometry.attributes.position.array[3] - obj.geometry.attributes.position.array[0];
996
+ var ly = obj.geometry.attributes.position.array[4] - obj.geometry.attributes.position.array[1];
997
+ var lz = obj.geometry.attributes.position.array[5] - obj.geometry.attributes.position.array[2];
998
+ var newVec = new Three.Vector3(originPoint[0] + lx * scale, originPoint[1] + ly * scale, originPoint[2] + lz * scale);
999
+ obj.geometry.attributes.position.array[3] = newVec.x;
1000
+ obj.geometry.attributes.position.array[4] = newVec.y;
1001
+ obj.geometry.attributes.position.array[5] = newVec.z;
1002
+ obj.geometry.attributes.position.needsUpdate = true;
1003
+ obj.geometry.computeBoundingSphere();
1004
+ obj.geometry.computeBoundingBox();
1005
+ var dist = (0, _convertUnitsLite.convert)(opDist).from('cm').to('in');
1006
+ if (dist > 3) {
1007
+ var _canvas = getDistanceCanvas(dist, layer);
1008
+ var wid = _canvas.width / window.innerWidth * 30;
1009
+ var hei = _canvas.height / window.innerHeight * 30;
1010
+ var texture = new Three.Texture(_canvas);
1011
+ texture.minFilter = Three.LinearFilter;
1012
+ texture.needsUpdate = true;
1013
+ var geometry = new Three.PlaneGeometry(wid / 5, hei / 5);
1014
+ geometry.computeBoundingBox();
1015
+ var material = new Three.MeshBasicMaterial({
1016
+ map: texture,
1017
+ side: Three.DoubleSide
1018
+ });
1019
+ var textMesh = new Three.Mesh(geometry, material);
1020
+ for (; obj.children.length != 0;) {
1021
+ var temp = obj.children.pop();
1022
+ (0, _threeMemoryCleaner.disposeObject)(temp);
1023
+ }
1024
+ textMesh.rotation.set(Math.PI / 2, Math.PI, 0);
1025
+ // obj.add(textMesh);
1026
+ textMesh.position.set((obj.geometry.attributes.position.array[0] + obj.geometry.attributes.position.array[3]) / 2, 0.01, (obj.geometry.attributes.position.array[2] + obj.geometry.attributes.position.array[5]) / 2);
1027
+ textMesh.name = 'lineText';
1028
+ textMesh.renderOrder = 2;
1029
+ textMesh.material.depthTest = false;
1030
+ textMesh.material.transparent = true;
1031
+ var sprite1 = new Three.Sprite(new Three.SpriteMaterial({
1032
+ map: texture
1033
+ }));
1034
+ sprite1.position.set((obj.geometry.attributes.position.array[0] + obj.geometry.attributes.position.array[3]) / 2, 0.01, (obj.geometry.attributes.position.array[2] + obj.geometry.attributes.position.array[5]) / 2);
1035
+ sprite1.name = 'lineText';
1036
+ sprite1.renderOrder = 2;
1037
+ sprite1.scale.set(0.2, 0.1, 0.2);
1038
+ sprite1.layers.set(1);
1039
+ sprite1.material.depthTest = false;
1040
+ obj.add(sprite1);
1041
+ if (obj.parent != null) {
1042
+ // is not lighting
1043
+ var item3D = obj.parent.parent.parent;
1044
+ var max = item3D.children[0].userData.max;
1045
+ var min = item3D.children[0].userData.min;
1046
+ var objW = (max.x - min.x) / 100,
1047
+ objL = (max.z - min.z) / 100;
1048
+ var triangle = new Three.Mesh(geom, new Three.MeshBasicMaterial({
1049
+ color: _constants.SHADE_DARK_PURPLE_COLOR
1050
+ }));
1051
+ var triangle1 = new Three.Mesh(geom, new Three.MeshBasicMaterial({
1052
+ color: _constants.SHADE_DARK_PURPLE_COLOR
1053
+ }));
1054
+ triangle.position.set((index < 2 ? 0 : Math.sin((index === 2 ? 1 : -1) * Math.PI / 2)) * (obj.geometry.attributes.position.array[0] + h / 4 + (index % 2 === 0 ? 0 : objW)), newVec.y, (index < 2 ? Math.cos(index * Math.PI) : 0) * (obj.geometry.attributes.position.array[2] + h / 4 + (index % 2 === 0 ? 0 : objL)));
1055
+ triangle1.position.set(newVec.x - (index < 2 ? 0 : Math.sin((index === 2 ? 1 : -1) * Math.PI / 2)) * h / 4, newVec.y, newVec.z - (index < 2 ? Math.cos(index * Math.PI) : 0) * h / 4);
1056
+ if (index < 2) {
1057
+ triangle.rotation.x = Math.cos(index * Math.PI) * Math.PI / 2;
1058
+ triangle1.rotation.x = -Math.cos(index * Math.PI) * Math.PI / 2;
1059
+ } else {
1060
+ triangle.rotation.x = -Math.PI / 2;
1061
+ triangle.rotation.z = -(index === 2 ? 1 : -1) * Math.PI / 2;
1062
+ triangle1.rotation.x = Math.PI / 2;
1063
+ triangle1.rotation.z = (index === 2 ? 1 : -1) * Math.PI / 2;
1064
+ }
1065
+ triangle.name = 'lineText';
1066
+ triangle1.name = 'lineText';
1067
+ triangle.renderOrder = 2;
1068
+ triangle1.renderOrder = 2;
1069
+ triangle.material.transparent = true;
1070
+ triangle1.material.transparent = true;
1071
+ triangle.material.depthTest = false;
1072
+ triangle1.material.depthTest = false;
1073
+ obj.add(triangle);
1074
+ obj.add(triangle1);
1075
+ }
1076
+ }
1077
+
1078
+ // if (obj.userData.distance <= 50 && obj.userData.distance >= 0.5) {
1079
+ var real_target = obj.userData.target;
1080
+ for (; ((_real_target = real_target) === null || _real_target === void 0 ? void 0 : _real_target.name) != 'pivot';) {
1081
+ var _real_target, _real_target2, _real_target3;
1082
+ if (((_real_target2 = real_target) === null || _real_target2 === void 0 ? void 0 : _real_target2.parent) == null) break;
1083
+ real_target = (_real_target3 = real_target) === null || _real_target3 === void 0 ? void 0 : _real_target3.parent;
1084
+ }
1085
+ // let item3D = obj.parent.parent.parent;
1086
+ // let origin = obj.geometry.vertices[0].clone().applyMatrix4(obj.matrixWorld);
1087
+ // let target = obj.geometry.vertices[1].clone().applyMatrix4(obj.matrixWorld);
1088
+ // let uVec = new Three.Vector3(target.x - origin.x - 0.2, target.y - origin.y - 0.2, target.z - origin.z - 0.2);
1089
+ obj.visible = true;
1090
+ if (dist < 3) obj.visible = false;
1091
+ return obj;
905
1092
  }
906
1093
  function getLineDistance(obj, layer, isCalcWall, index) {
907
1094
  if (obj === undefined) return;
@@ -958,12 +1145,12 @@ function getLineDistance(obj, layer, isCalcWall, index) {
958
1145
  obj.geometry.attributes.position.needsUpdate = true;
959
1146
  obj.geometry.computeBoundingSphere();
960
1147
  obj.geometry.computeBoundingBox();
961
- var dist = (0, _math.formatNumber)((0, _convertUnitsLite.convert)(intersects[i].distance).from('cm').to('in'), _constants.DECIMAL_PLACES_2);
1148
+ var dist = (0, _convertUnitsLite.convert)(intersects[i].distance).from('cm').to('in');
962
1149
  if (dist > 3) {
963
- var _canvas = getTextCanvas(dist);
964
- var wid = _canvas.width / window.innerWidth * 30;
965
- var hei = _canvas.height / window.innerHeight * 30;
966
- var texture = new Three.Texture(_canvas);
1150
+ var _canvas2 = getDistanceCanvas(dist, layer);
1151
+ var wid = _canvas2.width / window.innerWidth * 30;
1152
+ var hei = _canvas2.height / window.innerHeight * 30;
1153
+ var texture = new Three.Texture(_canvas2);
967
1154
  texture.minFilter = Three.LinearFilter;
968
1155
  texture.needsUpdate = true;
969
1156
  var geometry = new Three.PlaneGeometry(wid / 5, hei / 5);
@@ -992,6 +1179,7 @@ function getLineDistance(obj, layer, isCalcWall, index) {
992
1179
  sprite1.renderOrder = 2;
993
1180
  sprite1.scale.set(0.2, 0.1, 0.2);
994
1181
  sprite1.layers.set(1);
1182
+ sprite1.material.depthTest = false;
995
1183
  obj.add(sprite1);
996
1184
  if (obj.parent != null) {
997
1185
  // is not lighting
@@ -1080,12 +1268,12 @@ function getLineDistance(obj, layer, isCalcWall, index) {
1080
1268
  obj.geometry.attributes.position.array[4] = _newVec.y;
1081
1269
  obj.geometry.attributes.position.array[5] = _newVec.z;
1082
1270
  obj.geometry.attributes.position.needsUpdate = true;
1083
- var _dist = (0, _math.formatNumber)(distance, _constants.DECIMAL_PLACES_2);
1271
+ var _dist = (0, _convertUnitsLite.convert)((0, _math.formatNumber)(distance, _constants.DECIMAL_PLACES_2)).from('cm').to('in');
1084
1272
  if (_dist > 3) {
1085
- var _canvas2 = getTextCanvas(_dist);
1086
- var _wid = _canvas2.width / window.innerWidth * 30;
1087
- var _hei = _canvas2.height / window.innerHeight * 30;
1088
- var _texture = new Three.Texture(_canvas2);
1273
+ var _canvas3 = getDistanceCanvas(_dist, layer);
1274
+ var _wid = _canvas3.width / window.innerWidth * 30;
1275
+ var _hei = _canvas3.height / window.innerHeight * 30;
1276
+ var _texture = new Three.Texture(_canvas3);
1089
1277
  _texture.needsUpdate = true;
1090
1278
  var _geometry = new Three.PlaneGeometry(_wid / 2, _hei / 2);
1091
1279
  _geometry.computeBoundingBox();
@@ -1210,12 +1398,18 @@ function getIntersectPoint(opX, opY, pX, pY) {
1210
1398
  function gcd(a, b) {
1211
1399
  return a % b ? gcd(b, a % b) : b;
1212
1400
  }
1213
- function getTextCanvas(text) {
1214
- var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1401
+ function getDistanceCanvas(distance, layer) {
1402
+ var _layer$unit;
1403
+ var parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1215
1404
  var canvas = document.createElement('canvas');
1216
1405
  var ctx = canvas.getContext('2d');
1406
+ var curUnit = (_layer$unit = layer === null || layer === void 0 ? void 0 : layer.unit) !== null && _layer$unit !== void 0 ? _layer$unit : _constants.UNIT_INCH;
1407
+ var fixedLength = (layer === null || layer === void 0 ? void 0 : layer.unit) === _constants.UNIT_METER || (layer === null || layer === void 0 ? void 0 : layer.unit) === _constants.UNIT_FOOT ? 2 : 0;
1408
+ var distText = String((Math.round((0, _convertUnitsLite.convert)(distance).from('in').to(curUnit) * 100) / 100).toFixed(fixedLength));
1217
1409
  var fontSize = 16;
1218
- var integral = String(text) + "''";
1410
+ var integral = distText + curUnit;
1411
+ // let integral = String(distance) + "''";
1412
+
1219
1413
  parameters.fontName = parameters.fontName || _constants.ARROW_TEXT_FONTFACE;
1220
1414
 
1221
1415
  // Prepare the font to be able to measure
@@ -1809,7 +2003,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
1809
2003
  layer.lines.forEach(function (data) {
1810
2004
  lines.push(data);
1811
2005
  });
1812
- var _loop2 = function _loop2() {
2006
+ var _loop3 = function _loop3() {
1813
2007
  var data = lines[i];
1814
2008
  var realVec = [];
1815
2009
  data.vertices.forEach(function (vec) {
@@ -1822,7 +2016,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
1822
2016
  }
1823
2017
  };
1824
2018
  for (var i = 0; i < lines.length; i++) {
1825
- if (_loop2()) break;
2019
+ if (_loop3()) break;
1826
2020
  }
1827
2021
  ceil.translateZ((0, _convertUnitsLite.convert)(layer.ceilHeight).from(layer.unit).to(_constants.UNIT_CENTIMETER));
1828
2022
  pivot.name = 'pivot';
@@ -1877,6 +2071,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
1877
2071
  if (!catalogElement) catalogElement = catalog.getElement((0, _utils.returnReplaceableDeepSearchType)(item.type));
1878
2072
  if (!catalogElement) return false;
1879
2073
  return catalogElement.render3D(item, layer, sceneData, mode).then(function (item3D) {
2074
+ var _item$properties$getI, _item$properties$getI2, _item$properties$getI3;
1880
2075
  if (item3D instanceof Three.LOD) {
1881
2076
  planData.sceneGraph.LODs[itemID] = item3D;
1882
2077
  }
@@ -1933,7 +2128,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
1933
2128
  if (child.type === 'Line' && child.geometry.attributes !== undefined) fVLine.push(child);
1934
2129
  });
1935
2130
  setTimeout(function () {
1936
- getDistances();
2131
+ getDistances(layer, item);
1937
2132
  }, 50);
1938
2133
  }
1939
2134
  applyOpacity(pivot, opacity);
@@ -1992,9 +2187,9 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
1992
2187
  var catid = item.type;
1993
2188
  var cat = catalog.elements[catid];
1994
2189
  if (!cat) cat = catalog.elements[(0, _utils.returnReplaceableDeepSearchType)(catid)];
1995
- var width = (0, _convertUnitsLite.convert)(item.properties.getIn(['width', '_length'])).from('in').to(sceneData.unit);
1996
- var height = (0, _convertUnitsLite.convert)(item.properties.getIn(['height', '_length'])).from('in').to(sceneData.unit);
1997
- var depth = (0, _convertUnitsLite.convert)(item.properties.getIn(['depth', '_length'])).from('in').to(sceneData.unit);
2190
+ var width = (0, _convertUnitsLite.convert)(item.properties.getIn(['width', '_length'])).from((_item$properties$getI = item.properties.getIn(['width', '_unit'])) !== null && _item$properties$getI !== void 0 ? _item$properties$getI : 'in').to(sceneData.unit);
2191
+ var height = (0, _convertUnitsLite.convert)(item.properties.getIn(['height', '_length'])).from((_item$properties$getI2 = item.properties.getIn(['height', '_unit'])) !== null && _item$properties$getI2 !== void 0 ? _item$properties$getI2 : 'in').to(sceneData.unit);
2192
+ var depth = (0, _convertUnitsLite.convert)(item.properties.getIn(['depth', '_length'])).from((_item$properties$getI3 = item.properties.getIn(['depth', '_unit'])) !== null && _item$properties$getI3 !== void 0 ? _item$properties$getI3 : 'in').to(sceneData.unit);
1998
2193
  val.size = {
1999
2194
  width: width,
2000
2195
  height: height,
@@ -2048,7 +2243,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
2048
2243
  return itemsActions.selectItem(layer.id, item.id);
2049
2244
  });
2050
2245
  setTimeout(function () {
2051
- return getDistances(layer);
2246
+ return getDistances(layer, item);
2052
2247
  }, 100);
2053
2248
  if (!sceneData.loadFlag && scene_mode == _constants.MODE_DRAWING_ITEM_3D) {
2054
2249
  itemsActions.endLoading();
@@ -2875,19 +3070,23 @@ function createBacksplash(item, layer, planData, scene) {
2875
3070
  var altItems = [],
2876
3071
  flag = false;
2877
3072
  wallItems.map(function (wallItem) {
2878
- var altitude = wallItem.itemInfo.properties.get('altitude').get('_length');
2879
- var altitudeUnit = wallItem.itemInfo.properties.get('altitude').get('_unit') || 'cm';
2880
- altitude = (0, _convertUnitsLite.convert)(altitude).from(altitudeUnit).to('cm');
2881
- altItems.push({
2882
- x: wallItem.pos.x,
2883
- width: wallItem.size.width,
2884
- altitude: altitude
2885
- });
3073
+ var _wallItem$itemInfo, _wallItem$itemInfo2;
3074
+ var altitude = (_wallItem$itemInfo = wallItem.itemInfo) === null || _wallItem$itemInfo === void 0 || (_wallItem$itemInfo = _wallItem$itemInfo.properties) === null || _wallItem$itemInfo === void 0 ? void 0 : _wallItem$itemInfo.get('altitude').get('_length');
3075
+ var altitudeUnit = ((_wallItem$itemInfo2 = wallItem.itemInfo) === null || _wallItem$itemInfo2 === void 0 || (_wallItem$itemInfo2 = _wallItem$itemInfo2.properties) === null || _wallItem$itemInfo2 === void 0 ? void 0 : _wallItem$itemInfo2.get('altitude').get('_unit')) || 'cm';
3076
+ if (!(0, _helper.isEmpty)(altitude) && !(0, _helper.isEmpty)(altitudeUnit)) {
3077
+ altitude = (0, _convertUnitsLite.convert)(altitude).from(altitudeUnit).to('cm');
3078
+ altItems.push({
3079
+ x: wallItem.pos.x,
3080
+ width: wallItem.size.width,
3081
+ altitude: altitude
3082
+ });
3083
+ }
2886
3084
  });
2887
3085
  layer.holes.map(function (hole) {
2888
- var width = hole.properties.getIn(['width', 'length']);
2889
- var altitude = hole.properties.getIn(['altitude', 'length']);
2890
- altItems.push({
3086
+ var _hole$properties, _hole$properties2;
3087
+ var width = (_hole$properties = hole.properties) === null || _hole$properties === void 0 ? void 0 : _hole$properties.getIn(['width', 'length']);
3088
+ var altitude = (_hole$properties2 = hole.properties) === null || _hole$properties2 === void 0 ? void 0 : _hole$properties2.getIn(['altitude', 'length']);
3089
+ if (!(0, _helper.isEmpty)(width) && !(0, _helper.isEmpty)(altitude)) altItems.push({
2891
3090
  x: hole.x,
2892
3091
  width: width,
2893
3092
  altitude: altitude
@@ -3065,23 +3264,18 @@ function _addMGMesh(molding, planData, layer, data, svg_width, svg_height, flag)
3065
3264
  // let layoutType = molding.items[0].layoutpos;
3066
3265
  // let visible = molding.items[0];
3067
3266
  molding.pointGroups.forEach(function (pointGroup) {
3267
+ var _child$width_unit, _child$height_unit, _child$length_unit;
3068
3268
  var geometry = new Three.BufferGeometry();
3069
3269
  var length = data.length; //point array
3070
- var temp_unit = child.height_unit;
3071
- if (temp_unit === 'inch') {
3072
- child.height = (0, _convertUnitsLite.convert)(child.height).from('in').to('cm');
3073
- child.height_unit = 'cm';
3074
- }
3075
- temp_unit = child.width_unit;
3076
- if (temp_unit === 'inch') {
3077
- child.width = (0, _convertUnitsLite.convert)(child.width).from('in').to('cm');
3078
- child.width_unit = 'cm';
3079
- }
3080
- temp_unit = child.length_unit;
3081
- if (temp_unit === 'inch') {
3082
- child.length = (0, _convertUnitsLite.convert)(child.length).from('in').to('cm');
3083
- child.length_unit = 'cm';
3084
- }
3270
+ var widthUnit = child.width_unit === 'inch' ? 'in' : (_child$width_unit = child.width_unit) !== null && _child$width_unit !== void 0 ? _child$width_unit : 'in';
3271
+ var heightUnit = child.height_unit === 'inch' ? 'in' : (_child$height_unit = child.height_unit) !== null && _child$height_unit !== void 0 ? _child$height_unit : 'in';
3272
+ var lengthUnit = child.length_unit === 'inch' ? 'in' : (_child$length_unit = child.length_unit) !== null && _child$length_unit !== void 0 ? _child$length_unit : 'in';
3273
+ child.height = (0, _convertUnitsLite.convert)(child.height).from(heightUnit).to('cm');
3274
+ child.height_unit = 'cm';
3275
+ child.width = (0, _convertUnitsLite.convert)(child.width).from(widthUnit).to('cm');
3276
+ child.width_unit = 'cm';
3277
+ child.length = (0, _convertUnitsLite.convert)(child.length).from(lengthUnit).to('cm');
3278
+ child.length_unit = 'cm';
3085
3279
  geometry.needsUpdate = true;
3086
3280
  geometry = moldingVertices(pointGroup, geometry, data, child, svg_width, svg_height, molding.pointGroups.length);
3087
3281
  var total = geometry.attributes.position.count;
@@ -3391,7 +3585,7 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3391
3585
  if ((0, _helper.isEmpty)(filteredNewMGList)) {
3392
3586
  return true;
3393
3587
  }
3394
- var _loop3 = function _loop3() {
3588
+ var _loop4 = function _loop4() {
3395
3589
  var newMG = filteredNewMGList[k];
3396
3590
  if (oldMG.items.some(function (it) {
3397
3591
  return it.id === selItem.id;
@@ -3444,7 +3638,7 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3444
3638
  },
3445
3639
  _ret;
3446
3640
  for (var k = 0; k < filteredNewMGList.length; k++) {
3447
- _ret = _loop3();
3641
+ _ret = _loop4();
3448
3642
  if (_ret) return _ret.v;
3449
3643
  }
3450
3644
  return true;
@@ -3452,14 +3646,21 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3452
3646
  if (changeMoldings.length === 0 && isEnableMolding) {
3453
3647
  // refresh mesh of the updating molding groups
3454
3648
  new_MGArray.forEach(function (mg, index) {
3455
- if (mg.items[0].molding.some(function (mol) {
3456
- return mol.location_type === mg.location_type;
3649
+ var _mg$items$;
3650
+ if ((_mg$items$ = mg.items[0]) !== null && _mg$items$ !== void 0 && (_mg$items$ = _mg$items$.molding) !== null && _mg$items$ !== void 0 && _mg$items$.some(function (mol) {
3651
+ var _mol$toJS;
3652
+ return (0, _helper.isImmutable)(mol) ? (mol === null || mol === void 0 || (_mol$toJS = mol.toJS()) === null || _mol$toJS === void 0 ? void 0 : _mol$toJS.location_type) === mg.location_type : (mol === null || mol === void 0 ? void 0 : mol.location_type) === mg.location_type;
3457
3653
  })) {
3458
- var molding = mg.items[0].molding.filter(function (mol) {
3459
- return mol.location_type === mg.location_type;
3654
+ var _mg$items$2, _mg$items$3, _mg$items$4;
3655
+ var molding = (0, _helper.isImmutable)((_mg$items$2 = mg.items[0]) === null || _mg$items$2 === void 0 ? void 0 : _mg$items$2.molding) ? (_mg$items$3 = mg.items[0]) === null || _mg$items$3 === void 0 || (_mg$items$3 = _mg$items$3.molding) === null || _mg$items$3 === void 0 ? void 0 : _mg$items$3.filter(function (mol) {
3656
+ var _mol$toJS2;
3657
+ return (mol === null || mol === void 0 || (_mol$toJS2 = mol.toJS()) === null || _mol$toJS2 === void 0 ? void 0 : _mol$toJS2.location_type) === mg.location_type;
3658
+ }).toJS()[0] : (_mg$items$4 = mg.items[0]) === null || _mg$items$4 === void 0 || (_mg$items$4 = _mg$items$4.molding) === null || _mg$items$4 === void 0 ? void 0 : _mg$items$4.filter(function (mol) {
3659
+ return (mol === null || mol === void 0 ? void 0 : mol.location_type) === mg.location_type;
3460
3660
  })[0];
3461
3661
  if (mg.molding === null || mg.molding.itemID !== mol.itemID || mg.lines === null || mg.points === null) {
3462
- if (mg.molding !== null && mg.molding.itemID !== molding.itemID) {
3662
+ var _mg$molding;
3663
+ if (mg.molding !== null && ((_mg$molding = mg.molding) === null || _mg$molding === void 0 ? void 0 : _mg$molding.itemID) !== molding.itemID) {
3463
3664
  deleteMGMesh(mg, planData, mode);
3464
3665
  }
3465
3666
  mg = _export.MoldingUtils.createMonldingGroup(mg, layer, molding, planData.catalog);
@@ -3606,7 +3807,7 @@ function addWarningBox(itemId, altitude, planData) {
3606
3807
  deleteSpecifiedMeshObjects('WarningBox' + itemId);
3607
3808
  var item3D = planData.sceneGraph.layers[planData.sceneData.selectedLayer].items[itemId];
3608
3809
  if (item3D == undefined) return;
3609
- var altitudeLength = (0, _convertUnitsLite.convert)(altitude).from('in').to('cm');
3810
+ var altitudeLength = altitude;
3610
3811
  var sBounding = item3D.children[0].userData;
3611
3812
  var width = sBounding.max.x - sBounding.min.x;
3612
3813
  var height = sBounding.max.y - sBounding.min.y;
@@ -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;