kitchen-simulator 4.0.7-react-18 → 4.0.7
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.
- package/README.md +3 -0
- package/es/AppContext.js +1 -1
- package/es/LiteKitchenConfigurator.js +162 -107
- package/es/LiteRenderer.js +162 -137
- package/es/actions/export.js +25 -12
- package/es/assets/gltf/door_sliding.bin +0 -0
- package/es/assets/img/png/helper/video_preview_start.png +0 -0
- package/es/assets/img/svg/bottombar/elevation.svg +12 -5
- package/es/catalog/catalog.js +21 -5
- package/es/catalog/holes/window-clear/planner-element.js +2 -2
- package/es/catalog/properties/export.js +21 -0
- package/es/catalog/properties/property-checkbox.js +68 -0
- package/es/catalog/properties/property-color.js +39 -0
- package/es/catalog/properties/property-enum.js +50 -0
- package/es/catalog/properties/property-hidden.js +19 -0
- package/es/catalog/properties/property-lenght-measure.js +100 -0
- package/es/catalog/properties/property-length-measure.js +84 -0
- package/es/catalog/properties/property-length-measure_hole.js +100 -0
- package/es/catalog/properties/property-number.js +48 -0
- package/es/catalog/properties/property-read-only.js +26 -0
- package/es/catalog/properties/property-string.js +48 -0
- package/es/catalog/properties/property-toggle.js +39 -0
- package/es/catalog/properties/shared-property-style.js +14 -0
- package/es/catalog/utils/exporter.js +1 -0
- package/es/catalog/utils/item-loader.js +35 -26
- package/es/class/hole.js +0 -2
- package/es/class/item.js +96 -70
- package/es/class/line.js +4 -8
- package/es/class/project.js +93 -80
- package/es/components/content.js +5 -93
- package/es/components/export.js +4 -6
- package/es/components/style/button.js +106 -0
- package/es/components/style/cancel-button.js +21 -0
- package/es/components/style/content-container.js +30 -0
- package/es/components/style/content-title.js +25 -0
- package/es/components/style/delete-button.js +24 -0
- package/es/components/style/export.js +28 -2
- package/es/components/style/form-block.js +20 -0
- package/es/components/style/form-color-input.js +26 -0
- package/es/components/style/form-label.js +22 -0
- package/es/components/style/form-number-input.js +29 -27
- package/es/components/style/form-number-input_2.js +200 -0
- package/es/components/style/form-select.js +19 -0
- package/es/components/style/form-slider.js +60 -0
- package/es/components/style/form-submit-button.js +25 -0
- package/es/components/style/form-text-input.js +69 -0
- package/es/components/viewer2d/grids/grid-streak.js +1 -1
- package/es/components/viewer2d/group.js +5 -4
- package/es/components/viewer2d/item.js +155 -359
- package/es/components/viewer2d/layer.js +1 -1
- package/es/components/viewer2d/line.js +17 -47
- package/es/components/viewer2d/ruler.js +5 -3
- package/es/components/viewer2d/rulerDist.js +8 -7
- package/es/components/viewer2d/rulerX.js +4 -2
- package/es/components/viewer2d/rulerY.js +3 -0
- package/es/components/viewer2d/scene.js +17 -12
- package/es/components/viewer2d/state.js +1 -1
- package/es/components/viewer2d/utils.js +2 -2
- package/es/components/viewer2d/vertex.js +3 -2
- package/es/components/viewer2d/viewer2d.js +51 -87
- package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/es/components/viewer3d/scene-creator.js +59 -18
- package/es/components/viewer3d/viewer3d-first-person.js +24 -26
- package/es/components/viewer3d/viewer3d.js +100 -112
- package/es/constants.js +6 -2
- package/es/devLiteRenderer.js +491 -150
- package/es/index.js +590 -21
- package/es/models.js +3 -2
- package/es/plugins/SVGLoader.js +1414 -0
- package/es/plugins/console-debugger.js +34 -0
- package/es/plugins/export.js +7 -0
- package/es/plugins/keyboard.js +110 -0
- package/es/reducers/project-reducer.js +3 -0
- package/es/styles/export.js +5 -0
- package/es/styles/tabs.css +40 -0
- package/es/utils/geometry.js +72 -114
- package/es/utils/helper.js +38 -1
- package/es/utils/isolate-event-handler.js +826 -606
- package/es/utils/molding.js +457 -11
- package/lib/AppContext.js +1 -1
- package/lib/LiteKitchenConfigurator.js +161 -107
- package/lib/LiteRenderer.js +161 -137
- package/lib/actions/export.js +35 -39
- package/lib/assets/gltf/door_sliding.bin +0 -0
- package/lib/assets/img/png/helper/video_preview_start.png +0 -0
- package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
- package/lib/catalog/catalog.js +20 -4
- package/lib/catalog/holes/window-clear/planner-element.js +2 -2
- package/lib/catalog/properties/export.js +81 -0
- package/lib/catalog/properties/property-checkbox.js +76 -0
- package/lib/catalog/properties/property-color.js +47 -0
- package/lib/catalog/properties/property-enum.js +58 -0
- package/lib/catalog/properties/property-hidden.js +27 -0
- package/lib/catalog/properties/property-lenght-measure.js +108 -0
- package/lib/catalog/properties/property-length-measure.js +92 -0
- package/lib/catalog/properties/property-length-measure_hole.js +108 -0
- package/lib/catalog/properties/property-number.js +56 -0
- package/lib/catalog/properties/property-read-only.js +34 -0
- package/lib/catalog/properties/property-string.js +56 -0
- package/lib/catalog/properties/property-toggle.js +47 -0
- package/lib/catalog/properties/shared-property-style.js +21 -0
- package/lib/catalog/utils/exporter.js +1 -0
- package/lib/catalog/utils/item-loader.js +35 -26
- package/lib/class/hole.js +0 -2
- package/lib/class/item.js +94 -68
- package/lib/class/line.js +3 -7
- package/lib/class/project.js +93 -80
- package/lib/components/content.js +5 -93
- package/lib/components/export.js +6 -26
- package/lib/components/style/button.js +115 -0
- package/lib/components/style/cancel-button.js +29 -0
- package/lib/components/style/content-container.js +38 -0
- package/lib/components/style/content-title.js +35 -0
- package/lib/components/style/delete-button.js +34 -0
- package/lib/components/style/export.js +105 -1
- package/lib/components/style/form-block.js +28 -0
- package/lib/components/style/form-color-input.js +34 -0
- package/lib/components/style/form-label.js +30 -0
- package/lib/components/style/form-number-input.js +29 -27
- package/lib/components/style/form-number-input_2.js +209 -0
- package/lib/components/style/form-select.js +29 -0
- package/lib/components/style/form-slider.js +68 -0
- package/lib/components/style/form-submit-button.js +35 -0
- package/lib/components/style/form-text-input.js +78 -0
- package/lib/components/viewer2d/grids/grid-streak.js +1 -1
- package/lib/components/viewer2d/group.js +5 -4
- package/lib/components/viewer2d/item.js +152 -356
- package/lib/components/viewer2d/layer.js +1 -1
- package/lib/components/viewer2d/line.js +17 -47
- package/lib/components/viewer2d/ruler.js +4 -2
- package/lib/components/viewer2d/rulerDist.js +8 -7
- package/lib/components/viewer2d/rulerX.js +4 -2
- package/lib/components/viewer2d/rulerY.js +3 -0
- package/lib/components/viewer2d/scene.js +17 -12
- package/lib/components/viewer2d/state.js +1 -1
- package/lib/components/viewer2d/utils.js +2 -2
- package/lib/components/viewer2d/vertex.js +3 -2
- package/lib/components/viewer2d/viewer2d.js +49 -84
- package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
- package/lib/components/viewer3d/scene-creator.js +57 -16
- package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
- package/lib/components/viewer3d/viewer3d.js +97 -108
- package/lib/constants.js +11 -7
- package/lib/devLiteRenderer.js +489 -148
- package/lib/index.js +592 -21
- package/lib/models.js +3 -2
- package/lib/plugins/SVGLoader.js +1419 -0
- package/lib/plugins/console-debugger.js +42 -0
- package/lib/plugins/export.js +25 -0
- package/lib/plugins/keyboard.js +117 -0
- package/lib/reducers/project-reducer.js +3 -0
- package/lib/styles/export.js +13 -0
- package/lib/styles/tabs.css +40 -0
- package/lib/utils/geometry.js +72 -114
- package/lib/utils/helper.js +40 -1
- package/lib/utils/isolate-event-handler.js +826 -605
- package/lib/utils/molding.js +458 -9
- package/package.json +21 -20
- package/es/mocks/appliancePayload.json +0 -27
- package/es/mocks/cabinetPayload.json +0 -1914
- package/es/mocks/cabinetPayload2.json +0 -76
- package/es/mocks/dataBundle2.json +0 -4
- package/es/mocks/distancePayload.json +0 -6
- package/es/mocks/doorStylePayload2.json +0 -84
- package/es/mocks/furnishingPayload.json +0 -23
- package/es/mocks/itemCDSPayload.json +0 -27
- package/es/mocks/lightingPayload.json +0 -23
- package/es/mocks/mockProps.json +0 -43
- package/es/mocks/mockProps2.json +0 -9
- package/es/mocks/moldingPayload.json +0 -19
- package/es/mocks/projectItemsCatalog.json +0 -133
- package/es/mocks/rectangleShape.json +0 -238
- package/es/mocks/replaceCabinetPayload.json +0 -81
- package/es/mocks/roomShapePayload.json +0 -5
- package/es/useAppContext.js +0 -8
- package/lib/mocks/appliancePayload.json +0 -27
- package/lib/mocks/cabinetPayload.json +0 -1914
- package/lib/mocks/cabinetPayload2.json +0 -76
- package/lib/mocks/dataBundle2.json +0 -4
- package/lib/mocks/distancePayload.json +0 -6
- package/lib/mocks/doorStylePayload2.json +0 -84
- package/lib/mocks/furnishingPayload.json +0 -23
- package/lib/mocks/itemCDSPayload.json +0 -27
- package/lib/mocks/lightingPayload.json +0 -23
- package/lib/mocks/mockProps.json +0 -43
- package/lib/mocks/mockProps2.json +0 -9
- package/lib/mocks/moldingPayload.json +0 -19
- package/lib/mocks/projectItemsCatalog.json +0 -133
- package/lib/mocks/rectangleShape.json +0 -238
- package/lib/mocks/replaceCabinetPayload.json +0 -81
- package/lib/mocks/roomShapePayload.json +0 -5
- package/lib/useAppContext.js +0 -16
package/README.md
CHANGED
|
@@ -44,12 +44,15 @@ You need to check **webpack.config.js** to change the API server.
|
|
|
44
44
|
Webpack is used as the module bundler. The source code is in the **src** folder.
|
|
45
45
|
|
|
46
46
|
entry: {
|
|
47
|
+
// app: './src/renderer.jsx', // For production build WITH API
|
|
47
48
|
app: './src/devLiteRenderer.jsx', // For development of LiteRenderer
|
|
48
49
|
vendor: VENDORS_LIBRARIES
|
|
49
50
|
},
|
|
50
51
|
|
|
51
52
|
- **index.html**: The main HTML file.
|
|
52
53
|
|
|
54
|
+
- **[renderer.jsx](src/renderer.jsx)**: The main JavaScript file that bootstraps the React application. WTH API CALLS
|
|
55
|
+
|
|
53
56
|
- **[devLiteRenderer.jsx](src/devLiteRenderer.jsx).jsx**: The main JavaScript file that bootstraps the React application. For development lite version without API calls. WITH MOCKS
|
|
54
57
|
- **[LiteRenderer.js](src/LiteRenderer.js)**: The Lite React component that uses mock data and creates the store / catalog etc
|
|
55
58
|
- [LiteKitchenConfigurator.jsx](src/LiteKitchenConfigurator.jsx)
|
package/es/AppContext.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
4
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
5
|
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
5
6
|
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
6
7
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
7
8
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
8
9
|
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
9
|
-
|
|
10
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
|
|
11
|
+
var _excluded = ["width", "height", "extractedState"];
|
|
12
|
+
var _templateObject, _templateObject2;
|
|
10
13
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
14
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
15
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
13
16
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
17
|
+
// LiteKitchenConfigurator.jsx
|
|
18
|
+
import styled from 'styled-components';
|
|
14
19
|
import { convert } from "./utils/convert-units-lite";
|
|
15
20
|
import PropTypes from 'prop-types';
|
|
16
21
|
import React, { Component } from 'react';
|
|
@@ -25,20 +30,21 @@ import Translator from "./translator/translator";
|
|
|
25
30
|
import { objectsMap } from "./utils/objects-utils";
|
|
26
31
|
import { VERSION } from "./version";
|
|
27
32
|
import { handleExternalEvent } from "./utils/isolate-event-handler";
|
|
28
|
-
import AppContext from "./AppContext";
|
|
29
33
|
var toolbarW = 0;
|
|
30
34
|
var wrapperStyle = {
|
|
31
35
|
display: 'flex',
|
|
32
36
|
flexFlow: 'row nowrap'
|
|
33
37
|
};
|
|
38
|
+
var WarningItem = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\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"])));
|
|
39
|
+
var SubCategoryItemImage = styled.img(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\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) {
|
|
40
|
+
return props.maskImage + '?nocache=2025';
|
|
41
|
+
});
|
|
34
42
|
var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
35
43
|
function LiteKitchenConfigurator(props) {
|
|
36
44
|
var _utmRequestData2, _utmRequestData3, _utmRequestData4, _utmRequestData5, _utmRequestData6, _utmRequestData7, _utmRequestData8, _utmRequestData9, _utmRequestData0;
|
|
37
45
|
var _this;
|
|
38
46
|
_classCallCheck(this, LiteKitchenConfigurator);
|
|
39
47
|
_this = _callSuper(this, LiteKitchenConfigurator, [props]);
|
|
40
|
-
|
|
41
|
-
// utm tracking
|
|
42
48
|
var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
|
|
43
49
|
var utmStrEncoded = utmDetailParams.get('details');
|
|
44
50
|
var utmRequestData = null;
|
|
@@ -48,7 +54,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
48
54
|
utmRequestData = JSON.parse(base64Decode(utmStrEncoded));
|
|
49
55
|
utmRequestData = JSON.parse((_utmRequestData = utmRequestData) === null || _utmRequestData === void 0 ? void 0 : _utmRequestData.utm);
|
|
50
56
|
} catch (e) {
|
|
51
|
-
console.error('Cannot parse utm parameter: ',
|
|
57
|
+
console.error('Cannot parse utm parameter: ', e);
|
|
52
58
|
utmRequestData = null;
|
|
53
59
|
}
|
|
54
60
|
}
|
|
@@ -67,7 +73,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
67
73
|
myProjectsOpen: false,
|
|
68
74
|
myProjectsToLogin: false,
|
|
69
75
|
downloadPopupVisible: false,
|
|
70
|
-
// For Toolbar Item
|
|
71
76
|
toolbar: '',
|
|
72
77
|
reviewQuotePopupOpened: false,
|
|
73
78
|
floorOpened: false,
|
|
@@ -85,8 +90,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
85
90
|
isSaved: false,
|
|
86
91
|
isLeaving: false
|
|
87
92
|
};
|
|
88
|
-
|
|
89
|
-
// For UTM tracking
|
|
90
93
|
_this.utm = {
|
|
91
94
|
utm_source: ((_utmRequestData2 = utmRequestData) === null || _utmRequestData2 === void 0 ? void 0 : _utmRequestData2.source) || 'source',
|
|
92
95
|
utm_medium: ((_utmRequestData3 = utmRequestData) === null || _utmRequestData3 === void 0 ? void 0 : _utmRequestData3.medium) || 'medium',
|
|
@@ -117,10 +120,13 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
117
120
|
_this.setDownloadPopupVisible = _this.setDownloadPopupVisible.bind(_this);
|
|
118
121
|
_this.neverShowInput = /*#__PURE__*/React.createRef(null);
|
|
119
122
|
_this.setShowProperty = _this.setShowProperty.bind(_this);
|
|
123
|
+
|
|
124
|
+
// cache for viewer2D init so we don't allocate merges every render
|
|
125
|
+
_this._lastExtractedStateRef = null;
|
|
126
|
+
_this._cachedViewer2DKey = null;
|
|
127
|
+
_this._cachedExtractedState = null;
|
|
120
128
|
return _this;
|
|
121
129
|
}
|
|
122
|
-
|
|
123
|
-
// Toolbar control functions
|
|
124
130
|
_inherits(LiteKitchenConfigurator, _Component);
|
|
125
131
|
return _createClass(LiteKitchenConfigurator, [{
|
|
126
132
|
key: "setToolbar",
|
|
@@ -204,26 +210,32 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
204
210
|
}, {
|
|
205
211
|
key: "openFloor",
|
|
206
212
|
value: function openFloor() {
|
|
213
|
+
var _el$parentElement;
|
|
207
214
|
this.setState({
|
|
208
215
|
floorOpened: true
|
|
209
216
|
});
|
|
210
|
-
document.getElementById('make_floorplan_inactive')
|
|
217
|
+
var el = document.getElementById('make_floorplan_inactive');
|
|
218
|
+
if (el !== null && el !== void 0 && (_el$parentElement = el.parentElement) !== null && _el$parentElement !== void 0 && _el$parentElement.parentElement) el.parentElement.parentElement.style.zIndex = 999;
|
|
211
219
|
}
|
|
212
220
|
}, {
|
|
213
221
|
key: "openCabinet",
|
|
214
222
|
value: function openCabinet() {
|
|
223
|
+
var _el$parentElement2;
|
|
215
224
|
this.setState({
|
|
216
225
|
cabinetOpened: true
|
|
217
226
|
});
|
|
218
|
-
document.getElementById('add_cabinets_inactive')
|
|
227
|
+
var el = document.getElementById('add_cabinets_inactive');
|
|
228
|
+
if (el !== null && el !== void 0 && (_el$parentElement2 = el.parentElement) !== null && _el$parentElement2 !== void 0 && _el$parentElement2.parentElement) el.parentElement.parentElement.style.zIndex = 999;
|
|
219
229
|
}
|
|
220
230
|
}, {
|
|
221
231
|
key: "toggleDoorStyle",
|
|
222
232
|
value: function toggleDoorStyle(visible) {
|
|
233
|
+
var _el$parentElement3;
|
|
223
234
|
this.setState({
|
|
224
235
|
doorStyleOpen: visible
|
|
225
236
|
});
|
|
226
|
-
document.getElementById('select_doorstyle_inactive')
|
|
237
|
+
var el = document.getElementById('select_doorstyle_inactive');
|
|
238
|
+
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;
|
|
227
239
|
}
|
|
228
240
|
}, {
|
|
229
241
|
key: "replaceCabinet",
|
|
@@ -235,98 +247,117 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
235
247
|
}, {
|
|
236
248
|
key: "openAppliance",
|
|
237
249
|
value: function openAppliance() {
|
|
250
|
+
var _el$parentElement4;
|
|
238
251
|
this.setState({
|
|
239
252
|
applianceOpened: true
|
|
240
253
|
});
|
|
241
|
-
document.getElementById('add_appliances_inactive')
|
|
254
|
+
var el = document.getElementById('add_appliances_inactive');
|
|
255
|
+
if (el !== null && el !== void 0 && (_el$parentElement4 = el.parentElement) !== null && _el$parentElement4 !== void 0 && _el$parentElement4.parentElement) el.parentElement.parentElement.style.zIndex = 999;
|
|
242
256
|
}
|
|
243
257
|
}, {
|
|
244
258
|
key: "openFinishing",
|
|
245
259
|
value: function openFinishing() {
|
|
260
|
+
var _el$parentElement5;
|
|
246
261
|
this.setState({
|
|
247
262
|
finishingOpened: true
|
|
248
263
|
});
|
|
249
|
-
document.getElementById('finishing_touches_inactive')
|
|
264
|
+
var el = document.getElementById('finishing_touches_inactive');
|
|
265
|
+
if (el !== null && el !== void 0 && (_el$parentElement5 = el.parentElement) !== null && _el$parentElement5 !== void 0 && _el$parentElement5.parentElement) el.parentElement.parentElement.style.zIndex = 999;
|
|
250
266
|
}
|
|
251
267
|
}, {
|
|
252
268
|
key: "onReviewQuoteClicked",
|
|
253
269
|
value: function onReviewQuoteClicked(visible) {
|
|
270
|
+
var _el$parentElement6;
|
|
254
271
|
this.setState({
|
|
255
272
|
reviewQuotePopupOpened: visible
|
|
256
273
|
});
|
|
257
|
-
document.getElementById('review_quote_inactive')
|
|
274
|
+
var el = document.getElementById('review_quote_inactive');
|
|
275
|
+
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;
|
|
258
276
|
}
|
|
259
277
|
}, {
|
|
260
278
|
key: "closeFloorTB",
|
|
261
279
|
value: function closeFloorTB() {
|
|
280
|
+
var _el$parentElement7;
|
|
262
281
|
this.setState({
|
|
263
282
|
floorOpened: false
|
|
264
283
|
});
|
|
265
|
-
|
|
284
|
+
var el = document.getElementById('make_floorplan_inactive');
|
|
285
|
+
if (el !== null && el !== void 0 && (_el$parentElement7 = el.parentElement) !== null && _el$parentElement7 !== void 0 && _el$parentElement7.parentElement) el.parentElement.parentElement.style.zIndex = 6;
|
|
266
286
|
}
|
|
267
287
|
}, {
|
|
268
288
|
key: "closeCabinetTB",
|
|
269
289
|
value: function closeCabinetTB() {
|
|
290
|
+
var _el$parentElement8;
|
|
270
291
|
this.setState({
|
|
271
292
|
cabinetOpened: false
|
|
272
293
|
});
|
|
273
|
-
document.getElementById('add_cabinets_inactive')
|
|
294
|
+
var el = document.getElementById('add_cabinets_inactive');
|
|
295
|
+
if (el !== null && el !== void 0 && (_el$parentElement8 = el.parentElement) !== null && _el$parentElement8 !== void 0 && _el$parentElement8.parentElement) el.parentElement.parentElement.style.zIndex = 6;
|
|
274
296
|
}
|
|
275
297
|
}, {
|
|
276
298
|
key: "closeFinishingTB",
|
|
277
299
|
value: function closeFinishingTB() {
|
|
300
|
+
var _el$parentElement9;
|
|
278
301
|
this.setState({
|
|
279
302
|
finishingOpened: false
|
|
280
303
|
});
|
|
281
|
-
document.getElementById('finishing_touches_inactive')
|
|
304
|
+
var el = document.getElementById('finishing_touches_inactive');
|
|
305
|
+
if (el !== null && el !== void 0 && (_el$parentElement9 = el.parentElement) !== null && _el$parentElement9 !== void 0 && _el$parentElement9.parentElement) el.parentElement.parentElement.style.zIndex = 6;
|
|
282
306
|
}
|
|
283
307
|
}, {
|
|
284
308
|
key: "closeApplianceTB",
|
|
285
309
|
value: function closeApplianceTB() {
|
|
310
|
+
var _el$parentElement0;
|
|
286
311
|
this.setState({
|
|
287
312
|
applianceOpened: false
|
|
288
313
|
});
|
|
289
|
-
document.getElementById('add_appliances_inactive')
|
|
314
|
+
var el = document.getElementById('add_appliances_inactive');
|
|
315
|
+
if (el !== null && el !== void 0 && (_el$parentElement0 = el.parentElement) !== null && _el$parentElement0 !== void 0 && _el$parentElement0.parentElement) el.parentElement.parentElement.style.zIndex = 6;
|
|
290
316
|
}
|
|
291
317
|
}, {
|
|
292
|
-
key: "
|
|
293
|
-
value: function
|
|
294
|
-
this
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
document.getElementById('review_quote_inactive').parentElement.parentElement.style.zIndex = 6;
|
|
318
|
+
key: "getChildContext",
|
|
319
|
+
value: function getChildContext() {
|
|
320
|
+
var _this2 = this;
|
|
321
|
+
return _objectSpread(_objectSpread({}, objectsMap(actions, function (actionNamespace) {
|
|
322
|
+
return _this2.props[actionNamespace];
|
|
323
|
+
})), {}, {
|
|
324
|
+
translator: this.props.translator,
|
|
325
|
+
catalog: this.props.catalog
|
|
326
|
+
});
|
|
302
327
|
}
|
|
303
328
|
}, {
|
|
304
329
|
key: "componentDidMount",
|
|
305
330
|
value: function componentDidMount() {
|
|
306
331
|
window.forRedo = [];
|
|
332
|
+
var store = this.context.store;
|
|
333
|
+
var _this$props = this.props,
|
|
334
|
+
stateExtractor = _this$props.stateExtractor,
|
|
335
|
+
plugins = _this$props.plugins;
|
|
336
|
+
|
|
337
|
+
// keep old behavior: run plugins once on mount
|
|
338
|
+
var newplugins = _toConsumableArray(plugins);
|
|
339
|
+
newplugins.forEach(function (newplugin) {
|
|
340
|
+
return newplugin(store, stateExtractor);
|
|
341
|
+
});
|
|
307
342
|
}
|
|
308
343
|
}, {
|
|
309
344
|
key: "componentDidUpdate",
|
|
310
345
|
value: function componentDidUpdate(prevProps) {
|
|
311
|
-
var
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
onInternalEvent = _this$props.onInternalEvent;
|
|
346
|
+
var _extractedState$getIn;
|
|
347
|
+
var _this$props2 = this.props,
|
|
348
|
+
externalEvent = _this$props2.externalEvent,
|
|
349
|
+
extractedState = _this$props2.extractedState,
|
|
350
|
+
projectActions = _this$props2.projectActions,
|
|
351
|
+
catalog = _this$props2.catalog;
|
|
318
352
|
|
|
319
|
-
// handle external
|
|
320
|
-
|
|
321
|
-
var nextId = externalEvent && externalEvent.id;
|
|
322
|
-
if (nextId != null && prevId !== nextId) {
|
|
353
|
+
// same behavior: handle external event when it changes
|
|
354
|
+
if (prevProps.externalEvent !== externalEvent) {
|
|
323
355
|
handleExternalEvent(this.props);
|
|
324
356
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
}
|
|
357
|
+
|
|
358
|
+
// same behavior: init catalog until ready
|
|
359
|
+
var catalogReady = extractedState === null || extractedState === void 0 || (_extractedState$getIn = extractedState.getIn) === null || _extractedState$getIn === void 0 ? void 0 : _extractedState$getIn.call(extractedState, ['catalog', 'ready']);
|
|
360
|
+
if (!catalogReady) projectActions.initCatalog(catalog);
|
|
330
361
|
}
|
|
331
362
|
}, {
|
|
332
363
|
key: "isProjectEmpty",
|
|
@@ -336,23 +367,51 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
336
367
|
var layer = layers.get(selectedLayer);
|
|
337
368
|
return layer.areas.size + layer.lines.size + layer.holes.size + layer.items.size === 0;
|
|
338
369
|
}
|
|
370
|
+
}, {
|
|
371
|
+
key: "getExtractedStateWithViewer2DInit",
|
|
372
|
+
value: function getExtractedStateWithViewer2DInit(extractedState, width, height) {
|
|
373
|
+
if (!extractedState) return extractedState;
|
|
374
|
+
|
|
375
|
+
// ✅ If the extractedState reference changed, drop cache immediately.
|
|
376
|
+
if (this._lastExtractedStateRef !== extractedState) {
|
|
377
|
+
this._lastExtractedStateRef = extractedState;
|
|
378
|
+
this._cachedViewer2DKey = null;
|
|
379
|
+
this._cachedExtractedState = null;
|
|
380
|
+
}
|
|
381
|
+
var _viewer2D = extractedState.getIn(['viewer2D']);
|
|
382
|
+
if (!_viewer2D || _viewer2D.size <= 0) return extractedState;
|
|
383
|
+
var v = _viewer2D.toJS();
|
|
384
|
+
|
|
385
|
+
// Only do the "center viewer2D if e/f are zero" logic.
|
|
386
|
+
// ✅ No need to build keys from unrelated parts of state.
|
|
387
|
+
if (v.e !== 0 || v.f !== 0) return extractedState;
|
|
388
|
+
|
|
389
|
+
// Build a cache key ONLY for this viewer2D-centering computation.
|
|
390
|
+
var cacheKey = "".concat(width, ":").concat(height, ":").concat(v.viewerWidth, ":").concat(v.viewerHeight, ":").concat(v.SVGWidth, ":").concat(v.SVGHeight);
|
|
391
|
+
if (this._cachedViewer2DKey === cacheKey && this._cachedExtractedState) {
|
|
392
|
+
return this._cachedExtractedState;
|
|
393
|
+
}
|
|
394
|
+
var centeredViewer2D = _viewer2D.merge({
|
|
395
|
+
e: v.viewerWidth / 2 - v.SVGWidth / 2,
|
|
396
|
+
f: v.viewerHeight / 2 - v.SVGHeight / 2,
|
|
397
|
+
a: 0.99,
|
|
398
|
+
d: 0.99
|
|
399
|
+
});
|
|
400
|
+
var merged = extractedState.merge({
|
|
401
|
+
viewer2D: centeredViewer2D
|
|
402
|
+
});
|
|
403
|
+
this._cachedViewer2DKey = cacheKey;
|
|
404
|
+
this._cachedExtractedState = merged;
|
|
405
|
+
return merged;
|
|
406
|
+
}
|
|
339
407
|
}, {
|
|
340
408
|
key: "render",
|
|
341
409
|
value: function render() {
|
|
342
|
-
var
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
stateExtractor = _this$props2.stateExtractor,
|
|
348
|
-
props = _objectWithoutProperties(_this$props2, _excluded);
|
|
349
|
-
var actionsFromProps = objectsMap(actions, function (ns) {
|
|
350
|
-
return _this2.props[ns];
|
|
351
|
-
});
|
|
352
|
-
var appCtxValue = _objectSpread(_objectSpread({}, actionsFromProps), {}, {
|
|
353
|
-
translator: this.props.translator,
|
|
354
|
-
catalog: this.props.catalog
|
|
355
|
-
});
|
|
410
|
+
var _this$props3 = this.props,
|
|
411
|
+
width = _this$props3.width,
|
|
412
|
+
height = _this$props3.height,
|
|
413
|
+
extractedState = _this$props3.extractedState,
|
|
414
|
+
props = _objectWithoutProperties(_this$props3, _excluded);
|
|
356
415
|
var _this$state = this.state,
|
|
357
416
|
savePopupVisible = _this$state.savePopupVisible,
|
|
358
417
|
quotePopupVisible = _this$state.quotePopupVisible,
|
|
@@ -360,53 +419,22 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
360
419
|
signOpen = _this$state.signOpen,
|
|
361
420
|
myProjectsOpen = _this$state.myProjectsOpen;
|
|
362
421
|
var contentW = width - toolbarW;
|
|
363
|
-
// let contentW = width - toolbarW - sidebarW;
|
|
364
|
-
// let toolbarH = height - footerBarH;
|
|
365
|
-
// let contentH = height - footerBarH;
|
|
366
|
-
// let sidebarH = height - footerBarH;
|
|
367
|
-
var toolbarH = height;
|
|
368
422
|
var contentH = height;
|
|
369
|
-
var
|
|
370
|
-
var
|
|
371
|
-
var headerH = 60;
|
|
372
|
-
var extractedState = stateExtractor(state);
|
|
373
|
-
var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extractedState.scene);
|
|
423
|
+
var extracted = this.getExtractedStateWithViewer2DInit(extractedState, width, height);
|
|
424
|
+
var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extracted.scene);
|
|
374
425
|
var allVisible = firstVisit || signOpen || myProjectsOpen;
|
|
375
|
-
|
|
376
|
-
var len = convert(_scene.width).from(_scene.unit).to('cm');
|
|
377
|
-
var _viewer2D = extractedState.getIn(['viewer2D']);
|
|
378
|
-
if (_viewer2D.size > 0) {
|
|
379
|
-
var scaleX = width / len * 3;
|
|
380
|
-
var scaleY = height / len * 3;
|
|
381
|
-
var scale = scaleX > scaleY ? scaleY : scaleX;
|
|
382
|
-
var _e = width - len * scale,
|
|
383
|
-
_f = height - len * scale;
|
|
384
|
-
var viewer = _viewer2D.toJS();
|
|
385
|
-
if (viewer.e === 0 && viewer.f === 0) {
|
|
386
|
-
_viewer2D = _viewer2D.merge({
|
|
387
|
-
e: viewer.viewerWidth / 2 - viewer.SVGWidth / 2,
|
|
388
|
-
f: viewer.viewerHeight / 2 - viewer.SVGHeight / 2,
|
|
389
|
-
a: 0.99,
|
|
390
|
-
d: 0.99
|
|
391
|
-
});
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
extractedState = extractedState.merge({
|
|
395
|
-
viewer2D: _viewer2D
|
|
396
|
-
});
|
|
397
|
-
return /*#__PURE__*/React.createElement(AppContext.Provider, {
|
|
398
|
-
value: appCtxValue
|
|
399
|
-
}, /*#__PURE__*/React.createElement("section", null, /*#__PURE__*/React.createElement("div", {
|
|
426
|
+
return /*#__PURE__*/React.createElement("section", null, /*#__PURE__*/React.createElement("div", {
|
|
400
427
|
style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
|
|
401
428
|
height: height,
|
|
402
429
|
display: 'flex',
|
|
403
|
-
justifyContent: 'center'
|
|
430
|
+
justifyContent: 'center',
|
|
431
|
+
position: 'relative'
|
|
404
432
|
})
|
|
405
433
|
}, /*#__PURE__*/React.createElement(Content, _extends({
|
|
406
434
|
width: contentW,
|
|
407
435
|
height: contentH,
|
|
408
436
|
catalog: this.props.catalog,
|
|
409
|
-
state:
|
|
437
|
+
state: extracted,
|
|
410
438
|
toolBar: this.state.toolbar,
|
|
411
439
|
setToolbar: this.setToolbar,
|
|
412
440
|
replaceCabinet: this.replaceCabinet,
|
|
@@ -416,7 +444,20 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
416
444
|
return event.preventDefault();
|
|
417
445
|
},
|
|
418
446
|
onInternalEvent: this.props.onInternalEvent
|
|
419
|
-
}))
|
|
447
|
+
})), /*#__PURE__*/React.createElement(WarningItem, {
|
|
448
|
+
id: "warning_box_2d",
|
|
449
|
+
style: {
|
|
450
|
+
display: 'none'
|
|
451
|
+
}
|
|
452
|
+
}, /*#__PURE__*/React.createElement(SubCategoryItemImage, {
|
|
453
|
+
maskImage: "/assets/img/svg/3d_item_warning_info.svg",
|
|
454
|
+
style: {
|
|
455
|
+
backgroundColor: constants.BG_COLOR_1,
|
|
456
|
+
marginRight: 10,
|
|
457
|
+
height: 30,
|
|
458
|
+
width: 30
|
|
459
|
+
}
|
|
460
|
+
}), "This item is not available in the current door style. Replace it with another one.")));
|
|
420
461
|
}
|
|
421
462
|
}]);
|
|
422
463
|
}(Component);
|
|
@@ -430,13 +471,21 @@ LiteKitchenConfigurator.propTypes = {
|
|
|
430
471
|
width: PropTypes.number.isRequired,
|
|
431
472
|
height: PropTypes.number.isRequired,
|
|
432
473
|
stateExtractor: PropTypes.func.isRequired,
|
|
433
|
-
sidebarComponents: PropTypes.array,
|
|
434
|
-
footerbarComponents: PropTypes.array,
|
|
435
|
-
customContents: PropTypes.object,
|
|
436
|
-
softwareSignature: PropTypes.string,
|
|
437
474
|
configData: PropTypes.object,
|
|
438
|
-
onInternalEvent: PropTypes.func
|
|
475
|
+
onInternalEvent: PropTypes.func,
|
|
476
|
+
extractedState: PropTypes.object,
|
|
477
|
+
// ✅ injected by connect
|
|
478
|
+
externalEvent: PropTypes.object
|
|
439
479
|
};
|
|
480
|
+
LiteKitchenConfigurator.contextTypes = {
|
|
481
|
+
store: PropTypes.object.isRequired
|
|
482
|
+
};
|
|
483
|
+
LiteKitchenConfigurator.childContextTypes = _objectSpread(_objectSpread({}, objectsMap(actions, function () {
|
|
484
|
+
return PropTypes.object;
|
|
485
|
+
})), {}, {
|
|
486
|
+
translator: PropTypes.object,
|
|
487
|
+
catalog: PropTypes.object
|
|
488
|
+
});
|
|
440
489
|
LiteKitchenConfigurator.defaultProps = {
|
|
441
490
|
translator: new Translator(),
|
|
442
491
|
catalog: new Catalog(),
|
|
@@ -449,10 +498,16 @@ LiteKitchenConfigurator.defaultProps = {
|
|
|
449
498
|
configData: {}
|
|
450
499
|
};
|
|
451
500
|
|
|
452
|
-
//
|
|
453
|
-
|
|
501
|
+
// ✅ Only select the slice you actually use.
|
|
502
|
+
// This preserves behavior but massively reduces rerenders.
|
|
503
|
+
function mapStateToProps(reduxState, ownProps) {
|
|
504
|
+
var stateExtractor = ownProps.stateExtractor || function (s) {
|
|
505
|
+
return s;
|
|
506
|
+
};
|
|
507
|
+
var extractedState = stateExtractor(reduxState);
|
|
454
508
|
return {
|
|
455
|
-
|
|
509
|
+
extractedState: extractedState,
|
|
510
|
+
state: extractedState
|
|
456
511
|
};
|
|
457
512
|
}
|
|
458
513
|
function mapDispatchToProps(dispatch) {
|