kitchen-simulator 1.0.0-clark.71 → 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/assets/img/svg/logo.svg +11 -0
- package/es/assets/img/svg/logo_with_text.svg +25 -0
- package/es/catalog/factories/wall-factory.js +8 -8
- package/es/catalog/utils/item-loader.js +114 -39
- package/es/components/content.js +10 -5
- package/es/components/viewer2d/grids/grid-streak.js +1 -1
- package/es/components/viewer2d/item.js +6 -77
- package/es/components/viewer2d/line.js +243 -315
- package/es/components/viewer2d/ruler.js +36 -16
- package/es/components/viewer2d/rulerDist.js +32 -18
- package/es/components/viewer2d/viewer2d.js +85 -32
- package/es/components/viewer3d/viewer3d.js +86 -53
- package/es/constants.js +15 -7
- package/es/devLiteRenderer.js +31 -3
- package/es/models.js +4 -4
- package/es/shared-style.js +4 -4
- package/es/utils/geometry.js +6 -6
- package/es/utils/isolate-event-handler.js +35 -18
- package/lib/LiteKitchenConfigurator.js +35 -16
- package/lib/LiteRenderer.js +5 -2
- package/lib/assets/img/svg/logo.svg +11 -0
- package/lib/assets/img/svg/logo_with_text.svg +25 -0
- package/lib/catalog/factories/wall-factory.js +8 -8
- package/lib/catalog/utils/item-loader.js +113 -39
- package/lib/components/content.js +10 -5
- package/lib/components/viewer2d/grids/grid-streak.js +1 -1
- package/lib/components/viewer2d/item.js +6 -77
- package/lib/components/viewer2d/line.js +242 -315
- package/lib/components/viewer2d/ruler.js +35 -15
- package/lib/components/viewer2d/rulerDist.js +32 -18
- package/lib/components/viewer2d/viewer2d.js +84 -31
- package/lib/components/viewer3d/viewer3d.js +85 -52
- package/lib/constants.js +19 -11
- package/lib/devLiteRenderer.js +30 -2
- package/lib/models.js +4 -4
- package/lib/shared-style.js +4 -4
- package/lib/utils/geometry.js +6 -6
- package/lib/utils/isolate-event-handler.js +34 -17
- package/package.json +1 -1
|
@@ -2,8 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { convert } from "../../utils/convert-units-lite";
|
|
4
4
|
import IDBroker from "../../utils/id-broker";
|
|
5
|
-
import { TEXT_COLOR_NEUTRAL_7 } from "../../constants";
|
|
6
|
-
import { STYLE_ROOM_SHAPE } from "./line";
|
|
5
|
+
import { LINE_THICKNESS, SHADE_LIGHT_BLUE_COLOR, TEXT_COLOR_NEUTRAL_7 } from "../../constants";
|
|
7
6
|
var STYLE = {
|
|
8
7
|
stroke: TEXT_COLOR_NEUTRAL_7,
|
|
9
8
|
strokeWidth: '1px'
|
|
@@ -16,7 +15,6 @@ var STYLE_TEXT = {
|
|
|
16
15
|
textAnchor: 'middle',
|
|
17
16
|
fontSize: '12px',
|
|
18
17
|
pointerEvents: 'none',
|
|
19
|
-
fill: '#455A64',
|
|
20
18
|
//http://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting-using-css
|
|
21
19
|
WebkitTouchCallout: 'none' /* iOS Safari */,
|
|
22
20
|
WebkitUserSelect: 'none' /* Chrome/Safari/Opera */,
|
|
@@ -30,9 +28,37 @@ export default function Ruler(_ref) {
|
|
|
30
28
|
unit = _ref.unit,
|
|
31
29
|
rulerUnit = _ref.rulerUnit,
|
|
32
30
|
transform = _ref.transform,
|
|
33
|
-
|
|
31
|
+
flag = _ref.flag;
|
|
32
|
+
var update = function update(lengthInput, unitInput, type) {
|
|
33
|
+
var newLength = toFixedFloat(lengthInput);
|
|
34
|
+
var merged = null;
|
|
35
|
+
if (type === 0) {
|
|
36
|
+
merged = value.merge({
|
|
37
|
+
_length: newLength,
|
|
38
|
+
length: convert(newLength).from(unitInput).to('cm')
|
|
39
|
+
});
|
|
40
|
+
} else {
|
|
41
|
+
merged = value.merge({
|
|
42
|
+
_length: convert(newLength).from(UNIT_INCH).to(unitInput),
|
|
43
|
+
_unit: unitInput
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// if (hook) {
|
|
47
|
+
// return hook(merged, sourceElement, internalState, state).then(val => {
|
|
48
|
+
// return onUpdate(val);
|
|
49
|
+
// });
|
|
50
|
+
// }
|
|
51
|
+
// return onUpdate(merged);
|
|
52
|
+
};
|
|
53
|
+
// let _unit = "in";
|
|
54
|
+
// let distanceText = convert(length).from(unit).to(rulerUnit);
|
|
34
55
|
var distanceText = convert(length).from(unit).to(rulerUnit).toFixed(0);
|
|
35
|
-
var
|
|
56
|
+
var thickness = convert(LINE_THICKNESS).from(unit).to(rulerUnit).toFixed(0);
|
|
57
|
+
// let _ft_len = convert(_length).from('in').to('ft');
|
|
58
|
+
// let _ft_val = Math.floor(_ft_len); _ft_len -= _ft_val;
|
|
59
|
+
// let _in_val = convert(_ft_len).from('ft').to('in').toFixed(0);
|
|
60
|
+
// let distanceText = `${_ft_val}'${_in_val}"`;
|
|
61
|
+
var textLength = (distanceText.length + layer.unit.length) * 18;
|
|
36
62
|
return /*#__PURE__*/React.createElement("g", {
|
|
37
63
|
transform: transform
|
|
38
64
|
}, /*#__PURE__*/React.createElement("g", {
|
|
@@ -53,24 +79,18 @@ export default function Ruler(_ref) {
|
|
|
53
79
|
style: STYLE_TEXT,
|
|
54
80
|
fill: TEXT_COLOR_NEUTRAL_7
|
|
55
81
|
}, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/React.createElement("line", {
|
|
56
|
-
x1:
|
|
82
|
+
x1: "0",
|
|
57
83
|
y1: "0",
|
|
58
84
|
x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
|
|
59
85
|
y2: "0",
|
|
60
|
-
style:
|
|
86
|
+
style: STYLE
|
|
61
87
|
}), /*#__PURE__*/React.createElement("line", {
|
|
62
88
|
x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
|
|
63
89
|
y1: "0",
|
|
64
|
-
x2:
|
|
90
|
+
x2: length,
|
|
65
91
|
y2: "0",
|
|
66
|
-
style:
|
|
67
|
-
})
|
|
68
|
-
points: "3, 0, 6.5, -2, 6.5, 2 ",
|
|
69
|
-
style: style
|
|
70
|
-
}), /*#__PURE__*/React.createElement("polygon", {
|
|
71
|
-
points: "".concat(length - 3, ", 0, ").concat(length - 6.5, ", 2, ").concat(length - 6.5, ", -2"),
|
|
72
|
-
style: style
|
|
73
|
-
})));
|
|
92
|
+
style: STYLE
|
|
93
|
+
}));
|
|
74
94
|
}
|
|
75
95
|
Ruler.propTypes = {
|
|
76
96
|
length: PropTypes.number.isRequired,
|
|
@@ -7,15 +7,13 @@ var ARROW_STYLE = {
|
|
|
7
7
|
strokeLinecap: 'round'
|
|
8
8
|
};
|
|
9
9
|
var STYLE = {
|
|
10
|
-
stroke: '
|
|
11
|
-
|
|
12
|
-
strokeWidth: '1.5px'
|
|
10
|
+
stroke: 'black',
|
|
11
|
+
strokeWidth: '1.1px'
|
|
13
12
|
};
|
|
14
13
|
var STYLE_TEXT = {
|
|
15
14
|
textAnchor: 'middle',
|
|
16
15
|
fontSize: '10px',
|
|
17
16
|
pointerEvents: 'none',
|
|
18
|
-
fill: '#455A64',
|
|
19
17
|
//http://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting-using-css
|
|
20
18
|
WebkitTouchCallout: 'none' /* iOS Safari */,
|
|
21
19
|
WebkitUserSelect: 'none' /* Chrome/Safari/Opera */,
|
|
@@ -77,24 +75,32 @@ export default function RulerDist(_ref) {
|
|
|
77
75
|
y: "0",
|
|
78
76
|
transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
|
|
79
77
|
style: STYLE_TEXT
|
|
80
|
-
}, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit
|
|
78
|
+
}, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit)), /*#__PURE__*/React.createElement("circle", {
|
|
79
|
+
cx: "1",
|
|
80
|
+
cy: "0",
|
|
81
|
+
fill: "white",
|
|
82
|
+
r: "1.1",
|
|
83
|
+
stroke: "black",
|
|
84
|
+
strokeWidth: "0.6"
|
|
85
|
+
}), /*#__PURE__*/React.createElement("line", {
|
|
81
86
|
x1: "2",
|
|
82
87
|
y1: "0",
|
|
83
88
|
x2: (length - textLength) / 2 < 0 ? 0 : length,
|
|
84
89
|
y2: "0",
|
|
85
90
|
style: STYLE
|
|
86
|
-
}), /*#__PURE__*/React.createElement("polygon", {
|
|
87
|
-
points: "1, 0, 4.5, -2, 4.5, 2 ",
|
|
88
|
-
style: STYLE
|
|
89
91
|
}), /*#__PURE__*/React.createElement("line", {
|
|
90
92
|
x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
|
|
91
93
|
y1: "0",
|
|
92
94
|
x2: length,
|
|
93
95
|
y2: "0",
|
|
94
96
|
style: STYLE
|
|
95
|
-
}), /*#__PURE__*/React.createElement("
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
}), /*#__PURE__*/React.createElement("circle", {
|
|
98
|
+
cx: length - 1,
|
|
99
|
+
cy: "0",
|
|
100
|
+
fill: "white",
|
|
101
|
+
r: "1.1",
|
|
102
|
+
stroke: "black",
|
|
103
|
+
strokeWidth: "0.6"
|
|
98
104
|
}));
|
|
99
105
|
} else {
|
|
100
106
|
return /*#__PURE__*/React.createElement("g", {
|
|
@@ -104,24 +110,32 @@ export default function RulerDist(_ref) {
|
|
|
104
110
|
y: "0",
|
|
105
111
|
transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
|
|
106
112
|
style: STYLE_TEXT
|
|
107
|
-
}, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit
|
|
113
|
+
}, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit)), /*#__PURE__*/React.createElement("circle", {
|
|
114
|
+
cx: "1",
|
|
115
|
+
cy: "0",
|
|
116
|
+
fill: "white",
|
|
117
|
+
r: "1.1",
|
|
118
|
+
stroke: "black",
|
|
119
|
+
strokeWidth: "0.6"
|
|
120
|
+
}), /*#__PURE__*/React.createElement("line", {
|
|
108
121
|
x1: "2",
|
|
109
122
|
y1: "0",
|
|
110
123
|
x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
|
|
111
124
|
y2: "0",
|
|
112
125
|
style: STYLE
|
|
113
|
-
}), /*#__PURE__*/React.createElement("polygon", {
|
|
114
|
-
points: "1, 0, 4.5, -2, 4.5, 2 ",
|
|
115
|
-
style: STYLE
|
|
116
126
|
}), /*#__PURE__*/React.createElement("line", {
|
|
117
127
|
x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
|
|
118
128
|
y1: "0",
|
|
119
129
|
x2: length,
|
|
120
130
|
y2: "0",
|
|
121
131
|
style: STYLE
|
|
122
|
-
}), /*#__PURE__*/React.createElement("
|
|
123
|
-
|
|
124
|
-
|
|
132
|
+
}), /*#__PURE__*/React.createElement("circle", {
|
|
133
|
+
cx: length - 1,
|
|
134
|
+
cy: "0",
|
|
135
|
+
fill: "white",
|
|
136
|
+
r: "1.1",
|
|
137
|
+
stroke: "black",
|
|
138
|
+
strokeWidth: "0.6"
|
|
125
139
|
}));
|
|
126
140
|
}
|
|
127
141
|
}
|
|
@@ -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
|
@@ -545,12 +545,6 @@ export var LABEL_COLOR = '#6E7191';
|
|
|
545
545
|
export var TEXT_COLOR = '#000000';
|
|
546
546
|
export var ACCENT_COLOR = '#AD00FF';
|
|
547
547
|
export var BROWN_COLOR = '#624100';
|
|
548
|
-
export var ROOM_SHAPE_MEASUREMENT_LINE_COLOR = '#455A64';
|
|
549
|
-
export var ROOM_ELEMENT_MEASUREMENT_LINE_COLOR = '#B0BEC5';
|
|
550
|
-
export var BASE_ITEM_MEASUREMENT_LINE_COLOR = '#0277BD';
|
|
551
|
-
export var WALL_ITEM_MEASUREMENT_LINE_COLOR = '#00897B';
|
|
552
|
-
export var DISTANCE_MEASUREMENT_LINE_COLOR = '#7B1FA2';
|
|
553
|
-
export var DASH_LINE_COLOR = '#78909C';
|
|
554
548
|
export var DEFAULT_FONT_FAMILY = 'Open Sans';
|
|
555
549
|
|
|
556
550
|
// Download summary
|
|
@@ -643,6 +637,13 @@ export var ITEM_TYPE = {
|
|
|
643
637
|
LIGHTING: 'lighting',
|
|
644
638
|
FURNISHING: 'furnishing'
|
|
645
639
|
};
|
|
640
|
+
export var PROJECT_SETTING_OPTION = {
|
|
641
|
+
UPDATE_CEIL_HEIGHT: UPDATE_CEIL_HEIGHT,
|
|
642
|
+
CHANGE_WALL_LENGTH_MEASURE: CHANGE_WALL_LENGTH_MEASURE,
|
|
643
|
+
CHANGE_BASE_CABINET_MEASURE: CHANGE_BASE_CABINET_MEASURE,
|
|
644
|
+
CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
|
|
645
|
+
CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE
|
|
646
|
+
};
|
|
646
647
|
|
|
647
648
|
// direction type
|
|
648
649
|
export var LEFT = 'Left';
|
|
@@ -665,4 +666,11 @@ export var EXTERNAL_EVENT_ZOOM_IN = 'EXTERNAL_EVENT_ZOOM_IN';
|
|
|
665
666
|
export var EXTERNAL_EVENT_ZOOM_OUT = 'EXTERNAL_EVENT_ZOOM_OUT';
|
|
666
667
|
export var EXTERNAL_EVENT_UNDO = 'EXTERNAL_EVENT_UNDO';
|
|
667
668
|
export var EXTERNAL_EVENT_REDO = 'EXTERNAL_EVENT_REDO';
|
|
668
|
-
export var EXTERNAL_EVENT_SET_MOLDING = 'EXTERNAL_EVENT_SET_MOLDING';
|
|
669
|
+
export var EXTERNAL_EVENT_SET_MOLDING = 'EXTERNAL_EVENT_SET_MOLDING';
|
|
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';
|