kitchen-simulator 4.0.8-react-18 → 4.0.8

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 (196) hide show
  1. package/README.md +3 -0
  2. package/es/AppContext.js +1 -1
  3. package/es/LiteKitchenConfigurator.js +162 -107
  4. package/es/LiteRenderer.js +162 -137
  5. package/es/actions/export.js +25 -12
  6. package/es/assets/gltf/door_sliding.bin +0 -0
  7. package/es/assets/img/png/helper/video_preview_start.png +0 -0
  8. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  9. package/es/catalog/catalog.js +21 -5
  10. package/es/catalog/holes/window-clear/planner-element.js +2 -2
  11. package/es/catalog/properties/export.js +21 -0
  12. package/es/catalog/properties/property-checkbox.js +68 -0
  13. package/es/catalog/properties/property-color.js +39 -0
  14. package/es/catalog/properties/property-enum.js +50 -0
  15. package/es/catalog/properties/property-hidden.js +19 -0
  16. package/es/catalog/properties/property-lenght-measure.js +100 -0
  17. package/es/catalog/properties/property-length-measure.js +84 -0
  18. package/es/catalog/properties/property-length-measure_hole.js +100 -0
  19. package/es/catalog/properties/property-number.js +48 -0
  20. package/es/catalog/properties/property-read-only.js +26 -0
  21. package/es/catalog/properties/property-string.js +48 -0
  22. package/es/catalog/properties/property-toggle.js +39 -0
  23. package/es/catalog/properties/shared-property-style.js +14 -0
  24. package/es/catalog/utils/exporter.js +24 -11
  25. package/es/catalog/utils/item-loader.js +35 -26
  26. package/es/class/hole.js +0 -2
  27. package/es/class/item.js +96 -70
  28. package/es/class/line.js +4 -8
  29. package/es/class/project.js +95 -80
  30. package/es/components/content.js +5 -93
  31. package/es/components/export.js +4 -6
  32. package/es/components/style/button.js +106 -0
  33. package/es/components/style/cancel-button.js +21 -0
  34. package/es/components/style/content-container.js +30 -0
  35. package/es/components/style/content-title.js +25 -0
  36. package/es/components/style/delete-button.js +24 -0
  37. package/es/components/style/export.js +28 -2
  38. package/es/components/style/form-block.js +20 -0
  39. package/es/components/style/form-color-input.js +26 -0
  40. package/es/components/style/form-label.js +22 -0
  41. package/es/components/style/form-number-input.js +29 -27
  42. package/es/components/style/form-number-input_2.js +200 -0
  43. package/es/components/style/form-select.js +19 -0
  44. package/es/components/style/form-slider.js +60 -0
  45. package/es/components/style/form-submit-button.js +25 -0
  46. package/es/components/style/form-text-input.js +69 -0
  47. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  48. package/es/components/viewer2d/group.js +5 -4
  49. package/es/components/viewer2d/item.js +155 -359
  50. package/es/components/viewer2d/layer.js +1 -1
  51. package/es/components/viewer2d/line.js +17 -47
  52. package/es/components/viewer2d/ruler.js +5 -3
  53. package/es/components/viewer2d/rulerDist.js +8 -7
  54. package/es/components/viewer2d/rulerX.js +4 -2
  55. package/es/components/viewer2d/rulerY.js +3 -0
  56. package/es/components/viewer2d/scene.js +17 -12
  57. package/es/components/viewer2d/state.js +1 -1
  58. package/es/components/viewer2d/utils.js +2 -2
  59. package/es/components/viewer2d/vertex.js +3 -2
  60. package/es/components/viewer2d/viewer2d.js +52 -87
  61. package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
  62. package/es/components/viewer3d/scene-creator.js +77 -39
  63. package/es/components/viewer3d/viewer3d-first-person.js +24 -26
  64. package/es/components/viewer3d/viewer3d.js +104 -114
  65. package/es/constants.js +7 -2
  66. package/es/devLiteRenderer.js +491 -150
  67. package/es/index.js +590 -21
  68. package/es/models.js +13 -8
  69. package/es/plugins/SVGLoader.js +1414 -0
  70. package/es/plugins/console-debugger.js +34 -0
  71. package/es/plugins/export.js +7 -0
  72. package/es/plugins/keyboard.js +110 -0
  73. package/es/reducers/project-reducer.js +3 -0
  74. package/es/reducers/viewer2d-reducer.js +3 -1
  75. package/es/reducers/viewer3d-reducer.js +3 -1
  76. package/es/styles/export.js +5 -0
  77. package/es/styles/tabs.css +40 -0
  78. package/es/utils/geometry.js +77 -119
  79. package/es/utils/helper.js +38 -1
  80. package/es/utils/isolate-event-handler.js +826 -606
  81. package/es/utils/molding.js +457 -11
  82. package/lib/AppContext.js +1 -1
  83. package/lib/LiteKitchenConfigurator.js +161 -107
  84. package/lib/LiteRenderer.js +161 -137
  85. package/lib/actions/export.js +35 -39
  86. package/lib/assets/gltf/door_sliding.bin +0 -0
  87. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  88. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  89. package/lib/catalog/catalog.js +20 -4
  90. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  91. package/lib/catalog/properties/export.js +81 -0
  92. package/lib/catalog/properties/property-checkbox.js +76 -0
  93. package/lib/catalog/properties/property-color.js +47 -0
  94. package/lib/catalog/properties/property-enum.js +58 -0
  95. package/lib/catalog/properties/property-hidden.js +27 -0
  96. package/lib/catalog/properties/property-lenght-measure.js +108 -0
  97. package/lib/catalog/properties/property-length-measure.js +92 -0
  98. package/lib/catalog/properties/property-length-measure_hole.js +108 -0
  99. package/lib/catalog/properties/property-number.js +56 -0
  100. package/lib/catalog/properties/property-read-only.js +34 -0
  101. package/lib/catalog/properties/property-string.js +56 -0
  102. package/lib/catalog/properties/property-toggle.js +47 -0
  103. package/lib/catalog/properties/shared-property-style.js +21 -0
  104. package/lib/catalog/utils/exporter.js +24 -11
  105. package/lib/catalog/utils/item-loader.js +35 -26
  106. package/lib/class/hole.js +0 -2
  107. package/lib/class/item.js +94 -68
  108. package/lib/class/line.js +3 -7
  109. package/lib/class/project.js +95 -80
  110. package/lib/components/content.js +5 -93
  111. package/lib/components/export.js +6 -26
  112. package/lib/components/style/button.js +115 -0
  113. package/lib/components/style/cancel-button.js +29 -0
  114. package/lib/components/style/content-container.js +38 -0
  115. package/lib/components/style/content-title.js +35 -0
  116. package/lib/components/style/delete-button.js +34 -0
  117. package/lib/components/style/export.js +105 -1
  118. package/lib/components/style/form-block.js +28 -0
  119. package/lib/components/style/form-color-input.js +34 -0
  120. package/lib/components/style/form-label.js +30 -0
  121. package/lib/components/style/form-number-input.js +29 -27
  122. package/lib/components/style/form-number-input_2.js +209 -0
  123. package/lib/components/style/form-select.js +29 -0
  124. package/lib/components/style/form-slider.js +68 -0
  125. package/lib/components/style/form-submit-button.js +35 -0
  126. package/lib/components/style/form-text-input.js +78 -0
  127. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  128. package/lib/components/viewer2d/group.js +5 -4
  129. package/lib/components/viewer2d/item.js +152 -356
  130. package/lib/components/viewer2d/layer.js +1 -1
  131. package/lib/components/viewer2d/line.js +17 -47
  132. package/lib/components/viewer2d/ruler.js +4 -2
  133. package/lib/components/viewer2d/rulerDist.js +8 -7
  134. package/lib/components/viewer2d/rulerX.js +4 -2
  135. package/lib/components/viewer2d/rulerY.js +3 -0
  136. package/lib/components/viewer2d/scene.js +17 -12
  137. package/lib/components/viewer2d/state.js +1 -1
  138. package/lib/components/viewer2d/utils.js +2 -2
  139. package/lib/components/viewer2d/vertex.js +3 -2
  140. package/lib/components/viewer2d/viewer2d.js +50 -84
  141. package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
  142. package/lib/components/viewer3d/scene-creator.js +75 -37
  143. package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
  144. package/lib/components/viewer3d/viewer3d.js +101 -110
  145. package/lib/constants.js +12 -7
  146. package/lib/devLiteRenderer.js +489 -148
  147. package/lib/index.js +592 -21
  148. package/lib/models.js +13 -8
  149. package/lib/plugins/SVGLoader.js +1419 -0
  150. package/lib/plugins/console-debugger.js +42 -0
  151. package/lib/plugins/export.js +25 -0
  152. package/lib/plugins/keyboard.js +117 -0
  153. package/lib/reducers/project-reducer.js +3 -0
  154. package/lib/reducers/viewer2d-reducer.js +3 -1
  155. package/lib/reducers/viewer3d-reducer.js +3 -1
  156. package/lib/styles/export.js +13 -0
  157. package/lib/styles/tabs.css +40 -0
  158. package/lib/utils/geometry.js +77 -119
  159. package/lib/utils/helper.js +40 -1
  160. package/lib/utils/isolate-event-handler.js +826 -605
  161. package/lib/utils/molding.js +458 -9
  162. package/package.json +20 -15
  163. package/es/mocks/appliancePayload.json +0 -27
  164. package/es/mocks/cabinetPayload.json +0 -1914
  165. package/es/mocks/cabinetPayload2.json +0 -76
  166. package/es/mocks/dataBundle2.json +0 -4
  167. package/es/mocks/distancePayload.json +0 -6
  168. package/es/mocks/doorStylePayload2.json +0 -84
  169. package/es/mocks/furnishingPayload.json +0 -23
  170. package/es/mocks/itemCDSPayload.json +0 -27
  171. package/es/mocks/lightingPayload.json +0 -23
  172. package/es/mocks/mockProps.json +0 -43
  173. package/es/mocks/mockProps2.json +0 -9
  174. package/es/mocks/moldingPayload.json +0 -19
  175. package/es/mocks/projectItemsCatalog.json +0 -133
  176. package/es/mocks/rectangleShape.json +0 -238
  177. package/es/mocks/replaceCabinetPayload.json +0 -81
  178. package/es/mocks/roomShapePayload.json +0 -5
  179. package/es/useAppContext.js +0 -8
  180. package/lib/mocks/appliancePayload.json +0 -27
  181. package/lib/mocks/cabinetPayload.json +0 -1914
  182. package/lib/mocks/cabinetPayload2.json +0 -76
  183. package/lib/mocks/dataBundle2.json +0 -4
  184. package/lib/mocks/distancePayload.json +0 -6
  185. package/lib/mocks/doorStylePayload2.json +0 -84
  186. package/lib/mocks/furnishingPayload.json +0 -23
  187. package/lib/mocks/itemCDSPayload.json +0 -27
  188. package/lib/mocks/lightingPayload.json +0 -23
  189. package/lib/mocks/mockProps.json +0 -43
  190. package/lib/mocks/mockProps2.json +0 -9
  191. package/lib/mocks/moldingPayload.json +0 -19
  192. package/lib/mocks/projectItemsCatalog.json +0 -133
  193. package/lib/mocks/rectangleShape.json +0 -238
  194. package/lib/mocks/replaceCabinetPayload.json +0 -81
  195. package/lib/mocks/roomShapePayload.json +0 -5
  196. package/lib/useAppContext.js +0 -16
@@ -7,13 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
15
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
17
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
19
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
17
20
  var _convertUnitsLite = require("./utils/convert-units-lite");
18
21
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
22
  var _react = _interopRequireWildcard(require("react"));
@@ -28,8 +31,8 @@ var _translator = _interopRequireDefault(require("./translator/translator"));
28
31
  var _objectsUtils = require("./utils/objects-utils");
29
32
  var _version = require("./version");
30
33
  var _isolateEventHandler = require("./utils/isolate-event-handler");
31
- var _AppContext = _interopRequireDefault(require("./AppContext"));
32
- var _excluded = ["width", "height", "state", "stateExtractor"];
34
+ var _excluded = ["width", "height", "extractedState"];
35
+ var _templateObject, _templateObject2; // LiteKitchenConfigurator.jsx
33
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 _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); }
34
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; }
35
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; }
@@ -40,14 +43,16 @@ var wrapperStyle = {
40
43
  display: 'flex',
41
44
  flexFlow: 'row nowrap'
42
45
  };
46
+ var WarningItem = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n opacity: 0.8;\n position: absolute;\n border-radius: 6px;\n z-index: 11;\n background-color: #ff7400;\n width: max-content;\n align-items: center;\n padding: 10px;\n display: none;\n box-shadow:\n 0px 3px 5px -1px rgba(0, 0, 0, 0.2),\n 0px 6px 10px 0px rgba(0, 0, 0, 0.39),\n 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n top: -50px;\n left: 5px;\n color: white;\n"])));
47
+ var SubCategoryItemImage = _styledComponents["default"].img(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n height: 30px;\n width: 30px;\n -webkit-mask-image: url(", ");\n -webkit-mask-size: calc(100% - 2px) calc(100% - 2px);\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: 1px 1px;\n"])), constants.SECONDARY_PURPLE_COLOR, function (props) {
48
+ return props.maskImage + '?nocache=2025';
49
+ });
43
50
  var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
44
51
  function LiteKitchenConfigurator(props) {
45
52
  var _utmRequestData2, _utmRequestData3, _utmRequestData4, _utmRequestData5, _utmRequestData6, _utmRequestData7, _utmRequestData8, _utmRequestData9, _utmRequestData0;
46
53
  var _this;
47
54
  (0, _classCallCheck2["default"])(this, LiteKitchenConfigurator);
48
55
  _this = _callSuper(this, LiteKitchenConfigurator, [props]);
49
-
50
- // utm tracking
51
56
  var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
52
57
  var utmStrEncoded = utmDetailParams.get('details');
53
58
  var utmRequestData = null;
@@ -57,7 +62,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
57
62
  utmRequestData = JSON.parse((0, _helper.base64Decode)(utmStrEncoded));
58
63
  utmRequestData = JSON.parse((_utmRequestData = utmRequestData) === null || _utmRequestData === void 0 ? void 0 : _utmRequestData.utm);
59
64
  } catch (e) {
60
- console.error('Cannot parse utm parameter: ', error);
65
+ console.error('Cannot parse utm parameter: ', e);
61
66
  utmRequestData = null;
62
67
  }
63
68
  }
@@ -76,7 +81,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
76
81
  myProjectsOpen: false,
77
82
  myProjectsToLogin: false,
78
83
  downloadPopupVisible: false,
79
- // For Toolbar Item
80
84
  toolbar: '',
81
85
  reviewQuotePopupOpened: false,
82
86
  floorOpened: false,
@@ -94,8 +98,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
94
98
  isSaved: false,
95
99
  isLeaving: false
96
100
  };
97
-
98
- // For UTM tracking
99
101
  _this.utm = {
100
102
  utm_source: ((_utmRequestData2 = utmRequestData) === null || _utmRequestData2 === void 0 ? void 0 : _utmRequestData2.source) || 'source',
101
103
  utm_medium: ((_utmRequestData3 = utmRequestData) === null || _utmRequestData3 === void 0 ? void 0 : _utmRequestData3.medium) || 'medium',
@@ -126,10 +128,13 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
126
128
  _this.setDownloadPopupVisible = _this.setDownloadPopupVisible.bind(_this);
127
129
  _this.neverShowInput = /*#__PURE__*/_react["default"].createRef(null);
128
130
  _this.setShowProperty = _this.setShowProperty.bind(_this);
131
+
132
+ // cache for viewer2D init so we don't allocate merges every render
133
+ _this._lastExtractedStateRef = null;
134
+ _this._cachedViewer2DKey = null;
135
+ _this._cachedExtractedState = null;
129
136
  return _this;
130
137
  }
131
-
132
- // Toolbar control functions
133
138
  (0, _inherits2["default"])(LiteKitchenConfigurator, _Component);
134
139
  return (0, _createClass2["default"])(LiteKitchenConfigurator, [{
135
140
  key: "setToolbar",
@@ -213,26 +218,32 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
213
218
  }, {
214
219
  key: "openFloor",
215
220
  value: function openFloor() {
221
+ var _el$parentElement;
216
222
  this.setState({
217
223
  floorOpened: true
218
224
  });
219
- document.getElementById('make_floorplan_inactive').parentElement.parentElement.style.zIndex = 999;
225
+ var el = document.getElementById('make_floorplan_inactive');
226
+ if (el !== null && el !== void 0 && (_el$parentElement = el.parentElement) !== null && _el$parentElement !== void 0 && _el$parentElement.parentElement) el.parentElement.parentElement.style.zIndex = 999;
220
227
  }
221
228
  }, {
222
229
  key: "openCabinet",
223
230
  value: function openCabinet() {
231
+ var _el$parentElement2;
224
232
  this.setState({
225
233
  cabinetOpened: true
226
234
  });
227
- document.getElementById('add_cabinets_inactive').parentElement.parentElement.style.zIndex = 999;
235
+ var el = document.getElementById('add_cabinets_inactive');
236
+ if (el !== null && el !== void 0 && (_el$parentElement2 = el.parentElement) !== null && _el$parentElement2 !== void 0 && _el$parentElement2.parentElement) el.parentElement.parentElement.style.zIndex = 999;
228
237
  }
229
238
  }, {
230
239
  key: "toggleDoorStyle",
231
240
  value: function toggleDoorStyle(visible) {
241
+ var _el$parentElement3;
232
242
  this.setState({
233
243
  doorStyleOpen: visible
234
244
  });
235
- document.getElementById('select_doorstyle_inactive').parentElement.parentElement.style.zIndex = visible ? 999 : 6;
245
+ var el = document.getElementById('select_doorstyle_inactive');
246
+ if (el !== null && el !== void 0 && (_el$parentElement3 = el.parentElement) !== null && _el$parentElement3 !== void 0 && _el$parentElement3.parentElement) el.parentElement.parentElement.style.zIndex = visible ? 999 : 6;
236
247
  }
237
248
  }, {
238
249
  key: "replaceCabinet",
@@ -244,98 +255,117 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
244
255
  }, {
245
256
  key: "openAppliance",
246
257
  value: function openAppliance() {
258
+ var _el$parentElement4;
247
259
  this.setState({
248
260
  applianceOpened: true
249
261
  });
250
- document.getElementById('add_appliances_inactive').parentElement.parentElement.style.zIndex = 999;
262
+ var el = document.getElementById('add_appliances_inactive');
263
+ if (el !== null && el !== void 0 && (_el$parentElement4 = el.parentElement) !== null && _el$parentElement4 !== void 0 && _el$parentElement4.parentElement) el.parentElement.parentElement.style.zIndex = 999;
251
264
  }
252
265
  }, {
253
266
  key: "openFinishing",
254
267
  value: function openFinishing() {
268
+ var _el$parentElement5;
255
269
  this.setState({
256
270
  finishingOpened: true
257
271
  });
258
- document.getElementById('finishing_touches_inactive').parentElement.parentElement.style.zIndex = 999;
272
+ var el = document.getElementById('finishing_touches_inactive');
273
+ if (el !== null && el !== void 0 && (_el$parentElement5 = el.parentElement) !== null && _el$parentElement5 !== void 0 && _el$parentElement5.parentElement) el.parentElement.parentElement.style.zIndex = 999;
259
274
  }
260
275
  }, {
261
276
  key: "onReviewQuoteClicked",
262
277
  value: function onReviewQuoteClicked(visible) {
278
+ var _el$parentElement6;
263
279
  this.setState({
264
280
  reviewQuotePopupOpened: visible
265
281
  });
266
- document.getElementById('review_quote_inactive').parentElement.parentElement.style.zIndex = visible ? 999 : 6;
282
+ var el = document.getElementById('review_quote_inactive');
283
+ if (el !== null && el !== void 0 && (_el$parentElement6 = el.parentElement) !== null && _el$parentElement6 !== void 0 && _el$parentElement6.parentElement) el.parentElement.parentElement.style.zIndex = visible ? 999 : 6;
267
284
  }
268
285
  }, {
269
286
  key: "closeFloorTB",
270
287
  value: function closeFloorTB() {
288
+ var _el$parentElement7;
271
289
  this.setState({
272
290
  floorOpened: false
273
291
  });
274
- document.getElementById('make_floorplan_inactive') && (document.getElementById('make_floorplan_inactive').parentElement.parentElement.style.zIndex = 6);
292
+ var el = document.getElementById('make_floorplan_inactive');
293
+ if (el !== null && el !== void 0 && (_el$parentElement7 = el.parentElement) !== null && _el$parentElement7 !== void 0 && _el$parentElement7.parentElement) el.parentElement.parentElement.style.zIndex = 6;
275
294
  }
276
295
  }, {
277
296
  key: "closeCabinetTB",
278
297
  value: function closeCabinetTB() {
298
+ var _el$parentElement8;
279
299
  this.setState({
280
300
  cabinetOpened: false
281
301
  });
282
- document.getElementById('add_cabinets_inactive').parentElement.parentElement.style.zIndex = 6;
302
+ var el = document.getElementById('add_cabinets_inactive');
303
+ if (el !== null && el !== void 0 && (_el$parentElement8 = el.parentElement) !== null && _el$parentElement8 !== void 0 && _el$parentElement8.parentElement) el.parentElement.parentElement.style.zIndex = 6;
283
304
  }
284
305
  }, {
285
306
  key: "closeFinishingTB",
286
307
  value: function closeFinishingTB() {
308
+ var _el$parentElement9;
287
309
  this.setState({
288
310
  finishingOpened: false
289
311
  });
290
- document.getElementById('finishing_touches_inactive').parentElement.parentElement.style.zIndex = 6;
312
+ var el = document.getElementById('finishing_touches_inactive');
313
+ if (el !== null && el !== void 0 && (_el$parentElement9 = el.parentElement) !== null && _el$parentElement9 !== void 0 && _el$parentElement9.parentElement) el.parentElement.parentElement.style.zIndex = 6;
291
314
  }
292
315
  }, {
293
316
  key: "closeApplianceTB",
294
317
  value: function closeApplianceTB() {
318
+ var _el$parentElement0;
295
319
  this.setState({
296
320
  applianceOpened: false
297
321
  });
298
- document.getElementById('add_appliances_inactive').parentElement.parentElement.style.zIndex = 6;
299
- }
300
- }, {
301
- key: "closeDoorstyle",
302
- value: function closeDoorstyle() {
303
- this.setState({});
304
- document.getElementById('select_doorstyle_inactive').parentElement.parentElement.style.zIndex = 6;
322
+ var el = document.getElementById('add_appliances_inactive');
323
+ if (el !== null && el !== void 0 && (_el$parentElement0 = el.parentElement) !== null && _el$parentElement0 !== void 0 && _el$parentElement0.parentElement) el.parentElement.parentElement.style.zIndex = 6;
305
324
  }
306
325
  }, {
307
- key: "closeReviewQuote",
308
- value: function closeReviewQuote() {
309
- this.setState({});
310
- document.getElementById('review_quote_inactive').parentElement.parentElement.style.zIndex = 6;
326
+ key: "getChildContext",
327
+ value: function getChildContext() {
328
+ var _this2 = this;
329
+ return _objectSpread(_objectSpread({}, (0, _objectsUtils.objectsMap)(_export["default"], function (actionNamespace) {
330
+ return _this2.props[actionNamespace];
331
+ })), {}, {
332
+ translator: this.props.translator,
333
+ catalog: this.props.catalog
334
+ });
311
335
  }
312
336
  }, {
313
337
  key: "componentDidMount",
314
338
  value: function componentDidMount() {
315
339
  window.forRedo = [];
340
+ var store = this.context.store;
341
+ var _this$props = this.props,
342
+ stateExtractor = _this$props.stateExtractor,
343
+ plugins = _this$props.plugins;
344
+
345
+ // keep old behavior: run plugins once on mount
346
+ var newplugins = (0, _toConsumableArray2["default"])(plugins);
347
+ newplugins.forEach(function (newplugin) {
348
+ return newplugin(store, stateExtractor);
349
+ });
316
350
  }
317
351
  }, {
318
352
  key: "componentDidUpdate",
319
353
  value: function componentDidUpdate(prevProps) {
320
- var _this$props = this.props,
321
- stateExtractor = _this$props.stateExtractor,
322
- state = _this$props.state,
323
- projectActions = _this$props.projectActions,
324
- catalog = _this$props.catalog,
325
- externalEvent = _this$props.externalEvent,
326
- onInternalEvent = _this$props.onInternalEvent;
354
+ var _extractedState$getIn;
355
+ var _this$props2 = this.props,
356
+ externalEvent = _this$props2.externalEvent,
357
+ extractedState = _this$props2.extractedState,
358
+ projectActions = _this$props2.projectActions,
359
+ catalog = _this$props2.catalog;
327
360
 
328
- // handle external events
329
- var prevId = prevProps.externalEvent && prevProps.externalEvent.id;
330
- var nextId = externalEvent && externalEvent.id;
331
- if (nextId != null && prevId !== nextId) {
361
+ // same behavior: handle external event when it changes
362
+ if (prevProps.externalEvent !== externalEvent) {
332
363
  (0, _isolateEventHandler.handleExternalEvent)(this.props);
333
364
  }
334
- var plannerState = stateExtractor(state);
335
- var catalogReady = plannerState.getIn(['catalog', 'ready']);
336
- if (!catalogReady) {
337
- projectActions.initCatalog(catalog);
338
- }
365
+
366
+ // same behavior: init catalog until ready
367
+ var catalogReady = extractedState === null || extractedState === void 0 || (_extractedState$getIn = extractedState.getIn) === null || _extractedState$getIn === void 0 ? void 0 : _extractedState$getIn.call(extractedState, ['catalog', 'ready']);
368
+ if (!catalogReady) projectActions.initCatalog(catalog);
339
369
  }
340
370
  }, {
341
371
  key: "isProjectEmpty",
@@ -345,23 +375,51 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
345
375
  var layer = layers.get(selectedLayer);
346
376
  return layer.areas.size + layer.lines.size + layer.holes.size + layer.items.size === 0;
347
377
  }
378
+ }, {
379
+ key: "getExtractedStateWithViewer2DInit",
380
+ value: function getExtractedStateWithViewer2DInit(extractedState, width, height) {
381
+ if (!extractedState) return extractedState;
382
+
383
+ // ✅ If the extractedState reference changed, drop cache immediately.
384
+ if (this._lastExtractedStateRef !== extractedState) {
385
+ this._lastExtractedStateRef = extractedState;
386
+ this._cachedViewer2DKey = null;
387
+ this._cachedExtractedState = null;
388
+ }
389
+ var _viewer2D = extractedState.getIn(['viewer2D']);
390
+ if (!_viewer2D || _viewer2D.size <= 0) return extractedState;
391
+ var v = _viewer2D.toJS();
392
+
393
+ // Only do the "center viewer2D if e/f are zero" logic.
394
+ // ✅ No need to build keys from unrelated parts of state.
395
+ if (v.e !== 0 || v.f !== 0) return extractedState;
396
+
397
+ // Build a cache key ONLY for this viewer2D-centering computation.
398
+ var cacheKey = "".concat(width, ":").concat(height, ":").concat(v.viewerWidth, ":").concat(v.viewerHeight, ":").concat(v.SVGWidth, ":").concat(v.SVGHeight);
399
+ if (this._cachedViewer2DKey === cacheKey && this._cachedExtractedState) {
400
+ return this._cachedExtractedState;
401
+ }
402
+ var centeredViewer2D = _viewer2D.merge({
403
+ e: v.viewerWidth / 2 - v.SVGWidth / 2,
404
+ f: v.viewerHeight / 2 - v.SVGHeight / 2,
405
+ a: 0.99,
406
+ d: 0.99
407
+ });
408
+ var merged = extractedState.merge({
409
+ viewer2D: centeredViewer2D
410
+ });
411
+ this._cachedViewer2DKey = cacheKey;
412
+ this._cachedExtractedState = merged;
413
+ return merged;
414
+ }
348
415
  }, {
349
416
  key: "render",
350
417
  value: function render() {
351
- var _this2 = this;
352
- var _this$props2 = this.props,
353
- width = _this$props2.width,
354
- height = _this$props2.height,
355
- state = _this$props2.state,
356
- stateExtractor = _this$props2.stateExtractor,
357
- props = (0, _objectWithoutProperties2["default"])(_this$props2, _excluded);
358
- var actionsFromProps = (0, _objectsUtils.objectsMap)(_export["default"], function (ns) {
359
- return _this2.props[ns];
360
- });
361
- var appCtxValue = _objectSpread(_objectSpread({}, actionsFromProps), {}, {
362
- translator: this.props.translator,
363
- catalog: this.props.catalog
364
- });
418
+ var _this$props3 = this.props,
419
+ width = _this$props3.width,
420
+ height = _this$props3.height,
421
+ extractedState = _this$props3.extractedState,
422
+ props = (0, _objectWithoutProperties2["default"])(_this$props3, _excluded);
365
423
  var _this$state = this.state,
366
424
  savePopupVisible = _this$state.savePopupVisible,
367
425
  quotePopupVisible = _this$state.quotePopupVisible,
@@ -369,53 +427,22 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
369
427
  signOpen = _this$state.signOpen,
370
428
  myProjectsOpen = _this$state.myProjectsOpen;
371
429
  var contentW = width - toolbarW;
372
- // let contentW = width - toolbarW - sidebarW;
373
- // let toolbarH = height - footerBarH;
374
- // let contentH = height - footerBarH;
375
- // let sidebarH = height - footerBarH;
376
- var toolbarH = height;
377
430
  var contentH = height;
378
- var sidebarH = height;
379
- var headerW = width;
380
- var headerH = 60;
381
- var extractedState = stateExtractor(state);
382
- var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extractedState.scene);
431
+ var extracted = this.getExtractedStateWithViewer2DInit(extractedState, width, height);
432
+ var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extracted.scene);
383
433
  var allVisible = firstVisit || signOpen || myProjectsOpen;
384
- var _scene = extractedState.getIn(['scene']);
385
- var len = (0, _convertUnitsLite.convert)(_scene.width).from(_scene.unit).to('cm');
386
- var _viewer2D = extractedState.getIn(['viewer2D']);
387
- if (_viewer2D.size > 0) {
388
- var scaleX = width / len * 3;
389
- var scaleY = height / len * 3;
390
- var scale = scaleX > scaleY ? scaleY : scaleX;
391
- var _e = width - len * scale,
392
- _f = height - len * scale;
393
- var viewer = _viewer2D.toJS();
394
- if (viewer.e === 0 && viewer.f === 0) {
395
- _viewer2D = _viewer2D.merge({
396
- e: viewer.viewerWidth / 2 - viewer.SVGWidth / 2,
397
- f: viewer.viewerHeight / 2 - viewer.SVGHeight / 2,
398
- a: 0.99,
399
- d: 0.99
400
- });
401
- }
402
- }
403
- extractedState = extractedState.merge({
404
- viewer2D: _viewer2D
405
- });
406
- return /*#__PURE__*/_react["default"].createElement(_AppContext["default"].Provider, {
407
- value: appCtxValue
408
- }, /*#__PURE__*/_react["default"].createElement("section", null, /*#__PURE__*/_react["default"].createElement("div", {
434
+ return /*#__PURE__*/_react["default"].createElement("section", null, /*#__PURE__*/_react["default"].createElement("div", {
409
435
  style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
410
436
  height: height,
411
437
  display: 'flex',
412
- justifyContent: 'center'
438
+ justifyContent: 'center',
439
+ position: 'relative'
413
440
  })
414
441
  }, /*#__PURE__*/_react["default"].createElement(_export2.Content, (0, _extends2["default"])({
415
442
  width: contentW,
416
443
  height: contentH,
417
444
  catalog: this.props.catalog,
418
- state: extractedState,
445
+ state: extracted,
419
446
  toolBar: this.state.toolbar,
420
447
  setToolbar: this.setToolbar,
421
448
  replaceCabinet: this.replaceCabinet,
@@ -425,7 +452,20 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
425
452
  return event.preventDefault();
426
453
  },
427
454
  onInternalEvent: this.props.onInternalEvent
428
- })))));
455
+ })), /*#__PURE__*/_react["default"].createElement(WarningItem, {
456
+ id: "warning_box_2d",
457
+ style: {
458
+ display: 'none'
459
+ }
460
+ }, /*#__PURE__*/_react["default"].createElement(SubCategoryItemImage, {
461
+ maskImage: "/assets/img/svg/3d_item_warning_info.svg",
462
+ style: {
463
+ backgroundColor: constants.BG_COLOR_1,
464
+ marginRight: 10,
465
+ height: 30,
466
+ width: 30
467
+ }
468
+ }), "This item is not available in the current door style. Replace it with another one.")));
429
469
  }
430
470
  }]);
431
471
  }(_react.Component);
@@ -439,13 +479,21 @@ LiteKitchenConfigurator.propTypes = {
439
479
  width: _propTypes["default"].number.isRequired,
440
480
  height: _propTypes["default"].number.isRequired,
441
481
  stateExtractor: _propTypes["default"].func.isRequired,
442
- sidebarComponents: _propTypes["default"].array,
443
- footerbarComponents: _propTypes["default"].array,
444
- customContents: _propTypes["default"].object,
445
- softwareSignature: _propTypes["default"].string,
446
482
  configData: _propTypes["default"].object,
447
- onInternalEvent: _propTypes["default"].func
483
+ onInternalEvent: _propTypes["default"].func,
484
+ extractedState: _propTypes["default"].object,
485
+ // ✅ injected by connect
486
+ externalEvent: _propTypes["default"].object
487
+ };
488
+ LiteKitchenConfigurator.contextTypes = {
489
+ store: _propTypes["default"].object.isRequired
448
490
  };
491
+ LiteKitchenConfigurator.childContextTypes = _objectSpread(_objectSpread({}, (0, _objectsUtils.objectsMap)(_export["default"], function () {
492
+ return _propTypes["default"].object;
493
+ })), {}, {
494
+ translator: _propTypes["default"].object,
495
+ catalog: _propTypes["default"].object
496
+ });
449
497
  LiteKitchenConfigurator.defaultProps = {
450
498
  translator: new _translator["default"](),
451
499
  catalog: new _catalog["default"](),
@@ -458,10 +506,16 @@ LiteKitchenConfigurator.defaultProps = {
458
506
  configData: {}
459
507
  };
460
508
 
461
- //redux connect
462
- function mapStateToProps(reduxState) {
509
+ // ✅ Only select the slice you actually use.
510
+ // This preserves behavior but massively reduces rerenders.
511
+ function mapStateToProps(reduxState, ownProps) {
512
+ var stateExtractor = ownProps.stateExtractor || function (s) {
513
+ return s;
514
+ };
515
+ var extractedState = stateExtractor(reduxState);
463
516
  return {
464
- state: reduxState
517
+ extractedState: extractedState,
518
+ state: extractedState
465
519
  };
466
520
  }
467
521
  function mapDispatchToProps(dispatch) {