kitchen-simulator 11.0.0-react-18 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/es/LiteKitchenConfigurator.js +42 -11
  2. package/es/LiteRenderer.js +2 -24
  3. package/es/actions/export.js +25 -12
  4. package/es/analytics/ga4.js +188 -0
  5. package/es/catalog/utils/item-loader.js +4 -4
  6. package/es/class/item.js +29 -7
  7. package/es/class/line.js +1 -3
  8. package/es/components/content.js +20 -5
  9. package/es/components/export.js +6 -4
  10. package/es/components/style/form-number-input.js +7 -5
  11. package/es/components/style/form-submit-button.js +25 -0
  12. package/es/components/viewer2d/group.js +6 -5
  13. package/es/components/viewer2d/item.js +9 -9
  14. package/es/components/viewer2d/line.js +18 -47
  15. package/es/components/viewer2d/rulerX.js +9 -8
  16. package/es/components/viewer2d/rulerY.js +9 -8
  17. package/es/components/viewer2d/scene.js +9 -9
  18. package/es/components/viewer2d/state.js +1 -1
  19. package/es/components/viewer2d/utils.js +0 -6
  20. package/es/components/viewer2d/viewer2d.js +35 -31
  21. package/es/components/viewer3d/ruler-utils/layer3D.js +2 -2
  22. package/es/components/viewer3d/scene-creator.js +40 -75
  23. package/es/components/viewer3d/viewer3d-first-person.js +13 -8
  24. package/es/components/viewer3d/viewer3d.js +19 -15
  25. package/es/devLiteRenderer.js +913 -0
  26. package/es/events/external/handleExternalEvent.js +1 -0
  27. package/es/events/external/handleExternalEvent.util.js +330 -347
  28. package/es/events/external/handlers.changeDoorStyle.js +5 -3
  29. package/es/events/external/handlers.loadProject.js +5 -3
  30. package/es/events/external/handlers.syncScene.js +1 -1
  31. package/es/mappings/external-events/mappers/ccdfMapper.js +14 -8
  32. package/es/shared/domain/cabinet-warning.js +15 -0
  33. package/es/utils/geometry.js +4 -7
  34. package/es/utils/helper.js +81 -22
  35. package/es/utils/skinPanelEngine.js +5 -9
  36. package/lib/LiteKitchenConfigurator.js +42 -11
  37. package/lib/LiteRenderer.js +3 -25
  38. package/lib/actions/export.js +35 -39
  39. package/lib/analytics/ga4.js +194 -0
  40. package/lib/catalog/utils/item-loader.js +3 -3
  41. package/lib/class/item.js +29 -7
  42. package/lib/class/line.js +1 -3
  43. package/lib/components/content.js +19 -4
  44. package/lib/components/export.js +6 -16
  45. package/lib/components/style/form-number-input.js +7 -5
  46. package/lib/components/style/form-submit-button.js +35 -0
  47. package/lib/components/viewer2d/group.js +6 -5
  48. package/lib/components/viewer2d/item.js +8 -8
  49. package/lib/components/viewer2d/line.js +18 -47
  50. package/lib/components/viewer2d/rulerX.js +9 -8
  51. package/lib/components/viewer2d/rulerY.js +9 -8
  52. package/lib/components/viewer2d/scene.js +9 -9
  53. package/lib/components/viewer2d/state.js +1 -1
  54. package/lib/components/viewer2d/utils.js +0 -7
  55. package/lib/components/viewer2d/viewer2d.js +33 -29
  56. package/lib/components/viewer3d/ruler-utils/layer3D.js +2 -2
  57. package/lib/components/viewer3d/scene-creator.js +39 -75
  58. package/lib/components/viewer3d/viewer3d-first-person.js +13 -8
  59. package/lib/components/viewer3d/viewer3d.js +19 -15
  60. package/lib/devLiteRenderer.js +917 -0
  61. package/lib/events/external/handleExternalEvent.js +1 -0
  62. package/lib/events/external/handleExternalEvent.util.js +330 -347
  63. package/lib/events/external/handlers.changeDoorStyle.js +5 -3
  64. package/lib/events/external/handlers.loadProject.js +5 -3
  65. package/lib/events/external/handlers.syncScene.js +1 -1
  66. package/lib/mappings/external-events/mappers/ccdfMapper.js +14 -8
  67. package/lib/shared/domain/cabinet-warning.js +20 -0
  68. package/lib/utils/geometry.js +4 -7
  69. package/lib/utils/helper.js +82 -24
  70. package/lib/utils/skinPanelEngine.js +4 -8
  71. package/package.json +21 -6
@@ -47,7 +47,7 @@ function _handleChangeDoorStyleEvent() {
47
47
  case 4:
48
48
  ccdf_list = [];
49
49
  _loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
50
- var item, _doorStyle$id2, _item$long_name;
50
+ var item, _item$ccdf$catalog_ca, _item$ccdf, _item$ccdf$cabinet_id, _item$ccdf2, _doorStyle$id2, _item$long_name;
51
51
  return _regenerator["default"].wrap(function (_context2) {
52
52
  while (1) switch (_context2.prev = _context2.next) {
53
53
  case 0:
@@ -58,9 +58,10 @@ function _handleChangeDoorStyleEvent() {
58
58
  ccdf_list.push({
59
59
  cabinet_sku: item.type,
60
60
  sizeinfo: item.sizeinfo,
61
- catalog_cabinet_sku: item.sku_number,
61
+ catalog_cabinet_sku: (_item$ccdf$catalog_ca = item === null || item === void 0 || (_item$ccdf = item.ccdf) === null || _item$ccdf === void 0 ? void 0 : _item$ccdf.catalog_cabinet_sku) !== null && _item$ccdf$catalog_ca !== void 0 ? _item$ccdf$catalog_ca : item.sku_number,
62
+ cabinet_id: (_item$ccdf$cabinet_id = item === null || item === void 0 || (_item$ccdf2 = item.ccdf) === null || _item$ccdf2 === void 0 ? void 0 : _item$ccdf2.cabinet_id) !== null && _item$ccdf$cabinet_id !== void 0 ? _item$ccdf$cabinet_id : null,
62
63
  ccdf: item.ccdf,
63
- door_finish_id: (_doorStyle$id2 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id2 !== void 0 ? _doorStyle$id2 : null,
64
+ target_door_finish_id: (_doorStyle$id2 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id2 !== void 0 ? _doorStyle$id2 : null,
64
65
  long_name: (_item$long_name = item === null || item === void 0 ? void 0 : item.long_name) !== null && _item$long_name !== void 0 ? _item$long_name : null,
65
66
  scene_cabinet_id: item.id
66
67
  });
@@ -87,6 +88,7 @@ function _handleChangeDoorStyleEvent() {
87
88
  (_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
88
89
  type: INTERNAL_EVENT_ITEMS_CATALOG,
89
90
  value: {
91
+ event_type: 'change_door_style',
90
92
  ccdf_list: ccdf_list
91
93
  }
92
94
  },
@@ -38,13 +38,14 @@ function _handleLoadProjectEvent() {
38
38
  if (!ccdf_list.some(function (v) {
39
39
  return v.scene_cabinet_id === it.id;
40
40
  })) {
41
- var _it$long_name;
41
+ var _it$ccdf$catalog_cabi, _it$ccdf, _it$ccdf$cabinet_id, _it$ccdf2, _it$ccdf$door_finish_, _it$ccdf3, _it$long_name;
42
42
  ccdf_list.push({
43
43
  cabinet_sku: it.type,
44
44
  sizeinfo: it.sizeinfo,
45
- catalog_cabinet_sku: it.sku_number,
45
+ catalog_cabinet_sku: (_it$ccdf$catalog_cabi = it === null || it === void 0 || (_it$ccdf = it.ccdf) === null || _it$ccdf === void 0 ? void 0 : _it$ccdf.catalog_cabinet_sku) !== null && _it$ccdf$catalog_cabi !== void 0 ? _it$ccdf$catalog_cabi : it.sku_number,
46
+ cabinet_id: (_it$ccdf$cabinet_id = it === null || it === void 0 || (_it$ccdf2 = it.ccdf) === null || _it$ccdf2 === void 0 ? void 0 : _it$ccdf2.cabinet_id) !== null && _it$ccdf$cabinet_id !== void 0 ? _it$ccdf$cabinet_id : it === null || it === void 0 ? void 0 : it.itemID,
46
47
  ccdf: it.ccdf,
47
- door_finish_id: it.doorStyle.id,
48
+ target_door_finish_id: (_it$ccdf$door_finish_ = it === null || it === void 0 || (_it$ccdf3 = it.ccdf) === null || _it$ccdf3 === void 0 ? void 0 : _it$ccdf3.door_finish_id) !== null && _it$ccdf$door_finish_ !== void 0 ? _it$ccdf$door_finish_ : it.doorStyle.id,
48
49
  long_name: (_it$long_name = it === null || it === void 0 ? void 0 : it.long_name) !== null && _it$long_name !== void 0 ? _it$long_name : null,
49
50
  scene_cabinet_id: it.id
50
51
  });
@@ -59,6 +60,7 @@ function _handleLoadProjectEvent() {
59
60
  (_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
60
61
  type: _constants.INTERNAL_EVENT_ITEMS_CATALOG,
61
62
  value: {
63
+ event_type: 'load_project',
62
64
  ccdf_list: ccdf_list
63
65
  }
64
66
  }, /*#__PURE__*/function () {
@@ -15,7 +15,7 @@ function handleSyncScene(props, state, layer, layerId, getMoldingDataOfScene2, c
15
15
 
16
16
  // get skin panel data
17
17
  var skinPanelExclusionSKUs = (_props$configData$ski = props === null || props === void 0 || (_props$configData2 = props.configData) === null || _props$configData2 === void 0 ? void 0 : _props$configData2.skinPanelExclusionSKUs) !== null && _props$configData$ski !== void 0 ? _props$configData$ski : [];
18
- sceneData.layers[layerId].skinPanelData = computeSkinPanels(layer, skinPanelExclusionSKUs, props.catalog);
18
+ sceneData.layers[layerId].skinPanelData = computeSkinPanels(layer, skinPanelExclusionSKUs);
19
19
 
20
20
  // send scene object from 3DTool to HostApp using internalEvent
21
21
  (_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
@@ -36,9 +36,14 @@ function ccdfMapper(ccdf_list, layer) {
36
36
  if (!(0, _utils.isEmpty)(ccdf === null || ccdf === void 0 ? void 0 : ccdf.id)) {
37
37
  cdfId = ccdf.id;
38
38
  }
39
- var assets3d = ccdf === null || ccdf === void 0 ? void 0 : ccdf.assets3d;
39
+ var assets3d = Array.isArray(ccdf === null || ccdf === void 0 ? void 0 : ccdf.assets3d) ? ccdf.assets3d : [];
40
40
  var updatedAssets3D = (0, _toConsumableArray2["default"])(assets3d);
41
- // make structure
41
+
42
+ // Always set base cabinet gltf even when there are no door/drawer assets.
43
+ // This ensures we can render a naked cabinet (base-only) for unsupported door styles.
44
+ structure.base = (ccdf === null || ccdf === void 0 ? void 0 : ccdf.gltf) || cd.gltf;
45
+
46
+ // make structure (augment assets3d with door handles)
42
47
  assets3d.forEach(function (asItem) {
43
48
  // make door handle
44
49
  if (!(0, _utils.isEmpty)(asItem === null || asItem === void 0 ? void 0 : asItem.placeholder_name)) {
@@ -53,8 +58,6 @@ function ccdfMapper(ccdf_list, layer) {
53
58
  }
54
59
  });
55
60
  updatedAssets3D.forEach(function (asitem) {
56
- // set base field with gltf
57
- structure.base = (ccdf === null || ccdf === void 0 ? void 0 : ccdf.gltf) || cd.gltf;
58
61
  if (!(0, _utils.isEmpty)(asitem === null || asitem === void 0 ? void 0 : asitem.placeholder_name)) {
59
62
  // make the structure using placeholder_name and gltf
60
63
  var phName = asitem.placeholder_name;
@@ -65,10 +68,13 @@ function ccdfMapper(ccdf_list, layer) {
65
68
  }
66
69
  });
67
70
  // make tempPlaceholders
68
- tempPlaceholders.push({
69
- structure: structure,
70
- id: cdfId
71
- });
71
+ // Only push when we have at least a base cabinet gltf to render.
72
+ if (!(0, _utils.isEmpty)(structure === null || structure === void 0 ? void 0 : structure.base)) {
73
+ tempPlaceholders.push({
74
+ structure: structure,
75
+ id: cdfId
76
+ });
77
+ }
72
78
  // make structure_json
73
79
  structure_json = {
74
80
  tempPlaceholders: tempPlaceholders
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isWarningCabinet = isWarningCabinet;
7
+ var _constants = require("../../constants");
8
+ var _immutable = require("../objects/immutable");
9
+ // Centralized warning heuristic for cabinets across 2D/3D.
10
+ // Rule: a cabinet is "warning" when there are no assets for the current door style.
11
+
12
+ // Implementation: return true if item.category === 'cabinet' and (no ccdf or empty ccdf.assets3d)
13
+ function isWarningCabinet(item) {
14
+ var _js$ccdf;
15
+ var js = (0, _immutable.toJSIfNeeded)(item);
16
+ var isCabinet = (js === null || js === void 0 ? void 0 : js.category) === _constants.ITEM_TYPE.CABINET;
17
+ var assets3d = js === null || js === void 0 || (_js$ccdf = js.ccdf) === null || _js$ccdf === void 0 ? void 0 : _js$ccdf.assets3d;
18
+ var hasAssets3d = !!assets3d && Array.isArray(assets3d) && assets3d.length > 0;
19
+ return isCabinet && !hasAssets3d;
20
+ }
@@ -843,7 +843,8 @@ function getAllItemSpecified(scene, catalog, filter) {
843
843
  rotRad: item.rotation / 180 * Math.PI
844
844
  };
845
845
  var cat = item.type ? findCatalogElement(catalog, item.type) : null;
846
- var info = cat === null || cat === void 0 ? void 0 : cat.info;
846
+ val.layoutpos = item.layoutpos;
847
+ val.is_corner = item.is_corner;
847
848
  var props = item.properties;
848
849
  var getSize = function getSize(key) {
849
850
  var _props$getIn, _props$getIn2, _props$getIn3;
@@ -856,15 +857,11 @@ function getAllItemSpecified(scene, catalog, filter) {
856
857
  depth: getSize('depth')
857
858
  };
858
859
  val.item = item;
859
- if (info) {
860
- val.layoutpos = info.layoutpos;
861
- val.is_corner = info.is_corner;
862
- }
863
860
 
864
861
  // Filter check
865
862
  if (Array.isArray(filter)) {
866
- if (info && !filter.includes(info.layoutpos)) return;
867
- } else if ((info === null || info === void 0 ? void 0 : info.layoutpos) !== filter || (0, _helper.isEmpty)(cat) || (cat === null || cat === void 0 ? void 0 : cat.type) === 'appliance' && ['Cook Top', 'Microwave'].includes(cat === null || cat === void 0 || (_cat$obj = cat.obj) === null || _cat$obj === void 0 ? void 0 : _cat$obj.category)) {
863
+ if (!val.layoutpos || !filter.includes(val.layoutpos)) return;
864
+ } else if (val.layoutpos !== filter || (0, _helper.isEmpty)(cat) || (cat === null || cat === void 0 ? void 0 : cat.type) === 'appliance' && ['Cook Top', 'Microwave'].includes(cat === null || cat === void 0 || (_cat$obj = cat.obj) === null || _cat$obj === void 0 ? void 0 : _cat$obj.category)) {
868
865
  return;
869
866
  }
870
867
 
@@ -11,9 +11,8 @@ exports.base64Decode = void 0;
11
11
  exports.centering2D = centering2D;
12
12
  exports.compareSVGRect = void 0;
13
13
  exports.debugUtil = debugUtil;
14
- exports.getPathInfo = exports.getPath = void 0;
15
- exports.getSkuAliasFromCatalog = getSkuAliasFromCatalog;
16
- exports.getSkuAliasFromCatalogElement = getSkuAliasFromCatalogElement;
14
+ exports.getCatalogCabinetSku = getCatalogCabinetSku;
15
+ exports.getSignedUrl = exports.getPathInfo = exports.getPath = void 0;
17
16
  exports.handleCamRect = handleCamRect;
18
17
  exports.isCeilLimitation = isCeilLimitation;
19
18
  exports.isElevationView = isElevationView;
@@ -33,17 +32,87 @@ var _HDRCubeTextureLoader = require("three/examples/jsm/loaders/HDRCubeTextureLo
33
32
  var _constants = require("../constants");
34
33
  var Three = _interopRequireWildcard(require("three"));
35
34
  var _utils = require("./../components/viewer2d/utils");
35
+ var _cabinetWarning = require("../shared/domain/cabinet-warning");
36
36
  var _convertUnitsLite = require("./convert-units-lite");
37
37
  var _math = require("./math");
38
+ var _awsSdk = _interopRequireDefault(require("aws-sdk"));
38
39
  var _export = require("./export");
39
40
  var _geometry = require("./geometry");
41
+ var _immutable = require("../shared/objects/immutable");
40
42
  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 _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); }
41
43
  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; }
42
44
  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; }
45
+ var s3 = new _awsSdk["default"].S3({
46
+ accessKeyId: process.env.REACT_APP_AWS_ID,
47
+ secretAccessKey: process.env.REACT_APP_AWS_SECRET
48
+ });
49
+ var s3ParseUrl = function s3ParseUrl(url) {
50
+ var _decodedUrl = decodeURIComponent(url);
51
+ var _result = null;
52
+
53
+ // http://s3.amazonaws.com/bucket/key1/key2
54
+ var match = decodedUrl.match(/^https?:\/\/s3.amazonaws.com\/([^\/]+)\/?(.*?)$/);
55
+ if (_match) {
56
+ _result = {
57
+ bucket: _match[1],
58
+ key: _match[2],
59
+ region: ''
60
+ };
61
+ }
62
+
63
+ // http://s3-aws-region.amazonaws.com/bucket/key1/key2
64
+ match = decodedUrl.match(/^https?:\/\/s3-([^.]+).amazonaws.com\/([^\/]+)\/?(.*?)$/);
65
+ if (_match) {
66
+ _result = {
67
+ bucket: _match[2],
68
+ key: _match[3],
69
+ region: _match[1]
70
+ };
71
+ }
72
+
73
+ // http://bucket.s3.amazonaws.com/key1/key2
74
+ match = decodedUrl.match(/^https?:\/\/([^.]+).s3.amazonaws.com\/?(.*?)$/);
75
+ if (_match) {
76
+ _result = {
77
+ bucket: _match[1],
78
+ key: _match[2],
79
+ region: ''
80
+ };
81
+ }
82
+
83
+ // http://bucket.s3-aws-region.amazonaws.com/key1/key2 or,
84
+ // http://bucket.s3.aws-region.amazonaws.com/key1/key2
85
+ match = decodedUrl.match(/^https?:\/\/([^.]+).(?:s3-|s3\.)([^.]+).amazonaws.com\/?(.*?)$/);
86
+ if (_match) {
87
+ _result = {
88
+ bucket: _match[1],
89
+ key: _match[3],
90
+ region: _match[2]
91
+ };
92
+ }
93
+ return _result;
94
+ };
43
95
  var textureCube = exports.textureCube = new _HDRCubeTextureLoader.HDRCubeTextureLoader().setPath('/catalog/envMap/').load(_constants.HDR_URLS, function () {
44
96
  textureCube.magFilter = Three.LinearFilter;
45
97
  textureCube.needsUpdate = true;
46
98
  });
99
+ var getSignedUrl = exports.getSignedUrl = function getSignedUrl(url) {
100
+ if (!url) return url;
101
+ var signedUrl = url;
102
+ try {
103
+ var _s3ParseUrl = s3ParseUrl(url),
104
+ bucket = _s3ParseUrl.bucket,
105
+ key = _s3ParseUrl.key;
106
+ signedUrl = s3.getSignedUrl('getObject', {
107
+ Bucket: bucket,
108
+ Key: key,
109
+ ResponseCacheControl: 'no-cache'
110
+ });
111
+ } catch (e) {
112
+ signedUrl = url;
113
+ }
114
+ return signedUrl;
115
+ };
47
116
  var base64Decode = exports.base64Decode = function base64Decode(targetStr) {
48
117
  if (!targetStr) return null;
49
118
  try {
@@ -361,11 +430,11 @@ function centering2D(state) {
361
430
  if (viewer2DActions) updateViwer2D(viewer, viewer2DActions);
362
431
  return state;
363
432
  }
364
- function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
365
- var pointArray = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
433
+ function updatePayloadOfInternalEvent(currentObject, layer) {
434
+ var pointArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
366
435
  if (isEmpty(currentObject)) return null;
367
436
  var updatedPayload = currentObject.toJS();
368
- if (isEmpty(layer) || isEmpty(catalog)) return updatedPayload;
437
+ if (isEmpty(layer)) return updatedPayload;
369
438
  if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.prototype) === 'lines') {
370
439
  // caculating length of selected line//
371
440
  var v_a = layer.vertices.get(currentObject.vertices.get(0));
@@ -376,7 +445,7 @@ function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
376
445
  //////////////////////////////////////
377
446
  } else if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.prototype) === 'items') {
378
447
  // check this cabinet has warning box
379
- updatedPayload.isWarning = (0, _utils.isWarningItem)(currentObject);
448
+ updatedPayload.isWarning = (0, _cabinetWarning.isWarningCabinet)(currentObject);
380
449
  // check this item is available molding
381
450
  updatedPayload.isMoldingAvailable = _export.MoldingUtils.isEnableItemForMolding(layer, currentObject);
382
451
  // check this item is snapped to wall
@@ -385,7 +454,7 @@ function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
385
454
  if (pointArray) updatedPayload.distArray = pointArray;
386
455
 
387
456
  // update sku_number using sku_array
388
- updatedPayload.sku_number = getSkuAliasFromCatalog(catalog, currentObject);
457
+ updatedPayload.sku_number = getCatalogCabinetSku(currentObject);
389
458
  } else if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.prototype) === 'holes') {
390
459
  var _calcDistancesFromHol = (0, _geometry.calcDistancesFromHoleToNearestOneOrWall)(currentObject, layer),
391
460
  distLeft = _calcDistancesFromHol.distLeft,
@@ -403,20 +472,9 @@ function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
403
472
  }
404
473
  return updatedPayload;
405
474
  }
406
- function getSkuAliasFromCatalog(catalog, sceneObject) {
407
- var _catalog$elements;
408
- var sceneObjectJS = typeof (sceneObject === null || sceneObject === void 0 ? void 0 : sceneObject.toJS) === 'function' ? sceneObject.toJS() : sceneObject;
409
- var elementName = sceneObjectJS === null || sceneObjectJS === void 0 ? void 0 : sceneObjectJS.name;
410
- var catalogElement = catalog === null || catalog === void 0 || (_catalog$elements = catalog.elements) === null || _catalog$elements === void 0 ? void 0 : _catalog$elements[elementName];
411
- return getSkuAliasFromCatalogElement(catalogElement, sceneObjectJS);
412
- }
413
- function getSkuAliasFromCatalogElement(catalogElement, sceneObject) {
414
- var _sceneObjectJS$doorSt, _catalogElement$obj, _skuAlias$sku;
415
- var sceneObjectJS = typeof (sceneObject === null || sceneObject === void 0 ? void 0 : sceneObject.toJS) === 'function' ? sceneObject.toJS() : sceneObject;
416
- var doorColorId = sceneObjectJS === null || sceneObjectJS === void 0 || (_sceneObjectJS$doorSt = sceneObjectJS.doorStyle) === null || _sceneObjectJS$doorSt === void 0 ? void 0 : _sceneObjectJS$doorSt.id;
417
- var skuArray = catalogElement === null || catalogElement === void 0 || (_catalogElement$obj = catalogElement.obj) === null || _catalogElement$obj === void 0 ? void 0 : _catalogElement$obj.skuArray;
418
- var skuAlias = skuArray === null || skuArray === void 0 ? void 0 : skuArray.find(function (sku) {
419
- return sku.door_color_id === doorColorId;
420
- });
421
- return (_skuAlias$sku = skuAlias === null || skuAlias === void 0 ? void 0 : skuAlias.sku) !== null && _skuAlias$sku !== void 0 ? _skuAlias$sku : sceneObjectJS === null || sceneObjectJS === void 0 ? void 0 : sceneObjectJS.sku_number;
475
+ function getCatalogCabinetSku(sceneObject) {
476
+ var _sceneObjectJS$ccdf;
477
+ var sceneObjectJS = (0, _immutable.toJSIfNeeded)(sceneObject);
478
+ var ccdfSku = sceneObjectJS === null || sceneObjectJS === void 0 || (_sceneObjectJS$ccdf = sceneObjectJS.ccdf) === null || _sceneObjectJS$ccdf === void 0 ? void 0 : _sceneObjectJS$ccdf.catalog_cabinet_sku;
479
+ return ccdfSku !== null && ccdfSku !== void 0 ? ccdfSku : '';
422
480
  }
@@ -501,16 +501,12 @@ function buildSkinPanelData(faces) {
501
501
  });
502
502
  return result;
503
503
  }
504
- function shouldExcludeSkinPanel(itemJS, exclusionSet, catalog) {
505
- var _itemJS$doorStyle;
506
- var cabinetSku = (0, _helper.getSkuAliasFromCatalog)(catalog, itemJS);
507
- var doorColorSku = itemJS === null || itemJS === void 0 || (_itemJS$doorStyle = itemJS.doorStyle) === null || _itemJS$doorStyle === void 0 ? void 0 : _itemJS$doorStyle.sku;
508
- if (!cabinetSku || !doorColorSku) return false;
509
- return exclusionSet.has("".concat(cabinetSku, "-").concat(doorColorSku));
504
+ function shouldExcludeSkinPanel(itemJS, exclusionSet) {
505
+ var catalogCabinetSku = (0, _helper.getCatalogCabinetSku)(itemJS);
506
+ return exclusionSet.has(catalogCabinetSku);
510
507
  }
511
508
  function computeSkinPanels(layer) {
512
509
  var skinPanelExclusionSKUs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
513
- var catalog = arguments.length > 2 ? arguments[2] : undefined;
514
510
  var exclusionSet = new Set(skinPanelExclusionSKUs);
515
511
 
516
512
  // Get candidate skin panel items and other items
@@ -518,7 +514,7 @@ function computeSkinPanels(layer) {
518
514
  skinPanelItems = _collectLayerItems.skinPanelItems,
519
515
  otherItems = _collectLayerItems.otherItems;
520
516
  var filteredSkinPanelItems = skinPanelItems.filter(function (item) {
521
- return !shouldExcludeSkinPanel(item.toJS(), exclusionSet, catalog);
517
+ return !shouldExcludeSkinPanel(item.toJS(), exclusionSet);
522
518
  });
523
519
 
524
520
  // Get all skin face list of [skinPanelItems] & [otherItems]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "11.0.0-react-18",
3
+ "version": "11.0.0",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -61,6 +61,7 @@
61
61
  "dependencies": {
62
62
  "@babel/runtime": "^7.28.4",
63
63
  "@sentry/react": "^9.10.1",
64
+ "aws-sdk": "^2.984.0",
64
65
  "axios": "^0.20.0",
65
66
  "camera-controls": "^2.8.5",
66
67
  "clsx": "^2.1.1",
@@ -75,26 +76,36 @@
75
76
  "polylabel": "1.0.2",
76
77
  "posthog-js": "^1.271.0",
77
78
  "prop-types": "^15.8.1",
78
- "react": "^18.2.0",
79
- "react-dom": "^18.2.0",
80
- "react-redux": "^8.1.0",
81
- "react-svg-pan-zoom": "^3.12.1",
82
- "redux": "^4.2.1",
79
+ "react": "^16.9.0",
80
+ "react-container-dimensions": "1.4.1",
81
+ "react-dom": "16.9.0",
82
+ "react-hotjar": "^1.0.11",
83
+ "react-icons": "3.5.0",
84
+ "react-redux": "5.0.7",
85
+ "react-svg-pan-zoom": "2.18.0",
86
+ "redux": "4.0.1",
83
87
  "three": "0.166.0",
84
88
  "moment": "^2.30.1",
85
89
  "jwt-decode": "^2.2.0",
90
+ "react-ga4": "^1.4.1",
86
91
  "styled-components": "^5.2.0"
87
92
  },
88
93
  "devDependencies": {
89
94
  "localstorage-slim": "^1.3.0",
95
+ "react-tabs": "3.0.0",
90
96
  "sass": "^1.29.0",
97
+ "reactjs-popup": "^2.0.4",
91
98
  "sass-loader": "^10.0.5",
99
+ "antd": "^4.24.16",
92
100
  "@babel/cli": "^7.28.3",
93
101
  "@babel/core": "^7.28.4",
94
102
  "@babel/plugin-transform-modules-commonjs": "^7.27.1",
95
103
  "@babel/plugin-transform-runtime": "^7.28.3",
96
104
  "@babel/preset-env": "^7.28.3",
97
105
  "@babel/preset-react": "^7.27.1",
106
+ "@material-ui/core": "^4.12.3",
107
+ "@material-ui/icons": "^4.11.2",
108
+ "@material-ui/lab": "^4.0.0-alpha.61",
98
109
  "@sentry/webpack-plugin": "^3.2.4",
99
110
  "assert": "^2.1.0",
100
111
  "babel-loader": "^9.1.3",
@@ -110,7 +121,11 @@
110
121
  "css-loader": "*",
111
122
  "file-loader": "6.2.0",
112
123
  "html-webpack-plugin": "5.6.0",
124
+ "immutable-devtools": "0.1.4",
125
+ "mobile-detect": "^1.4.5",
113
126
  "path-browserify": "^1.0.1",
127
+ "react-query": "^3.39.3",
128
+ "react-router-dom": "5.1.2",
114
129
  "rimraf": "^2.6.3",
115
130
  "stream-browserify": "^3.0.0",
116
131
  "style-loader": "*",