kitchen-simulator 2.0.30 → 2.0.40
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/actions/items-actions.js +3 -1
- package/es/actions/project-actions.js +9 -1
- package/es/class/item.js +15 -8
- package/es/class/project.js +93 -1
- package/es/components/viewer2d/viewer2d.js +15 -20
- package/es/constants.js +22 -7
- package/es/devLiteRenderer.js +11 -1
- package/es/models.js +3 -1
- package/es/reducers/items-reducer.js +1 -1
- package/es/reducers/project-reducer.js +3 -1
- package/es/utils/helper.js +66 -1
- package/es/utils/isolate-event-handler.js +13 -67
- package/lib/actions/items-actions.js +3 -1
- package/lib/actions/project-actions.js +9 -0
- package/lib/class/item.js +15 -8
- package/lib/class/project.js +92 -0
- package/lib/components/viewer2d/viewer2d.js +15 -20
- package/lib/constants.js +27 -12
- package/lib/devLiteRenderer.js +11 -1
- package/lib/models.js +3 -1
- package/lib/reducers/items-reducer.js +1 -1
- package/lib/reducers/project-reducer.js +2 -0
- package/lib/utils/helper.js +68 -1
- package/lib/utils/isolate-event-handler.js +14 -68
- package/package.json +1 -1
|
@@ -78,11 +78,13 @@ export function selectToolDrawingItem3D(sceneComponentType) {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
export function updateDrawingItem(layerID, x, y) {
|
|
81
|
+
var isInitialPos = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
81
82
|
return {
|
|
82
83
|
type: UPDATE_DRAWING_ITEM,
|
|
83
84
|
layerID: layerID,
|
|
84
85
|
x: x,
|
|
85
|
-
y: y
|
|
86
|
+
y: y,
|
|
87
|
+
isInitialPos: isInitialPos
|
|
86
88
|
};
|
|
87
89
|
}
|
|
88
90
|
export function endDrawingItem(layerID, x, y) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NEW_PROJECT, LOAD_PROJECT, SAVE_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, UNSELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, UNCREATE, PROJECT_RE_NAME, RECREATE, ROLLBACK, OPEN_PROJECT_CONFIGURATOR, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SELECT_ALL, SET_STATE_PROPERTIES, SHIFT2DOFF, SHIFT2DON, SET_IS_HELP, SET_IS_CABINET_DRAWING, ADD_ELEMENT_TO_CATALOG } from "../constants";
|
|
1
|
+
import { NEW_PROJECT, LOAD_PROJECT, SAVE_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, UNSELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, UNCREATE, PROJECT_RE_NAME, RECREATE, ROLLBACK, OPEN_PROJECT_CONFIGURATOR, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SELECT_ALL, SET_STATE_PROPERTIES, SHIFT2DOFF, SHIFT2DON, SET_IS_HELP, SET_IS_CABINET_DRAWING, ADD_ELEMENT_TO_CATALOG, CREATE_ROOM_WITH_SHAPE } from "../constants";
|
|
2
2
|
export function setIsHelp(isHelp) {
|
|
3
3
|
return {
|
|
4
4
|
type: SET_IS_HELP,
|
|
@@ -285,4 +285,12 @@ export function selectAll() {
|
|
|
285
285
|
type: SELECT_ALL,
|
|
286
286
|
value: value
|
|
287
287
|
};
|
|
288
|
+
}
|
|
289
|
+
export function createRoomWithShape(roomShapeType, width, height) {
|
|
290
|
+
return {
|
|
291
|
+
type: CREATE_ROOM_WITH_SHAPE,
|
|
292
|
+
width: width,
|
|
293
|
+
height: height,
|
|
294
|
+
roomShapeType: roomShapeType
|
|
295
|
+
};
|
|
288
296
|
}
|
package/es/class/item.js
CHANGED
|
@@ -29,6 +29,7 @@ var Item = /*#__PURE__*/function () {
|
|
|
29
29
|
key: "create",
|
|
30
30
|
value: function create(state, layerID, type, x, y, width, height, rotation, isDuplication) {
|
|
31
31
|
var molding = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : [];
|
|
32
|
+
var isInitialPos = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : false;
|
|
32
33
|
var itemID = IDBroker.acquireID();
|
|
33
34
|
var item = state.catalog.factoryElement(type, {
|
|
34
35
|
id: itemID,
|
|
@@ -45,7 +46,8 @@ var Item = /*#__PURE__*/function () {
|
|
|
45
46
|
x: x,
|
|
46
47
|
y: y,
|
|
47
48
|
rotation: rotation,
|
|
48
|
-
isDuplication: isDuplication
|
|
49
|
+
isDuplication: isDuplication,
|
|
50
|
+
isInitialPos: isInitialPos ? isInitialPos : false
|
|
49
51
|
}, null, state);
|
|
50
52
|
if (item.category === 'cabinet') {
|
|
51
53
|
var _state$doorStyle;
|
|
@@ -588,13 +590,15 @@ var Item = /*#__PURE__*/function () {
|
|
|
588
590
|
}, {
|
|
589
591
|
key: "updateDrawingItem",
|
|
590
592
|
value: function updateDrawingItem(state, layerID, x, y) {
|
|
593
|
+
var isInitialPos = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
591
594
|
if (state.hasIn(['drawingSupport', 'currentID'])) {
|
|
592
595
|
var mode = state.get('mode');
|
|
593
596
|
if ([MODE_DRAWING_ITEM_3D].includes(mode)) {
|
|
594
597
|
state = state.updateIn(['scene', 'layers', layerID, 'items', state.getIn(['drawingSupport', 'currentID'])], function (item) {
|
|
595
598
|
return item && item.merge({
|
|
596
599
|
x: x,
|
|
597
|
-
y: y
|
|
600
|
+
y: y,
|
|
601
|
+
isInitialPos: isInitialPos ? isInitialPos : false
|
|
598
602
|
});
|
|
599
603
|
});
|
|
600
604
|
state = state.merge({
|
|
@@ -608,12 +612,13 @@ var Item = /*#__PURE__*/function () {
|
|
|
608
612
|
state = state.updateIn(['scene', 'layers', layerID, 'items', state.getIn(['drawingSupport', 'currentID'])], function (item) {
|
|
609
613
|
return item && item.merge({
|
|
610
614
|
x: x,
|
|
611
|
-
y: y
|
|
615
|
+
y: y,
|
|
616
|
+
isInitialPos: isInitialPos ? isInitialPos : false
|
|
612
617
|
});
|
|
613
618
|
});
|
|
614
619
|
}
|
|
615
620
|
} else {
|
|
616
|
-
var _this$create5 = this.create(state, layerID, state.getIn(['drawingSupport', 'type']), x, y, 200, 100, 0, false),
|
|
621
|
+
var _this$create5 = this.create(state, layerID, state.getIn(['drawingSupport', 'type']), x, y, 200, 100, 0, false, [], isInitialPos),
|
|
617
622
|
stateI = _this$create5.updatedState,
|
|
618
623
|
item = _this$create5.item;
|
|
619
624
|
if (item === null) {
|
|
@@ -649,7 +654,8 @@ var Item = /*#__PURE__*/function () {
|
|
|
649
654
|
// tY = tY > 500 ? 500 : tY < 0 ? 0 : tY;
|
|
650
655
|
item = item.merge({
|
|
651
656
|
x: x,
|
|
652
|
-
y: y
|
|
657
|
+
y: y,
|
|
658
|
+
isInitialPos: false
|
|
653
659
|
});
|
|
654
660
|
state = state.merge({
|
|
655
661
|
scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
|
|
@@ -663,8 +669,8 @@ var Item = /*#__PURE__*/function () {
|
|
|
663
669
|
}, {
|
|
664
670
|
key: "endDrawingItem",
|
|
665
671
|
value: function endDrawingItem(state, layerID, x, y) {
|
|
666
|
-
|
|
667
|
-
state = this.updateDrawingItem(state, layerID, x, y
|
|
672
|
+
// let catalog = state.catalog;
|
|
673
|
+
state = this.updateDrawingItem(state, layerID, x, y).updatedState;
|
|
668
674
|
state = Layer.unselectAll(state, layerID).updatedState;
|
|
669
675
|
var popup = state.get('popup');
|
|
670
676
|
state = state.merge({
|
|
@@ -747,7 +753,8 @@ var Item = /*#__PURE__*/function () {
|
|
|
747
753
|
tY = tY > scene.height ? scene.height : tY < 0 ? 0 : tY;
|
|
748
754
|
item = item.merge({
|
|
749
755
|
x: tX,
|
|
750
|
-
y: tY
|
|
756
|
+
y: tY,
|
|
757
|
+
isInitialPos: false
|
|
751
758
|
});
|
|
752
759
|
state = state.merge({
|
|
753
760
|
scene: scene.mergeIn(['layers', layerID, 'items', itemID], item)
|
package/es/class/project.js
CHANGED
|
@@ -10,7 +10,8 @@ import { State, Catalog, Scene, safeLoadMapList, CatalogElement } from "../model
|
|
|
10
10
|
import { GeometryUtils, history } from "../utils/export";
|
|
11
11
|
import { Layer, Group, Line, Hole, Item, Area, HorizontalGuide, VerticalGuide } from "../class/export";
|
|
12
12
|
import * as viewer2DActions from "../actions/viewer2d-actions";
|
|
13
|
-
import { isEmpty } from "../utils/helper";
|
|
13
|
+
import { centering2D, isEmpty } from "../utils/helper";
|
|
14
|
+
import { convert } from "../utils/convert-units-lite";
|
|
14
15
|
var Project = /*#__PURE__*/function () {
|
|
15
16
|
function Project() {
|
|
16
17
|
_classCallCheck(this, Project);
|
|
@@ -822,6 +823,97 @@ var Project = /*#__PURE__*/function () {
|
|
|
822
823
|
updatedState: state
|
|
823
824
|
};
|
|
824
825
|
}
|
|
826
|
+
}, {
|
|
827
|
+
key: "createRoomWithShape",
|
|
828
|
+
value: function createRoomWithShape(state, roomShapeType, width, height) {
|
|
829
|
+
var catalog = state.catalog;
|
|
830
|
+
state = this.newProject(state).updatedState;
|
|
831
|
+
state = state.merge({
|
|
832
|
+
catalog: catalog
|
|
833
|
+
});
|
|
834
|
+
var _viewer2D = state.viewer2D;
|
|
835
|
+
var viewer = _viewer2D.toJS();
|
|
836
|
+
width = convert(width).from('in').to('cm');
|
|
837
|
+
height = convert(height).from('in').to('cm');
|
|
838
|
+
var layerID = state.scene.selectedLayer;
|
|
839
|
+
if (isEmpty(viewer)) return {
|
|
840
|
+
updatedState: state
|
|
841
|
+
};
|
|
842
|
+
var halfWidth = width / 2;
|
|
843
|
+
var halfHeight = height / 2;
|
|
844
|
+
var viewerWidth = viewer.SVGWidth;
|
|
845
|
+
var viewerHeight = viewer.SVGHeight;
|
|
846
|
+
var centerPos = {
|
|
847
|
+
x: viewerWidth / 2,
|
|
848
|
+
y: viewerHeight / 2
|
|
849
|
+
};
|
|
850
|
+
var vtLB = {
|
|
851
|
+
x: centerPos.x - halfWidth,
|
|
852
|
+
y: centerPos.y - halfHeight
|
|
853
|
+
};
|
|
854
|
+
var vtRB = {
|
|
855
|
+
x: centerPos.x + halfWidth,
|
|
856
|
+
y: centerPos.y - halfHeight
|
|
857
|
+
};
|
|
858
|
+
var vtRT = {
|
|
859
|
+
x: centerPos.x + halfWidth,
|
|
860
|
+
y: centerPos.y + halfHeight
|
|
861
|
+
};
|
|
862
|
+
var vtLT = {
|
|
863
|
+
x: centerPos.x - halfWidth,
|
|
864
|
+
y: centerPos.y + halfHeight
|
|
865
|
+
};
|
|
866
|
+
var vertices = [];
|
|
867
|
+
switch (roomShapeType) {
|
|
868
|
+
case 'rectangle':
|
|
869
|
+
vertices = [vtLB, vtLT, vtRT, vtRB];
|
|
870
|
+
break;
|
|
871
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_RIGHT_BOTTOM:
|
|
872
|
+
vertices = [vtLB, vtRB, vtRT];
|
|
873
|
+
break;
|
|
874
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_RIGHT_TOP:
|
|
875
|
+
vertices = [vtRB, vtRT, vtLT];
|
|
876
|
+
break;
|
|
877
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_LEFT_TOP:
|
|
878
|
+
vertices = [vtRT, vtLT, vtLB];
|
|
879
|
+
break;
|
|
880
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_LEFT_BOTTOM:
|
|
881
|
+
vertices = [vtLT, vtLB, vtRB];
|
|
882
|
+
break;
|
|
883
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_LEFT_TOP_RIGHT:
|
|
884
|
+
vertices = [vtRB, vtRT, vtLT, vtLB];
|
|
885
|
+
break;
|
|
886
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_TOP_RIGHT_BOTTOM:
|
|
887
|
+
vertices = [vtLB, vtRB, vtRT, vtLT];
|
|
888
|
+
break;
|
|
889
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_RIGHT_BOTTOM_LEFT:
|
|
890
|
+
vertices = [vtLT, vtLB, vtRB, vtRT];
|
|
891
|
+
break;
|
|
892
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_BOTTOM_LEFT_TOP:
|
|
893
|
+
vertices = [vtRT, vtLT, vtLB, vtRB];
|
|
894
|
+
break;
|
|
895
|
+
}
|
|
896
|
+
for (var i = 0; i < vertices.length - 1; i++) {
|
|
897
|
+
state = Line.create(state, layerID, 'wall', vertices[i].x, vertices[i].y, vertices[i + 1].x, vertices[i + 1].y).updatedState;
|
|
898
|
+
}
|
|
899
|
+
if (roomShapeType === constants.ROOM_SHAPE_TYPE.RECTANGLE) {
|
|
900
|
+
state = Line.create(state, layerID, 'wall', vertices[vertices.length - 1].x, vertices[vertices.length - 1].y, vertices[0].x, vertices[0].y).updatedState;
|
|
901
|
+
}
|
|
902
|
+
var layer = state.getIn(['scene', 'layers', layerID]);
|
|
903
|
+
var lines = layer.getIn(['lines']).toJS();
|
|
904
|
+
var drawingInfo = {};
|
|
905
|
+
var lineKey = Object.keys(lines);
|
|
906
|
+
for (var _i = 0; _i < lineKey.length; _i++) {
|
|
907
|
+
if (!isEmpty(lineKey)) {
|
|
908
|
+
drawingInfo.drawingLine = layer.getIn(['lines', lineKey[_i]]);
|
|
909
|
+
}
|
|
910
|
+
state = Layer.detectAndUpdateAreas(state, layerID, drawingInfo).updatedState;
|
|
911
|
+
}
|
|
912
|
+
state = centering2D(state);
|
|
913
|
+
return {
|
|
914
|
+
updatedState: state
|
|
915
|
+
};
|
|
916
|
+
}
|
|
825
917
|
}]);
|
|
826
918
|
}();
|
|
827
919
|
export { Project as default };
|
|
@@ -783,17 +783,13 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
783
783
|
return;
|
|
784
784
|
}
|
|
785
785
|
}
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
}
|
|
786
|
+
mouseDownPoint = {
|
|
787
|
+
x: x,
|
|
788
|
+
y: y
|
|
789
|
+
};
|
|
790
790
|
if (mode === constants.MODE_IDLE) {
|
|
791
791
|
var elementData = extractElementData(event.target);
|
|
792
792
|
if (!elementData) return;
|
|
793
|
-
mouseDownPoint = {
|
|
794
|
-
x: x,
|
|
795
|
-
y: y
|
|
796
|
-
};
|
|
797
793
|
if (sCount < 2) {
|
|
798
794
|
switch (elementData.prototype) {
|
|
799
795
|
case 'lines':
|
|
@@ -858,6 +854,7 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
858
854
|
var _mapCursorPosition3 = mapCursorPosition(viewerEvent),
|
|
859
855
|
x = _mapCursorPosition3.x,
|
|
860
856
|
y = _mapCursorPosition3.y;
|
|
857
|
+
var draggingDistance = Math.sqrt((x - mouseDownPoint.x) * (x - mouseDownPoint.x) + (y - mouseDownPoint.y) * (y - mouseDownPoint.y));
|
|
861
858
|
var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
|
|
862
859
|
var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
|
|
863
860
|
var elementData = extractElementData(event.target);
|
|
@@ -1233,7 +1230,10 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
1233
1230
|
holesActions.endDrawingHole(layerID, x, y);
|
|
1234
1231
|
break;
|
|
1235
1232
|
case constants.MODE_DRAWING_ITEM:
|
|
1236
|
-
|
|
1233
|
+
{
|
|
1234
|
+
var itemData = state.getIn(['scene', 'layers', layerID, elementData === null || elementData === void 0 ? void 0 : elementData.prototype, elementData === null || elementData === void 0 ? void 0 : elementData.id]);
|
|
1235
|
+
itemsActions.endDrawingItem(layerID, itemData.isInitialPos ? itemData.x : endPoint.x, itemData.isInitialPos ? itemData.y : endPoint.y);
|
|
1236
|
+
}
|
|
1237
1237
|
break;
|
|
1238
1238
|
case constants.MODE_DRAGGING_LINE:
|
|
1239
1239
|
linesActions.endDraggingLine(x, y, relatedLines, state.snapMask);
|
|
@@ -1256,23 +1256,18 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
1256
1256
|
}
|
|
1257
1257
|
if (internalType) {
|
|
1258
1258
|
var _currentObject = null;
|
|
1259
|
-
var draggingDistance = Math.sqrt((x - mouseDownPoint.x) * (x - mouseDownPoint.x) + (y - mouseDownPoint.y) * (y - mouseDownPoint.y));
|
|
1260
1259
|
if (internalType === INTERNAL_EVENT_SELECT_ELEMENT || internalType === constants.INTERNAL_EVENT_REPLACE_CABINET) {
|
|
1260
|
+
var _currentObject2;
|
|
1261
1261
|
_currentObject = state.getIn(['scene', 'layers', layerID, elementData === null || elementData === void 0 ? void 0 : elementData.prototype, elementData === null || elementData === void 0 ? void 0 : elementData.id]);
|
|
1262
|
-
|
|
1263
|
-
// internalType === INTERNAL_EVENT_SELECT_ELEMENT &&
|
|
1264
|
-
// currentObject?.prototype === 'items' &&
|
|
1265
|
-
// draggingDistance > constants.EPSILON
|
|
1266
|
-
// )
|
|
1267
|
-
// internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
1262
|
+
if (internalType === INTERNAL_EVENT_SELECT_ELEMENT && ((_currentObject2 = _currentObject) === null || _currentObject2 === void 0 ? void 0 : _currentObject2.prototype) === 'items' && draggingDistance > constants.EPSILON) internalType = INTERNAL_EVENT_DRAG_ELEMENT;
|
|
1268
1263
|
} else if (draggingDistance > constants.EPSILON) {
|
|
1269
1264
|
var elementID = state.getIn(['scene', 'layers', layerID, 'selected', elementPrototype]).first();
|
|
1270
1265
|
_currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
|
|
1271
1266
|
}
|
|
1272
1267
|
if (_currentObject) {
|
|
1273
|
-
var
|
|
1274
|
-
var payload = (
|
|
1275
|
-
if (((
|
|
1268
|
+
var _currentObject3, _currentObject4, _currentObject5;
|
|
1269
|
+
var payload = (_currentObject3 = _currentObject) === null || _currentObject3 === void 0 ? void 0 : _currentObject3.toJS();
|
|
1270
|
+
if (((_currentObject4 = _currentObject) === null || _currentObject4 === void 0 ? void 0 : _currentObject4.prototype) === 'lines') {
|
|
1276
1271
|
// caculating length of selected line//
|
|
1277
1272
|
var v_a = layer.vertices.get(_currentObject.vertices.get(0));
|
|
1278
1273
|
var v_b = layer.vertices.get(_currentObject.vertices.get(1));
|
|
@@ -1280,7 +1275,7 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
1280
1275
|
var _length3 = convert(distance).from('cm').to('in');
|
|
1281
1276
|
payload.length = _length3;
|
|
1282
1277
|
//////////////////////////////////////
|
|
1283
|
-
} else if (((
|
|
1278
|
+
} else if (((_currentObject5 = _currentObject) === null || _currentObject5 === void 0 ? void 0 : _currentObject5.prototype) === 'items') {
|
|
1284
1279
|
// check this cabinet has warning box
|
|
1285
1280
|
payload.isWarning = isWarningItem(_currentObject);
|
|
1286
1281
|
}
|
package/es/constants.js
CHANGED
|
@@ -55,6 +55,7 @@ export var REMOVE_CIRCULAR_GUIDE = 'REMOVE_CIRCULAR_GUIDE';
|
|
|
55
55
|
export var REMOVE_DRAWING_SUPPORT = 'REMOVE_DRAWING_SUPPORT';
|
|
56
56
|
export var SET_IS_HELP = 'SET_IS_HELP';
|
|
57
57
|
export var SET_IS_CABINET_DRAWING = 'SET_IS_CABINET_DRAWING';
|
|
58
|
+
export var CREATE_ROOM_WITH_SHAPE = 'CREATE_ROOM_WITH_SHAPE';
|
|
58
59
|
|
|
59
60
|
// ACTIONS viewer2D
|
|
60
61
|
export var SELECT_TOOL_ZOOM_IN = 'SELECT_TOOL_ZOOM_IN';
|
|
@@ -244,7 +245,8 @@ export var PROJECT_ACTIONS = {
|
|
|
244
245
|
SHIFT2DOFF: SHIFT2DOFF,
|
|
245
246
|
SHIFT2DON: SHIFT2DON,
|
|
246
247
|
SET_IS_HELP: SET_IS_HELP,
|
|
247
|
-
SET_IS_CABINET_DRAWING: SET_IS_CABINET_DRAWING
|
|
248
|
+
SET_IS_CABINET_DRAWING: SET_IS_CABINET_DRAWING,
|
|
249
|
+
CREATE_ROOM_WITH_SHAPE: CREATE_ROOM_WITH_SHAPE
|
|
248
250
|
};
|
|
249
251
|
export var VIEWER2D_ACTIONS = {
|
|
250
252
|
SELECT_TOOL_ZOOM_IN: SELECT_TOOL_ZOOM_IN,
|
|
@@ -654,11 +656,11 @@ export var HOLE_NAMES = {
|
|
|
654
656
|
WINDOW_CLEAR: 'Window',
|
|
655
657
|
WINDOW_CROSS: 'Cross Window',
|
|
656
658
|
WINDOW_DOUBLE_HUNG: 'Double Hung Window',
|
|
657
|
-
WINDOW_VERTICAL: '
|
|
658
|
-
DOOR_CLOSET: 'Closet
|
|
659
|
-
DOOR_EXTERIOR: 'Exterior
|
|
660
|
-
DOOR_INTERIOR: 'Interior
|
|
661
|
-
DOOR_SLIDING: 'Sliding
|
|
659
|
+
WINDOW_VERTICAL: 'window-vertical',
|
|
660
|
+
DOOR_CLOSET: 'Closet',
|
|
661
|
+
DOOR_EXTERIOR: 'Exterior',
|
|
662
|
+
DOOR_INTERIOR: 'Interior',
|
|
663
|
+
DOOR_SLIDING: 'Sliding',
|
|
662
664
|
DOOR_FRAMED: 'Framed Doorway',
|
|
663
665
|
DOOR_FRAMELESS: 'FrameLess Doorway'
|
|
664
666
|
};
|
|
@@ -735,4 +737,17 @@ export var INTERNAL_EVENT_SELECT_ELEMENT = 'INTERNAL_EVENT_SELECT_ELEMENT';
|
|
|
735
737
|
export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
|
|
736
738
|
export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
|
|
737
739
|
export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
|
|
738
|
-
export var INTERNAL_EVENT_REPLACE_CABINET = 'INTERNAL_EVENT_REPLACE_CABINET';
|
|
740
|
+
export var INTERNAL_EVENT_REPLACE_CABINET = 'INTERNAL_EVENT_REPLACE_CABINET';
|
|
741
|
+
|
|
742
|
+
// room shape type
|
|
743
|
+
export var ROOM_SHAPE_TYPE = {
|
|
744
|
+
RECTANGLE: 'rectangle',
|
|
745
|
+
TWO_WALLS_LEFT_TOP: '2wLeftTop',
|
|
746
|
+
TWO_WALLS_RIGHT_TOP: '2wRightTop',
|
|
747
|
+
TWO_WALLS_LEFT_BOTTOM: '2wLeftBottom',
|
|
748
|
+
TWO_WALLS_RIGHT_BOTTOM: '2wRightBottom',
|
|
749
|
+
THREE_WALLS_LEFT_TOP_RIGHT: '3wLeftTopRight',
|
|
750
|
+
THREE_WALLS_TOP_RIGHT_BOTTOM: '3wTopRightBottom',
|
|
751
|
+
THREE_WALLS_RIGHT_BOTTOM_LEFT: '3wRightBottomLeft',
|
|
752
|
+
THREE_WALLS_BOTTOM_LEFT_TOP: '3wBottomLeftTop'
|
|
753
|
+
};
|
package/es/devLiteRenderer.js
CHANGED
|
@@ -9,6 +9,7 @@ import mockProps from "./mocks/mockProps.json";
|
|
|
9
9
|
import cabinetPaylod from "./mocks/cabinetPayload2.json";
|
|
10
10
|
import appliancePaylod from "./mocks/appliancePayload.json";
|
|
11
11
|
import doorStylePaylod2 from "./mocks/doorStylePayload2.json";
|
|
12
|
+
import roomShapePayload from "./mocks/roomShapePayload.json";
|
|
12
13
|
import itemCDSPayload from "./mocks/itemCDSPayload.json";
|
|
13
14
|
import lightingPayload from "./mocks/lightingPayload.json";
|
|
14
15
|
import furnishingPayload from "./mocks/furnishingPayload.json";
|
|
@@ -507,7 +508,16 @@ function WorkSpace(props) {
|
|
|
507
508
|
};
|
|
508
509
|
setExternalEvent(evt);
|
|
509
510
|
}
|
|
510
|
-
}, "Replace cabinet to B12")
|
|
511
|
+
}, "Replace cabinet to B12"), /*#__PURE__*/React.createElement(Button, {
|
|
512
|
+
actionType: "danger",
|
|
513
|
+
onClick: function onClick() {
|
|
514
|
+
var evt = {
|
|
515
|
+
type: EXTERNAL_EVENT_ADD_ROOM_SHAPE,
|
|
516
|
+
payload: roomShapePayload
|
|
517
|
+
};
|
|
518
|
+
setExternalEvent(evt);
|
|
519
|
+
}
|
|
520
|
+
}, "Add room shape from width, height")), /*#__PURE__*/React.createElement(LiteRenderer, {
|
|
511
521
|
width: props.width,
|
|
512
522
|
height: props.height,
|
|
513
523
|
configData: mockProps.configData,
|
package/es/models.js
CHANGED
|
@@ -39,7 +39,7 @@ export var DefaultGrids = new Map({
|
|
|
39
39
|
type: 'horizontal-streak',
|
|
40
40
|
properties: {
|
|
41
41
|
step: 30,
|
|
42
|
-
colors: ['rgb(
|
|
42
|
+
colors: ['rgb(115, 125, 153)']
|
|
43
43
|
}
|
|
44
44
|
}),
|
|
45
45
|
v1: new Grid({
|
|
@@ -199,6 +199,8 @@ export var Item = /*#__PURE__*/function (_Record7) {
|
|
|
199
199
|
uri: ''
|
|
200
200
|
},
|
|
201
201
|
molding: [],
|
|
202
|
+
isInitialPos: false,
|
|
203
|
+
//current {x,y} is the initial position from host?
|
|
202
204
|
backsplashVisible: false,
|
|
203
205
|
applianceMaterial: {
|
|
204
206
|
roughness: 0.4,
|
|
@@ -32,7 +32,7 @@ export default function (state, action) {
|
|
|
32
32
|
case REPLACE_ITEM:
|
|
33
33
|
return Item.replaceItem(state, action.selectedPos, action.currentObject, action.selectedObject).updatedState;
|
|
34
34
|
case UPDATE_DRAWING_ITEM:
|
|
35
|
-
return Item.updateDrawingItem(state, action.layerID, action.x, action.y).updatedState;
|
|
35
|
+
return Item.updateDrawingItem(state, action.layerID, action.x, action.y, action.isInitialPos).updatedState;
|
|
36
36
|
case END_DRAWING_ITEM:
|
|
37
37
|
state = state.merge({
|
|
38
38
|
sceneHistory: history.historyPush(state.sceneHistory, state.scene)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { history } from "../utils/export";
|
|
2
|
-
import { LOAD_PROJECT, NEW_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, MODE_IDLE, UNSELECT_ALL, SELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, RECREATE, UNCREATE, PROJECT_RE_NAME, ROLLBACK, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, OPEN_PROJECT_CONFIGURATOR, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SET_STATE_PROPERTIES, SHIFT2DON, SHIFT2DOFF, MODE_DRAWING_LINE, SET_IS_HELP, SET_IS_CABINET_DRAWING, ADD_ELEMENT_TO_CATALOG } from "../constants";
|
|
2
|
+
import { LOAD_PROJECT, NEW_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, MODE_IDLE, UNSELECT_ALL, SELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, RECREATE, UNCREATE, PROJECT_RE_NAME, ROLLBACK, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, OPEN_PROJECT_CONFIGURATOR, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SET_STATE_PROPERTIES, SHIFT2DON, SHIFT2DOFF, MODE_DRAWING_LINE, SET_IS_HELP, SET_IS_CABINET_DRAWING, ADD_ELEMENT_TO_CATALOG, CREATE_ROOM_WITH_SHAPE } from "../constants";
|
|
3
3
|
import { Project } from "../class/export";
|
|
4
4
|
export default function (state, action) {
|
|
5
5
|
switch (action.type) {
|
|
@@ -125,6 +125,8 @@ export default function (state, action) {
|
|
|
125
125
|
return Project.setIsHelp(state, action.isHelp).updatedState;
|
|
126
126
|
case SET_IS_CABINET_DRAWING:
|
|
127
127
|
return Project.setIsCabinetDrawing(state, action.isCabinetDrawing).updatedState;
|
|
128
|
+
case CREATE_ROOM_WITH_SHAPE:
|
|
129
|
+
return Project.createRoomWithShape(state, action.roomShapeType, action.width, action.height).updatedState;
|
|
128
130
|
default:
|
|
129
131
|
return state;
|
|
130
132
|
}
|
package/es/utils/helper.js
CHANGED
|
@@ -3,7 +3,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
|
3
3
|
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; }
|
|
4
4
|
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; }
|
|
5
5
|
import { HDRCubeTextureLoader } from 'three/examples/jsm/loaders/HDRCubeTextureLoader.js';
|
|
6
|
-
import { ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT, ANIMATE_STEP_MAX, DECIMAL_PLACES_2, HDR_URLS, MODE_ELEVATION_VIEW } from "../constants";
|
|
6
|
+
import { ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT, ANIMATE_STEP_MAX, DECIMAL_PLACES_2, HDR_URLS, MAX_ZOOM_IN_SCALE, MODE_ELEVATION_VIEW, ZOOM_VARIABLE } from "../constants";
|
|
7
7
|
import * as Three from 'three';
|
|
8
8
|
import { returnReplaceableDeepSearchType } from "./../components/viewer2d/utils";
|
|
9
9
|
import { convert } from "./convert-units-lite";
|
|
@@ -331,4 +331,69 @@ export function isImmutable(maybeImmutable) {
|
|
|
331
331
|
}
|
|
332
332
|
export function debugUtil() {
|
|
333
333
|
return new Date();
|
|
334
|
+
}
|
|
335
|
+
export var compareSVGRect = function compareSVGRect(value) {
|
|
336
|
+
return value.e <= 10 && value.e + value.a * value.SVGWidth + 10 >= value.viewerWidth && value.f <= 80 && value.f + value.d * value.SVGHeight + 10 >= value.viewerHeight ? true : false;
|
|
337
|
+
};
|
|
338
|
+
export var updateViwer2D = function updateViwer2D(value) {
|
|
339
|
+
var viewer2DActions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
340
|
+
var _zoomValue = parseInt((value.a - 0.5) / ZOOM_VARIABLE);
|
|
341
|
+
if (_zoomValue > MAX_ZOOM_IN_SCALE) return;
|
|
342
|
+
if (_zoomValue < 0 || Number.isNaN(_zoomValue)) return;
|
|
343
|
+
|
|
344
|
+
// modify e, f to fit to SVG
|
|
345
|
+
while (!(value.e <= 10)) {
|
|
346
|
+
value.e -= 0.1;
|
|
347
|
+
}
|
|
348
|
+
while (!(value.e + value.a * value.SVGWidth + 10 >= value.viewerWidth)) {
|
|
349
|
+
value.e += 0.1;
|
|
350
|
+
}
|
|
351
|
+
while (!(value.f <= 80)) {
|
|
352
|
+
value.f -= 0.1;
|
|
353
|
+
}
|
|
354
|
+
while (!(value.f + value.a * value.SVGHeight + 10 >= value.viewerHeight)) {
|
|
355
|
+
value.f += 0.1;
|
|
356
|
+
}
|
|
357
|
+
if (viewer2DActions && compareSVGRect(value)) viewer2DActions.updateCameraView(value);
|
|
358
|
+
};
|
|
359
|
+
export function centering2D(state) {
|
|
360
|
+
var viewer2DActions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
361
|
+
// calculate the bounding box of all elements in plan
|
|
362
|
+
var layer = state.scene.getIn(['layers', state.scene.selectedLayer]);
|
|
363
|
+
var bb = {
|
|
364
|
+
minX: Infinity,
|
|
365
|
+
maxX: -Infinity,
|
|
366
|
+
minY: Infinity,
|
|
367
|
+
maxY: -Infinity
|
|
368
|
+
};
|
|
369
|
+
bb = layer.vertices.reduce(function (pre, cur) {
|
|
370
|
+
pre.minX = Math.min(pre.minX, cur.x);
|
|
371
|
+
pre.maxX = Math.max(pre.maxX, cur.x);
|
|
372
|
+
pre.minY = Math.min(pre.minY, cur.y);
|
|
373
|
+
pre.maxY = Math.max(pre.maxY, cur.y);
|
|
374
|
+
return pre;
|
|
375
|
+
}, bb);
|
|
376
|
+
var w = bb.maxX - bb.minX;
|
|
377
|
+
var h = bb.maxY - bb.minY;
|
|
378
|
+
|
|
379
|
+
// calc scale and offset to fit view
|
|
380
|
+
var viewer = state.getIn(['viewer2D']).toJS();
|
|
381
|
+
if (w != 0 && Math.abs(w) != Infinity && h != 0 && Math.abs(h) != Infinity) {
|
|
382
|
+
// elements are exist && bounding box size > 0
|
|
383
|
+
viewer.a = viewer.viewerHeight < h ? viewer.viewerHeight / h : viewer.viewerHeight / h * 3 / 5 / ZOOM_VARIABLE > MAX_ZOOM_IN_SCALE ? viewer.viewerHeight / h * MAX_ZOOM_IN_SCALE / (viewer.viewerHeight / h / ZOOM_VARIABLE) : viewer.viewerHeight / h * 3 / 5;
|
|
384
|
+
viewer.d = viewer.a;
|
|
385
|
+
viewer.e = (viewer.viewerWidth - (bb.maxX + bb.minX) * viewer.a) / 2;
|
|
386
|
+
viewer.f = (viewer.viewerHeight - (bb.maxY + bb.minY) * viewer.a) / 2;
|
|
387
|
+
} else {
|
|
388
|
+
// there is no any element && bounding box size == 0
|
|
389
|
+
viewer.e = viewer.viewerWidth / 2 - viewer.SVGWidth / 2;
|
|
390
|
+
viewer.f = viewer.viewerHeight / 2 - viewer.SVGHeight / 2;
|
|
391
|
+
viewer.a = 0.99;
|
|
392
|
+
viewer.d = 0.99;
|
|
393
|
+
}
|
|
394
|
+
state = state.merge({
|
|
395
|
+
viewer2D: viewer
|
|
396
|
+
});
|
|
397
|
+
if (viewer2DActions) updateViwer2D(viewer, viewer2DActions);
|
|
398
|
+
return state;
|
|
334
399
|
}
|