kitchen-simulator 4.3.5 → 4.3.7
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 +3 -2
- package/es/class/item.js +34 -29
- package/es/components/viewer3d/scene-creator.js +34 -37
- package/es/constants.js +4 -1
- package/es/devLiteRenderer.js +2 -2
- package/es/reducers/items-reducer.js +1 -1
- package/es/utils/geometry.js +42 -6
- package/es/utils/isolate-event-handler.js +113 -87
- package/lib/actions/items-actions.js +3 -2
- package/lib/class/item.js +33 -28
- package/lib/components/viewer3d/scene-creator.js +34 -37
- package/lib/constants.js +9 -6
- package/lib/devLiteRenderer.js +1 -1
- package/lib/reducers/items-reducer.js +1 -1
- package/lib/utils/geometry.js +42 -6
- package/lib/utils/isolate-event-handler.js +112 -86
- package/package.json +1 -1
|
@@ -227,12 +227,13 @@ export function updateItemsAltitude(layerID, itemID, value) {
|
|
|
227
227
|
value: value
|
|
228
228
|
};
|
|
229
229
|
}
|
|
230
|
-
export function setDoorStyle(doorStyle, itemCDS,
|
|
230
|
+
export function setDoorStyle(doorStyle, itemCDS, applyScope, itemIds) {
|
|
231
231
|
return {
|
|
232
232
|
type: SET_DOOR_STYLE,
|
|
233
233
|
doorStyle: doorStyle,
|
|
234
234
|
itemCDS: itemCDS,
|
|
235
|
-
|
|
235
|
+
applyScope: applyScope,
|
|
236
|
+
itemIds: itemIds
|
|
236
237
|
};
|
|
237
238
|
}
|
|
238
239
|
export function setCounterTop(counterTop) {
|
package/es/class/item.js
CHANGED
|
@@ -8,7 +8,7 @@ import { convert } from "../utils/convert-units-lite";
|
|
|
8
8
|
import { Group, Hole, Layer } from "./export";
|
|
9
9
|
import { GeometryUtils, IDBroker, MoldingUtils, NameGenerator } from "../utils/export";
|
|
10
10
|
import { fromJS, Map } from 'immutable';
|
|
11
|
-
import { INSTALLATION_SUFFIX_TYPE, INTERNAL_EVENT_DRAW_ELEMENT, MODE_DRAGGING_ITEM, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM, MODE_ROTATING_ITEM_3D, MOLDING_LOCATIONS } from "../constants";
|
|
11
|
+
import { DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE, DOORSTYLE_SCOPE_SINGLE, INSTALLATION_SUFFIX_TYPE, INTERNAL_EVENT_DRAW_ELEMENT, MODE_DRAGGING_ITEM, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM, MODE_ROTATING_ITEM_3D, MOLDING_LOCATIONS } from "../constants";
|
|
12
12
|
import { debugUtil, updatePayloadOfInternalEvent } from "../utils/helper";
|
|
13
13
|
import { isUndefined } from 'util';
|
|
14
14
|
import { hasMoldingLayout } from "../utils/molding";
|
|
@@ -1161,8 +1161,9 @@ var Item = /*#__PURE__*/function () {
|
|
|
1161
1161
|
}
|
|
1162
1162
|
}, {
|
|
1163
1163
|
key: "setDoorStyle",
|
|
1164
|
-
value: function setDoorStyle(state, doorStyle, itemCDS,
|
|
1164
|
+
value: function setDoorStyle(state, doorStyle, itemCDS, applyScope) {
|
|
1165
1165
|
var _this2 = this;
|
|
1166
|
+
var targetItemIDs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
|
|
1166
1167
|
if (isEmpty(doorStyle)) return {
|
|
1167
1168
|
updatedState: state
|
|
1168
1169
|
};
|
|
@@ -1187,10 +1188,33 @@ var Item = /*#__PURE__*/function () {
|
|
|
1187
1188
|
});
|
|
1188
1189
|
});
|
|
1189
1190
|
state = state.setIn(['scene', 'layers', layerID, 'molding'], temp_layer_molding);
|
|
1190
|
-
|
|
1191
|
+
|
|
1192
|
+
// 🔥 Determine which items to update
|
|
1193
|
+
var items = state.scene.layers.get(layerID).items;
|
|
1194
|
+
var itemsToProcess = [];
|
|
1195
|
+
var idSet = null;
|
|
1196
|
+
if (applyScope === DOORSTYLE_SCOPE_SINGLE) {
|
|
1197
|
+
var selectedItemIds = state.scene.layers.getIn([layerID, 'selected', 'items']).toJS();
|
|
1198
|
+
idSet = new Set(selectedItemIds);
|
|
1199
|
+
}
|
|
1200
|
+
if (applyScope === DOORSTYLE_SCOPE_MULTIPLE) {
|
|
1201
|
+
// targetItemIds contains item.id (instance IDs)
|
|
1202
|
+
idSet = new Set(targetItemIDs);
|
|
1203
|
+
}
|
|
1204
|
+
if (applyScope === DOORSTYLE_SCOPE_ALL) {
|
|
1205
|
+
items.forEach(function (item) {
|
|
1206
|
+
itemsToProcess.push(item);
|
|
1207
|
+
});
|
|
1208
|
+
} else if (idSet) {
|
|
1209
|
+
items.forEach(function (item) {
|
|
1210
|
+
if (idSet.has(item.id)) {
|
|
1211
|
+
itemsToProcess.push(item);
|
|
1212
|
+
}
|
|
1213
|
+
});
|
|
1214
|
+
}
|
|
1191
1215
|
var setDoorStyleOfItem = function setDoorStyleOfItem(data) {
|
|
1192
1216
|
var _cds$data;
|
|
1193
|
-
if (data.category !== 'cabinet') return;
|
|
1217
|
+
if (data.category !== 'cabinet') return;
|
|
1194
1218
|
var itemID = data.id;
|
|
1195
1219
|
var curItem = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
|
|
1196
1220
|
var layer = state.getIn(['scene', 'layers', layerID]);
|
|
@@ -1214,9 +1238,7 @@ var Item = /*#__PURE__*/function () {
|
|
|
1214
1238
|
return element && element.is_euro_cds;
|
|
1215
1239
|
})) || [];
|
|
1216
1240
|
var cds_data = cds ? [cds] : [];
|
|
1217
|
-
if (
|
|
1218
|
-
// doorStyle.door_style_name === 'Euro & Frameless' &&
|
|
1219
|
-
euro_cds.length > 0) {
|
|
1241
|
+
if (euro_cds.length > 0) {
|
|
1220
1242
|
var newProperties = state.scene.getIn(['layers', layerID, 'items', itemID, 'properties']).toJS();
|
|
1221
1243
|
if (newProperties.hasOwnProperty('depth')) {
|
|
1222
1244
|
if (!newProperties.hasOwnProperty('oldDepth')) {
|
|
@@ -1298,7 +1320,6 @@ var Item = /*#__PURE__*/function () {
|
|
|
1298
1320
|
type: doorStyle.type,
|
|
1299
1321
|
sku: doorStyle.sku,
|
|
1300
1322
|
color_sku_alias: doorStyle.color_sku_alias,
|
|
1301
|
-
// alias name of color_sku for the current dealer
|
|
1302
1323
|
install: getInstallationSuffix(INSTALLATION_SUFFIX_TYPE.NAME, doorStyle),
|
|
1303
1324
|
doorStyles: _objectSpread(_objectSpread({}, tmp), {}, {
|
|
1304
1325
|
cds: cds_data
|
|
@@ -1306,25 +1327,9 @@ var Item = /*#__PURE__*/function () {
|
|
|
1306
1327
|
};
|
|
1307
1328
|
state = state.mergeIn(['scene', 'layers', layerID, 'items', itemID, 'doorStyle'], fromJS(tmpDS));
|
|
1308
1329
|
};
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
} else {
|
|
1313
|
-
if (itemIDs.length > 0) {
|
|
1314
|
-
var _loop = function _loop() {
|
|
1315
|
-
var itemID = itemIDs[i];
|
|
1316
|
-
var items = state.scene.layers.get(layerID).items;
|
|
1317
|
-
items.forEach(function (data) {
|
|
1318
|
-
if (itemID === data.id) {
|
|
1319
|
-
setDoorStyleOfItem(data);
|
|
1320
|
-
}
|
|
1321
|
-
});
|
|
1322
|
-
};
|
|
1323
|
-
for (var i = 0; i < itemIDs.length; i++) {
|
|
1324
|
-
_loop();
|
|
1325
|
-
}
|
|
1326
|
-
}
|
|
1327
|
-
}
|
|
1330
|
+
|
|
1331
|
+
// 🔥 Apply to resolved items
|
|
1332
|
+
itemsToProcess.forEach(setDoorStyleOfItem);
|
|
1328
1333
|
return {
|
|
1329
1334
|
updatedState: state
|
|
1330
1335
|
};
|
|
@@ -1606,7 +1611,7 @@ var Item = /*#__PURE__*/function () {
|
|
|
1606
1611
|
}
|
|
1607
1612
|
});
|
|
1608
1613
|
var updateSelectItemMolding = function updateSelectItemMolding() {
|
|
1609
|
-
var
|
|
1614
|
+
var _loop = function _loop() {
|
|
1610
1615
|
// check whether snapped item is same as selected item in layoutpos(Wall, Tall, Base)
|
|
1611
1616
|
if (MoldingUtils.isSameMoldingLayoutpos(selectedItem, snappedItemGroup[i])) {
|
|
1612
1617
|
// check whether snapped item is same in location(same location type and height).
|
|
@@ -1628,7 +1633,7 @@ var Item = /*#__PURE__*/function () {
|
|
|
1628
1633
|
}
|
|
1629
1634
|
};
|
|
1630
1635
|
for (var i = 0; i < snappedItemGroup.length; i++) {
|
|
1631
|
-
|
|
1636
|
+
_loop();
|
|
1632
1637
|
}
|
|
1633
1638
|
};
|
|
1634
1639
|
var emptyMoldingArray = function emptyMoldingArray() {
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
2
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
4
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
import * as Three from 'three';
|
|
@@ -3014,11 +3011,11 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3014
3011
|
var wLines = getSnappedWallLines(item.itemInfo, layer, planData.catalog);
|
|
3015
3012
|
var curLine = wLines.length > 0 ? wLines[0] : null;
|
|
3016
3013
|
|
|
3017
|
-
// Get wall items
|
|
3014
|
+
// Get wall items which snapped to the curLine
|
|
3018
3015
|
|
|
3019
3016
|
var i,
|
|
3020
3017
|
wallItems = [];
|
|
3021
|
-
var allWallItems = GeometryUtils.getAllItemSpecified(scene, planData.catalog, WALL_CABINET_LAYOUTPOS);
|
|
3018
|
+
var allWallItems = GeometryUtils.getAllItemSpecified(scene, planData.catalog, WALL_CABINET_LAYOUTPOS, curLine === null || curLine === void 0 ? void 0 : curLine.lineRect);
|
|
3022
3019
|
for (i = 0; i < allWallItems.others.length; i++) wallItems.push(allWallItems.others[i]);
|
|
3023
3020
|
if (allWallItems.cur) wallItems.push(allWallItems.cur);
|
|
3024
3021
|
|
|
@@ -3095,37 +3092,37 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3095
3092
|
|
|
3096
3093
|
// Find mergeable other backsplashes
|
|
3097
3094
|
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3095
|
+
// let info,
|
|
3096
|
+
// wholeWidth,
|
|
3097
|
+
// /** Width factor */ factor,
|
|
3098
|
+
// distance,
|
|
3099
|
+
// halfWidth,
|
|
3100
|
+
// /** To get new center */ centerFactor;
|
|
3101
|
+
|
|
3102
|
+
// for (let back of backsplashes) {
|
|
3103
|
+
// info = back.info;
|
|
3104
|
+
// if (info.height === splashHeight && info.rotY === rotY) {
|
|
3105
|
+
// factor = Math.cos(rotY) || 1;
|
|
3106
|
+
// distance = Math.hypot(posX - info.posX, posZ - info.posZ) / factor;
|
|
3107
|
+
// halfWidth = (info.width + splashWidth) / 2;
|
|
3108
|
+
|
|
3109
|
+
// if (Math.abs(distance - halfWidth) < 1e-2) {
|
|
3110
|
+
// // dispose `back`
|
|
3111
|
+
// if (info.id) {
|
|
3112
|
+
// deleteSpecifiedMeshObjects('backsplash' + info.id);
|
|
3113
|
+
// }
|
|
3114
|
+
|
|
3115
|
+
// // Get center position
|
|
3116
|
+
// wholeWidth = info.width + splashWidth;
|
|
3117
|
+
// centerFactor = info.width / wholeWidth;
|
|
3118
|
+
// posX = posX + centerFactor * (info.posX - posX);
|
|
3119
|
+
// posZ = posZ + centerFactor * (info.posZ - posZ);
|
|
3120
|
+
|
|
3121
|
+
// splashWidth = wholeWidth;
|
|
3122
|
+
// }
|
|
3123
|
+
// }
|
|
3124
|
+
// }
|
|
3114
3125
|
|
|
3115
|
-
// Get center position
|
|
3116
|
-
wholeWidth = info.width + splashWidth;
|
|
3117
|
-
centerFactor = info.width / wholeWidth;
|
|
3118
|
-
posX = posX + centerFactor * (info.posX - posX);
|
|
3119
|
-
posZ = posZ + centerFactor * (info.posZ - posZ);
|
|
3120
|
-
splashWidth = wholeWidth;
|
|
3121
|
-
}
|
|
3122
|
-
}
|
|
3123
|
-
}
|
|
3124
|
-
} catch (err) {
|
|
3125
|
-
_iterator.e(err);
|
|
3126
|
-
} finally {
|
|
3127
|
-
_iterator.f();
|
|
3128
|
-
}
|
|
3129
3126
|
itemToSave.info.posX = posX;
|
|
3130
3127
|
itemToSave.info.posY = posY;
|
|
3131
3128
|
itemToSave.info.posZ = posZ;
|
|
@@ -3174,9 +3171,9 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3174
3171
|
}
|
|
3175
3172
|
itemToSave.info.id = item.itemInfo.id;
|
|
3176
3173
|
deleteSpecifiedMeshObjects('backsplash' + item.itemInfo.id);
|
|
3177
|
-
if (item.rotRad % (Math.PI / 2)
|
|
3174
|
+
if (Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON) planData.plan.add(backsplash);
|
|
3178
3175
|
backsplash.name = name;
|
|
3179
|
-
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && item.rotRad % (Math.PI / 2)
|
|
3176
|
+
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON;
|
|
3180
3177
|
|
|
3181
3178
|
// Save to scene graph
|
|
3182
3179
|
|
package/es/constants.js
CHANGED
|
@@ -767,4 +767,7 @@ export var ROOM_SHAPE_TYPE = {
|
|
|
767
767
|
THREE_WALLS_TOP_RIGHT_BOTTOM: '3wTopRightBottom',
|
|
768
768
|
THREE_WALLS_RIGHT_BOTTOM_LEFT: '3wRightBottomLeft',
|
|
769
769
|
THREE_WALLS_BOTTOM_LEFT_TOP: '3wBottomLeftTop'
|
|
770
|
-
};
|
|
770
|
+
};
|
|
771
|
+
export var DOORSTYLE_SCOPE_ALL = 'all';
|
|
772
|
+
export var DOORSTYLE_SCOPE_SINGLE = 'single';
|
|
773
|
+
export var DOORSTYLE_SCOPE_MULTIPLE = 'multiple';
|
package/es/devLiteRenderer.js
CHANGED
|
@@ -20,7 +20,7 @@ import replaceCabinetPayload from "./mocks/replaceCabinetPayload.json";
|
|
|
20
20
|
import ReactDOM from 'react-dom';
|
|
21
21
|
import LiteRenderer from "./LiteRenderer";
|
|
22
22
|
import { Button } from 'antd';
|
|
23
|
-
import { LEFT, RIGHT, TOP, BOTTOM, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, BACK_DIST_ANG, ATT_ITEM_POS, ATT_ITEM_ROTATION, ATT_LINE_LENGTH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, HOLE_NAMES, EXTERNAL_EVENT_CENTERING_2D, PROP_ALTITUDE, EXTERNAL_EVENT_DUPLICATE_ELEMENT, ELEMENT_ITEM, EXTERNAL_EVENT_DELETE_ELEMENT, PROP_RESIZE_WIDTH, EXTERNAL_EVENT_REPLACE_CABINET, EXTERNAL_EVENT_SET_FINISHING, FINISHING_TYPE, EXTERNAL_EVENT_ROTATE_PAN } from "./constants";
|
|
23
|
+
import { LEFT, RIGHT, TOP, BOTTOM, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, BACK_DIST_ANG, ATT_ITEM_POS, ATT_ITEM_ROTATION, ATT_LINE_LENGTH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, HOLE_NAMES, EXTERNAL_EVENT_CENTERING_2D, PROP_ALTITUDE, EXTERNAL_EVENT_DUPLICATE_ELEMENT, ELEMENT_ITEM, EXTERNAL_EVENT_DELETE_ELEMENT, PROP_RESIZE_WIDTH, EXTERNAL_EVENT_REPLACE_CABINET, EXTERNAL_EVENT_SET_FINISHING, FINISHING_TYPE, EXTERNAL_EVENT_ROTATE_PAN, DOORSTYLE_SCOPE_ALL } from "./constants";
|
|
24
24
|
import { convert } from "./utils/convert-units-lite";
|
|
25
25
|
|
|
26
26
|
// --- renderer props ---
|
|
@@ -231,7 +231,7 @@ function WorkSpace(props) {
|
|
|
231
231
|
payload: {
|
|
232
232
|
doorStyle: doorStylePaylod2,
|
|
233
233
|
itemCDS: itemCDSPayload,
|
|
234
|
-
|
|
234
|
+
applyScope: DOORSTYLE_SCOPE_ALL
|
|
235
235
|
}
|
|
236
236
|
};
|
|
237
237
|
setExternalEvent(evt);
|
|
@@ -108,7 +108,7 @@ export default function (state, action) {
|
|
|
108
108
|
case SELECT_TOOL_DRAWING_ITEM_3D:
|
|
109
109
|
return Item.selectToolDrawingItem3D(state, action.sceneComponentType).updatedState;
|
|
110
110
|
case SET_DOOR_STYLE:
|
|
111
|
-
return Item.setDoorStyle(state, action.doorStyle, action.itemCDS, action.
|
|
111
|
+
return Item.setDoorStyle(state, action.doorStyle, action.itemCDS, action.applyScope, action.itemIds).updatedState;
|
|
112
112
|
case SET_HANDLE_MATERIAL:
|
|
113
113
|
return Item.setHandleMaterial(state, action.material).updatedState;
|
|
114
114
|
case SET_DOOR_HANDLE:
|
package/es/utils/geometry.js
CHANGED
|
@@ -719,6 +719,7 @@ export function getAllItems(scene, catalog, allLineRects) {
|
|
|
719
719
|
}
|
|
720
720
|
export function getAllItemSpecified(scene, catalog, filter) {
|
|
721
721
|
var _scene$layers, _scene$layers$get;
|
|
722
|
+
var snappedLineRect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
722
723
|
var layerID = scene === null || scene === void 0 ? void 0 : scene.selectedLayer;
|
|
723
724
|
var layer = scene === null || scene === void 0 || (_scene$layers = scene.layers) === null || _scene$layers === void 0 || (_scene$layers$get = _scene$layers.get) === null || _scene$layers$get === void 0 ? void 0 : _scene$layers$get.call(_scene$layers, layerID);
|
|
724
725
|
if (!layer || !layer.items) return {
|
|
@@ -765,6 +766,39 @@ export function getAllItemSpecified(scene, catalog, filter) {
|
|
|
765
766
|
|
|
766
767
|
// Current vs others
|
|
767
768
|
var rect = getCalcRectFromItem3D(val);
|
|
769
|
+
|
|
770
|
+
// check current item is snapped to the [snappedLineRect]
|
|
771
|
+
if (!isEmpty(snappedLineRect)) {
|
|
772
|
+
var isSnapped = false;
|
|
773
|
+
var overlapList = [OVERLAP_INCLUDED, OVERLAP_SAME, OVERLAP_SOME];
|
|
774
|
+
for (var i = 0; i < (rect === null || rect === void 0 || (_rect$rect = rect.rect) === null || _rect$rect === void 0 ? void 0 : _rect$rect.length); i++) {
|
|
775
|
+
var _rect$rect;
|
|
776
|
+
if (isSnapped) break;
|
|
777
|
+
var curItemPt = rect.rect[i];
|
|
778
|
+
var nextItemPt = i === rect.rect.length - 1 ? rect.rect[0] : rect.rect[i + 1];
|
|
779
|
+
var srcLine = {
|
|
780
|
+
x1: curItemPt.x,
|
|
781
|
+
y1: curItemPt.y,
|
|
782
|
+
x2: nextItemPt.x,
|
|
783
|
+
y2: nextItemPt.y
|
|
784
|
+
};
|
|
785
|
+
for (var j = 0; j < (snappedLineRect === null || snappedLineRect === void 0 ? void 0 : snappedLineRect.length); j++) {
|
|
786
|
+
var curLineRectPt = snappedLineRect[j];
|
|
787
|
+
var nextLineRectPt = j === snappedLineRect.length - 1 ? snappedLineRect[0] : snappedLineRect[j + 1];
|
|
788
|
+
var destLine = {
|
|
789
|
+
x1: curLineRectPt.x,
|
|
790
|
+
y1: curLineRectPt.y,
|
|
791
|
+
x2: nextLineRectPt.x,
|
|
792
|
+
y2: nextLineRectPt.y
|
|
793
|
+
};
|
|
794
|
+
if (overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine).result)) {
|
|
795
|
+
isSnapped = true;
|
|
796
|
+
break;
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
if (!isSnapped) return;
|
|
801
|
+
}
|
|
768
802
|
if (item.selected) {
|
|
769
803
|
curiteminfo = rect;
|
|
770
804
|
} else {
|
|
@@ -2743,15 +2777,15 @@ export function getSnappedWallLines(item, layer, catalog) {
|
|
|
2743
2777
|
var _loop2 = function _loop2(j) {
|
|
2744
2778
|
var destLine1 = {
|
|
2745
2779
|
x1: rectLines[j].rect[2].x,
|
|
2746
|
-
y1: rectLines[j].rect[
|
|
2747
|
-
x2:
|
|
2748
|
-
y2:
|
|
2780
|
+
y1: rectLines[j].rect[2].y,
|
|
2781
|
+
x2: rectLines[j].rect[3].x,
|
|
2782
|
+
y2: rectLines[j].rect[3].y
|
|
2749
2783
|
};
|
|
2750
2784
|
var destLine2 = {
|
|
2751
2785
|
x1: rectLines[j].rect[0].x,
|
|
2752
|
-
y1: rectLines[j].rect[
|
|
2753
|
-
x2:
|
|
2754
|
-
y2:
|
|
2786
|
+
y1: rectLines[j].rect[0].y,
|
|
2787
|
+
x2: rectLines[j].rect[1].x,
|
|
2788
|
+
y2: rectLines[j].rect[1].y
|
|
2755
2789
|
};
|
|
2756
2790
|
if (overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine1).result) || overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine2).result)) {
|
|
2757
2791
|
var idx = snappedWallLines.findIndex(function (v) {
|
|
@@ -2760,6 +2794,7 @@ export function getSnappedWallLines(item, layer, catalog) {
|
|
|
2760
2794
|
var snapSide = 'unknown';
|
|
2761
2795
|
if (idx < 0) snappedWallLines.push({
|
|
2762
2796
|
id: rectLines[j].lineId,
|
|
2797
|
+
lineRect: rectLines[j].rect,
|
|
2763
2798
|
snapSide: snapSide
|
|
2764
2799
|
});else snappedWallLines[idx].snapSide = snapSide;
|
|
2765
2800
|
}
|
|
@@ -2799,6 +2834,7 @@ export function getSnappedWallLines(item, layer, catalog) {
|
|
|
2799
2834
|
var snapSide = _i === 0 || _i === 2 ? 'front' : 'side';
|
|
2800
2835
|
if (idx < 0) snappedWallLines.push({
|
|
2801
2836
|
id: rectLines[_j].lineId,
|
|
2837
|
+
lineRect: rectLines[_j].rect,
|
|
2802
2838
|
snapSide: snapSide
|
|
2803
2839
|
});else snappedWallLines[idx].snapSide = snapSide;
|
|
2804
2840
|
}
|