kitchen-simulator 11.28.0 → 11.28.2
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/es/actions/items-actions.js +12 -1
- package/es/assets/img/svg/3d_item_move.svg +9 -105
- package/es/assets/img/svg/3d_item_rotation.svg +3 -75
- package/es/assets/img/svg/accessories.svg +4 -4
- package/es/assets/img/svg/bottombar/elevation-back.svg +6 -6
- package/es/assets/img/svg/bottombar/elevation-front.svg +6 -6
- package/es/assets/img/svg/bottombar/elevation-left.svg +6 -6
- package/es/assets/img/svg/bottombar/elevation-right.svg +7 -7
- package/es/assets/img/svg/bottombar/elevation.svg +13 -13
- package/es/assets/img/svg/delete.svg +6 -2
- package/es/assets/img/svg/detail.svg +77 -77
- package/es/assets/img/svg/duplicate.svg +6 -6
- package/es/assets/img/svg/filtersActive.svg +19 -19
- package/es/assets/img/svg/invert.svg +12 -127
- package/es/assets/img/svg/menubar/login.svg +84 -84
- package/es/assets/img/svg/menubar/my_projects.svg +85 -85
- package/es/assets/img/svg/menubar/new_project.svg +110 -110
- package/es/assets/img/svg/menubar/save_project.svg +84 -84
- package/es/assets/img/svg/options.svg +3 -3
- package/es/assets/img/svg/positioning.svg +3 -3
- package/es/assets/img/svg/toggleFilters.svg +19 -19
- package/es/assets/img/svg/toolbar/shopping-cart.svg +13 -13
- package/es/assets/img/svg/wizardstep/detail_view.svg +87 -87
- package/es/assets/img/svg/wizardstep/tile_view.svg +95 -95
- package/es/catalog/utils/exporter.js +4 -0
- package/es/catalog/utils/item-loader.js +18 -8
- package/es/class/item.js +32 -2
- package/es/components/viewer2d/item.js +139 -125
- package/es/components/viewer2d/viewer2d.js +5 -2
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +556 -556
- package/es/components/viewer3d/scene-creator.js +18 -0
- package/es/components/viewer3d/viewer3d.js +137 -49
- package/es/constants.js +4 -0
- package/es/events/external/handleExternalEvent.js +36 -33
- package/es/events/external/handlers.elementOps.js +8 -0
- package/es/mappings/external-events/mapExternalEventPayload.js +4 -4
- package/es/mappings/external-events/mappers/addItemMapper.js +9 -9
- package/es/models.js +4 -0
- package/es/reducers/items-reducer.js +8 -1
- package/es/shared/domain/asset/sanitize-asset-url.js +5 -5
- package/es/shared/domain/cabinet-mirror.js +7 -0
- package/es/utils/skinPanelEngine.js +14 -14
- package/lib/actions/items-actions.js +12 -0
- package/lib/assets/img/svg/3d_item_move.svg +9 -105
- package/lib/assets/img/svg/3d_item_rotation.svg +3 -75
- package/lib/assets/img/svg/accessories.svg +4 -4
- package/lib/assets/img/svg/bottombar/elevation-back.svg +6 -6
- package/lib/assets/img/svg/bottombar/elevation-front.svg +6 -6
- package/lib/assets/img/svg/bottombar/elevation-left.svg +6 -6
- package/lib/assets/img/svg/bottombar/elevation-right.svg +7 -7
- package/lib/assets/img/svg/bottombar/elevation.svg +13 -13
- package/lib/assets/img/svg/delete.svg +6 -2
- package/lib/assets/img/svg/detail.svg +77 -77
- package/lib/assets/img/svg/duplicate.svg +6 -6
- package/lib/assets/img/svg/filtersActive.svg +19 -19
- package/lib/assets/img/svg/invert.svg +12 -127
- package/lib/assets/img/svg/menubar/login.svg +84 -84
- package/lib/assets/img/svg/menubar/my_projects.svg +85 -85
- package/lib/assets/img/svg/menubar/new_project.svg +110 -110
- package/lib/assets/img/svg/menubar/save_project.svg +84 -84
- package/lib/assets/img/svg/options.svg +3 -3
- package/lib/assets/img/svg/positioning.svg +3 -3
- package/lib/assets/img/svg/toggleFilters.svg +19 -19
- package/lib/assets/img/svg/toolbar/shopping-cart.svg +13 -13
- package/lib/assets/img/svg/wizardstep/detail_view.svg +87 -87
- package/lib/assets/img/svg/wizardstep/tile_view.svg +95 -95
- package/lib/catalog/utils/exporter.js +4 -0
- package/lib/catalog/utils/item-loader.js +18 -8
- package/lib/class/item.js +31 -1
- package/lib/components/viewer2d/item.js +138 -124
- package/lib/components/viewer2d/viewer2d.js +5 -2
- package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +556 -556
- package/lib/components/viewer3d/scene-creator.js +18 -0
- package/lib/components/viewer3d/viewer3d.js +137 -49
- package/lib/constants.js +8 -4
- package/lib/events/external/handleExternalEvent.js +34 -31
- package/lib/events/external/handlers.elementOps.js +9 -0
- package/lib/mappings/external-events/mapExternalEventPayload.js +4 -4
- package/lib/mappings/external-events/mappers/addItemMapper.js +9 -9
- package/lib/models.js +4 -0
- package/lib/reducers/items-reducer.js +7 -0
- package/lib/shared/domain/asset/sanitize-asset-url.js +5 -5
- package/lib/shared/domain/cabinet-mirror.js +13 -0
- package/lib/utils/skinPanelEngine.js +14 -14
- package/package.json +1 -1
|
@@ -493,6 +493,8 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
493
493
|
getDistances(layer, item);
|
|
494
494
|
}, 50);
|
|
495
495
|
removeSelItemMesh(tmpMoldings, item, planData, mode);
|
|
496
|
+
} else if (modifiedPath[keyIndex] == 'mirrored') {
|
|
497
|
+
applyMirrorToItem3D(item3D, item.mirrored);
|
|
496
498
|
} else if (modifiedPath[keyIndex] == 'selected') {
|
|
497
499
|
var itemType = !!catalog.elements[item.type] ? catalog.elements[item.type].type : catalog.elements[returnReplaceableDeepSearchType(item.type)].type;
|
|
498
500
|
if (value == false) {
|
|
@@ -2213,6 +2215,22 @@ function updateItem(sceneData, oldSceneData, planData, layer, itemID, difference
|
|
|
2213
2215
|
if (!mesh) return null;
|
|
2214
2216
|
return catalog.getElement(item.type).updateRender3D(item, layer, sceneData, mesh, oldItem, differences, selfDestroy, selfBuild);
|
|
2215
2217
|
}
|
|
2218
|
+
function applyMirrorToItem3D(item3D, mirrored) {
|
|
2219
|
+
var _item3D$children, _object$children;
|
|
2220
|
+
var object = item3D === null || item3D === void 0 || (_item3D$children = item3D.children) === null || _item3D$children === void 0 ? void 0 : _item3D$children[0];
|
|
2221
|
+
if (!object || !object.scale) return;
|
|
2222
|
+
var shouldMirror = mirrored === true;
|
|
2223
|
+
var isCurrentlyMirrored = object.scale.x < 0;
|
|
2224
|
+
if (shouldMirror !== isCurrentlyMirrored) object.scale.x *= -1;
|
|
2225
|
+
var transformGizmo = (_object$children = object.children) === null || _object$children === void 0 ? void 0 : _object$children.find(function (child) {
|
|
2226
|
+
return child.name === 'TransformGizmo';
|
|
2227
|
+
});
|
|
2228
|
+
if (transformGizmo !== null && transformGizmo !== void 0 && transformGizmo.scale) {
|
|
2229
|
+
var sign = object.scale.x < 0 ? -1 : 1;
|
|
2230
|
+
transformGizmo.scale.x = sign * Math.abs(transformGizmo.scale.x);
|
|
2231
|
+
}
|
|
2232
|
+
object.userData.mirrored = shouldMirror;
|
|
2233
|
+
}
|
|
2216
2234
|
|
|
2217
2235
|
// Apply interact function to children of an Object3D
|
|
2218
2236
|
function applyInteract(object, interactFunction) {
|
|
@@ -29,6 +29,8 @@ 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
31
|
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
32
|
+
import { canMirrorCabinet } from "../../shared/domain/cabinet-mirror";
|
|
33
|
+
var ICON_SPACING = 0;
|
|
32
34
|
CameraControls.install({
|
|
33
35
|
THREE: Three
|
|
34
36
|
});
|
|
@@ -343,6 +345,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
343
345
|
var bRotate = false;
|
|
344
346
|
var bMove = false;
|
|
345
347
|
var bMoveUP = false;
|
|
348
|
+
var bMirror = false;
|
|
346
349
|
/** Transformation matrix of grid */
|
|
347
350
|
var gridMatrix = new Three.Matrix4();
|
|
348
351
|
var rayDirection = new Three.Vector3();
|
|
@@ -1044,35 +1047,73 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1044
1047
|
var firstMove = false;
|
|
1045
1048
|
var prevX, prevY;
|
|
1046
1049
|
var selObj = null;
|
|
1050
|
+
var TOOL_CANVAS_WIDTH = 100;
|
|
1051
|
+
var TOOL_CANVAS_TWO_BUTTON_HEIGHT = 200;
|
|
1052
|
+
var TOOL_CANVAS_THREE_BUTTON_HEIGHT = 300;
|
|
1053
|
+
var TOOL_BUTTON_RADIUS = 40;
|
|
1054
|
+
var TOOL_BUTTONS_SPACING = 20;
|
|
1055
|
+
var TOOL_HIT_RADIUS = 20;
|
|
1056
|
+
var getItemMirrored = function getItemMirrored(item) {
|
|
1057
|
+
return (item === null || item === void 0 ? void 0 : item.mirrored) === true;
|
|
1058
|
+
};
|
|
1059
|
+
var canMirrorItem = function canMirrorItem(item) {
|
|
1060
|
+
return canMirrorCabinet(item);
|
|
1061
|
+
};
|
|
1062
|
+
var toolTexture = null;
|
|
1047
1063
|
var createToolObject = function createToolObject() {
|
|
1064
|
+
var mirrorActive = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
1065
|
+
var canMirror = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1066
|
+
var buttons = [{
|
|
1067
|
+
src: '/assets/img/svg/3d_item_rotation.svg',
|
|
1068
|
+
y: 50
|
|
1069
|
+
}, {
|
|
1070
|
+
src: '/assets/img/svg/3d_item_move.svg',
|
|
1071
|
+
y: 150
|
|
1072
|
+
}, canMirror && {
|
|
1073
|
+
src: '/assets/img/svg/invert.svg',
|
|
1074
|
+
y: 250,
|
|
1075
|
+
flip: !mirrorActive
|
|
1076
|
+
}].filter(Boolean);
|
|
1048
1077
|
var canvas = document.createElement('canvas');
|
|
1049
|
-
canvas.width =
|
|
1050
|
-
canvas.height =
|
|
1051
|
-
canvas.style.width =
|
|
1052
|
-
canvas.style.height =
|
|
1078
|
+
canvas.width = TOOL_CANVAS_WIDTH;
|
|
1079
|
+
canvas.height = canMirror ? TOOL_CANVAS_THREE_BUTTON_HEIGHT : TOOL_CANVAS_TWO_BUTTON_HEIGHT;
|
|
1080
|
+
canvas.style.width = '50px';
|
|
1081
|
+
canvas.style.height = canMirror ? '150px' : '100px';
|
|
1053
1082
|
var ctx = canvas.getContext('2d');
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
ctx.
|
|
1083
|
+
var drawShadowCircle = function drawShadowCircle(x, y, radius) {
|
|
1084
|
+
ctx.save();
|
|
1085
|
+
ctx.shadowColor = 'rgba(0, 0, 0, 0.16)';
|
|
1086
|
+
ctx.shadowBlur = 2.4;
|
|
1087
|
+
ctx.shadowOffsetX = 0;
|
|
1088
|
+
ctx.shadowOffsetY = -1;
|
|
1089
|
+
ctx.fillStyle = '#FFFFFF';
|
|
1090
|
+
ctx.beginPath();
|
|
1091
|
+
ctx.arc(x, y, radius, 0, 2 * Math.PI);
|
|
1092
|
+
ctx.fill();
|
|
1093
|
+
ctx.restore();
|
|
1065
1094
|
};
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1095
|
+
var drawIcon = function drawIcon(_ref) {
|
|
1096
|
+
var src = _ref.src,
|
|
1097
|
+
y = _ref.y,
|
|
1098
|
+
flip = _ref.flip;
|
|
1099
|
+
drawShadowCircle(50, y, TOOL_BUTTON_RADIUS);
|
|
1100
|
+
var img = new Image();
|
|
1101
|
+
img.crossOrigin = 'anonymous';
|
|
1102
|
+
img.src = src;
|
|
1103
|
+
img.onload = function () {
|
|
1104
|
+
ctx.save();
|
|
1105
|
+
if (flip) {
|
|
1106
|
+
ctx.translate(100, 0);
|
|
1107
|
+
ctx.scale(-1, 1);
|
|
1108
|
+
}
|
|
1109
|
+
ctx.imageSmoothingEnabled = true;
|
|
1110
|
+
ctx.imageSmoothingQuality = 'high';
|
|
1111
|
+
ctx.drawImage(img, 25, y - 25, 50, 50);
|
|
1112
|
+
ctx.restore();
|
|
1113
|
+
if (toolTexture) toolTexture.needsUpdate = true;
|
|
1114
|
+
};
|
|
1075
1115
|
};
|
|
1116
|
+
buttons.forEach(drawIcon);
|
|
1076
1117
|
return canvas;
|
|
1077
1118
|
};
|
|
1078
1119
|
var clockWise = true;
|
|
@@ -1111,7 +1152,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1111
1152
|
lastAngle = rotate;
|
|
1112
1153
|
return canvas;
|
|
1113
1154
|
};
|
|
1114
|
-
|
|
1155
|
+
toolTexture = new Three.Texture(createToolObject(false, false));
|
|
1115
1156
|
toolTexture.needsUpdate = true;
|
|
1116
1157
|
var toolObj = new Three.Sprite(new Three.SpriteMaterial({
|
|
1117
1158
|
map: toolTexture,
|
|
@@ -1122,6 +1163,15 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1122
1163
|
toolObj.scale.set(20, 40, 20);
|
|
1123
1164
|
toolObj.renderOrder = 3;
|
|
1124
1165
|
toolObj.name = 'toolObj';
|
|
1166
|
+
toolObj.userData.canMirror = false;
|
|
1167
|
+
var refreshToolObject = function refreshToolObject(item) {
|
|
1168
|
+
var showMirror = canMirrorItem(item);
|
|
1169
|
+
toolTexture.image = createToolObject(getItemMirrored(item), showMirror);
|
|
1170
|
+
toolTexture.needsUpdate = true;
|
|
1171
|
+
toolObj.scale.set(20, showMirror ? 60 : 40, 20);
|
|
1172
|
+
toolObj.userData.canMirror = showMirror;
|
|
1173
|
+
};
|
|
1174
|
+
this.refreshToolObject = refreshToolObject;
|
|
1125
1175
|
var angleTexture = new Three.Texture(createAngleObject(0));
|
|
1126
1176
|
angleTexture.needsUpdate = true;
|
|
1127
1177
|
var angleObj = new Three.Sprite(new Three.SpriteMaterial({
|
|
@@ -1199,6 +1249,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1199
1249
|
}
|
|
1200
1250
|
};
|
|
1201
1251
|
this.mouseDownEvent = function (event) {
|
|
1252
|
+
var _selectedObject;
|
|
1202
1253
|
gridPlanOrigin = gridPlane.position;
|
|
1203
1254
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1204
1255
|
var altitude = 0;
|
|
@@ -1227,6 +1278,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1227
1278
|
* 1 - move up/down
|
|
1228
1279
|
* 2 - move x/y
|
|
1229
1280
|
* 3 - camera rotate
|
|
1281
|
+
* 4 - mirror
|
|
1230
1282
|
*/
|
|
1231
1283
|
var transflag = 3;
|
|
1232
1284
|
raycaster.setFromCamera(mouse, camera);
|
|
@@ -1240,20 +1292,23 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1240
1292
|
var intersects = raycaster.intersectObjects(meshes, true);
|
|
1241
1293
|
var toolIntersects = raycaster.intersectObjects([toolObj], true);
|
|
1242
1294
|
|
|
1243
|
-
// This code is excuted when click the tool object(rotation or
|
|
1295
|
+
// This code is excuted when click the tool object(rotation, move or mirror icon).
|
|
1244
1296
|
if (toolIntersects.length > 0) {
|
|
1245
1297
|
updateSelectedObject();
|
|
1246
|
-
|
|
1247
|
-
var
|
|
1248
|
-
|
|
1249
|
-
|
|
1298
|
+
var toolHeight = toolObj.userData.canMirror ? TOOL_CANVAS_THREE_BUTTON_HEIGHT : TOOL_CANVAS_TWO_BUTTON_HEIGHT;
|
|
1299
|
+
var yScale = toolHeight / 2;
|
|
1300
|
+
var distanceFromToolButton = function distanceFromToolButton(centerY) {
|
|
1301
|
+
return Math.sqrt(Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) + Math.pow((toolIntersects[0].uv.y - centerY) * yScale, 2));
|
|
1302
|
+
};
|
|
1303
|
+
var moveCenter = toolObj.userData.canMirror ? 0.5 : 0.25;
|
|
1304
|
+
var rotateCenter = toolObj.userData.canMirror ? 5 / 6 : 0.75;
|
|
1305
|
+
var mirrorCenter = 1 / 6;
|
|
1306
|
+
if (toolObj.userData.canMirror && distanceFromToolButton(mirrorCenter) <= TOOL_HIT_RADIUS) {
|
|
1307
|
+
transflag = 4;
|
|
1308
|
+
} else if (distanceFromToolButton(moveCenter) <= TOOL_HIT_RADIUS) {
|
|
1250
1309
|
transflag = 2;
|
|
1251
|
-
} else {
|
|
1252
|
-
|
|
1253
|
-
// rotation icon selected
|
|
1254
|
-
if (distance <= 20) {
|
|
1255
|
-
transflag = 0;
|
|
1256
|
-
}
|
|
1310
|
+
} else if (distanceFromToolButton(rotateCenter) <= TOOL_HIT_RADIUS) {
|
|
1311
|
+
transflag = 0;
|
|
1257
1312
|
}
|
|
1258
1313
|
}
|
|
1259
1314
|
if (intersects.length > 0) {
|
|
@@ -1272,6 +1327,19 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1272
1327
|
}
|
|
1273
1328
|
}
|
|
1274
1329
|
if (_this2.props.state.mode == MODE_DRAWING_ITEM_3D) return;
|
|
1330
|
+
if (isSelected && transflag == 4 && (_selectedObject = selectedObject) !== null && _selectedObject !== void 0 && _selectedObject.itemID) {
|
|
1331
|
+
var _this2$props$state$sc;
|
|
1332
|
+
var selectedItem = (_this2$props$state$sc = _this2.props.state.scene.getIn(['layers', selectedObject.layerID])) === null || _this2$props$state$sc === void 0 ? void 0 : _this2$props$state$sc.items.get(selectedObject.itemID);
|
|
1333
|
+
if (canMirrorItem(selectedItem)) {
|
|
1334
|
+
var mirrored = selectedItem.mirrored !== true;
|
|
1335
|
+
var mirroredItem = selectedItem.set('mirrored', mirrored);
|
|
1336
|
+
refreshToolObject(mirroredItem);
|
|
1337
|
+
_this2.context.itemsActions.toggleItemMirror(selectedObject.layerID, selectedObject.itemID, mirrored, _this2.props.onInternalEvent);
|
|
1338
|
+
cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
|
|
1339
|
+
bMirror = true;
|
|
1340
|
+
}
|
|
1341
|
+
return;
|
|
1342
|
+
}
|
|
1275
1343
|
if (isSelected) {
|
|
1276
1344
|
!_this2.props.downloadFlag && _this2.props.setToolbar('');
|
|
1277
1345
|
if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
|
|
@@ -1290,13 +1358,13 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1290
1358
|
}
|
|
1291
1359
|
if (selectedObject !== undefined) {
|
|
1292
1360
|
// get selected object from planData.sceneGraph
|
|
1293
|
-
var
|
|
1361
|
+
var _selectedItem = null;
|
|
1294
1362
|
switch (true) {
|
|
1295
1363
|
case 'itemID' in selectedObject:
|
|
1296
|
-
|
|
1364
|
+
_selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1297
1365
|
break;
|
|
1298
1366
|
case 'holeID' in selectedObject:
|
|
1299
|
-
|
|
1367
|
+
_selectedItem = planData.sceneGraph.layers[selectedObject.layerID].holes[selectedObject.holeID];
|
|
1300
1368
|
break;
|
|
1301
1369
|
default:
|
|
1302
1370
|
break;
|
|
@@ -1315,7 +1383,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1315
1383
|
offsetX: event.offsetX - 50,
|
|
1316
1384
|
offsetY: event.offsetY
|
|
1317
1385
|
}, alti);
|
|
1318
|
-
if (isUndefined(
|
|
1386
|
+
if (isUndefined(_selectedItem)) return;
|
|
1319
1387
|
var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1320
1388
|
lastAngle = 0;
|
|
1321
1389
|
angleObj.position.set(planData.plan.position.x + Point.x, selItem.category === 'lighting' ? -planData.plan.position.y - selItem.properties.get('height').get('length') : selItem.properties.get('altitude').get('length') + planData.plan.position.y, planData.plan.position.z - Point.y);
|
|
@@ -1344,7 +1412,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1344
1412
|
scene3D.remove(toolObj);
|
|
1345
1413
|
}
|
|
1346
1414
|
for (_i1 = 0; _i1 < intersects.length; _i1++) {
|
|
1347
|
-
if (
|
|
1415
|
+
if (_selectedItem != undefined && intersects[_i1].object.parent && intersects[_i1].object.parent.parent.userData.itemId === _selectedItem.userData.itemId) selectedFlag = true;
|
|
1348
1416
|
}
|
|
1349
1417
|
if (selectedFlag || toolIntersects.length > 0 && !isElevationView(mode)) {
|
|
1350
1418
|
cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
|
|
@@ -1361,18 +1429,24 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1361
1429
|
}
|
|
1362
1430
|
};
|
|
1363
1431
|
this.mouseUpEvent = function (event) {
|
|
1364
|
-
var
|
|
1432
|
+
var _selectedObject2;
|
|
1365
1433
|
var internalType = ''; // internalEvent type - select/drag/draw
|
|
1366
1434
|
var selectedElement; // internalEvent data
|
|
1367
1435
|
firstMove = 0;
|
|
1368
1436
|
var altitude = 0;
|
|
1369
|
-
var curLayer = _this2.props.state.scene.getIn(['layers', (
|
|
1437
|
+
var curLayer = _this2.props.state.scene.getIn(['layers', (_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.layerID]);
|
|
1370
1438
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
1371
1439
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1372
1440
|
altitude = properties.getIn(['altitude', '_length']);
|
|
1373
1441
|
var unit = properties.getIn(['altitude', '_unit']) || 'in';
|
|
1374
1442
|
altitude = convert(altitude).from(unit).to(_this2.props.state.scene.unit);
|
|
1375
1443
|
}
|
|
1444
|
+
if (bMirror) {
|
|
1445
|
+
bMirror = false;
|
|
1446
|
+
cameraControls.mouseButtons.left = CameraControls.ACTION.ROTATE;
|
|
1447
|
+
event.preventDefault();
|
|
1448
|
+
return;
|
|
1449
|
+
}
|
|
1376
1450
|
scene3D.remove(angleObj);
|
|
1377
1451
|
scene3D.remove(toolObj);
|
|
1378
1452
|
if (!_this2.props.downloadFlag && !_this2.props.state.mode.includes('ING')) {
|
|
@@ -1481,10 +1555,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1481
1555
|
}
|
|
1482
1556
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1483
1557
|
var addItemToolObj = function addItemToolObj() {
|
|
1484
|
-
var _planData$sceneGraph,
|
|
1485
|
-
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[(
|
|
1558
|
+
var _planData$sceneGraph, _selectedObject3, _intersects$_i;
|
|
1559
|
+
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[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.itemID];
|
|
1486
1560
|
if (isUndefined(selectedItem)) return;
|
|
1487
1561
|
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1562
|
+
refreshToolObject(selectedElement);
|
|
1488
1563
|
var itemPos = selectedItem.position.clone();
|
|
1489
1564
|
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) {
|
|
1490
1565
|
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
@@ -1584,7 +1659,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1584
1659
|
selectedObj = allItemRect.cur;
|
|
1585
1660
|
}
|
|
1586
1661
|
} else {
|
|
1587
|
-
var _planData$sceneGraph2,
|
|
1662
|
+
var _planData$sceneGraph2, _selectedObject4, _selectedObject5;
|
|
1588
1663
|
visibleTransformBox(false);
|
|
1589
1664
|
var alti = 0;
|
|
1590
1665
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1594,8 +1669,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1594
1669
|
alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1595
1670
|
}
|
|
1596
1671
|
getPoint(event, alti);
|
|
1597
|
-
var
|
|
1598
|
-
if (isSelected && !isEmpty(
|
|
1672
|
+
var _selectedItem2 = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject4 = selectedObject) === null || _selectedObject4 === void 0 ? void 0 : _selectedObject4.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject5 = selectedObject) === null || _selectedObject5 === void 0 ? void 0 : _selectedObject5.itemID];
|
|
1673
|
+
if (isSelected && !isEmpty(_selectedItem2)) addItemToolObj();
|
|
1599
1674
|
if (bRotate) {
|
|
1600
1675
|
_this2.setState({
|
|
1601
1676
|
toolObj: toolObj
|
|
@@ -2094,6 +2169,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2094
2169
|
_this2.context.itemsActions.setMoveStatus(false);
|
|
2095
2170
|
_this2.context.itemsActions.setRotateStatus(false);
|
|
2096
2171
|
bMoveUP = false;
|
|
2172
|
+
bMirror = false;
|
|
2097
2173
|
removeSnapBox();
|
|
2098
2174
|
break;
|
|
2099
2175
|
case 65:
|
|
@@ -2177,6 +2253,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2177
2253
|
currentObject = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
2178
2254
|
if (isUndefined(currentObject)) return;
|
|
2179
2255
|
var selItem = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
2256
|
+
refreshToolObject(selItem);
|
|
2180
2257
|
var itemPos = currentObject.position.clone();
|
|
2181
2258
|
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 + currentObject.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
2182
2259
|
scene3D.add(toolObj);
|
|
@@ -2521,6 +2598,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2521
2598
|
}
|
|
2522
2599
|
if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
|
|
2523
2600
|
var changedValues = diff(this.props.state.scene, nextProps.state.scene);
|
|
2601
|
+
var changedValuesJS = changedValues.toJS();
|
|
2602
|
+
var selectedItemID = layer.selected.items.size ? layer.selected.items.get(0) : null;
|
|
2603
|
+
var selectedItem = selectedItemID ? layer.items.get(selectedItemID) : null;
|
|
2604
|
+
var shouldRefreshSelectedToolObject = selectedItem && changedValuesJS.some(function (_ref2) {
|
|
2605
|
+
var path = _ref2.path;
|
|
2606
|
+
var modifiedPath = path.split('/');
|
|
2607
|
+
return modifiedPath[1] === 'layers' && modifiedPath[2] === String(data.selectedLayer) && modifiedPath[3] === 'items' && modifiedPath[4] === String(selectedItemID) && modifiedPath[5] === 'mirrored';
|
|
2608
|
+
});
|
|
2524
2609
|
prepareSnapSpec(layer);
|
|
2525
2610
|
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;
|
|
2526
2611
|
if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
|
|
@@ -2553,8 +2638,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2553
2638
|
var _this$state = this.state,
|
|
2554
2639
|
toolObj = _this$state.toolObj,
|
|
2555
2640
|
angleObj = _this$state.angleObj;
|
|
2556
|
-
var _updateScene = updateScene(this.planData, nextProps.state.scene, this.props.state.scene,
|
|
2641
|
+
var _updateScene = updateScene(this.planData, nextProps.state.scene, this.props.state.scene, changedValuesJS, actions, this.context.catalog, nextProps.state.mode, toolObj, angleObj, nextProps.state.draggingSupport),
|
|
2557
2642
|
promise = _updateScene.promise;
|
|
2643
|
+
if (shouldRefreshSelectedToolObject && this.refreshToolObject) {
|
|
2644
|
+
this.refreshToolObject(selectedItem);
|
|
2645
|
+
}
|
|
2558
2646
|
self.setState();
|
|
2559
2647
|
promise.then(function (p1Value) {
|
|
2560
2648
|
self.setState({
|
package/es/constants.js
CHANGED
|
@@ -79,6 +79,7 @@ export var END_LOADING = 'END_LOADING';
|
|
|
79
79
|
export var TOGGLE_LOADING_CABINET = 'TOGGLE_LOADING_CABINET';
|
|
80
80
|
export var EDIT_WIDTH = 'EDIT_WIDTH';
|
|
81
81
|
export var DUPLICATE_SELECTED = 'DUPLICATE_SELECTED';
|
|
82
|
+
export var TOGGLE_ITEM_MIRROR = 'TOGGLE_ITEM_MIRROR';
|
|
82
83
|
export var REPLACE_ITEM = 'REPLACE_ITEM';
|
|
83
84
|
export var SELECT_TOOL_DRAWING_ITEM = 'SELECT_TOOL_DRAWING_ITEM';
|
|
84
85
|
export var SELECT_TOOL_DRAWING_ITEM_3D = 'SELECT_TOOL_DRAWING_ITEM_3D';
|
|
@@ -313,6 +314,7 @@ export var ITEMS_ACTIONS = {
|
|
|
313
314
|
// SET_MOVE_STATUS,
|
|
314
315
|
// SET_ROTATE_STATUS,
|
|
315
316
|
DUPLICATE_SELECTED: DUPLICATE_SELECTED,
|
|
317
|
+
TOGGLE_ITEM_MIRROR: TOGGLE_ITEM_MIRROR,
|
|
316
318
|
EDIT_WIDTH: EDIT_WIDTH,
|
|
317
319
|
TOGGLE_LOADING_CABINET: TOGGLE_LOADING_CABINET,
|
|
318
320
|
END_LOADING: END_LOADING,
|
|
@@ -744,6 +746,7 @@ export var EXTERNAL_EVENT_PROJECT_SETTING = 'EXTERNAL_EVENT_PROJECT_SETTING'; //
|
|
|
744
746
|
export var EXTERNAL_EVENT_CENTERING_2D = 'EXTERNAL_EVENT_CENTERING_2D';
|
|
745
747
|
export var EXTERNAL_EVENT_DUPLICATE_ELEMENT = 'EXTERNAL_EVENT_DUPLICATE_ELEMENT';
|
|
746
748
|
export var EXTERNAL_EVENT_DELETE_ELEMENT = 'EXTERNAL_EVENT_DELETE_ELEMENT';
|
|
749
|
+
export var EXTERNAL_EVENT_MIRROR_ELEMENT = 'EXTERNAL_EVENT_MIRROR_ELEMENT';
|
|
747
750
|
export var EXTERNAL_EVENT_UPDATE_ATTRIBUTE = 'EXTERNAL_EVENT_UPDATE_ATTRIBUTE'; // update the element's attributes (distance, rotation...) in the property window
|
|
748
751
|
export var EXTERNAL_EVENT_UPDATE_PROPERTY = 'EXTERNAL_EVENT_UPDATE_PROPERTY'; // update the element's property (flip_doorhandle, open_doors...) in the property window
|
|
749
752
|
export var EXTERNAL_EVENT_REPLACE_CABINET = 'EXTERNAL_EVENT_REPLACE_CABINET';
|
|
@@ -756,6 +759,7 @@ export var INTERNAL_EVENT_SELECT_ELEMENT = 'INTERNAL_EVENT_SELECT_ELEMENT';
|
|
|
756
759
|
export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
|
|
757
760
|
export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
|
|
758
761
|
export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
|
|
762
|
+
export var INTERNAL_EVENT_MIRROR_ELEMENT = 'INTERNAL_EVENT_MIRROR_ELEMENT';
|
|
759
763
|
export var INTERNAL_EVENT_REPLACE_CABINET = 'INTERNAL_EVENT_REPLACE_CABINET';
|
|
760
764
|
export var INTERNAL_EVENT_START_DRAW_WALL = 'INTERNAL_EVENT_START_DRAW_WALL';
|
|
761
765
|
export var INTERNAL_EVENT_TOGGLE_TO_ELEVATION = 'INTERNAL_EVENT_TOGGLE_TO_ELEVATION';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
-
import { ARRAY_3D_MODES, DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE, DOORSTYLE_SCOPE_SINGLE, DEFAULT_MOLDING_PIECE_LENGTH, EXTERNAL_EVENT_ADD_HOLE, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_CENTERING_2D, EXTERNAL_EVENT_DELETE_ELEMENT, EXTERNAL_EVENT_DUPLICATE_ELEMENT, EXTERNAL_EVENT_LOAD_PROJECT, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_PROJECT_SETTING, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_REPLACE_CABINET, EXTERNAL_EVENT_ROTATE_PAN, EXTERNAL_EVENT_SET_FINISHING, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, EXTERNAL_EVENT_UPDATE_PROPERTY, INTERNAL_EVENT_ITEMS_CATALOG, INTERNAL_EVENT_SYNC_SCENE, MODE_ELEVATION_VIEW, MODE_IDLE, MODE_IDLE_3D } from "../../constants";
|
|
3
|
+
import { ARRAY_3D_MODES, DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE, DOORSTYLE_SCOPE_SINGLE, DEFAULT_MOLDING_PIECE_LENGTH, EXTERNAL_EVENT_ADD_HOLE, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_CENTERING_2D, EXTERNAL_EVENT_DELETE_ELEMENT, EXTERNAL_EVENT_DUPLICATE_ELEMENT, EXTERNAL_EVENT_MIRROR_ELEMENT, EXTERNAL_EVENT_LOAD_PROJECT, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_PROJECT_SETTING, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_REPLACE_CABINET, EXTERNAL_EVENT_ROTATE_PAN, EXTERNAL_EVENT_SET_FINISHING, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, EXTERNAL_EVENT_UPDATE_PROPERTY, INTERNAL_EVENT_ITEMS_CATALOG, INTERNAL_EVENT_SYNC_SCENE, MODE_ELEVATION_VIEW, MODE_IDLE, MODE_IDLE_3D } from "../../constants";
|
|
4
4
|
import { isEmpty } from "../../utils/helper";
|
|
5
5
|
import { mapExternalEventPayload } from "../../mappings/external-events/mapExternalEventPayload";
|
|
6
6
|
import { ccdfMapper } from "../../mappings/external-events/mappers/ccdfMapper";
|
|
@@ -17,7 +17,7 @@ import { handleAddWall } from "./handlers.wall";
|
|
|
17
17
|
import { handleAddHole } from "./handlers.hole";
|
|
18
18
|
import { handleAddRoomShape } from "./handlers.roomShape";
|
|
19
19
|
import { handleSetMolding } from "./handlers.molding";
|
|
20
|
-
import { handleDuplicateElement, handleDeleteElement } from "./handlers.elementOps";
|
|
20
|
+
import { handleDuplicateElement, handleDeleteElement, handleMirrorElement } from "./handlers.elementOps";
|
|
21
21
|
import { handleReplaceCabinet } from "./handlers.replaceCabinet";
|
|
22
22
|
import { handleSyncScene } from "./handlers.syncScene";
|
|
23
23
|
import { handleLoadProjectEvent } from "./handlers.loadProject";
|
|
@@ -46,92 +46,95 @@ function _handleExternalEvent() {
|
|
|
46
46
|
layerId = state.getIn(['scene', 'selectedLayer']);
|
|
47
47
|
layer = state.getIn(['scene', 'layers', layerId]);
|
|
48
48
|
_t = evt === null || evt === void 0 ? void 0 : evt.type;
|
|
49
|
-
_context.next = _t === EXTERNAL_EVENT_LOAD_PROJECT ? 2 : _t === EXTERNAL_EVENT_TOGGLE_TO_3D ? 4 : _t === EXTERNAL_EVENT_TOGGLE_TO_2D ? 5 : _t === EXTERNAL_EVENT_TOGGLE_TO_ELEVATION ? 6 : _t === EXTERNAL_EVENT_ADD_WALL ? 7 : _t === EXTERNAL_EVENT_ADD_ITEM ? 8 : _t === EXTERNAL_EVENT_ADD_HOLE ? 10 : _t === EXTERNAL_EVENT_ROTATE_PAN ? 11 : _t === EXTERNAL_EVENT_MOVE_PAN ? 11 : _t === EXTERNAL_EVENT_NEW_PROJECT ? 12 : _t === EXTERNAL_EVENT_CHANGE_DOORSTYLE ? 13 : _t === EXTERNAL_EVENT_ADD_ROOM_SHAPE ? 15 : _t === EXTERNAL_EVENT_ZOOM_IN ? 16 : _t === EXTERNAL_EVENT_ZOOM_OUT ? 17 : _t === EXTERNAL_EVENT_CENTERING_2D ? 18 : _t === EXTERNAL_EVENT_UNDO ? 19 : _t === EXTERNAL_EVENT_REDO ? 20 : _t === EXTERNAL_EVENT_SET_MOLDING ? 21 : _t === EXTERNAL_EVENT_DUPLICATE_ELEMENT ? 23 : _t === EXTERNAL_EVENT_DELETE_ELEMENT ? 24 : _t ===
|
|
49
|
+
_context.next = _t === EXTERNAL_EVENT_LOAD_PROJECT ? 2 : _t === EXTERNAL_EVENT_TOGGLE_TO_3D ? 4 : _t === EXTERNAL_EVENT_TOGGLE_TO_2D ? 5 : _t === EXTERNAL_EVENT_TOGGLE_TO_ELEVATION ? 6 : _t === EXTERNAL_EVENT_ADD_WALL ? 7 : _t === EXTERNAL_EVENT_ADD_ITEM ? 8 : _t === EXTERNAL_EVENT_ADD_HOLE ? 10 : _t === EXTERNAL_EVENT_ROTATE_PAN ? 11 : _t === EXTERNAL_EVENT_MOVE_PAN ? 11 : _t === EXTERNAL_EVENT_NEW_PROJECT ? 12 : _t === EXTERNAL_EVENT_CHANGE_DOORSTYLE ? 13 : _t === EXTERNAL_EVENT_ADD_ROOM_SHAPE ? 15 : _t === EXTERNAL_EVENT_ZOOM_IN ? 16 : _t === EXTERNAL_EVENT_ZOOM_OUT ? 17 : _t === EXTERNAL_EVENT_CENTERING_2D ? 18 : _t === EXTERNAL_EVENT_UNDO ? 19 : _t === EXTERNAL_EVENT_REDO ? 20 : _t === EXTERNAL_EVENT_SET_MOLDING ? 21 : _t === EXTERNAL_EVENT_DUPLICATE_ELEMENT ? 23 : _t === EXTERNAL_EVENT_DELETE_ELEMENT ? 24 : _t === EXTERNAL_EVENT_MIRROR_ELEMENT ? 25 : _t === EXTERNAL_EVENT_PROJECT_SETTING ? 26 : _t === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? 27 : _t === EXTERNAL_EVENT_UPDATE_PROPERTY ? 27 : _t === EXTERNAL_EVENT_REPLACE_CABINET ? 28 : _t === EXTERNAL_EVENT_SET_FINISHING ? 30 : _t === EXTERNAL_EVENT_SYNC_SCENE ? 31 : 32;
|
|
50
50
|
break;
|
|
51
51
|
case 2:
|
|
52
52
|
_context.next = 3;
|
|
53
53
|
return handleLoadProjectEvent(props, state, evt, mapFromCCDFToCDS, updateProjectWithCDSList, ccdfMapper, mergeSameElements, addItemToCatalog);
|
|
54
54
|
case 3:
|
|
55
|
-
return _context.abrupt("continue",
|
|
55
|
+
return _context.abrupt("continue", 32);
|
|
56
56
|
case 4:
|
|
57
57
|
handleToggleTo3D(props, MODE_IDLE_3D);
|
|
58
|
-
return _context.abrupt("continue",
|
|
58
|
+
return _context.abrupt("continue", 32);
|
|
59
59
|
case 5:
|
|
60
60
|
handleToggleTo2D(props, MODE_IDLE);
|
|
61
|
-
return _context.abrupt("continue",
|
|
61
|
+
return _context.abrupt("continue", 32);
|
|
62
62
|
case 6:
|
|
63
63
|
handleToggleToElevation(props, layer, MODE_ELEVATION_VIEW);
|
|
64
|
-
return _context.abrupt("continue",
|
|
64
|
+
return _context.abrupt("continue", 32);
|
|
65
65
|
case 7:
|
|
66
66
|
handleAddWall(props, state);
|
|
67
|
-
return _context.abrupt("continue",
|
|
67
|
+
return _context.abrupt("continue", 32);
|
|
68
68
|
case 8:
|
|
69
69
|
_context.next = 9;
|
|
70
70
|
return handleAddItemEvent(props, state, evt === null || evt === void 0 ? void 0 : evt.payload, addItemToCatalog, isEmpty, ARRAY_3D_MODES);
|
|
71
71
|
case 9:
|
|
72
|
-
return _context.abrupt("continue",
|
|
72
|
+
return _context.abrupt("continue", 32);
|
|
73
73
|
case 10:
|
|
74
74
|
handleAddHole(props, state, evt === null || evt === void 0 ? void 0 : evt.payload);
|
|
75
|
-
return _context.abrupt("continue",
|
|
75
|
+
return _context.abrupt("continue", 32);
|
|
76
76
|
case 11:
|
|
77
77
|
handleMoveAndRotatePan2D3D(evt.type, props, evt.payload, state);
|
|
78
|
-
return _context.abrupt("continue",
|
|
78
|
+
return _context.abrupt("continue", 32);
|
|
79
79
|
case 12:
|
|
80
80
|
handleNewProject(props);
|
|
81
|
-
return _context.abrupt("continue",
|
|
81
|
+
return _context.abrupt("continue", 32);
|
|
82
82
|
case 13:
|
|
83
83
|
_context.next = 14;
|
|
84
84
|
return handleChangeDoorStyleEvent(props, state, layer, evt.payload, DOORSTYLE_SCOPE_SINGLE, DOORSTYLE_SCOPE_MULTIPLE, DOORSTYLE_SCOPE_ALL, INTERNAL_EVENT_ITEMS_CATALOG, mapFromCCDFToCDS, ccdfMapper, mergeSameElements, addItemToCatalog);
|
|
85
85
|
case 14:
|
|
86
|
-
return _context.abrupt("continue",
|
|
86
|
+
return _context.abrupt("continue", 32);
|
|
87
87
|
case 15:
|
|
88
88
|
handleAddRoomShape(props, evt.payload);
|
|
89
|
-
return _context.abrupt("continue",
|
|
89
|
+
return _context.abrupt("continue", 32);
|
|
90
90
|
case 16:
|
|
91
91
|
handleZoomIn(props, state);
|
|
92
|
-
return _context.abrupt("continue",
|
|
92
|
+
return _context.abrupt("continue", 32);
|
|
93
93
|
case 17:
|
|
94
94
|
handleZoomOut(props, state);
|
|
95
|
-
return _context.abrupt("continue",
|
|
95
|
+
return _context.abrupt("continue", 32);
|
|
96
96
|
case 18:
|
|
97
97
|
handleCentering2D(props, state);
|
|
98
|
-
return _context.abrupt("continue",
|
|
98
|
+
return _context.abrupt("continue", 32);
|
|
99
99
|
case 19:
|
|
100
100
|
handleUndo(props);
|
|
101
|
-
return _context.abrupt("continue",
|
|
101
|
+
return _context.abrupt("continue", 32);
|
|
102
102
|
case 20:
|
|
103
103
|
handleRedo(props);
|
|
104
|
-
return _context.abrupt("continue",
|
|
104
|
+
return _context.abrupt("continue", 32);
|
|
105
105
|
case 21:
|
|
106
106
|
_context.next = 22;
|
|
107
107
|
return handleSetMolding(props, loadMoldingSvg, evt.payload);
|
|
108
108
|
case 22:
|
|
109
|
-
return _context.abrupt("continue",
|
|
109
|
+
return _context.abrupt("continue", 32);
|
|
110
110
|
case 23:
|
|
111
111
|
handleDuplicateElement(props, getElement, evt.payload, state);
|
|
112
|
-
return _context.abrupt("continue",
|
|
112
|
+
return _context.abrupt("continue", 32);
|
|
113
113
|
case 24:
|
|
114
114
|
handleDeleteElement(props, getElement, evt.payload, state);
|
|
115
|
-
return _context.abrupt("continue",
|
|
115
|
+
return _context.abrupt("continue", 32);
|
|
116
116
|
case 25:
|
|
117
|
-
|
|
118
|
-
return _context.abrupt("continue",
|
|
117
|
+
handleMirrorElement(props, getElement, evt.payload, state);
|
|
118
|
+
return _context.abrupt("continue", 32);
|
|
119
119
|
case 26:
|
|
120
|
-
|
|
121
|
-
return _context.abrupt("continue",
|
|
120
|
+
handleProjectSetting(props, evt.payload, layer);
|
|
121
|
+
return _context.abrupt("continue", 32);
|
|
122
122
|
case 27:
|
|
123
|
-
|
|
124
|
-
return
|
|
123
|
+
handleUpdateSelectedElementsEvent(props, state, evt, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, updateAttributeOfSelectedElement, updatePropertyOfSelectedElement);
|
|
124
|
+
return _context.abrupt("continue", 32);
|
|
125
125
|
case 28:
|
|
126
|
-
|
|
126
|
+
_context.next = 29;
|
|
127
|
+
return handleReplaceCabinet(props, addItemToCatalog, evt === null || evt === void 0 ? void 0 : evt.payload, state);
|
|
127
128
|
case 29:
|
|
128
|
-
|
|
129
|
-
return _context.abrupt("continue", 31);
|
|
129
|
+
return _context.abrupt("continue", 32);
|
|
130
130
|
case 30:
|
|
131
|
+
handleSetFinishing(props, state, evt.payload);
|
|
132
|
+
return _context.abrupt("continue", 32);
|
|
133
|
+
case 31:
|
|
131
134
|
console.log('*** catalog ***', props.catalog);
|
|
132
135
|
handleSyncScene(props, state, layer, layerId, getMoldingDataOfScene2, computeSkinPanels, DEFAULT_MOLDING_PIECE_LENGTH, INTERNAL_EVENT_SYNC_SCENE);
|
|
133
|
-
return _context.abrupt("continue",
|
|
134
|
-
case
|
|
136
|
+
return _context.abrupt("continue", 32);
|
|
137
|
+
case 32:
|
|
135
138
|
case "end":
|
|
136
139
|
return _context.stop();
|
|
137
140
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { canMirrorCabinet } from "../../shared/domain/cabinet-mirror";
|
|
1
2
|
export function handleDuplicateElement(props, getElement, payload, state) {
|
|
2
3
|
var distElement = getElement(payload, state);
|
|
3
4
|
if (distElement) props.itemsActions.duplicateSelected(distElement, props.onInternalEvent);
|
|
@@ -5,4 +6,11 @@ export function handleDuplicateElement(props, getElement, payload, state) {
|
|
|
5
6
|
export function handleDeleteElement(props, getElement, payload, state) {
|
|
6
7
|
var distElement = getElement(payload, state);
|
|
7
8
|
if (distElement) props.projectActions.remove(distElement);
|
|
9
|
+
}
|
|
10
|
+
export function handleMirrorElement(props, getElement, payload, state) {
|
|
11
|
+
var distElement = getElement(payload, state);
|
|
12
|
+
if (!distElement || distElement.prototype !== 'items' || !canMirrorCabinet(distElement)) return;
|
|
13
|
+
var layerID = state.getIn(['scene', 'selectedLayer']);
|
|
14
|
+
var mirrored = typeof (payload === null || payload === void 0 ? void 0 : payload.mirrored) === 'boolean' ? payload.mirrored : null;
|
|
15
|
+
props.itemsActions.toggleItemMirror(layerID, distElement.id, mirrored, props.onInternalEvent);
|
|
8
16
|
}
|
|
@@ -4,10 +4,10 @@ import { mapAddItemEvent } from "./mappers/addItemMapper";
|
|
|
4
4
|
import { mapChangeDoorStyleEvent } from "./mappers/changeDoorStyleMapper";
|
|
5
5
|
import { mapLoadProjectEvent } from "./mappers/loadProjectMapper";
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* Main dispatcher for external event payload mapping.
|
|
9
|
-
* Converts new API formats into legacy internal formats (e.g. assets3d -> structure_json)
|
|
10
|
-
* without changing the behavior of the existing 3D tool.
|
|
7
|
+
/**
|
|
8
|
+
* Main dispatcher for external event payload mapping.
|
|
9
|
+
* Converts new API formats into legacy internal formats (e.g. assets3d -> structure_json)
|
|
10
|
+
* without changing the behavior of the existing 3D tool.
|
|
11
11
|
*/
|
|
12
12
|
export function mapExternalEventPayload(evt, state, defaultTextures) {
|
|
13
13
|
if (isEmpty(evt)) return null;
|
|
@@ -5,15 +5,15 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
5
5
|
import { ITEM_TYPE } from "../../../constants";
|
|
6
6
|
import { isEmpty } from "../../../utils/helper";
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* Mapping logic for EXTERNAL_EVENT_ADD_ITEM.
|
|
10
|
-
*
|
|
11
|
-
* Converts the new assets3d payload shape into the legacy structure_json format
|
|
12
|
-
* expected by the existing 3D tool.
|
|
13
|
-
*
|
|
14
|
-
* @param {Object} evt.payload External event payload
|
|
15
|
-
* @param {Immutable.Map} state Planner state
|
|
16
|
-
* @returns {Object|null} Updated event (or null when payload is empty)
|
|
8
|
+
/**
|
|
9
|
+
* Mapping logic for EXTERNAL_EVENT_ADD_ITEM.
|
|
10
|
+
*
|
|
11
|
+
* Converts the new assets3d payload shape into the legacy structure_json format
|
|
12
|
+
* expected by the existing 3D tool.
|
|
13
|
+
*
|
|
14
|
+
* @param {Object} evt.payload External event payload
|
|
15
|
+
* @param {Immutable.Map} state Planner state
|
|
16
|
+
* @returns {Object|null} Updated event (or null when payload is empty)
|
|
17
17
|
*/
|
|
18
18
|
export function mapAddItemEvent(orgEvtPayload, state) {
|
|
19
19
|
var _evtPayload, _evtPayload3;
|
package/es/models.js
CHANGED
|
@@ -208,6 +208,8 @@ export var Item = /*#__PURE__*/function (_Record7) {
|
|
|
208
208
|
uri: ''
|
|
209
209
|
},
|
|
210
210
|
molding: [],
|
|
211
|
+
can_be_mirrored: false,
|
|
212
|
+
mirrored: false,
|
|
211
213
|
isInitialPos: false,
|
|
212
214
|
//current {x,y} is the initial position from host?
|
|
213
215
|
backsplashVisible: false,
|
|
@@ -356,6 +358,8 @@ export var CatalogElement = /*#__PURE__*/function (_Record1) {
|
|
|
356
358
|
type: '',
|
|
357
359
|
cds: new Map(),
|
|
358
360
|
ccdf_list: new List(),
|
|
361
|
+
can_be_mirrored: false,
|
|
362
|
+
mirrored: false,
|
|
359
363
|
structure_json: {},
|
|
360
364
|
gltf: ''
|
|
361
365
|
}, 'CatalogElement'));
|