kitchen-simulator 4.0.4-react-18 → 4.0.5
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 +161 -104
- package/es/LiteRenderer.js +161 -129
- 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 +566 -25
- 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 +160 -104
- package/lib/LiteRenderer.js +160 -129
- 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 +566 -25
- 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 -16
- 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,96 +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
|
|
353
|
+
// same behavior: handle external event when it changes
|
|
320
354
|
if (prevProps.externalEvent !== externalEvent) {
|
|
321
355
|
handleExternalEvent(this.props);
|
|
322
356
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}
|
|
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);
|
|
328
361
|
}
|
|
329
362
|
}, {
|
|
330
363
|
key: "isProjectEmpty",
|
|
@@ -334,23 +367,51 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
334
367
|
var layer = layers.get(selectedLayer);
|
|
335
368
|
return layer.areas.size + layer.lines.size + layer.holes.size + layer.items.size === 0;
|
|
336
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
|
+
}
|
|
337
407
|
}, {
|
|
338
408
|
key: "render",
|
|
339
409
|
value: function render() {
|
|
340
|
-
var
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
stateExtractor = _this$props2.stateExtractor,
|
|
346
|
-
props = _objectWithoutProperties(_this$props2, _excluded);
|
|
347
|
-
var actionsFromProps = objectsMap(actions, function (ns) {
|
|
348
|
-
return _this2.props[ns];
|
|
349
|
-
});
|
|
350
|
-
var appCtxValue = _objectSpread(_objectSpread({}, actionsFromProps), {}, {
|
|
351
|
-
translator: this.props.translator,
|
|
352
|
-
catalog: this.props.catalog
|
|
353
|
-
});
|
|
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);
|
|
354
415
|
var _this$state = this.state,
|
|
355
416
|
savePopupVisible = _this$state.savePopupVisible,
|
|
356
417
|
quotePopupVisible = _this$state.quotePopupVisible,
|
|
@@ -358,53 +419,22 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
358
419
|
signOpen = _this$state.signOpen,
|
|
359
420
|
myProjectsOpen = _this$state.myProjectsOpen;
|
|
360
421
|
var contentW = width - toolbarW;
|
|
361
|
-
// let contentW = width - toolbarW - sidebarW;
|
|
362
|
-
// let toolbarH = height - footerBarH;
|
|
363
|
-
// let contentH = height - footerBarH;
|
|
364
|
-
// let sidebarH = height - footerBarH;
|
|
365
|
-
var toolbarH = height;
|
|
366
422
|
var contentH = height;
|
|
367
|
-
var
|
|
368
|
-
var
|
|
369
|
-
var headerH = 60;
|
|
370
|
-
var extractedState = stateExtractor(state);
|
|
371
|
-
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);
|
|
372
425
|
var allVisible = firstVisit || signOpen || myProjectsOpen;
|
|
373
|
-
|
|
374
|
-
var len = convert(_scene.width).from(_scene.unit).to('cm');
|
|
375
|
-
var _viewer2D = extractedState.getIn(['viewer2D']);
|
|
376
|
-
if (_viewer2D.size > 0) {
|
|
377
|
-
var scaleX = width / len * 3;
|
|
378
|
-
var scaleY = height / len * 3;
|
|
379
|
-
var scale = scaleX > scaleY ? scaleY : scaleX;
|
|
380
|
-
var _e = width - len * scale,
|
|
381
|
-
_f = height - len * scale;
|
|
382
|
-
var viewer = _viewer2D.toJS();
|
|
383
|
-
if (viewer.e === 0 && viewer.f === 0) {
|
|
384
|
-
_viewer2D = _viewer2D.merge({
|
|
385
|
-
e: viewer.viewerWidth / 2 - viewer.SVGWidth / 2,
|
|
386
|
-
f: viewer.viewerHeight / 2 - viewer.SVGHeight / 2,
|
|
387
|
-
a: 0.99,
|
|
388
|
-
d: 0.99
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
extractedState = extractedState.merge({
|
|
393
|
-
viewer2D: _viewer2D
|
|
394
|
-
});
|
|
395
|
-
return /*#__PURE__*/React.createElement(AppContext.Provider, {
|
|
396
|
-
value: appCtxValue
|
|
397
|
-
}, /*#__PURE__*/React.createElement("section", null, /*#__PURE__*/React.createElement("div", {
|
|
426
|
+
return /*#__PURE__*/React.createElement("section", null, /*#__PURE__*/React.createElement("div", {
|
|
398
427
|
style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
|
|
399
428
|
height: height,
|
|
400
429
|
display: 'flex',
|
|
401
|
-
justifyContent: 'center'
|
|
430
|
+
justifyContent: 'center',
|
|
431
|
+
position: 'relative'
|
|
402
432
|
})
|
|
403
433
|
}, /*#__PURE__*/React.createElement(Content, _extends({
|
|
404
434
|
width: contentW,
|
|
405
435
|
height: contentH,
|
|
406
436
|
catalog: this.props.catalog,
|
|
407
|
-
state:
|
|
437
|
+
state: extracted,
|
|
408
438
|
toolBar: this.state.toolbar,
|
|
409
439
|
setToolbar: this.setToolbar,
|
|
410
440
|
replaceCabinet: this.replaceCabinet,
|
|
@@ -414,7 +444,20 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
414
444
|
return event.preventDefault();
|
|
415
445
|
},
|
|
416
446
|
onInternalEvent: this.props.onInternalEvent
|
|
417
|
-
}))
|
|
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.")));
|
|
418
461
|
}
|
|
419
462
|
}]);
|
|
420
463
|
}(Component);
|
|
@@ -428,13 +471,21 @@ LiteKitchenConfigurator.propTypes = {
|
|
|
428
471
|
width: PropTypes.number.isRequired,
|
|
429
472
|
height: PropTypes.number.isRequired,
|
|
430
473
|
stateExtractor: PropTypes.func.isRequired,
|
|
431
|
-
sidebarComponents: PropTypes.array,
|
|
432
|
-
footerbarComponents: PropTypes.array,
|
|
433
|
-
customContents: PropTypes.object,
|
|
434
|
-
softwareSignature: PropTypes.string,
|
|
435
474
|
configData: PropTypes.object,
|
|
436
|
-
onInternalEvent: PropTypes.func
|
|
475
|
+
onInternalEvent: PropTypes.func,
|
|
476
|
+
extractedState: PropTypes.object,
|
|
477
|
+
// ✅ injected by connect
|
|
478
|
+
externalEvent: PropTypes.object
|
|
437
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
|
+
});
|
|
438
489
|
LiteKitchenConfigurator.defaultProps = {
|
|
439
490
|
translator: new Translator(),
|
|
440
491
|
catalog: new Catalog(),
|
|
@@ -447,10 +498,16 @@ LiteKitchenConfigurator.defaultProps = {
|
|
|
447
498
|
configData: {}
|
|
448
499
|
};
|
|
449
500
|
|
|
450
|
-
//
|
|
451
|
-
|
|
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);
|
|
452
508
|
return {
|
|
453
|
-
|
|
509
|
+
extractedState: extractedState,
|
|
510
|
+
state: extractedState
|
|
454
511
|
};
|
|
455
512
|
}
|
|
456
513
|
function mapDispatchToProps(dispatch) {
|