kitchen-simulator 2.0.23 → 2.0.30

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.
@@ -32,9 +32,11 @@ export function editWidth(newWidth, layerID, itemID) {
32
32
  };
33
33
  }
34
34
  export function duplicateSelected(currentObject) {
35
+ var onInternalEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
35
36
  return {
36
37
  type: DUPLICATE_SELECTED,
37
- currentObject: currentObject
38
+ currentObject: currentObject,
39
+ onInternalEvent: onInternalEvent
38
40
  };
39
41
  }
40
42
  export function replaceItem(selectedPos, currentObject, selectedObject) {
@@ -13,6 +13,7 @@ import { Item } from "../../models";
13
13
  import * as GeomUtils from "./geom-utils";
14
14
  import { loadGLTF } from "./load-obj";
15
15
  import { animateDoor, isEmpty, translateDrawer } from "../../utils/helper";
16
+ import { isWarningItem } from "../../components/viewer2d/utils";
16
17
  var INITIAL_NORMAL_MAP = '';
17
18
 
18
19
  // env Map ///////////////
@@ -174,7 +175,6 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
174
175
  var rendered = null;
175
176
  var svg_url, svg_width, svg_depth;
176
177
  if (shape_svg || el_euro_shape_svg) {
177
- var _element$toJS$doorSty;
178
178
  if (typeof shape_svg == 'string' || typeof el_euro_shape_svg == 'string') {
179
179
  if (el_DSN === 'Euro & Frameless' && el_is_euro_cds) {
180
180
  svg_url = el_euro_shape_svg;
@@ -208,12 +208,16 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
208
208
  },
209
209
  onMouseEnter: function onMouseEnter(event) {
210
210
  var bbox = event.target.getBoundingClientRect();
211
- document.getElementById('warning_box_2d').style.display = 'flex';
212
- document.getElementById('warning_box_2d').style.top = "".concat(bbox.top - 60, "px");
213
- document.getElementById('warning_box_2d').style.left = "".concat(bbox.left, "px");
211
+ if (document.getElementById('warning_box_2d')) {
212
+ document.getElementById('warning_box_2d').style.display = 'flex';
213
+ document.getElementById('warning_box_2d').style.top = "".concat(bbox.top - 60, "px");
214
+ document.getElementById('warning_box_2d').style.left = "".concat(bbox.left, "px");
215
+ }
214
216
  },
215
217
  onMouseLeave: function onMouseLeave() {
216
- document.getElementById('warning_box_2d').style.display = 'none';
218
+ if (document.getElementById('warning_box_2d')) {
219
+ document.getElementById('warning_box_2d').style.display = 'none';
220
+ }
217
221
  }
218
222
  }, /*#__PURE__*/React.createElement("circle", {
219
223
  cx: 0,
@@ -299,9 +303,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
299
303
  }), /*#__PURE__*/React.createElement("g", {
300
304
  transform: "translate(".concat(padding_width, ",").concat(padding_depth, ")")
301
305
  }, txtContent)), element.category === 'cabinet' && /*#__PURE__*/React.createElement("g", {
302
- visibility: (element === null || element === void 0 || (_element$toJS$doorSty = element.toJS().doorStyle) === null || _element$toJS$doorSty === void 0 || (_element$toJS$doorSty = _element$toJS$doorSty.doorStyles) === null || _element$toJS$doorSty === void 0 || (_element$toJS$doorSty = _element$toJS$doorSty.cds) === null || _element$toJS$doorSty === void 0 ? void 0 : _element$toJS$doorSty.filter(function (cd) {
303
- return cd.itemID == (element === null || element === void 0 ? void 0 : element.getIn(['itemID']));
304
- }).length) > 0 ? 'hidden' : 'visible'
306
+ visibility: isWarningItem(element) ? 'visible' : 'hidden'
305
307
  }, warning_buttons)));
306
308
  } else {
307
309
  rendered = /*#__PURE__*/React.createElement("g", {
package/es/class/item.js CHANGED
@@ -8,11 +8,11 @@ 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, 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 { 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 } from "../utils/helper";
13
13
  import { isUndefined } from 'util';
14
14
  import { hasMoldingLayout } from "../utils/molding";
15
- import { getInstallationSuffix } from "../components/viewer2d/utils";
15
+ import { getInstallationSuffix, isWarningItem } from "../components/viewer2d/utils";
16
16
  var allItemRect;
17
17
  var allItemSnap;
18
18
  var allLines;
@@ -262,6 +262,7 @@ var Item = /*#__PURE__*/function () {
262
262
  }, {
263
263
  key: "duplicateSelected",
264
264
  value: function duplicateSelected(state, currentObject) {
265
+ var onInternalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
265
266
  var layerID = state.getIn(['scene', 'selectedLayer']);
266
267
  var layer = state.getIn(['scene', 'layers', layerID]);
267
268
  var objectID = currentObject.id;
@@ -269,6 +270,7 @@ var Item = /*#__PURE__*/function () {
269
270
  var x = currentObject.x;
270
271
  var y = currentObject.y;
271
272
  var sceneComponentType, width, depth, rotRad;
273
+ var duplicatedElement = null;
272
274
  switch (currentObject.prototype) {
273
275
  case 'items':
274
276
  myObject = state.getIn(['scene', 'layers', layerID, 'items', objectID]);
@@ -293,6 +295,7 @@ var Item = /*#__PURE__*/function () {
293
295
  var _this$create = this.create(state, layerID, sceneComponentType, x + width * Math.cos(rotRad), y + width * Math.sin(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
294
296
  stateI = _this$create.updatedState,
295
297
  item = _this$create.item;
298
+ duplicatedElement = item;
296
299
  if (item === null) {
297
300
  alert('There are no Door Colors in this cabinet.');
298
301
  state = state.merge({
@@ -319,6 +322,7 @@ var Item = /*#__PURE__*/function () {
319
322
  var _this$create2 = this.create(state, layerID, sceneComponentType, x - width * Math.cos(rotRad), y - width * Math.sin(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
320
323
  _stateI = _this$create2.updatedState,
321
324
  _item = _this$create2.item;
325
+ duplicatedElement = _item;
322
326
  if (_item === null) {
323
327
  alert('There are no Door Colors in this cabinet.');
324
328
  state = state.merge({
@@ -345,6 +349,7 @@ var Item = /*#__PURE__*/function () {
345
349
  var _this$create3 = this.create(state, layerID, sceneComponentType, x - depth * Math.sin(rotRad), y - depth * Math.cos(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
346
350
  _stateI2 = _this$create3.updatedState,
347
351
  _item2 = _this$create3.item;
352
+ duplicatedElement = _item2;
348
353
  if (_item2 === null) {
349
354
  alert('There are no Door Colors in this cabinet.');
350
355
  state = state.merge({
@@ -371,6 +376,7 @@ var Item = /*#__PURE__*/function () {
371
376
  var _this$create4 = this.create(state, layerID, sceneComponentType, x + depth * Math.sin(rotRad), y + depth * Math.cos(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
372
377
  _stateI3 = _this$create4.updatedState,
373
378
  _item3 = _this$create4.item;
379
+ duplicatedElement = _item3;
374
380
  if (_item3 === null) {
375
381
  alert('There are no Door Colors in this cabinet.');
376
382
  state = state.merge({
@@ -448,6 +454,14 @@ var Item = /*#__PURE__*/function () {
448
454
  default:
449
455
  break;
450
456
  }
457
+ if (onInternalEvent && duplicatedElement) {
458
+ var jsElement = duplicatedElement.toJS();
459
+ if (jsElement.prototype === 'items') jsElement.isWarning = isWarningItem(duplicatedElement);
460
+ onInternalEvent({
461
+ type: INTERNAL_EVENT_DRAW_ELEMENT,
462
+ value: jsElement
463
+ });
464
+ }
451
465
  return {
452
466
  updatedState: state
453
467
  };
@@ -184,4 +184,10 @@ export var areaPolygon = function areaPolygon(points) {
184
184
  }
185
185
  var area = det / 2;
186
186
  return signed ? area : Math.abs(area);
187
+ };
188
+ export var isWarningItem = function isWarningItem(item) {
189
+ var _item$toJS$doorStyle;
190
+ return !(item !== null && item !== void 0 && (_item$toJS$doorStyle = item.toJS().doorStyle) !== null && _item$toJS$doorStyle !== void 0 && (_item$toJS$doorStyle = _item$toJS$doorStyle.doorStyles) !== null && _item$toJS$doorStyle !== void 0 && (_item$toJS$doorStyle = _item$toJS$doorStyle.cds) !== null && _item$toJS$doorStyle !== void 0 && _item$toJS$doorStyle.filter(function (cd) {
191
+ return cd.itemID == (item === null || item === void 0 ? void 0 : item.getIn(['itemID']));
192
+ }).length) > 0;
187
193
  };
@@ -16,6 +16,7 @@ import { convert } from "../../utils/convert-units-lite";
16
16
  import { Map } from 'immutable';
17
17
  import { formatNumber } from "../../utils/math";
18
18
  import { isEmpty } from "../../utils/helper"; // variables
19
+ import { isWarningItem } from "./utils";
19
20
  // variables
20
21
  var pinFlag = false;
21
22
  var sFlag = false; //for all object move
@@ -949,7 +950,7 @@ export default function Viewer2D(_ref, _ref2) {
949
950
  case 'items':
950
951
  if (elementData.part === 'duplicate') {
951
952
  var currentObject = state.getIn(['scene', 'layers', layerID, 'items', elementData.id]);
952
- itemsActions.duplicateSelected(currentObject);
953
+ itemsActions.duplicateSelected(currentObject, onInternalEvent); // send draw internal event when duplicating
953
954
  break;
954
955
  } else if (elementData.part === 'remove') {
955
956
  projectActions.remove();
@@ -959,10 +960,7 @@ export default function Viewer2D(_ref, _ref2) {
959
960
  if (document.getElementById('setting_dialog')) {
960
961
  document.getElementById('setting_dialog').style.display = 'none';
961
962
  }
962
- onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
963
- type: constants.INTERNAL_EVENT_REPLACE_CABINET,
964
- value: state.getIn(['scene', 'layers', layerID, 'items', elementData.id]).toJS()
965
- });
963
+ internalType = constants.INTERNAL_EVENT_REPLACE_CABINET;
966
964
  itemsActions.selectItem(elementData.layer, elementData.id);
967
965
  replaceCabinet(true);
968
966
  break;
@@ -1259,9 +1257,10 @@ export default function Viewer2D(_ref, _ref2) {
1259
1257
  if (internalType) {
1260
1258
  var _currentObject = null;
1261
1259
  var draggingDistance = Math.sqrt((x - mouseDownPoint.x) * (x - mouseDownPoint.x) + (y - mouseDownPoint.y) * (y - mouseDownPoint.y));
1262
- if (internalType === INTERNAL_EVENT_SELECT_ELEMENT) {
1260
+ if (internalType === INTERNAL_EVENT_SELECT_ELEMENT || internalType === constants.INTERNAL_EVENT_REPLACE_CABINET) {
1263
1261
  _currentObject = state.getIn(['scene', 'layers', layerID, elementData === null || elementData === void 0 ? void 0 : elementData.prototype, elementData === null || elementData === void 0 ? void 0 : elementData.id]);
1264
1262
  // if (
1263
+ // internalType === INTERNAL_EVENT_SELECT_ELEMENT &&
1265
1264
  // currentObject?.prototype === 'items' &&
1266
1265
  // draggingDistance > constants.EPSILON
1267
1266
  // )
@@ -1271,7 +1270,7 @@ export default function Viewer2D(_ref, _ref2) {
1271
1270
  _currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
1272
1271
  }
1273
1272
  if (_currentObject) {
1274
- var _currentObject2, _currentObject3;
1273
+ var _currentObject2, _currentObject3, _currentObject4;
1275
1274
  var payload = (_currentObject2 = _currentObject) === null || _currentObject2 === void 0 ? void 0 : _currentObject2.toJS();
1276
1275
  if (((_currentObject3 = _currentObject) === null || _currentObject3 === void 0 ? void 0 : _currentObject3.prototype) === 'lines') {
1277
1276
  // caculating length of selected line//
@@ -1281,6 +1280,17 @@ export default function Viewer2D(_ref, _ref2) {
1281
1280
  var _length3 = convert(distance).from('cm').to('in');
1282
1281
  payload.length = _length3;
1283
1282
  //////////////////////////////////////
1283
+ } else if (((_currentObject4 = _currentObject) === null || _currentObject4 === void 0 ? void 0 : _currentObject4.prototype) === 'items') {
1284
+ // check this cabinet has warning box
1285
+ payload.isWarning = isWarningItem(_currentObject);
1286
+ }
1287
+
1288
+ // send selection event befor replace event
1289
+ if (internalType === constants.INTERNAL_EVENT_REPLACE_CABINET) {
1290
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1291
+ type: INTERNAL_EVENT_SELECT_ELEMENT,
1292
+ value: payload
1293
+ });
1284
1294
  }
1285
1295
  onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1286
1296
  type: internalType,
@@ -2587,7 +2587,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2587
2587
  height: '70px',
2588
2588
  animation: 'spin 2s linear infinite'
2589
2589
  },
2590
- src: '/assets/img/loading_large.gif',
2590
+ src: '/assets/img/loading/loading.gif',
2591
2591
  alt: "img"
2592
2592
  }));
2593
2593
  } else {
@@ -2601,9 +2601,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2601
2601
  }, /*#__PURE__*/React.createElement("img", {
2602
2602
  style: {
2603
2603
  animation: 'spin 2s linear infinite',
2604
- marginTop: "22%"
2604
+ marginTop: "50%",
2605
+ width: '50px',
2606
+ height: '50px'
2605
2607
  },
2606
- src: '/assets/img/loading_large.gif',
2608
+ src: '/assets/img/loading/loading.gif',
2607
2609
  alt: "img"
2608
2610
  }));
2609
2611
  }
@@ -2620,9 +2622,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2620
2622
  style: {
2621
2623
  animation: 'spin 2s linear infinite',
2622
2624
  position: "absolute",
2623
- top: "50%"
2625
+ top: "50%",
2626
+ width: '50px',
2627
+ height: '50px'
2624
2628
  },
2625
- src: '/assets/img/loading_large.gif',
2629
+ src: '/assets/img/loading/loading.gif',
2626
2630
  alt: "img"
2627
2631
  }));
2628
2632
  } else {
@@ -6,12 +6,21 @@ export default function keyboard() {
6
6
  var state = stateExtractor(store.getState());
7
7
  var mode = state.get('mode');
8
8
  switch (event.keyCode) {
9
- case KEYBOARD_BUTTON_CODE.BACKSPACE:
10
- case KEYBOARD_BUTTON_CODE.DELETE:
11
- {
12
- if ([MODE_IDLE, MODE_3D_FIRST_PERSON, MODE_3D_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, MODE_DRAGGING_ITEM_3D].includes(mode)) store.dispatch(remove());
13
- break;
14
- }
9
+ // case KEYBOARD_BUTTON_CODE.BACKSPACE:
10
+ // case KEYBOARD_BUTTON_CODE.DELETE: {
11
+ // if (
12
+ // [
13
+ // MODE_IDLE,
14
+ // MODE_3D_FIRST_PERSON,
15
+ // MODE_3D_VIEW,
16
+ // MODE_IDLE_3D,
17
+ // MODE_ROTATING_ITEM_3D,
18
+ // MODE_DRAGGING_ITEM_3D
19
+ // ].includes(mode)
20
+ // )
21
+ // store.dispatch(remove());
22
+ // break;
23
+ // }
15
24
  case KEYBOARD_BUTTON_CODE.ESC:
16
25
  {
17
26
  store.dispatch(rollback());
@@ -17,7 +17,7 @@ export default function (state, action) {
17
17
  case EDIT_WIDTH:
18
18
  return Item.editWidth(state, action.newWidth, action.layerID, action.itemID).updatedState;
19
19
  case DUPLICATE_SELECTED:
20
- return Item.duplicateSelected(state, action.currentObject).updatedState;
20
+ return Item.duplicateSelected(state, action.currentObject, action.onInternalEvent).updatedState;
21
21
  case END_CREATING_CABINET:
22
22
  return Item.endCreatingCabinet(state).updatedState;
23
23
  case UPDATE_POPUP_OPEN:
@@ -1238,7 +1238,7 @@ function _handleExternalEvent() {
1238
1238
  return _context9.abrupt("continue", 37);
1239
1239
  case 30:
1240
1240
  distElement = getElement(evt.payload, state);
1241
- if (distElement) props.itemsActions.duplicateSelected(distElement);
1241
+ if (distElement) props.itemsActions.duplicateSelected(distElement, props.onInternalEvent);
1242
1242
  return _context9.abrupt("continue", 37);
1243
1243
  case 31:
1244
1244
  _distElement = getElement(evt.payload, state);
@@ -83,9 +83,11 @@ function editWidth(newWidth, layerID, itemID) {
83
83
  };
84
84
  }
85
85
  function duplicateSelected(currentObject) {
86
+ var onInternalEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
86
87
  return {
87
88
  type: _constants.DUPLICATE_SELECTED,
88
- currentObject: currentObject
89
+ currentObject: currentObject,
90
+ onInternalEvent: onInternalEvent
89
91
  };
90
92
  }
91
93
  function replaceItem(selectedPos, currentObject, selectedObject) {
@@ -24,6 +24,7 @@ var _models = require("../../models");
24
24
  var GeomUtils = _interopRequireWildcard(require("./geom-utils"));
25
25
  var _loadObj = require("./load-obj");
26
26
  var _helper = require("../../utils/helper");
27
+ var _utils = require("../../components/viewer2d/utils");
27
28
  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" != _typeof3(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 _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
28
29
  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; }
29
30
  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) { (0, _defineProperty2["default"])(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; }
@@ -188,7 +189,6 @@ function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corner, sha
188
189
  var rendered = null;
189
190
  var svg_url, svg_width, svg_depth;
190
191
  if (shape_svg || el_euro_shape_svg) {
191
- var _element$toJS$doorSty;
192
192
  if (typeof shape_svg == 'string' || typeof el_euro_shape_svg == 'string') {
193
193
  if (el_DSN === 'Euro & Frameless' && el_is_euro_cds) {
194
194
  svg_url = el_euro_shape_svg;
@@ -222,12 +222,16 @@ function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corner, sha
222
222
  },
223
223
  onMouseEnter: function onMouseEnter(event) {
224
224
  var bbox = event.target.getBoundingClientRect();
225
- document.getElementById('warning_box_2d').style.display = 'flex';
226
- document.getElementById('warning_box_2d').style.top = "".concat(bbox.top - 60, "px");
227
- document.getElementById('warning_box_2d').style.left = "".concat(bbox.left, "px");
225
+ if (document.getElementById('warning_box_2d')) {
226
+ document.getElementById('warning_box_2d').style.display = 'flex';
227
+ document.getElementById('warning_box_2d').style.top = "".concat(bbox.top - 60, "px");
228
+ document.getElementById('warning_box_2d').style.left = "".concat(bbox.left, "px");
229
+ }
228
230
  },
229
231
  onMouseLeave: function onMouseLeave() {
230
- document.getElementById('warning_box_2d').style.display = 'none';
232
+ if (document.getElementById('warning_box_2d')) {
233
+ document.getElementById('warning_box_2d').style.display = 'none';
234
+ }
231
235
  }
232
236
  }, /*#__PURE__*/_react["default"].createElement("circle", {
233
237
  cx: 0,
@@ -313,9 +317,7 @@ function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corner, sha
313
317
  }), /*#__PURE__*/_react["default"].createElement("g", {
314
318
  transform: "translate(".concat(padding_width, ",").concat(padding_depth, ")")
315
319
  }, txtContent)), element.category === 'cabinet' && /*#__PURE__*/_react["default"].createElement("g", {
316
- visibility: (element === null || element === void 0 || (_element$toJS$doorSty = element.toJS().doorStyle) === null || _element$toJS$doorSty === void 0 || (_element$toJS$doorSty = _element$toJS$doorSty.doorStyles) === null || _element$toJS$doorSty === void 0 || (_element$toJS$doorSty = _element$toJS$doorSty.cds) === null || _element$toJS$doorSty === void 0 ? void 0 : _element$toJS$doorSty.filter(function (cd) {
317
- return cd.itemID == (element === null || element === void 0 ? void 0 : element.getIn(['itemID']));
318
- }).length) > 0 ? 'hidden' : 'visible'
320
+ visibility: (0, _utils.isWarningItem)(element) ? 'visible' : 'hidden'
319
321
  }, warning_buttons)));
320
322
  } else {
321
323
  rendered = /*#__PURE__*/_react["default"].createElement("g", {
package/lib/class/item.js CHANGED
@@ -269,6 +269,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
269
269
  }, {
270
270
  key: "duplicateSelected",
271
271
  value: function duplicateSelected(state, currentObject) {
272
+ var onInternalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
272
273
  var layerID = state.getIn(['scene', 'selectedLayer']);
273
274
  var layer = state.getIn(['scene', 'layers', layerID]);
274
275
  var objectID = currentObject.id;
@@ -276,6 +277,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
276
277
  var x = currentObject.x;
277
278
  var y = currentObject.y;
278
279
  var sceneComponentType, width, depth, rotRad;
280
+ var duplicatedElement = null;
279
281
  switch (currentObject.prototype) {
280
282
  case 'items':
281
283
  myObject = state.getIn(['scene', 'layers', layerID, 'items', objectID]);
@@ -300,6 +302,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
300
302
  var _this$create = this.create(state, layerID, sceneComponentType, x + width * Math.cos(rotRad), y + width * Math.sin(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
301
303
  stateI = _this$create.updatedState,
302
304
  item = _this$create.item;
305
+ duplicatedElement = item;
303
306
  if (item === null) {
304
307
  alert('There are no Door Colors in this cabinet.');
305
308
  state = state.merge({
@@ -326,6 +329,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
326
329
  var _this$create2 = this.create(state, layerID, sceneComponentType, x - width * Math.cos(rotRad), y - width * Math.sin(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
327
330
  _stateI = _this$create2.updatedState,
328
331
  _item = _this$create2.item;
332
+ duplicatedElement = _item;
329
333
  if (_item === null) {
330
334
  alert('There are no Door Colors in this cabinet.');
331
335
  state = state.merge({
@@ -352,6 +356,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
352
356
  var _this$create3 = this.create(state, layerID, sceneComponentType, x - depth * Math.sin(rotRad), y - depth * Math.cos(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
353
357
  _stateI2 = _this$create3.updatedState,
354
358
  _item2 = _this$create3.item;
359
+ duplicatedElement = _item2;
355
360
  if (_item2 === null) {
356
361
  alert('There are no Door Colors in this cabinet.');
357
362
  state = state.merge({
@@ -378,6 +383,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
378
383
  var _this$create4 = this.create(state, layerID, sceneComponentType, x + depth * Math.sin(rotRad), y + depth * Math.cos(rotRad), 200, 100, rotRad * 180 / Math.PI, true, myObject.molding),
379
384
  _stateI3 = _this$create4.updatedState,
380
385
  _item3 = _this$create4.item;
386
+ duplicatedElement = _item3;
381
387
  if (_item3 === null) {
382
388
  alert('There are no Door Colors in this cabinet.');
383
389
  state = state.merge({
@@ -455,6 +461,14 @@ var Item = exports["default"] = /*#__PURE__*/function () {
455
461
  default:
456
462
  break;
457
463
  }
464
+ if (onInternalEvent && duplicatedElement) {
465
+ var jsElement = duplicatedElement.toJS();
466
+ if (jsElement.prototype === 'items') jsElement.isWarning = (0, _utils.isWarningItem)(duplicatedElement);
467
+ onInternalEvent({
468
+ type: _constants.INTERNAL_EVENT_DRAW_ELEMENT,
469
+ value: jsElement
470
+ });
471
+ }
458
472
  return {
459
473
  updatedState: state
460
474
  };
@@ -9,6 +9,7 @@ exports.getInstallationSuffix = getInstallationSuffix;
9
9
  exports.getToeKickSKU = void 0;
10
10
  exports.isEmpty = isEmpty;
11
11
  exports.isEqualInstallationType = isEqualInstallationType;
12
+ exports.isWarningItem = void 0;
12
13
  exports.makeSKUForMagento = makeSKUForMagento;
13
14
  exports.searchForSkuValue = exports.returnReplaceableDeepSearchType = void 0;
14
15
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -197,4 +198,10 @@ var areaPolygon = exports.areaPolygon = function areaPolygon(points) {
197
198
  }
198
199
  var area = det / 2;
199
200
  return signed ? area : Math.abs(area);
201
+ };
202
+ var isWarningItem = exports.isWarningItem = function isWarningItem(item) {
203
+ var _item$toJS$doorStyle;
204
+ return !(item !== null && item !== void 0 && (_item$toJS$doorStyle = item.toJS().doorStyle) !== null && _item$toJS$doorStyle !== void 0 && (_item$toJS$doorStyle = _item$toJS$doorStyle.doorStyles) !== null && _item$toJS$doorStyle !== void 0 && (_item$toJS$doorStyle = _item$toJS$doorStyle.cds) !== null && _item$toJS$doorStyle !== void 0 && _item$toJS$doorStyle.filter(function (cd) {
205
+ return cd.itemID == (item === null || item === void 0 ? void 0 : item.getIn(['itemID']));
206
+ }).length) > 0;
200
207
  };
@@ -22,10 +22,10 @@ var _convertUnitsLite = require("../../utils/convert-units-lite");
22
22
  var _immutable = require("immutable");
23
23
  var _math = require("../../utils/math");
24
24
  var _helper = require("../../utils/helper");
25
+ var _utils = require("./utils");
25
26
  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); }
26
27
  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; }
27
- 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) { (0, _defineProperty2["default"])(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; }
28
- // variables
28
+ 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) { (0, _defineProperty2["default"])(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; } // variables
29
29
  // variables
30
30
  var pinFlag = false;
31
31
  var sFlag = false; //for all object move
@@ -959,7 +959,7 @@ function Viewer2D(_ref, _ref2) {
959
959
  case 'items':
960
960
  if (elementData.part === 'duplicate') {
961
961
  var currentObject = state.getIn(['scene', 'layers', layerID, 'items', elementData.id]);
962
- itemsActions.duplicateSelected(currentObject);
962
+ itemsActions.duplicateSelected(currentObject, onInternalEvent); // send draw internal event when duplicating
963
963
  break;
964
964
  } else if (elementData.part === 'remove') {
965
965
  projectActions.remove();
@@ -969,10 +969,7 @@ function Viewer2D(_ref, _ref2) {
969
969
  if (document.getElementById('setting_dialog')) {
970
970
  document.getElementById('setting_dialog').style.display = 'none';
971
971
  }
972
- onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
973
- type: constants.INTERNAL_EVENT_REPLACE_CABINET,
974
- value: state.getIn(['scene', 'layers', layerID, 'items', elementData.id]).toJS()
975
- });
972
+ internalType = constants.INTERNAL_EVENT_REPLACE_CABINET;
976
973
  itemsActions.selectItem(elementData.layer, elementData.id);
977
974
  replaceCabinet(true);
978
975
  break;
@@ -1269,9 +1266,10 @@ function Viewer2D(_ref, _ref2) {
1269
1266
  if (internalType) {
1270
1267
  var _currentObject = null;
1271
1268
  var draggingDistance = Math.sqrt((x - mouseDownPoint.x) * (x - mouseDownPoint.x) + (y - mouseDownPoint.y) * (y - mouseDownPoint.y));
1272
- if (internalType === _constants.INTERNAL_EVENT_SELECT_ELEMENT) {
1269
+ if (internalType === _constants.INTERNAL_EVENT_SELECT_ELEMENT || internalType === constants.INTERNAL_EVENT_REPLACE_CABINET) {
1273
1270
  _currentObject = state.getIn(['scene', 'layers', layerID, elementData === null || elementData === void 0 ? void 0 : elementData.prototype, elementData === null || elementData === void 0 ? void 0 : elementData.id]);
1274
1271
  // if (
1272
+ // internalType === INTERNAL_EVENT_SELECT_ELEMENT &&
1275
1273
  // currentObject?.prototype === 'items' &&
1276
1274
  // draggingDistance > constants.EPSILON
1277
1275
  // )
@@ -1281,7 +1279,7 @@ function Viewer2D(_ref, _ref2) {
1281
1279
  _currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
1282
1280
  }
1283
1281
  if (_currentObject) {
1284
- var _currentObject2, _currentObject3;
1282
+ var _currentObject2, _currentObject3, _currentObject4;
1285
1283
  var payload = (_currentObject2 = _currentObject) === null || _currentObject2 === void 0 ? void 0 : _currentObject2.toJS();
1286
1284
  if (((_currentObject3 = _currentObject) === null || _currentObject3 === void 0 ? void 0 : _currentObject3.prototype) === 'lines') {
1287
1285
  // caculating length of selected line//
@@ -1291,6 +1289,17 @@ function Viewer2D(_ref, _ref2) {
1291
1289
  var _length3 = (0, _convertUnitsLite.convert)(distance).from('cm').to('in');
1292
1290
  payload.length = _length3;
1293
1291
  //////////////////////////////////////
1292
+ } else if (((_currentObject4 = _currentObject) === null || _currentObject4 === void 0 ? void 0 : _currentObject4.prototype) === 'items') {
1293
+ // check this cabinet has warning box
1294
+ payload.isWarning = (0, _utils.isWarningItem)(_currentObject);
1295
+ }
1296
+
1297
+ // send selection event befor replace event
1298
+ if (internalType === constants.INTERNAL_EVENT_REPLACE_CABINET) {
1299
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1300
+ type: _constants.INTERNAL_EVENT_SELECT_ELEMENT,
1301
+ value: payload
1302
+ });
1294
1303
  }
1295
1304
  onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1296
1305
  type: internalType,
@@ -2594,7 +2594,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2594
2594
  height: '70px',
2595
2595
  animation: 'spin 2s linear infinite'
2596
2596
  },
2597
- src: '/assets/img/loading_large.gif',
2597
+ src: '/assets/img/loading/loading.gif',
2598
2598
  alt: "img"
2599
2599
  }));
2600
2600
  } else {
@@ -2608,9 +2608,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2608
2608
  }, /*#__PURE__*/_react["default"].createElement("img", {
2609
2609
  style: {
2610
2610
  animation: 'spin 2s linear infinite',
2611
- marginTop: "22%"
2611
+ marginTop: "50%",
2612
+ width: '50px',
2613
+ height: '50px'
2612
2614
  },
2613
- src: '/assets/img/loading_large.gif',
2615
+ src: '/assets/img/loading/loading.gif',
2614
2616
  alt: "img"
2615
2617
  }));
2616
2618
  }
@@ -2627,9 +2629,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2627
2629
  style: {
2628
2630
  animation: 'spin 2s linear infinite',
2629
2631
  position: "absolute",
2630
- top: "50%"
2632
+ top: "50%",
2633
+ width: '50px',
2634
+ height: '50px'
2631
2635
  },
2632
- src: '/assets/img/loading_large.gif',
2636
+ src: '/assets/img/loading/loading.gif',
2633
2637
  alt: "img"
2634
2638
  }));
2635
2639
  } else {
@@ -12,12 +12,21 @@ function keyboard() {
12
12
  var state = stateExtractor(store.getState());
13
13
  var mode = state.get('mode');
14
14
  switch (event.keyCode) {
15
- case _constants.KEYBOARD_BUTTON_CODE.BACKSPACE:
16
- case _constants.KEYBOARD_BUTTON_CODE.DELETE:
17
- {
18
- if ([_constants.MODE_IDLE, _constants.MODE_3D_FIRST_PERSON, _constants.MODE_3D_VIEW, _constants.MODE_IDLE_3D, _constants.MODE_ROTATING_ITEM_3D, _constants.MODE_DRAGGING_ITEM_3D].includes(mode)) store.dispatch((0, _projectActions.remove)());
19
- break;
20
- }
15
+ // case KEYBOARD_BUTTON_CODE.BACKSPACE:
16
+ // case KEYBOARD_BUTTON_CODE.DELETE: {
17
+ // if (
18
+ // [
19
+ // MODE_IDLE,
20
+ // MODE_3D_FIRST_PERSON,
21
+ // MODE_3D_VIEW,
22
+ // MODE_IDLE_3D,
23
+ // MODE_ROTATING_ITEM_3D,
24
+ // MODE_DRAGGING_ITEM_3D
25
+ // ].includes(mode)
26
+ // )
27
+ // store.dispatch(remove());
28
+ // break;
29
+ // }
21
30
  case _constants.KEYBOARD_BUTTON_CODE.ESC:
22
31
  {
23
32
  store.dispatch((0, _projectActions.rollback)());
@@ -20,7 +20,7 @@ function _default(state, action) {
20
20
  case _constants.EDIT_WIDTH:
21
21
  return _export.Item.editWidth(state, action.newWidth, action.layerID, action.itemID).updatedState;
22
22
  case _constants.DUPLICATE_SELECTED:
23
- return _export.Item.duplicateSelected(state, action.currentObject).updatedState;
23
+ return _export.Item.duplicateSelected(state, action.currentObject, action.onInternalEvent).updatedState;
24
24
  case _constants.END_CREATING_CABINET:
25
25
  return _export.Item.endCreatingCabinet(state).updatedState;
26
26
  case _constants.UPDATE_POPUP_OPEN:
@@ -1245,7 +1245,7 @@ function _handleExternalEvent() {
1245
1245
  return _context9.abrupt("continue", 37);
1246
1246
  case 30:
1247
1247
  distElement = getElement(evt.payload, state);
1248
- if (distElement) props.itemsActions.duplicateSelected(distElement);
1248
+ if (distElement) props.itemsActions.duplicateSelected(distElement, props.onInternalEvent);
1249
1249
  return _context9.abrupt("continue", 37);
1250
1250
  case 31:
1251
1251
  _distElement = getElement(evt.payload, state);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "2.0.23",
3
+ "version": "2.0.30",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",