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
@@ -5,11 +5,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
5
5
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
6
6
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
7
7
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
8
- import { BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, EPSILON, MIDDLE_MOLDING_LOCATION, MOLDING_LOCATIONS, OVERLAP_INCLUDED, OVERLAP_LINK, OVERLAP_SAME, OVERLAP_SOME, TALL_CABINET_LAYOUTPOS, TOE_KICK_MOLDING, TOP_MOLDING_LOCATION, WALL_CABINET_LAYOUTPOS } from "../constants";
8
+ import { BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, EPSILON, MIDDLE_MOLDING_LOCATION, MOLDING_LOCATIONS, OVERLAP_INCLUDED, OVERLAP_LINK, OVERLAP_SAME, OVERLAP_SOME, TALL_CABINET_LAYOUTPOS, TOP_MOLDING_LOCATION, WALL_CABINET_LAYOUTPOS } from "../constants";
9
9
  import * as Three from 'three';
10
10
  import { convert } from "./convert-units-lite";
11
11
  import IDBroker from "./id-broker";
12
- import { getToeKickSKU, isEqualInstallationType, returnReplaceableDeepSearchType } from "../components/viewer2d/utils";
12
+ import { returnReplaceableDeepSearchType } from "../components/viewer2d/utils";
13
13
  import { GeometryUtils } from "./export";
14
14
  import { isEmpty } from "./helper";
15
15
  export function getItemRect(item) {
@@ -62,10 +62,6 @@ export function isEnableItemForMolding(layer, selItem) {
62
62
  // check this item is enable for specified molding
63
63
  else return result && hasMoldingLayout(molding, selItem.layoutpos);
64
64
  }
65
- export function isAttachedWall(layer, selItem) {
66
- var allLineRects = GeometryUtils.buildRectFromLines(layer, GeometryUtils.getAllLines(layer));
67
- return GeometryUtils.isSnappedLine(getItemRect(selItem), allLineRects);
68
- }
69
65
 
70
66
  /**
71
67
  * Check two line segments are overlap. The direction of the two line segments must be opposite.
@@ -866,236 +862,4 @@ export function createMonldingGroup(oldMG, layer, molding, catalog) {
866
862
  newMG.lines.reverse();
867
863
  newMG = getMDPoints(newMG);
868
864
  return newMG;
869
- }
870
- export function getMoldingDataOfScene(layer, catalog, doorStyle) {
871
- var moldingData = [];
872
- var items = layer.items.toArray();
873
- var moldings = [];
874
- // get all moldings info
875
- items.forEach(function (itemCat) {
876
- var _itemCat$molding;
877
- itemCat === null || itemCat === void 0 || (_itemCat$molding = itemCat.molding) === null || _itemCat$molding === void 0 || _itemCat$molding.forEach(function (molding) {
878
- if (!moldings.some(function (m) {
879
- return m.name === molding.name;
880
- })) moldings.push(molding);
881
- });
882
- });
883
-
884
- // calc normal molding
885
- moldings.forEach(function (molding) {
886
- var itemGroups = [];
887
- var temp_items = [];
888
- items.forEach(function (item) {
889
- if (item.molding.some(function (mol) {
890
- return mol.itemID === molding.itemID;
891
- }) && isEnableItemForMolding(layer, item)) {
892
- temp_items.push(item);
893
- }
894
- });
895
- if (temp_items.length) {
896
- while (temp_items.length > 0) {
897
- var itemGroup = [temp_items[0]];
898
- var _loop9 = function _loop9(_idx) {
899
- if (!itemGroup.some(function (it) {
900
- return it.id === temp_items[_idx].id;
901
- }) && isItemSnappedGroup(temp_items[_idx], itemGroup)) {
902
- itemGroup.push(temp_items[_idx]);
903
- _idx = 0;
904
- }
905
- idx = _idx;
906
- };
907
- for (var idx = 0; idx < temp_items.length; idx++) {
908
- _loop9(idx);
909
- }
910
- itemGroup.forEach(function (item) {
911
- var index = temp_items.findIndex(function (it) {
912
- return it.id === item.id;
913
- });
914
- if (index > -1) {
915
- temp_items.splice(index, 1);
916
- }
917
- });
918
- itemGroups.push(itemGroup);
919
- }
920
- var molding_totalLength = 0;
921
- itemGroups.forEach(function (itemgroup) {
922
- var allLineRects = GeometryUtils.buildRectFromLines(layer, GeometryUtils.getAllLines(layer));
923
- var items = _toConsumableArray(itemgroup);
924
- var MGlines = getLinesOfItem(items[0], allLineRects, catalog);
925
- items = sortItemsByDistance(items, items[0]);
926
- var _loop0 = function _loop0() {
927
- var itemLines = getLinesOfItem(items[i], allLineRects, catalog);
928
- var temp_MGLines = [];
929
- MGlines.forEach(function (line) {
930
- var idx = itemLines.findIndex(function (itemLine) {
931
- return isLinesOverlapped(line, itemLine);
932
- });
933
- var curItemLine = itemLines[idx];
934
- if (idx > -1) {
935
- if (!(GeometryUtils.samePoints(line[0], curItemLine[0]) && GeometryUtils.samePoints(line[1], curItemLine[1]) || GeometryUtils.samePoints(line[0], curItemLine[1]) && GeometryUtils.samePoints(line[1], curItemLine[0]))) {
936
- var MGLine = mergeOverlappedLines(line, curItemLine);
937
- temp_MGLines.push(MGLine);
938
- }
939
- itemLines.splice(idx, 1);
940
- } else {
941
- temp_MGLines.push(line);
942
- }
943
- });
944
- itemLines.forEach(function (itemLine) {
945
- return temp_MGLines.push(itemLine);
946
- });
947
- MGlines = [].concat(temp_MGLines);
948
- };
949
- for (var i = 1; i < items.length; i++) {
950
- _loop0();
951
- }
952
- MGlines.forEach(function (line) {
953
- molding_totalLength += GeometryUtils.verticesDistance(line[0], line[1]);
954
- });
955
- });
956
- molding_totalLength = convert(molding_totalLength).from('cm').to('in');
957
- moldingData.push(_objectSpread(_objectSpread({}, molding), {}, {
958
- doorStyle: doorStyle,
959
- count: Math.ceil(molding_totalLength * 1.1 / 96)
960
- }));
961
- }
962
- });
963
-
964
- // calc toe kick molding
965
- var tmp = [];
966
- items.forEach(function (item) {
967
- if (item.category === 'cabinet' && !item.cabinet_category.toLowerCase().includes('microwave')) {
968
- tmp.push(item);
969
- }
970
- });
971
- var tmpMoldingData = [];
972
- var toedoorStyles = [];
973
- tmp.map(function (item) {
974
- var _item$molding;
975
- if (item.layoutpos === BASE_CABINET_LAYOUTPOS && (isEmpty(item.molding) || ((_item$molding = item.molding) === null || _item$molding === void 0 ? void 0 : _item$molding.length) < 1 || !isEnableItemForMolding(layer, item))) {
976
- var w = item.properties.get('width').get('_length');
977
- var wUnit = item.properties.get('width').get('_unit') || 'cm';
978
- w = convert(w / 2).from(wUnit).to('cm');
979
- var h = item.properties.get('depth').get('_length');
980
- var hUnit = item.properties.get('depth').get('_unit') || 'cm';
981
- h = convert(h / 2).from(hUnit).to('cm');
982
- var outline = null;
983
- var element = catalog.elements[item.get('type')];
984
- if (!element) element = catalog.elements[returnReplaceableDeepSearchType(item.get('type'))];
985
- outline = element.info.outline;
986
- var len = 0;
987
- if (outline) {
988
- // Extract Points from `outline`
989
- var outlinePaths = outline.paths;
990
- var outlineWidth = outline.svgWidth;
991
- var outlineHeight = outline.svgHeight;
992
- var outlinePoints = []; // Hold Points Of SVG
993
- var _iterator3 = _createForOfIteratorHelper(outlinePaths),
994
- _step3;
995
- try {
996
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
997
- var path = _step3.value;
998
- var _iterator4 = _createForOfIteratorHelper(path.subPaths),
999
- _step4;
1000
- try {
1001
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
1002
- var subPath = _step4.value;
1003
- outlinePoints = outlinePoints.concat(subPath.getPoints());
1004
- }
1005
- } catch (err) {
1006
- _iterator4.e(err);
1007
- } finally {
1008
- _iterator4.f();
1009
- }
1010
- }
1011
- } catch (err) {
1012
- _iterator3.e(err);
1013
- } finally {
1014
- _iterator3.f();
1015
- }
1016
- var maxX = outlinePoints[0].x,
1017
- minX = outlinePoints[0].x;
1018
- var maxY = outlinePoints[0].y,
1019
- minY = outlinePoints[0].y;
1020
- outlinePoints.forEach(function (point) {
1021
- if (point.x > maxX) {
1022
- maxX = point.x;
1023
- }
1024
- if (point.x < minX) {
1025
- minX = point.x;
1026
- }
1027
- if (point.y > maxY) {
1028
- maxY = point.y;
1029
- }
1030
- if (point.y < minY) {
1031
- minY = point.y;
1032
- }
1033
- });
1034
- outlinePoints.forEach(function (point) {
1035
- if (GeometryUtils.isPointInRect([{
1036
- x: minX,
1037
- y: minY
1038
- }, {
1039
- x: minX,
1040
- y: maxY
1041
- }, {
1042
- x: maxX,
1043
- y: maxY
1044
- }, {
1045
- x: maxX,
1046
- y: minY
1047
- }], point)) {
1048
- if (point.x > 10) len += (point.x / outlineWidth - 0.5) * w * 2 + h * 2 - (point.y / outlineHeight - 0.5) * h * 2;
1049
- }
1050
- });
1051
- len = convert(len).from('cm').to('in');
1052
- } else {
1053
- w = convert(w * 2).from('cm').to('in');
1054
- len += w;
1055
- }
1056
- var doorIndex = toedoorStyles.findIndex(function (a) {
1057
- var iDS = item === null || item === void 0 ? void 0 : item.doorStyle;
1058
- if (!iDS) return false;
1059
- if (!iDS.hasOwnProperty('id')) {
1060
- iDS = iDS.toJS();
1061
- }
1062
- return a.doorStyle.id === iDS.id && isEqualInstallationType(a.doorStyle, iDS);
1063
- });
1064
- if (doorIndex > -1) {
1065
- toedoorStyles[doorIndex].totalLength += len;
1066
- } else {
1067
- toedoorStyles.push({
1068
- doorStyle: item.doorStyle.hasOwnProperty('id') ? item.doorStyle : item.doorStyle && item.doorStyle.toJS(),
1069
- totalLength: len
1070
- });
1071
- }
1072
- }
1073
- });
1074
- toedoorStyles.forEach(function (doorStyle) {
1075
- var skuName = getToeKickSKU(doorStyle.doorStyle, catalog);
1076
- var thumbnail = skuName ? skuName : '';
1077
- // moldings.forEach(molding => {
1078
- // if (
1079
- // molding.name ===
1080
- // getToeKickSKU(
1081
- // doorStyle.doorStyle,
1082
- // catalog,
1083
- // true
1084
- // )
1085
- // )
1086
- // thumbnail = molding.thumbnail;
1087
- // });
1088
-
1089
- doorStyle.totalLength && tmpMoldingData.push({
1090
- name: TOE_KICK_MOLDING,
1091
- sku: getToeKickSKU(doorStyle.doorStyle, catalog),
1092
- thumbnail: thumbnail,
1093
- category: 'molding',
1094
- type: 'cabinet',
1095
- doorStyle: doorStyle.doorStyle,
1096
- count: Math.ceil(doorStyle.totalLength * 1.1 / 96)
1097
- });
1098
- });
1099
- if (tmpMoldingData.length > 0) moldingData = [].concat(_toConsumableArray(moldingData), tmpMoldingData);
1100
- return moldingData;
1101
865
  }
@@ -8,13 +8,15 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports["default"] = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
13
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
15
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
16
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
16
17
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
20
  var _axios = _interopRequireDefault(require("axios"));
19
21
  var _convertUnitsLite = require("./utils/convert-units-lite");
20
22
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -30,8 +32,8 @@ var _translator = _interopRequireDefault(require("./translator/translator"));
30
32
  var _objectsUtils = require("./utils/objects-utils");
31
33
  var _version = require("./version");
32
34
  var _isolateEventHandler = require("./utils/isolate-event-handler");
33
- var _excluded = ["width", "height", "state", "stateExtractor", "measurementUnit"];
34
- 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); }
35
+ var _excluded = ["width", "height", "state", "stateExtractor"];
36
+ 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 _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); }
35
37
  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; }
36
38
  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; }
37
39
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
@@ -49,6 +51,24 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
49
51
  _this = _callSuper(this, LiteKitchenConfigurator, [props]);
50
52
 
51
53
  // utm tracking
54
+ (0, _defineProperty2["default"])(_this, "lastProcessedExternalEventId", null);
55
+ (0, _defineProperty2["default"])(_this, "handleBeforeUnload", function (e) {
56
+ var areas = _this.props.stateExtractor(_this.props.state).getIn(['scene', 'layers', _this.props.stateExtractor(_this.props.state).scene.selectedLayer, 'areas']);
57
+ if (!_this.state.isSaved && areas.size > 0) {
58
+ setTimeout(function () {
59
+ _this.setState({
60
+ savePromptVisible: true,
61
+ isLeaving: true
62
+ });
63
+ }, 500);
64
+ _this.saveProjectToStorage();
65
+
66
+ // This line is required to trigger the browser confirmation dialog
67
+ e.preventDefault();
68
+ e.returnValue = '';
69
+ return '';
70
+ }
71
+ });
52
72
  var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
53
73
  var utmStrEncoded = utmDetailParams.get('details');
54
74
  var utmRequestData = null;
@@ -321,33 +341,175 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
321
341
  catalog: this.props.catalog
322
342
  });
323
343
  }
344
+ }, {
345
+ key: "saveProjectToStorage",
346
+ value: function saveProjectToStorage() {
347
+ var _this$props = this.props,
348
+ state = _this$props.state,
349
+ stateExtractor = _this$props.stateExtractor;
350
+ var extractedState = stateExtractor(state);
351
+ var projectData = JSON.stringify(extractedState.get('scene').toJS());
352
+ sessionStorage.setItem(window.location.href, projectData);
353
+ }
324
354
  }, {
325
355
  key: "componentDidMount",
326
356
  value: function componentDidMount() {
357
+ var _this3 = this;
358
+ window.addEventListener('beforeunload', this.handleBeforeUnload);
327
359
  console.log('context =>', this.context);
328
360
  window.forRedo = [];
329
361
  var store = this.context.store;
330
- var _this$props = this.props,
331
- stateExtractor = _this$props.stateExtractor,
332
- plugins = _this$props.plugins;
362
+ var _this$props2 = this.props,
363
+ projectActions = _this$props2.projectActions,
364
+ catalog = _this$props2.catalog,
365
+ stateExtractor = _this$props2.stateExtractor,
366
+ state = _this$props2.state,
367
+ plugins = _this$props2.plugins;
368
+ projectActions.initCatalog(catalog);
369
+ var match = this.props.match;
370
+ if (sessionStorage.getItem(window.location.href)) {
371
+ var jsonData = sessionStorage.getItem(window.location.href);
372
+ projectActions.loadProject(JSON.parse(jsonData), this.props.categoryData);
373
+ sessionStorage.removeItem(window.location.href);
374
+ return;
375
+ }
333
376
  var newplugins = (0, _toConsumableArray2["default"])(plugins);
334
377
  newplugins.forEach(function (newplugin) {
335
378
  return newplugin(store, stateExtractor);
336
379
  });
380
+ if (match && match.params.pid === undefined) {
381
+ projectActions.newProject();
382
+ sessionStorage.setItem('projectTitle', 'Untitled');
383
+ projectActions.rename('Untitled');
384
+ sessionStorage.removeItem('projectId');
385
+ sessionStorage.removeItem('email');
386
+ sessionStorage.removeItem('firstName');
387
+ sessionStorage.removeItem('lastName');
388
+ sessionStorage.removeItem('usedObjects');
389
+ return;
390
+ }
391
+ if (match && match.params.pid !== undefined) {
392
+ if (match.params.pid === 'new') {
393
+ projectActions.newProject();
394
+ sessionStorage.setItem('projectTitle', 'Untitled');
395
+ projectActions.rename('Untitled');
396
+ sessionStorage.removeItem('projectId');
397
+ sessionStorage.removeItem('email');
398
+ sessionStorage.removeItem('firstName');
399
+ sessionStorage.removeItem('lastName');
400
+ sessionStorage.removeItem('usedObjects');
401
+ } else {
402
+ _axios["default"].post("".concat(constants.API_SERVER_URL, "/api/project/loadPidProject"), {
403
+ pid: match.params.pid,
404
+ visualizerName: sessionStorage.getItem('visualizerName')
405
+ }).then(/*#__PURE__*/function () {
406
+ var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(response) {
407
+ var projectElement, jsonData, _t;
408
+ return _regenerator["default"].wrap(function (_context) {
409
+ while (1) switch (_context.prev = _context.next) {
410
+ case 0:
411
+ projectElement = response.data.projectElement;
412
+ if (!(projectElement.length === 0)) {
413
+ _context.next = 1;
414
+ break;
415
+ }
416
+ return _context.abrupt("return");
417
+ case 1:
418
+ sessionStorage.setItem('projectTitle', projectElement[0].title);
419
+ projectActions.rename(projectElement[0].title);
420
+ sessionStorage.setItem('projectId', projectElement[0].id);
421
+ sessionStorage.setItem('email', projectElement[0].email);
422
+ sessionStorage.setItem('firstName', projectElement[0].firstName);
423
+ sessionStorage.setItem('lastName', projectElement[0].lastName);
424
+ sessionStorage.setItem('phone', projectElement[0].phone);
425
+ if (!projectElement[0].project_data) {
426
+ _context.next = 2;
427
+ break;
428
+ }
429
+ jsonData = JSON.parse(projectElement[0].project_data);
430
+ _context.next = 5;
431
+ break;
432
+ case 2:
433
+ _context.prev = 2;
434
+ _context.next = 3;
435
+ return _axios["default"].post("".concat(constants.API_SERVER_URL, "/api/project/loadPidData"), {
436
+ pid: match.params.pid
437
+ }).data.data;
438
+ case 3:
439
+ jsonData = _context.sent;
440
+ _context.next = 5;
441
+ break;
442
+ case 4:
443
+ _context.prev = 4;
444
+ _t = _context["catch"](2);
445
+ _this3.setState({
446
+ isSnackBarOpen: true,
447
+ snackBarMessage: _t
448
+ });
449
+ case 5:
450
+ jsonData.isLoadingCabinet = false;
451
+ projectActions.loadProject(jsonData, _this3.props.categoryData);
452
+ case 6:
453
+ case "end":
454
+ return _context.stop();
455
+ }
456
+ }, _callee, null, [[2, 4]]);
457
+ }));
458
+ return function (_x) {
459
+ return _ref.apply(this, arguments);
460
+ };
461
+ }());
462
+ }
463
+ sessionStorage.removeItem('user_type');
464
+ sessionStorage.removeItem('project_type');
465
+ sessionStorage.removeItem('project_timeline');
466
+ }
467
+ }
468
+ }, {
469
+ key: "componentWillUnmount",
470
+ value: function componentWillUnmount() {
471
+ window.removeEventListener('beforeunload', this.handleBeforeUnload);
472
+ window.onbeforeunload = null;
337
473
  }
474
+ }, {
475
+ key: "componentWillMount",
476
+ value: function componentWillMount() {}
338
477
  }, {
339
478
  key: "componentWillReceiveProps",
340
479
  value: function componentWillReceiveProps(nextProps) {
480
+ var _this4 = this;
341
481
  var stateExtractor = nextProps.stateExtractor,
342
482
  state = nextProps.state,
343
483
  projectActions = nextProps.projectActions,
344
484
  catalog = nextProps.catalog,
345
- externalEvent = nextProps.externalEvent,
346
- onInternalEvent = nextProps.onInternalEvent;
485
+ externalEvent = nextProps.externalEvent;
347
486
 
348
487
  // handle external events
349
- if (this.props.externalEvent !== externalEvent) {
350
- (0, _isolateEventHandler.handleExternalEvent)(nextProps);
488
+ if (!externalEvent) return;
489
+ var eventId = externalEvent.__eventId;
490
+ if (eventId == null) return;
491
+ if (this.lastProcessedExternalEventId === eventId) {
492
+ return; // already processed
493
+ }
494
+ this.lastProcessedExternalEventId = eventId;
495
+ try {
496
+ var result = (0, _isolateEventHandler.handleExternalEvent)(nextProps);
497
+ if (result && typeof result.then === 'function') {
498
+ result.then(function () {
499
+ var _this4$props$onExtern, _this4$props;
500
+ return (_this4$props$onExtern = (_this4$props = _this4.props).onExternalEventProcessed) === null || _this4$props$onExtern === void 0 ? void 0 : _this4$props$onExtern.call(_this4$props, eventId);
501
+ })["catch"](function () {
502
+ var _this4$props$onExtern2, _this4$props2;
503
+ return (_this4$props$onExtern2 = (_this4$props2 = _this4.props).onExternalEventProcessed) === null || _this4$props$onExtern2 === void 0 ? void 0 : _this4$props$onExtern2.call(_this4$props2, eventId);
504
+ });
505
+ } else {
506
+ var _this$props$onExterna, _this$props3;
507
+ (_this$props$onExterna = (_this$props3 = this.props).onExternalEventProcessed) === null || _this$props$onExterna === void 0 || _this$props$onExterna.call(_this$props3, eventId);
508
+ }
509
+ } catch (e) {
510
+ var _this$props$onExterna2, _this$props4;
511
+ (_this$props$onExterna2 = (_this$props4 = this.props).onExternalEventProcessed) === null || _this$props$onExterna2 === void 0 || _this$props$onExterna2.call(_this$props4, eventId);
512
+ throw e;
351
513
  }
352
514
  var plannerState = stateExtractor(state);
353
515
  var catalogReady = plannerState.getIn(['catalog', 'ready']);
@@ -366,13 +528,12 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
366
528
  }, {
367
529
  key: "render",
368
530
  value: function render() {
369
- var _this$props2 = this.props,
370
- width = _this$props2.width,
371
- height = _this$props2.height,
372
- state = _this$props2.state,
373
- stateExtractor = _this$props2.stateExtractor,
374
- measurementUnit = _this$props2.measurementUnit,
375
- props = (0, _objectWithoutProperties2["default"])(_this$props2, _excluded);
531
+ var _this$props5 = this.props,
532
+ width = _this$props5.width,
533
+ height = _this$props5.height,
534
+ state = _this$props5.state,
535
+ stateExtractor = _this$props5.stateExtractor,
536
+ props = (0, _objectWithoutProperties2["default"])(_this$props5, _excluded);
376
537
  var _this$state = this.state,
377
538
  savePopupVisible = _this$state.savePopupVisible,
378
539
  quotePopupVisible = _this$state.quotePopupVisible,
@@ -380,6 +541,8 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
380
541
  signOpen = _this$state.signOpen,
381
542
  myProjectsOpen = _this$state.myProjectsOpen;
382
543
  var contentW = width - toolbarW;
544
+ var categoryData = this.props.categoryData;
545
+ // console.log(categoryData);
383
546
  // let contentW = width - toolbarW - sidebarW;
384
547
  // let toolbarH = height - footerBarH;
385
548
  // let contentH = height - footerBarH;
@@ -390,6 +553,27 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
390
553
  var headerW = width;
391
554
  var headerH = 60;
392
555
  var extractedState = stateExtractor(state);
556
+ var doorStyle = extractedState.get('doorStyle');
557
+ if (extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== undefined && extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== null) {
558
+ var extractedStateData = extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']);
559
+ var doorIdAvailable = false;
560
+ if (this.props.categoryData.doorStyles && this.props.categoryData.doorStyles.items) {
561
+ this.props.categoryData.doorStyles.items.find(function (category) {
562
+ doorIdAvailable = category.items.find(function (style) {
563
+ var item = style.items.find(function (it) {
564
+ return it.id === extractedStateData.id;
565
+ });
566
+ if (item) {
567
+ colorItem = item;
568
+ return true;
569
+ } else {
570
+ return false;
571
+ }
572
+ });
573
+ });
574
+ }
575
+ if (doorIdAvailable) doorStyle = extractedStateData;
576
+ }
393
577
  var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extractedState.scene);
394
578
  var allVisible = firstVisit || signOpen || myProjectsOpen;
395
579
  var _scene = extractedState.getIn(['scene']);
@@ -418,8 +602,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
418
602
  style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
419
603
  height: height,
420
604
  display: 'flex',
421
- justifyContent: 'center',
422
- position: 'relative'
605
+ justifyContent: 'center'
423
606
  })
424
607
  }, /*#__PURE__*/_react["default"].createElement(_export2.Content, (0, _extends2["default"])({
425
608
  width: contentW,
@@ -433,8 +616,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
433
616
  }, props, {
434
617
  onWheel: function onWheel(event) {
435
618
  return event.preventDefault();
436
- },
437
- onInternalEvent: this.props.onInternalEvent
619
+ }
438
620
  }))));
439
621
  }
440
622
  }]);
@@ -454,7 +636,8 @@ LiteKitchenConfigurator.propTypes = {
454
636
  customContents: _propTypes["default"].object,
455
637
  softwareSignature: _propTypes["default"].string,
456
638
  configData: _propTypes["default"].object,
457
- onInternalEvent: _propTypes["default"].func
639
+ onExternalEventProcessed: _propTypes["default"].func,
640
+ externalEvent: _propTypes["default"].any
458
641
  };
459
642
  LiteKitchenConfigurator.contextTypes = {
460
643
  store: _propTypes["default"].object.isRequired