kitchen-simulator 1.0.0-clark.85 → 1.0.0-clark.90
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/es/LiteKitchenConfigurator.js +35 -16
- package/es/LiteRenderer.js +5 -2
- package/es/components/content.js +10 -5
- package/es/components/viewer2d/viewer2d.js +85 -32
- package/es/components/viewer3d/viewer3d.js +86 -53
- package/es/constants.js +7 -1
- package/es/devLiteRenderer.js +5 -1
- package/es/utils/geometry.js +6 -6
- package/es/utils/isolate-event-handler.js +2 -0
- package/lib/LiteKitchenConfigurator.js +35 -16
- package/lib/LiteRenderer.js +5 -2
- package/lib/components/content.js +10 -5
- package/lib/components/viewer2d/viewer2d.js +84 -31
- package/lib/components/viewer3d/viewer3d.js +85 -52
- package/lib/constants.js +10 -4
- package/lib/devLiteRenderer.js +5 -1
- package/lib/utils/geometry.js +6 -6
- package/lib/utils/isolate-event-handler.js +2 -0
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
3
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
4
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
4
|
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
6
5
|
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
7
6
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
8
7
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
9
8
|
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
9
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
10
10
|
var _excluded = ["width", "height", "state", "stateExtractor"];
|
|
11
11
|
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; }
|
|
12
12
|
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; }
|
|
@@ -40,6 +40,23 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
40
40
|
_this = _callSuper(this, LiteKitchenConfigurator, [props]);
|
|
41
41
|
|
|
42
42
|
// utm tracking
|
|
43
|
+
_defineProperty(_this, "handleBeforeUnload", function (e) {
|
|
44
|
+
var areas = _this.props.stateExtractor(_this.props.state).getIn(['scene', 'layers', _this.props.stateExtractor(_this.props.state).scene.selectedLayer, 'areas']);
|
|
45
|
+
if (!_this.state.isSaved && areas.size > 0) {
|
|
46
|
+
setTimeout(function () {
|
|
47
|
+
_this.setState({
|
|
48
|
+
savePromptVisible: true,
|
|
49
|
+
isLeaving: true
|
|
50
|
+
});
|
|
51
|
+
}, 500);
|
|
52
|
+
_this.saveProjectToStorage();
|
|
53
|
+
|
|
54
|
+
// This line is required to trigger the browser confirmation dialog
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
e.returnValue = '';
|
|
57
|
+
return '';
|
|
58
|
+
}
|
|
59
|
+
});
|
|
43
60
|
var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
|
|
44
61
|
var utmStrEncoded = utmDetailParams.get('details');
|
|
45
62
|
var utmRequestData = null;
|
|
@@ -84,8 +101,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
84
101
|
redirectURL: '',
|
|
85
102
|
snackBarMessage: '',
|
|
86
103
|
isSaved: false,
|
|
87
|
-
isLeaving: false
|
|
88
|
-
stateCatalog: _this.props.catalog
|
|
104
|
+
isLeaving: false
|
|
89
105
|
};
|
|
90
106
|
|
|
91
107
|
// For UTM tracking
|
|
@@ -326,6 +342,8 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
326
342
|
}, {
|
|
327
343
|
key: "componentDidMount",
|
|
328
344
|
value: function componentDidMount() {
|
|
345
|
+
window.addEventListener('beforeunload', this.handleBeforeUnload);
|
|
346
|
+
console.log('context =>', this.context);
|
|
329
347
|
window.forRedo = [];
|
|
330
348
|
var store = this.context.store;
|
|
331
349
|
var _this$props2 = this.props,
|
|
@@ -336,10 +354,18 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
336
354
|
return newplugin(store, stateExtractor);
|
|
337
355
|
});
|
|
338
356
|
}
|
|
357
|
+
}, {
|
|
358
|
+
key: "componentWillUnmount",
|
|
359
|
+
value: function componentWillUnmount() {
|
|
360
|
+
window.addEventListener('beforeunload', this.handleBeforeUnload);
|
|
361
|
+
window.onbeforeunload = null;
|
|
362
|
+
}
|
|
363
|
+
}, {
|
|
364
|
+
key: "componentWillMount",
|
|
365
|
+
value: function componentWillMount() {}
|
|
339
366
|
}, {
|
|
340
367
|
key: "componentWillReceiveProps",
|
|
341
368
|
value: function componentWillReceiveProps(nextProps) {
|
|
342
|
-
var _oldState$catalog, _plannerState$catalog;
|
|
343
369
|
var stateExtractor = nextProps.stateExtractor,
|
|
344
370
|
state = nextProps.state,
|
|
345
371
|
projectActions = nextProps.projectActions,
|
|
@@ -351,15 +377,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
351
377
|
handleExternalEvent(nextProps);
|
|
352
378
|
}
|
|
353
379
|
var plannerState = stateExtractor(state);
|
|
354
|
-
var oldState = stateExtractor(this.props.state);
|
|
355
|
-
if ((oldState === null || oldState === void 0 || (_oldState$catalog = oldState.catalog) === null || _oldState$catalog === void 0 ? void 0 : _oldState$catalog.elements) !== (plannerState === null || plannerState === void 0 || (_plannerState$catalog = plannerState.catalog) === null || _plannerState$catalog === void 0 ? void 0 : _plannerState$catalog.elements)) {
|
|
356
|
-
// copy state.catalog to the props.catalog
|
|
357
|
-
// let catalog = this.state.stateCatalog;
|
|
358
|
-
// console.log('111111', plannerState?.catalog?.elements.toJS());
|
|
359
|
-
// catalog.elements = plannerState?.catalog?.elements.toJS();
|
|
360
|
-
// console.log('222222', catalog);
|
|
361
|
-
// this.setState({ stateCatalog: catalog });
|
|
362
|
-
}
|
|
363
380
|
var catalogReady = plannerState.getIn(['catalog', 'ready']);
|
|
364
381
|
if (!catalogReady) {
|
|
365
382
|
projectActions.initCatalog(catalog);
|
|
@@ -432,7 +449,7 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
432
449
|
}, /*#__PURE__*/React.createElement(Content, _extends({
|
|
433
450
|
width: contentW,
|
|
434
451
|
height: contentH,
|
|
435
|
-
catalog: this.
|
|
452
|
+
catalog: this.props.catalog,
|
|
436
453
|
state: extractedState,
|
|
437
454
|
toolBar: this.state.toolbar,
|
|
438
455
|
setToolbar: this.setToolbar,
|
|
@@ -441,7 +458,8 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
441
458
|
}, props, {
|
|
442
459
|
onWheel: function onWheel(event) {
|
|
443
460
|
return event.preventDefault();
|
|
444
|
-
}
|
|
461
|
+
},
|
|
462
|
+
onInternalEvent: this.props.onInternalEvent
|
|
445
463
|
}))));
|
|
446
464
|
}
|
|
447
465
|
}]);
|
|
@@ -460,7 +478,8 @@ LiteKitchenConfigurator.propTypes = {
|
|
|
460
478
|
footerbarComponents: PropTypes.array,
|
|
461
479
|
customContents: PropTypes.object,
|
|
462
480
|
softwareSignature: PropTypes.string,
|
|
463
|
-
configData: PropTypes.object
|
|
481
|
+
configData: PropTypes.object,
|
|
482
|
+
onInternalEvent: PropTypes.func
|
|
464
483
|
};
|
|
465
484
|
LiteKitchenConfigurator.contextTypes = {
|
|
466
485
|
store: PropTypes.object.isRequired
|
package/es/LiteRenderer.js
CHANGED
|
@@ -8,7 +8,7 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
|
8
8
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
9
9
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
10
10
|
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
11
|
-
var _excluded = ["width", "height", "projectElement", "dataBundle", "configData", "options", "user", "auth", "featureFlags", "sentry", "analytics", "externalEvent", "onError"];
|
|
11
|
+
var _excluded = ["width", "height", "projectElement", "dataBundle", "configData", "options", "user", "auth", "featureFlags", "sentry", "analytics", "externalEvent", "onInternalEvent", "onError"];
|
|
12
12
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
13
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; }
|
|
14
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; }
|
|
@@ -153,6 +153,7 @@ export default function LiteRenderer(props) {
|
|
|
153
153
|
sentry = props.sentry,
|
|
154
154
|
analytics = props.analytics,
|
|
155
155
|
externalEvent = props.externalEvent,
|
|
156
|
+
onInternalEvent = props.onInternalEvent,
|
|
156
157
|
onError = props.onError,
|
|
157
158
|
passThrough = _objectWithoutProperties(props, _excluded);
|
|
158
159
|
|
|
@@ -471,7 +472,8 @@ export default function LiteRenderer(props) {
|
|
|
471
472
|
},
|
|
472
473
|
data: data,
|
|
473
474
|
configData: configData,
|
|
474
|
-
externalEvent: externalEvent
|
|
475
|
+
externalEvent: externalEvent,
|
|
476
|
+
onInternalEvent: onInternalEvent
|
|
475
477
|
}, passThrough)))));
|
|
476
478
|
}
|
|
477
479
|
|
|
@@ -495,6 +497,7 @@ LiteRenderer.propTypes = {
|
|
|
495
497
|
environment: PropTypes.string
|
|
496
498
|
}),
|
|
497
499
|
externalEvent: PropTypes.object,
|
|
500
|
+
onInternalEvent: PropTypes.func,
|
|
498
501
|
onError: PropTypes.func,
|
|
499
502
|
store: PropTypes.object
|
|
500
503
|
};
|
package/es/components/content.js
CHANGED
|
@@ -16,7 +16,8 @@ export default function Content(_ref, _ref2) {
|
|
|
16
16
|
setToolbar = _ref.setToolbar,
|
|
17
17
|
replaceCabinet = _ref.replaceCabinet,
|
|
18
18
|
keyDownEnable = _ref.keyDownEnable,
|
|
19
|
-
catalog = _ref.catalog
|
|
19
|
+
catalog = _ref.catalog,
|
|
20
|
+
onInternalEvent = _ref.onInternalEvent;
|
|
20
21
|
var projectActions = _ref2.projectActions;
|
|
21
22
|
var mode = state.get('mode');
|
|
22
23
|
switch (mode) {
|
|
@@ -40,7 +41,8 @@ export default function Content(_ref, _ref2) {
|
|
|
40
41
|
setToolbar: setToolbar,
|
|
41
42
|
replaceCabinet: replaceCabinet,
|
|
42
43
|
keyDownEnable: keyDownEnable,
|
|
43
|
-
downloadFlag: false
|
|
44
|
+
downloadFlag: false,
|
|
45
|
+
onInternalEvent: onInternalEvent
|
|
44
46
|
});
|
|
45
47
|
case constants.MODE_3D_FIRST_PERSON:
|
|
46
48
|
return /*#__PURE__*/React.createElement(Viewer3DFirstPerson, {
|
|
@@ -78,7 +80,8 @@ export default function Content(_ref, _ref2) {
|
|
|
78
80
|
width: width,
|
|
79
81
|
height: height,
|
|
80
82
|
setToolbar: setToolbar,
|
|
81
|
-
replaceCabinet: replaceCabinet
|
|
83
|
+
replaceCabinet: replaceCabinet,
|
|
84
|
+
onInternalEvent: onInternalEvent
|
|
82
85
|
});
|
|
83
86
|
case constants.MODE_ROTATING_ITEM_3D:
|
|
84
87
|
case constants.MODE_DRAGGING_ITEM_3D:
|
|
@@ -94,7 +97,8 @@ export default function Content(_ref, _ref2) {
|
|
|
94
97
|
setToolbar: setToolbar,
|
|
95
98
|
replaceCabinet: replaceCabinet,
|
|
96
99
|
keyDownEnable: keyDownEnable,
|
|
97
|
-
downloadFlag: false
|
|
100
|
+
downloadFlag: false,
|
|
101
|
+
onInternalEvent: onInternalEvent
|
|
98
102
|
});
|
|
99
103
|
|
|
100
104
|
// case constants.MODE_CONFIGURING_PROJECT:
|
|
@@ -119,7 +123,8 @@ Content.propTypes = {
|
|
|
119
123
|
state: PropTypes.object.isRequired,
|
|
120
124
|
width: PropTypes.number.isRequired,
|
|
121
125
|
height: PropTypes.number.isRequired,
|
|
122
|
-
replaceCabinet: PropTypes.func.isRequired
|
|
126
|
+
replaceCabinet: PropTypes.func.isRequired,
|
|
127
|
+
onInternalEvent: PropTypes.func.isRequired
|
|
123
128
|
};
|
|
124
129
|
Content.contextTypes = {
|
|
125
130
|
projectActions: PropTypes.object.isRequired
|
|
@@ -6,7 +6,7 @@ import React, { useEffect, useRef, useState } from 'react';
|
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import { ReactSVGPanZoom, TOOL_AUTO, TOOL_NONE, TOOL_PAN, TOOL_ZOOM_IN, TOOL_ZOOM_OUT } from 'react-svg-pan-zoom';
|
|
8
8
|
import * as constants from "../../constants";
|
|
9
|
-
import { DECIMAL_PLACES_2, LINE_THICKNESS, MIN_ANGLE_DISALLOW_DRAW_WALL, MODE_ELEVATION_VIEW, MODE_IDLE, UNIT_ANGLE } from "../../constants";
|
|
9
|
+
import { DECIMAL_PLACES_2, LINE_THICKNESS, MIN_ANGLE_DISALLOW_DRAW_WALL, MODE_ELEVATION_VIEW, MODE_IDLE, UNIT_ANGLE, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT } from "../../constants";
|
|
10
10
|
import State from "./state";
|
|
11
11
|
import * as SharedStyle from "../../shared-style";
|
|
12
12
|
import { RulerX, RulerY } from "./export";
|
|
@@ -123,7 +123,8 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
123
123
|
width = _ref.width,
|
|
124
124
|
height = _ref.height,
|
|
125
125
|
setToolbar = _ref.setToolbar,
|
|
126
|
-
replaceCabinet = _ref.replaceCabinet
|
|
126
|
+
replaceCabinet = _ref.replaceCabinet,
|
|
127
|
+
onInternalEvent = _ref.onInternalEvent;
|
|
127
128
|
var viewer2DActions = _ref2.viewer2DActions,
|
|
128
129
|
linesActions = _ref2.linesActions,
|
|
129
130
|
holesActions = _ref2.holesActions,
|
|
@@ -780,35 +781,42 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
780
781
|
if (mode === constants.MODE_IDLE) {
|
|
781
782
|
var elementData = extractElementData(event.target);
|
|
782
783
|
if (!elementData) return;
|
|
783
|
-
if (sCount < 2)
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
if (elementData.
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
break;
|
|
790
|
-
case 'vertices':
|
|
791
|
-
verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
|
|
792
|
-
break;
|
|
793
|
-
case 'items':
|
|
794
|
-
setToolbar('');
|
|
795
|
-
current_sel_obj_id = elementData.id;
|
|
796
|
-
if (elementData.part === 'rotation-anchor') itemsActions.beginRotatingItem(elementData.layer, elementData.id, x, y);else if (elementData.part === 'remove') break;else if (elementData.part === 'duplicate') break;else if (elementData.part === 'warning_edit') break;else {
|
|
797
|
-
// closes the setting dialog
|
|
798
|
-
if (document.getElementById('setting_dialog')) {
|
|
799
|
-
document.getElementById('setting_dialog').style.display = 'none';
|
|
784
|
+
if (sCount < 2) {
|
|
785
|
+
switch (elementData.prototype) {
|
|
786
|
+
case 'lines':
|
|
787
|
+
if (elementData.selected) {
|
|
788
|
+
if (elementData.part === 'remove') break;else if (elementData.part === 'elevation') break;
|
|
789
|
+
linesActions.beginDraggingLine(elementData.layer, elementData.id, x, y, state.snapMask);
|
|
800
790
|
}
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
791
|
+
break;
|
|
792
|
+
case 'vertices':
|
|
793
|
+
verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
|
|
794
|
+
break;
|
|
795
|
+
case 'items':
|
|
796
|
+
setToolbar('');
|
|
797
|
+
current_sel_obj_id = elementData.id;
|
|
798
|
+
if (elementData.part === 'rotation-anchor') itemsActions.beginRotatingItem(elementData.layer, elementData.id, x, y);else if (elementData.part === 'remove') break;else if (elementData.part === 'duplicate') break;else if (elementData.part === 'warning_edit') break;else {
|
|
799
|
+
// closes the setting dialog
|
|
800
|
+
if (document.getElementById('setting_dialog')) {
|
|
801
|
+
document.getElementById('setting_dialog').style.display = 'none';
|
|
802
|
+
}
|
|
803
|
+
itemsActions.selectItem(elementData.layer, elementData.id);
|
|
804
|
+
// projectActions.setMode(constants.MODE_DRAGGING_ITEM);
|
|
805
|
+
itemsActions.beginDraggingItem(elementData.layer, elementData.id, x, y);
|
|
806
|
+
replaceCabinet(false);
|
|
807
|
+
}
|
|
808
|
+
break;
|
|
809
|
+
case 'holes':
|
|
810
|
+
if (elementData.selected) holesActions.beginDraggingHole(elementData.layer, elementData.id, x, y);
|
|
811
|
+
break;
|
|
812
|
+
default:
|
|
813
|
+
break;
|
|
814
|
+
}
|
|
815
|
+
var currentObject = state.getIn(['scene', 'layers', layerID, elementData.prototype, elementData.id]);
|
|
816
|
+
onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
|
|
817
|
+
type: INTERNAL_EVENT_SELECT_ELEMENT,
|
|
818
|
+
value: currentObject.toJS()
|
|
819
|
+
});
|
|
812
820
|
} else {
|
|
813
821
|
sPoint.x = x;
|
|
814
822
|
sPoint.y = y;
|
|
@@ -844,10 +852,47 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
844
852
|
y = _mapCursorPosition3.y;
|
|
845
853
|
var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
|
|
846
854
|
var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
|
|
855
|
+
var elementData = extractElementData(event.target);
|
|
856
|
+
var selectedLayer = scene.getIn(['layers', layerID]);
|
|
857
|
+
var elementPrototype = null;
|
|
858
|
+
var elementID = null;
|
|
859
|
+
var internalType = '';
|
|
860
|
+
switch (mode) {
|
|
861
|
+
case constants.MODE_DRAWING_LINE:
|
|
862
|
+
elementPrototype = 'lines';
|
|
863
|
+
internalType = INTERNAL_EVENT_DRAW_ELEMENT;
|
|
864
|
+
break;
|
|
865
|
+
case constants.MODE_DRAWING_HOLE:
|
|
866
|
+
elementPrototype = 'holes';
|
|
867
|
+
internalType = INTERNAL_EVENT_DRAW_ELEMENT;
|
|
868
|
+
break;
|
|
869
|
+
case constants.MODE_DRAWING_ITEM:
|
|
870
|
+
elementPrototype = 'items';
|
|
871
|
+
internalType = INTERNAL_EVENT_DRAW_ELEMENT;
|
|
872
|
+
break;
|
|
873
|
+
case constants.MODE_DRAGGING_LINE:
|
|
874
|
+
elementPrototype = 'lines';
|
|
875
|
+
internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
876
|
+
break;
|
|
877
|
+
case constants.MODE_DRAGGING_HOLE:
|
|
878
|
+
elementPrototype = 'holes';
|
|
879
|
+
internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
880
|
+
break;
|
|
881
|
+
case constants.MODE_DRAGGING_ITEM:
|
|
882
|
+
elementPrototype = 'items';
|
|
883
|
+
internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
884
|
+
break;
|
|
885
|
+
case constants.MODE_DRAGGING_VERTEX:
|
|
886
|
+
elementPrototype = 'lines';
|
|
887
|
+
internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
888
|
+
break;
|
|
889
|
+
case constants.MODE_ROTATING_ITEM:
|
|
890
|
+
elementPrototype = 'items';
|
|
891
|
+
internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
|
|
892
|
+
break;
|
|
893
|
+
}
|
|
847
894
|
switch (mode) {
|
|
848
895
|
case constants.MODE_IDLE:
|
|
849
|
-
var elementData = extractElementData(event.target);
|
|
850
|
-
var selectedLayer = scene.getIn(['layers', layerID]);
|
|
851
896
|
switch (elementData ? elementData.prototype : 'none') {
|
|
852
897
|
case 'areas':
|
|
853
898
|
if (document.getElementById('setting_dialog')) {
|
|
@@ -1187,6 +1232,14 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
1187
1232
|
itemsActions.endRotatingItem(x, y);
|
|
1188
1233
|
break;
|
|
1189
1234
|
}
|
|
1235
|
+
if (elementPrototype) {
|
|
1236
|
+
elementID = state.getIn(['scene', 'layers', layerID, 'selected', elementPrototype]).first();
|
|
1237
|
+
var _currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
|
|
1238
|
+
onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
|
|
1239
|
+
type: internalType,
|
|
1240
|
+
value: _currentObject.toJS()
|
|
1241
|
+
});
|
|
1242
|
+
}
|
|
1190
1243
|
event.stopPropagation();
|
|
1191
1244
|
};
|
|
1192
1245
|
var onChangeValue = function onChangeValue(value) {
|
|
@@ -19,7 +19,7 @@ import { checkCabinetOverlap, createBacksplash, deleteSpecifiedMeshObjects, fVLi
|
|
|
19
19
|
import { disposeObject, disposeScene } from "./three-memory-cleaner";
|
|
20
20
|
import diff from 'immutablediff';
|
|
21
21
|
import * as SharedStyle from "../../shared-style";
|
|
22
|
-
import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS } from "../../constants";
|
|
22
|
+
import { BASE_CABINET_LAYOUTPOS, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_HOLE_3D, MODE_DRAWING_ITEM_3D, MODE_ELEVATION_VIEW, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, SECONDARY_PURPLE_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, WALL_CABINET_LAYOUTPOS, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT, MODE_ROTATING_ITEM, MODE_DRAGGING_HOLE_3D } from "../../constants";
|
|
23
23
|
import { isUndefined } from 'util';
|
|
24
24
|
import { verticesDistance } from "../../utils/geometry";
|
|
25
25
|
import { convert } from "../../utils/convert-units-lite";
|
|
@@ -1274,7 +1274,18 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1274
1274
|
}
|
|
1275
1275
|
}
|
|
1276
1276
|
if (selectedObject !== undefined) {
|
|
1277
|
-
|
|
1277
|
+
// get selected object from planData.sceneGraph
|
|
1278
|
+
var selectedItem = null;
|
|
1279
|
+
switch (true) {
|
|
1280
|
+
case 'itemID' in selectedObject:
|
|
1281
|
+
selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1282
|
+
break;
|
|
1283
|
+
case 'holeID' in selectedObject:
|
|
1284
|
+
selectedItem = planData.sceneGraph.layers[selectedObject.layerID].holes[selectedObject.holeID];
|
|
1285
|
+
break;
|
|
1286
|
+
default:
|
|
1287
|
+
break;
|
|
1288
|
+
}
|
|
1278
1289
|
sPoint.set(Point.x, Point.y);
|
|
1279
1290
|
if (transflag == 0) {
|
|
1280
1291
|
scene3D.remove(toolObj);
|
|
@@ -1340,7 +1351,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1340
1351
|
}
|
|
1341
1352
|
};
|
|
1342
1353
|
this.mouseUpEvent = function (event) {
|
|
1343
|
-
var
|
|
1354
|
+
var internalType = ''; // internalEvent type - select/drag/draw
|
|
1355
|
+
var selectedElement; // internalEvent data
|
|
1344
1356
|
firstMove = 0;
|
|
1345
1357
|
var altitude = 0;
|
|
1346
1358
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1377,6 +1389,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1377
1389
|
isInitialPhase = true;
|
|
1378
1390
|
return;
|
|
1379
1391
|
}
|
|
1392
|
+
switch (_this2.props.state.mode) {
|
|
1393
|
+
case MODE_DRAGGING_ITEM_3D:
|
|
1394
|
+
internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
1395
|
+
break;
|
|
1396
|
+
case MODE_ROTATING_ITEM_3D:
|
|
1397
|
+
internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
|
|
1398
|
+
break;
|
|
1399
|
+
}
|
|
1380
1400
|
if (_this2.props.state.mode == MODE_DRAGGING_ITEM_3D) {
|
|
1381
1401
|
_this2.context.itemsActions.endDraggingItem3D();
|
|
1382
1402
|
}
|
|
@@ -1458,56 +1478,62 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1458
1478
|
currentObject = currentObject.parent;
|
|
1459
1479
|
}
|
|
1460
1480
|
isSelected = true;
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1485
|
-
});
|
|
1486
|
-
pointArray.forEach(function (pointElement) {
|
|
1487
|
-
if (pointElement[0] == 0) cnt++;
|
|
1488
|
-
});
|
|
1489
|
-
if (cnt == 4 || cnt == 3) {
|
|
1490
|
-
pointArray[0][0] = 100;
|
|
1491
|
-
pointArray[1][0] = 100;
|
|
1492
|
-
}
|
|
1493
|
-
actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
|
|
1481
|
+
getDistances(layer);
|
|
1482
|
+
var selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1483
|
+
if (isUndefined(selectedItem)) return;
|
|
1484
|
+
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1485
|
+
var itemPos = selectedItem.position.clone();
|
|
1486
|
+
if (intersects[_i10].object.parent && intersects[_i10].object.parent.parent.userData.itemId === selectedItem.userData.itemId) {
|
|
1487
|
+
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1488
|
+
} else {
|
|
1489
|
+
toolObj.position.set(planData.plan.position.x + itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + selectedItem.children[0].position.y, planData.plan.position.z + itemPos.z);
|
|
1490
|
+
}
|
|
1491
|
+
scene3D.add(toolObj);
|
|
1492
|
+
_this2.setState({
|
|
1493
|
+
toolObj: toolObj
|
|
1494
|
+
});
|
|
1495
|
+
// showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
|
|
1496
|
+
var pointArray = [],
|
|
1497
|
+
cnt = 0;
|
|
1498
|
+
pointArray.push([fVLine[0].userData.distance, 90]);
|
|
1499
|
+
pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1500
|
+
pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1501
|
+
pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1502
|
+
pointArray.forEach(function (pointElement, index) {
|
|
1503
|
+
if (pointElement[0] == undefined) pointArray[index][0] = 0;
|
|
1494
1504
|
});
|
|
1505
|
+
pointArray.forEach(function (pointElement) {
|
|
1506
|
+
if (pointElement[0] == 0) cnt++;
|
|
1507
|
+
});
|
|
1508
|
+
if (cnt == 4 || cnt == 3) {
|
|
1509
|
+
pointArray[0][0] = 100;
|
|
1510
|
+
pointArray[1][0] = 100;
|
|
1511
|
+
}
|
|
1512
|
+
actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
|
|
1513
|
+
internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1495
1514
|
} else {
|
|
1496
1515
|
if (selectedObject) {
|
|
1516
|
+
var elementID = null;
|
|
1517
|
+
var elementPrototype = null;
|
|
1497
1518
|
switch (true) {
|
|
1498
1519
|
case 'holeID' in selectedObject:
|
|
1499
|
-
if (selObj !== null && selObj !== void 0 && (_selObj$object = selObj.object) !== null && _selObj$object !== void 0 && _selObj$object.name.includes('transHole')) {
|
|
1500
|
-
actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
|
|
1501
|
-
}
|
|
1502
|
-
break;
|
|
1503
1520
|
case 'lineID' in selectedObject:
|
|
1504
|
-
if (
|
|
1521
|
+
if (_this2.props.state.mode === MODE_DRAGGING_HOLE_3D) {
|
|
1505
1522
|
actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
|
|
1523
|
+
internalType = INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1524
|
+
elementID = selectedObject.holeID;
|
|
1525
|
+
elementPrototype = 'holeID';
|
|
1506
1526
|
}
|
|
1507
1527
|
break;
|
|
1528
|
+
case 'areaID' in selectedObject:
|
|
1529
|
+
internalType = INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1530
|
+
elementID = selectedObject.areaID;
|
|
1531
|
+
elementPrototype = 'areas';
|
|
1532
|
+
break;
|
|
1508
1533
|
default:
|
|
1509
1534
|
break;
|
|
1510
1535
|
}
|
|
1536
|
+
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).getIn([elementPrototype, elementID]);
|
|
1511
1537
|
}
|
|
1512
1538
|
isSelected = false;
|
|
1513
1539
|
}
|
|
@@ -1542,14 +1568,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1542
1568
|
getPoint(event, alti);
|
|
1543
1569
|
if (bRotate) {
|
|
1544
1570
|
var _intersects$_i;
|
|
1545
|
-
var
|
|
1546
|
-
if (isUndefined(
|
|
1547
|
-
|
|
1548
|
-
var
|
|
1549
|
-
if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) ===
|
|
1571
|
+
var _selectedItem = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1572
|
+
if (isUndefined(_selectedItem)) return;
|
|
1573
|
+
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1574
|
+
var _itemPos = _selectedItem.position.clone();
|
|
1575
|
+
if (((_intersects$_i = intersects[_i10]) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.object) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.parent) === null || _intersects$_i === void 0 || (_intersects$_i = _intersects$_i.userData) === null || _intersects$_i === void 0 ? void 0 : _intersects$_i.itemId) === _selectedItem.userData.itemId) {
|
|
1550
1576
|
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1551
1577
|
} else {
|
|
1552
|
-
toolObj.position.set(planData.plan.position.x +
|
|
1578
|
+
toolObj.position.set(planData.plan.position.x + _itemPos.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + _selectedItem.children[0].position.y, planData.plan.position.z + _itemPos.z);
|
|
1553
1579
|
}
|
|
1554
1580
|
scene3D.add(toolObj);
|
|
1555
1581
|
_this2.setState({
|
|
@@ -1560,14 +1586,14 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1560
1586
|
}
|
|
1561
1587
|
if (bMove) {
|
|
1562
1588
|
bMove = false;
|
|
1563
|
-
var
|
|
1564
|
-
if (isUndefined(
|
|
1565
|
-
|
|
1566
|
-
var
|
|
1567
|
-
if (intersects[_i10].object.parent.parent.userData.itemId ===
|
|
1589
|
+
var _selectedItem2 = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
1590
|
+
if (isUndefined(_selectedItem2)) return;
|
|
1591
|
+
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1592
|
+
var _itemPos2 = _selectedItem2.position.clone();
|
|
1593
|
+
if (intersects[_i10].object.parent.parent.userData.itemId === _selectedItem2.userData.itemId) {
|
|
1568
1594
|
toolObj.position.set(intersects[_i10].point.x, intersects[_i10].point.y, intersects[_i10].point.z);
|
|
1569
1595
|
} else {
|
|
1570
|
-
toolObj.position.set(planData.plan.position.x +
|
|
1596
|
+
toolObj.position.set(planData.plan.position.x + _itemPos2.x, selectedElement.category === 'lighting' ? -planData.plan.position.y - selectedElement.properties.get('height').get('length') : planData.plan.position.y + _selectedItem2.children[0].position.y, planData.plan.position.z + _itemPos2.z);
|
|
1571
1597
|
}
|
|
1572
1598
|
scene3D.add(toolObj);
|
|
1573
1599
|
_this2.setState({
|
|
@@ -1601,6 +1627,13 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1601
1627
|
selectedObj = allItemRect.cur;
|
|
1602
1628
|
}
|
|
1603
1629
|
}
|
|
1630
|
+
if (!isEmpty(internalType)) {
|
|
1631
|
+
var _this2$props$onIntern, _this2$props;
|
|
1632
|
+
(_this2$props$onIntern = (_this2$props = _this2.props).onInternalEvent) === null || _this2$props$onIntern === void 0 || _this2$props$onIntern.call(_this2$props, {
|
|
1633
|
+
type: internalType,
|
|
1634
|
+
value: selectedElement.toJS()
|
|
1635
|
+
});
|
|
1636
|
+
}
|
|
1604
1637
|
};
|
|
1605
1638
|
this.mouseEnterEvent = function (event) {
|
|
1606
1639
|
if (_this2.props.state.mode !== MODE_DRAWING_ITEM_3D) return;
|
package/es/constants.js
CHANGED
|
@@ -667,4 +667,10 @@ export var EXTERNAL_EVENT_ZOOM_OUT = 'EXTERNAL_EVENT_ZOOM_OUT';
|
|
|
667
667
|
export var EXTERNAL_EVENT_UNDO = 'EXTERNAL_EVENT_UNDO';
|
|
668
668
|
export var EXTERNAL_EVENT_REDO = 'EXTERNAL_EVENT_REDO';
|
|
669
669
|
export var EXTERNAL_EVENT_SET_MOLDING = 'EXTERNAL_EVENT_SET_MOLDING';
|
|
670
|
-
export var EXTERNAL_EVENT_PROJECT_SETTING = 'EXTERNAL_EVENT_PROJECT_SETTING';
|
|
670
|
+
export var EXTERNAL_EVENT_PROJECT_SETTING = 'EXTERNAL_EVENT_PROJECT_SETTING';
|
|
671
|
+
|
|
672
|
+
// internal event type
|
|
673
|
+
export var INTERNAL_EVENT_SELECT_ELEMENT = 'INTERNAL_EVENT_SELECT_ELEMENT';
|
|
674
|
+
export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
|
|
675
|
+
export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
|
|
676
|
+
export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
|
package/es/devLiteRenderer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import React, { useState, useEffect } from 'react';
|
|
3
3
|
import ContainerDimensions from 'react-container-dimensions';
|
|
4
|
-
import mockProps from "./mocks/
|
|
4
|
+
import mockProps from "./mocks/mockProps2.json";
|
|
5
5
|
import mockDataBundle from "./mocks/dataBundle2.json";
|
|
6
6
|
import cabinetPaylod from "./mocks/cabinetPayload2.json";
|
|
7
7
|
import doorStylePaylod from "./mocks/doorStylePayload.json";
|
|
@@ -19,6 +19,9 @@ var options = {
|
|
|
19
19
|
unit: 'in',
|
|
20
20
|
enable3D: true
|
|
21
21
|
};
|
|
22
|
+
var onInternalEvent = function onInternalEvent(evt) {
|
|
23
|
+
console.log('EVENT:', evt.type, evt.value);
|
|
24
|
+
};
|
|
22
25
|
document.getElementById('app').style.display = 'block';
|
|
23
26
|
function WorkSpace(props) {
|
|
24
27
|
var _useState = useState(null),
|
|
@@ -270,6 +273,7 @@ function WorkSpace(props) {
|
|
|
270
273
|
companyUrl: "https://example.com",
|
|
271
274
|
toolbarButtons: [],
|
|
272
275
|
externalEvent: externalEvent,
|
|
276
|
+
onInternalEvent: onInternalEvent,
|
|
273
277
|
onError: function onError(payload) {
|
|
274
278
|
// payload = {
|
|
275
279
|
// type: 'render-error' | 'runtime-error' | 'unhandled-rejection',
|
package/es/utils/geometry.js
CHANGED
|
@@ -873,18 +873,18 @@ export function getAllItemSnap(allItemRects) {
|
|
|
873
873
|
var snap4 = itemrectInfo(rect.rect[3].x + ox0, rect.rect[3].y + oy0, nrot, cur && cur.size, rect.layoutpos, rect.is_corner);
|
|
874
874
|
var sizeinfo = otherItems[index].cat && otherItems[index].cat.info.sizeinfo;
|
|
875
875
|
if (sizeinfo) {
|
|
876
|
-
var
|
|
877
|
-
|
|
878
|
-
if (
|
|
879
|
-
var vx =
|
|
876
|
+
var leftBlindLength = sizeinfo.leftBlindLength,
|
|
877
|
+
rightBlindLength = sizeinfo.rightBlindLength;
|
|
878
|
+
if (leftBlindLength > 0) {
|
|
879
|
+
var vx = leftBlindLength - ch;
|
|
880
880
|
var vy = cw;
|
|
881
881
|
var dx = vx * cos + vy * sin;
|
|
882
882
|
var dy = vx * sin - vy * cos;
|
|
883
883
|
var snap6 = itemrectInfo(rect.rect[0].x + dx, rect.rect[0].y + dy, rect.rotRad + Math.PI / 2, cur && cur.size, rect.layoutpos, rect.is_corner);
|
|
884
884
|
allItemSnap.push(snap6);
|
|
885
885
|
}
|
|
886
|
-
if (
|
|
887
|
-
var _vx = ch -
|
|
886
|
+
if (rightBlindLength > 0) {
|
|
887
|
+
var _vx = ch - rightBlindLength;
|
|
888
888
|
var _vy = cw;
|
|
889
889
|
var _dx = _vx * cos + _vy * sin;
|
|
890
890
|
var _dy = _vx * sin - _vy * cos;
|