kitchen-simulator 4.2.1 → 4.2.3

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.
@@ -939,22 +939,26 @@ export function createMonldingGroup(oldMG, layer, molding, catalog) {
939
939
  return newMG;
940
940
  }
941
941
  export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
942
+ var _layer$items;
942
943
  var moldingData = [];
943
- var items = layer.items.toArray();
944
+ var items = layer === null || layer === void 0 || (_layer$items = layer.items) === null || _layer$items === void 0 ? void 0 : _layer$items.toArray();
944
945
  var allLineRects = GeometryUtils.buildRectFromLines(layer, GeometryUtils.getAllLines(layer));
945
946
 
946
947
  // get all molding line segments
947
948
  var moldingLines = [];
948
- items.forEach(function (item) {
949
+ items === null || items === void 0 || items.forEach(function (item) {
949
950
  if (item.category === ITEM_TYPE.CABINET) {
950
- var _item$molding;
951
+ var _item$properties$get$, _item$properties$get$2, _item$properties$get$3, _item$molding;
951
952
  var MGlines = getLinesOfItem2(item, allLineRects, catalog); // exclude overlayed to wall
953
+ // id & width
954
+ var parentId = item.id;
955
+ var inchWidth = convert(item.properties.get('width').get('_length')).from((_item$properties$get$ = item.properties.get('width').get('_unit')) !== null && _item$properties$get$ !== void 0 ? _item$properties$get$ : 'in').to('in');
952
956
  // z position of molding line
953
957
  var z = item.properties.get('altitude').get('_length');
954
- var zUnit = item.properties.get('altitude').get('_unit') || 'cm';
958
+ var zUnit = (_item$properties$get$2 = item.properties.get('altitude').get('_unit')) !== null && _item$properties$get$2 !== void 0 ? _item$properties$get$2 : 'in';
955
959
  z = convert(z).from(zUnit).to('cm');
956
960
  var h = item.properties.get('height').get('_length');
957
- var hUnit = item.properties.get('height').get('_unit') || 'cm';
961
+ var hUnit = (_item$properties$get$3 = item.properties.get('height').get('_unit')) !== null && _item$properties$get$3 !== void 0 ? _item$properties$get$3 : 'in';
958
962
  h = convert(h).from(hUnit).to('cm');
959
963
  if (!isEmpty(item.molding) && isEnableItemForMolding(layer, item)) {
960
964
  // calc normal molding line
@@ -973,7 +977,9 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
973
977
  molding: _objectSpread({}, molding),
974
978
  doorStyle: item.doorStyle.hasOwnProperty('id') ? item.doorStyle : !isEmpty(item.doorStyle) && item.doorStyle.toJS(),
975
979
  line: line,
976
- z: lineZ
980
+ z: lineZ,
981
+ parentId: parentId,
982
+ inchWidth: inchWidth
977
983
  });
978
984
  });
979
985
  });
@@ -993,7 +999,9 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
993
999
  },
994
1000
  doorStyle: item.doorStyle.hasOwnProperty('id') ? item.doorStyle : !isEmpty(item.doorStyle) && item.doorStyle.toJS(),
995
1001
  line: line,
996
- z: z
1002
+ z: z,
1003
+ parentId: parentId,
1004
+ inchWidth: inchWidth
997
1005
  });
998
1006
  });
999
1007
  }
@@ -1010,14 +1018,14 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1010
1018
  x2: moldingLines[i].line[1].x,
1011
1019
  y2: moldingLines[i].line[1].y
1012
1020
  };
1013
- var _loop1 = function _loop1(j) {
1014
- if (i === j) return 0; // continue
1015
- if (Math.abs(moldingLines[i].z - moldingLines[j].z) > EPSILON) return 0; // continue
1021
+ var _loop1 = function _loop1(_j) {
1022
+ if (i === _j) return 0; // continue
1023
+ if (Math.abs(moldingLines[i].z - moldingLines[_j].z) > EPSILON) return 0; // continue
1016
1024
  var destLine = {
1017
- x1: moldingLines[j].line[0].x,
1018
- y1: moldingLines[j].line[0].y,
1019
- x2: moldingLines[j].line[1].x,
1020
- y2: moldingLines[j].line[1].y
1025
+ x1: moldingLines[_j].line[0].x,
1026
+ y1: moldingLines[_j].line[0].y,
1027
+ x2: moldingLines[_j].line[1].x,
1028
+ y2: moldingLines[_j].line[1].y
1021
1029
  };
1022
1030
  var rst = GeometryUtils.relationshipOfTwoOverlappedLines(srcLine, destLine);
1023
1031
  if (rst.result === OVERLAP_SAME || rst.result === OVERLAP_INCLUDED) {
@@ -1026,7 +1034,7 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1026
1034
  } else if (rst.result === OVERLAP_SOME) {
1027
1035
  removeLineIds.push(i);
1028
1036
  var lineSegs = getTrimmedContourLineSegs(rst.trimmedSegs, moldingLines.filter(function (v, idx) {
1029
- return idx !== i && idx !== j && Math.abs(v.z - moldingLines[i].z) < EPSILON;
1037
+ return idx !== i && idx !== _j && Math.abs(v.z - moldingLines[i].z) < EPSILON;
1030
1038
  }), 0);
1031
1039
  if (lineSegs.length > 0) {
1032
1040
  lineSegs.forEach(function (ls) {
@@ -1034,7 +1042,9 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1034
1042
  molding: _objectSpread({}, moldingLines[i].molding),
1035
1043
  doorStyle: moldingLines[i].doorStyle,
1036
1044
  line: _toConsumableArray(ls),
1037
- z: moldingLines[i].z
1045
+ z: moldingLines[i].z,
1046
+ parentId: moldingLines[i].parentId,
1047
+ inchWidth: moldingLines[i].inchWidth
1038
1048
  });
1039
1049
  });
1040
1050
  }
@@ -1042,8 +1052,8 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1042
1052
  }
1043
1053
  },
1044
1054
  _ret4;
1045
- for (var j = 0; j < moldingLines.length; j++) {
1046
- _ret4 = _loop1(j);
1055
+ for (var _j = 0; _j < moldingLines.length; _j++) {
1056
+ _ret4 = _loop1(_j);
1047
1057
  if (_ret4 === 0) continue;
1048
1058
  if (_ret4 === 1) break;
1049
1059
  }
@@ -1057,12 +1067,32 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1057
1067
  });
1058
1068
  });
1059
1069
  if (newLines.length > 0) moldingLines = [].concat(_toConsumableArray(moldingLines), newLines);
1070
+
1071
+ // filter again for toe kick molding lines
1072
+ // only remain one line per toe kick molding item
1073
+ var duplicatedLineIdxs = [];
1074
+ for (var _i4 = 0; _i4 < moldingLines.length; _i4++) {
1075
+ var _iml$molding;
1076
+ if (duplicatedLineIdxs.includes(_i4)) continue;
1077
+ var iml = moldingLines[_i4];
1078
+ if (((_iml$molding = iml.molding) === null || _iml$molding === void 0 ? void 0 : _iml$molding.name) !== TOE_KICK_MOLDING) continue;
1079
+ for (var j = 0; j < moldingLines.length; j++) {
1080
+ if (_i4 === j) continue;
1081
+ var jml = moldingLines[j];
1082
+ if (jml.parentId === iml.parentId) duplicatedLineIdxs.push(j);
1083
+ }
1084
+ }
1085
+ moldingLines = moldingLines.filter(function (line, idx) {
1086
+ return !duplicatedLineIdxs.some(function (id) {
1087
+ return idx === id;
1088
+ });
1089
+ });
1060
1090
  // console.log('moldingLines: ', moldingLines);
1061
1091
 
1062
1092
  // make molding data with sorting molding & doorStyle
1063
1093
  var _loop0 = function _loop0() {
1064
1094
  var ml = moldingLines[k];
1065
- var mlLength = convert(GeometryUtils.verticesDistance(ml.line[0], ml.line[1])).from('cm').to('in');
1095
+ var mlLength = ml.molding.name === TOE_KICK_MOLDING ? ml.inchWidth : convert(GeometryUtils.verticesDistance(ml.line[0], ml.line[1])).from('cm').to('in');
1066
1096
  var idx = moldingData.findIndex(function (v) {
1067
1097
  var _ml$molding, _v$doorStyle, _ml$doorStyle;
1068
1098
  return (v === null || v === void 0 ? void 0 : v.name) === ((_ml$molding = ml.molding) === null || _ml$molding === void 0 ? void 0 : _ml$molding.name) && ((_v$doorStyle = v.doorStyle) === null || _v$doorStyle === void 0 ? void 0 : _v$doorStyle.id) === ((_ml$doorStyle = ml.doorStyle) === null || _ml$doorStyle === void 0 ? void 0 : _ml$doorStyle.id);
package/es/utils/ruler.js CHANGED
@@ -15,7 +15,7 @@ function formatDistance(value, fixed) {
15
15
  // 2.00 -> 2
16
16
  // 2.50 -> 2.5
17
17
  // 200.00 -> 200
18
- text = text.replace(/\.?0+$/, '');
18
+ text = text.replace(/(\.\d*?)0+$/, '$1').replace(/\.$/, '');
19
19
  return text;
20
20
  }
21
21
  function getUnitString(unit) {
@@ -968,22 +968,26 @@ function createMonldingGroup(oldMG, layer, molding, catalog) {
968
968
  return newMG;
969
969
  }
970
970
  function getMoldingDataOfScene2(layer, catalog, doorStyle) {
971
+ var _layer$items;
971
972
  var moldingData = [];
972
- var items = layer.items.toArray();
973
+ var items = layer === null || layer === void 0 || (_layer$items = layer.items) === null || _layer$items === void 0 ? void 0 : _layer$items.toArray();
973
974
  var allLineRects = _export.GeometryUtils.buildRectFromLines(layer, _export.GeometryUtils.getAllLines(layer));
974
975
 
975
976
  // get all molding line segments
976
977
  var moldingLines = [];
977
- items.forEach(function (item) {
978
+ items === null || items === void 0 || items.forEach(function (item) {
978
979
  if (item.category === _constants.ITEM_TYPE.CABINET) {
979
- var _item$molding;
980
+ var _item$properties$get$, _item$properties$get$2, _item$properties$get$3, _item$molding;
980
981
  var MGlines = getLinesOfItem2(item, allLineRects, catalog); // exclude overlayed to wall
982
+ // id & width
983
+ var parentId = item.id;
984
+ var inchWidth = (0, _convertUnitsLite.convert)(item.properties.get('width').get('_length')).from((_item$properties$get$ = item.properties.get('width').get('_unit')) !== null && _item$properties$get$ !== void 0 ? _item$properties$get$ : 'in').to('in');
981
985
  // z position of molding line
982
986
  var z = item.properties.get('altitude').get('_length');
983
- var zUnit = item.properties.get('altitude').get('_unit') || 'cm';
987
+ var zUnit = (_item$properties$get$2 = item.properties.get('altitude').get('_unit')) !== null && _item$properties$get$2 !== void 0 ? _item$properties$get$2 : 'in';
984
988
  z = (0, _convertUnitsLite.convert)(z).from(zUnit).to('cm');
985
989
  var h = item.properties.get('height').get('_length');
986
- var hUnit = item.properties.get('height').get('_unit') || 'cm';
990
+ var hUnit = (_item$properties$get$3 = item.properties.get('height').get('_unit')) !== null && _item$properties$get$3 !== void 0 ? _item$properties$get$3 : 'in';
987
991
  h = (0, _convertUnitsLite.convert)(h).from(hUnit).to('cm');
988
992
  if (!(0, _helper.isEmpty)(item.molding) && isEnableItemForMolding(layer, item)) {
989
993
  // calc normal molding line
@@ -1002,7 +1006,9 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1002
1006
  molding: _objectSpread({}, molding),
1003
1007
  doorStyle: item.doorStyle.hasOwnProperty('id') ? item.doorStyle : !(0, _helper.isEmpty)(item.doorStyle) && item.doorStyle.toJS(),
1004
1008
  line: line,
1005
- z: lineZ
1009
+ z: lineZ,
1010
+ parentId: parentId,
1011
+ inchWidth: inchWidth
1006
1012
  });
1007
1013
  });
1008
1014
  });
@@ -1022,7 +1028,9 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1022
1028
  },
1023
1029
  doorStyle: item.doorStyle.hasOwnProperty('id') ? item.doorStyle : !(0, _helper.isEmpty)(item.doorStyle) && item.doorStyle.toJS(),
1024
1030
  line: line,
1025
- z: z
1031
+ z: z,
1032
+ parentId: parentId,
1033
+ inchWidth: inchWidth
1026
1034
  });
1027
1035
  });
1028
1036
  }
@@ -1039,14 +1047,14 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1039
1047
  x2: moldingLines[i].line[1].x,
1040
1048
  y2: moldingLines[i].line[1].y
1041
1049
  };
1042
- var _loop1 = function _loop1(j) {
1043
- if (i === j) return 0; // continue
1044
- if (Math.abs(moldingLines[i].z - moldingLines[j].z) > _constants.EPSILON) return 0; // continue
1050
+ var _loop1 = function _loop1(_j) {
1051
+ if (i === _j) return 0; // continue
1052
+ if (Math.abs(moldingLines[i].z - moldingLines[_j].z) > _constants.EPSILON) return 0; // continue
1045
1053
  var destLine = {
1046
- x1: moldingLines[j].line[0].x,
1047
- y1: moldingLines[j].line[0].y,
1048
- x2: moldingLines[j].line[1].x,
1049
- y2: moldingLines[j].line[1].y
1054
+ x1: moldingLines[_j].line[0].x,
1055
+ y1: moldingLines[_j].line[0].y,
1056
+ x2: moldingLines[_j].line[1].x,
1057
+ y2: moldingLines[_j].line[1].y
1050
1058
  };
1051
1059
  var rst = _export.GeometryUtils.relationshipOfTwoOverlappedLines(srcLine, destLine);
1052
1060
  if (rst.result === _constants.OVERLAP_SAME || rst.result === _constants.OVERLAP_INCLUDED) {
@@ -1055,7 +1063,7 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1055
1063
  } else if (rst.result === _constants.OVERLAP_SOME) {
1056
1064
  removeLineIds.push(i);
1057
1065
  var lineSegs = getTrimmedContourLineSegs(rst.trimmedSegs, moldingLines.filter(function (v, idx) {
1058
- return idx !== i && idx !== j && Math.abs(v.z - moldingLines[i].z) < _constants.EPSILON;
1066
+ return idx !== i && idx !== _j && Math.abs(v.z - moldingLines[i].z) < _constants.EPSILON;
1059
1067
  }), 0);
1060
1068
  if (lineSegs.length > 0) {
1061
1069
  lineSegs.forEach(function (ls) {
@@ -1063,7 +1071,9 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1063
1071
  molding: _objectSpread({}, moldingLines[i].molding),
1064
1072
  doorStyle: moldingLines[i].doorStyle,
1065
1073
  line: (0, _toConsumableArray2["default"])(ls),
1066
- z: moldingLines[i].z
1074
+ z: moldingLines[i].z,
1075
+ parentId: moldingLines[i].parentId,
1076
+ inchWidth: moldingLines[i].inchWidth
1067
1077
  });
1068
1078
  });
1069
1079
  }
@@ -1071,8 +1081,8 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1071
1081
  }
1072
1082
  },
1073
1083
  _ret4;
1074
- for (var j = 0; j < moldingLines.length; j++) {
1075
- _ret4 = _loop1(j);
1084
+ for (var _j = 0; _j < moldingLines.length; _j++) {
1085
+ _ret4 = _loop1(_j);
1076
1086
  if (_ret4 === 0) continue;
1077
1087
  if (_ret4 === 1) break;
1078
1088
  }
@@ -1086,12 +1096,32 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle) {
1086
1096
  });
1087
1097
  });
1088
1098
  if (newLines.length > 0) moldingLines = [].concat((0, _toConsumableArray2["default"])(moldingLines), newLines);
1099
+
1100
+ // filter again for toe kick molding lines
1101
+ // only remain one line per toe kick molding item
1102
+ var duplicatedLineIdxs = [];
1103
+ for (var _i4 = 0; _i4 < moldingLines.length; _i4++) {
1104
+ var _iml$molding;
1105
+ if (duplicatedLineIdxs.includes(_i4)) continue;
1106
+ var iml = moldingLines[_i4];
1107
+ if (((_iml$molding = iml.molding) === null || _iml$molding === void 0 ? void 0 : _iml$molding.name) !== _constants.TOE_KICK_MOLDING) continue;
1108
+ for (var j = 0; j < moldingLines.length; j++) {
1109
+ if (_i4 === j) continue;
1110
+ var jml = moldingLines[j];
1111
+ if (jml.parentId === iml.parentId) duplicatedLineIdxs.push(j);
1112
+ }
1113
+ }
1114
+ moldingLines = moldingLines.filter(function (line, idx) {
1115
+ return !duplicatedLineIdxs.some(function (id) {
1116
+ return idx === id;
1117
+ });
1118
+ });
1089
1119
  // console.log('moldingLines: ', moldingLines);
1090
1120
 
1091
1121
  // make molding data with sorting molding & doorStyle
1092
1122
  var _loop0 = function _loop0() {
1093
1123
  var ml = moldingLines[k];
1094
- var mlLength = (0, _convertUnitsLite.convert)(_export.GeometryUtils.verticesDistance(ml.line[0], ml.line[1])).from('cm').to('in');
1124
+ var mlLength = ml.molding.name === _constants.TOE_KICK_MOLDING ? ml.inchWidth : (0, _convertUnitsLite.convert)(_export.GeometryUtils.verticesDistance(ml.line[0], ml.line[1])).from('cm').to('in');
1095
1125
  var idx = moldingData.findIndex(function (v) {
1096
1126
  var _ml$molding, _v$doorStyle, _ml$doorStyle;
1097
1127
  return (v === null || v === void 0 ? void 0 : v.name) === ((_ml$molding = ml.molding) === null || _ml$molding === void 0 ? void 0 : _ml$molding.name) && ((_v$doorStyle = v.doorStyle) === null || _v$doorStyle === void 0 ? void 0 : _v$doorStyle.id) === ((_ml$doorStyle = ml.doorStyle) === null || _ml$doorStyle === void 0 ? void 0 : _ml$doorStyle.id);
@@ -20,7 +20,7 @@ function formatDistance(value, fixed) {
20
20
  // 2.00 -> 2
21
21
  // 2.50 -> 2.5
22
22
  // 200.00 -> 200
23
- text = text.replace(/\.?0+$/, '');
23
+ text = text.replace(/(\.\d*?)0+$/, '$1').replace(/\.$/, '');
24
24
  return text;
25
25
  }
26
26
  function getUnitString(unit) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "4.2.1",
3
+ "version": "4.2.3",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",