kitchen-simulator 4.4.0 → 4.4.2
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/components/viewer2d/viewer2d.js +3 -4
- package/es/components/viewer3d/scene-creator.js +34 -5
- package/es/constants.js +3 -1
- package/es/utils/geometry.js +79 -0
- package/es/utils/isolate-event-handler.js +6 -4
- package/es/utils/molding.js +3 -235
- package/es/utils/skinPanelEngine.js +14 -1
- package/lib/components/viewer2d/viewer2d.js +3 -4
- package/lib/components/viewer3d/scene-creator.js +33 -4
- package/lib/constants.js +8 -6
- package/lib/utils/geometry.js +81 -0
- package/lib/utils/isolate-event-handler.js +5 -3
- package/lib/utils/molding.js +3 -236
- package/lib/utils/skinPanelEngine.js +14 -1
- package/package.json +1 -1
|
@@ -1410,10 +1410,9 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
1410
1410
|
detectAutoPan: mode2DetectAutopan(mode),
|
|
1411
1411
|
onMouseDown: onMouseDown,
|
|
1412
1412
|
onMouseMove: onMouseMove,
|
|
1413
|
-
onMouseUp: onMouseUp
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
,
|
|
1413
|
+
onMouseUp: onMouseUp,
|
|
1414
|
+
miniaturePosition: "none",
|
|
1415
|
+
toolbarPosition: "none",
|
|
1417
1416
|
detectPinchGesture: false,
|
|
1418
1417
|
disableDoubleClickZoomWithToolAuto: true,
|
|
1419
1418
|
ref: Viewer
|
|
@@ -9,7 +9,7 @@ import { disposeObject } from "./three-memory-cleaner";
|
|
|
9
9
|
import { ANIMATE_STEP_MAX, ANIMATE_STEP_MIN, ARRAY_3D_MODES, ARROW_TEXT_BACKCOLOR, ARROW_TEXT_FONTFACE, ARROW_TEXT_FORECOLOR, BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, DECIMAL_PLACES_2, DIFFERENT_VALUES_PATH_LENGTH, DISTANCE_EPSILON, EPSILON, MIDDLE_MOLDING_LOCATION, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, TOP_MOLDING_LOCATION, UNIT_CENTIMETER, UNIT_FOOT, UNIT_INCH, UNIT_METER, WALL_CABINET_LAYOUTPOS } from "../../constants";
|
|
10
10
|
import { GeometryUtils, IDBroker, MoldingUtils } from "../../utils/export";
|
|
11
11
|
import { convert } from "../../utils/convert-units-lite";
|
|
12
|
-
import { calcDistancesFromItemToWalls, getSnappedWallLines, verticesDistance } from "../../utils/geometry";
|
|
12
|
+
import { calcDistancesFromItemToWalls, getLineSnapPointsOfItem, getSnappedWallLines, isOverlappedTwoItemsOnOneLine, pointsDistance, verticesDistance } from "../../utils/geometry";
|
|
13
13
|
import * as GeomUtils from "../../catalog/utils/geom-utils";
|
|
14
14
|
import { loadTexture } from "../../catalog/utils/item-loader";
|
|
15
15
|
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
@@ -3035,13 +3035,23 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3035
3035
|
*/
|
|
3036
3036
|
var altItems = [],
|
|
3037
3037
|
flag = false;
|
|
3038
|
+
var D0 = {},
|
|
3039
|
+
D1 = {};
|
|
3038
3040
|
wallItems.map(function (wallItem) {
|
|
3039
3041
|
var _wallItem$itemInfo, _wallItem$itemInfo2;
|
|
3040
3042
|
var altitude = (_wallItem$itemInfo = wallItem.itemInfo) === null || _wallItem$itemInfo === void 0 || (_wallItem$itemInfo = _wallItem$itemInfo.properties) === null || _wallItem$itemInfo === void 0 ? void 0 : _wallItem$itemInfo.get('altitude').get('_length');
|
|
3041
3043
|
var altitudeUnit = ((_wallItem$itemInfo2 = wallItem.itemInfo) === null || _wallItem$itemInfo2 === void 0 || (_wallItem$itemInfo2 = _wallItem$itemInfo2.properties) === null || _wallItem$itemInfo2 === void 0 ? void 0 : _wallItem$itemInfo2.get('altitude').get('_unit')) || 'cm';
|
|
3042
3044
|
if (!isEmpty(altitude) && !isEmpty(altitudeUnit)) {
|
|
3043
3045
|
altitude = convert(altitude).from(altitudeUnit).to('cm');
|
|
3046
|
+
var altPoints = getLineSnapPointsOfItem(layer, curLine, wallItem);
|
|
3047
|
+
if (altPoints.length > 1) {
|
|
3048
|
+
D0 = altPoints[0];
|
|
3049
|
+
D1 = altPoints[1];
|
|
3050
|
+
}
|
|
3044
3051
|
altItems.push({
|
|
3052
|
+
D0: D0,
|
|
3053
|
+
// D0, D1: item's snapped points with line
|
|
3054
|
+
D1: D1,
|
|
3045
3055
|
x: wallItem.pos.x,
|
|
3046
3056
|
width: wallItem.size.width,
|
|
3047
3057
|
altitude: altitude
|
|
@@ -3049,10 +3059,29 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3049
3059
|
}
|
|
3050
3060
|
});
|
|
3051
3061
|
layer.holes.map(function (hole) {
|
|
3052
|
-
var _hole$properties, _hole$properties2;
|
|
3062
|
+
var _hole$properties, _hole$properties2, _layer$lines, _layer$vertices, _line$vertices, _layer$vertices2, _line$vertices2;
|
|
3053
3063
|
var width = (_hole$properties = hole.properties) === null || _hole$properties === void 0 ? void 0 : _hole$properties.getIn(['width', 'length']);
|
|
3054
3064
|
var altitude = (_hole$properties2 = hole.properties) === null || _hole$properties2 === void 0 ? void 0 : _hole$properties2.getIn(['altitude', 'length']);
|
|
3065
|
+
var line = (_layer$lines = layer.lines) === null || _layer$lines === void 0 ? void 0 : _layer$lines.get(curLine === null || curLine === void 0 ? void 0 : curLine.id);
|
|
3066
|
+
var v0 = (_layer$vertices = layer.vertices) === null || _layer$vertices === void 0 ? void 0 : _layer$vertices.get(line === null || line === void 0 || (_line$vertices = line.vertices) === null || _line$vertices === void 0 ? void 0 : _line$vertices.get(0));
|
|
3067
|
+
var v1 = (_layer$vertices2 = layer.vertices) === null || _layer$vertices2 === void 0 ? void 0 : _layer$vertices2.get(line === null || line === void 0 || (_line$vertices2 = line.vertices) === null || _line$vertices2 === void 0 ? void 0 : _line$vertices2.get(1));
|
|
3068
|
+
if (!isEmpty(v0) || !isEmpty(v1)) {
|
|
3069
|
+
var lineLength = pointsDistance(v0.x, v0.y, v1.x, v1.y);
|
|
3070
|
+
var disD0 = lineLength * hole.offset - width / 2;
|
|
3071
|
+
var disD1 = lineLength * hole.offset + width / 2;
|
|
3072
|
+
D0 = {
|
|
3073
|
+
x: v0.x + disD0 * Math.cos(hole.rotRad),
|
|
3074
|
+
y: v0.y + disD0 * Math.sin(hole.rotRad)
|
|
3075
|
+
};
|
|
3076
|
+
D1 = {
|
|
3077
|
+
x: v0.x + disD1 * Math.cos(hole.rotRad),
|
|
3078
|
+
y: v0.y + disD1 * Math.sin(hole.rotRad)
|
|
3079
|
+
};
|
|
3080
|
+
}
|
|
3055
3081
|
if (!isEmpty(width) && !isEmpty(altitude) && hole.line === (curLine === null || curLine === void 0 ? void 0 : curLine.id)) altItems.push({
|
|
3082
|
+
D0: D0,
|
|
3083
|
+
// D0, D1: hole's two points
|
|
3084
|
+
D1: D1,
|
|
3056
3085
|
x: hole.x,
|
|
3057
3086
|
width: width,
|
|
3058
3087
|
altitude: altitude
|
|
@@ -3061,7 +3090,7 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3061
3090
|
if (altItems.length > 0) {
|
|
3062
3091
|
depth = altItems[0].altitude;
|
|
3063
3092
|
altItems.map(function (altItem) {
|
|
3064
|
-
if (
|
|
3093
|
+
if (isOverlappedTwoItemsOnOneLine(layer, curLine, item, altItem)) {
|
|
3065
3094
|
if (depth >= altItem.altitude) {
|
|
3066
3095
|
depth = altItem.altitude;
|
|
3067
3096
|
flag = true;
|
|
@@ -3171,9 +3200,9 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3171
3200
|
}
|
|
3172
3201
|
itemToSave.info.id = item.itemInfo.id;
|
|
3173
3202
|
deleteSpecifiedMeshObjects('backsplash' + item.itemInfo.id);
|
|
3174
|
-
if (Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON) planData.plan.add(backsplash);
|
|
3203
|
+
if (Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON || Math.abs(item.rotRad % (Math.PI / 2) - Math.PI / 2) < EPSILON) planData.plan.add(backsplash);
|
|
3175
3204
|
backsplash.name = name;
|
|
3176
|
-
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON;
|
|
3205
|
+
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON || Math.abs(item.rotRad % (Math.PI / 2) - Math.PI / 2) < EPSILON;
|
|
3177
3206
|
|
|
3178
3207
|
// Save to scene graph
|
|
3179
3208
|
|
package/es/constants.js
CHANGED
|
@@ -778,4 +778,6 @@ export var SKIN_SKU_BSV_48 = 'BSV48'; // 48" x 34.5" : For base cabinets back-to
|
|
|
778
778
|
export var SKIN_SKU_WSV_1242 = 'WSV1242'; // 11.25" x 42" : For 12" deep wall cabinets
|
|
779
779
|
export var SKIN_SKU_WSV_2442 = 'WSV2442'; // 23.25" x 42" : For 24" deep wall cabinets
|
|
780
780
|
export var SKIN_SKU_WSV_2460 = 'WSV2460'; // Usually used for CT3DR or CT2DR SKUs + stacked wall cabinets
|
|
781
|
-
export var SKIN_SKU_USV245325 = 'USV2453.25'; // 23.25" x 53.25" : For tall cabinets
|
|
781
|
+
export var SKIN_SKU_USV245325 = 'USV2453.25'; // 23.25" x 53.25" : For tall cabinets
|
|
782
|
+
|
|
783
|
+
export var DEFAULT_MOLDING_PIECE_LENGTH = 96; // in inch, 8 feet, standard length for molding pieces
|
package/es/utils/geometry.js
CHANGED
|
@@ -2845,4 +2845,83 @@ export function getSnappedWallLines(item, layer, catalog) {
|
|
|
2845
2845
|
}
|
|
2846
2846
|
}
|
|
2847
2847
|
return snappedWallLines;
|
|
2848
|
+
}
|
|
2849
|
+
export function getLineSnapPointsOfItem(layer, curLine, item) {
|
|
2850
|
+
var _layer$lines2, _layer$vertices4, _line$vertices3, _layer$vertices5, _line$vertices4;
|
|
2851
|
+
// V0
|
|
2852
|
+
// /|
|
|
2853
|
+
// D0 /|-----------|
|
|
2854
|
+
// /| |
|
|
2855
|
+
// /| Item | ====> get D0, D1
|
|
2856
|
+
// /| |
|
|
2857
|
+
// D1 /|-----------|
|
|
2858
|
+
// /|
|
|
2859
|
+
// get v0, v1 of line
|
|
2860
|
+
var line = (_layer$lines2 = layer.lines) === null || _layer$lines2 === void 0 ? void 0 : _layer$lines2.get(curLine === null || curLine === void 0 ? void 0 : curLine.id);
|
|
2861
|
+
var v0 = (_layer$vertices4 = layer.vertices) === null || _layer$vertices4 === void 0 ? void 0 : _layer$vertices4.get(line === null || line === void 0 || (_line$vertices3 = line.vertices) === null || _line$vertices3 === void 0 ? void 0 : _line$vertices3.get(0));
|
|
2862
|
+
var v1 = (_layer$vertices5 = layer.vertices) === null || _layer$vertices5 === void 0 ? void 0 : _layer$vertices5.get(line === null || line === void 0 || (_line$vertices4 = line.vertices) === null || _line$vertices4 === void 0 ? void 0 : _line$vertices4.get(1));
|
|
2863
|
+
var pointGroup = [];
|
|
2864
|
+
if (isEmpty(v0) || isEmpty(v1)) return pointGroup;
|
|
2865
|
+
var itemRect = item === null || item === void 0 ? void 0 : item.rect;
|
|
2866
|
+
if (!isEmpty(itemRect)) {
|
|
2867
|
+
for (var i = 0; i < itemRect.length; i++) {
|
|
2868
|
+
if (distancePointFromLineSegment(v0, v1, itemRect[i].x, itemRect[i].y) < EPSILON) {
|
|
2869
|
+
pointGroup.push(itemRect[i]);
|
|
2870
|
+
}
|
|
2871
|
+
}
|
|
2872
|
+
}
|
|
2873
|
+
return pointGroup;
|
|
2874
|
+
}
|
|
2875
|
+
export function isOverlappedTwoItemsOnOneLine(layer, curLine, srcItem, desItem) {
|
|
2876
|
+
var _layer$lines3, _layer$vertices6, _line$vertices5, _layer$vertices7, _line$vertices6, _S, _S2, _S3, _S4;
|
|
2877
|
+
if (isEmpty(layer) || isEmpty(curLine) || isEmpty(srcItem) || isEmpty(desItem) || isEmpty(desItem.D0) || isEmpty(desItem.D1)) return false;
|
|
2878
|
+
// get v0, v1 of line
|
|
2879
|
+
var line = (_layer$lines3 = layer.lines) === null || _layer$lines3 === void 0 ? void 0 : _layer$lines3.get(curLine === null || curLine === void 0 ? void 0 : curLine.id);
|
|
2880
|
+
var v0 = (_layer$vertices6 = layer.vertices) === null || _layer$vertices6 === void 0 ? void 0 : _layer$vertices6.get(line === null || line === void 0 || (_line$vertices5 = line.vertices) === null || _line$vertices5 === void 0 ? void 0 : _line$vertices5.get(0));
|
|
2881
|
+
var v1 = (_layer$vertices7 = layer.vertices) === null || _layer$vertices7 === void 0 ? void 0 : _layer$vertices7.get(line === null || line === void 0 || (_line$vertices6 = line.vertices) === null || _line$vertices6 === void 0 ? void 0 : _line$vertices6.get(1));
|
|
2882
|
+
var S0,
|
|
2883
|
+
S1,
|
|
2884
|
+
D0 = desItem === null || desItem === void 0 ? void 0 : desItem.D0,
|
|
2885
|
+
D1 = desItem === null || desItem === void 0 ? void 0 : desItem.D1;
|
|
2886
|
+
if (isEmpty(v0) || isEmpty(v1)) return false;
|
|
2887
|
+
// get distance from v0 to srcItem's S0, S1 and desItem(item or hole)'s D0, D1 are placed on line
|
|
2888
|
+
var srcPoints = getLineSnapPointsOfItem(layer, curLine, srcItem);
|
|
2889
|
+
if (srcPoints.length > 1) {
|
|
2890
|
+
S0 = srcPoints[0];
|
|
2891
|
+
S1 = srcPoints[1];
|
|
2892
|
+
}
|
|
2893
|
+
var disV0S0 = pointsDistance(v0.x, v0.y, (_S = S0) === null || _S === void 0 ? void 0 : _S.x, (_S2 = S0) === null || _S2 === void 0 ? void 0 : _S2.y);
|
|
2894
|
+
var disV0S1 = pointsDistance(v0.x, v0.y, (_S3 = S1) === null || _S3 === void 0 ? void 0 : _S3.x, (_S4 = S1) === null || _S4 === void 0 ? void 0 : _S4.y);
|
|
2895
|
+
var disV0D0 = pointsDistance(v0.x, v0.y, D0.x, D0.y);
|
|
2896
|
+
var disV0D1 = pointsDistance(v0.x, v0.y, D1.x, D1.y);
|
|
2897
|
+
// detect two items are overlapped
|
|
2898
|
+
var maxDisV0S = Math.max(disV0S0, disV0S1);
|
|
2899
|
+
var minDisV0S = Math.min(disV0S0, disV0S1);
|
|
2900
|
+
var maxDisV0D = Math.max(disV0D0, disV0D1);
|
|
2901
|
+
var minDisV0D = Math.min(disV0D0, disV0D1);
|
|
2902
|
+
if (maxDisV0S > maxDisV0D && maxDisV0D - minDisV0S > EPSILON) {
|
|
2903
|
+
// d0 s0 d1 s1 ===> maxDisV0S: v0s1, minDisV0S: v0s0, maxDisV0D: v0d1, minDisV0D: v0d0
|
|
2904
|
+
// v0 __________________________ v1
|
|
2905
|
+
// | | | |
|
|
2906
|
+
// | | | |
|
|
2907
|
+
// |__DI__|__| |
|
|
2908
|
+
// |__SI__|
|
|
2909
|
+
/////////////////////////////////////////
|
|
2910
|
+
// s0 d0 d1 s1 ===> maxDisV0S: v0s1, minDisV0S: v0s0, maxDisV0D: v0d1, minDisV0D: v0d0
|
|
2911
|
+
// v0 __________________________ v1
|
|
2912
|
+
// | | | |
|
|
2913
|
+
// | |__DI__| |
|
|
2914
|
+
// |_________SI_______|
|
|
2915
|
+
return true;
|
|
2916
|
+
} else if (minDisV0S < minDisV0D && maxDisV0S - minDisV0D > EPSILON) {
|
|
2917
|
+
// s0 d0 s1 d1 ===> maxDisV0S: v0s1, minDisV0S: v0s0, maxDisV0D: v0d1, minDisV0D: v0d0
|
|
2918
|
+
// v0 __________________________ v1
|
|
2919
|
+
// | | | |
|
|
2920
|
+
// | |__DI__|
|
|
2921
|
+
// |__SI_____|
|
|
2922
|
+
//
|
|
2923
|
+
return true;
|
|
2924
|
+
} else {
|
|
2925
|
+
return false;
|
|
2926
|
+
}
|
|
2848
2927
|
}
|
|
@@ -6,7 +6,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
6
6
|
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; }
|
|
7
7
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
8
8
|
import { Map } from 'immutable';
|
|
9
|
-
import { EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, MODE_IDLE, MODE_2D_PAN, EXTERNAL_EVENT_ADD_ITEM, ARRAY_3D_MODES, MODE_IDLE_3D, MODE_ELEVATION_VIEW, MODE_DRAWING_LINE, TOP, BOTTOM, LEFT, RIGHT, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, INTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, ATT_ITEM_POS, ATT_LINE_LENGTH, ATT_VERTEXT_ONE, ATT_VERTEXT_TWO, ATT_HOLE_OFFSET_A, ATT_HOLE_OFFSET_B, UNIT_CENTIMETER, UNIT_INCH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, EXTERNAL_EVENT_CENTERING_2D, EXTERNAL_EVENT_DUPLICATE_ELEMENT, EXTERNAL_EVENT_DELETE_ELEMENT, ELEMENT_HOLE, ELEMENT_ITEM, ELEMENT_LINE, EXTERNAL_EVENT_REPLACE_CABINET, FINISHING_TYPE, EXTERNAL_EVENT_SET_FINISHING, EXTERNAL_EVENT_ROTATE_PAN, DOORSTYLE_SCOPE_SINGLE, DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE } from "../constants";
|
|
9
|
+
import { EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, MODE_IDLE, MODE_2D_PAN, EXTERNAL_EVENT_ADD_ITEM, ARRAY_3D_MODES, MODE_IDLE_3D, MODE_ELEVATION_VIEW, MODE_DRAWING_LINE, TOP, BOTTOM, LEFT, RIGHT, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, INTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, ATT_ITEM_POS, ATT_LINE_LENGTH, ATT_VERTEXT_ONE, ATT_VERTEXT_TWO, ATT_HOLE_OFFSET_A, ATT_HOLE_OFFSET_B, UNIT_CENTIMETER, UNIT_INCH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, EXTERNAL_EVENT_CENTERING_2D, EXTERNAL_EVENT_DUPLICATE_ELEMENT, EXTERNAL_EVENT_DELETE_ELEMENT, ELEMENT_HOLE, ELEMENT_ITEM, ELEMENT_LINE, EXTERNAL_EVENT_REPLACE_CABINET, FINISHING_TYPE, EXTERNAL_EVENT_SET_FINISHING, EXTERNAL_EVENT_ROTATE_PAN, DOORSTYLE_SCOPE_SINGLE, DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE, DEFAULT_MOLDING_PIECE_LENGTH } from "../constants";
|
|
10
10
|
import { isEmpty, updateViwer2D, centering2D } from "./helper";
|
|
11
11
|
import exporter from "../catalog/utils/exporter";
|
|
12
12
|
import { render2DItem, render3DItem, render3DApplianceItem, render3DLightingItem } from "../catalog/utils/item-loader";
|
|
@@ -1212,7 +1212,7 @@ export function handleExternalEvent(_x0) {
|
|
|
1212
1212
|
function _handleExternalEvent() {
|
|
1213
1213
|
_handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee0(props) {
|
|
1214
1214
|
var _evt$payload3, _evt$payload4;
|
|
1215
|
-
var evt, state, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _evt$payload5, doorStyle, itemCDS, applyScope, _evt$payload5$itemIds, itemIds, _layerId, allItems, targetItems, idSet, selectedItemIds, _cdsItems, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, measurementUnit, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven3, sceneData, currentTexture, _t5, _t6, _t7;
|
|
1215
|
+
var evt, state, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _evt$payload5, doorStyle, itemCDS, applyScope, _evt$payload5$itemIds, itemIds, _layerId, allItems, targetItems, idSet, selectedItemIds, _cdsItems, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, measurementUnit, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$configData$mol, _props$configData, _props$configData$ski, _props$configData2, _props$onInternalEven3, sceneData, currentTexture, moldingPieceLength, skinPanelExclusionSKUs, _t5, _t6, _t7;
|
|
1216
1216
|
return _regeneratorRuntime.wrap(function (_context11) {
|
|
1217
1217
|
while (1) switch (_context11.prev = _context11.next) {
|
|
1218
1218
|
case 0:
|
|
@@ -1607,10 +1607,12 @@ function _handleExternalEvent() {
|
|
|
1607
1607
|
case 48:
|
|
1608
1608
|
sceneData = state.scene.toJS(); // get molding data for "ReviewForQuote"
|
|
1609
1609
|
currentTexture = layer.doorStyle !== null || layer.doorStyle !== undefined ? layer.doorStyle : props.state.doorStyle.toJS();
|
|
1610
|
-
|
|
1610
|
+
moldingPieceLength = (_props$configData$mol = props === null || props === void 0 || (_props$configData = props.configData) === null || _props$configData === void 0 ? void 0 : _props$configData.moldingPieceLength) !== null && _props$configData$mol !== void 0 ? _props$configData$mol : DEFAULT_MOLDING_PIECE_LENGTH;
|
|
1611
|
+
sceneData.layers[layerId].moldingData = getMoldingDataOfScene2(layer, props.catalog, currentTexture, moldingPieceLength);
|
|
1611
1612
|
|
|
1612
1613
|
// get skin panel data
|
|
1613
|
-
|
|
1614
|
+
skinPanelExclusionSKUs = (_props$configData$ski = props === null || props === void 0 || (_props$configData2 = props.configData) === null || _props$configData2 === void 0 ? void 0 : _props$configData2.skinPanelExclusionSKUs) !== null && _props$configData$ski !== void 0 ? _props$configData$ski : [];
|
|
1615
|
+
sceneData.layers[layerId].skinPanelData = computeSkinPanels(layer, skinPanelExclusionSKUs);
|
|
1614
1616
|
|
|
1615
1617
|
// send scene object from 3DTool to HostApp using internalEvent
|
|
1616
1618
|
(_props$onInternalEven3 = props.onInternalEvent) === null || _props$onInternalEven3 === void 0 || _props$onInternalEven3.call(props, {
|
package/es/utils/molding.js
CHANGED
|
@@ -939,7 +939,7 @@ export function createMonldingGroup(oldMG, layer, molding, catalog) {
|
|
|
939
939
|
newMG = getMDPoints(newMG);
|
|
940
940
|
return newMG;
|
|
941
941
|
}
|
|
942
|
-
export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
|
|
942
|
+
export function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLength) {
|
|
943
943
|
var _layer$items;
|
|
944
944
|
var moldingData = [];
|
|
945
945
|
var items = layer === null || layer === void 0 || (_layer$items = layer.items) === null || _layer$items === void 0 ? void 0 : _layer$items.toArray();
|
|
@@ -1101,10 +1101,10 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
|
|
|
1101
1101
|
if (idx < 0) moldingData.push(_objectSpread(_objectSpread({}, ml.molding), {}, {
|
|
1102
1102
|
doorStyle: ml.doorStyle,
|
|
1103
1103
|
totalLength: mlLength,
|
|
1104
|
-
count: Math.ceil(mlLength * 1.1 /
|
|
1104
|
+
count: Math.ceil(mlLength * 1.1 / moldingPieceLength)
|
|
1105
1105
|
}));else {
|
|
1106
1106
|
moldingData[idx].totalLength += mlLength;
|
|
1107
|
-
moldingData[idx].count = Math.ceil(moldingData[idx].totalLength * 1.1 /
|
|
1107
|
+
moldingData[idx].count = Math.ceil(moldingData[idx].totalLength * 1.1 / moldingPieceLength);
|
|
1108
1108
|
}
|
|
1109
1109
|
};
|
|
1110
1110
|
for (var k = 0; k < moldingLines.length; k++) {
|
|
@@ -1112,237 +1112,5 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
|
|
|
1112
1112
|
}
|
|
1113
1113
|
// console.log('moldingData: ', moldingData);
|
|
1114
1114
|
|
|
1115
|
-
return moldingData;
|
|
1116
|
-
}
|
|
1117
|
-
export function getMoldingDataOfScene(layer, catalog, doorStyle) {
|
|
1118
|
-
var moldingData = [];
|
|
1119
|
-
var items = layer.items.toArray();
|
|
1120
|
-
var moldings = [];
|
|
1121
|
-
// get all moldings info
|
|
1122
|
-
items.forEach(function (itemCat) {
|
|
1123
|
-
var _itemCat$molding;
|
|
1124
|
-
itemCat === null || itemCat === void 0 || (_itemCat$molding = itemCat.molding) === null || _itemCat$molding === void 0 || _itemCat$molding.forEach(function (molding) {
|
|
1125
|
-
if (!moldings.some(function (m) {
|
|
1126
|
-
return m.name === molding.name;
|
|
1127
|
-
})) moldings.push(molding);
|
|
1128
|
-
});
|
|
1129
|
-
});
|
|
1130
|
-
|
|
1131
|
-
// calc normal molding
|
|
1132
|
-
moldings.forEach(function (molding) {
|
|
1133
|
-
var itemGroups = [];
|
|
1134
|
-
var temp_items = [];
|
|
1135
|
-
items.forEach(function (item) {
|
|
1136
|
-
if (item.molding.some(function (mol) {
|
|
1137
|
-
return mol.itemID === molding.itemID;
|
|
1138
|
-
}) && isEnableItemForMolding(layer, item)) {
|
|
1139
|
-
temp_items.push(item);
|
|
1140
|
-
}
|
|
1141
|
-
});
|
|
1142
|
-
if (temp_items.length) {
|
|
1143
|
-
while (temp_items.length > 0) {
|
|
1144
|
-
var itemGroup = [temp_items[0]];
|
|
1145
|
-
var _loop10 = function _loop10(_idx) {
|
|
1146
|
-
if (!itemGroup.some(function (it) {
|
|
1147
|
-
return it.id === temp_items[_idx].id;
|
|
1148
|
-
}) && isItemSnappedGroup(temp_items[_idx], itemGroup)) {
|
|
1149
|
-
itemGroup.push(temp_items[_idx]);
|
|
1150
|
-
_idx = 0;
|
|
1151
|
-
}
|
|
1152
|
-
idx = _idx;
|
|
1153
|
-
};
|
|
1154
|
-
for (var idx = 0; idx < temp_items.length; idx++) {
|
|
1155
|
-
_loop10(idx);
|
|
1156
|
-
}
|
|
1157
|
-
itemGroup.forEach(function (item) {
|
|
1158
|
-
var index = temp_items.findIndex(function (it) {
|
|
1159
|
-
return it.id === item.id;
|
|
1160
|
-
});
|
|
1161
|
-
if (index > -1) {
|
|
1162
|
-
temp_items.splice(index, 1);
|
|
1163
|
-
}
|
|
1164
|
-
});
|
|
1165
|
-
itemGroups.push(itemGroup);
|
|
1166
|
-
}
|
|
1167
|
-
var molding_totalLength = 0;
|
|
1168
|
-
itemGroups.forEach(function (itemgroup) {
|
|
1169
|
-
var allLineRects = GeometryUtils.buildRectFromLines(layer, GeometryUtils.getAllLines(layer));
|
|
1170
|
-
var items = _toConsumableArray(itemgroup);
|
|
1171
|
-
var MGlines = getLinesOfItem(items[0], allLineRects, catalog);
|
|
1172
|
-
items = sortItemsByDistance(items, items[0]);
|
|
1173
|
-
var _loop11 = function _loop11() {
|
|
1174
|
-
var itemLines = getLinesOfItem(items[i], allLineRects, catalog);
|
|
1175
|
-
var temp_MGLines = [];
|
|
1176
|
-
MGlines.forEach(function (line) {
|
|
1177
|
-
var idx = itemLines.findIndex(function (itemLine) {
|
|
1178
|
-
return isLinesOverlapped(line, itemLine);
|
|
1179
|
-
});
|
|
1180
|
-
var curItemLine = itemLines[idx];
|
|
1181
|
-
if (idx > -1) {
|
|
1182
|
-
if (!(GeometryUtils.samePoints(line[0], curItemLine[0]) && GeometryUtils.samePoints(line[1], curItemLine[1]) || GeometryUtils.samePoints(line[0], curItemLine[1]) && GeometryUtils.samePoints(line[1], curItemLine[0]))) {
|
|
1183
|
-
var MGLine = mergeOverlappedLines(line, curItemLine);
|
|
1184
|
-
temp_MGLines.push(MGLine);
|
|
1185
|
-
}
|
|
1186
|
-
itemLines.splice(idx, 1);
|
|
1187
|
-
} else {
|
|
1188
|
-
temp_MGLines.push(line);
|
|
1189
|
-
}
|
|
1190
|
-
});
|
|
1191
|
-
itemLines.forEach(function (itemLine) {
|
|
1192
|
-
return temp_MGLines.push(itemLine);
|
|
1193
|
-
});
|
|
1194
|
-
MGlines = [].concat(temp_MGLines);
|
|
1195
|
-
};
|
|
1196
|
-
for (var i = 1; i < items.length; i++) {
|
|
1197
|
-
_loop11();
|
|
1198
|
-
}
|
|
1199
|
-
MGlines.forEach(function (line) {
|
|
1200
|
-
molding_totalLength += GeometryUtils.verticesDistance(line[0], line[1]);
|
|
1201
|
-
});
|
|
1202
|
-
});
|
|
1203
|
-
molding_totalLength = convert(molding_totalLength).from('cm').to('in');
|
|
1204
|
-
moldingData.push(_objectSpread(_objectSpread({}, molding), {}, {
|
|
1205
|
-
doorStyle: doorStyle,
|
|
1206
|
-
count: Math.ceil(molding_totalLength * 1.1 / 96)
|
|
1207
|
-
}));
|
|
1208
|
-
}
|
|
1209
|
-
});
|
|
1210
|
-
|
|
1211
|
-
// calc toe kick molding
|
|
1212
|
-
var tmp = [];
|
|
1213
|
-
items.forEach(function (item) {
|
|
1214
|
-
if (item.category === 'cabinet' && !item.cabinet_category.toLowerCase().includes('microwave')) {
|
|
1215
|
-
tmp.push(item);
|
|
1216
|
-
}
|
|
1217
|
-
});
|
|
1218
|
-
var tmpMoldingData = [];
|
|
1219
|
-
var toedoorStyles = [];
|
|
1220
|
-
tmp.map(function (item) {
|
|
1221
|
-
var _item$molding2;
|
|
1222
|
-
if (item.layoutpos === BASE_CABINET_LAYOUTPOS && (isEmpty(item.molding) || ((_item$molding2 = item.molding) === null || _item$molding2 === void 0 ? void 0 : _item$molding2.length) < 1 || !isEnableItemForMolding(layer, item))) {
|
|
1223
|
-
var w = item.properties.get('width').get('_length');
|
|
1224
|
-
var wUnit = item.properties.get('width').get('_unit') || 'cm';
|
|
1225
|
-
w = convert(w / 2).from(wUnit).to('cm');
|
|
1226
|
-
var h = item.properties.get('depth').get('_length');
|
|
1227
|
-
var hUnit = item.properties.get('depth').get('_unit') || 'cm';
|
|
1228
|
-
h = convert(h / 2).from(hUnit).to('cm');
|
|
1229
|
-
var outline = null;
|
|
1230
|
-
var element = catalog.elements[item.get('type')];
|
|
1231
|
-
if (!element) element = catalog.elements[returnReplaceableDeepSearchType(item.get('type'))];
|
|
1232
|
-
outline = element.info.outline;
|
|
1233
|
-
var len = 0;
|
|
1234
|
-
if (outline) {
|
|
1235
|
-
// Extract Points from `outline`
|
|
1236
|
-
var outlinePaths = outline.paths;
|
|
1237
|
-
var outlineWidth = outline.svgWidth;
|
|
1238
|
-
var outlineHeight = outline.svgHeight;
|
|
1239
|
-
var outlinePoints = []; // Hold Points Of SVG
|
|
1240
|
-
var _iterator5 = _createForOfIteratorHelper(outlinePaths),
|
|
1241
|
-
_step5;
|
|
1242
|
-
try {
|
|
1243
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
1244
|
-
var path = _step5.value;
|
|
1245
|
-
var _iterator6 = _createForOfIteratorHelper(path.subPaths),
|
|
1246
|
-
_step6;
|
|
1247
|
-
try {
|
|
1248
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
1249
|
-
var subPath = _step6.value;
|
|
1250
|
-
outlinePoints = outlinePoints.concat(subPath.getPoints());
|
|
1251
|
-
}
|
|
1252
|
-
} catch (err) {
|
|
1253
|
-
_iterator6.e(err);
|
|
1254
|
-
} finally {
|
|
1255
|
-
_iterator6.f();
|
|
1256
|
-
}
|
|
1257
|
-
}
|
|
1258
|
-
} catch (err) {
|
|
1259
|
-
_iterator5.e(err);
|
|
1260
|
-
} finally {
|
|
1261
|
-
_iterator5.f();
|
|
1262
|
-
}
|
|
1263
|
-
var maxX = outlinePoints[0].x,
|
|
1264
|
-
minX = outlinePoints[0].x;
|
|
1265
|
-
var maxY = outlinePoints[0].y,
|
|
1266
|
-
minY = outlinePoints[0].y;
|
|
1267
|
-
outlinePoints.forEach(function (point) {
|
|
1268
|
-
if (point.x > maxX) {
|
|
1269
|
-
maxX = point.x;
|
|
1270
|
-
}
|
|
1271
|
-
if (point.x < minX) {
|
|
1272
|
-
minX = point.x;
|
|
1273
|
-
}
|
|
1274
|
-
if (point.y > maxY) {
|
|
1275
|
-
maxY = point.y;
|
|
1276
|
-
}
|
|
1277
|
-
if (point.y < minY) {
|
|
1278
|
-
minY = point.y;
|
|
1279
|
-
}
|
|
1280
|
-
});
|
|
1281
|
-
outlinePoints.forEach(function (point) {
|
|
1282
|
-
if (GeometryUtils.isPointInRect([{
|
|
1283
|
-
x: minX,
|
|
1284
|
-
y: minY
|
|
1285
|
-
}, {
|
|
1286
|
-
x: minX,
|
|
1287
|
-
y: maxY
|
|
1288
|
-
}, {
|
|
1289
|
-
x: maxX,
|
|
1290
|
-
y: maxY
|
|
1291
|
-
}, {
|
|
1292
|
-
x: maxX,
|
|
1293
|
-
y: minY
|
|
1294
|
-
}], point)) {
|
|
1295
|
-
if (point.x > 10) len += (point.x / outlineWidth - 0.5) * w * 2 + h * 2 - (point.y / outlineHeight - 0.5) * h * 2;
|
|
1296
|
-
}
|
|
1297
|
-
});
|
|
1298
|
-
len = convert(len).from('cm').to('in');
|
|
1299
|
-
} else {
|
|
1300
|
-
w = convert(w * 2).from('cm').to('in');
|
|
1301
|
-
len += w;
|
|
1302
|
-
}
|
|
1303
|
-
var doorIndex = toedoorStyles.findIndex(function (a) {
|
|
1304
|
-
var iDS = item === null || item === void 0 ? void 0 : item.doorStyle;
|
|
1305
|
-
if (!iDS) return false;
|
|
1306
|
-
if (!iDS.hasOwnProperty('id')) {
|
|
1307
|
-
iDS = iDS.toJS();
|
|
1308
|
-
}
|
|
1309
|
-
return a.doorStyle.id === iDS.id && isEqualInstallationType(a.doorStyle, iDS);
|
|
1310
|
-
});
|
|
1311
|
-
if (doorIndex > -1) {
|
|
1312
|
-
toedoorStyles[doorIndex].totalLength += len;
|
|
1313
|
-
} else {
|
|
1314
|
-
toedoorStyles.push({
|
|
1315
|
-
doorStyle: item.doorStyle.hasOwnProperty('id') ? item.doorStyle : item.doorStyle && item.doorStyle.toJS(),
|
|
1316
|
-
totalLength: len
|
|
1317
|
-
});
|
|
1318
|
-
}
|
|
1319
|
-
}
|
|
1320
|
-
});
|
|
1321
|
-
toedoorStyles.forEach(function (doorStyle) {
|
|
1322
|
-
var skuName = getToeKickSKU(doorStyle.doorStyle, catalog);
|
|
1323
|
-
var thumbnail = skuName ? skuName : '';
|
|
1324
|
-
// moldings.forEach(molding => {
|
|
1325
|
-
// if (
|
|
1326
|
-
// molding.name ===
|
|
1327
|
-
// getToeKickSKU(
|
|
1328
|
-
// doorStyle.doorStyle,
|
|
1329
|
-
// catalog,
|
|
1330
|
-
// true
|
|
1331
|
-
// )
|
|
1332
|
-
// )
|
|
1333
|
-
// thumbnail = molding.thumbnail;
|
|
1334
|
-
// });
|
|
1335
|
-
|
|
1336
|
-
doorStyle.totalLength && tmpMoldingData.push({
|
|
1337
|
-
name: TOE_KICK_MOLDING,
|
|
1338
|
-
sku: getToeKickSKU(doorStyle.doorStyle, catalog),
|
|
1339
|
-
thumbnail: thumbnail,
|
|
1340
|
-
category: 'molding',
|
|
1341
|
-
type: 'cabinet',
|
|
1342
|
-
doorStyle: doorStyle.doorStyle,
|
|
1343
|
-
count: Math.ceil(doorStyle.totalLength * 1.1 / 96)
|
|
1344
|
-
});
|
|
1345
|
-
});
|
|
1346
|
-
if (tmpMoldingData.length > 0) moldingData = [].concat(_toConsumableArray(moldingData), tmpMoldingData);
|
|
1347
1115
|
return moldingData;
|
|
1348
1116
|
}
|
|
@@ -303,14 +303,27 @@ function buildSkinPanelData(faces) {
|
|
|
303
303
|
}
|
|
304
304
|
return result;
|
|
305
305
|
}
|
|
306
|
+
function shouldExcludeSkinPanel(itemJS, exclusionSet) {
|
|
307
|
+
var _itemJS$doorStyle;
|
|
308
|
+
var cabinetSku = itemJS === null || itemJS === void 0 ? void 0 : itemJS.sku_number;
|
|
309
|
+
var doorColorSku = itemJS === null || itemJS === void 0 || (_itemJS$doorStyle = itemJS.doorStyle) === null || _itemJS$doorStyle === void 0 ? void 0 : _itemJS$doorStyle.sku;
|
|
310
|
+
if (!cabinetSku || !doorColorSku) return false;
|
|
311
|
+
return exclusionSet.has("".concat(cabinetSku, "-").concat(doorColorSku));
|
|
312
|
+
}
|
|
306
313
|
export function computeSkinPanels(layer) {
|
|
314
|
+
var skinPanelExclusionSKUs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
315
|
+
var exclusionSet = new Set(skinPanelExclusionSKUs);
|
|
316
|
+
|
|
307
317
|
// Get candidate skin panel items and other items
|
|
308
318
|
var _collectLayerItems = collectLayerItems(layer),
|
|
309
319
|
skinPanelItems = _collectLayerItems.skinPanelItems,
|
|
310
320
|
otherItems = _collectLayerItems.otherItems;
|
|
321
|
+
var filteredSkinPanelItems = skinPanelItems.filter(function (item) {
|
|
322
|
+
return !shouldExcludeSkinPanel(item.toJS(), exclusionSet);
|
|
323
|
+
});
|
|
311
324
|
|
|
312
325
|
// Get all skin face list of [skinPanelItems] & [otherItems]
|
|
313
|
-
var skinFaces = collectFaces(
|
|
326
|
+
var skinFaces = collectFaces(filteredSkinPanelItems, layer);
|
|
314
327
|
var otherFaces = collectFaces(otherItems, layer);
|
|
315
328
|
skinFaces = filterFacesBlockedByFaces(skinFaces, skinFaces);
|
|
316
329
|
skinFaces = filterFacesBlockedByFaces(skinFaces, otherFaces);
|
|
@@ -1419,10 +1419,9 @@ function Viewer2D(_ref, _ref2) {
|
|
|
1419
1419
|
detectAutoPan: mode2DetectAutopan(mode),
|
|
1420
1420
|
onMouseDown: onMouseDown,
|
|
1421
1421
|
onMouseMove: onMouseMove,
|
|
1422
|
-
onMouseUp: onMouseUp
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
,
|
|
1422
|
+
onMouseUp: onMouseUp,
|
|
1423
|
+
miniaturePosition: "none",
|
|
1424
|
+
toolbarPosition: "none",
|
|
1426
1425
|
detectPinchGesture: false,
|
|
1427
1426
|
disableDoubleClickZoomWithToolAuto: true,
|
|
1428
1427
|
ref: Viewer
|
|
@@ -3070,13 +3070,23 @@ function createBacksplash(item, layer, planData, scene) {
|
|
|
3070
3070
|
*/
|
|
3071
3071
|
var altItems = [],
|
|
3072
3072
|
flag = false;
|
|
3073
|
+
var D0 = {},
|
|
3074
|
+
D1 = {};
|
|
3073
3075
|
wallItems.map(function (wallItem) {
|
|
3074
3076
|
var _wallItem$itemInfo, _wallItem$itemInfo2;
|
|
3075
3077
|
var altitude = (_wallItem$itemInfo = wallItem.itemInfo) === null || _wallItem$itemInfo === void 0 || (_wallItem$itemInfo = _wallItem$itemInfo.properties) === null || _wallItem$itemInfo === void 0 ? void 0 : _wallItem$itemInfo.get('altitude').get('_length');
|
|
3076
3078
|
var altitudeUnit = ((_wallItem$itemInfo2 = wallItem.itemInfo) === null || _wallItem$itemInfo2 === void 0 || (_wallItem$itemInfo2 = _wallItem$itemInfo2.properties) === null || _wallItem$itemInfo2 === void 0 ? void 0 : _wallItem$itemInfo2.get('altitude').get('_unit')) || 'cm';
|
|
3077
3079
|
if (!(0, _helper.isEmpty)(altitude) && !(0, _helper.isEmpty)(altitudeUnit)) {
|
|
3078
3080
|
altitude = (0, _convertUnitsLite.convert)(altitude).from(altitudeUnit).to('cm');
|
|
3081
|
+
var altPoints = (0, _geometry2.getLineSnapPointsOfItem)(layer, curLine, wallItem);
|
|
3082
|
+
if (altPoints.length > 1) {
|
|
3083
|
+
D0 = altPoints[0];
|
|
3084
|
+
D1 = altPoints[1];
|
|
3085
|
+
}
|
|
3079
3086
|
altItems.push({
|
|
3087
|
+
D0: D0,
|
|
3088
|
+
// D0, D1: item's snapped points with line
|
|
3089
|
+
D1: D1,
|
|
3080
3090
|
x: wallItem.pos.x,
|
|
3081
3091
|
width: wallItem.size.width,
|
|
3082
3092
|
altitude: altitude
|
|
@@ -3084,10 +3094,29 @@ function createBacksplash(item, layer, planData, scene) {
|
|
|
3084
3094
|
}
|
|
3085
3095
|
});
|
|
3086
3096
|
layer.holes.map(function (hole) {
|
|
3087
|
-
var _hole$properties, _hole$properties2;
|
|
3097
|
+
var _hole$properties, _hole$properties2, _layer$lines, _layer$vertices, _line$vertices, _layer$vertices2, _line$vertices2;
|
|
3088
3098
|
var width = (_hole$properties = hole.properties) === null || _hole$properties === void 0 ? void 0 : _hole$properties.getIn(['width', 'length']);
|
|
3089
3099
|
var altitude = (_hole$properties2 = hole.properties) === null || _hole$properties2 === void 0 ? void 0 : _hole$properties2.getIn(['altitude', 'length']);
|
|
3100
|
+
var line = (_layer$lines = layer.lines) === null || _layer$lines === void 0 ? void 0 : _layer$lines.get(curLine === null || curLine === void 0 ? void 0 : curLine.id);
|
|
3101
|
+
var v0 = (_layer$vertices = layer.vertices) === null || _layer$vertices === void 0 ? void 0 : _layer$vertices.get(line === null || line === void 0 || (_line$vertices = line.vertices) === null || _line$vertices === void 0 ? void 0 : _line$vertices.get(0));
|
|
3102
|
+
var v1 = (_layer$vertices2 = layer.vertices) === null || _layer$vertices2 === void 0 ? void 0 : _layer$vertices2.get(line === null || line === void 0 || (_line$vertices2 = line.vertices) === null || _line$vertices2 === void 0 ? void 0 : _line$vertices2.get(1));
|
|
3103
|
+
if (!(0, _helper.isEmpty)(v0) || !(0, _helper.isEmpty)(v1)) {
|
|
3104
|
+
var lineLength = (0, _geometry2.pointsDistance)(v0.x, v0.y, v1.x, v1.y);
|
|
3105
|
+
var disD0 = lineLength * hole.offset - width / 2;
|
|
3106
|
+
var disD1 = lineLength * hole.offset + width / 2;
|
|
3107
|
+
D0 = {
|
|
3108
|
+
x: v0.x + disD0 * Math.cos(hole.rotRad),
|
|
3109
|
+
y: v0.y + disD0 * Math.sin(hole.rotRad)
|
|
3110
|
+
};
|
|
3111
|
+
D1 = {
|
|
3112
|
+
x: v0.x + disD1 * Math.cos(hole.rotRad),
|
|
3113
|
+
y: v0.y + disD1 * Math.sin(hole.rotRad)
|
|
3114
|
+
};
|
|
3115
|
+
}
|
|
3090
3116
|
if (!(0, _helper.isEmpty)(width) && !(0, _helper.isEmpty)(altitude) && hole.line === (curLine === null || curLine === void 0 ? void 0 : curLine.id)) altItems.push({
|
|
3117
|
+
D0: D0,
|
|
3118
|
+
// D0, D1: hole's two points
|
|
3119
|
+
D1: D1,
|
|
3091
3120
|
x: hole.x,
|
|
3092
3121
|
width: width,
|
|
3093
3122
|
altitude: altitude
|
|
@@ -3096,7 +3125,7 @@ function createBacksplash(item, layer, planData, scene) {
|
|
|
3096
3125
|
if (altItems.length > 0) {
|
|
3097
3126
|
depth = altItems[0].altitude;
|
|
3098
3127
|
altItems.map(function (altItem) {
|
|
3099
|
-
if (
|
|
3128
|
+
if ((0, _geometry2.isOverlappedTwoItemsOnOneLine)(layer, curLine, item, altItem)) {
|
|
3100
3129
|
if (depth >= altItem.altitude) {
|
|
3101
3130
|
depth = altItem.altitude;
|
|
3102
3131
|
flag = true;
|
|
@@ -3206,9 +3235,9 @@ function createBacksplash(item, layer, planData, scene) {
|
|
|
3206
3235
|
}
|
|
3207
3236
|
itemToSave.info.id = item.itemInfo.id;
|
|
3208
3237
|
deleteSpecifiedMeshObjects('backsplash' + item.itemInfo.id);
|
|
3209
|
-
if (Math.abs(item.rotRad % (Math.PI / 2)) < _constants.EPSILON) planData.plan.add(backsplash);
|
|
3238
|
+
if (Math.abs(item.rotRad % (Math.PI / 2)) < _constants.EPSILON || Math.abs(item.rotRad % (Math.PI / 2) - Math.PI / 2) < _constants.EPSILON) planData.plan.add(backsplash);
|
|
3210
3239
|
backsplash.name = name;
|
|
3211
|
-
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && Math.abs(item.rotRad % (Math.PI / 2)) < _constants.EPSILON;
|
|
3240
|
+
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && Math.abs(item.rotRad % (Math.PI / 2)) < _constants.EPSILON || Math.abs(item.rotRad % (Math.PI / 2) - Math.PI / 2) < _constants.EPSILON;
|
|
3212
3241
|
|
|
3213
3242
|
// Save to scene graph
|
|
3214
3243
|
|
package/lib/constants.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.ZOOM_VARIABLE = exports.WARRANTY_VIEW = exports.WARRANTY_SUPPORT = exports.WARNING_MESSAGE = exports.WALL_ITEM_MEASUREMENT_LINE_COLOR = exports.WALL_CABINET_LAYOUTPOS = exports.VIEWER3D_ACTIONS = exports.VIEWER2D_ACTIONS = exports.VERTEX_ACTIONS = exports.VANITY_CABINET_LAYOUTPOS = exports.VALIDATE_ITEM_POSTIONS = exports.USER_ACTIONS = exports.UPDATE_ZOOM_SCALE = exports.UPDATE_ROTATING_ITEM_CHANGED = exports.UPDATE_ROTATING_ITEM = exports.UPDATE_ROTATING = exports.UPDATE_POPUP_OPEN = exports.UPDATE_MOVING_STATE = exports.UPDATE_MOUSE_COORDS = exports.UPDATE_MOLDING = exports.UPDATE_ITEM_POSITION = exports.UPDATE_DRAWING_LINE = exports.UPDATE_DRAWING_ITEM = exports.UPDATE_DRAWING_HOLE_3D = exports.UPDATE_DRAWING_HOLE = exports.UPDATE_DRAGGING_VERTEX = exports.UPDATE_DRAGGING_LINE = exports.UPDATE_DRAGGING_ITEM_CHANGED = exports.UPDATE_DRAGGING_ITEM_3DY = exports.UPDATE_DRAGGING_ITEM_3DX = exports.UPDATE_DRAGGING_ITEM = exports.UPDATE_DRAGGING_HOLE_RULER_CHANGED = exports.UPDATE_DRAGGING_HOLE_CHANGED = exports.UPDATE_DRAGGING_HOLE_3D = exports.UPDATE_DRAGGING_HOLE = exports.UPDATE_CEIL_HEIGHT_UNIT = exports.UPDATE_CEIL_HEIGHT = void 0;
|
|
6
|
+
exports.END_DRAWING_ITEM = exports.END_DRAWING_HOLE_3D = exports.END_DRAWING_HOLE = exports.END_DRAGGING_VERTEX = exports.END_DRAGGING_LINE = exports.END_DRAGGING_ITEM_3D = exports.END_DRAGGING_ITEM = exports.END_DRAGGING_HOLE_3D = exports.END_DRAGGING_HOLE = exports.END_CREATING_HOLE = exports.END_CREATING_CABINET = exports.ELEVATION_VIEW_TITLE = exports.ELEVATION_VIEW_RIGHT = exports.ELEVATION_VIEW_LEFT = exports.ELEVATION_VIEW_KEYWORD = exports.ELEVATION_VIEW_FRONT = exports.ELEVATION_VIEW_BACK = exports.ELEVATION_VIEW = exports.ELEMENT_VERTEX = exports.ELEMENT_LINE = exports.ELEMENT_ITEM = exports.ELEMENT_HOLE = exports.ELEMENT_AREA = exports.EDIT_WIDTH = exports.EDIT = exports.DUPLICATE_SELECTED = exports.DOORSTYLE_SCOPE_SINGLE = exports.DOORSTYLE_SCOPE_MULTIPLE = exports.DOORSTYLE_SCOPE_ALL = exports.DISTANCE_MEASUREMENT_LINE_COLOR = exports.DISTANCE_EPSILON = exports.DIFFERENT_VALUES_PATH_LENGTH = exports.DELTA = exports.DEFAULT_MOLDING_PIECE_LENGTH = exports.DEFAULT_FONT_FAMILY = exports.DECIMAL_PLACES_3 = exports.DECIMAL_PLACES_2 = exports.DASH_LINE_COLOR = exports.CREATE_ROOM_WITH_SHAPE = exports.COPY_PROPERTIES = exports.CLIENTS_NAME = exports.CHANGE_WINDOW_DOOR_MEASURE = exports.CHANGE_WALL_LENGTH_MEASURE = exports.CHANGE_WALL_CABINET_MEASURE = exports.CHANGE_MEASUREMENT_UNIT = exports.CHANGE_CATALOG_PAGE = exports.CHANGE_BASE_CABINET_MEASURE = exports.CEIL_UNITS_LENGTH = exports.BROWN_COLOR = exports.BOTTOM_MOLDING_LOCATION = exports.BOTTOM = exports.BG_COLOR_OVERLAY = exports.BG_COLOR_HOVER = exports.BG_COLOR_1 = exports.BG_COLOR_0 = exports.BEGIN_UPLOADING_IMAGE = exports.BEGIN_ROTATING_ITEM_3D = exports.BEGIN_ROTATING_ITEM = exports.BEGIN_FITTING_IMAGE = exports.BEGIN_DRAWING_LINE = exports.BEGIN_DRAGGING_VERTEX = exports.BEGIN_DRAGGING_LINE = exports.BEGIN_DRAGGING_ITEM_3D = exports.BEGIN_DRAGGING_ITEM = exports.BEGIN_DRAGGING_HOLE_3D = exports.BEGIN_DRAGGING_HOLE = exports.BASE_ITEM_MEASUREMENT_LINE_COLOR = exports.BASE_CABINET_LAYOUTPOS = exports.BACK_DIST_ANG = exports.ATT_VERTEXT_TWO = exports.ATT_VERTEXT_ONE = exports.ATT_LINE_LENGTH = exports.ATT_ITEM_ROTATION = exports.ATT_ITEM_POS = exports.ATT_HOLE_OFFSET_B = exports.ATT_HOLE_OFFSET_A = exports.ARROW_TEXT_FORECOLOR = exports.ARROW_TEXT_FONTFACE = exports.ARROW_TEXT_BACKCOLOR = exports.ARROW_COLOR = exports.ARRAY_ELEVATION_VIEW_MODES = exports.ARRAY_3D_MODES = exports.AREA_ACTIONS = exports.API_SERVER_URL = exports.ANIMATE_STEP_MIN = exports.ANIMATE_STEP_MAX = exports.ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT = exports.ANIMATE_OBJECT = exports.ALTERATE_STATE = exports.ADD_VERTICAL_GUIDE = exports.ADD_TO_GROUP = exports.ADD_LAYER = exports.ADD_HORIZONTAL_GUIDE = exports.ADD_GROUP_FROM_SELECTED = exports.ADD_GROUP = exports.ADD_ELEMENT_TO_CATALOG = exports.ADD_CIRCULAR_GUIDE = exports.ADD_CABINETS = exports.ADD_APPLIANCES = exports.ACCENT_COLOR = void 0;
|
|
7
|
+
exports.MODE_DRAGGING_LINE = exports.MODE_DRAGGING_ITEM_3D = exports.MODE_DRAGGING_ITEM = exports.MODE_DRAGGING_HOLE_3D = exports.MODE_DRAGGING_HOLE = exports.MODE_CONFIGURING_PROJECT = exports.MODE_BACK_ELEVATION_VIEW = exports.MODE_3D_VIEW = exports.MODE_3D_FIRST_PERSON = exports.MODE_2D_ZOOM_OUT = exports.MODE_2D_ZOOM_IN = exports.MODE_2D_PAN = exports.MODE = exports.MIN_ANGLE_DISALLOW_DRAW_WALL = exports.MIDDLE_MOLDING_LOCATION = exports.MEPSILON = exports.MAX_ZOOM_IN_SCALE = exports.MAX_ANGLE_SCALE = exports.MAKE_FLOOR_PLAN = exports.LOGOUT = exports.LOGIN_SUCCESS = exports.LOGIN_ERROR = exports.LOCAL_STORAGE_TOKEN_VALUE = exports.LOCAL_STORAGE_TOKEN_NAME = exports.LOCAL_STORAGE_ORIGINAL_TOKEN = exports.LOCAL_STORAGE_CUSTOMER_INFO = exports.LOCAL_STORAGE_CART_ACTION = exports.LOAD_PROJECT = exports.LIST_QUANTITIES = exports.LIST_PARTS = exports.LINE_THICKNESS = exports.LINE_ACTIONS = exports.LEFT_DIST_ANG = exports.LEFT = exports.LABEL_COLOR = exports.KITCHEN_KONFIGURATOR = exports.KEYBOARD_BUTTON_CODE = exports.ITEM_TYPE = exports.ITEM_MOVE_UP = exports.ITEMS_ACTIONS = exports.INVERT = exports.INTERNAL_EVENT_UNSELECT_ALL = exports.INTERNAL_EVENT_TOGGLE_TO_ELEVATION = exports.INTERNAL_EVENT_SYNC_SCENE = exports.INTERNAL_EVENT_START_DRAW_WALL = exports.INTERNAL_EVENT_SELECT_ELEMENT = exports.INTERNAL_EVENT_ROTATE_ELEMENT = exports.INTERNAL_EVENT_REPLACE_CABINET = exports.INTERNAL_EVENT_ITEMS_CATALOG = exports.INTERNAL_EVENT_DRAW_ELEMENT = exports.INTERNAL_EVENT_DRAG_ELEMENT = exports.INSTALLATION_TYPE_SKU_SUFFIX = exports.INSTALLATION_TYPE_NAME = exports.INSTALLATION_SUFFIX_TYPE = exports.INIT_CATALOG = exports.HOLE_NAMES = exports.HOLE_ACTIONS = exports.HDR_URLS = exports.HAS_LOADINGBAR = exports.GROUP_TRANSLATE = exports.GROUP_ROTATE = exports.GROUP_ACTIONS = exports.GO_BACK_TO_CATALOG_PAGE = exports.FRONT_DIST_ANG = exports.FINISHING_TYPE = exports.FINISHING_TOUCH = exports.EXTERNAL_EVENT_ZOOM_OUT = exports.EXTERNAL_EVENT_ZOOM_IN = exports.EXTERNAL_EVENT_UPDATE_PROPERTY = exports.EXTERNAL_EVENT_UPDATE_ATTRIBUTE = exports.EXTERNAL_EVENT_UNDO = exports.EXTERNAL_EVENT_TOGGLE_TO_ELEVATION = exports.EXTERNAL_EVENT_TOGGLE_TO_3D = exports.EXTERNAL_EVENT_TOGGLE_TO_2D = exports.EXTERNAL_EVENT_SYNC_SCENE = exports.EXTERNAL_EVENT_SET_MOLDING = exports.EXTERNAL_EVENT_SET_FINISHING = exports.EXTERNAL_EVENT_ROTATE_PAN = exports.EXTERNAL_EVENT_REPLACE_CABINET = exports.EXTERNAL_EVENT_REDO = exports.EXTERNAL_EVENT_PROJECT_SETTING = exports.EXTERNAL_EVENT_NEW_PROJECT = exports.EXTERNAL_EVENT_MOVE_PAN = exports.EXTERNAL_EVENT_LOAD_PROJECT = exports.EXTERNAL_EVENT_DUPLICATE_ELEMENT = exports.EXTERNAL_EVENT_DELETE_ELEMENT = exports.EXTERNAL_EVENT_CHANGE_DOORSTYLE = exports.EXTERNAL_EVENT_CENTERING_2D = exports.EXTERNAL_EVENT_ADD_WALL = exports.EXTERNAL_EVENT_ADD_ROOM_SHAPE = exports.EXTERNAL_EVENT_ADD_ITEM = exports.EXTERNAL_EVENT_ADD_HOLE = exports.ERROR_DATABASE = exports.EPSILON = exports.END_UPLOADING_IMAGE = exports.END_ROTATING_ITEM_3D = exports.END_ROTATING_ITEM = exports.END_LOADING = exports.END_FITTING_IMAGE = exports.END_DRAWING_LINE = void 0;
|
|
8
|
+
exports.SET_BACKSPLASH = exports.SET_APPLIANCE_MATERIAL = exports.SELECT_TOOL_ZOOM_OUT = exports.SELECT_TOOL_ZOOM_IN = exports.SELECT_TOOL_UPLOAD_IMAGE = exports.SELECT_TOOL_PAN = exports.SELECT_TOOL_EDIT = exports.SELECT_TOOL_DRAWING_LINE = exports.SELECT_TOOL_DRAWING_ITEM_3D = exports.SELECT_TOOL_DRAWING_ITEM = exports.SELECT_TOOL_DRAWING_HOLE_3D = exports.SELECT_TOOL_DRAWING_HOLE = exports.SELECT_TOOL_3D_VIEW = exports.SELECT_TOOL_3D_FIRST_PERSON = exports.SELECT_LINE = exports.SELECT_LAYER = exports.SELECT_ITEM = exports.SELECT_HOLE = exports.SELECT_GROUP = exports.SELECT_DOOR_STYLE = exports.SELECT_AREA = exports.SELECT_ALL = exports.SELECTALL = exports.SECONDARY_PURPLE_COLOR = exports.SECONDARY_BLUE_COLOR = exports.SCENE_ACTIONS = exports.SAVE_PROJECT = exports.SAVE_DESIGN = exports.ROOM_SHAPE_TYPE = exports.ROOM_SHAPE_MEASUREMENT_LINE_COLOR = exports.ROOM_ELEMENT_MEASUREMENT_LINE_COLOR = exports.ROLLBACK = exports.RIGHT_DIST_ANG = exports.RIGHT = exports.REVIEW_AND_QUOTE = exports.REQUEST_ASSISTANCE = exports.REPLACE_SUBMODULE = exports.REPLACE_ITEM = exports.REMOVE_VERTICAL_GUIDE = exports.REMOVE_REPLACE_SUBMODULE = exports.REMOVE_LINEAR = exports.REMOVE_LAYER = exports.REMOVE_HORIZONTAL_GUIDE = exports.REMOVE_GROUP_AND_DELETE_ELEMENTS = exports.REMOVE_GROUP = exports.REMOVE_FROM_GROUP = exports.REMOVE_DRAWING_SUPPORT = exports.REMOVE_CIRCULAR_GUIDE = exports.REMOVE = exports.REDO = exports.RECREATE = exports.PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY = exports.PROP_RESIZE_WIDTH = exports.PROP_RESIZE_HEIGHT = exports.PROP_RESIZE_DEPTH = exports.PROP_OPEN_DOORS = exports.PROP_FLIP_DOOR_HANDLE = exports.PROP_ALTITUDE = exports.PROJECT_SETTING_OPTION = exports.PROJECT_RE_NAME = exports.PROJECT_NAME_LENGTH_LIMIT = exports.PROJECT_ACTIONS = exports.PRODUCT = exports.PRIMARY_GREEN_COLOR = exports.PASTE_PROPERTIES = exports.OVERLAP_SOME = exports.OVERLAP_SAME = exports.OVERLAP_NONE = exports.OVERLAP_LINK = exports.OVERLAP_INCLUDED = exports.OPEN_PROJECT_CONFIGURATOR = exports.OPEN_CATALOG = exports.OBJTYPE_MESH = exports.OBJTYPE_GROUP = exports.NO_DATA_DATABASE = exports.NEW_PROJECT_BTN = exports.NEW_PROJECT = exports.NEW_DESIGN = exports.MOVE_COMPONENT = exports.MOLDING_LOCATIONS = exports.MODE_WAITING_DRAWING_LINE = exports.MODE_VIEWING_CATALOG = exports.MODE_UPLOADING_IMAGE = exports.MODE_SNAPPING = exports.MODE_ROTATING_ITEM_3D = exports.MODE_ROTATING_ITEM = exports.MODE_RIGHT_ELEVATION_VIEW = exports.MODE_LEFT_ELEVATION_VIEW = exports.MODE_IDLE_3D = exports.MODE_IDLE = exports.MODE_FRONT_VIEW = exports.MODE_FRONT_ELEVATION_VIEW = exports.MODE_FITTING_IMAGE = exports.MODE_ELEVATION_VIEW = exports.MODE_DRAWING_LINE = exports.MODE_DRAWING_ITEM_3D = exports.MODE_DRAWING_ITEM = exports.MODE_DRAWING_HOLE_3D = exports.MODE_DRAWING_HOLE = exports.MODE_DRAGGING_VERTEX = void 0;
|
|
9
|
+
exports.UPDATE_3D_CEIL_HEIGHT = exports.UPDATE_2D_CAMERA = exports.UNSELECT_GROUP = exports.UNSELECT_ALL = exports.UNIT_MILLIMETER = exports.UNIT_MILE = exports.UNIT_METER = exports.UNIT_INCH_LONG = exports.UNIT_INCH = exports.UNIT_FOOT = exports.UNIT_CENTIMETER = exports.UNIT_ANGLE = exports.UNITS_LENGTH = exports.UNDO = exports.UNCREATE = exports.TWO_D_FLOOR_PLAN = exports.TOP_MOLDING_LOCATION = exports.TOP = exports.TOGGLE_SNAP = exports.TOGGLE_LOADING_CABINET = exports.TOE_KICK_MOLDING = exports.TITLE_SMALL_COLOR = exports.TITLE_COLOR = exports.THROW_WARNING = exports.THROW_ERROR = exports.TEXT_COLOR_NEUTRAL_7 = exports.TEXT_COLOR_NEUTRAL_6 = exports.TEXT_COLOR_NEUTRAL_5 = exports.TEXT_COLOR_NEUTRAL_4 = exports.TEXT_COLOR_NEUTRAL_3 = exports.TEXT_COLOR_NEUTRAL_2 = exports.TEXT_COLOR_NEUTRAL_1 = exports.TEXT_COLOR_NEUTRAL_0 = exports.TEXT_COLOR = exports.TECHNICAL_VIEW = exports.TALL_CABINET_LAYOUTPOS = exports.TAKE_PICTURE = exports.SUBTOTAL = exports.SUBMIT_REQUEST_ASSIST = exports.SUBMIT_DESIGN = exports.SUBMIT_ADD_CART = exports.STORE_DIST_ARRAY = exports.STOP_DRAWING_LINE = exports.STEP_CABINET_CHOOSE_PRODUCT = exports.STATUS_WARNING_LIGHT_COLOR = exports.STATUS_WARNING_COLOR = exports.STATUS_POSITIVE_LIGHT_COLOR = exports.STATUS_POSITIVE_COLOR = exports.STATUS_OVERDUE_LIGHT_COLOR = exports.STATUS_OVERDUE_COLOR = exports.STATUS_NEGATIVE_LIGHT_COLOR = exports.STATUS_NEGATIVE_COLOR = exports.STATUS_INFO_LIGHT_COLOR = exports.STATUS_INFO_COLOR = exports.SKIN_SKU_WSV_2460 = exports.SKIN_SKU_WSV_2442 = exports.SKIN_SKU_WSV_1242 = exports.SKIN_SKU_USV245325 = exports.SKIN_SKU_BSV_48 = exports.SKIN_SKU_BSV_24 = exports.SHIFT2DON = exports.SHIFT2DOFF = exports.SHAPE_SVG_WIDTH = exports.SHAPE_SVG_PADDING = exports.SHAPE_SVG_DEPTH = exports.SHADE_LIGHT_PURPLE_COLOR = exports.SHADE_LIGHT_GREEN_COLOR = exports.SHADE_LIGHT_BLUE_COLOR = exports.SHADE_DARK_PURPLE_COLOR = exports.SHADE_DARK_GREEN_COLOR = exports.SHADE_DARK_BLUE_COLOR = exports.SET_WALL_COLOR = exports.SET_USER_DATA = exports.SET_STATE_PROPERTIES = exports.SET_ROTATE_STATUS = exports.SET_RELATED_LINE = exports.SET_PROPERTIES = exports.SET_PROJECT_PROPERTIES = exports.SET_PROJECT_ID = exports.SET_MOVE_STATUS = exports.SET_MOLDING = exports.SET_MODELLING = exports.SET_MODE = exports.SET_LINES_ATTRIBUTES = exports.SET_LAYER_PROPERTIES = exports.SET_ITEMS_ATTRIBUTES = exports.SET_IS_HELP = exports.SET_IS_CABINET_DRAWING = exports.SET_INITIAL_DOOR_STYLE = exports.SET_HOLES_ATTRIBUTES = exports.SET_HANDLE_MATERIAL = exports.SET_GROUP_PROPERTIES = exports.SET_GROUP_BARYCENTER = exports.SET_GROUP_ATTRIBUTES = exports.SET_FLOOR_STYLES = exports.SET_DOOR_STYLE = exports.SET_DOOR_HANDLE = exports.SET_DISTANT = exports.SET_COUNTER_TOP = exports.SET_BACKSPLASH_VISIBLE = void 0;
|
|
10
|
+
exports.ZOOM_VARIABLE = exports.WARRANTY_VIEW = exports.WARRANTY_SUPPORT = exports.WARNING_MESSAGE = exports.WALL_ITEM_MEASUREMENT_LINE_COLOR = exports.WALL_CABINET_LAYOUTPOS = exports.VIEWER3D_ACTIONS = exports.VIEWER2D_ACTIONS = exports.VERTEX_ACTIONS = exports.VANITY_CABINET_LAYOUTPOS = exports.VALIDATE_ITEM_POSTIONS = exports.USER_ACTIONS = exports.UPDATE_ZOOM_SCALE = exports.UPDATE_ROTATING_ITEM_CHANGED = exports.UPDATE_ROTATING_ITEM = exports.UPDATE_ROTATING = exports.UPDATE_POPUP_OPEN = exports.UPDATE_MOVING_STATE = exports.UPDATE_MOUSE_COORDS = exports.UPDATE_MOLDING = exports.UPDATE_ITEM_POSITION = exports.UPDATE_DRAWING_LINE = exports.UPDATE_DRAWING_ITEM = exports.UPDATE_DRAWING_HOLE_3D = exports.UPDATE_DRAWING_HOLE = exports.UPDATE_DRAGGING_VERTEX = exports.UPDATE_DRAGGING_LINE = exports.UPDATE_DRAGGING_ITEM_CHANGED = exports.UPDATE_DRAGGING_ITEM_3DY = exports.UPDATE_DRAGGING_ITEM_3DX = exports.UPDATE_DRAGGING_ITEM = exports.UPDATE_DRAGGING_HOLE_RULER_CHANGED = exports.UPDATE_DRAGGING_HOLE_CHANGED = exports.UPDATE_DRAGGING_HOLE_3D = exports.UPDATE_DRAGGING_HOLE = exports.UPDATE_CEIL_HEIGHT_UNIT = exports.UPDATE_CEIL_HEIGHT = exports.UPDATE_3D_CEIL_HEIGHT_UNIT = void 0;
|
|
11
11
|
//API server
|
|
12
12
|
// export const API_SERVER = 'http://localhost:3000/';
|
|
13
13
|
// ACTIONS project
|
|
@@ -788,4 +788,6 @@ var SKIN_SKU_BSV_48 = exports.SKIN_SKU_BSV_48 = 'BSV48'; // 48" x 34.5" : For ba
|
|
|
788
788
|
var SKIN_SKU_WSV_1242 = exports.SKIN_SKU_WSV_1242 = 'WSV1242'; // 11.25" x 42" : For 12" deep wall cabinets
|
|
789
789
|
var SKIN_SKU_WSV_2442 = exports.SKIN_SKU_WSV_2442 = 'WSV2442'; // 23.25" x 42" : For 24" deep wall cabinets
|
|
790
790
|
var SKIN_SKU_WSV_2460 = exports.SKIN_SKU_WSV_2460 = 'WSV2460'; // Usually used for CT3DR or CT2DR SKUs + stacked wall cabinets
|
|
791
|
-
var SKIN_SKU_USV245325 = exports.SKIN_SKU_USV245325 = 'USV2453.25'; // 23.25" x 53.25" : For tall cabinets
|
|
791
|
+
var SKIN_SKU_USV245325 = exports.SKIN_SKU_USV245325 = 'USV2453.25'; // 23.25" x 53.25" : For tall cabinets
|
|
792
|
+
|
|
793
|
+
var DEFAULT_MOLDING_PIECE_LENGTH = exports.DEFAULT_MOLDING_PIECE_LENGTH = 96; // in inch, 8 feet, standard length for molding pieces
|
package/lib/utils/geometry.js
CHANGED
|
@@ -51,6 +51,7 @@ exports.getCentroidOfPolygon = getCentroidOfPolygon;
|
|
|
51
51
|
exports.getHoleItems = getHoleItems;
|
|
52
52
|
exports.getInterSect = getInterSect;
|
|
53
53
|
exports.getLineInterSect = getLineInterSect;
|
|
54
|
+
exports.getLineSnapPointsOfItem = getLineSnapPointsOfItem;
|
|
54
55
|
exports.getNormaline = getNormaline;
|
|
55
56
|
exports.getPoylgonPoints = getPoylgonPoints;
|
|
56
57
|
exports.getRelatedLines = void 0;
|
|
@@ -61,6 +62,7 @@ exports.intersectRect = intersectRect;
|
|
|
61
62
|
exports.isBackWall = isBackWall;
|
|
62
63
|
exports.isFrontWall = isFrontWall;
|
|
63
64
|
exports.isLeftWall = isLeftWall;
|
|
65
|
+
exports.isOverlappedTwoItemsOnOneLine = isOverlappedTwoItemsOnOneLine;
|
|
64
66
|
exports.isPointInArea = isPointInArea;
|
|
65
67
|
exports.isPointInRect = isPointInRect;
|
|
66
68
|
exports.isPointOnLineSegment = isPointOnLineSegment;
|
|
@@ -2947,4 +2949,83 @@ function getSnappedWallLines(item, layer, catalog) {
|
|
|
2947
2949
|
}
|
|
2948
2950
|
}
|
|
2949
2951
|
return snappedWallLines;
|
|
2952
|
+
}
|
|
2953
|
+
function getLineSnapPointsOfItem(layer, curLine, item) {
|
|
2954
|
+
var _layer$lines2, _layer$vertices4, _line$vertices3, _layer$vertices5, _line$vertices4;
|
|
2955
|
+
// V0
|
|
2956
|
+
// /|
|
|
2957
|
+
// D0 /|-----------|
|
|
2958
|
+
// /| |
|
|
2959
|
+
// /| Item | ====> get D0, D1
|
|
2960
|
+
// /| |
|
|
2961
|
+
// D1 /|-----------|
|
|
2962
|
+
// /|
|
|
2963
|
+
// get v0, v1 of line
|
|
2964
|
+
var line = (_layer$lines2 = layer.lines) === null || _layer$lines2 === void 0 ? void 0 : _layer$lines2.get(curLine === null || curLine === void 0 ? void 0 : curLine.id);
|
|
2965
|
+
var v0 = (_layer$vertices4 = layer.vertices) === null || _layer$vertices4 === void 0 ? void 0 : _layer$vertices4.get(line === null || line === void 0 || (_line$vertices3 = line.vertices) === null || _line$vertices3 === void 0 ? void 0 : _line$vertices3.get(0));
|
|
2966
|
+
var v1 = (_layer$vertices5 = layer.vertices) === null || _layer$vertices5 === void 0 ? void 0 : _layer$vertices5.get(line === null || line === void 0 || (_line$vertices4 = line.vertices) === null || _line$vertices4 === void 0 ? void 0 : _line$vertices4.get(1));
|
|
2967
|
+
var pointGroup = [];
|
|
2968
|
+
if ((0, _helper.isEmpty)(v0) || (0, _helper.isEmpty)(v1)) return pointGroup;
|
|
2969
|
+
var itemRect = item === null || item === void 0 ? void 0 : item.rect;
|
|
2970
|
+
if (!(0, _helper.isEmpty)(itemRect)) {
|
|
2971
|
+
for (var i = 0; i < itemRect.length; i++) {
|
|
2972
|
+
if (distancePointFromLineSegment(v0, v1, itemRect[i].x, itemRect[i].y) < _constants.EPSILON) {
|
|
2973
|
+
pointGroup.push(itemRect[i]);
|
|
2974
|
+
}
|
|
2975
|
+
}
|
|
2976
|
+
}
|
|
2977
|
+
return pointGroup;
|
|
2978
|
+
}
|
|
2979
|
+
function isOverlappedTwoItemsOnOneLine(layer, curLine, srcItem, desItem) {
|
|
2980
|
+
var _layer$lines3, _layer$vertices6, _line$vertices5, _layer$vertices7, _line$vertices6, _S, _S2, _S3, _S4;
|
|
2981
|
+
if ((0, _helper.isEmpty)(layer) || (0, _helper.isEmpty)(curLine) || (0, _helper.isEmpty)(srcItem) || (0, _helper.isEmpty)(desItem) || (0, _helper.isEmpty)(desItem.D0) || (0, _helper.isEmpty)(desItem.D1)) return false;
|
|
2982
|
+
// get v0, v1 of line
|
|
2983
|
+
var line = (_layer$lines3 = layer.lines) === null || _layer$lines3 === void 0 ? void 0 : _layer$lines3.get(curLine === null || curLine === void 0 ? void 0 : curLine.id);
|
|
2984
|
+
var v0 = (_layer$vertices6 = layer.vertices) === null || _layer$vertices6 === void 0 ? void 0 : _layer$vertices6.get(line === null || line === void 0 || (_line$vertices5 = line.vertices) === null || _line$vertices5 === void 0 ? void 0 : _line$vertices5.get(0));
|
|
2985
|
+
var v1 = (_layer$vertices7 = layer.vertices) === null || _layer$vertices7 === void 0 ? void 0 : _layer$vertices7.get(line === null || line === void 0 || (_line$vertices6 = line.vertices) === null || _line$vertices6 === void 0 ? void 0 : _line$vertices6.get(1));
|
|
2986
|
+
var S0,
|
|
2987
|
+
S1,
|
|
2988
|
+
D0 = desItem === null || desItem === void 0 ? void 0 : desItem.D0,
|
|
2989
|
+
D1 = desItem === null || desItem === void 0 ? void 0 : desItem.D1;
|
|
2990
|
+
if ((0, _helper.isEmpty)(v0) || (0, _helper.isEmpty)(v1)) return false;
|
|
2991
|
+
// get distance from v0 to srcItem's S0, S1 and desItem(item or hole)'s D0, D1 are placed on line
|
|
2992
|
+
var srcPoints = getLineSnapPointsOfItem(layer, curLine, srcItem);
|
|
2993
|
+
if (srcPoints.length > 1) {
|
|
2994
|
+
S0 = srcPoints[0];
|
|
2995
|
+
S1 = srcPoints[1];
|
|
2996
|
+
}
|
|
2997
|
+
var disV0S0 = pointsDistance(v0.x, v0.y, (_S = S0) === null || _S === void 0 ? void 0 : _S.x, (_S2 = S0) === null || _S2 === void 0 ? void 0 : _S2.y);
|
|
2998
|
+
var disV0S1 = pointsDistance(v0.x, v0.y, (_S3 = S1) === null || _S3 === void 0 ? void 0 : _S3.x, (_S4 = S1) === null || _S4 === void 0 ? void 0 : _S4.y);
|
|
2999
|
+
var disV0D0 = pointsDistance(v0.x, v0.y, D0.x, D0.y);
|
|
3000
|
+
var disV0D1 = pointsDistance(v0.x, v0.y, D1.x, D1.y);
|
|
3001
|
+
// detect two items are overlapped
|
|
3002
|
+
var maxDisV0S = Math.max(disV0S0, disV0S1);
|
|
3003
|
+
var minDisV0S = Math.min(disV0S0, disV0S1);
|
|
3004
|
+
var maxDisV0D = Math.max(disV0D0, disV0D1);
|
|
3005
|
+
var minDisV0D = Math.min(disV0D0, disV0D1);
|
|
3006
|
+
if (maxDisV0S > maxDisV0D && maxDisV0D - minDisV0S > _constants.EPSILON) {
|
|
3007
|
+
// d0 s0 d1 s1 ===> maxDisV0S: v0s1, minDisV0S: v0s0, maxDisV0D: v0d1, minDisV0D: v0d0
|
|
3008
|
+
// v0 __________________________ v1
|
|
3009
|
+
// | | | |
|
|
3010
|
+
// | | | |
|
|
3011
|
+
// |__DI__|__| |
|
|
3012
|
+
// |__SI__|
|
|
3013
|
+
/////////////////////////////////////////
|
|
3014
|
+
// s0 d0 d1 s1 ===> maxDisV0S: v0s1, minDisV0S: v0s0, maxDisV0D: v0d1, minDisV0D: v0d0
|
|
3015
|
+
// v0 __________________________ v1
|
|
3016
|
+
// | | | |
|
|
3017
|
+
// | |__DI__| |
|
|
3018
|
+
// |_________SI_______|
|
|
3019
|
+
return true;
|
|
3020
|
+
} else if (minDisV0S < minDisV0D && maxDisV0S - minDisV0D > _constants.EPSILON) {
|
|
3021
|
+
// s0 d0 s1 d1 ===> maxDisV0S: v0s1, minDisV0S: v0s0, maxDisV0D: v0d1, minDisV0D: v0d0
|
|
3022
|
+
// v0 __________________________ v1
|
|
3023
|
+
// | | | |
|
|
3024
|
+
// | |__DI__|
|
|
3025
|
+
// |__SI_____|
|
|
3026
|
+
//
|
|
3027
|
+
return true;
|
|
3028
|
+
} else {
|
|
3029
|
+
return false;
|
|
3030
|
+
}
|
|
2950
3031
|
}
|
|
@@ -1220,7 +1220,7 @@ function handleExternalEvent(_x0) {
|
|
|
1220
1220
|
function _handleExternalEvent() {
|
|
1221
1221
|
_handleExternalEvent = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0(props) {
|
|
1222
1222
|
var _evt$payload3, _evt$payload4;
|
|
1223
|
-
var evt, state, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _evt$payload5, doorStyle, itemCDS, applyScope, _evt$payload5$itemIds, itemIds, _layerId, allItems, targetItems, idSet, selectedItemIds, _cdsItems, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, measurementUnit, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven3, sceneData, currentTexture, _t5, _t6, _t7;
|
|
1223
|
+
var evt, state, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _evt$payload5, doorStyle, itemCDS, applyScope, _evt$payload5$itemIds, itemIds, _layerId, allItems, targetItems, idSet, selectedItemIds, _cdsItems, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, measurementUnit, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$configData$mol, _props$configData, _props$configData$ski, _props$configData2, _props$onInternalEven3, sceneData, currentTexture, moldingPieceLength, skinPanelExclusionSKUs, _t5, _t6, _t7;
|
|
1224
1224
|
return _regenerator["default"].wrap(function (_context11) {
|
|
1225
1225
|
while (1) switch (_context11.prev = _context11.next) {
|
|
1226
1226
|
case 0:
|
|
@@ -1615,10 +1615,12 @@ function _handleExternalEvent() {
|
|
|
1615
1615
|
case 48:
|
|
1616
1616
|
sceneData = state.scene.toJS(); // get molding data for "ReviewForQuote"
|
|
1617
1617
|
currentTexture = layer.doorStyle !== null || layer.doorStyle !== undefined ? layer.doorStyle : props.state.doorStyle.toJS();
|
|
1618
|
-
|
|
1618
|
+
moldingPieceLength = (_props$configData$mol = props === null || props === void 0 || (_props$configData = props.configData) === null || _props$configData === void 0 ? void 0 : _props$configData.moldingPieceLength) !== null && _props$configData$mol !== void 0 ? _props$configData$mol : _constants.DEFAULT_MOLDING_PIECE_LENGTH;
|
|
1619
|
+
sceneData.layers[layerId].moldingData = (0, _molding.getMoldingDataOfScene2)(layer, props.catalog, currentTexture, moldingPieceLength);
|
|
1619
1620
|
|
|
1620
1621
|
// get skin panel data
|
|
1621
|
-
|
|
1622
|
+
skinPanelExclusionSKUs = (_props$configData$ski = props === null || props === void 0 || (_props$configData2 = props.configData) === null || _props$configData2 === void 0 ? void 0 : _props$configData2.skinPanelExclusionSKUs) !== null && _props$configData$ski !== void 0 ? _props$configData$ski : [];
|
|
1623
|
+
sceneData.layers[layerId].skinPanelData = (0, _skinPanelEngine.computeSkinPanels)(layer, skinPanelExclusionSKUs);
|
|
1622
1624
|
|
|
1623
1625
|
// send scene object from 3DTool to HostApp using internalEvent
|
|
1624
1626
|
(_props$onInternalEven3 = props.onInternalEvent) === null || _props$onInternalEven3 === void 0 || _props$onInternalEven3.call(props, {
|
package/lib/utils/molding.js
CHANGED
|
@@ -13,7 +13,6 @@ exports.getLinesFromItems = getLinesFromItems;
|
|
|
13
13
|
exports.getLinesFromItems2 = getLinesFromItems2;
|
|
14
14
|
exports.getLinesOfItem = getLinesOfItem;
|
|
15
15
|
exports.getLinesOfItem2 = getLinesOfItem2;
|
|
16
|
-
exports.getMoldingDataOfScene = getMoldingDataOfScene;
|
|
17
16
|
exports.getMoldingDataOfScene2 = getMoldingDataOfScene2;
|
|
18
17
|
exports.hasMoldingLayout = hasMoldingLayout;
|
|
19
18
|
exports.isAttachedWall = isAttachedWall;
|
|
@@ -968,7 +967,7 @@ function createMonldingGroup(oldMG, layer, molding, catalog) {
|
|
|
968
967
|
newMG = getMDPoints(newMG);
|
|
969
968
|
return newMG;
|
|
970
969
|
}
|
|
971
|
-
function getMoldingDataOfScene2(layer, catalog, doorStyle) {
|
|
970
|
+
function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLength) {
|
|
972
971
|
var _layer$items;
|
|
973
972
|
var moldingData = [];
|
|
974
973
|
var items = layer === null || layer === void 0 || (_layer$items = layer.items) === null || _layer$items === void 0 ? void 0 : _layer$items.toArray();
|
|
@@ -1130,10 +1129,10 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
|
|
|
1130
1129
|
if (idx < 0) moldingData.push(_objectSpread(_objectSpread({}, ml.molding), {}, {
|
|
1131
1130
|
doorStyle: ml.doorStyle,
|
|
1132
1131
|
totalLength: mlLength,
|
|
1133
|
-
count: Math.ceil(mlLength * 1.1 /
|
|
1132
|
+
count: Math.ceil(mlLength * 1.1 / moldingPieceLength)
|
|
1134
1133
|
}));else {
|
|
1135
1134
|
moldingData[idx].totalLength += mlLength;
|
|
1136
|
-
moldingData[idx].count = Math.ceil(moldingData[idx].totalLength * 1.1 /
|
|
1135
|
+
moldingData[idx].count = Math.ceil(moldingData[idx].totalLength * 1.1 / moldingPieceLength);
|
|
1137
1136
|
}
|
|
1138
1137
|
};
|
|
1139
1138
|
for (var k = 0; k < moldingLines.length; k++) {
|
|
@@ -1141,237 +1140,5 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
|
|
|
1141
1140
|
}
|
|
1142
1141
|
// console.log('moldingData: ', moldingData);
|
|
1143
1142
|
|
|
1144
|
-
return moldingData;
|
|
1145
|
-
}
|
|
1146
|
-
function getMoldingDataOfScene(layer, catalog, doorStyle) {
|
|
1147
|
-
var moldingData = [];
|
|
1148
|
-
var items = layer.items.toArray();
|
|
1149
|
-
var moldings = [];
|
|
1150
|
-
// get all moldings info
|
|
1151
|
-
items.forEach(function (itemCat) {
|
|
1152
|
-
var _itemCat$molding;
|
|
1153
|
-
itemCat === null || itemCat === void 0 || (_itemCat$molding = itemCat.molding) === null || _itemCat$molding === void 0 || _itemCat$molding.forEach(function (molding) {
|
|
1154
|
-
if (!moldings.some(function (m) {
|
|
1155
|
-
return m.name === molding.name;
|
|
1156
|
-
})) moldings.push(molding);
|
|
1157
|
-
});
|
|
1158
|
-
});
|
|
1159
|
-
|
|
1160
|
-
// calc normal molding
|
|
1161
|
-
moldings.forEach(function (molding) {
|
|
1162
|
-
var itemGroups = [];
|
|
1163
|
-
var temp_items = [];
|
|
1164
|
-
items.forEach(function (item) {
|
|
1165
|
-
if (item.molding.some(function (mol) {
|
|
1166
|
-
return mol.itemID === molding.itemID;
|
|
1167
|
-
}) && isEnableItemForMolding(layer, item)) {
|
|
1168
|
-
temp_items.push(item);
|
|
1169
|
-
}
|
|
1170
|
-
});
|
|
1171
|
-
if (temp_items.length) {
|
|
1172
|
-
while (temp_items.length > 0) {
|
|
1173
|
-
var itemGroup = [temp_items[0]];
|
|
1174
|
-
var _loop10 = function _loop10(_idx) {
|
|
1175
|
-
if (!itemGroup.some(function (it) {
|
|
1176
|
-
return it.id === temp_items[_idx].id;
|
|
1177
|
-
}) && isItemSnappedGroup(temp_items[_idx], itemGroup)) {
|
|
1178
|
-
itemGroup.push(temp_items[_idx]);
|
|
1179
|
-
_idx = 0;
|
|
1180
|
-
}
|
|
1181
|
-
idx = _idx;
|
|
1182
|
-
};
|
|
1183
|
-
for (var idx = 0; idx < temp_items.length; idx++) {
|
|
1184
|
-
_loop10(idx);
|
|
1185
|
-
}
|
|
1186
|
-
itemGroup.forEach(function (item) {
|
|
1187
|
-
var index = temp_items.findIndex(function (it) {
|
|
1188
|
-
return it.id === item.id;
|
|
1189
|
-
});
|
|
1190
|
-
if (index > -1) {
|
|
1191
|
-
temp_items.splice(index, 1);
|
|
1192
|
-
}
|
|
1193
|
-
});
|
|
1194
|
-
itemGroups.push(itemGroup);
|
|
1195
|
-
}
|
|
1196
|
-
var molding_totalLength = 0;
|
|
1197
|
-
itemGroups.forEach(function (itemgroup) {
|
|
1198
|
-
var allLineRects = _export.GeometryUtils.buildRectFromLines(layer, _export.GeometryUtils.getAllLines(layer));
|
|
1199
|
-
var items = (0, _toConsumableArray2["default"])(itemgroup);
|
|
1200
|
-
var MGlines = getLinesOfItem(items[0], allLineRects, catalog);
|
|
1201
|
-
items = sortItemsByDistance(items, items[0]);
|
|
1202
|
-
var _loop11 = function _loop11() {
|
|
1203
|
-
var itemLines = getLinesOfItem(items[i], allLineRects, catalog);
|
|
1204
|
-
var temp_MGLines = [];
|
|
1205
|
-
MGlines.forEach(function (line) {
|
|
1206
|
-
var idx = itemLines.findIndex(function (itemLine) {
|
|
1207
|
-
return isLinesOverlapped(line, itemLine);
|
|
1208
|
-
});
|
|
1209
|
-
var curItemLine = itemLines[idx];
|
|
1210
|
-
if (idx > -1) {
|
|
1211
|
-
if (!(_export.GeometryUtils.samePoints(line[0], curItemLine[0]) && _export.GeometryUtils.samePoints(line[1], curItemLine[1]) || _export.GeometryUtils.samePoints(line[0], curItemLine[1]) && _export.GeometryUtils.samePoints(line[1], curItemLine[0]))) {
|
|
1212
|
-
var MGLine = mergeOverlappedLines(line, curItemLine);
|
|
1213
|
-
temp_MGLines.push(MGLine);
|
|
1214
|
-
}
|
|
1215
|
-
itemLines.splice(idx, 1);
|
|
1216
|
-
} else {
|
|
1217
|
-
temp_MGLines.push(line);
|
|
1218
|
-
}
|
|
1219
|
-
});
|
|
1220
|
-
itemLines.forEach(function (itemLine) {
|
|
1221
|
-
return temp_MGLines.push(itemLine);
|
|
1222
|
-
});
|
|
1223
|
-
MGlines = [].concat(temp_MGLines);
|
|
1224
|
-
};
|
|
1225
|
-
for (var i = 1; i < items.length; i++) {
|
|
1226
|
-
_loop11();
|
|
1227
|
-
}
|
|
1228
|
-
MGlines.forEach(function (line) {
|
|
1229
|
-
molding_totalLength += _export.GeometryUtils.verticesDistance(line[0], line[1]);
|
|
1230
|
-
});
|
|
1231
|
-
});
|
|
1232
|
-
molding_totalLength = (0, _convertUnitsLite.convert)(molding_totalLength).from('cm').to('in');
|
|
1233
|
-
moldingData.push(_objectSpread(_objectSpread({}, molding), {}, {
|
|
1234
|
-
doorStyle: doorStyle,
|
|
1235
|
-
count: Math.ceil(molding_totalLength * 1.1 / 96)
|
|
1236
|
-
}));
|
|
1237
|
-
}
|
|
1238
|
-
});
|
|
1239
|
-
|
|
1240
|
-
// calc toe kick molding
|
|
1241
|
-
var tmp = [];
|
|
1242
|
-
items.forEach(function (item) {
|
|
1243
|
-
if (item.category === 'cabinet' && !item.cabinet_category.toLowerCase().includes('microwave')) {
|
|
1244
|
-
tmp.push(item);
|
|
1245
|
-
}
|
|
1246
|
-
});
|
|
1247
|
-
var tmpMoldingData = [];
|
|
1248
|
-
var toedoorStyles = [];
|
|
1249
|
-
tmp.map(function (item) {
|
|
1250
|
-
var _item$molding2;
|
|
1251
|
-
if (item.layoutpos === _constants.BASE_CABINET_LAYOUTPOS && ((0, _helper.isEmpty)(item.molding) || ((_item$molding2 = item.molding) === null || _item$molding2 === void 0 ? void 0 : _item$molding2.length) < 1 || !isEnableItemForMolding(layer, item))) {
|
|
1252
|
-
var w = item.properties.get('width').get('_length');
|
|
1253
|
-
var wUnit = item.properties.get('width').get('_unit') || 'cm';
|
|
1254
|
-
w = (0, _convertUnitsLite.convert)(w / 2).from(wUnit).to('cm');
|
|
1255
|
-
var h = item.properties.get('depth').get('_length');
|
|
1256
|
-
var hUnit = item.properties.get('depth').get('_unit') || 'cm';
|
|
1257
|
-
h = (0, _convertUnitsLite.convert)(h / 2).from(hUnit).to('cm');
|
|
1258
|
-
var outline = null;
|
|
1259
|
-
var element = catalog.elements[item.get('type')];
|
|
1260
|
-
if (!element) element = catalog.elements[(0, _utils.returnReplaceableDeepSearchType)(item.get('type'))];
|
|
1261
|
-
outline = element.info.outline;
|
|
1262
|
-
var len = 0;
|
|
1263
|
-
if (outline) {
|
|
1264
|
-
// Extract Points from `outline`
|
|
1265
|
-
var outlinePaths = outline.paths;
|
|
1266
|
-
var outlineWidth = outline.svgWidth;
|
|
1267
|
-
var outlineHeight = outline.svgHeight;
|
|
1268
|
-
var outlinePoints = []; // Hold Points Of SVG
|
|
1269
|
-
var _iterator5 = _createForOfIteratorHelper(outlinePaths),
|
|
1270
|
-
_step5;
|
|
1271
|
-
try {
|
|
1272
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
1273
|
-
var path = _step5.value;
|
|
1274
|
-
var _iterator6 = _createForOfIteratorHelper(path.subPaths),
|
|
1275
|
-
_step6;
|
|
1276
|
-
try {
|
|
1277
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
1278
|
-
var subPath = _step6.value;
|
|
1279
|
-
outlinePoints = outlinePoints.concat(subPath.getPoints());
|
|
1280
|
-
}
|
|
1281
|
-
} catch (err) {
|
|
1282
|
-
_iterator6.e(err);
|
|
1283
|
-
} finally {
|
|
1284
|
-
_iterator6.f();
|
|
1285
|
-
}
|
|
1286
|
-
}
|
|
1287
|
-
} catch (err) {
|
|
1288
|
-
_iterator5.e(err);
|
|
1289
|
-
} finally {
|
|
1290
|
-
_iterator5.f();
|
|
1291
|
-
}
|
|
1292
|
-
var maxX = outlinePoints[0].x,
|
|
1293
|
-
minX = outlinePoints[0].x;
|
|
1294
|
-
var maxY = outlinePoints[0].y,
|
|
1295
|
-
minY = outlinePoints[0].y;
|
|
1296
|
-
outlinePoints.forEach(function (point) {
|
|
1297
|
-
if (point.x > maxX) {
|
|
1298
|
-
maxX = point.x;
|
|
1299
|
-
}
|
|
1300
|
-
if (point.x < minX) {
|
|
1301
|
-
minX = point.x;
|
|
1302
|
-
}
|
|
1303
|
-
if (point.y > maxY) {
|
|
1304
|
-
maxY = point.y;
|
|
1305
|
-
}
|
|
1306
|
-
if (point.y < minY) {
|
|
1307
|
-
minY = point.y;
|
|
1308
|
-
}
|
|
1309
|
-
});
|
|
1310
|
-
outlinePoints.forEach(function (point) {
|
|
1311
|
-
if (_export.GeometryUtils.isPointInRect([{
|
|
1312
|
-
x: minX,
|
|
1313
|
-
y: minY
|
|
1314
|
-
}, {
|
|
1315
|
-
x: minX,
|
|
1316
|
-
y: maxY
|
|
1317
|
-
}, {
|
|
1318
|
-
x: maxX,
|
|
1319
|
-
y: maxY
|
|
1320
|
-
}, {
|
|
1321
|
-
x: maxX,
|
|
1322
|
-
y: minY
|
|
1323
|
-
}], point)) {
|
|
1324
|
-
if (point.x > 10) len += (point.x / outlineWidth - 0.5) * w * 2 + h * 2 - (point.y / outlineHeight - 0.5) * h * 2;
|
|
1325
|
-
}
|
|
1326
|
-
});
|
|
1327
|
-
len = (0, _convertUnitsLite.convert)(len).from('cm').to('in');
|
|
1328
|
-
} else {
|
|
1329
|
-
w = (0, _convertUnitsLite.convert)(w * 2).from('cm').to('in');
|
|
1330
|
-
len += w;
|
|
1331
|
-
}
|
|
1332
|
-
var doorIndex = toedoorStyles.findIndex(function (a) {
|
|
1333
|
-
var iDS = item === null || item === void 0 ? void 0 : item.doorStyle;
|
|
1334
|
-
if (!iDS) return false;
|
|
1335
|
-
if (!iDS.hasOwnProperty('id')) {
|
|
1336
|
-
iDS = iDS.toJS();
|
|
1337
|
-
}
|
|
1338
|
-
return a.doorStyle.id === iDS.id && (0, _utils.isEqualInstallationType)(a.doorStyle, iDS);
|
|
1339
|
-
});
|
|
1340
|
-
if (doorIndex > -1) {
|
|
1341
|
-
toedoorStyles[doorIndex].totalLength += len;
|
|
1342
|
-
} else {
|
|
1343
|
-
toedoorStyles.push({
|
|
1344
|
-
doorStyle: item.doorStyle.hasOwnProperty('id') ? item.doorStyle : item.doorStyle && item.doorStyle.toJS(),
|
|
1345
|
-
totalLength: len
|
|
1346
|
-
});
|
|
1347
|
-
}
|
|
1348
|
-
}
|
|
1349
|
-
});
|
|
1350
|
-
toedoorStyles.forEach(function (doorStyle) {
|
|
1351
|
-
var skuName = (0, _utils.getToeKickSKU)(doorStyle.doorStyle, catalog);
|
|
1352
|
-
var thumbnail = skuName ? skuName : '';
|
|
1353
|
-
// moldings.forEach(molding => {
|
|
1354
|
-
// if (
|
|
1355
|
-
// molding.name ===
|
|
1356
|
-
// getToeKickSKU(
|
|
1357
|
-
// doorStyle.doorStyle,
|
|
1358
|
-
// catalog,
|
|
1359
|
-
// true
|
|
1360
|
-
// )
|
|
1361
|
-
// )
|
|
1362
|
-
// thumbnail = molding.thumbnail;
|
|
1363
|
-
// });
|
|
1364
|
-
|
|
1365
|
-
doorStyle.totalLength && tmpMoldingData.push({
|
|
1366
|
-
name: _constants.TOE_KICK_MOLDING,
|
|
1367
|
-
sku: (0, _utils.getToeKickSKU)(doorStyle.doorStyle, catalog),
|
|
1368
|
-
thumbnail: thumbnail,
|
|
1369
|
-
category: 'molding',
|
|
1370
|
-
type: 'cabinet',
|
|
1371
|
-
doorStyle: doorStyle.doorStyle,
|
|
1372
|
-
count: Math.ceil(doorStyle.totalLength * 1.1 / 96)
|
|
1373
|
-
});
|
|
1374
|
-
});
|
|
1375
|
-
if (tmpMoldingData.length > 0) moldingData = [].concat((0, _toConsumableArray2["default"])(moldingData), tmpMoldingData);
|
|
1376
1143
|
return moldingData;
|
|
1377
1144
|
}
|
|
@@ -311,14 +311,27 @@ function buildSkinPanelData(faces) {
|
|
|
311
311
|
}
|
|
312
312
|
return result;
|
|
313
313
|
}
|
|
314
|
+
function shouldExcludeSkinPanel(itemJS, exclusionSet) {
|
|
315
|
+
var _itemJS$doorStyle;
|
|
316
|
+
var cabinetSku = itemJS === null || itemJS === void 0 ? void 0 : itemJS.sku_number;
|
|
317
|
+
var doorColorSku = itemJS === null || itemJS === void 0 || (_itemJS$doorStyle = itemJS.doorStyle) === null || _itemJS$doorStyle === void 0 ? void 0 : _itemJS$doorStyle.sku;
|
|
318
|
+
if (!cabinetSku || !doorColorSku) return false;
|
|
319
|
+
return exclusionSet.has("".concat(cabinetSku, "-").concat(doorColorSku));
|
|
320
|
+
}
|
|
314
321
|
function computeSkinPanels(layer) {
|
|
322
|
+
var skinPanelExclusionSKUs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
323
|
+
var exclusionSet = new Set(skinPanelExclusionSKUs);
|
|
324
|
+
|
|
315
325
|
// Get candidate skin panel items and other items
|
|
316
326
|
var _collectLayerItems = collectLayerItems(layer),
|
|
317
327
|
skinPanelItems = _collectLayerItems.skinPanelItems,
|
|
318
328
|
otherItems = _collectLayerItems.otherItems;
|
|
329
|
+
var filteredSkinPanelItems = skinPanelItems.filter(function (item) {
|
|
330
|
+
return !shouldExcludeSkinPanel(item.toJS(), exclusionSet);
|
|
331
|
+
});
|
|
319
332
|
|
|
320
333
|
// Get all skin face list of [skinPanelItems] & [otherItems]
|
|
321
|
-
var skinFaces = collectFaces(
|
|
334
|
+
var skinFaces = collectFaces(filteredSkinPanelItems, layer);
|
|
322
335
|
var otherFaces = collectFaces(otherItems, layer);
|
|
323
336
|
skinFaces = filterFacesBlockedByFaces(skinFaces, skinFaces);
|
|
324
337
|
skinFaces = filterFacesBlockedByFaces(skinFaces, otherFaces);
|