kitchen-simulator 4.0.0-queuedEvents → 4.0.0

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 (111) hide show
  1. package/es/LiteKitchenConfigurator.js +141 -288
  2. package/es/LiteRenderer.js +159 -398
  3. package/es/actions/items-actions.js +10 -6
  4. package/es/actions/lines-actions.js +3 -1
  5. package/es/actions/project-actions.js +15 -5
  6. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  7. package/es/catalog/areas/area/planner-element.js +10 -5
  8. package/es/catalog/catalog.js +1 -4
  9. package/es/catalog/factories/area-factory-3d.js +2 -1
  10. package/es/catalog/factories/wall-factory-3d.js +2 -2
  11. package/es/catalog/factories/wall-factory.js +8 -8
  12. package/es/catalog/lines/wall/planner-element.js +18 -9
  13. package/es/catalog/utils/exporter.js +7 -3
  14. package/es/catalog/utils/item-loader.js +24 -14
  15. package/es/catalog/utils/mtl-loader.js +2 -2
  16. package/es/catalog/utils/obj-loader.js +2 -2
  17. package/es/class/hole.js +0 -2
  18. package/es/class/item.js +183 -184
  19. package/es/class/line.js +11 -3
  20. package/es/class/project.js +165 -48
  21. package/es/components/content.js +19 -6
  22. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  23. package/es/components/viewer2d/item.js +84 -51
  24. package/es/components/viewer2d/line.js +315 -243
  25. package/es/components/viewer2d/ruler.js +20 -38
  26. package/es/components/viewer2d/rulerDist.js +48 -78
  27. package/es/components/viewer2d/utils.js +6 -0
  28. package/es/components/viewer2d/viewer2d.js +298 -220
  29. package/es/components/viewer3d/front3D.js +3 -2
  30. package/es/components/viewer3d/libs/mtl-loader.js +2 -2
  31. package/es/components/viewer3d/libs/obj-loader.js +2 -2
  32. package/es/components/viewer3d/libs/orbit-controls.js +3 -4
  33. package/es/components/viewer3d/libs/pointer-lock-controls.js +6 -7
  34. package/es/components/viewer3d/scene-creator.js +51 -15
  35. package/es/components/viewer3d/viewer3d.js +121 -82
  36. package/es/constants.js +111 -3
  37. package/es/devLiteRenderer.js +688 -31
  38. package/es/index.js +567 -87
  39. package/es/models.js +9 -5
  40. package/es/plugins/SVGLoader.js +7 -5
  41. package/es/plugins/console-debugger.js +0 -2
  42. package/es/plugins/keyboard.js +15 -6
  43. package/es/reducers/items-reducer.js +5 -5
  44. package/es/reducers/lines-reducer.js +1 -1
  45. package/es/reducers/project-reducer.js +5 -3
  46. package/es/shared-style.js +4 -4
  47. package/es/utils/geometry.js +163 -2
  48. package/es/utils/get-edges-of-subgraphs.js +1 -1
  49. package/es/utils/graph-cycles.js +1 -1
  50. package/es/utils/graph.js +1 -1
  51. package/es/utils/helper.js +105 -3
  52. package/es/utils/isolate-event-handler.js +1542 -164
  53. package/es/utils/molding.js +461 -11
  54. package/lib/LiteKitchenConfigurator.js +141 -289
  55. package/lib/LiteRenderer.js +159 -399
  56. package/lib/actions/items-actions.js +10 -6
  57. package/lib/actions/lines-actions.js +3 -1
  58. package/lib/actions/project-actions.js +15 -4
  59. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  60. package/lib/catalog/areas/area/planner-element.js +11 -5
  61. package/lib/catalog/catalog.js +1 -4
  62. package/lib/catalog/factories/area-factory-3d.js +2 -1
  63. package/lib/catalog/factories/wall-factory-3d.js +2 -2
  64. package/lib/catalog/factories/wall-factory.js +8 -8
  65. package/lib/catalog/lines/wall/planner-element.js +19 -9
  66. package/lib/catalog/utils/exporter.js +7 -3
  67. package/lib/catalog/utils/item-loader.js +24 -14
  68. package/lib/catalog/utils/mtl-loader.js +9 -2
  69. package/lib/catalog/utils/obj-loader.js +10 -2
  70. package/lib/class/hole.js +0 -2
  71. package/lib/class/item.js +180 -181
  72. package/lib/class/line.js +9 -1
  73. package/lib/class/project.js +164 -47
  74. package/lib/components/content.js +19 -6
  75. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  76. package/lib/components/viewer2d/item.js +83 -50
  77. package/lib/components/viewer2d/line.js +315 -242
  78. package/lib/components/viewer2d/ruler.js +19 -37
  79. package/lib/components/viewer2d/rulerDist.js +48 -78
  80. package/lib/components/viewer2d/utils.js +7 -0
  81. package/lib/components/viewer2d/viewer2d.js +296 -219
  82. package/lib/components/viewer3d/front3D.js +3 -2
  83. package/lib/components/viewer3d/libs/mtl-loader.js +9 -2
  84. package/lib/components/viewer3d/libs/obj-loader.js +9 -2
  85. package/lib/components/viewer3d/libs/orbit-controls.js +11 -5
  86. package/lib/components/viewer3d/libs/pointer-lock-controls.js +13 -7
  87. package/lib/components/viewer3d/scene-creator.js +49 -13
  88. package/lib/components/viewer3d/viewer3d.js +119 -80
  89. package/lib/constants.js +116 -7
  90. package/lib/devLiteRenderer.js +687 -30
  91. package/lib/index.js +567 -87
  92. package/lib/models.js +9 -5
  93. package/lib/plugins/SVGLoader.js +7 -5
  94. package/lib/plugins/console-debugger.js +0 -2
  95. package/lib/plugins/keyboard.js +15 -6
  96. package/lib/reducers/items-reducer.js +5 -5
  97. package/lib/reducers/lines-reducer.js +1 -1
  98. package/lib/reducers/project-reducer.js +4 -2
  99. package/lib/shared-style.js +4 -4
  100. package/lib/utils/geometry.js +164 -2
  101. package/lib/utils/get-edges-of-subgraphs.js +6 -1
  102. package/lib/utils/graph-cycles.js +7 -8
  103. package/lib/utils/graph.js +6 -1
  104. package/lib/utils/helper.js +108 -2
  105. package/lib/utils/isolate-event-handler.js +1538 -159
  106. package/lib/utils/molding.js +463 -9
  107. package/package.json +1 -1
  108. package/es/assets/Window.hdr +0 -2100
  109. package/es/assets/img/1.jpg +0 -0
  110. package/lib/assets/Window.hdr +0 -2100
  111. package/lib/assets/img/1.jpg +0 -0
@@ -2,6 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useState, useEffect } from 'react';
3
3
  import Viewer3D from "./viewer3d";
4
4
  import State3D from "./ruler-utils/state3D";
5
+ import { isEmpty } from "../viewer2d/utils";
5
6
  var k = 0;
6
7
  export default function Front3D(_ref, _ref2) {
7
8
  var width = _ref.width,
@@ -26,9 +27,9 @@ export default function Front3D(_ref, _ref2) {
26
27
  setToolbar('');
27
28
  };
28
29
  useEffect(function () {
29
- document.getElementById('front').addEventListener('mouseup', mouseUpEvent);
30
+ if (!isEmpty(document.getElementById('front'))) document.getElementById('front').addEventListener('mouseup', mouseUpEvent);
30
31
  return function () {
31
- document.getElementById('front').removeEventListener('mouseup', mouseUpEvent);
32
+ if (!isEmpty(document.getElementById('front'))) document.getElementById('front').removeEventListener('mouseup', mouseUpEvent);
32
33
  };
33
34
  }, []);
34
35
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("svg", {
@@ -4,7 +4,7 @@
4
4
  * @author angelxuanchang
5
5
  */
6
6
 
7
- var THREE = window.THREE || require('three');
7
+ import * as THREE from 'three';
8
8
  var MTLLoader;
9
9
  MTLLoader = function MTLLoader(manager) {
10
10
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -354,4 +354,4 @@ MTLLoader.MaterialCreator.prototype = {
354
354
  return texture;
355
355
  }
356
356
  };
357
- module.exports = MTLLoader;
357
+ export default MTLLoader;
@@ -2,7 +2,7 @@
2
2
  * @author mrdoob / http://mrdoob.com/
3
3
  */
4
4
 
5
- var THREE = window.THREE || require('three');
5
+ import * as THREE from 'three';
6
6
  var OBJLoader;
7
7
  OBJLoader = function OBJLoader(manager) {
8
8
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -459,4 +459,4 @@ OBJLoader.prototype = {
459
459
  return container;
460
460
  }
461
461
  };
462
- module.exports = OBJLoader;
462
+ export default OBJLoader;
@@ -13,9 +13,8 @@
13
13
  // Zoom - middle mouse, or mousewheel / touch: two finger spread or squish
14
14
  // Pan - right mouse, or arrow keys / touch: three finter swipe
15
15
 
16
- var THREE = window.THREE || require('three');
17
- var OrbitControls;
18
- module.exports = OrbitControls = function OrbitControls(object, domElement) {
16
+ import * as THREE from 'three';
17
+ export default function OrbitControls(object, domElement) {
19
18
  this.object = object;
20
19
  this.domElement = domElement !== undefined ? domElement : document;
21
20
 
@@ -623,7 +622,7 @@ module.exports = OrbitControls = function OrbitControls(object, domElement) {
623
622
  // force an update at start
624
623
 
625
624
  this.update();
626
- };
625
+ }
627
626
  OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);
628
627
  OrbitControls.prototype.constructor = OrbitControls;
629
628
  Object.defineProperties(OrbitControls.prototype, {
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * @author mrdoob / http://mrdoob.com/
3
+ * Converted to ESM
3
4
  */
4
5
 
5
- var THREE = window.THREE || require('three');
6
- var PointerLockControls;
7
- module.exports = PointerLockControls = function PointerLockControls(camera) {
6
+ import * as THREE from 'three';
7
+ export default function PointerLockControls(camera) {
8
8
  var scope = this;
9
9
  camera.rotation.set(0, 0, 0);
10
10
  var pitchObject = new THREE.Object3D();
@@ -15,14 +15,14 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
15
15
  yawObject.position.y = 10;
16
16
  yawObject.add(pitchObject);
17
17
  var PI_2 = Math.PI / 2;
18
- var onMouseMove = function onMouseMove(event) {
18
+ function onMouseMove(event) {
19
19
  if (scope.enabled === false) return;
20
20
  var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
21
21
  var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
22
22
  yawObject.rotation.y -= movementX * 0.002;
23
23
  pitchObject.rotation.x -= movementY * 0.002;
24
24
  pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x));
25
- };
25
+ }
26
26
  this.dispose = function () {
27
27
  document.removeEventListener('mousemove', onMouseMove, false);
28
28
  };
@@ -33,7 +33,6 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
33
33
  };
34
34
  this.getDirection = function () {
35
35
  // assumes the camera itself is not rotated
36
-
37
36
  var direction = new THREE.Vector3(0, 0, -1);
38
37
  var rotation = new THREE.Euler(0, 0, 0, 'YXZ');
39
38
  return function (v) {
@@ -42,4 +41,4 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
42
41
  return v;
43
42
  };
44
43
  }();
45
- };
44
+ }
@@ -9,14 +9,14 @@ import * as Three from 'three';
9
9
  import { Color, Group } from 'three';
10
10
  import createGrid from "./grid-creator";
11
11
  import { disposeObject } from "./three-memory-cleaner";
12
- import { ANIMATE_STEP_MAX, ANIMATE_STEP_MIN, ARRAY_3D_MODES, ARROW_TEXT_BACKCOLOR, ARROW_TEXT_FONTFACE, ARROW_TEXT_FORECOLOR, BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, DECIMAL_PLACES_2, DIFFERENT_VALUES_PATH_LENGTH, DISTANCE_EPSILON, EPSILON, MIDDLE_MOLDING_LOCATION, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, TOP_MOLDING_LOCATION, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS } from "../../constants";
12
+ import { ANIMATE_STEP_MAX, ANIMATE_STEP_MIN, ARRAY_3D_MODES, ARROW_TEXT_BACKCOLOR, ARROW_TEXT_FONTFACE, ARROW_TEXT_FORECOLOR, BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, DECIMAL_PLACES_2, DIFFERENT_VALUES_PATH_LENGTH, DISTANCE_EPSILON, EPSILON, MIDDLE_MOLDING_LOCATION, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, TOP_MOLDING_LOCATION, UNIT_CENTIMETER, UNIT_FOOT, UNIT_INCH, UNIT_METER, WALL_CABINET_LAYOUTPOS } from "../../constants";
13
13
  import { GeometryUtils, IDBroker, MoldingUtils } from "../../utils/export";
14
14
  import { convert } from "../../utils/convert-units-lite";
15
15
  import { verticesDistance } from "../../utils/geometry";
16
16
  import * as GeomUtils from "../../catalog/utils/geom-utils";
17
17
  import { loadTexture } from "../../catalog/utils/item-loader";
18
18
  import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
19
- import { animateDoor, isElevationView, isEmpty, replaceMeshesWithLineSegments, translateDrawer } from "../../utils/helper";
19
+ import { animateDoor, isElevationView, isEmpty, isImmutable, replaceMeshesWithLineSegments, translateDrawer } from "../../utils/helper";
20
20
  import { formatNumber } from "../../utils/math";
21
21
  var transformBox;
22
22
  export var fVLine = [];
@@ -187,6 +187,31 @@ export function createWarningObject() {
187
187
  warningObj.name = 'warningObj';
188
188
  return warningObj;
189
189
  }
190
+ function swapLengthProperty(diffs) {
191
+ var idx1 = diffs.findIndex(function (v) {
192
+ return v.path[v.path.length - 1] === 'length';
193
+ });
194
+ var idx2 = diffs.findIndex(function (v) {
195
+ return v.path[v.path.length - 1] === '_length';
196
+ });
197
+ if (idx1 < 0 || idx2 < 0) return diffs;
198
+ if (idx1 > idx2) return diffs;
199
+ if (diffs[idx1].op === diffs[idx2].op) {
200
+ var isSwap = true;
201
+ for (var i = 0; i < diffs[idx1].path.length - 2; i++) {
202
+ if (diffs[idx1].path[i] !== diffs[idx2].path[i]) {
203
+ isSwap = false;
204
+ break;
205
+ }
206
+ }
207
+ if (isSwap) {
208
+ var temp = diffs[idx1];
209
+ diffs[idx1] = diffs[idx2];
210
+ diffs[idx2] = temp;
211
+ }
212
+ }
213
+ return diffs;
214
+ }
190
215
  export function updateScene(planData, sceneData, oldSceneData, diffArray, actions, catalog) {
191
216
  var _draggingItem$toJS, _filteredDiffs, _filteredDiffs2;
192
217
  var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
@@ -204,6 +229,9 @@ export function updateScene(planData, sceneData, oldSceneData, diffArray, action
204
229
  value: el.value
205
230
  };
206
231
  });
232
+
233
+ // move "length" to after "_length"
234
+ splitted = swapLengthProperty(splitted);
207
235
  var filteredDiffs = filterDiffs(splitted, sceneData, oldSceneData);
208
236
  //***testing additional filter***
209
237
  filteredDiffs = filteredDiffs.filter(function (_ref) {
@@ -238,7 +266,7 @@ export function updateScene(planData, sceneData, oldSceneData, diffArray, action
238
266
  * Every 'doorStyle' change has a 'door_style_id' change.
239
267
  * So, if door_style_id changes, it indicates 'doorStyle' change.
240
268
  */
241
- if (['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
269
+ 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;
242
270
 
243
271
  // If there are any molding change of layer
244
272
  if (path[1] === 'layers' && path[3] === 'molding') isUpdateMolding = true;
@@ -614,10 +642,10 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
614
642
  vLine3.material.depthTest = false;
615
643
  var uVec = new Three.Vector3(-posVec.x / scalevec.x, -posVec.y / scalevec.y, -posVec.z / scalevec.z);
616
644
  var blLighting = item.type.includes('Light');
617
- vLine.translateY(blLighting ? 1.6 : 0.1);
618
- vLine1.translateY(blLighting ? 1.6 : 0.1);
619
- vLine2.translateY(blLighting ? 1.6 : 0.1);
620
- vLine3.translateY(blLighting ? 1.6 : 0.1);
645
+ vLine.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
646
+ vLine1.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
647
+ vLine2.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
648
+ vLine3.translateY(blLighting ? 1.6 : boundingBox.min.y + 0.1);
621
649
  upObj.translateOnAxis(uVec, 1);
622
650
  upObj.translateY(max.y - min.y);
623
651
  _mBox.name = 'TransformBox';
@@ -923,9 +951,9 @@ function getLineDistance(obj, layer, isCalcWall, index) {
923
951
  obj.geometry.attributes.position.needsUpdate = true;
924
952
  obj.geometry.computeBoundingSphere();
925
953
  obj.geometry.computeBoundingBox();
926
- var dist = formatNumber(convert(intersects[i].distance).from('cm').to('in'), DECIMAL_PLACES_2);
954
+ var dist = convert(intersects[i].distance).from('cm').to('in');
927
955
  if (dist > 3) {
928
- var _canvas = getTextCanvas(dist);
956
+ var _canvas = getDistanceCanvas(dist, layer);
929
957
  var wid = _canvas.width / window.innerWidth * 30;
930
958
  var hei = _canvas.height / window.innerHeight * 30;
931
959
  var texture = new Three.Texture(_canvas);
@@ -1047,7 +1075,7 @@ function getLineDistance(obj, layer, isCalcWall, index) {
1047
1075
  obj.geometry.attributes.position.needsUpdate = true;
1048
1076
  var _dist = formatNumber(distance, DECIMAL_PLACES_2);
1049
1077
  if (_dist > 3) {
1050
- var _canvas2 = getTextCanvas(_dist);
1078
+ var _canvas2 = getDistanceCanvas(_dist, layer);
1051
1079
  var _wid = _canvas2.width / window.innerWidth * 30;
1052
1080
  var _hei = _canvas2.height / window.innerHeight * 30;
1053
1081
  var _texture = new Three.Texture(_canvas2);
@@ -1175,12 +1203,18 @@ export function getIntersectPoint(opX, opY, pX, pY) {
1175
1203
  function gcd(a, b) {
1176
1204
  return a % b ? gcd(b, a % b) : b;
1177
1205
  }
1178
- function getTextCanvas(text) {
1179
- var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1206
+ function getDistanceCanvas(distance, layer) {
1207
+ var _layer$unit;
1208
+ var parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1180
1209
  var canvas = document.createElement('canvas');
1181
1210
  var ctx = canvas.getContext('2d');
1211
+ var curUnit = (_layer$unit = layer === null || layer === void 0 ? void 0 : layer.unit) !== null && _layer$unit !== void 0 ? _layer$unit : UNIT_INCH;
1212
+ var fixedLength = (layer === null || layer === void 0 ? void 0 : layer.unit) === UNIT_METER || (layer === null || layer === void 0 ? void 0 : layer.unit) === UNIT_FOOT ? 2 : 0;
1213
+ var distText = String((Math.round(convert(distance).from('in').to(curUnit) * 100) / 100).toFixed(fixedLength));
1182
1214
  var fontSize = 16;
1183
- var integral = String(text) + "''";
1215
+ var integral = distText + curUnit;
1216
+ // let integral = String(distance) + "''";
1217
+
1184
1218
  parameters.fontName = parameters.fontName || ARROW_TEXT_FONTFACE;
1185
1219
 
1186
1220
  // Prepare the font to be able to measure
@@ -3418,9 +3452,11 @@ export function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3418
3452
  // refresh mesh of the updating molding groups
3419
3453
  new_MGArray.forEach(function (mg, index) {
3420
3454
  if (mg.items[0].molding.some(function (mol) {
3421
- return mol.location_type === mg.location_type;
3455
+ return isImmutable(mol) ? mol.toJS().location_type === mg.location_type : mol.location_type === mg.location_type;
3422
3456
  })) {
3423
- var molding = mg.items[0].molding.filter(function (mol) {
3457
+ var molding = isImmutable(mg.items[0].molding) ? mg.items[0].molding.filter(function (mol) {
3458
+ return mol.toJS().location_type === mg.location_type;
3459
+ }).toJS()[0] : mg.items[0].molding.filter(function (mol) {
3424
3460
  return mol.location_type === mg.location_type;
3425
3461
  })[0];
3426
3462
  if (mg.molding === null || mg.molding.itemID !== mol.itemID || mg.lines === null || mg.points === null) {
@@ -19,16 +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 } 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
- import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
31
30
  import { getAllMeshes, vectorIntersectWithMesh } from "../../utils/objects-utils";
31
+ import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
32
32
  CameraControls.install({
33
33
  THREE: Three
34
34
  });
@@ -231,6 +231,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
231
231
  });
232
232
  self.renderer.domElement.style.display = 'block';
233
233
  }, 1500);
234
+ self.planData = planData;
234
235
  });
235
236
  var area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
236
237
  var layer = scene.getIn(['layers', scene.selectedLayer]);
@@ -669,7 +670,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
669
670
  layer.lines.forEach(function (line) {
670
671
  line.holes.forEach(function (holeID) {
671
672
  var hole = layer.holes.get(holeID);
672
- holes.push(hole);
673
+ if (hole) holes.push(hole);
673
674
  });
674
675
  });
675
676
  var i = 0;
@@ -1183,6 +1184,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1183
1184
  itemID: selItemId
1184
1185
  };
1185
1186
  };
1187
+ var sendInternalEvent = function sendInternalEvent(evtType, evtElement) {
1188
+ var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1189
+ if (!isEmpty(evtType) && !isEmpty(evtElement)) {
1190
+ var _state$get, _this2$props$onIntern, _this2$props;
1191
+ var catalog = (_state$get = state.get('catalog')) === null || _state$get === void 0 ? void 0 : _state$get.toJS();
1192
+ var payload = updatePayloadOfInternalEvent(evtElement, layer, catalog, pointArray);
1193
+ (_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
1194
+ type: evtType,
1195
+ value: payload
1196
+ });
1197
+ }
1198
+ };
1186
1199
  this.mouseDownEvent = function (event) {
1187
1200
  gridPlanOrigin = gridPlane.position;
1188
1201
  gridMatrix.copy(gridPlane.matrixWorld).invert();
@@ -1274,7 +1287,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1274
1287
  }
1275
1288
  }
1276
1289
  if (selectedObject !== undefined) {
1277
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1290
+ // get selected object from planData.sceneGraph
1291
+ var selectedItem = null;
1292
+ switch (true) {
1293
+ case 'itemID' in selectedObject:
1294
+ selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1295
+ break;
1296
+ case 'holeID' in selectedObject:
1297
+ selectedItem = planData.sceneGraph.layers[selectedObject.layerID].holes[selectedObject.holeID];
1298
+ break;
1299
+ default:
1300
+ break;
1301
+ }
1278
1302
  sPoint.set(Point.x, Point.y);
1279
1303
  if (transflag == 0) {
1280
1304
  scene3D.remove(toolObj);
@@ -1323,11 +1347,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1323
1347
  if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
1324
1348
  cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
1325
1349
  selectedFlag = false;
1326
- } else {
1327
- isSelected = false;
1328
- _this2.context.projectActions.unselectAll();
1329
- scene3D.remove(toolObj);
1330
- _this2.context.itemsActions.removeReplacingSupport();
1331
1350
  }
1332
1351
  }
1333
1352
  } else {
@@ -1340,7 +1359,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1340
1359
  }
1341
1360
  };
1342
1361
  this.mouseUpEvent = function (event) {
1343
- var _selObj$object, _selObj$object2;
1362
+ var internalType = ''; // internalEvent type - select/drag/draw
1363
+ var selectedElement; // internalEvent data
1344
1364
  firstMove = 0;
1345
1365
  var altitude = 0;
1346
1366
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1377,6 +1397,21 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1377
1397
  isInitialPhase = true;
1378
1398
  return;
1379
1399
  }
1400
+ switch (_this2.props.state.mode) {
1401
+ case MODE_DRAGGING_ITEM_3D:
1402
+ case MODE_DRAGGING_HOLE_3D:
1403
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
1404
+ break;
1405
+ case MODE_ROTATING_ITEM_3D:
1406
+ internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
1407
+ break;
1408
+ case MODE_DRAWING_HOLE_3D:
1409
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
1410
+ break;
1411
+ case MODE_IDLE_3D:
1412
+ internalType = INTERNAL_EVENT_SELECT_ELEMENT;
1413
+ break;
1414
+ }
1380
1415
  if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
1381
1416
  _this2.context.itemsActions.endDraggingItem3D();
1382
1417
  }
@@ -1409,7 +1444,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1409
1444
  });
1410
1445
  });
1411
1446
  var intersects = raycaster.intersectObjects(meshes, true);
1412
- var _i10;
1447
+ var _i10; // index of warning object in intersects
1448
+
1413
1449
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1414
1450
  for (_i10 = 0; _i10 < intersects.length; _i10++) {
1415
1451
  if (intersects[_i10].object.name === 'warningObj') break;
@@ -1425,6 +1461,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1425
1461
  var replaceInfo = intersects[_i10].object.parent.parent.userData;
1426
1462
  _this2.context.itemsActions.selectItem(replaceInfo.layerId, replaceInfo.itemId);
1427
1463
  !_this2.props.downloadFlag && _this2.props.replaceCabinet(true);
1464
+ internalType = INTERNAL_EVENT_REPLACE_CABINET;
1465
+ var replaceElement = _this2.props.state.scene.layers.get(replaceInfo.layerId).items.get(replaceInfo.itemId);
1466
+ sendInternalEvent(internalType, replaceElement);
1428
1467
  return;
1429
1468
  }
1430
1469
  }
@@ -1437,6 +1476,19 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1437
1476
  }
1438
1477
  }
1439
1478
  gridMatrix.copy(gridPlane.matrixWorld).invert();
1479
+ var addItemToolObj = function addItemToolObj() {
1480
+ var _planData$sceneGraph, _selectedObject, _intersects$_i;
1481
+ 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[(_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.itemID];
1482
+ if (isUndefined(selectedItem)) return;
1483
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1484
+ var itemPos = selectedItem.position.clone();
1485
+ 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) {
1486
+ toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1487
+ } else {
1488
+ 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);
1489
+ }
1490
+ scene3D.add(toolObj);
1491
+ };
1440
1492
  if (Math.abs(mouse.x - _this2.lastMousePosition.x) <= 0.02 && Math.abs(mouse.y - _this2.lastMousePosition.y) <= 0.02 || bMove) {
1441
1493
  if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1442
1494
  if (intersects[_i10] === undefined) {
@@ -1460,67 +1512,63 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1460
1512
  isSelected = true;
1461
1513
  setTimeout(function () {
1462
1514
  getDistances(layer);
1463
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1464
- if (isUndefined(selectedItem)) return;
1465
- var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1466
- var itemPos = selectedItem.position.clone();
1467
- if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
1468
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1469
- } else {
1470
- toolObj.position.set(planData.plan.position.x + itemPos.x, selItem.category === 'lighting' ? -planData.plan.position.y - selItem.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
1471
- }
1472
- scene3D.add(toolObj);
1515
+ addItemToolObj();
1473
1516
  _this2.setState({
1474
1517
  toolObj: toolObj
1475
1518
  });
1476
1519
  // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
1477
- var pointArray = [],
1478
- cnt = 0;
1479
- pointArray.push([fVLine[0].userData.distance, 90]);
1480
- pointArray.push([fVLine[1].userData.distance, -90]);
1481
- pointArray.push([fVLine[2].userData.distance, 180]);
1482
- pointArray.push([fVLine[3].userData.distance, 0]);
1483
- pointArray.forEach(function (pointElement, index) {
1484
- if (pointElement[0] == undefined) pointArray[index][0] = 0;
1485
- });
1486
- pointArray.forEach(function (pointElement) {
1487
- if (pointElement[0] == 0) cnt++;
1488
- });
1489
- if (cnt == 4 || cnt == 3) {
1490
- pointArray[0][0] = 100;
1491
- pointArray[1][0] = 100;
1492
- }
1520
+ var pointArray = [];
1521
+ // pointArray.push([fVLine[0].userData.distance, 90]);
1522
+ // pointArray.push([fVLine[1].userData.distance, -90]);
1523
+ // pointArray.push([fVLine[2].userData.distance, 180]);
1524
+ // pointArray.push([fVLine[3].userData.distance, 0]);
1525
+ pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
1493
1526
  actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
1527
+ internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
1528
+ sendInternalEvent(internalType, selectedElement, pointArray);
1494
1529
  });
1495
1530
  } else {
1496
1531
  if (selectedObject) {
1532
+ var elementID = null;
1533
+ var elementPrototype = null;
1497
1534
  switch (true) {
1498
1535
  case 'holeID' in selectedObject:
1499
- if (selObj !== null && selObj !== void 0 && (_selObj$object = selObj.object) !== null && _selObj$object !== void 0 && _selObj$object.name.includes('transHole')) {
1536
+ elementID = selectedObject.holeID;
1537
+ elementPrototype = 'holes';
1538
+ if (_this2.props.state.mode === MODE_DRAGGING_HOLE_3D) {
1500
1539
  actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1501
1540
  }
1502
1541
  break;
1503
1542
  case 'lineID' in selectedObject:
1504
- if (selObj !== null && selObj !== void 0 && (_selObj$object2 = selObj.object) !== null && _selObj$object2 !== void 0 && _selObj$object2.name.includes('transHole')) {
1505
- actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1506
- }
1543
+ elementID = selectedObject.lineID;
1544
+ elementPrototype = 'lines';
1545
+ break;
1546
+ case 'areaID' in selectedObject:
1547
+ elementID = selectedObject.areaID;
1548
+ elementPrototype = 'areas';
1507
1549
  break;
1508
1550
  default:
1509
1551
  break;
1510
1552
  }
1553
+ selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).getIn([elementPrototype, elementID]);
1511
1554
  }
1512
1555
  isSelected = false;
1513
1556
  }
1514
1557
  } else {
1515
- isSelected = false;
1516
- _this2.context.projectActions.unselectAll();
1517
- switch (true) {
1518
- case 'holeID' in selectedObject:
1519
- actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1520
- break;
1521
- default:
1522
- _this2.context.itemsActions.removeReplacingSupport();
1523
- break;
1558
+ var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1559
+ if (bMove && !isEmpty(selectedItem)) {
1560
+ addItemToolObj();
1561
+ } else {
1562
+ isSelected = false;
1563
+ _this2.context.projectActions.unselectAll();
1564
+ switch (true) {
1565
+ case 'holeID' in selectedObject:
1566
+ actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
1567
+ break;
1568
+ default:
1569
+ _this2.context.itemsActions.removeReplacingSupport();
1570
+ break;
1571
+ }
1524
1572
  }
1525
1573
  }
1526
1574
  bMove = false;
@@ -1531,6 +1579,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1531
1579
  selectedObj = allItemRect.cur;
1532
1580
  }
1533
1581
  } else {
1582
+ var _planData$sceneGraph2, _selectedObject2, _selectedObject3;
1534
1583
  visibleTransformBox(false);
1535
1584
  var alti = 0;
1536
1585
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1540,18 +1589,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1540
1589
  alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
1541
1590
  }
1542
1591
  getPoint(event, alti);
1592
+ var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.itemID];
1593
+ if (isSelected && !isEmpty(_selectedItem)) addItemToolObj();
1543
1594
  if (bRotate) {
1544
- var _intersects$_i;
1545
- var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1546
- if (isUndefined(selectedItem)) return;
1547
- var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1548
- var itemPos = selectedItem.position.clone();
1549
- if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) === selectedItem.userData.itemId) {
1550
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1551
- } else {
1552
- toolObj.position.set(planData.plan.position.x + itemPos.x, selItem.category === 'lighting' ? -planData.plan.position.y - selItem.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
1553
- }
1554
- scene3D.add(toolObj);
1555
1595
  _this2.setState({
1556
1596
  toolObj: toolObj
1557
1597
  });
@@ -1560,16 +1600,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1560
1600
  }
1561
1601
  if (bMove) {
1562
1602
  bMove = false;
1563
- var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
1564
- if (isUndefined(_selectedItem)) return;
1565
- var _selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1566
- var _itemPos = _selectedItem.position.clone();
1567
- if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
1568
- toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
1569
- } else {
1570
- toolObj.position.set(planData.plan.position.x + _itemPos.x, _selItem.category === 'lighting' ? -planData.plan.position.y - _selItem.properties.get('height').get('length') : planData.plan.position.y + _selectedItem.children[0].position.y, planData.plan.position.z + _itemPos.z);
1571
- }
1572
- scene3D.add(toolObj);
1573
1603
  _this2.setState({
1574
1604
  toolObj: toolObj
1575
1605
  });
@@ -1601,6 +1631,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1601
1631
  selectedObj = allItemRect.cur;
1602
1632
  }
1603
1633
  }
1634
+ sendInternalEvent(internalType, selectedElement);
1604
1635
  };
1605
1636
  this.mouseEnterEvent = function (event) {
1606
1637
  if (_this2.props.state.mode !== MODE_DRAWING_ITEM_3D) return;
@@ -2035,7 +2066,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2035
2066
  if (minDis < snapDelta && !snapFlag) {
2036
2067
  _this2.snap(snapObj, layer);
2037
2068
  snapFlag = true;
2038
- getDistances(layer, true);
2069
+ getDistances(layer);
2039
2070
  var _i13 = 0;
2040
2071
  for (_i13 = 0; _i13 < fVLine.length; _i13++) {
2041
2072
  if (fVLine[_i13].userData.distance < snapDelta) {
@@ -2159,7 +2190,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2159
2190
  scene3D = new Three.Scene();
2160
2191
  if (isElevationView(state.mode)) scene3D.background = new Three.Color(0xffffff);
2161
2192
  // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2162
- else scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2193
+ else scene3D.background = new Three.Color(0xe4ebfe); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2163
2194
  // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);
2164
2195
  window.scene3D = scene3D;
2165
2196
  // Camera
@@ -2485,10 +2516,13 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2485
2516
  if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
2486
2517
  var changedValues = diff(this.props.state.scene, nextProps.state.scene);
2487
2518
  prepareSnapSpec(layer);
2519
+ 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;
2488
2520
  if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
2489
- self.setState({
2490
- isLoading: true
2491
- });
2521
+ if (!isInteractiveMove) {
2522
+ self.setState({
2523
+ isLoading: true
2524
+ });
2525
+ }
2492
2526
  if (self.props.downloadFlag) {
2493
2527
  self.setState({
2494
2528
  waitForRender: 0
@@ -2554,7 +2588,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2554
2588
  height: '70px',
2555
2589
  animation: 'spin 2s linear infinite'
2556
2590
  },
2557
- src: '/assets/img/loading_large.gif',
2591
+ src: '/assets/img/loading/loading.gif',
2558
2592
  alt: "img"
2559
2593
  }));
2560
2594
  } else {
@@ -2568,9 +2602,12 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2568
2602
  }, /*#__PURE__*/React.createElement("img", {
2569
2603
  style: {
2570
2604
  animation: 'spin 2s linear infinite',
2571
- marginTop: "22%"
2605
+ position: "absolute",
2606
+ top: "50%",
2607
+ width: '70px',
2608
+ height: '70px'
2572
2609
  },
2573
- src: '/assets/img/loading_large.gif',
2610
+ src: '/assets/img/loading/loading.gif',
2574
2611
  alt: "img"
2575
2612
  }));
2576
2613
  }
@@ -2587,9 +2624,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2587
2624
  style: {
2588
2625
  animation: 'spin 2s linear infinite',
2589
2626
  position: "absolute",
2590
- top: "50%"
2627
+ top: "50%",
2628
+ width: '70px',
2629
+ height: '70px'
2591
2630
  },
2592
- src: '/assets/img/loading_large.gif',
2631
+ src: '/assets/img/loading/loading.gif',
2593
2632
  alt: "img"
2594
2633
  }));
2595
2634
  } else {