kitchen-simulator 4.0.8 → 4.0.9

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.
@@ -16,7 +16,7 @@ var STYLE_LINE = {
16
16
  // strokeWidth:1
17
17
  };
18
18
  var STYLE_INTERIOR_LINE = {
19
- strokeWidth: 2,
19
+ strokeWidth: 4,
20
20
  stroke: SharedStyle.INTERIOR_LINE.unselected
21
21
  };
22
22
  var STYLE_INTERIOR_LINE_SELECTED = {
package/es/class/layer.js CHANGED
@@ -567,7 +567,7 @@ var Layer = /*#__PURE__*/function () {
567
567
  return v.id !== vertexID && GeometryUtils.samePoints(vertex, v) // &&
568
568
  //!v.lines.contains( vertexID ) &&
569
569
  //!v.areas.contains( vertexID )
570
- ;
570
+ ;
571
571
  });
572
572
  if (doubleVertices.isEmpty()) return {
573
573
  updatedState: state
@@ -170,6 +170,8 @@ var Project = /*#__PURE__*/function () {
170
170
  // Matching state.doorStyle with layer.doorStyle
171
171
  if (state.getIn(['scene', 'layers', layerID, 'doorStyle'])) {
172
172
  doorStyle = state.getIn(['scene', 'layers', layerID, 'doorStyle']);
173
+ } else if (!isEmpty(doorStyle)) {
174
+ state = state.setIn(['scene', 'layers', layerID, 'doorStyle'], doorStyle);
173
175
  }
174
176
  state = state.merge({
175
177
  doorStyle: doorStyle,
@@ -34,28 +34,28 @@ export var STYLE_ROOM_SHAPE = {
34
34
  var STYLE_DASH = {
35
35
  stroke: DASH_LINE_COLOR,
36
36
  strokeDasharray: '4 4',
37
- strokeWidth: '2px',
37
+ strokeWidth: '1px',
38
38
  strokeLinecap: 'round'
39
39
  };
40
40
  var STYLE_ROOM_ELEMENT = {
41
41
  fill: ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
42
42
  stroke: ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
43
- strokeWidth: '2px'
43
+ strokeWidth: '1.5px'
44
44
  };
45
45
  var STYLE_BASE_ITEM = {
46
46
  fill: BASE_ITEM_MEASUREMENT_LINE_COLOR,
47
47
  stroke: BASE_ITEM_MEASUREMENT_LINE_COLOR,
48
- strokeWidth: '2px'
48
+ strokeWidth: '1.5px'
49
49
  };
50
50
  var STYLE_WALL_ITEM = {
51
51
  fill: WALL_ITEM_MEASUREMENT_LINE_COLOR,
52
52
  stroke: WALL_ITEM_MEASUREMENT_LINE_COLOR,
53
- strokeWidth: '2px'
53
+ strokeWidth: '1.5px'
54
54
  };
55
55
  var STYLE_DISTANCE = {
56
56
  fill: DISTANCE_MEASUREMENT_LINE_COLOR,
57
57
  stroke: DISTANCE_MEASUREMENT_LINE_COLOR,
58
- strokeWidth: '2px'
58
+ strokeWidth: '1.5px'
59
59
  };
60
60
  var selectStyle = function selectStyle(element, style) {
61
61
  return element.iFlag ? style : STYLE_DISTANCE;
@@ -1,13 +1,9 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { convert } from "../../utils/convert-units-lite";
4
3
  import IDBroker from "../../utils/id-broker";
5
- import { LINE_THICKNESS, TEXT_COLOR_NEUTRAL_7, UNIT_FOOT, UNIT_METER } from "../../constants";
4
+ import { TEXT_COLOR_NEUTRAL_7 } from "../../constants";
6
5
  import { STYLE_ROOM_SHAPE } from "./line";
7
- var STYLE = {
8
- stroke: TEXT_COLOR_NEUTRAL_7,
9
- strokeWidth: '1px'
10
- };
6
+ import { getRulerDisplayData } from "../../utils/ruler";
11
7
  var BACKGROUNDSTYLE = {
12
8
  fill: 'transparent',
13
9
  fillOpacity: 0.8
@@ -31,13 +27,20 @@ export default function Ruler(_ref) {
31
27
  rulerUnit = _ref.rulerUnit,
32
28
  transform = _ref.transform,
33
29
  style = _ref.style;
34
- var ruLength = convert(length).from(unit).to(rulerUnit);
35
- var fixedLength = layer.unit === UNIT_METER || layer.unit === UNIT_FOOT ? 2 : 0;
36
- var distanceText = (Math.round(convert(ruLength).from(rulerUnit).to(layer.unit) * 100) / 100).toFixed(fixedLength);
37
- var textLength = (distanceText.length + layer.unit.length) * 9;
30
+ var _getRulerDisplayData = getRulerDisplayData({
31
+ length: length,
32
+ unit: unit,
33
+ rulerUnit: rulerUnit,
34
+ layerUnit: layer.unit
35
+ }),
36
+ distanceText = _getRulerDisplayData.distanceText,
37
+ unitStr = _getRulerDisplayData.unitStr,
38
+ textLength = _getRulerDisplayData.textLength,
39
+ bShowText = _getRulerDisplayData.bShowText,
40
+ bShowLine = _getRulerDisplayData.bShowLine;
38
41
  return /*#__PURE__*/React.createElement("g", {
39
42
  transform: transform
40
- }, /*#__PURE__*/React.createElement("g", {
43
+ }, bShowText && /*#__PURE__*/React.createElement("g", {
41
44
  id: "ruler"
42
45
  }, /*#__PURE__*/React.createElement("rect", {
43
46
  id: "ruler_rect_".concat(IDBroker.acquireID()),
@@ -54,7 +57,7 @@ export default function Ruler(_ref) {
54
57
  transform: "scale(1, -1)",
55
58
  style: STYLE_TEXT,
56
59
  fill: TEXT_COLOR_NEUTRAL_7
57
- }, distanceText, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/React.createElement("line", {
60
+ }, distanceText, unitStr)), bShowLine && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("line", {
58
61
  x1: style === STYLE_ROOM_SHAPE ? 0 : 4,
59
62
  y1: "0",
60
63
  x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
@@ -72,7 +75,7 @@ export default function Ruler(_ref) {
72
75
  }), /*#__PURE__*/React.createElement("polygon", {
73
76
  points: "".concat(length - 3, ", 0, ").concat(length - 6.5, ", 2, ").concat(length - 6.5, ", -2"),
74
77
  style: style
75
- })));
78
+ }))));
76
79
  }
77
80
  Ruler.propTypes = {
78
81
  length: PropTypes.number.isRequired,
@@ -1,12 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { convert } from "../../utils/convert-units-lite";
4
- import { UNIT_FOOT, UNIT_METER } from "../../constants";
5
- var ARROW_STYLE = {
6
- stroke: '#1183B7',
7
- strokeWidth: '2px',
8
- strokeLinecap: 'round'
9
- };
3
+ import { getRulerDisplayData } from "../../utils/ruler";
10
4
  var STYLE = {
11
5
  stroke: '#455A64',
12
6
  fill: '#455A64',
@@ -32,10 +26,17 @@ export default function RulerDist(_ref) {
32
26
  transform = _ref.transform,
33
27
  angle = _ref.angle,
34
28
  rotation = _ref.rotation;
35
- var ruLength = convert(length).from(unit).to(rulerUnit);
36
- var fixedLength = layer.unit === UNIT_METER || layer.unit === UNIT_FOOT ? 2 : 0;
37
- var distanceText = (Math.round(convert(ruLength).from(rulerUnit).to(layer.unit) * 100) / 100).toFixed(fixedLength);
38
- var textLength = (distanceText.length + layer.unit.length) * 8;
29
+ var _getRulerDisplayData = getRulerDisplayData({
30
+ length: length,
31
+ unit: unit,
32
+ rulerUnit: rulerUnit,
33
+ layerUnit: layer.unit
34
+ }),
35
+ distanceText = _getRulerDisplayData.distanceText,
36
+ unitStr = _getRulerDisplayData.unitStr,
37
+ textLength = _getRulerDisplayData.textLength,
38
+ bShowText = _getRulerDisplayData.bShowText,
39
+ bShowLine = _getRulerDisplayData.bShowLine;
39
40
  var textangle = angle + 90;
40
41
  var textRotation = 1;
41
42
  var ay = 2;
@@ -67,47 +68,32 @@ export default function RulerDist(_ref) {
67
68
  textRotation = 180;
68
69
  ay = 5;
69
70
  }
70
- if (ruLength > 0) {
71
- if (convert(ruLength).from(rulerUnit).to('in') < 3) {
72
- return /*#__PURE__*/React.createElement("g", {
73
- transform: transform
74
- }, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("text", {
75
- x: "0",
76
- y: "0",
77
- transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
78
- style: STYLE_TEXT
79
- }, distanceText, layer.unit === 'in' ? '"' : layer.unit)));
80
- } else {
81
- return /*#__PURE__*/React.createElement("g", {
82
- transform: transform
83
- }, /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("text", {
84
- x: "0",
85
- y: "0",
86
- transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
87
- style: STYLE_TEXT
88
- }, distanceText, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/React.createElement("line", {
89
- x1: "2",
90
- y1: "0",
91
- x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
92
- y2: "0",
93
- style: STYLE
94
- }), /*#__PURE__*/React.createElement("polygon", {
95
- points: "1, 0, 4.5, -2, 4.5, 2 ",
96
- style: STYLE
97
- }), /*#__PURE__*/React.createElement("line", {
98
- x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
99
- y1: "0",
100
- x2: length,
101
- y2: "0",
102
- style: STYLE
103
- }), /*#__PURE__*/React.createElement("polygon", {
104
- points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
105
- style: STYLE
106
- }));
107
- }
108
- } else {
109
- return null;
110
- }
71
+ return /*#__PURE__*/React.createElement("g", {
72
+ transform: transform
73
+ }, bShowText && /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("text", {
74
+ x: "0",
75
+ y: "0",
76
+ transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
77
+ style: STYLE_TEXT
78
+ }, distanceText, unitStr)), bShowLine && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("line", {
79
+ x1: "2",
80
+ y1: "0",
81
+ x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
82
+ y2: "0",
83
+ style: STYLE
84
+ }), /*#__PURE__*/React.createElement("polygon", {
85
+ points: "1, 0, 4.5, -2, 4.5, 2 ",
86
+ style: STYLE
87
+ }), /*#__PURE__*/React.createElement("line", {
88
+ x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
89
+ y1: "0",
90
+ x2: length,
91
+ y2: "0",
92
+ style: STYLE
93
+ }), /*#__PURE__*/React.createElement("polygon", {
94
+ points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
95
+ style: STYLE
96
+ })));
111
97
  }
112
98
  RulerDist.propTypes = {
113
99
  length: PropTypes.number.isRequired,
@@ -835,11 +835,15 @@ export default function Viewer2D(_ref, _ref2) {
835
835
  var event = viewerEvent.originalEvent;
836
836
  var parent = document.querySelector('#kitchen-simulator-container');
837
837
  var targetRect = event.target.getBoundingClientRect();
838
- var parentRect = parent.getBoundingClientRect();
839
- var left = targetRect.left - parentRect.left;
840
- var top = targetRect.top - parentRect.top;
841
- left = left - (200 - targetRect.width) / 2;
842
- top = top - (50 - targetRect.height) / 2;
838
+ var left = targetRect.left;
839
+ var top = targetRect.top;
840
+ if (!isEmpty(parent)) {
841
+ var parentRect = parent.getBoundingClientRect();
842
+ left = targetRect.left - parentRect.left;
843
+ top = targetRect.top - parentRect.top;
844
+ left = left - (200 - targetRect.width) / 2;
845
+ top = top - (50 - targetRect.height) / 2;
846
+ }
843
847
  if (!mode.includes('ING')) {
844
848
  setToolbar('');
845
849
  }
@@ -12,7 +12,7 @@ import { disposeObject } from "./three-memory-cleaner";
12
12
  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";
13
13
  import { GeometryUtils, IDBroker, MoldingUtils } from "../../utils/export";
14
14
  import { convert } from "../../utils/convert-units-lite";
15
- import { verticesDistance } from "../../utils/geometry";
15
+ import { calcDistancesFromItemToWalls, verticesDistance } from "../../utils/geometry";
16
16
  import * as GeomUtils from "../../catalog/utils/geom-utils";
17
17
  import { loadTexture } from "../../catalog/utils/item-loader";
18
18
  import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
@@ -479,19 +479,19 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
479
479
  if (modifiedPath[keyIndex] == 'rotation') {
480
480
  item3D.rotation.set(0, value * Math.PI / 180 + Math.PI, 0);
481
481
  setTimeout(function () {
482
- getDistances(layer);
482
+ getDistances(layer, item);
483
483
  }, 50);
484
484
  removeSelItemMesh(tmpMoldings, item, planData, mode);
485
485
  } else if (modifiedPath[keyIndex] == 'x') {
486
486
  item3D.position.x = value;
487
487
  setTimeout(function () {
488
- getDistances(layer);
488
+ getDistances(layer, item);
489
489
  }, 50);
490
490
  removeSelItemMesh(tmpMoldings, item, planData, mode);
491
491
  } else if (modifiedPath[keyIndex] == 'y') {
492
492
  item3D.position.z = -value;
493
493
  setTimeout(function () {
494
- getDistances(layer);
494
+ getDistances(layer, item);
495
495
  }, 50);
496
496
  removeSelItemMesh(tmpMoldings, item, planData, mode);
497
497
  } else if (modifiedPath[keyIndex] == 'selected') {
@@ -717,7 +717,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
717
717
  return actions.itemsActions.selectItem(layer.id, modifiedPath[4]);
718
718
  });
719
719
  setTimeout(function () {
720
- getDistances(layer);
720
+ getDistances(layer, item);
721
721
  }, 100);
722
722
  }
723
723
  } else if (modifiedPath[keyIndex] == 'length') {
@@ -845,7 +845,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
845
845
  removeItemWithoutItem(planData, layer.id, modifiedPath[4]);
846
846
  promises.push(addItem(sceneData, planData, layer, modifiedPath[4], catalog, actions.itemsActions, mode, null, rItem));
847
847
  setTimeout(function () {
848
- getDistances(layer);
848
+ getDistances(layer, item);
849
849
  }, 100);
850
850
  }
851
851
  break;
@@ -891,7 +891,25 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
891
891
  promise: p1
892
892
  };
893
893
  }
894
- export function getDistances(layer, isCalcWall) {
894
+ export function getDistances(layer, curItem, isCalcWall) {
895
+ // matching fvLine distance with OP
896
+ var pointArray = calcDistancesFromItemToWalls(curItem, layer).PointArray;
897
+ if ((pointArray === null || pointArray === void 0 ? void 0 : pointArray.length) > 0) {
898
+ var _loop2 = function _loop2() {
899
+ var direction = i === 0 ? 90 : i === 1 ? -90 : i === 2 ? 180 : 0;
900
+ if (fVLine[i].userData) {
901
+ var _pointArray$filter$;
902
+ var opDist = (_pointArray$filter$ = pointArray.filter(function (v) {
903
+ return v[1] === direction;
904
+ })[0]) !== null && _pointArray$filter$ !== void 0 ? _pointArray$filter$ : fVLine[i].userData.distance;
905
+ fVLine[i].userData.opDist = opDist[0];
906
+ }
907
+ };
908
+ for (var i = 0; i < ((_fVLine = fVLine) === null || _fVLine === void 0 ? void 0 : _fVLine.length); i++) {
909
+ var _fVLine;
910
+ _loop2();
911
+ }
912
+ }
895
913
  fVLine.forEach(function (line, index) {
896
914
  getLineDistance(line, layer, isEmpty(isCalcWall) ? false : isCalcWall, index);
897
915
  });
@@ -1809,7 +1827,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
1809
1827
  layer.lines.forEach(function (data) {
1810
1828
  lines.push(data);
1811
1829
  });
1812
- var _loop2 = function _loop2() {
1830
+ var _loop3 = function _loop3() {
1813
1831
  var data = lines[i];
1814
1832
  var realVec = [];
1815
1833
  data.vertices.forEach(function (vec) {
@@ -1822,7 +1840,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
1822
1840
  }
1823
1841
  };
1824
1842
  for (var i = 0; i < lines.length; i++) {
1825
- if (_loop2()) break;
1843
+ if (_loop3()) break;
1826
1844
  }
1827
1845
  ceil.translateZ(convert(layer.ceilHeight).from(layer.unit).to(UNIT_CENTIMETER));
1828
1846
  pivot.name = 'pivot';
@@ -1934,7 +1952,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
1934
1952
  if (child.type === 'Line' && child.geometry.attributes !== undefined) fVLine.push(child);
1935
1953
  });
1936
1954
  setTimeout(function () {
1937
- getDistances();
1955
+ getDistances(layer, item);
1938
1956
  }, 50);
1939
1957
  }
1940
1958
  applyOpacity(pivot, opacity);
@@ -2049,7 +2067,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
2049
2067
  return itemsActions.selectItem(layer.id, item.id);
2050
2068
  });
2051
2069
  setTimeout(function () {
2052
- return getDistances(layer);
2070
+ return getDistances(layer, item);
2053
2071
  }, 100);
2054
2072
  if (!sceneData.loadFlag && scene_mode == MODE_DRAWING_ITEM_3D) {
2055
2073
  itemsActions.endLoading();
@@ -3387,7 +3405,7 @@ export function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3387
3405
  if (isEmpty(filteredNewMGList)) {
3388
3406
  return true;
3389
3407
  }
3390
- var _loop3 = function _loop3() {
3408
+ var _loop4 = function _loop4() {
3391
3409
  var newMG = filteredNewMGList[k];
3392
3410
  if (oldMG.items.some(function (it) {
3393
3411
  return it.id === selItem.id;
@@ -3440,7 +3458,7 @@ export function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3440
3458
  },
3441
3459
  _ret;
3442
3460
  for (var k = 0; k < filteredNewMGList.length; k++) {
3443
- _ret = _loop3();
3461
+ _ret = _loop4();
3444
3462
  if (_ret) return _ret.v;
3445
3463
  }
3446
3464
  return true;
@@ -816,6 +816,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
816
816
  this.snap = function (obj, layer) {
817
817
  // snap operation
818
818
  var target = obj.userData.target;
819
+ if (isEmpty(target)) return;
819
820
  for (; target.parent != null;) {
820
821
  if (target.name == 'pivot') break;
821
822
  target = target.parent;
@@ -1361,10 +1362,12 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1361
1362
  }
1362
1363
  };
1363
1364
  this.mouseUpEvent = function (event) {
1365
+ var _selectedObject;
1364
1366
  var internalType = ''; // internalEvent type - select/drag/draw
1365
1367
  var selectedElement; // internalEvent data
1366
1368
  firstMove = 0;
1367
1369
  var altitude = 0;
1370
+ var curLayer = _this2.props.state.scene.getIn(['layers', (_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.layerID]);
1368
1371
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
1369
1372
  var properties = allItemRect.cur.itemInfo.properties;
1370
1373
  altitude = properties.getIn(['altitude', '_length']);
@@ -1385,7 +1388,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1385
1388
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
1386
1389
  } else {
1387
1390
  removeSnapBox();
1388
- var polygon = GeometryUtils.getPoylgonPoints(layer);
1391
+ var polygon = GeometryUtils.getPoylgonPoints(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1389
1392
  // if cursor is outside of room
1390
1393
  if (polygon.length > 0 && !GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
1391
1394
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
@@ -1479,8 +1482,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1479
1482
  }
1480
1483
  gridMatrix.copy(gridPlane.matrixWorld).invert();
1481
1484
  var addItemToolObj = function addItemToolObj() {
1482
- var _planData$sceneGraph, _selectedObject, _intersects$_i;
1483
- var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.itemID];
1485
+ var _planData$sceneGraph, _selectedObject2, _intersects$_i;
1486
+ var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.itemID];
1484
1487
  if (isUndefined(selectedItem)) return;
1485
1488
  selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1486
1489
  var itemPos = selectedItem.position.clone();
@@ -1513,8 +1516,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1513
1516
  }
1514
1517
  isSelected = true;
1515
1518
  setTimeout(function () {
1516
- getDistances(layer);
1519
+ var _curLayer$id;
1517
1520
  addItemToolObj();
1521
+ getDistances(curLayer !== null && curLayer !== void 0 ? curLayer : layer, selectedElement);
1518
1522
  _this2.setState({
1519
1523
  toolObj: toolObj
1520
1524
  });
@@ -1524,8 +1528,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1524
1528
  // pointArray.push([fVLine[1].userData.distance, -90]);
1525
1529
  // pointArray.push([fVLine[2].userData.distance, 180]);
1526
1530
  // pointArray.push([fVLine[3].userData.distance, 0]);
1527
- pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
1528
- actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
1531
+ pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, curLayer !== null && curLayer !== void 0 ? curLayer : layer).PointArray;
1532
+ actions.itemsActions.storeDistArray((_curLayer$id = curLayer === null || curLayer === void 0 ? void 0 : curLayer.id) !== null && _curLayer$id !== void 0 ? _curLayer$id : layer.id, selectedObject.itemID, pointArray);
1529
1533
  internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
1530
1534
  sendInternalEvent(internalType, selectedElement, pointArray);
1531
1535
  });
@@ -1577,11 +1581,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1577
1581
  bRotate = false;
1578
1582
  bMoveUP = false;
1579
1583
  if (isSelected) {
1580
- prepareSnap(layer);
1584
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1581
1585
  selectedObj = allItemRect.cur;
1582
1586
  }
1583
1587
  } else {
1584
- var _planData$sceneGraph2, _selectedObject2, _selectedObject3;
1588
+ var _planData$sceneGraph2, _selectedObject3, _selectedObject4;
1585
1589
  visibleTransformBox(false);
1586
1590
  var alti = 0;
1587
1591
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1591,7 +1595,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1591
1595
  alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
1592
1596
  }
1593
1597
  getPoint(event, alti);
1594
- var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.itemID];
1598
+ var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject4 = selectedObject) === null || _selectedObject4 === void 0 ? void 0 : _selectedObject4.itemID];
1595
1599
  if (isSelected && !isEmpty(_selectedItem)) addItemToolObj();
1596
1600
  if (bRotate) {
1597
1601
  _this2.setState({
@@ -1629,7 +1633,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
1629
1633
  removeSnapBox();
1630
1634
  actions.sceneActions.updateMovingState(true);
1631
1635
  if (isSelected === true) {
1632
- prepareSnap(layer);
1636
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1633
1637
  selectedObj = allItemRect.cur;
1634
1638
  }
1635
1639
  }
@@ -2028,8 +2032,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2028
2032
  // handle snapBox, distArray, backsplash
2029
2033
  this.handleAfterMovingItem = function () {
2030
2034
  var layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
2035
+ var item = layer.getIn(['items', selectedObject.itemID]);
2031
2036
  var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
2032
- getDistances(layer);
2037
+ getDistances(layer, item);
2033
2038
  var pointArray = [],
2034
2039
  cnt = 0;
2035
2040
  pointArray.push([fVLine[0].userData.distance, 90]);
@@ -2068,7 +2073,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
2068
2073
  if (minDis < snapDelta && !snapFlag) {
2069
2074
  _this2.snap(snapObj, layer);
2070
2075
  snapFlag = true;
2071
- getDistances(layer);
2076
+ getDistances(layer, item);
2072
2077
  var _i13 = 0;
2073
2078
  for (_i13 = 0; _i13 < fVLine.length; _i13++) {
2074
2079
  if (fVLine[_i13].userData.distance < snapDelta) {
@@ -1234,7 +1234,7 @@ export function handleExternalEvent(_x10) {
1234
1234
  function _handleExternalEvent() {
1235
1235
  _handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee0(props) {
1236
1236
  var _evt$payload3, _evt$payload4;
1237
- var evt, state, layerId, layer, _evt$payload, cdsItems, itemKeys, _loop6, i, newScene, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _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;
1237
+ 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, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _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;
1238
1238
  return _regeneratorRuntime.wrap(function (_context11) {
1239
1239
  while (1) switch (_context11.prev = _context11.next) {
1240
1240
  case 0:
@@ -1302,10 +1302,10 @@ function _handleExternalEvent() {
1302
1302
  break;
1303
1303
  case 5:
1304
1304
  newScene = new Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
1305
- state = new State({
1306
- scene: newScene.toJS()
1307
- });
1308
- // request item catalog data to host app
1305
+ tempState = new State({
1306
+ scene: newScene.toJS(),
1307
+ catalog: (_state$catalog = state.catalog) === null || _state$catalog === void 0 ? void 0 : _state$catalog.toJS()
1308
+ }); // request item catalog data to host app
1309
1309
  if (cdsItems.length > 0) {
1310
1310
  (_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
1311
1311
  type: INTERNAL_EVENT_ITEMS_CATALOG,
@@ -1326,7 +1326,7 @@ function _handleExternalEvent() {
1326
1326
  break;
1327
1327
  }
1328
1328
  _context9.next = 2;
1329
- return addItemToCatalog(rt[_i], state, props.catalog, props.projectActions);
1329
+ return addItemToCatalog(rt[_i], tempState, props.catalog, props.projectActions);
1330
1330
  case 2:
1331
1331
  _i++;
1332
1332
  _context9.next = 1;
@@ -305,6 +305,7 @@ export function getLinesOfItem(item, allLineRects, catalog) {
305
305
  return lines;
306
306
  }
307
307
  export function getLinesOfItem2(item, allLineRects, catalog) {
308
+ var _lines;
308
309
  var lines = [];
309
310
  var outline = null;
310
311
  var element = catalog.elements[item.get('type')];
@@ -317,8 +318,9 @@ export function getLinesOfItem2(item, allLineRects, catalog) {
317
318
  var hUnit = item.properties.get('depth').get('_unit') || 'cm';
318
319
  newDepth = convert(newDepth).from(hUnit).to('cm');
319
320
  if (item) {
321
+ var _element;
320
322
  // Get Outline Data of Selected Item
321
- outline = element.info.outline;
323
+ outline = (_element = element) === null || _element === void 0 ? void 0 : _element.info.outline;
322
324
  if (outline) {
323
325
  // Extract Points from `outline`
324
326
  var outlinePaths = outline.paths;
@@ -359,7 +361,7 @@ export function getLinesOfItem2(item, allLineRects, catalog) {
359
361
  }
360
362
  }
361
363
  }
362
- lines = lines.filter(function (line) {
364
+ lines = (_lines = lines) === null || _lines === void 0 ? void 0 : _lines.filter(function (line) {
363
365
  return !GeometryUtils.isSnappedLine({
364
366
  rect: [{
365
367
  x: 0,
@@ -0,0 +1,58 @@
1
+ import { convert } from "../utils/convert-units-lite.js";
2
+ import { UNIT_CENTIMETER, UNIT_INCH, UNIT_MILLIMETER } from "../constants";
3
+
4
+ // Below this length, the measurement LINE is hidden
5
+ var MIN_LENGTH_TO_SHOW_RULER_LINE_INCH = 13;
6
+
7
+ // Below this length, the measurement VALUE (text) is hidden
8
+ var MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH = 5;
9
+ function formatDistance(value, fixed) {
10
+ // format with fixed decimals first
11
+ var text = value.toFixed(fixed);
12
+
13
+ // remove trailing zeros AFTER decimal, then remove trailing dot if needed
14
+ // examples:
15
+ // 2.00 -> 2
16
+ // 2.50 -> 2.5
17
+ // 200.00 -> 200
18
+ text = text.replace(/\.?0+$/, '');
19
+ return text;
20
+ }
21
+ function getUnitString(unit) {
22
+ if (unit === 'cm' || unit === 'mm') return '';
23
+ if (unit === 'in') return '"';
24
+ return unit;
25
+ }
26
+ export function getRulerDisplayData(_ref) {
27
+ var length = _ref.length,
28
+ unit = _ref.unit,
29
+ rulerUnit = _ref.rulerUnit,
30
+ layerUnit = _ref.layerUnit,
31
+ _ref$charWidth = _ref.charWidth,
32
+ charWidth = _ref$charWidth === void 0 ? 8 : _ref$charWidth;
33
+ // 7.62 cm -> ruLength 2.99 in
34
+ var ruLength = convert(length).from(unit).to(rulerUnit);
35
+ var fixedLength = layerUnit === UNIT_MILLIMETER ? 0 : layerUnit === UNIT_CENTIMETER ? 1 : 2;
36
+
37
+ // 2.99 in -> valueInLayerUnit 2.99 in
38
+ var valueInLayerUnit = convert(ruLength).from(rulerUnit).to(layerUnit);
39
+
40
+ // 2.99 -> "3"
41
+ var distanceText = formatDistance(valueInLayerUnit, fixedLength);
42
+ var unitStr = getUnitString(layerUnit);
43
+ var textCount = distanceText.length + unitStr.length;
44
+ // textLength = (3 + ") * 8 = 16
45
+ var textLength = textCount * charWidth;
46
+
47
+ // lengthInInch = 7.62 cm -> 2.99 inch
48
+ var lengthInInch = convert(length).from(unit).to(UNIT_INCH);
49
+ var bShowText = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH && length - textLength + 24 > 0;
50
+ var bShowLine = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_LINE_INCH && length - textLength - 8 > 0;
51
+ return {
52
+ distanceText: distanceText,
53
+ unitStr: unitStr,
54
+ textLength: textLength,
55
+ bShowText: bShowText,
56
+ bShowLine: bShowLine
57
+ };
58
+ }
@@ -27,7 +27,7 @@ var STYLE_LINE = {
27
27
  // strokeWidth:1
28
28
  };
29
29
  var STYLE_INTERIOR_LINE = {
30
- strokeWidth: 2,
30
+ strokeWidth: 4,
31
31
  stroke: SharedStyle.INTERIOR_LINE.unselected
32
32
  };
33
33
  var STYLE_INTERIOR_LINE_SELECTED = {
@@ -574,7 +574,7 @@ var Layer = exports["default"] = /*#__PURE__*/function () {
574
574
  return v.id !== vertexID && _export2.GeometryUtils.samePoints(vertex, v) // &&
575
575
  //!v.lines.contains( vertexID ) &&
576
576
  //!v.areas.contains( vertexID )
577
- ;
577
+ ;
578
578
  });
579
579
  if (doubleVertices.isEmpty()) return {
580
580
  updatedState: state
@@ -179,6 +179,8 @@ var Project = exports["default"] = /*#__PURE__*/function () {
179
179
  // Matching state.doorStyle with layer.doorStyle
180
180
  if (state.getIn(['scene', 'layers', layerID, 'doorStyle'])) {
181
181
  doorStyle = state.getIn(['scene', 'layers', layerID, 'doorStyle']);
182
+ } else if (!(0, _helper.isEmpty)(doorStyle)) {
183
+ state = state.setIn(['scene', 'layers', layerID, 'doorStyle'], doorStyle);
182
184
  }
183
185
  state = state.merge({
184
186
  doorStyle: doorStyle,
@@ -45,28 +45,28 @@ var STYLE_ROOM_SHAPE = exports.STYLE_ROOM_SHAPE = {
45
45
  var STYLE_DASH = {
46
46
  stroke: _constants.DASH_LINE_COLOR,
47
47
  strokeDasharray: '4 4',
48
- strokeWidth: '2px',
48
+ strokeWidth: '1px',
49
49
  strokeLinecap: 'round'
50
50
  };
51
51
  var STYLE_ROOM_ELEMENT = {
52
52
  fill: _constants.ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
53
53
  stroke: _constants.ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
54
- strokeWidth: '2px'
54
+ strokeWidth: '1.5px'
55
55
  };
56
56
  var STYLE_BASE_ITEM = {
57
57
  fill: _constants.BASE_ITEM_MEASUREMENT_LINE_COLOR,
58
58
  stroke: _constants.BASE_ITEM_MEASUREMENT_LINE_COLOR,
59
- strokeWidth: '2px'
59
+ strokeWidth: '1.5px'
60
60
  };
61
61
  var STYLE_WALL_ITEM = {
62
62
  fill: _constants.WALL_ITEM_MEASUREMENT_LINE_COLOR,
63
63
  stroke: _constants.WALL_ITEM_MEASUREMENT_LINE_COLOR,
64
- strokeWidth: '2px'
64
+ strokeWidth: '1.5px'
65
65
  };
66
66
  var STYLE_DISTANCE = {
67
67
  fill: _constants.DISTANCE_MEASUREMENT_LINE_COLOR,
68
68
  stroke: _constants.DISTANCE_MEASUREMENT_LINE_COLOR,
69
- strokeWidth: '2px'
69
+ strokeWidth: '1.5px'
70
70
  };
71
71
  var selectStyle = function selectStyle(element, style) {
72
72
  return element.iFlag ? style : STYLE_DISTANCE;
@@ -7,14 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = Ruler;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _convertUnitsLite = require("../../utils/convert-units-lite");
11
10
  var _idBroker = _interopRequireDefault(require("../../utils/id-broker"));
12
11
  var _constants = require("../../constants");
13
12
  var _line = require("./line");
14
- var STYLE = {
15
- stroke: _constants.TEXT_COLOR_NEUTRAL_7,
16
- strokeWidth: '1px'
17
- };
13
+ var _ruler = require("../../utils/ruler");
18
14
  var BACKGROUNDSTYLE = {
19
15
  fill: 'transparent',
20
16
  fillOpacity: 0.8
@@ -38,13 +34,20 @@ function Ruler(_ref) {
38
34
  rulerUnit = _ref.rulerUnit,
39
35
  transform = _ref.transform,
40
36
  style = _ref.style;
41
- var ruLength = (0, _convertUnitsLite.convert)(length).from(unit).to(rulerUnit);
42
- var fixedLength = layer.unit === _constants.UNIT_METER || layer.unit === _constants.UNIT_FOOT ? 2 : 0;
43
- var distanceText = (Math.round((0, _convertUnitsLite.convert)(ruLength).from(rulerUnit).to(layer.unit) * 100) / 100).toFixed(fixedLength);
44
- var textLength = (distanceText.length + layer.unit.length) * 9;
37
+ var _getRulerDisplayData = (0, _ruler.getRulerDisplayData)({
38
+ length: length,
39
+ unit: unit,
40
+ rulerUnit: rulerUnit,
41
+ layerUnit: layer.unit
42
+ }),
43
+ distanceText = _getRulerDisplayData.distanceText,
44
+ unitStr = _getRulerDisplayData.unitStr,
45
+ textLength = _getRulerDisplayData.textLength,
46
+ bShowText = _getRulerDisplayData.bShowText,
47
+ bShowLine = _getRulerDisplayData.bShowLine;
45
48
  return /*#__PURE__*/_react["default"].createElement("g", {
46
49
  transform: transform
47
- }, /*#__PURE__*/_react["default"].createElement("g", {
50
+ }, bShowText && /*#__PURE__*/_react["default"].createElement("g", {
48
51
  id: "ruler"
49
52
  }, /*#__PURE__*/_react["default"].createElement("rect", {
50
53
  id: "ruler_rect_".concat(_idBroker["default"].acquireID()),
@@ -61,7 +64,7 @@ function Ruler(_ref) {
61
64
  transform: "scale(1, -1)",
62
65
  style: STYLE_TEXT,
63
66
  fill: _constants.TEXT_COLOR_NEUTRAL_7
64
- }, distanceText, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/_react["default"].createElement("line", {
67
+ }, distanceText, unitStr)), bShowLine && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("line", {
65
68
  x1: style === _line.STYLE_ROOM_SHAPE ? 0 : 4,
66
69
  y1: "0",
67
70
  x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
@@ -79,7 +82,7 @@ function Ruler(_ref) {
79
82
  }), /*#__PURE__*/_react["default"].createElement("polygon", {
80
83
  points: "".concat(length - 3, ", 0, ").concat(length - 6.5, ", 2, ").concat(length - 6.5, ", -2"),
81
84
  style: style
82
- })));
85
+ }))));
83
86
  }
84
87
  Ruler.propTypes = {
85
88
  length: _propTypes["default"].number.isRequired,
@@ -7,13 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = RulerDist;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _convertUnitsLite = require("../../utils/convert-units-lite");
11
- var _constants = require("../../constants");
12
- var ARROW_STYLE = {
13
- stroke: '#1183B7',
14
- strokeWidth: '2px',
15
- strokeLinecap: 'round'
16
- };
10
+ var _ruler = require("../../utils/ruler");
17
11
  var STYLE = {
18
12
  stroke: '#455A64',
19
13
  fill: '#455A64',
@@ -39,10 +33,17 @@ function RulerDist(_ref) {
39
33
  transform = _ref.transform,
40
34
  angle = _ref.angle,
41
35
  rotation = _ref.rotation;
42
- var ruLength = (0, _convertUnitsLite.convert)(length).from(unit).to(rulerUnit);
43
- var fixedLength = layer.unit === _constants.UNIT_METER || layer.unit === _constants.UNIT_FOOT ? 2 : 0;
44
- var distanceText = (Math.round((0, _convertUnitsLite.convert)(ruLength).from(rulerUnit).to(layer.unit) * 100) / 100).toFixed(fixedLength);
45
- var textLength = (distanceText.length + layer.unit.length) * 8;
36
+ var _getRulerDisplayData = (0, _ruler.getRulerDisplayData)({
37
+ length: length,
38
+ unit: unit,
39
+ rulerUnit: rulerUnit,
40
+ layerUnit: layer.unit
41
+ }),
42
+ distanceText = _getRulerDisplayData.distanceText,
43
+ unitStr = _getRulerDisplayData.unitStr,
44
+ textLength = _getRulerDisplayData.textLength,
45
+ bShowText = _getRulerDisplayData.bShowText,
46
+ bShowLine = _getRulerDisplayData.bShowLine;
46
47
  var textangle = angle + 90;
47
48
  var textRotation = 1;
48
49
  var ay = 2;
@@ -74,47 +75,32 @@ function RulerDist(_ref) {
74
75
  textRotation = 180;
75
76
  ay = 5;
76
77
  }
77
- if (ruLength > 0) {
78
- if ((0, _convertUnitsLite.convert)(ruLength).from(rulerUnit).to('in') < 3) {
79
- return /*#__PURE__*/_react["default"].createElement("g", {
80
- transform: transform
81
- }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("text", {
82
- x: "0",
83
- y: "0",
84
- transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
85
- style: STYLE_TEXT
86
- }, distanceText, layer.unit === 'in' ? '"' : layer.unit)));
87
- } else {
88
- return /*#__PURE__*/_react["default"].createElement("g", {
89
- transform: transform
90
- }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("text", {
91
- x: "0",
92
- y: "0",
93
- transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
94
- style: STYLE_TEXT
95
- }, distanceText, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/_react["default"].createElement("line", {
96
- x1: "2",
97
- y1: "0",
98
- x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
99
- y2: "0",
100
- style: STYLE
101
- }), /*#__PURE__*/_react["default"].createElement("polygon", {
102
- points: "1, 0, 4.5, -2, 4.5, 2 ",
103
- style: STYLE
104
- }), /*#__PURE__*/_react["default"].createElement("line", {
105
- x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
106
- y1: "0",
107
- x2: length,
108
- y2: "0",
109
- style: STYLE
110
- }), /*#__PURE__*/_react["default"].createElement("polygon", {
111
- points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
112
- style: STYLE
113
- }));
114
- }
115
- } else {
116
- return null;
117
- }
78
+ return /*#__PURE__*/_react["default"].createElement("g", {
79
+ transform: transform
80
+ }, bShowText && /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("text", {
81
+ x: "0",
82
+ y: "0",
83
+ transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
84
+ style: STYLE_TEXT
85
+ }, distanceText, unitStr)), bShowLine && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("line", {
86
+ x1: "2",
87
+ y1: "0",
88
+ x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
89
+ y2: "0",
90
+ style: STYLE
91
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
92
+ points: "1, 0, 4.5, -2, 4.5, 2 ",
93
+ style: STYLE
94
+ }), /*#__PURE__*/_react["default"].createElement("line", {
95
+ x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
96
+ y1: "0",
97
+ x2: length,
98
+ y2: "0",
99
+ style: STYLE
100
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
101
+ points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
102
+ style: STYLE
103
+ })));
118
104
  }
119
105
  RulerDist.propTypes = {
120
106
  length: _propTypes["default"].number.isRequired,
@@ -844,11 +844,15 @@ function Viewer2D(_ref, _ref2) {
844
844
  var event = viewerEvent.originalEvent;
845
845
  var parent = document.querySelector('#kitchen-simulator-container');
846
846
  var targetRect = event.target.getBoundingClientRect();
847
- var parentRect = parent.getBoundingClientRect();
848
- var left = targetRect.left - parentRect.left;
849
- var top = targetRect.top - parentRect.top;
850
- left = left - (200 - targetRect.width) / 2;
851
- top = top - (50 - targetRect.height) / 2;
847
+ var left = targetRect.left;
848
+ var top = targetRect.top;
849
+ if (!(0, _helper.isEmpty)(parent)) {
850
+ var parentRect = parent.getBoundingClientRect();
851
+ left = targetRect.left - parentRect.left;
852
+ top = targetRect.top - parentRect.top;
853
+ left = left - (200 - targetRect.width) / 2;
854
+ top = top - (50 - targetRect.height) / 2;
855
+ }
852
856
  if (!mode.includes('ING')) {
853
857
  setToolbar('');
854
858
  }
@@ -514,19 +514,19 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
514
514
  if (modifiedPath[keyIndex] == 'rotation') {
515
515
  item3D.rotation.set(0, value * Math.PI / 180 + Math.PI, 0);
516
516
  setTimeout(function () {
517
- getDistances(layer);
517
+ getDistances(layer, item);
518
518
  }, 50);
519
519
  removeSelItemMesh(tmpMoldings, item, planData, mode);
520
520
  } else if (modifiedPath[keyIndex] == 'x') {
521
521
  item3D.position.x = value;
522
522
  setTimeout(function () {
523
- getDistances(layer);
523
+ getDistances(layer, item);
524
524
  }, 50);
525
525
  removeSelItemMesh(tmpMoldings, item, planData, mode);
526
526
  } else if (modifiedPath[keyIndex] == 'y') {
527
527
  item3D.position.z = -value;
528
528
  setTimeout(function () {
529
- getDistances(layer);
529
+ getDistances(layer, item);
530
530
  }, 50);
531
531
  removeSelItemMesh(tmpMoldings, item, planData, mode);
532
532
  } else if (modifiedPath[keyIndex] == 'selected') {
@@ -752,7 +752,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
752
752
  return actions.itemsActions.selectItem(layer.id, modifiedPath[4]);
753
753
  });
754
754
  setTimeout(function () {
755
- getDistances(layer);
755
+ getDistances(layer, item);
756
756
  }, 100);
757
757
  }
758
758
  } else if (modifiedPath[keyIndex] == 'length') {
@@ -880,7 +880,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
880
880
  removeItemWithoutItem(planData, layer.id, modifiedPath[4]);
881
881
  promises.push(addItem(sceneData, planData, layer, modifiedPath[4], catalog, actions.itemsActions, mode, null, rItem));
882
882
  setTimeout(function () {
883
- getDistances(layer);
883
+ getDistances(layer, item);
884
884
  }, 100);
885
885
  }
886
886
  break;
@@ -926,7 +926,25 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
926
926
  promise: p1
927
927
  };
928
928
  }
929
- function getDistances(layer, isCalcWall) {
929
+ function getDistances(layer, curItem, isCalcWall) {
930
+ // matching fvLine distance with OP
931
+ var pointArray = (0, _geometry2.calcDistancesFromItemToWalls)(curItem, layer).PointArray;
932
+ if ((pointArray === null || pointArray === void 0 ? void 0 : pointArray.length) > 0) {
933
+ var _loop2 = function _loop2() {
934
+ var direction = i === 0 ? 90 : i === 1 ? -90 : i === 2 ? 180 : 0;
935
+ if (fVLine[i].userData) {
936
+ var _pointArray$filter$;
937
+ var opDist = (_pointArray$filter$ = pointArray.filter(function (v) {
938
+ return v[1] === direction;
939
+ })[0]) !== null && _pointArray$filter$ !== void 0 ? _pointArray$filter$ : fVLine[i].userData.distance;
940
+ fVLine[i].userData.opDist = opDist[0];
941
+ }
942
+ };
943
+ for (var i = 0; i < ((_fVLine = fVLine) === null || _fVLine === void 0 ? void 0 : _fVLine.length); i++) {
944
+ var _fVLine;
945
+ _loop2();
946
+ }
947
+ }
930
948
  fVLine.forEach(function (line, index) {
931
949
  getLineDistance(line, layer, (0, _helper.isEmpty)(isCalcWall) ? false : isCalcWall, index);
932
950
  });
@@ -1844,7 +1862,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
1844
1862
  layer.lines.forEach(function (data) {
1845
1863
  lines.push(data);
1846
1864
  });
1847
- var _loop2 = function _loop2() {
1865
+ var _loop3 = function _loop3() {
1848
1866
  var data = lines[i];
1849
1867
  var realVec = [];
1850
1868
  data.vertices.forEach(function (vec) {
@@ -1857,7 +1875,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
1857
1875
  }
1858
1876
  };
1859
1877
  for (var i = 0; i < lines.length; i++) {
1860
- if (_loop2()) break;
1878
+ if (_loop3()) break;
1861
1879
  }
1862
1880
  ceil.translateZ((0, _convertUnitsLite.convert)(layer.ceilHeight).from(layer.unit).to(_constants.UNIT_CENTIMETER));
1863
1881
  pivot.name = 'pivot';
@@ -1969,7 +1987,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
1969
1987
  if (child.type === 'Line' && child.geometry.attributes !== undefined) fVLine.push(child);
1970
1988
  });
1971
1989
  setTimeout(function () {
1972
- getDistances();
1990
+ getDistances(layer, item);
1973
1991
  }, 50);
1974
1992
  }
1975
1993
  applyOpacity(pivot, opacity);
@@ -2084,7 +2102,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
2084
2102
  return itemsActions.selectItem(layer.id, item.id);
2085
2103
  });
2086
2104
  setTimeout(function () {
2087
- return getDistances(layer);
2105
+ return getDistances(layer, item);
2088
2106
  }, 100);
2089
2107
  if (!sceneData.loadFlag && scene_mode == _constants.MODE_DRAWING_ITEM_3D) {
2090
2108
  itemsActions.endLoading();
@@ -3422,7 +3440,7 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3422
3440
  if ((0, _helper.isEmpty)(filteredNewMGList)) {
3423
3441
  return true;
3424
3442
  }
3425
- var _loop3 = function _loop3() {
3443
+ var _loop4 = function _loop4() {
3426
3444
  var newMG = filteredNewMGList[k];
3427
3445
  if (oldMG.items.some(function (it) {
3428
3446
  return it.id === selItem.id;
@@ -3475,7 +3493,7 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
3475
3493
  },
3476
3494
  _ret;
3477
3495
  for (var k = 0; k < filteredNewMGList.length; k++) {
3478
- _ret = _loop3();
3496
+ _ret = _loop4();
3479
3497
  if (_ret) return _ret.v;
3480
3498
  }
3481
3499
  return true;
@@ -823,6 +823,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
823
823
  this.snap = function (obj, layer) {
824
824
  // snap operation
825
825
  var target = obj.userData.target;
826
+ if ((0, _helper.isEmpty)(target)) return;
826
827
  for (; target.parent != null;) {
827
828
  if (target.name == 'pivot') break;
828
829
  target = target.parent;
@@ -1368,10 +1369,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1368
1369
  }
1369
1370
  };
1370
1371
  this.mouseUpEvent = function (event) {
1372
+ var _selectedObject;
1371
1373
  var internalType = ''; // internalEvent type - select/drag/draw
1372
1374
  var selectedElement; // internalEvent data
1373
1375
  firstMove = 0;
1374
1376
  var altitude = 0;
1377
+ var curLayer = _this2.props.state.scene.getIn(['layers', (_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.layerID]);
1375
1378
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
1376
1379
  var properties = allItemRect.cur.itemInfo.properties;
1377
1380
  altitude = properties.getIn(['altitude', '_length']);
@@ -1392,7 +1395,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1392
1395
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
1393
1396
  } else {
1394
1397
  removeSnapBox();
1395
- var polygon = _export.GeometryUtils.getPoylgonPoints(layer);
1398
+ var polygon = _export.GeometryUtils.getPoylgonPoints(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1396
1399
  // if cursor is outside of room
1397
1400
  if (polygon.length > 0 && !_export.GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
1398
1401
  actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
@@ -1486,8 +1489,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1486
1489
  }
1487
1490
  gridMatrix.copy(gridPlane.matrixWorld).invert();
1488
1491
  var addItemToolObj = function addItemToolObj() {
1489
- var _planData$sceneGraph, _selectedObject, _intersects$_i;
1490
- var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.itemID];
1492
+ var _planData$sceneGraph, _selectedObject2, _intersects$_i;
1493
+ var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.itemID];
1491
1494
  if ((0, _util.isUndefined)(selectedItem)) return;
1492
1495
  selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
1493
1496
  var itemPos = selectedItem.position.clone();
@@ -1520,8 +1523,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1520
1523
  }
1521
1524
  isSelected = true;
1522
1525
  setTimeout(function () {
1523
- (0, _sceneCreator.getDistances)(layer);
1526
+ var _curLayer$id;
1524
1527
  addItemToolObj();
1528
+ (0, _sceneCreator.getDistances)(curLayer !== null && curLayer !== void 0 ? curLayer : layer, selectedElement);
1525
1529
  _this2.setState({
1526
1530
  toolObj: toolObj
1527
1531
  });
@@ -1531,8 +1535,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1531
1535
  // pointArray.push([fVLine[1].userData.distance, -90]);
1532
1536
  // pointArray.push([fVLine[2].userData.distance, 180]);
1533
1537
  // pointArray.push([fVLine[3].userData.distance, 0]);
1534
- pointArray = _export.GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
1535
- actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
1538
+ pointArray = _export.GeometryUtils.calcDistancesFromItemToWalls(selectedElement, curLayer !== null && curLayer !== void 0 ? curLayer : layer).PointArray;
1539
+ actions.itemsActions.storeDistArray((_curLayer$id = curLayer === null || curLayer === void 0 ? void 0 : curLayer.id) !== null && _curLayer$id !== void 0 ? _curLayer$id : layer.id, selectedObject.itemID, pointArray);
1536
1540
  internalType = internalType ? internalType : _constants.INTERNAL_EVENT_SELECT_ELEMENT;
1537
1541
  sendInternalEvent(internalType, selectedElement, pointArray);
1538
1542
  });
@@ -1584,11 +1588,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1584
1588
  bRotate = false;
1585
1589
  bMoveUP = false;
1586
1590
  if (isSelected) {
1587
- prepareSnap(layer);
1591
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1588
1592
  selectedObj = allItemRect.cur;
1589
1593
  }
1590
1594
  } else {
1591
- var _planData$sceneGraph2, _selectedObject2, _selectedObject3;
1595
+ var _planData$sceneGraph2, _selectedObject3, _selectedObject4;
1592
1596
  (0, _sceneCreator.visibleTransformBox)(false);
1593
1597
  var alti = 0;
1594
1598
  if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
@@ -1598,7 +1602,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1598
1602
  alti = (0, _convertUnitsLite.convert)(alti).from(_unit2).to(_this2.props.state.scene.unit);
1599
1603
  }
1600
1604
  getPoint(event, alti);
1601
- var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.itemID];
1605
+ var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject4 = selectedObject) === null || _selectedObject4 === void 0 ? void 0 : _selectedObject4.itemID];
1602
1606
  if (isSelected && !(0, _helper.isEmpty)(_selectedItem)) addItemToolObj();
1603
1607
  if (bRotate) {
1604
1608
  _this2.setState({
@@ -1636,7 +1640,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
1636
1640
  removeSnapBox();
1637
1641
  actions.sceneActions.updateMovingState(true);
1638
1642
  if (isSelected === true) {
1639
- prepareSnap(layer);
1643
+ prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
1640
1644
  selectedObj = allItemRect.cur;
1641
1645
  }
1642
1646
  }
@@ -2035,8 +2039,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2035
2039
  // handle snapBox, distArray, backsplash
2036
2040
  this.handleAfterMovingItem = function () {
2037
2041
  var layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
2042
+ var item = layer.getIn(['items', selectedObject.itemID]);
2038
2043
  var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
2039
- (0, _sceneCreator.getDistances)(layer);
2044
+ (0, _sceneCreator.getDistances)(layer, item);
2040
2045
  var pointArray = [],
2041
2046
  cnt = 0;
2042
2047
  pointArray.push([_sceneCreator.fVLine[0].userData.distance, 90]);
@@ -2075,7 +2080,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
2075
2080
  if (minDis < snapDelta && !snapFlag) {
2076
2081
  _this2.snap(snapObj, layer);
2077
2082
  snapFlag = true;
2078
- (0, _sceneCreator.getDistances)(layer);
2083
+ (0, _sceneCreator.getDistances)(layer, item);
2079
2084
  var _i13 = 0;
2080
2085
  for (_i13 = 0; _i13 < _sceneCreator.fVLine.length; _i13++) {
2081
2086
  if (_sceneCreator.fVLine[_i13].userData.distance < snapDelta) {
@@ -1242,7 +1242,7 @@ function handleExternalEvent(_x10) {
1242
1242
  function _handleExternalEvent() {
1243
1243
  _handleExternalEvent = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0(props) {
1244
1244
  var _evt$payload3, _evt$payload4;
1245
- var evt, state, layerId, layer, _evt$payload, cdsItems, itemKeys, _loop6, i, newScene, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _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;
1245
+ 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, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _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;
1246
1246
  return _regenerator["default"].wrap(function (_context11) {
1247
1247
  while (1) switch (_context11.prev = _context11.next) {
1248
1248
  case 0:
@@ -1310,10 +1310,10 @@ function _handleExternalEvent() {
1310
1310
  break;
1311
1311
  case 5:
1312
1312
  newScene = new _models.Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
1313
- state = new _models.State({
1314
- scene: newScene.toJS()
1315
- });
1316
- // request item catalog data to host app
1313
+ tempState = new _models.State({
1314
+ scene: newScene.toJS(),
1315
+ catalog: (_state$catalog = state.catalog) === null || _state$catalog === void 0 ? void 0 : _state$catalog.toJS()
1316
+ }); // request item catalog data to host app
1317
1317
  if (cdsItems.length > 0) {
1318
1318
  (_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
1319
1319
  type: _constants.INTERNAL_EVENT_ITEMS_CATALOG,
@@ -1334,7 +1334,7 @@ function _handleExternalEvent() {
1334
1334
  break;
1335
1335
  }
1336
1336
  _context9.next = 2;
1337
- return addItemToCatalog(rt[_i], state, props.catalog, props.projectActions);
1337
+ return addItemToCatalog(rt[_i], tempState, props.catalog, props.projectActions);
1338
1338
  case 2:
1339
1339
  _i++;
1340
1340
  _context9.next = 1;
@@ -334,6 +334,7 @@ function getLinesOfItem(item, allLineRects, catalog) {
334
334
  return lines;
335
335
  }
336
336
  function getLinesOfItem2(item, allLineRects, catalog) {
337
+ var _lines;
337
338
  var lines = [];
338
339
  var outline = null;
339
340
  var element = catalog.elements[item.get('type')];
@@ -346,8 +347,9 @@ function getLinesOfItem2(item, allLineRects, catalog) {
346
347
  var hUnit = item.properties.get('depth').get('_unit') || 'cm';
347
348
  newDepth = (0, _convertUnitsLite.convert)(newDepth).from(hUnit).to('cm');
348
349
  if (item) {
350
+ var _element;
349
351
  // Get Outline Data of Selected Item
350
- outline = element.info.outline;
352
+ outline = (_element = element) === null || _element === void 0 ? void 0 : _element.info.outline;
351
353
  if (outline) {
352
354
  // Extract Points from `outline`
353
355
  var outlinePaths = outline.paths;
@@ -388,7 +390,7 @@ function getLinesOfItem2(item, allLineRects, catalog) {
388
390
  }
389
391
  }
390
392
  }
391
- lines = lines.filter(function (line) {
393
+ lines = (_lines = lines) === null || _lines === void 0 ? void 0 : _lines.filter(function (line) {
392
394
  return !_export.GeometryUtils.isSnappedLine({
393
395
  rect: [{
394
396
  x: 0,
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getRulerDisplayData = getRulerDisplayData;
7
+ var _convertUnitsLite = require("../utils/convert-units-lite.js");
8
+ var _constants = require("../constants");
9
+ // Below this length, the measurement LINE is hidden
10
+ var MIN_LENGTH_TO_SHOW_RULER_LINE_INCH = 13;
11
+
12
+ // Below this length, the measurement VALUE (text) is hidden
13
+ var MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH = 5;
14
+ function formatDistance(value, fixed) {
15
+ // format with fixed decimals first
16
+ var text = value.toFixed(fixed);
17
+
18
+ // remove trailing zeros AFTER decimal, then remove trailing dot if needed
19
+ // examples:
20
+ // 2.00 -> 2
21
+ // 2.50 -> 2.5
22
+ // 200.00 -> 200
23
+ text = text.replace(/\.?0+$/, '');
24
+ return text;
25
+ }
26
+ function getUnitString(unit) {
27
+ if (unit === 'cm' || unit === 'mm') return '';
28
+ if (unit === 'in') return '"';
29
+ return unit;
30
+ }
31
+ function getRulerDisplayData(_ref) {
32
+ var length = _ref.length,
33
+ unit = _ref.unit,
34
+ rulerUnit = _ref.rulerUnit,
35
+ layerUnit = _ref.layerUnit,
36
+ _ref$charWidth = _ref.charWidth,
37
+ charWidth = _ref$charWidth === void 0 ? 8 : _ref$charWidth;
38
+ // 7.62 cm -> ruLength 2.99 in
39
+ var ruLength = (0, _convertUnitsLite.convert)(length).from(unit).to(rulerUnit);
40
+ var fixedLength = layerUnit === _constants.UNIT_MILLIMETER ? 0 : layerUnit === _constants.UNIT_CENTIMETER ? 1 : 2;
41
+
42
+ // 2.99 in -> valueInLayerUnit 2.99 in
43
+ var valueInLayerUnit = (0, _convertUnitsLite.convert)(ruLength).from(rulerUnit).to(layerUnit);
44
+
45
+ // 2.99 -> "3"
46
+ var distanceText = formatDistance(valueInLayerUnit, fixedLength);
47
+ var unitStr = getUnitString(layerUnit);
48
+ var textCount = distanceText.length + unitStr.length;
49
+ // textLength = (3 + ") * 8 = 16
50
+ var textLength = textCount * charWidth;
51
+
52
+ // lengthInInch = 7.62 cm -> 2.99 inch
53
+ var lengthInInch = (0, _convertUnitsLite.convert)(length).from(unit).to(_constants.UNIT_INCH);
54
+ var bShowText = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH && length - textLength + 24 > 0;
55
+ var bShowLine = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_LINE_INCH && length - textLength - 8 > 0;
56
+ return {
57
+ distanceText: distanceText,
58
+ unitStr: unitStr,
59
+ textLength: textLength,
60
+ bShowText: bShowText,
61
+ bShowLine: bShowLine
62
+ };
63
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "4.0.8",
3
+ "version": "4.0.9",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",