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.
@@ -227,12 +227,13 @@ export function updateItemsAltitude(layerID, itemID, value) {
227
227
  value: value
228
228
  };
229
229
  }
230
- export function setDoorStyle(doorStyle, itemCDS, isAll) {
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
- isAll: isAll
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, isAll) {
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
- var itemIDs = state.scene.layers.getIn([layerID, 'selected', 'items']).toJS();
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; //CDS should effect to cabinets
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
- if (isAll) {
1310
- var items = state.scene.layers.get(layerID).items;
1311
- items.forEach(setDoorStyleOfItem);
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 _loop2 = function _loop2() {
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
- _loop2();
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
- var info, wholeWidth, /** Width factor */factor, distance, halfWidth, /** To get new center */centerFactor;
3099
- var _iterator = _createForOfIteratorHelper(backsplashes),
3100
- _step;
3101
- try {
3102
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
3103
- var back = _step.value;
3104
- info = back.info;
3105
- if (info.height === splashHeight && info.rotY === rotY) {
3106
- factor = Math.cos(rotY) || 1;
3107
- distance = Math.hypot(posX - info.posX, posZ - info.posZ) / factor;
3108
- halfWidth = (info.width + splashWidth) / 2;
3109
- if (Math.abs(distance - halfWidth) < 1e-2) {
3110
- // dispose `back`
3111
- if (info.id) {
3112
- deleteSpecifiedMeshObjects('backsplash' + info.id);
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) === 0) planData.plan.add(backsplash);
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) === 0;
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';
@@ -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
- isAll: true
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.isAll).updatedState;
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:
@@ -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[3].y,
2747
- x2: v1.x,
2748
- y2: v1.y
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[1].y,
2753
- x2: v1.x,
2754
- y2: v1.y
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
  }