kitchen-simulator 3.0.1 → 3.1.0

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.
@@ -110,10 +110,13 @@ function _parseTempPlaceholdersFromCabinetPayload() {
110
110
  tempPlaceholders.map(function (element) {
111
111
  var sink_match = element.name.match(/\d_(sink_[^LR12]*)(_[LR12])?$/);
112
112
  if (sink_match && sink_match.length >= 2) {
113
- var _cabinetPayload$struc3;
113
+ var _process$env$API_URL, _cabinetPayload$struc3;
114
114
  tempData['sink'] = tempData['sink'] || [];
115
115
  tempData['sink'].push(element.name);
116
- var sink_url = process.env.API_URL + "/uploads/assets/default/".concat(sink_match[1], ".gltf");
116
+ var sink_url = (_process$env$API_URL = process.env.API_URL) !== null && _process$env$API_URL !== void 0 ? _process$env$API_URL :
117
+ // server url from 3DTool env
118
+ import.meta.env.VITE_APP_API_URL + // server url from Host env
119
+ "/uploads/assets/default/".concat(sink_match[1], ".gltf");
117
120
  if (cabinetPayload !== null && cabinetPayload !== void 0 && (_cabinetPayload$struc3 = cabinetPayload.structure_json) !== null && _cabinetPayload$struc3 !== void 0 && (_cabinetPayload$struc3 = _cabinetPayload$struc3.tempPlaceholders[0]) !== null && _cabinetPayload$struc3 !== void 0 && _cabinetPayload$struc3.structure) cabinetPayload.structure_json.tempPlaceholders[0].structure.sink = sink_url;
118
121
  } else if (temp.some(function (felement) {
119
122
  return felement.name.includes('base_drawer');
@@ -1049,17 +1052,17 @@ export function handleExternalEvent(_x10) {
1049
1052
  return _handleExternalEvent.apply(this, arguments);
1050
1053
  }
1051
1054
  function _handleExternalEvent() {
1052
- _handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(props) {
1055
+ _handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee9(props) {
1053
1056
  var _evt$payload3, _evt$payload4;
1054
- var evt, state, _evt$payload, cdsItems, itemKeys, _loop3, i, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _evt$payload5, doorStyle, itemCDS, isAll, _evt$payload6, roomShapeType, width, height, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, layerId, layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i2, _i3, _i4, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven2, _t5;
1055
- return _regeneratorRuntime.wrap(function (_context9) {
1056
- while (1) switch (_context9.prev = _context9.next) {
1057
+ var evt, state, _evt$payload, cdsItems, itemKeys, _loop3, i, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop4, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId, layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven3, _t5;
1058
+ return _regeneratorRuntime.wrap(function (_context1) {
1059
+ while (1) switch (_context1.prev = _context1.next) {
1057
1060
  case 0:
1058
1061
  // console.log('***external event****', props);
1059
1062
  evt = props.externalEvent;
1060
1063
  state = props.state.get('KitchenConfigurator');
1061
1064
  _t5 = evt === null || evt === void 0 ? void 0 : evt.type;
1062
- _context9.next = _t5 === EXTERNAL_EVENT_LOAD_PROJECT ? 1 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_3D ? 5 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_2D ? 6 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_ELEVATION ? 7 : _t5 === EXTERNAL_EVENT_ADD_WALL ? 8 : _t5 === EXTERNAL_EVENT_ADD_ITEM ? 9 : _t5 === EXTERNAL_EVENT_ADD_HOLE ? 12 : _t5 === EXTERNAL_EVENT_MOVE_PAN ? 13 : _t5 === EXTERNAL_EVENT_NEW_PROJECT ? 14 : _t5 === EXTERNAL_EVENT_CHANGE_DOORSTYLE ? 15 : _t5 === EXTERNAL_EVENT_ADD_ROOM_SHAPE ? 16 : _t5 === EXTERNAL_EVENT_ZOOM_IN ? 17 : _t5 === EXTERNAL_EVENT_ZOOM_OUT ? 18 : _t5 === EXTERNAL_EVENT_CENTERING_2D ? 19 : _t5 === EXTERNAL_EVENT_UNDO ? 20 : _t5 === EXTERNAL_EVENT_REDO ? 21 : _t5 === EXTERNAL_EVENT_SET_MOLDING ? 22 : _t5 === EXTERNAL_EVENT_DUPLICATE_ELEMENT ? 24 : _t5 === EXTERNAL_EVENT_DELETE_ELEMENT ? 25 : _t5 === EXTERNAL_EVENT_PROJECT_SETTING ? 26 : _t5 === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? 27 : _t5 === EXTERNAL_EVENT_UPDATE_PROPERTY ? 27 : _t5 === EXTERNAL_EVENT_REPLACE_CABINET ? 28 : _t5 === EXTERNAL_EVENT_SET_FINISHING ? 30 : _t5 === EXTERNAL_EVENT_SYNC_SCENE ? 31 : 32;
1065
+ _context1.next = _t5 === EXTERNAL_EVENT_LOAD_PROJECT ? 1 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_3D ? 5 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_2D ? 6 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_ELEVATION ? 7 : _t5 === EXTERNAL_EVENT_ADD_WALL ? 8 : _t5 === EXTERNAL_EVENT_ADD_ITEM ? 9 : _t5 === EXTERNAL_EVENT_ADD_HOLE ? 12 : _t5 === EXTERNAL_EVENT_MOVE_PAN ? 13 : _t5 === EXTERNAL_EVENT_NEW_PROJECT ? 14 : _t5 === EXTERNAL_EVENT_CHANGE_DOORSTYLE ? 15 : _t5 === EXTERNAL_EVENT_ADD_ROOM_SHAPE ? 19 : _t5 === EXTERNAL_EVENT_ZOOM_IN ? 20 : _t5 === EXTERNAL_EVENT_ZOOM_OUT ? 21 : _t5 === EXTERNAL_EVENT_CENTERING_2D ? 22 : _t5 === EXTERNAL_EVENT_UNDO ? 23 : _t5 === EXTERNAL_EVENT_REDO ? 24 : _t5 === EXTERNAL_EVENT_SET_MOLDING ? 25 : _t5 === EXTERNAL_EVENT_DUPLICATE_ELEMENT ? 27 : _t5 === EXTERNAL_EVENT_DELETE_ELEMENT ? 28 : _t5 === EXTERNAL_EVENT_PROJECT_SETTING ? 29 : _t5 === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? 30 : _t5 === EXTERNAL_EVENT_UPDATE_PROPERTY ? 30 : _t5 === EXTERNAL_EVENT_REPLACE_CABINET ? 31 : _t5 === EXTERNAL_EVENT_SET_FINISHING ? 33 : _t5 === EXTERNAL_EVENT_SYNC_SCENE ? 34 : 35;
1063
1066
  break;
1064
1067
  case 1:
1065
1068
  // prepare item data request
@@ -1074,7 +1077,7 @@ function _handleExternalEvent() {
1074
1077
  it = evt === null || evt === void 0 || (_evt$payload2 = evt.payload) === null || _evt$payload2 === void 0 || (_evt$payload2 = _evt$payload2.layers['layer-1']) === null || _evt$payload2 === void 0 ? void 0 : _evt$payload2.items[itemKeys[i]];
1075
1078
  if (!cdsItems.some(function (v) {
1076
1079
  var _it$doorStyle;
1077
- return it.itemId === v.itemId && it.name === v.name && ((_it$doorStyle = it.doorStyle) === null || _it$doorStyle === void 0 || (_it$doorStyle = _it$doorStyle.doorStyles) === null || _it$doorStyle === void 0 ? void 0 : _it$doorStyle.cabinet_door_style_id) === v.cdsId;
1080
+ return it.itemID === v.itemID && it.name === v.name && ((_it$doorStyle = it.doorStyle) === null || _it$doorStyle === void 0 || (_it$doorStyle = _it$doorStyle.doorStyles) === null || _it$doorStyle === void 0 ? void 0 : _it$doorStyle.cabinet_door_style_id) === v.cdsId;
1078
1081
  })) cdsItems.push({
1079
1082
  itemID: it.itemID,
1080
1083
  prototype: it.prototype,
@@ -1093,13 +1096,13 @@ function _handleExternalEvent() {
1093
1096
  i = 0;
1094
1097
  case 2:
1095
1098
  if (!(i < itemKeys.length)) {
1096
- _context9.next = 4;
1099
+ _context1.next = 4;
1097
1100
  break;
1098
1101
  }
1099
- return _context9.delegateYield(_loop3(), "t0", 3);
1102
+ return _context1.delegateYield(_loop3(), "t0", 3);
1100
1103
  case 3:
1101
1104
  i++;
1102
- _context9.next = 2;
1105
+ _context1.next = 2;
1103
1106
  break;
1104
1107
  case 4:
1105
1108
  // request item catalog data to host app
@@ -1140,30 +1143,30 @@ function _handleExternalEvent() {
1140
1143
  };
1141
1144
  }());
1142
1145
  }
1143
- return _context9.abrupt("continue", 32);
1146
+ return _context1.abrupt("continue", 35);
1144
1147
  case 5:
1145
1148
  props.projectActions.setMode(MODE_IDLE_3D);
1146
- return _context9.abrupt("continue", 32);
1149
+ return _context1.abrupt("continue", 35);
1147
1150
  case 6:
1148
1151
  props.projectActions.setMode(MODE_IDLE);
1149
- return _context9.abrupt("continue", 32);
1152
+ return _context1.abrupt("continue", 35);
1150
1153
  case 7:
1151
1154
  sLineCnt = state.getIn(['scene', 'layers', 'layer-1', 'selected', 'lines']).size;
1152
1155
  if (sLineCnt > 0) props.projectActions.setMode(MODE_ELEVATION_VIEW);
1153
- return _context9.abrupt("continue", 32);
1156
+ return _context1.abrupt("continue", 35);
1154
1157
  case 8:
1155
1158
  if (state.mode === MODE_IDLE || state.mode === MODE_2D_PAN) props.linesActions.selectToolDrawingLine('wall');else {
1156
1159
  props.projectActions.setMode(MODE_IDLE);
1157
1160
  props.linesActions.selectToolDrawingLine('wall');
1158
1161
  }
1159
- return _context9.abrupt("continue", 32);
1162
+ return _context1.abrupt("continue", 35);
1160
1163
  case 9:
1161
1164
  if (isEmpty(evt === null || evt === void 0 ? void 0 : evt.payload)) {
1162
- _context9.next = 11;
1165
+ _context1.next = 11;
1163
1166
  break;
1164
1167
  }
1165
1168
  element = evt.payload;
1166
- _context9.next = 10;
1169
+ _context1.next = 10;
1167
1170
  return addItemToCatalog(element, state, props.catalog, props.projectActions);
1168
1171
  case 10:
1169
1172
  // start drawing item
@@ -1187,67 +1190,148 @@ function _handleExternalEvent() {
1187
1190
  props.projectActions.pushLastSelectedCatalogElementToHistory(element);
1188
1191
  props.projectActions.setIsCabinetDrawing(true);
1189
1192
  case 11:
1190
- return _context9.abrupt("continue", 32);
1193
+ return _context1.abrupt("continue", 35);
1191
1194
  case 12:
1192
1195
  ARRAY_3D_MODES.includes(state.mode) ? props.holesActions.selectToolDrawingHole3D(evt === null || evt === void 0 || (_evt$payload3 = evt.payload) === null || _evt$payload3 === void 0 ? void 0 : _evt$payload3.holeName) : props.holesActions.selectToolDrawingHole(evt === null || evt === void 0 || (_evt$payload4 = evt.payload) === null || _evt$payload4 === void 0 ? void 0 : _evt$payload4.holeName);
1193
- return _context9.abrupt("continue", 32);
1196
+ return _context1.abrupt("continue", 35);
1194
1197
  case 13:
1195
1198
  movePan2D3D(props, evt.payload, state);
1196
- return _context9.abrupt("continue", 32);
1199
+ return _context1.abrupt("continue", 35);
1197
1200
  case 14:
1198
1201
  defaulTitle = 'Untitle';
1199
1202
  props.projectActions.newProject();
1200
1203
  props.projectActions.rename(defaulTitle);
1201
- return _context9.abrupt("continue", 32);
1204
+ return _context1.abrupt("continue", 35);
1202
1205
  case 15:
1203
- _evt$payload5 = evt.payload, doorStyle = _evt$payload5.doorStyle, itemCDS = _evt$payload5.itemCDS, isAll = _evt$payload5.isAll;
1204
- props.itemsActions.setDoorStyle(doorStyle, itemCDS, isAll);
1205
- return _context9.abrupt("continue", 32);
1206
+ _evt$payload5 = evt.payload, doorStyle = _evt$payload5.doorStyle, itemCDS = _evt$payload5.itemCDS, isAll = _evt$payload5.isAll; // prepare item data request
1207
+ layerId = state.getIn(['scene', 'selectedLayer']);
1208
+ _cdsItems = [];
1209
+ allItems = state.getIn(['scene', 'layers', layerId, 'items']).toJS();
1210
+ selectedItemId = state.getIn(['scene', 'layers', layerId]).selected.items.toJS()[0];
1211
+ _itemKeys = isAll ? (_Object$keys = Object.keys(allItems)) !== null && _Object$keys !== void 0 ? _Object$keys : [] : [selectedItemId];
1212
+ _loop4 = /*#__PURE__*/_regeneratorRuntime.mark(function _loop4() {
1213
+ var _itemCDS$find;
1214
+ var item, cdsId;
1215
+ return _regeneratorRuntime.wrap(function (_context0) {
1216
+ while (1) switch (_context0.prev = _context0.next) {
1217
+ case 0:
1218
+ item = allItems[_itemKeys[_i2]];
1219
+ cdsId = (_itemCDS$find = itemCDS.find(function (itCDS) {
1220
+ return itCDS.itemID === item.itemID;
1221
+ })) === null || _itemCDS$find === void 0 ? void 0 : _itemCDS$find.cabinet_door_style_id;
1222
+ if (cdsId && !_cdsItems.some(function (v) {
1223
+ return it.itemID === v.itemID && it.name === v.name && cdsId === v.cdsId;
1224
+ })) _cdsItems.push({
1225
+ itemID: item.itemID,
1226
+ prototype: item.prototype,
1227
+ category: item.category,
1228
+ name: item.name,
1229
+ type: item.type,
1230
+ sku_number: item.sku_number,
1231
+ cdsId: cdsId
1232
+ });
1233
+ case 1:
1234
+ case "end":
1235
+ return _context0.stop();
1236
+ }
1237
+ }, _loop4);
1238
+ });
1239
+ _i2 = 0;
1206
1240
  case 16:
1241
+ if (!(_i2 < _itemKeys.length)) {
1242
+ _context1.next = 18;
1243
+ break;
1244
+ }
1245
+ return _context1.delegateYield(_loop4(), "t1", 17);
1246
+ case 17:
1247
+ _i2++;
1248
+ _context1.next = 16;
1249
+ break;
1250
+ case 18:
1251
+ // request item catalog data to host app
1252
+ if (_cdsItems.length > 0) {
1253
+ (_props$onInternalEven2 = props.onInternalEvent) === null || _props$onInternalEven2 === void 0 || _props$onInternalEven2.call(props, {
1254
+ type: INTERNAL_EVENT_ITEMS_CATALOG,
1255
+ value: {
1256
+ cdsItems: _cdsItems
1257
+ }
1258
+ }, /*#__PURE__*/function () {
1259
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(result) {
1260
+ var _i3, _result$elements2;
1261
+ return _regeneratorRuntime.wrap(function (_context9) {
1262
+ while (1) switch (_context9.prev = _context9.next) {
1263
+ case 0:
1264
+ _i3 = 0;
1265
+ case 1:
1266
+ if (!(_i3 < (result === null || result === void 0 || (_result$elements2 = result.elements) === null || _result$elements2 === void 0 ? void 0 : _result$elements2.length))) {
1267
+ _context9.next = 3;
1268
+ break;
1269
+ }
1270
+ _context9.next = 2;
1271
+ return addItemToCatalog(result.elements[_i3], state, props.catalog, props.projectActions);
1272
+ case 2:
1273
+ _i3++;
1274
+ _context9.next = 1;
1275
+ break;
1276
+ case 3:
1277
+ props.itemsActions.setDoorStyle(doorStyle, itemCDS, isAll);
1278
+ case 4:
1279
+ case "end":
1280
+ return _context9.stop();
1281
+ }
1282
+ }, _callee8);
1283
+ }));
1284
+ return function (_x12) {
1285
+ return _ref3.apply(this, arguments);
1286
+ };
1287
+ }());
1288
+ } else props.itemsActions.setDoorStyle(doorStyle, itemCDS, isAll);
1289
+ return _context1.abrupt("continue", 35);
1290
+ case 19:
1207
1291
  _evt$payload6 = evt.payload, roomShapeType = _evt$payload6.roomShapeType, width = _evt$payload6.width, height = _evt$payload6.height, _doorStyle = _evt$payload6.doorStyle;
1208
1292
  props.projectActions.createRoomWithShape(roomShapeType, width, height, _doorStyle);
1209
- return _context9.abrupt("continue", 32);
1210
- case 17:
1293
+ return _context1.abrupt("continue", 35);
1294
+ case 20:
1211
1295
  value = state.getIn(['viewer2D']).toJS();
1212
1296
  value.a += 0.1;
1213
1297
  value.d += 0.1;
1214
1298
  value.e -= value.SVGWidth * 0.1 / 2;
1215
1299
  value.f -= value.SVGHeight * 0.1 / 2;
1216
1300
  updateViwer2D(value, props.viewer2DActions);
1217
- return _context9.abrupt("continue", 32);
1218
- case 18:
1301
+ return _context1.abrupt("continue", 35);
1302
+ case 21:
1219
1303
  _value = state.getIn(['viewer2D']).toJS();
1220
1304
  _value.a -= 0.1;
1221
1305
  _value.d -= 0.1;
1222
1306
  _value.e += _value.SVGWidth * 0.1 / 2;
1223
1307
  _value.f += _value.SVGHeight * 0.1 / 2;
1224
1308
  updateViwer2D(_value, props.viewer2DActions);
1225
- return _context9.abrupt("continue", 32);
1226
- case 19:
1309
+ return _context1.abrupt("continue", 35);
1310
+ case 22:
1227
1311
  centering2D(state, props.viewer2DActions);
1228
- return _context9.abrupt("continue", 32);
1229
- case 20:
1312
+ return _context1.abrupt("continue", 35);
1313
+ case 23:
1230
1314
  props.projectActions.undo();
1231
- return _context9.abrupt("continue", 32);
1232
- case 21:
1315
+ return _context1.abrupt("continue", 35);
1316
+ case 24:
1233
1317
  props.projectActions.redo();
1234
- return _context9.abrupt("continue", 32);
1235
- case 22:
1318
+ return _context1.abrupt("continue", 35);
1319
+ case 25:
1236
1320
  _evt$payload7 = evt.payload, moldingInfo = _evt$payload7.moldingInfo, isGlobal = _evt$payload7.isGlobal;
1237
- _context9.next = 23;
1321
+ _context1.next = 26;
1238
1322
  return loadMoldingSvg(moldingInfo);
1239
- case 23:
1323
+ case 26:
1240
1324
  props.itemsActions.setMolding(moldingInfo, isGlobal);
1241
- return _context9.abrupt("continue", 32);
1242
- case 24:
1325
+ return _context1.abrupt("continue", 35);
1326
+ case 27:
1243
1327
  distElement = getElement(evt.payload, state);
1244
1328
  if (distElement) props.itemsActions.duplicateSelected(distElement, props.onInternalEvent);
1245
- return _context9.abrupt("continue", 32);
1246
- case 25:
1329
+ return _context1.abrupt("continue", 35);
1330
+ case 28:
1247
1331
  _distElement = getElement(evt.payload, state);
1248
1332
  if (_distElement) props.projectActions.remove(_distElement);
1249
- return _context9.abrupt("continue", 32);
1250
- case 26:
1333
+ return _context1.abrupt("continue", 35);
1334
+ case 29:
1251
1335
  _evt$payload8 = evt.payload, option = _evt$payload8.option, _value2 = _evt$payload8.value;
1252
1336
  if (option === PROJECT_SETTING_OPTION.UPDATE_CEIL_HEIGHT) {
1253
1337
  props.viewer2DActions.updateCeilHeight(_value2);
@@ -1261,23 +1345,23 @@ function _handleExternalEvent() {
1261
1345
  } else if (option === PROJECT_SETTING_OPTION.CHANGE_WINDOW_DOOR_MEASURE) {
1262
1346
  props.viewer2DActions.changeWindowDoorMeasure(_value2);
1263
1347
  }
1264
- return _context9.abrupt("continue", 32);
1265
- case 27:
1266
- layerId = state.getIn(['scene', 'selectedLayer']);
1267
- layer = state.getIn(['scene', 'layers', layerId]);
1348
+ return _context1.abrupt("continue", 35);
1349
+ case 30:
1350
+ _layerId = state.getIn(['scene', 'selectedLayer']);
1351
+ layer = state.getIn(['scene', 'layers', _layerId]);
1268
1352
  _layer$getIn = layer.getIn(['selected']), selectedLines = _layer$getIn.lines, selectedHoles = _layer$getIn.holes, selectedItems = _layer$getIn.items;
1269
- for (_i2 = 0; _i2 < selectedLines.size; _i2++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['lines', selectedLines.get(_i2)]), evt.payload, state, layer, props.projectActions, evt.callback) : updatePropertyOfSelectedElement(layer.getIn(['lines', selectedLines.get(_i2)]), evt.payload, props.catalog, props.projectActions, evt.callback);
1270
- for (_i3 = 0; _i3 < selectedHoles.size; _i3++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['holes', selectedHoles.get(_i3)]), evt.payload, state, layer, props.projectActions, evt.callback) : updatePropertyOfSelectedElement(layer.getIn(['holes', selectedHoles.get(_i3)]), evt.payload, props.catalog, props.projectActions, evt.callback);
1271
- for (_i4 = 0; _i4 < selectedItems.size; _i4++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['items', selectedItems.get(_i4)]), evt.payload, state, layer, props.projectActions, evt.callback) : updatePropertyOfSelectedElement(layer.getIn(['items', selectedItems.get(_i4)]), evt.payload, props.catalog, props.projectActions, evt.callback);
1272
- return _context9.abrupt("continue", 32);
1273
- case 28:
1353
+ for (_i4 = 0; _i4 < selectedLines.size; _i4++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['lines', selectedLines.get(_i4)]), evt.payload, state, layer, props.projectActions, evt.callback) : updatePropertyOfSelectedElement(layer.getIn(['lines', selectedLines.get(_i4)]), evt.payload, props.catalog, props.projectActions, evt.callback);
1354
+ for (_i5 = 0; _i5 < selectedHoles.size; _i5++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['holes', selectedHoles.get(_i5)]), evt.payload, state, layer, props.projectActions, evt.callback) : updatePropertyOfSelectedElement(layer.getIn(['holes', selectedHoles.get(_i5)]), evt.payload, props.catalog, props.projectActions, evt.callback);
1355
+ for (_i6 = 0; _i6 < selectedItems.size; _i6++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['items', selectedItems.get(_i6)]), evt.payload, state, layer, props.projectActions, evt.callback) : updatePropertyOfSelectedElement(layer.getIn(['items', selectedItems.get(_i6)]), evt.payload, props.catalog, props.projectActions, evt.callback);
1356
+ return _context1.abrupt("continue", 35);
1357
+ case 31:
1274
1358
  _layerID = state.scene.selectedLayer;
1275
1359
  _layer = state.scene.getIn(['layers', _layerID]).toJS();
1276
1360
  orginalItemInfo = evt === null || evt === void 0 || (_evt$payload9 = evt.payload) === null || _evt$payload9 === void 0 ? void 0 : _evt$payload9.orginalItemInfo;
1277
1361
  originalItem = _layer === null || _layer === void 0 ? void 0 : _layer.items[orginalItemInfo.id];
1278
- _context9.next = 29;
1362
+ _context1.next = 32;
1279
1363
  return addItemToCatalog(evt.payload.replaceItemInfo, state, props.catalog, props.projectActions);
1280
- case 29:
1364
+ case 32:
1281
1365
  originalItemPos = {
1282
1366
  rotation: originalItem.rotation,
1283
1367
  selectedItemId: originalItem.id,
@@ -1292,23 +1376,23 @@ function _handleExternalEvent() {
1292
1376
  }
1293
1377
  };
1294
1378
  props.itemsActions.replaceItem(originalItemPos, originalItem, replaceItem);
1295
- return _context9.abrupt("continue", 32);
1296
- case 30:
1379
+ return _context1.abrupt("continue", 35);
1380
+ case 33:
1297
1381
  setFinishing(props, state, evt.payload);
1298
- case 31:
1382
+ case 34:
1299
1383
  // send scene object from 3DTool to HostApp using internalEvent
1300
- (_props$onInternalEven2 = props.onInternalEvent) === null || _props$onInternalEven2 === void 0 || _props$onInternalEven2.call(props, {
1384
+ (_props$onInternalEven3 = props.onInternalEvent) === null || _props$onInternalEven3 === void 0 || _props$onInternalEven3.call(props, {
1301
1385
  type: INTERNAL_EVENT_SYNC_SCENE,
1302
1386
  value: {
1303
1387
  scene: state.scene.toJS()
1304
1388
  }
1305
1389
  });
1306
- return _context9.abrupt("continue", 32);
1307
- case 32:
1390
+ return _context1.abrupt("continue", 35);
1391
+ case 35:
1308
1392
  case "end":
1309
- return _context9.stop();
1393
+ return _context1.stop();
1310
1394
  }
1311
- }, _callee8);
1395
+ }, _callee9);
1312
1396
  }));
1313
1397
  return _handleExternalEvent.apply(this, arguments);
1314
1398
  }
@@ -28,12 +28,14 @@ function selectToolDrawingLine(sceneComponentType) {
28
28
  };
29
29
  }
30
30
  function beginDrawingLine(layerID, x, y, snapMask) {
31
+ var onInternalEvent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
31
32
  return {
32
33
  type: _constants.BEGIN_DRAWING_LINE,
33
34
  layerID: layerID,
34
35
  x: x,
35
36
  y: y,
36
- snapMask: snapMask
37
+ snapMask: snapMask,
38
+ onInternalEvent: onInternalEvent
37
39
  };
38
40
  }
39
41
  function updateDrawingLine(x, y, relatedLines, snapMask) {
@@ -464,6 +464,7 @@ function render3DItem(element, layer, scene, sizeinfo, structure_json, is_corner
464
464
  var tempPlaceholders = structure.tempPlaceholders;
465
465
  var tPlaceholders = tempPlaceholders.find(function (el) {
466
466
  return el.id === tempDoorStyles.cabinet_door_style_id;
467
+ // return el.id === tempDoorStyles.cds[0].cabinet_door_style_id;
467
468
  });
468
469
  if (tPlaceholders !== undefined) {
469
470
  placeholders = tPlaceholders.placeholders;
package/lib/class/item.js CHANGED
@@ -486,6 +486,9 @@ var Item = exports["default"] = /*#__PURE__*/function () {
486
486
  key: "storeDistArray",
487
487
  value: function storeDistArray(state, layerID, itemID, distArray) {
488
488
  var curDistArray = state.getIn(['scene', 'layers', layerID, 'items', itemID, 'distArray']);
489
+ distArray.forEach(function (dist) {
490
+ dist[0] < 0 ? dist[0] = 0 : dist[0];
491
+ });
489
492
  var isEqualDist = function isEqualDist(a, b) {
490
493
  return a == b;
491
494
  };
@@ -1152,6 +1155,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
1152
1155
  for (var x in keys) {
1153
1156
  tmp[keys[x]] = doorStyle.doorStyles[keys[x]];
1154
1157
  }
1158
+ doorStyle.cds = itemCDS;
1155
1159
  state = state.setIn(['scene', 'layers', state.scene.selectedLayer, 'doorStyle'], doorStyle);
1156
1160
  state = state.merge({
1157
1161
  doorStyle: doorStyle
package/lib/class/line.js CHANGED
@@ -15,6 +15,7 @@ var _export2 = require("../utils/export");
15
15
  var Three = _interopRequireWildcard(require("three"));
16
16
  var _constants = require("../constants");
17
17
  var _helper = require("../utils/helper");
18
+ var _convertUnitsLite = require("../utils/convert-units-lite");
18
19
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
20
  var timeGlobal = 0;
20
21
  var TimeRecorder = /*#__PURE__*/function () {
@@ -435,7 +436,7 @@ var Line = exports["default"] = /*#__PURE__*/function () {
435
436
  }
436
437
  }, {
437
438
  key: "beginDrawingLine",
438
- value: function beginDrawingLine(state, layerID, x, y) {
439
+ value: function beginDrawingLine(state, layerID, x, y, onInternalEvent) {
439
440
  // if end drawing by created area
440
441
  if (state.mode == _constants.MODE_IDLE) {
441
442
  return {
@@ -488,6 +489,17 @@ var Line = exports["default"] = /*#__PURE__*/function () {
488
489
  activeSnapElement: snap ? snap.snap : null,
489
490
  drawingSupport: drawingSupport
490
491
  });
492
+ var layer = state.getIn(['scene', 'layers', layerID]);
493
+ var payload = line.toJS();
494
+ var v_a = layer.vertices.get(line.vertices.get(0));
495
+ var v_b = layer.vertices.get(line.vertices.get(1));
496
+ var distance = _export2.GeometryUtils.pointsDistance(v_a.x, v_a.y, v_b.x, v_b.y);
497
+ var _length = (0, _convertUnitsLite.convert)(distance).from('cm').to('in');
498
+ payload.length = _length;
499
+ if (onInternalEvent) onInternalEvent({
500
+ type: _constants.INTERNAL_EVENT_START_DRAW_WALL,
501
+ value: payload
502
+ });
491
503
  return {
492
504
  updatedState: state
493
505
  };
@@ -399,7 +399,10 @@ function Item(_ref, _ref2) {
399
399
  y: "-19",
400
400
  height: "16",
401
401
  width: "16",
402
- style: {
402
+ style: (0, _utils.isWarningItem)(item) ? {
403
+ transform: 'rotateX(180deg)',
404
+ opacity: 0.5
405
+ } : {
403
406
  transform: 'rotateX(180deg)'
404
407
  }
405
408
  })), /*#__PURE__*/_react["default"].createElement("g", {
@@ -41,7 +41,7 @@ function RulerDist(_ref) {
41
41
  var _unit = 'in';
42
42
  // let _length = convert(length).from(unit).to(rulerUnit);
43
43
  var distanceText = "".concat((0, _convertUnitsLite.convert)(length).from('cm').to(rulerUnit).toFixed(0));
44
- var textLength = (distanceText.length + layer.unit.length) * 18;
44
+ var textLength = (distanceText.length + layer.unit.length) * 8;
45
45
  var textangle = angle + 90;
46
46
  var textRotation = 1;
47
47
  var ay = 2;
@@ -956,7 +956,7 @@ function Viewer2D(_ref, _ref2) {
956
956
  case 'items':
957
957
  if (elementData.part === 'duplicate') {
958
958
  var currentObject = state.getIn(['scene', 'layers', layerID, 'items', elementData.id]);
959
- itemsActions.duplicateSelected(currentObject, onInternalEvent); // send draw internal event when duplicating
959
+ if (!(0, _utils.isWarningItem)(currentObject)) itemsActions.duplicateSelected(currentObject, onInternalEvent); // send draw internal event when duplicating
960
960
  break;
961
961
  } else if (elementData.part === 'remove') {
962
962
  projectActions.remove();
@@ -1207,7 +1207,7 @@ function Viewer2D(_ref, _ref2) {
1207
1207
  break;
1208
1208
  case constants.MODE_WAITING_DRAWING_LINE:
1209
1209
  setdrawStart(true);
1210
- linesActions.beginDrawingLine(layerID, x, y, state.snapMask);
1210
+ linesActions.beginDrawingLine(layerID, x, y, state.snapMask, onInternalEvent);
1211
1211
  break;
1212
1212
  case constants.MODE_DRAWING_LINE:
1213
1213
  // Blocked 90 degree snap.
@@ -1221,7 +1221,7 @@ function Viewer2D(_ref, _ref2) {
1221
1221
  getConnectedLines();
1222
1222
  var endInfor = getEndPoint(vertices, x, y, 'END_DRAWIN_LINE');
1223
1223
  linesActions.endDrawingLine(endInfor.x, endInfor.y, state.snapMask);
1224
- linesActions.beginDrawingLine(layerID, endInfor.x, endInfor.y, state.snapMask);
1224
+ linesActions.beginDrawingLine(layerID, endInfor.x, endInfor.y, state.snapMask, onInternalEvent);
1225
1225
  break;
1226
1226
  case constants.MODE_DRAWING_HOLE:
1227
1227
  holesActions.endDrawingHole(layerID, x, y);
@@ -1272,6 +1272,8 @@ function Viewer2D(_ref, _ref2) {
1272
1272
  } else if (((_currentObject5 = _currentObject) === null || _currentObject5 === void 0 ? void 0 : _currentObject5.prototype) === 'items') {
1273
1273
  // check this cabinet has warning box
1274
1274
  payload.isWarning = (0, _utils.isWarningItem)(_currentObject);
1275
+ // check this item is available molding
1276
+ payload.isMoldingAvailable = _export2.MoldingUtils.isEnableItemForMolding(layer, _currentObject);
1275
1277
  // check this item is snapped to wall
1276
1278
  payload.isAttachedWall = _export2.MoldingUtils.isAttachedWall(layer, _currentObject);
1277
1279
  }