kitchen-simulator 3.1.14 → 4.0.0-alpha.12

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.
Files changed (105) hide show
  1. package/es/LiteKitchenConfigurator.js +204 -24
  2. package/es/LiteRenderer.js +277 -12
  3. package/es/actions/items-actions.js +6 -10
  4. package/es/actions/lines-actions.js +1 -3
  5. package/es/actions/project-actions.js +5 -15
  6. package/es/assets/Window.hdr +2100 -0
  7. package/es/assets/gltf/door_sliding.bin +0 -0
  8. package/es/assets/img/1.jpg +0 -0
  9. package/es/catalog/areas/area/planner-element.js +5 -10
  10. package/es/catalog/catalog.js +4 -1
  11. package/es/catalog/factories/area-factory-3d.js +17 -18
  12. package/es/catalog/factories/wall-factory-3d.js +2 -2
  13. package/es/catalog/factories/wall-factory.js +8 -8
  14. package/es/catalog/lines/wall/planner-element.js +9 -18
  15. package/es/catalog/utils/exporter.js +3 -6
  16. package/es/catalog/utils/item-loader.js +197 -202
  17. package/es/catalog/utils/mtl-loader.js +2 -2
  18. package/es/catalog/utils/obj-loader.js +2 -2
  19. package/es/class/item.js +127 -107
  20. package/es/class/line.js +2 -14
  21. package/es/class/project.js +44 -150
  22. package/es/components/content.js +6 -19
  23. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  24. package/es/components/viewer2d/item.js +51 -84
  25. package/es/components/viewer2d/line.js +243 -315
  26. package/es/components/viewer2d/ruler.js +36 -16
  27. package/es/components/viewer2d/rulerDist.js +75 -44
  28. package/es/components/viewer2d/utils.js +0 -6
  29. package/es/components/viewer2d/viewer2d.js +205 -301
  30. package/es/components/viewer3d/front3D.js +2 -3
  31. package/es/components/viewer3d/libs/mtl-loader.js +2 -2
  32. package/es/components/viewer3d/libs/obj-loader.js +2 -2
  33. package/es/components/viewer3d/libs/orbit-controls.js +4 -3
  34. package/es/components/viewer3d/libs/pointer-lock-controls.js +7 -6
  35. package/es/components/viewer3d/viewer3d.js +80 -127
  36. package/es/constants.js +3 -110
  37. package/es/devLiteRenderer.js +38 -597
  38. package/es/index.js +86 -16
  39. package/es/models.js +5 -8
  40. package/es/plugins/SVGLoader.js +5 -7
  41. package/es/plugins/keyboard.js +6 -15
  42. package/es/reducers/items-reducer.js +5 -5
  43. package/es/reducers/lines-reducer.js +1 -1
  44. package/es/reducers/project-reducer.js +3 -5
  45. package/es/shared-style.js +4 -4
  46. package/es/utils/geometry.js +0 -161
  47. package/es/utils/get-edges-of-subgraphs.js +1 -1
  48. package/es/utils/graph-cycles.js +1 -1
  49. package/es/utils/graph.js +1 -1
  50. package/es/utils/helper.js +2 -67
  51. package/es/utils/isolate-event-handler.js +124 -1367
  52. package/es/utils/molding.js +2 -238
  53. package/lib/LiteKitchenConfigurator.js +205 -25
  54. package/lib/LiteRenderer.js +278 -13
  55. package/lib/actions/items-actions.js +6 -10
  56. package/lib/actions/lines-actions.js +1 -3
  57. package/lib/actions/project-actions.js +4 -15
  58. package/lib/assets/Window.hdr +2100 -0
  59. package/lib/assets/gltf/door_sliding.bin +0 -0
  60. package/lib/assets/img/1.jpg +0 -0
  61. package/lib/catalog/areas/area/planner-element.js +5 -11
  62. package/lib/catalog/catalog.js +4 -1
  63. package/lib/catalog/factories/area-factory-3d.js +14 -15
  64. package/lib/catalog/factories/wall-factory-3d.js +2 -2
  65. package/lib/catalog/factories/wall-factory.js +8 -8
  66. package/lib/catalog/lines/wall/planner-element.js +9 -19
  67. package/lib/catalog/utils/exporter.js +3 -6
  68. package/lib/catalog/utils/item-loader.js +194 -199
  69. package/lib/catalog/utils/mtl-loader.js +2 -9
  70. package/lib/catalog/utils/obj-loader.js +2 -10
  71. package/lib/class/item.js +125 -105
  72. package/lib/class/line.js +1 -13
  73. package/lib/class/project.js +43 -149
  74. package/lib/components/content.js +6 -19
  75. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  76. package/lib/components/viewer2d/item.js +50 -83
  77. package/lib/components/viewer2d/line.js +242 -315
  78. package/lib/components/viewer2d/ruler.js +35 -15
  79. package/lib/components/viewer2d/rulerDist.js +75 -44
  80. package/lib/components/viewer2d/utils.js +0 -7
  81. package/lib/components/viewer2d/viewer2d.js +205 -299
  82. package/lib/components/viewer3d/front3D.js +2 -3
  83. package/lib/components/viewer3d/libs/mtl-loader.js +2 -9
  84. package/lib/components/viewer3d/libs/obj-loader.js +2 -9
  85. package/lib/components/viewer3d/libs/orbit-controls.js +5 -11
  86. package/lib/components/viewer3d/libs/pointer-lock-controls.js +7 -13
  87. package/lib/components/viewer3d/viewer3d.js +79 -125
  88. package/lib/constants.js +7 -115
  89. package/lib/devLiteRenderer.js +33 -592
  90. package/lib/index.js +86 -16
  91. package/lib/models.js +5 -8
  92. package/lib/plugins/SVGLoader.js +5 -7
  93. package/lib/plugins/keyboard.js +6 -15
  94. package/lib/reducers/items-reducer.js +5 -5
  95. package/lib/reducers/lines-reducer.js +1 -1
  96. package/lib/reducers/project-reducer.js +2 -4
  97. package/lib/shared-style.js +4 -4
  98. package/lib/utils/geometry.js +0 -162
  99. package/lib/utils/get-edges-of-subgraphs.js +1 -6
  100. package/lib/utils/graph-cycles.js +8 -7
  101. package/lib/utils/graph.js +1 -6
  102. package/lib/utils/helper.js +3 -70
  103. package/lib/utils/isolate-event-handler.js +121 -1364
  104. package/lib/utils/molding.js +0 -238
  105. package/package.json +1 -1
@@ -1,13 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
4
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
6
6
  import _createClass from "@babel/runtime/helpers/esm/createClass";
7
7
  import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
8
8
  import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
9
9
  import _inherits from "@babel/runtime/helpers/esm/inherits";
10
- var _excluded = ["width", "height", "state", "stateExtractor", "measurementUnit"];
10
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
11
+ var _excluded = ["width", "height", "state", "stateExtractor"];
12
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
11
13
  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; }
12
14
  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; }
13
15
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
@@ -40,6 +42,24 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
40
42
  _this = _callSuper(this, LiteKitchenConfigurator, [props]);
41
43
 
42
44
  // utm tracking
45
+ _defineProperty(_this, "lastProcessedExternalEventId", null);
46
+ _defineProperty(_this, "handleBeforeUnload", function (e) {
47
+ var areas = _this.props.stateExtractor(_this.props.state).getIn(['scene', 'layers', _this.props.stateExtractor(_this.props.state).scene.selectedLayer, 'areas']);
48
+ if (!_this.state.isSaved && areas.size > 0) {
49
+ setTimeout(function () {
50
+ _this.setState({
51
+ savePromptVisible: true,
52
+ isLeaving: true
53
+ });
54
+ }, 500);
55
+ _this.saveProjectToStorage();
56
+
57
+ // This line is required to trigger the browser confirmation dialog
58
+ e.preventDefault();
59
+ e.returnValue = '';
60
+ return '';
61
+ }
62
+ });
43
63
  var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
44
64
  var utmStrEncoded = utmDetailParams.get('details');
45
65
  var utmRequestData = null;
@@ -312,33 +332,175 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
312
332
  catalog: this.props.catalog
313
333
  });
314
334
  }
335
+ }, {
336
+ key: "saveProjectToStorage",
337
+ value: function saveProjectToStorage() {
338
+ var _this$props = this.props,
339
+ state = _this$props.state,
340
+ stateExtractor = _this$props.stateExtractor;
341
+ var extractedState = stateExtractor(state);
342
+ var projectData = JSON.stringify(extractedState.get('scene').toJS());
343
+ sessionStorage.setItem(window.location.href, projectData);
344
+ }
315
345
  }, {
316
346
  key: "componentDidMount",
317
347
  value: function componentDidMount() {
348
+ var _this3 = this;
349
+ window.addEventListener('beforeunload', this.handleBeforeUnload);
318
350
  console.log('context =>', this.context);
319
351
  window.forRedo = [];
320
352
  var store = this.context.store;
321
- var _this$props = this.props,
322
- stateExtractor = _this$props.stateExtractor,
323
- plugins = _this$props.plugins;
353
+ var _this$props2 = this.props,
354
+ projectActions = _this$props2.projectActions,
355
+ catalog = _this$props2.catalog,
356
+ stateExtractor = _this$props2.stateExtractor,
357
+ state = _this$props2.state,
358
+ plugins = _this$props2.plugins;
359
+ projectActions.initCatalog(catalog);
360
+ var match = this.props.match;
361
+ if (sessionStorage.getItem(window.location.href)) {
362
+ var jsonData = sessionStorage.getItem(window.location.href);
363
+ projectActions.loadProject(JSON.parse(jsonData), this.props.categoryData);
364
+ sessionStorage.removeItem(window.location.href);
365
+ return;
366
+ }
324
367
  var newplugins = _toConsumableArray(plugins);
325
368
  newplugins.forEach(function (newplugin) {
326
369
  return newplugin(store, stateExtractor);
327
370
  });
371
+ if (match && match.params.pid === undefined) {
372
+ projectActions.newProject();
373
+ sessionStorage.setItem('projectTitle', 'Untitled');
374
+ projectActions.rename('Untitled');
375
+ sessionStorage.removeItem('projectId');
376
+ sessionStorage.removeItem('email');
377
+ sessionStorage.removeItem('firstName');
378
+ sessionStorage.removeItem('lastName');
379
+ sessionStorage.removeItem('usedObjects');
380
+ return;
381
+ }
382
+ if (match && match.params.pid !== undefined) {
383
+ if (match.params.pid === 'new') {
384
+ projectActions.newProject();
385
+ sessionStorage.setItem('projectTitle', 'Untitled');
386
+ projectActions.rename('Untitled');
387
+ sessionStorage.removeItem('projectId');
388
+ sessionStorage.removeItem('email');
389
+ sessionStorage.removeItem('firstName');
390
+ sessionStorage.removeItem('lastName');
391
+ sessionStorage.removeItem('usedObjects');
392
+ } else {
393
+ axios.post("".concat(constants.API_SERVER_URL, "/api/project/loadPidProject"), {
394
+ pid: match.params.pid,
395
+ visualizerName: sessionStorage.getItem('visualizerName')
396
+ }).then(/*#__PURE__*/function () {
397
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
398
+ var projectElement, jsonData, _t;
399
+ return _regeneratorRuntime.wrap(function (_context) {
400
+ while (1) switch (_context.prev = _context.next) {
401
+ case 0:
402
+ projectElement = response.data.projectElement;
403
+ if (!(projectElement.length === 0)) {
404
+ _context.next = 1;
405
+ break;
406
+ }
407
+ return _context.abrupt("return");
408
+ case 1:
409
+ sessionStorage.setItem('projectTitle', projectElement[0].title);
410
+ projectActions.rename(projectElement[0].title);
411
+ sessionStorage.setItem('projectId', projectElement[0].id);
412
+ sessionStorage.setItem('email', projectElement[0].email);
413
+ sessionStorage.setItem('firstName', projectElement[0].firstName);
414
+ sessionStorage.setItem('lastName', projectElement[0].lastName);
415
+ sessionStorage.setItem('phone', projectElement[0].phone);
416
+ if (!projectElement[0].project_data) {
417
+ _context.next = 2;
418
+ break;
419
+ }
420
+ jsonData = JSON.parse(projectElement[0].project_data);
421
+ _context.next = 5;
422
+ break;
423
+ case 2:
424
+ _context.prev = 2;
425
+ _context.next = 3;
426
+ return axios.post("".concat(constants.API_SERVER_URL, "/api/project/loadPidData"), {
427
+ pid: match.params.pid
428
+ }).data.data;
429
+ case 3:
430
+ jsonData = _context.sent;
431
+ _context.next = 5;
432
+ break;
433
+ case 4:
434
+ _context.prev = 4;
435
+ _t = _context["catch"](2);
436
+ _this3.setState({
437
+ isSnackBarOpen: true,
438
+ snackBarMessage: _t
439
+ });
440
+ case 5:
441
+ jsonData.isLoadingCabinet = false;
442
+ projectActions.loadProject(jsonData, _this3.props.categoryData);
443
+ case 6:
444
+ case "end":
445
+ return _context.stop();
446
+ }
447
+ }, _callee, null, [[2, 4]]);
448
+ }));
449
+ return function (_x) {
450
+ return _ref.apply(this, arguments);
451
+ };
452
+ }());
453
+ }
454
+ sessionStorage.removeItem('user_type');
455
+ sessionStorage.removeItem('project_type');
456
+ sessionStorage.removeItem('project_timeline');
457
+ }
328
458
  }
459
+ }, {
460
+ key: "componentWillUnmount",
461
+ value: function componentWillUnmount() {
462
+ window.removeEventListener('beforeunload', this.handleBeforeUnload);
463
+ window.onbeforeunload = null;
464
+ }
465
+ }, {
466
+ key: "componentWillMount",
467
+ value: function componentWillMount() {}
329
468
  }, {
330
469
  key: "componentWillReceiveProps",
331
470
  value: function componentWillReceiveProps(nextProps) {
471
+ var _this4 = this;
332
472
  var stateExtractor = nextProps.stateExtractor,
333
473
  state = nextProps.state,
334
474
  projectActions = nextProps.projectActions,
335
475
  catalog = nextProps.catalog,
336
- externalEvent = nextProps.externalEvent,
337
- onInternalEvent = nextProps.onInternalEvent;
476
+ externalEvent = nextProps.externalEvent;
338
477
 
339
478
  // handle external events
340
- if (this.props.externalEvent !== externalEvent) {
341
- handleExternalEvent(nextProps);
479
+ if (!externalEvent) return;
480
+ var eventId = externalEvent.__eventId;
481
+ if (eventId == null) return;
482
+ if (this.lastProcessedExternalEventId === eventId) {
483
+ return; // already processed
484
+ }
485
+ this.lastProcessedExternalEventId = eventId;
486
+ try {
487
+ var result = handleExternalEvent(nextProps);
488
+ if (result && typeof result.then === 'function') {
489
+ result.then(function () {
490
+ var _this4$props$onExtern, _this4$props;
491
+ return (_this4$props$onExtern = (_this4$props = _this4.props).onExternalEventProcessed) === null || _this4$props$onExtern === void 0 ? void 0 : _this4$props$onExtern.call(_this4$props, eventId);
492
+ })["catch"](function () {
493
+ var _this4$props$onExtern2, _this4$props2;
494
+ return (_this4$props$onExtern2 = (_this4$props2 = _this4.props).onExternalEventProcessed) === null || _this4$props$onExtern2 === void 0 ? void 0 : _this4$props$onExtern2.call(_this4$props2, eventId);
495
+ });
496
+ } else {
497
+ var _this$props$onExterna, _this$props3;
498
+ (_this$props$onExterna = (_this$props3 = this.props).onExternalEventProcessed) === null || _this$props$onExterna === void 0 || _this$props$onExterna.call(_this$props3, eventId);
499
+ }
500
+ } catch (e) {
501
+ var _this$props$onExterna2, _this$props4;
502
+ (_this$props$onExterna2 = (_this$props4 = this.props).onExternalEventProcessed) === null || _this$props$onExterna2 === void 0 || _this$props$onExterna2.call(_this$props4, eventId);
503
+ throw e;
342
504
  }
343
505
  var plannerState = stateExtractor(state);
344
506
  var catalogReady = plannerState.getIn(['catalog', 'ready']);
@@ -357,13 +519,12 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
357
519
  }, {
358
520
  key: "render",
359
521
  value: function render() {
360
- var _this$props2 = this.props,
361
- width = _this$props2.width,
362
- height = _this$props2.height,
363
- state = _this$props2.state,
364
- stateExtractor = _this$props2.stateExtractor,
365
- measurementUnit = _this$props2.measurementUnit,
366
- props = _objectWithoutProperties(_this$props2, _excluded);
522
+ var _this$props5 = this.props,
523
+ width = _this$props5.width,
524
+ height = _this$props5.height,
525
+ state = _this$props5.state,
526
+ stateExtractor = _this$props5.stateExtractor,
527
+ props = _objectWithoutProperties(_this$props5, _excluded);
367
528
  var _this$state = this.state,
368
529
  savePopupVisible = _this$state.savePopupVisible,
369
530
  quotePopupVisible = _this$state.quotePopupVisible,
@@ -371,6 +532,8 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
371
532
  signOpen = _this$state.signOpen,
372
533
  myProjectsOpen = _this$state.myProjectsOpen;
373
534
  var contentW = width - toolbarW;
535
+ var categoryData = this.props.categoryData;
536
+ // console.log(categoryData);
374
537
  // let contentW = width - toolbarW - sidebarW;
375
538
  // let toolbarH = height - footerBarH;
376
539
  // let contentH = height - footerBarH;
@@ -381,6 +544,27 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
381
544
  var headerW = width;
382
545
  var headerH = 60;
383
546
  var extractedState = stateExtractor(state);
547
+ var doorStyle = extractedState.get('doorStyle');
548
+ if (extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== undefined && extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== null) {
549
+ var extractedStateData = extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']);
550
+ var doorIdAvailable = false;
551
+ if (this.props.categoryData.doorStyles && this.props.categoryData.doorStyles.items) {
552
+ this.props.categoryData.doorStyles.items.find(function (category) {
553
+ doorIdAvailable = category.items.find(function (style) {
554
+ var item = style.items.find(function (it) {
555
+ return it.id === extractedStateData.id;
556
+ });
557
+ if (item) {
558
+ colorItem = item;
559
+ return true;
560
+ } else {
561
+ return false;
562
+ }
563
+ });
564
+ });
565
+ }
566
+ if (doorIdAvailable) doorStyle = extractedStateData;
567
+ }
384
568
  var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extractedState.scene);
385
569
  var allVisible = firstVisit || signOpen || myProjectsOpen;
386
570
  var _scene = extractedState.getIn(['scene']);
@@ -405,15 +589,11 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
405
589
  extractedState = extractedState.merge({
406
590
  viewer2D: _viewer2D
407
591
  });
408
-
409
- // set the measurement unit after project setup
410
- if (measurementUnit) this.props.viewer2DActions.updateCeilHeightUnit(measurementUnit);
411
592
  return /*#__PURE__*/React.createElement("section", null, /*#__PURE__*/React.createElement("div", {
412
593
  style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
413
594
  height: height,
414
595
  display: 'flex',
415
- justifyContent: 'center',
416
- position: 'relative'
596
+ justifyContent: 'center'
417
597
  })
418
598
  }, /*#__PURE__*/React.createElement(Content, _extends({
419
599
  width: contentW,
@@ -427,8 +607,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
427
607
  }, props, {
428
608
  onWheel: function onWheel(event) {
429
609
  return event.preventDefault();
430
- },
431
- onInternalEvent: this.props.onInternalEvent
610
+ }
432
611
  }))));
433
612
  }
434
613
  }]);
@@ -448,7 +627,8 @@ LiteKitchenConfigurator.propTypes = {
448
627
  customContents: PropTypes.object,
449
628
  softwareSignature: PropTypes.string,
450
629
  configData: PropTypes.object,
451
- onInternalEvent: PropTypes.func
630
+ onExternalEventProcessed: PropTypes.func,
631
+ externalEvent: PropTypes.any
452
632
  };
453
633
  LiteKitchenConfigurator.contextTypes = {
454
634
  store: PropTypes.object.isRequired