kitchen-simulator 4.0.6-react-18 → 4.0.6
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.
- package/README.md +3 -0
- package/es/AppContext.js +1 -1
- package/es/LiteKitchenConfigurator.js +162 -107
- package/es/LiteRenderer.js +162 -137
- package/es/actions/export.js +25 -12
- package/es/assets/gltf/door_sliding.bin +0 -0
- package/es/assets/img/png/helper/video_preview_start.png +0 -0
- package/es/assets/img/svg/bottombar/elevation.svg +12 -5
- package/es/catalog/catalog.js +21 -5
- package/es/catalog/holes/window-clear/planner-element.js +2 -2
- package/es/catalog/properties/export.js +21 -0
- package/es/catalog/properties/property-checkbox.js +68 -0
- package/es/catalog/properties/property-color.js +39 -0
- package/es/catalog/properties/property-enum.js +50 -0
- package/es/catalog/properties/property-hidden.js +19 -0
- package/es/catalog/properties/property-lenght-measure.js +100 -0
- package/es/catalog/properties/property-length-measure.js +84 -0
- package/es/catalog/properties/property-length-measure_hole.js +100 -0
- package/es/catalog/properties/property-number.js +48 -0
- package/es/catalog/properties/property-read-only.js +26 -0
- package/es/catalog/properties/property-string.js +48 -0
- package/es/catalog/properties/property-toggle.js +39 -0
- package/es/catalog/properties/shared-property-style.js +14 -0
- package/es/catalog/utils/exporter.js +1 -0
- package/es/catalog/utils/item-loader.js +35 -26
- package/es/class/hole.js +0 -2
- package/es/class/item.js +96 -70
- package/es/class/line.js +4 -8
- package/es/class/project.js +93 -80
- package/es/components/content.js +5 -93
- package/es/components/export.js +4 -6
- package/es/components/style/button.js +106 -0
- package/es/components/style/cancel-button.js +21 -0
- package/es/components/style/content-container.js +30 -0
- package/es/components/style/content-title.js +25 -0
- package/es/components/style/delete-button.js +24 -0
- package/es/components/style/export.js +28 -2
- package/es/components/style/form-block.js +20 -0
- package/es/components/style/form-color-input.js +26 -0
- package/es/components/style/form-label.js +22 -0
- package/es/components/style/form-number-input.js +29 -27
- package/es/components/style/form-number-input_2.js +200 -0
- package/es/components/style/form-select.js +19 -0
- package/es/components/style/form-slider.js +60 -0
- package/es/components/style/form-submit-button.js +25 -0
- package/es/components/style/form-text-input.js +69 -0
- package/es/components/viewer2d/grids/grid-streak.js +1 -1
- package/es/components/viewer2d/group.js +5 -4
- package/es/components/viewer2d/item.js +155 -359
- package/es/components/viewer2d/layer.js +1 -1
- package/es/components/viewer2d/line.js +17 -47
- package/es/components/viewer2d/ruler.js +5 -3
- package/es/components/viewer2d/rulerDist.js +8 -7
- package/es/components/viewer2d/rulerX.js +4 -2
- package/es/components/viewer2d/rulerY.js +3 -0
- package/es/components/viewer2d/scene.js +17 -12
- package/es/components/viewer2d/state.js +1 -1
- package/es/components/viewer2d/utils.js +2 -2
- package/es/components/viewer2d/vertex.js +3 -2
- package/es/components/viewer2d/viewer2d.js +51 -87
- package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/es/components/viewer3d/scene-creator.js +59 -18
- package/es/components/viewer3d/viewer3d-first-person.js +24 -26
- package/es/components/viewer3d/viewer3d.js +100 -112
- package/es/constants.js +6 -2
- package/es/devLiteRenderer.js +491 -150
- package/es/index.js +606 -1
- package/es/models.js +3 -2
- package/es/plugins/SVGLoader.js +1414 -0
- package/es/plugins/console-debugger.js +34 -0
- package/es/plugins/export.js +7 -0
- package/es/plugins/keyboard.js +110 -0
- package/es/reducers/project-reducer.js +3 -0
- package/es/styles/export.js +5 -0
- package/es/styles/tabs.css +40 -0
- package/es/utils/geometry.js +72 -114
- package/es/utils/helper.js +38 -1
- package/es/utils/isolate-event-handler.js +826 -606
- package/es/utils/molding.js +457 -11
- package/lib/AppContext.js +1 -1
- package/lib/LiteKitchenConfigurator.js +161 -107
- package/lib/LiteRenderer.js +161 -137
- package/lib/actions/export.js +35 -39
- package/lib/assets/gltf/door_sliding.bin +0 -0
- package/lib/assets/img/png/helper/video_preview_start.png +0 -0
- package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
- package/lib/catalog/catalog.js +20 -4
- package/lib/catalog/holes/window-clear/planner-element.js +2 -2
- package/lib/catalog/properties/export.js +81 -0
- package/lib/catalog/properties/property-checkbox.js +76 -0
- package/lib/catalog/properties/property-color.js +47 -0
- package/lib/catalog/properties/property-enum.js +58 -0
- package/lib/catalog/properties/property-hidden.js +27 -0
- package/lib/catalog/properties/property-lenght-measure.js +108 -0
- package/lib/catalog/properties/property-length-measure.js +92 -0
- package/lib/catalog/properties/property-length-measure_hole.js +108 -0
- package/lib/catalog/properties/property-number.js +56 -0
- package/lib/catalog/properties/property-read-only.js +34 -0
- package/lib/catalog/properties/property-string.js +56 -0
- package/lib/catalog/properties/property-toggle.js +47 -0
- package/lib/catalog/properties/shared-property-style.js +21 -0
- package/lib/catalog/utils/exporter.js +1 -0
- package/lib/catalog/utils/item-loader.js +35 -26
- package/lib/class/hole.js +0 -2
- package/lib/class/item.js +94 -68
- package/lib/class/line.js +3 -7
- package/lib/class/project.js +93 -80
- package/lib/components/content.js +5 -93
- package/lib/components/export.js +6 -26
- package/lib/components/style/button.js +115 -0
- package/lib/components/style/cancel-button.js +29 -0
- package/lib/components/style/content-container.js +38 -0
- package/lib/components/style/content-title.js +35 -0
- package/lib/components/style/delete-button.js +34 -0
- package/lib/components/style/export.js +105 -1
- package/lib/components/style/form-block.js +28 -0
- package/lib/components/style/form-color-input.js +34 -0
- package/lib/components/style/form-label.js +30 -0
- package/lib/components/style/form-number-input.js +29 -27
- package/lib/components/style/form-number-input_2.js +209 -0
- package/lib/components/style/form-select.js +29 -0
- package/lib/components/style/form-slider.js +68 -0
- package/lib/components/style/form-submit-button.js +35 -0
- package/lib/components/style/form-text-input.js +78 -0
- package/lib/components/viewer2d/grids/grid-streak.js +1 -1
- package/lib/components/viewer2d/group.js +5 -4
- package/lib/components/viewer2d/item.js +152 -356
- package/lib/components/viewer2d/layer.js +1 -1
- package/lib/components/viewer2d/line.js +17 -47
- package/lib/components/viewer2d/ruler.js +4 -2
- package/lib/components/viewer2d/rulerDist.js +8 -7
- package/lib/components/viewer2d/rulerX.js +4 -2
- package/lib/components/viewer2d/rulerY.js +3 -0
- package/lib/components/viewer2d/scene.js +17 -12
- package/lib/components/viewer2d/state.js +1 -1
- package/lib/components/viewer2d/utils.js +2 -2
- package/lib/components/viewer2d/vertex.js +3 -2
- package/lib/components/viewer2d/viewer2d.js +49 -84
- package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/lib/components/viewer3d/scene-creator.js +57 -16
- package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
- package/lib/components/viewer3d/viewer3d.js +97 -108
- package/lib/constants.js +11 -7
- package/lib/devLiteRenderer.js +489 -148
- package/lib/index.js +607 -6
- package/lib/models.js +3 -2
- package/lib/plugins/SVGLoader.js +1419 -0
- package/lib/plugins/console-debugger.js +42 -0
- package/lib/plugins/export.js +25 -0
- package/lib/plugins/keyboard.js +117 -0
- package/lib/reducers/project-reducer.js +3 -0
- package/lib/styles/export.js +13 -0
- package/lib/styles/tabs.css +40 -0
- package/lib/utils/geometry.js +72 -114
- package/lib/utils/helper.js +40 -1
- package/lib/utils/isolate-event-handler.js +826 -605
- package/lib/utils/molding.js +458 -9
- package/package.json +21 -20
- package/es/mocks/appliancePayload.json +0 -27
- package/es/mocks/cabinetPayload.json +0 -1914
- package/es/mocks/cabinetPayload2.json +0 -76
- package/es/mocks/dataBundle2.json +0 -4
- package/es/mocks/distancePayload.json +0 -6
- package/es/mocks/doorStylePayload2.json +0 -84
- package/es/mocks/furnishingPayload.json +0 -23
- package/es/mocks/itemCDSPayload.json +0 -27
- package/es/mocks/lightingPayload.json +0 -23
- package/es/mocks/mockProps.json +0 -43
- package/es/mocks/mockProps2.json +0 -9
- package/es/mocks/moldingPayload.json +0 -19
- package/es/mocks/projectItemsCatalog.json +0 -133
- package/es/mocks/rectangleShape.json +0 -238
- package/es/mocks/replaceCabinetPayload.json +0 -81
- package/es/mocks/roomShapePayload.json +0 -5
- package/es/useAppContext.js +0 -8
- package/lib/mocks/appliancePayload.json +0 -27
- package/lib/mocks/cabinetPayload.json +0 -1914
- package/lib/mocks/cabinetPayload2.json +0 -76
- package/lib/mocks/dataBundle2.json +0 -4
- package/lib/mocks/distancePayload.json +0 -6
- package/lib/mocks/doorStylePayload2.json +0 -84
- package/lib/mocks/furnishingPayload.json +0 -23
- package/lib/mocks/itemCDSPayload.json +0 -27
- package/lib/mocks/lightingPayload.json +0 -23
- package/lib/mocks/mockProps.json +0 -43
- package/lib/mocks/mockProps2.json +0 -9
- package/lib/mocks/moldingPayload.json +0 -19
- package/lib/mocks/projectItemsCatalog.json +0 -133
- package/lib/mocks/rectangleShape.json +0 -238
- package/lib/mocks/replaceCabinetPayload.json +0 -81
- package/lib/mocks/roomShapePayload.json +0 -5
- package/lib/useAppContext.js +0 -16
|
@@ -19,17 +19,16 @@ import { checkCabinetOverlap, createBacksplash, deleteSpecifiedMeshObjects, fVLi
|
|
|
19
19
|
import { disposeObject, disposeScene } from "./three-memory-cleaner";
|
|
20
20
|
import diff from 'immutablediff';
|
|
21
21
|
import * as SharedStyle from "../../shared-style";
|
|
22
|
-
import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT, MODE_ROTATING_ITEM, MODE_DRAGGING_HOLE_3D } from "../../constants";
|
|
22
|
+
import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT, MODE_ROTATING_ITEM, MODE_DRAGGING_HOLE_3D, INTERNAL_EVENT_REPLACE_CABINET } from "../../constants";
|
|
23
23
|
import { isUndefined } from 'util';
|
|
24
24
|
import { verticesDistance } from "../../utils/geometry";
|
|
25
25
|
import { convert } from "../../utils/convert-units-lite";
|
|
26
26
|
import { GeometryUtils } from "../../utils/export";
|
|
27
|
-
import { handleCamRect, isElevationView, isEmpty } from "../../utils/helper";
|
|
27
|
+
import { handleCamRect, isElevationView, isEmpty, updatePayloadOfInternalEvent } from "../../utils/helper";
|
|
28
28
|
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
|
|
29
29
|
import CameraControls from 'camera-controls';
|
|
30
30
|
import { getAllMeshes, vectorIntersectWithMesh } from "../../utils/objects-utils";
|
|
31
|
-
import {
|
|
32
|
-
import { MoldingUtils } from "../../utils/export";
|
|
31
|
+
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
33
32
|
CameraControls.install({
|
|
34
33
|
THREE: Three
|
|
35
34
|
});
|
|
@@ -232,6 +231,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
232
231
|
});
|
|
233
232
|
self.renderer.domElement.style.display = 'block';
|
|
234
233
|
}, 1500);
|
|
234
|
+
self.planData = planData;
|
|
235
235
|
});
|
|
236
236
|
var area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
|
|
237
237
|
var layer = scene.getIn(['layers', scene.selectedLayer]);
|
|
@@ -670,7 +670,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
670
670
|
layer.lines.forEach(function (line) {
|
|
671
671
|
line.holes.forEach(function (holeID) {
|
|
672
672
|
var hole = layer.holes.get(holeID);
|
|
673
|
-
holes.push(hole);
|
|
673
|
+
if (hole) holes.push(hole);
|
|
674
674
|
});
|
|
675
675
|
});
|
|
676
676
|
var i = 0;
|
|
@@ -1186,18 +1186,10 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1186
1186
|
};
|
|
1187
1187
|
var sendInternalEvent = function sendInternalEvent(evtType, evtElement) {
|
|
1188
1188
|
var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
1189
|
-
if (!isEmpty(evtType)) {
|
|
1190
|
-
var _this2$props$onIntern, _this2$props;
|
|
1191
|
-
var
|
|
1192
|
-
|
|
1193
|
-
// check this cabinet has warning box
|
|
1194
|
-
payload.isWarning = isWarningItem(evtElement);
|
|
1195
|
-
// check this item is available molding
|
|
1196
|
-
payload.isMoldingAvailable = MoldingUtils.isEnableItemForMolding(layer, evtElement); // check this item is snapped to wall
|
|
1197
|
-
payload.isAttachedWall = MoldingUtils.isAttachedWall(layer, evtElement);
|
|
1198
|
-
// update distArray
|
|
1199
|
-
if (pointArray) payload.distArray = pointArray;
|
|
1200
|
-
}
|
|
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);
|
|
1201
1193
|
(_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
|
|
1202
1194
|
type: evtType,
|
|
1203
1195
|
value: payload
|
|
@@ -1355,11 +1347,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1355
1347
|
if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
|
|
1356
1348
|
cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
|
|
1357
1349
|
selectedFlag = false;
|
|
1358
|
-
} else {
|
|
1359
|
-
isSelected = false;
|
|
1360
|
-
_this2.context.projectActions.unselectAll();
|
|
1361
|
-
scene3D.remove(toolObj);
|
|
1362
|
-
_this2.context.itemsActions.removeReplacingSupport();
|
|
1363
1350
|
}
|
|
1364
1351
|
}
|
|
1365
1352
|
} else {
|
|
@@ -1412,11 +1399,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1412
1399
|
}
|
|
1413
1400
|
switch (_this2.props.state.mode) {
|
|
1414
1401
|
case MODE_DRAGGING_ITEM_3D:
|
|
1402
|
+
case MODE_DRAGGING_HOLE_3D:
|
|
1415
1403
|
internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
1416
1404
|
break;
|
|
1417
1405
|
case MODE_ROTATING_ITEM_3D:
|
|
1418
1406
|
internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
|
|
1419
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;
|
|
1420
1414
|
}
|
|
1421
1415
|
if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
|
|
1422
1416
|
_this2.context.itemsActions.endDraggingItem3D();
|
|
@@ -1450,7 +1444,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1450
1444
|
});
|
|
1451
1445
|
});
|
|
1452
1446
|
var intersects = raycaster.intersectObjects(meshes, true);
|
|
1453
|
-
var _i10;
|
|
1447
|
+
var _i10; // index of warning object in intersects
|
|
1448
|
+
|
|
1454
1449
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
1455
1450
|
for (_i10 = 0; _i10 < intersects.length; _i10++) {
|
|
1456
1451
|
if (intersects[_i10].object.name === 'warningObj') break;
|
|
@@ -1466,6 +1461,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1466
1461
|
var replaceInfo = intersects[_i10].object.parent.parent.userData;
|
|
1467
1462
|
_this2.context.itemsActions.selectItem(replaceInfo.layerId, replaceInfo.itemId);
|
|
1468
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);
|
|
1469
1467
|
return;
|
|
1470
1468
|
}
|
|
1471
1469
|
}
|
|
@@ -1478,6 +1476,19 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1478
1476
|
}
|
|
1479
1477
|
}
|
|
1480
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
|
+
};
|
|
1481
1492
|
if (Math.abs(mouse.x - _this2.lastMousePosition.x) <= 0.02 && Math.abs(mouse.y - _this2.lastMousePosition.y) <= 0.02 || bMove) {
|
|
1482
1493
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
1483
1494
|
if (intersects[_i10] === undefined) {
|
|
@@ -1501,36 +1512,17 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1501
1512
|
isSelected = true;
|
|
1502
1513
|
setTimeout(function () {
|
|
1503
1514
|
getDistances(layer);
|
|
1504
|
-
|
|
1505
|
-
if (isUndefined(selectedItem)) return;
|
|
1506
|
-
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1507
|
-
var itemPos = selectedItem.position.clone();
|
|
1508
|
-
if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
|
|
1509
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1510
|
-
} else {
|
|
1511
|
-
toolObj.position.set(planData.plan.position.x + itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1512
|
-
}
|
|
1513
|
-
scene3D.add(toolObj);
|
|
1515
|
+
addItemToolObj();
|
|
1514
1516
|
_this2.setState({
|
|
1515
1517
|
toolObj: toolObj
|
|
1516
1518
|
});
|
|
1517
1519
|
// showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
|
|
1518
|
-
var pointArray = []
|
|
1519
|
-
|
|
1520
|
-
pointArray.push([fVLine[
|
|
1521
|
-
pointArray.push([fVLine[
|
|
1522
|
-
pointArray.push([fVLine[
|
|
1523
|
-
pointArray.
|
|
1524
|
-
pointArray.forEach(function (pointElement, index) {
|
|
1525
|
-
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1526
|
-
});
|
|
1527
|
-
pointArray.forEach(function (pointElement) {
|
|
1528
|
-
if (pointElement[0] == 0) cnt++;
|
|
1529
|
-
});
|
|
1530
|
-
if (cnt == 4 || cnt == 3) {
|
|
1531
|
-
pointArray[0][0] = 100;
|
|
1532
|
-
pointArray[1][0] = 100;
|
|
1533
|
-
}
|
|
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;
|
|
1534
1526
|
actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
|
|
1535
1527
|
internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1536
1528
|
sendInternalEvent(internalType, selectedElement, pointArray);
|
|
@@ -1541,16 +1533,17 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1541
1533
|
var elementPrototype = null;
|
|
1542
1534
|
switch (true) {
|
|
1543
1535
|
case 'holeID' in selectedObject:
|
|
1544
|
-
|
|
1536
|
+
elementID = selectedObject.holeID;
|
|
1537
|
+
elementPrototype = 'holes';
|
|
1545
1538
|
if (_this2.props.state.mode === MODE_DRAGGING_HOLE_3D) {
|
|
1546
1539
|
actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
|
|
1547
|
-
internalType = INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1548
|
-
elementID = selectedObject.holeID;
|
|
1549
|
-
elementPrototype = 'holes';
|
|
1550
1540
|
}
|
|
1551
1541
|
break;
|
|
1542
|
+
case 'lineID' in selectedObject:
|
|
1543
|
+
elementID = selectedObject.lineID;
|
|
1544
|
+
elementPrototype = 'lines';
|
|
1545
|
+
break;
|
|
1552
1546
|
case 'areaID' in selectedObject:
|
|
1553
|
-
internalType = INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1554
1547
|
elementID = selectedObject.areaID;
|
|
1555
1548
|
elementPrototype = 'areas';
|
|
1556
1549
|
break;
|
|
@@ -1562,15 +1555,20 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1562
1555
|
isSelected = false;
|
|
1563
1556
|
}
|
|
1564
1557
|
} else {
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
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
|
+
}
|
|
1574
1572
|
}
|
|
1575
1573
|
}
|
|
1576
1574
|
bMove = false;
|
|
@@ -1581,6 +1579,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1581
1579
|
selectedObj = allItemRect.cur;
|
|
1582
1580
|
}
|
|
1583
1581
|
} else {
|
|
1582
|
+
var _planData$sceneGraph2, _selectedObject2, _selectedObject3;
|
|
1584
1583
|
visibleTransformBox(false);
|
|
1585
1584
|
var alti = 0;
|
|
1586
1585
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1590,18 +1589,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1590
1589
|
alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1591
1590
|
}
|
|
1592
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();
|
|
1593
1594
|
if (bRotate) {
|
|
1594
|
-
var _intersects$_i;
|
|
1595
|
-
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1596
|
-
if (isUndefined(selectedItem)) return;
|
|
1597
|
-
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1598
|
-
var itemPos = selectedItem.position.clone();
|
|
1599
|
-
if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) === selectedItem.userData.itemId) {
|
|
1600
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1601
|
-
} else {
|
|
1602
|
-
toolObj.position.set(planData.plan.position.x + itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1603
|
-
}
|
|
1604
|
-
scene3D.add(toolObj);
|
|
1605
1595
|
_this2.setState({
|
|
1606
1596
|
toolObj: toolObj
|
|
1607
1597
|
});
|
|
@@ -1610,16 +1600,6 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1610
1600
|
}
|
|
1611
1601
|
if (bMove) {
|
|
1612
1602
|
bMove = false;
|
|
1613
|
-
var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1614
|
-
if (isUndefined(_selectedItem)) return;
|
|
1615
|
-
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1616
|
-
var _itemPos = _selectedItem.position.clone();
|
|
1617
|
-
if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) {
|
|
1618
|
-
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1619
|
-
} else {
|
|
1620
|
-
toolObj.position.set(planData.plan.position.x + _itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + _selectedItem.children[0].position.y, planData.plan.position.z + _itemPos.z);
|
|
1621
|
-
}
|
|
1622
|
-
scene3D.add(toolObj);
|
|
1623
1603
|
_this2.setState({
|
|
1624
1604
|
toolObj: toolObj
|
|
1625
1605
|
});
|
|
@@ -2086,7 +2066,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2086
2066
|
if (minDis < snapDelta && !snapFlag) {
|
|
2087
2067
|
_this2.snap(snapObj, layer);
|
|
2088
2068
|
snapFlag = true;
|
|
2089
|
-
getDistances(layer
|
|
2069
|
+
getDistances(layer);
|
|
2090
2070
|
var _i13 = 0;
|
|
2091
2071
|
for (_i13 = 0; _i13 < fVLine.length; _i13++) {
|
|
2092
2072
|
if (fVLine[_i13].userData.distance < snapDelta) {
|
|
@@ -2445,18 +2425,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2445
2425
|
this.renderer.renderLists.dispose();
|
|
2446
2426
|
}
|
|
2447
2427
|
}, {
|
|
2448
|
-
key: "
|
|
2449
|
-
value: function
|
|
2428
|
+
key: "componentWillReceiveProps",
|
|
2429
|
+
value: function componentWillReceiveProps(nextProps) {
|
|
2450
2430
|
var _this4 = this;
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
var
|
|
2456
|
-
width = _this$props.width,
|
|
2457
|
-
height = _this$props.height;
|
|
2458
|
-
var selectedLayer = this.props.state.getIn(['scene', 'layers', this.props.state.scene.selectedLayer]);
|
|
2459
|
-
var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(this.props.state.scene.unit);
|
|
2431
|
+
if (this.props.downloadFlag && diff(this.props.state, nextProps.state).toJS().length == 0 || isEmpty(nextProps.state.scene)) return;
|
|
2432
|
+
var width = nextProps.width,
|
|
2433
|
+
height = nextProps.height;
|
|
2434
|
+
var selectedLayer = nextProps.state.getIn(['scene', 'layers', nextProps.state.scene.selectedLayer]);
|
|
2435
|
+
var ceilHeight = convert(selectedLayer.ceilHeight).from(selectedLayer.unit).to(nextProps.state.scene.unit);
|
|
2460
2436
|
var actions = {
|
|
2461
2437
|
areaActions: this.context.areaActions,
|
|
2462
2438
|
holesActions: this.context.holesActions,
|
|
@@ -2466,7 +2442,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2466
2442
|
projectActions: this.context.projectActions,
|
|
2467
2443
|
catalog: this.context.catalog
|
|
2468
2444
|
};
|
|
2469
|
-
var isLoadingCabinet =
|
|
2445
|
+
var isLoadingCabinet = nextProps.state.scene.isLoadingCabinet;
|
|
2470
2446
|
if (this.state.isLoadingCabinet !== isLoadingCabinet) this.setState({
|
|
2471
2447
|
isLoadingCabinet: isLoadingCabinet
|
|
2472
2448
|
});
|
|
@@ -2477,7 +2453,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2477
2453
|
var allItemRect;
|
|
2478
2454
|
|
|
2479
2455
|
// handle camera setting
|
|
2480
|
-
switch (
|
|
2456
|
+
switch (this.props.state.mode) {
|
|
2481
2457
|
case MODE_ELEVATION_VIEW:
|
|
2482
2458
|
// when Elevation mode (camera: Orthographic)
|
|
2483
2459
|
var cameraRect = handleCamRect(width, height, ceilHeight, this.state.lineLength);
|
|
@@ -2495,12 +2471,12 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2495
2471
|
break;
|
|
2496
2472
|
}
|
|
2497
2473
|
this.camera.updateProjectionMatrix();
|
|
2498
|
-
var data =
|
|
2474
|
+
var data = nextProps.state.scene;
|
|
2499
2475
|
var layer = data.getIn(['layers', data.selectedLayer]);
|
|
2500
2476
|
var self = this;
|
|
2501
2477
|
function implementBacksplash() {
|
|
2502
|
-
if (isElevationView(self.props.state.mode)) return;
|
|
2503
|
-
var allItems = GeometryUtils.getAllItemSpecified(
|
|
2478
|
+
if (isElevationView(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode
|
|
2479
|
+
var allItems = GeometryUtils.getAllItemSpecified(nextProps.state.scene, actions.catalog, BASE_CABINET_LAYOUTPOS);
|
|
2504
2480
|
var i,
|
|
2505
2481
|
items = [];
|
|
2506
2482
|
for (i = 0; i < allItems.others.length; i++) items.push(allItems.others[i]);
|
|
@@ -2509,7 +2485,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2509
2485
|
var calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);
|
|
2510
2486
|
var visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);
|
|
2511
2487
|
actions.itemsActions.setBacksplashVisible(items[i].itemInfo.id, visible);
|
|
2512
|
-
createBacksplash(items[i],
|
|
2488
|
+
createBacksplash(items[i], nextProps.state.scene.getIn(['layers', nextProps.state.scene.selectedLayer]), planData, nextProps.state.scene);
|
|
2513
2489
|
}
|
|
2514
2490
|
}
|
|
2515
2491
|
function implementWarningBox() {
|
|
@@ -2537,13 +2513,16 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2537
2513
|
showflag: false
|
|
2538
2514
|
});
|
|
2539
2515
|
}
|
|
2540
|
-
if (
|
|
2541
|
-
var changedValues = diff(
|
|
2516
|
+
if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
|
|
2517
|
+
var changedValues = diff(this.props.state.scene, nextProps.state.scene);
|
|
2542
2518
|
prepareSnapSpec(layer);
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
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;
|
|
2520
|
+
if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
|
|
2521
|
+
if (!isInteractiveMove) {
|
|
2522
|
+
self.setState({
|
|
2523
|
+
isLoading: true
|
|
2524
|
+
});
|
|
2525
|
+
}
|
|
2547
2526
|
if (self.props.downloadFlag) {
|
|
2548
2527
|
self.setState({
|
|
2549
2528
|
waitForRender: 0
|
|
@@ -2559,7 +2538,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2559
2538
|
}
|
|
2560
2539
|
self.renderer.domElement.style.display = 'none';
|
|
2561
2540
|
}
|
|
2562
|
-
if (
|
|
2541
|
+
if (nextProps.state.scene.showfg == true) {
|
|
2563
2542
|
implementBacksplash();
|
|
2564
2543
|
implementWarningBox();
|
|
2565
2544
|
} else {
|
|
@@ -2568,7 +2547,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2568
2547
|
var _this$state = this.state,
|
|
2569
2548
|
toolObj = _this$state.toolObj,
|
|
2570
2549
|
angleObj = _this$state.angleObj;
|
|
2571
|
-
var _updateScene = updateScene(this.planData,
|
|
2550
|
+
var _updateScene = updateScene(this.planData, nextProps.state.scene, this.props.state.scene, changedValues.toJS(), actions, this.context.catalog, nextProps.state.mode, toolObj, angleObj, nextProps.state.draggingSupport),
|
|
2572
2551
|
promise = _updateScene.promise;
|
|
2573
2552
|
self.setState();
|
|
2574
2553
|
promise.then(function (p1Value) {
|
|
@@ -2580,8 +2559,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2580
2559
|
});
|
|
2581
2560
|
self.renderer.domElement.style.display = 'block';
|
|
2582
2561
|
});
|
|
2583
|
-
if (
|
|
2584
|
-
|
|
2562
|
+
if (nextProps.state.getIn(['scene', 'isEndDragging'])) {
|
|
2563
|
+
nextProps.state.setIn(['scene', 'isEndDragging'], false);
|
|
2585
2564
|
}
|
|
2586
2565
|
}
|
|
2587
2566
|
this.renderer.setSize(width, height);
|
|
@@ -2669,4 +2648,13 @@ Scene3DViewer.propTypes = {
|
|
|
2669
2648
|
width: PropTypes.number.isRequired,
|
|
2670
2649
|
height: PropTypes.number.isRequired,
|
|
2671
2650
|
replaceCabinet: PropTypes.func.isRequired
|
|
2651
|
+
};
|
|
2652
|
+
Scene3DViewer.contextTypes = {
|
|
2653
|
+
areaActions: PropTypes.object.isRequired,
|
|
2654
|
+
holesActions: PropTypes.object.isRequired,
|
|
2655
|
+
itemsActions: PropTypes.object.isRequired,
|
|
2656
|
+
linesActions: PropTypes.object.isRequired,
|
|
2657
|
+
sceneActions: PropTypes.object.isRequired,
|
|
2658
|
+
projectActions: PropTypes.object.isRequired,
|
|
2659
|
+
catalog: PropTypes.object
|
|
2672
2660
|
};
|
package/es/constants.js
CHANGED
|
@@ -66,6 +66,7 @@ export var CHANGE_WALL_LENGTH_MEASURE = 'CHANGE_WALL_LENGTH_MEASURE';
|
|
|
66
66
|
export var CHANGE_BASE_CABINET_MEASURE = 'CHANGE_BASE_CABINET_MEASURE';
|
|
67
67
|
export var CHANGE_WALL_CABINET_MEASURE = 'CHANGE_WALL_CABINET_MEASURE';
|
|
68
68
|
export var CHANGE_WINDOW_DOOR_MEASURE = 'CHANGE_WINDOW_DOOR_MEASURE';
|
|
69
|
+
export var CHANGE_MEASUREMENT_UNIT = 'CHANGE_MEASUREMENT_UNIT';
|
|
69
70
|
|
|
70
71
|
//ACTIONS viewer3D
|
|
71
72
|
export var SELECT_TOOL_3D_VIEW = 'SELECT_TOOL_3D_VIEW';
|
|
@@ -650,10 +651,11 @@ export var PROJECT_SETTING_OPTION = {
|
|
|
650
651
|
CHANGE_WALL_LENGTH_MEASURE: CHANGE_WALL_LENGTH_MEASURE,
|
|
651
652
|
CHANGE_BASE_CABINET_MEASURE: CHANGE_BASE_CABINET_MEASURE,
|
|
652
653
|
CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
|
|
653
|
-
CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE
|
|
654
|
+
CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE,
|
|
655
|
+
CHANGE_MEASUREMENT_UNIT: CHANGE_MEASUREMENT_UNIT
|
|
654
656
|
};
|
|
655
657
|
export var HOLE_NAMES = {
|
|
656
|
-
WINDOW_CLEAR: '
|
|
658
|
+
WINDOW_CLEAR: 'Window',
|
|
657
659
|
WINDOW_CROSS: 'Cross Window',
|
|
658
660
|
WINDOW_DOUBLE_HUNG: 'Double Hung Window',
|
|
659
661
|
WINDOW_VERTICAL: 'window-vertical',
|
|
@@ -739,6 +741,7 @@ export var EXTERNAL_EVENT_UPDATE_ATTRIBUTE = 'EXTERNAL_EVENT_UPDATE_ATTRIBUTE';
|
|
|
739
741
|
export var EXTERNAL_EVENT_UPDATE_PROPERTY = 'EXTERNAL_EVENT_UPDATE_PROPERTY'; // update the element's property (flip_doorhandle, open_doors...) in the property window
|
|
740
742
|
export var EXTERNAL_EVENT_REPLACE_CABINET = 'EXTERNAL_EVENT_REPLACE_CABINET';
|
|
741
743
|
export var EXTERNAL_EVENT_SET_FINISHING = 'EXTERNAL_EVENT_SET_FINISHING'; // set finishing(wallColor, floorStyle, doorHandle, backsplash, counterTop)
|
|
744
|
+
export var EXTERNAL_EVENT_ROTATE_PAN = 'EXTERNAL_EVENT_ROTATE_PAN'; // external event for rotate pan
|
|
742
745
|
|
|
743
746
|
// internal event type
|
|
744
747
|
export var INTERNAL_EVENT_UNSELECT_ALL = 'INTERNAL_EVENT_UNSELECT_ALL';
|
|
@@ -751,6 +754,7 @@ export var INTERNAL_EVENT_START_DRAW_WALL = 'INTERNAL_EVENT_START_DRAW_WALL';
|
|
|
751
754
|
|
|
752
755
|
// room shape type
|
|
753
756
|
export var ROOM_SHAPE_TYPE = {
|
|
757
|
+
CUSTOM: 'custom',
|
|
754
758
|
RECTANGLE: 'rectangle',
|
|
755
759
|
TWO_WALLS_LEFT_TOP: '2wLeftTop',
|
|
756
760
|
TWO_WALLS_RIGHT_TOP: '2wRightTop',
|