kitchen-simulator 4.0.2-react-18 → 4.0.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/README.md +3 -0
- package/es/AppContext.js +1 -1
- package/es/LiteKitchenConfigurator.js +165 -107
- package/es/LiteRenderer.js +161 -129
- 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 +18 -12
- package/es/class/hole.js +0 -2
- package/es/class/item.js +95 -69
- 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 +11 -22
- 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/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 +4 -1
- package/es/components/viewer2d/state.js +1 -1
- package/es/components/viewer2d/utils.js +2 -2
- package/es/components/viewer2d/viewer2d.js +51 -84
- package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/es/components/viewer3d/scene-creator.js +51 -15
- package/es/components/viewer3d/viewer3d-first-person.js +8 -0
- package/es/components/viewer3d/viewer3d.js +80 -88
- package/es/constants.js +6 -2
- package/es/devLiteRenderer.js +491 -150
- package/es/index.js +567 -25
- package/es/models.js +2 -1
- 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 +64 -106
- package/es/utils/helper.js +38 -1
- package/es/utils/isolate-event-handler.js +824 -605
- package/es/utils/molding.js +457 -11
- package/lib/AppContext.js +1 -1
- package/lib/LiteKitchenConfigurator.js +164 -107
- package/lib/LiteRenderer.js +160 -129
- 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 +18 -12
- package/lib/class/hole.js +0 -2
- package/lib/class/item.js +93 -67
- 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 +11 -22
- 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/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 +4 -1
- package/lib/components/viewer2d/state.js +1 -1
- package/lib/components/viewer2d/utils.js +2 -2
- package/lib/components/viewer2d/viewer2d.js +49 -81
- package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/lib/components/viewer3d/scene-creator.js +49 -13
- package/lib/components/viewer3d/viewer3d-first-person.js +8 -0
- package/lib/components/viewer3d/viewer3d.js +77 -84
- package/lib/constants.js +11 -7
- package/lib/devLiteRenderer.js +489 -148
- package/lib/index.js +567 -25
- package/lib/models.js +2 -1
- 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 +64 -106
- package/lib/utils/helper.js +40 -1
- package/lib/utils/isolate-event-handler.js +824 -604
- package/lib/utils/molding.js +458 -9
- package/package.json +21 -16
- 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
|
@@ -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 =
|
|
954
|
+
var dist = convert(intersects[i].distance).from('cm').to('in');
|
|
927
955
|
if (dist > 3) {
|
|
928
|
-
var _canvas =
|
|
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 =
|
|
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
|
|
1179
|
-
var
|
|
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 =
|
|
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) {
|
|
@@ -298,4 +298,12 @@ Viewer3DFirstPerson.propTypes = {
|
|
|
298
298
|
state: PropTypes.object.isRequired,
|
|
299
299
|
width: PropTypes.number.isRequired,
|
|
300
300
|
height: PropTypes.number.isRequired
|
|
301
|
+
};
|
|
302
|
+
Viewer3DFirstPerson.contextTypes = {
|
|
303
|
+
areaActions: PropTypes.object.isRequired,
|
|
304
|
+
holesActions: PropTypes.object.isRequired,
|
|
305
|
+
itemsActions: PropTypes.object.isRequired,
|
|
306
|
+
linesActions: PropTypes.object.isRequired,
|
|
307
|
+
projectActions: PropTypes.object.isRequired,
|
|
308
|
+
catalog: PropTypes.object
|
|
301
309
|
};
|
|
@@ -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) {
|
|
@@ -2536,10 +2516,13 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2536
2516
|
if (nextProps.state.scene !== this.props.state.scene || nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') !== this.props.state.doorStyle.get('name')) {
|
|
2537
2517
|
var changedValues = diff(this.props.state.scene, nextProps.state.scene);
|
|
2538
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;
|
|
2539
2520
|
if (nextProps.state.doorStyle && nextProps.state.doorStyle.get('name') === this.props.state.doorStyle.get('name')) {
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2521
|
+
if (!isInteractiveMove) {
|
|
2522
|
+
self.setState({
|
|
2523
|
+
isLoading: true
|
|
2524
|
+
});
|
|
2525
|
+
}
|
|
2543
2526
|
if (self.props.downloadFlag) {
|
|
2544
2527
|
self.setState({
|
|
2545
2528
|
waitForRender: 0
|
|
@@ -2665,4 +2648,13 @@ Scene3DViewer.propTypes = {
|
|
|
2665
2648
|
width: PropTypes.number.isRequired,
|
|
2666
2649
|
height: PropTypes.number.isRequired,
|
|
2667
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
|
|
2668
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',
|