kitchen-simulator 3.1.15 → 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 -21
  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 -22
  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
+ }
458
+ }
459
+ }, {
460
+ key: "componentWillUnmount",
461
+ value: function componentWillUnmount() {
462
+ window.removeEventListener('beforeunload', this.handleBeforeUnload);
463
+ window.onbeforeunload = null;
328
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']);
@@ -409,8 +593,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
409
593
  style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
410
594
  height: height,
411
595
  display: 'flex',
412
- justifyContent: 'center',
413
- position: 'relative'
596
+ justifyContent: 'center'
414
597
  })
415
598
  }, /*#__PURE__*/React.createElement(Content, _extends({
416
599
  width: contentW,
@@ -424,8 +607,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
424
607
  }, props, {
425
608
  onWheel: function onWheel(event) {
426
609
  return event.preventDefault();
427
- },
428
- onInternalEvent: this.props.onInternalEvent
610
+ }
429
611
  }))));
430
612
  }
431
613
  }]);
@@ -445,7 +627,8 @@ LiteKitchenConfigurator.propTypes = {
445
627
  customContents: PropTypes.object,
446
628
  softwareSignature: PropTypes.string,
447
629
  configData: PropTypes.object,
448
- onInternalEvent: PropTypes.func
630
+ onExternalEventProcessed: PropTypes.func,
631
+ externalEvent: PropTypes.any
449
632
  };
450
633
  LiteKitchenConfigurator.contextTypes = {
451
634
  store: PropTypes.object.isRequired