kitchen-simulator 1.0.0-alin.8 → 1.0.0-clark.54

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.
Files changed (43) hide show
  1. package/es/LiteKitchenConfigurator.js +15 -156
  2. package/es/LiteRenderer.js +25 -113
  3. package/es/actions/items-actions.js +4 -5
  4. package/es/actions/project-actions.js +2 -3
  5. package/es/catalog/catalog.js +1 -4
  6. package/es/catalog/utils/exporter.js +3 -1
  7. package/es/class/item.js +57 -120
  8. package/es/class/project.js +9 -23
  9. package/es/components/viewer2d/item.js +10 -10
  10. package/es/components/viewer2d/layer.js +1 -1
  11. package/es/components/viewer2d/line.js +20 -17
  12. package/es/components/viewer2d/viewer2d.js +20 -56
  13. package/es/components/viewer3d/viewer3d.js +5 -17
  14. package/es/constants.js +10 -1
  15. package/es/devLiteRenderer.js +116 -9
  16. package/es/index.js +23 -3
  17. package/es/models.js +2 -1
  18. package/es/reducers/items-reducer.js +3 -3
  19. package/es/reducers/project-reducer.js +1 -1
  20. package/es/utils/geometry.js +6 -6
  21. package/es/utils/isolate-event-handler.js +97 -17
  22. package/lib/LiteKitchenConfigurator.js +16 -157
  23. package/lib/LiteRenderer.js +25 -113
  24. package/lib/actions/items-actions.js +4 -5
  25. package/lib/actions/project-actions.js +2 -3
  26. package/lib/catalog/catalog.js +1 -4
  27. package/lib/catalog/utils/exporter.js +3 -1
  28. package/lib/class/item.js +57 -120
  29. package/lib/class/project.js +9 -23
  30. package/lib/components/viewer2d/item.js +10 -10
  31. package/lib/components/viewer2d/layer.js +1 -1
  32. package/lib/components/viewer2d/line.js +19 -16
  33. package/lib/components/viewer2d/viewer2d.js +19 -55
  34. package/lib/components/viewer3d/viewer3d.js +5 -17
  35. package/lib/constants.js +14 -5
  36. package/lib/devLiteRenderer.js +115 -8
  37. package/lib/index.js +23 -3
  38. package/lib/models.js +2 -1
  39. package/lib/reducers/items-reducer.js +3 -3
  40. package/lib/reducers/project-reducer.js +1 -1
  41. package/lib/utils/geometry.js +6 -6
  42. package/lib/utils/isolate-event-handler.js +96 -16
  43. package/package.json +3 -3
package/es/class/item.js CHANGED
@@ -48,65 +48,19 @@ var Item = /*#__PURE__*/function () {
48
48
  isDuplication: isDuplication
49
49
  }, null, state);
50
50
  if (item.category === 'cabinet') {
51
+ var _state$doorStyle;
51
52
  var layer = state.getIn(['scene', 'layers', layerID]);
52
- if (state.doorStyle !== null && state.doorStyle !== undefined) {
53
- var _state$doorStyle, _temp$doorStyles;
54
- var temp = layer.doorStyle || ((_state$doorStyle = state.doorStyle) === null || _state$doorStyle === void 0 ? void 0 : _state$doorStyle.toJS());
55
- var cds = temp === null || temp === void 0 || (_temp$doorStyles = temp.doorStyles) === null || _temp$doorStyles === void 0 || (_temp$doorStyles = _temp$doorStyles.cds) === null || _temp$doorStyles === void 0 ? void 0 : _temp$doorStyles.find(function (elem) {
56
- return elem.itemID === state.catalog.getIn(['elements', type, 'itemID']);
53
+ var temp = layer.doorStyle || ((_state$doorStyle = state.doorStyle) === null || _state$doorStyle === void 0 ? void 0 : _state$doorStyle.toJS());
54
+ var cds = state.catalog.getIn(['elements', type, 'cds']);
55
+ if (cds) {
56
+ var updatedDoorStyles = _objectSpread(_objectSpread({}, temp.doorStyles), {}, {
57
+ cds: [cds]
58
+ });
59
+ item = item.merge({
60
+ doorStyle: fromJS(_objectSpread(_objectSpread({}, temp), {}, {
61
+ doorStyles: updatedDoorStyles
62
+ }))
57
63
  });
58
- if (cds) {
59
- var updatedDoorStyles = _objectSpread(_objectSpread(_objectSpread({}, temp.doorStyles), cds.data && cds.data[0] ? cds.data[0] : {}), {}, {
60
- cabinet_door_style_id: cds.cabinet_door_style_id
61
- });
62
- item = item.merge({
63
- doorStyle: fromJS(_objectSpread(_objectSpread({}, temp), {}, {
64
- doorStyles: updatedDoorStyles
65
- }))
66
- });
67
- } else {
68
- var _state$oStyle;
69
- var styleObj = (_state$oStyle = state.oStyle) === null || _state$oStyle === void 0 || (_state$oStyle = _state$oStyle.toJS()) === null || _state$oStyle === void 0 ? void 0 : _state$oStyle.oStyle;
70
- if (styleObj) {
71
- for (var _x in styleObj) {
72
- cds = styleObj[_x].data.doorStyles.cds.find(function (elem) {
73
- return elem.itemID === state.catalog.getIn(['elements', type, 'itemID']);
74
- });
75
- if (cds) {
76
- var tmpDS = styleObj[_x].data;
77
- tmpDS.doorStyles = _objectSpread(_objectSpread(_objectSpread({}, tmpDS.doorStyles), cds.data && cds.data[0] ? cds.data[0] : {}), {}, {
78
- cabinet_door_style_id: cds.cabinet_door_style_id
79
- });
80
- item = item.merge({
81
- doorStyle: fromJS(tmpDS)
82
- });
83
- break;
84
- }
85
- }
86
- }
87
- }
88
- } else {
89
- var _state$oStyle2;
90
- var _styleObj = (_state$oStyle2 = state.oStyle) === null || _state$oStyle2 === void 0 || (_state$oStyle2 = _state$oStyle2.toJS()) === null || _state$oStyle2 === void 0 ? void 0 : _state$oStyle2.oStyle;
91
- if (_styleObj) {
92
- for (var _x2 in _styleObj) {
93
- var _styleObj$_x;
94
- var _cds = (_styleObj$_x = _styleObj[_x2]) === null || _styleObj$_x === void 0 || (_styleObj$_x = _styleObj$_x.data) === null || _styleObj$_x === void 0 || (_styleObj$_x = _styleObj$_x.doorStyles) === null || _styleObj$_x === void 0 || (_styleObj$_x = _styleObj$_x.cds) === null || _styleObj$_x === void 0 ? void 0 : _styleObj$_x.find(function (elem) {
95
- return elem.itemID === state.catalog.getIn(['elements', type, 'itemID']);
96
- });
97
- if (_cds) {
98
- var _styleObj$_x2;
99
- var _tmpDS = (_styleObj$_x2 = _styleObj[_x2]) === null || _styleObj$_x2 === void 0 ? void 0 : _styleObj$_x2.data;
100
- _tmpDS.doorStyles = _objectSpread(_objectSpread(_objectSpread({}, _tmpDS.doorStyles), _cds.data && _cds.data[0] ? _cds.data[0] : {}), {}, {
101
- cabinet_door_style_id: _cds.cabinet_door_style_id
102
- });
103
- item = item.merge({
104
- doorStyle: fromJS(_tmpDS)
105
- });
106
- break;
107
- }
108
- }
109
- }
110
64
  }
111
65
  }
112
66
  if (item.get('type') === 'cabinet' && item.get('doorStyle').size === 0) {
@@ -116,15 +70,11 @@ var Item = /*#__PURE__*/function () {
116
70
  };
117
71
  }
118
72
  var setSizeOfItemByDoorStyle = function setSizeOfItemByDoorStyle() {
119
- var _doorStyle$doorStyles, _cds$data;
120
73
  var doorStyle = item.get('doorStyle').toJS();
121
- var cds = doorStyle === null || doorStyle === void 0 || (_doorStyle$doorStyles = doorStyle.doorStyles) === null || _doorStyle$doorStyles === void 0 || (_doorStyle$doorStyles = _doorStyle$doorStyles.cds) === null || _doorStyle$doorStyles === void 0 ? void 0 : _doorStyle$doorStyles.find(function (elem) {
122
- return elem.itemID === item.itemID;
123
- });
124
- var euro_cds = (cds === null || cds === void 0 || (_cds$data = cds.data) === null || _cds$data === void 0 ? void 0 : _cds$data.filter(function (element) {
74
+ var euroCDS = state.catalog.getIn(['elements', type, 'cds']).data.filter(function (element) {
125
75
  return element && element.is_euro_cds;
126
- })) || [];
127
- if (doorStyle.door_style_name === 'Euro & Frameless' && euro_cds.length > 0) {
76
+ });
77
+ if (doorStyle.door_style_name === 'Euro & Frameless' && euroCDS.length > 0) {
128
78
  var newProperties = item.get('properties').toJS();
129
79
  if (newProperties.hasOwnProperty('depth')) {
130
80
  if (!newProperties.hasOwnProperty('oldDepth')) {
@@ -135,8 +85,8 @@ var Item = /*#__PURE__*/function () {
135
85
  });
136
86
  }
137
87
  newProperties['depth'] = new Map({
138
- length: convert(euro_cds[0].euro_length).from('in').to('cm'),
139
- _length: euro_cds[0].euro_length,
88
+ length: convert(euroCDS[0].euro_length).from('in').to('cm'),
89
+ _length: euroCDS[0].euro_length,
140
90
  _unit: 'in'
141
91
  });
142
92
  }
@@ -149,8 +99,8 @@ var Item = /*#__PURE__*/function () {
149
99
  });
150
100
  }
151
101
  newProperties['height'] = new Map({
152
- length: convert(euro_cds[0].euro_height).from('in').to('cm'),
153
- _length: euro_cds[0].euro_height,
102
+ length: convert(euroCDS[0].euro_height).from('in').to('cm'),
103
+ _length: euroCDS[0].euro_height,
154
104
  _unit: 'in'
155
105
  });
156
106
  }
@@ -163,8 +113,8 @@ var Item = /*#__PURE__*/function () {
163
113
  });
164
114
  }
165
115
  newProperties['width'] = new Map({
166
- length: convert(euro_cds[0].euro_width).from('in').to('cm') - 10,
167
- _length: euro_cds[0].euro_width,
116
+ length: convert(euroCDS[0].euro_width).from('in').to('cm') - 10,
117
+ _length: euroCDS[0].euro_width,
168
118
  _unit: 'in'
169
119
  });
170
120
  }
@@ -1123,48 +1073,37 @@ var Item = /*#__PURE__*/function () {
1123
1073
  }
1124
1074
  }, {
1125
1075
  key: "setInitialDoorStyle",
1126
- value: function setInitialDoorStyle(state, doorStyle, oStyle) {
1127
- if (doorStyle === undefined) {
1128
- state = state.merge({
1129
- oStyle: new Map({
1130
- oStyle: oStyle
1131
- })
1132
- });
1133
- } else {
1134
- state = state.merge({
1135
- doorStyle: doorStyle,
1136
- oStyle: new Map({
1137
- oStyle: oStyle
1138
- })
1139
- });
1140
- var _state8 = state,
1141
- scene = _state8.scene;
1142
- var layerID = scene.get('selectedLayer');
1143
- var layers = scene.layers.get(layerID);
1144
- var items = layers.items;
1145
- items.forEach(function (data) {
1146
- {
1147
- var itemID = data.id;
1148
- var tmpDS = _objectSpread(_objectSpread({}, data.doorStyle), {}, {
1149
- doorStyles: _objectSpread(_objectSpread({}, data.doorStyle.doorStyles), {}, {
1150
- counttop: doorStyle.doorStyles.counttop
1151
- })
1152
- });
1153
- data = data.mergeIn(['doorStyle'], fromJS(tmpDS));
1154
- layers = layers.mergeIn(['items', itemID], data);
1155
- state = state.merge({
1156
- scene: scene.mergeIn(['layers', layerID], layers)
1157
- });
1158
- }
1159
- });
1160
- }
1076
+ value: function setInitialDoorStyle(state, doorStyle) {
1077
+ state = state.merge({
1078
+ doorStyle: doorStyle
1079
+ });
1080
+ var _state8 = state,
1081
+ scene = _state8.scene;
1082
+ var layerID = scene.get('selectedLayer');
1083
+ var layers = scene.layers.get(layerID);
1084
+ var items = layers.items;
1085
+ items.forEach(function (data) {
1086
+ {
1087
+ var itemID = data.id;
1088
+ var tmpDS = _objectSpread(_objectSpread({}, data.doorStyle), {}, {
1089
+ doorStyles: _objectSpread(_objectSpread({}, data.doorStyle.doorStyles), {}, {
1090
+ counttop: doorStyle.doorStyles.counttop
1091
+ })
1092
+ });
1093
+ data = data.mergeIn(['doorStyle'], fromJS(tmpDS));
1094
+ layers = layers.mergeIn(['items', itemID], data);
1095
+ state = state.merge({
1096
+ scene: scene.mergeIn(['layers', layerID], layers)
1097
+ });
1098
+ }
1099
+ });
1161
1100
  return {
1162
1101
  updatedState: state
1163
1102
  };
1164
1103
  }
1165
1104
  }, {
1166
1105
  key: "setDoorStyle",
1167
- value: function setDoorStyle(state, doorStyle, pathes, isAll) {
1106
+ value: function setDoorStyle(state, doorStyle, itemCDS, isAll) {
1168
1107
  var _this2 = this;
1169
1108
  var keys = Object.keys(doorStyle.doorStyles);
1170
1109
  keys = keys.filter(function (elem) {
@@ -1181,14 +1120,14 @@ var Item = /*#__PURE__*/function () {
1181
1120
  var layerID = state.scene.get('selectedLayer');
1182
1121
  var temp_layer_molding = state.scene.getIn(['layers', layerID, 'molding']);
1183
1122
  temp_layer_molding = temp_layer_molding.filter(function (md) {
1184
- return doorStyle.doorStyles.cds.some(function (ds) {
1123
+ return itemCDS === null || itemCDS === void 0 ? void 0 : itemCDS.some(function (ds) {
1185
1124
  return md.itemID === ds.itemID;
1186
1125
  });
1187
1126
  });
1188
1127
  state = state.setIn(['scene', 'layers', layerID, 'molding'], temp_layer_molding);
1189
1128
  var itemIDs = state.scene.layers.getIn([layerID, 'selected', 'items']).toJS();
1190
1129
  var setDoorStyleOfItem = function setDoorStyleOfItem(data) {
1191
- var _cds$data2;
1130
+ var _cds$data;
1192
1131
  if (data.category !== 'cabinet') return; //CDS should effect to cabinets
1193
1132
  var itemID = data.id;
1194
1133
  var curItem = state.getIn(['scene', 'layers', layerID, 'items', itemID]);
@@ -1196,7 +1135,7 @@ var Item = /*#__PURE__*/function () {
1196
1135
  var tmpMolding = _toConsumableArray(curItem.molding);
1197
1136
  var temp_item_molding = _toConsumableArray(curItem.molding);
1198
1137
  temp_item_molding = temp_item_molding.filter(function (md) {
1199
- return doorStyle.doorStyles.cds.some(function (ds) {
1138
+ return itemCDS === null || itemCDS === void 0 ? void 0 : itemCDS.some(function (ds) {
1200
1139
  return ds.itemID === md.itemID;
1201
1140
  });
1202
1141
  });
@@ -1206,17 +1145,16 @@ var Item = /*#__PURE__*/function () {
1206
1145
  state = state.setIn(['scene', 'layers', layerID, 'items', it.id, 'molding'], temp_item_molding);
1207
1146
  });
1208
1147
  });
1209
- var cds = doorStyle.doorStyles.cds.find(function (elem) {
1148
+ var cds = itemCDS === null || itemCDS === void 0 ? void 0 : itemCDS.find(function (elem) {
1210
1149
  return elem.itemID === data.itemID;
1211
1150
  });
1212
- var euro_cds = (cds === null || cds === void 0 || (_cds$data2 = cds.data) === null || _cds$data2 === void 0 ? void 0 : _cds$data2.filter(function (element) {
1151
+ var euro_cds = (cds === null || cds === void 0 || (_cds$data = cds.data) === null || _cds$data === void 0 ? void 0 : _cds$data.filter(function (element) {
1213
1152
  return element && element.is_euro_cds;
1214
1153
  })) || [];
1215
- var cds_data;
1216
- if (doorStyle.door_style_name === 'Euro & Frameless' && euro_cds.length > 0) {
1217
- cds_data = cds ? _objectSpread(_objectSpread({}, euro_cds[0]), {}, {
1218
- cabinet_door_style_id: cds.cabinet_door_style_id
1219
- }) : {};
1154
+ var cds_data = cds ? [cds] : [];
1155
+ if (
1156
+ // doorStyle.door_style_name === 'Euro & Frameless' &&
1157
+ euro_cds.length > 0) {
1220
1158
  var newProperties = state.scene.getIn(['layers', layerID, 'items', itemID, 'properties']).toJS();
1221
1159
  if (newProperties.hasOwnProperty('depth')) {
1222
1160
  if (!newProperties.hasOwnProperty('oldDepth')) {
@@ -1262,9 +1200,6 @@ var Item = /*#__PURE__*/function () {
1262
1200
  }
1263
1201
  state = _this2.setJsProperties(state, layerID, itemID, newProperties).updatedState;
1264
1202
  } else {
1265
- cds_data = cds ? _objectSpread(_objectSpread({}, cds.data && cds.data[0] ? cds.data[0] : {}), {}, {
1266
- cabinet_door_style_id: cds.cabinet_door_style_id
1267
- }) : {};
1268
1203
  var properties = state.scene.getIn(['layers', layerID, 'items', itemID, 'properties']).toJS();
1269
1204
  if (properties.hasOwnProperty('oldDepth')) {
1270
1205
  properties['depth'] = new Map({
@@ -1303,7 +1238,9 @@ var Item = /*#__PURE__*/function () {
1303
1238
  color_sku_alias: doorStyle.color_sku_alias,
1304
1239
  // alias name of color_sku for the current dealer
1305
1240
  install: getInstallationSuffix(INSTALLATION_SUFFIX_TYPE.NAME, doorStyle),
1306
- doorStyles: _objectSpread(_objectSpread({}, tmp), cds_data)
1241
+ doorStyles: _objectSpread(_objectSpread({}, tmp), {}, {
1242
+ cds: cds_data
1243
+ })
1307
1244
  };
1308
1245
  state = state.mergeIn(['scene', 'layers', layerID, 'items', itemID, 'doorStyle'], fromJS(tmpDS));
1309
1246
  };
@@ -34,7 +34,6 @@ var Project = /*#__PURE__*/function () {
34
34
  key: "newProject",
35
35
  value: function newProject(state) {
36
36
  var doorStyle = state.toJS().doorStyle === null ? null : state.toJS().doorStyle;
37
- var oStyle = state.oStyle;
38
37
  // let counterTop = state.getIn(['scene', 'layers', layerID, 'counterTop']);
39
38
  // let floorStyle = state.getIn(['scene', 'layers', layerID, 'floorStyle']);
40
39
  var _viewer2D = state.viewer2D;
@@ -48,7 +47,6 @@ var Project = /*#__PURE__*/function () {
48
47
  state = new State({});
49
48
  state = state.merge({
50
49
  doorStyle: doorStyle,
51
- oStyle: oStyle,
52
50
  viewer2D: _viewer2D
53
51
  });
54
52
  // state = Item.setCounterTop(state, counterTop).updatedState;
@@ -59,9 +57,8 @@ var Project = /*#__PURE__*/function () {
59
57
  }
60
58
  }, {
61
59
  key: "loadProject",
62
- value: function loadProject(state, sceneJSON, categoryData) {
60
+ value: function loadProject(state, sceneJSON) {
63
61
  var doorStyle = state.doorStyle;
64
- var oStyle = state.oStyle;
65
62
  var layerID = state.scene.selectedLayer;
66
63
  var _viewer2D = state.viewer2D;
67
64
  var viewer = state.viewer2D.toJS();
@@ -161,28 +158,10 @@ var Project = /*#__PURE__*/function () {
161
158
  }
162
159
  state = state.merge({
163
160
  doorStyle: doorStyle,
164
- oStyle: oStyle,
165
161
  viewer2D: _viewer2D
166
162
  });
167
163
  state = Item.setCounterTop(state, counterTop).updatedState;
168
164
  state = Area.setFloorStyles(state, floorStyle).updatedState;
169
- if (state.getIn(['scene', 'layers', layerID, 'doorStyle']) && !state.getIn(['scene', 'layers', layerID, 'doorStyle', 'install'])) {
170
- var layerDoorStyle = state.getIn(['scene', 'layers', layerID, 'doorStyle']);
171
- var install = '';
172
- categoryData.data.doorStyles.items.forEach(function (category) {
173
- category.items.forEach(function (element) {
174
- if (element.items.filter(function (it) {
175
- return it.id === layerDoorStyle.id && (layerDoorStyle.install ? category.name === layerDoorStyle.install : true);
176
- }).length) {
177
- install = category.name;
178
- }
179
- });
180
- });
181
- layerDoorStyle = _objectSpread(_objectSpread({}, layerDoorStyle), {}, {
182
- install: install
183
- });
184
- state = state.mergeIn(['scene', 'layers', layerID, 'doorStyle'], layerDoorStyle);
185
- }
186
165
  this.updateZoomScale(state, a);
187
166
  viewer2DActions.updateCameraView(_viewer2D);
188
167
  return {
@@ -478,6 +457,10 @@ var Project = /*#__PURE__*/function () {
478
457
  };
479
458
  }
480
459
  var mode;
460
+ var isLineAction = false;
461
+ if (state.mode.includes('LINE')) {
462
+ isLineAction = true;
463
+ }
481
464
  if (state.mode == MODE_DRAWING_ITEM_3D) {
482
465
  mode = MODE_IDLE_3D;
483
466
  if (state.drawingSupport.has('currentID')) state = Layer.removeElement(state, state.scene.selectedLayer, 'items', state.drawingSupport.get('currentID')).updatedState;
@@ -520,6 +503,9 @@ var Project = /*#__PURE__*/function () {
520
503
  draggingSupport: new Map(),
521
504
  rotatingSupport: new Map()
522
505
  });
506
+ if (isLineAction) {
507
+ state = Line.applyWallChanges(state, END_DRAWING_LINE).updatedState;
508
+ }
523
509
  return {
524
510
  updatedState: state
525
511
  };
@@ -604,7 +590,7 @@ var Project = /*#__PURE__*/function () {
604
590
  updatedState: state
605
591
  };
606
592
  } catch (error) {
607
- console.log('initCatalogError', error);
593
+ console.log('addElementToCatalogError', error);
608
594
  return {
609
595
  updatedState: state
610
596
  };
@@ -6,6 +6,7 @@ import { convert } from "../../utils/convert-units-lite";
6
6
  import { GeometryUtils } from "../../utils/export";
7
7
  import { MODE_ROTATING_ITEM, WALL_CABINET_LAYOUTPOS } from "../../constants";
8
8
  import { isEmpty, returnReplaceableDeepSearchType } from "./utils";
9
+ import { findCatalogElement } from "../../utils/geometry";
9
10
  var STYLE_LINE = {
10
11
  fill: '#0096fd',
11
12
  stroke: '#0096fd'
@@ -21,6 +22,7 @@ var STYLE_CIRCLE2 = {
21
22
  cursor: 'ew-resize'
22
23
  };
23
24
  export default function Item(_ref, _ref2) {
25
+ var _element$render2D;
24
26
  var layer = _ref.layer,
25
27
  item = _ref.item,
26
28
  scene = _ref.scene,
@@ -29,7 +31,8 @@ export default function Item(_ref, _ref2) {
29
31
  var itemsActions = _ref2.itemsActions;
30
32
  var x = item.x,
31
33
  y = item.y,
32
- rotation = item.rotation;
34
+ rotation = item.rotation,
35
+ id = item.id;
33
36
  var showBaseCabinetMeasure = scene.showBaseCabinetMeasure,
34
37
  showWallCabinetMeasure = scene.showWallCabinetMeasure;
35
38
  var vertices = layer.vertices;
@@ -116,12 +119,7 @@ export default function Item(_ref, _ref2) {
116
119
  if (layer.selected.items.size > 0) {
117
120
  selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);
118
121
  var catid = selectedItem.type;
119
- var cat = catalog.elements[catid];
120
- if (!cat) cat = catalog.elements[returnReplaceableDeepSearchType(catid)];
121
- if (cat === undefined || cat === null) {
122
- cat = catalog.getIn(['elements', catid]);
123
- if (!cat) cat = catalog.getIn(['elements', returnReplaceableDeepSearchType(catid)]);
124
- }
122
+ var cat = findCatalogElement(catalog, catid);
125
123
  currentItem = {
126
124
  selectedItem: selectedItem,
127
125
  cat: cat
@@ -136,8 +134,7 @@ export default function Item(_ref, _ref2) {
136
134
  rotRad: item.rotation / 180 * Math.PI
137
135
  };
138
136
  var catid = item.type;
139
- var cat = catalog.elements[catid];
140
- if (!cat) cat = catalog.elements[returnReplaceableDeepSearchType(catid)];
137
+ var cat = findCatalogElement(catalog, catid);
141
138
  var width = convert(item.properties.getIn(['width', '_length'])).from('in').to('cm');
142
139
  var height = convert(item.properties.getIn(['depth', '_length'])).from('in').to('cm');
143
140
  // let width = cat.info.sizeinfo.width;
@@ -281,6 +278,9 @@ export default function Item(_ref, _ref2) {
281
278
  PointArray.forEach(function (pointElement, index) {
282
279
  if (pointElement[0] == undefined) PointArray[index][0] = 0;
283
280
  });
281
+ if (Array.isArray(PointArray)) {
282
+ itemsActions.storeDistArray(layerID, id, PointArray);
283
+ }
284
284
  var renderedRuler = [];
285
285
  var ep = 0.1;
286
286
  if (item.selected) {
@@ -310,7 +310,7 @@ export default function Item(_ref, _ref2) {
310
310
  }
311
311
  });
312
312
  }
313
- var renderedItem = element.render2D.call(element, item, layer, scene);
313
+ var renderedItem = element === null || element === void 0 || (_element$render2D = element.render2D) === null || _element$render2D === void 0 ? void 0 : _element$render2D.call(element, item, layer, scene);
314
314
  var isSmall = false;
315
315
  if (width < 40) isSmall = true;
316
316
  var parts = [];
@@ -137,7 +137,7 @@ export default function Layer(_ref) {
137
137
  unit: unit,
138
138
  catalog: catalog
139
139
  });
140
- }), lineData, itemData, itemWall, itemSelected, mode !== MODE_DRAWING_LINE && vertices.valueSeq().filter(function (v) {
140
+ }), itemData, itemWall, lineData, itemSelected, mode !== MODE_DRAWING_LINE && vertices.valueSeq().filter(function (v) {
141
141
  return v.selected;
142
142
  }).map(function (vertex) {
143
143
  return /*#__PURE__*/React.createElement(Vertex, {
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { GeometryUtils } from "../../utils/export";
4
4
  import Ruler from "./ruler";
5
- import { BASE_CABINET_LAYOUTPOS, LINE_THICKNESS, WALL_CABINET_LAYOUTPOS } from "../../constants";
5
+ import { BASE_CABINET_LAYOUTPOS, LINE_THICKNESS, MODE_DRAGGING_LINE, MODE_DRAWING_LINE, WALL_CABINET_LAYOUTPOS, MAX_ANGLE_SCALE } from "../../constants";
6
6
  import * as Three from 'three';
7
7
  import { isEmpty } from "./utils";
8
8
  var STYLE = {
@@ -21,7 +21,7 @@ var STYLE_TEXT = {
21
21
  textAnchor: 'middle',
22
22
  fontSize: '7px',
23
23
  fontWeight: 'middle',
24
- fontFamily: "'Microsoft YaHei UI', Courier, monospace"
24
+ fontFamily: "'Courier New', Courier, monospace"
25
25
  };
26
26
  export function compareVertices(v0, v1) {
27
27
  return v0.x === v1.x ? v0.y - v1.y : v0.x - v1.x;
@@ -710,22 +710,32 @@ export default function Line(_ref) {
710
710
  "data-layer": layer.id,
711
711
  "data-length": length
712
712
  }, showWallLengthMeasure ? renderedRuler : null), line.selected && angleVertices.map(function (vertex, index) {
713
+ var _relateLineLengthArra2;
713
714
  var lineGroup = vertex[0].lines;
714
715
  var angles = [];
715
716
  var thickness = [];
716
717
  var vectories = [];
718
+ var relateLineLengthArray = [];
719
+
717
720
  // get the vector of lines
718
721
  lineGroup.forEach(function (line) {
722
+ var _relateLineLengthArra;
719
723
  line = layer.lines.get(line);
720
724
  var vertex0 = layer.vertices.get(line.vertices.get(0));
721
725
  var vertex1 = layer.vertices.get(line.vertices.get(1));
722
726
  var vec = vertex0 === vertex[0] ? new Three.Vector2(vertex1.x - vertex0.x, vertex1.y - vertex0.y) : new Three.Vector2(vertex0.x - vertex1.x, vertex0.y - vertex1.y);
727
+ (_relateLineLengthArra = relateLineLengthArray) === null || _relateLineLengthArra === void 0 || _relateLineLengthArra.push(GeometryUtils.verticesDistance(vertex0, vertex1));
723
728
  var angle = vec.angle();
724
729
  var thick = 15;
725
730
  angles.push(angle);
726
731
  thickness.push(thick);
727
732
  vectories.push(vec.normalize());
728
733
  });
734
+ relateLineLengthArray = (_relateLineLengthArra2 = relateLineLengthArray) === null || _relateLineLengthArra2 === void 0 ? void 0 : _relateLineLengthArra2.sort(function (a, b) {
735
+ return a - b;
736
+ });
737
+ var minLineLength = relateLineLengthArray[0] < MAX_ANGLE_SCALE * 2 ? relateLineLengthArray[0] / 2 // scale down to half of the smallest adjacent surface
738
+ : MAX_ANGLE_SCALE;
729
739
 
730
740
  // calculate the angle between two lines
731
741
  var center = new Three.Vector2(vertex[0].x, vertex[0].y);
@@ -744,16 +754,15 @@ export default function Line(_ref) {
744
754
  var rotDir = vec1.cross(vec2) > 0; // true: rotate CCW, false: rotate CW
745
755
 
746
756
  // Angle Text Position
747
-
748
757
  var angleTextO = center.clone();
749
- var textTranslation = vec1.clone().add(vec2).normalize().multiplyScalar(25);
758
+ var textTranslation = vec1.clone().add(vec2).normalize().multiplyScalar(minLineLength * 2 / 3);
750
759
  angleTextO.add(textTranslation);
751
- angleTextO.y -= 5; // half the height of text `angle`
752
-
760
+ angleTextO.y -= minLineLength / 10; // half the height of text `angle`
761
+ angleTextO.x += minLineLength / 10;
753
762
  var tx = 0;
754
763
  var ty = 0;
755
- vec = vec.multiplyScalar(35);
756
- vec1 = vec1.multiplyScalar(35);
764
+ vec = vec.multiplyScalar(minLineLength);
765
+ vec1 = vec1.multiplyScalar(minLineLength);
757
766
  var cen1 = center.clone(),
758
767
  cen2 = center.clone();
759
768
  center = center.add(vec);
@@ -766,7 +775,7 @@ export default function Line(_ref) {
766
775
  // Angle SVG Path
767
776
  lines.push(/*#__PURE__*/React.createElement("path", {
768
777
  style: STYLE_ANGLE,
769
- d: "\n M ".concat(vertex[0].x, ",").concat(vertex[0].y, " L ").concat(pos1.x, ",").concat(pos1.y, " A 30,30 ").concat(angle, " 0 ").concat(t > 0 ? 1 : 0, " ").concat(pos2.x, ",").concat(pos2.y, " z\n ")
778
+ d: "\n M ".concat(vertex[0].x, ",").concat(vertex[0].y, " L ").concat(pos1.x, ",").concat(pos1.y, " A ").concat(minLineLength, " ").concat(minLineLength, " ").concat(angle, " 0 ").concat(t > 0 ? 1 : 0, " ").concat(pos2.x, ",").concat(pos2.y, " z\n ")
770
779
  }));
771
780
  var length = angle;
772
781
  // draw angle and angle text
@@ -780,15 +789,9 @@ export default function Line(_ref) {
780
789
  "data-id": [vertex[0].id, vertex[1].id, rotDir],
781
790
  "data-length": length
782
791
  }, lines, /*#__PURE__*/React.createElement("text", {
783
- transform: "translate(".concat(angleTextO.x, ", ").concat(angleTextO.y, ") scale(1.5, -1.5)"),
792
+ transform: "translate(".concat(angleTextO.x, ", ").concat(angleTextO.y, ") scale(").concat(minLineLength / 20, ", ").concat(-minLineLength / 20, ")"),
784
793
  style: STYLE_TEXT
785
- }, angle), /*#__PURE__*/React.createElement("circle", {
786
- transform: "translate(".concat(angleTextO.x, ", ").concat(angleTextO.y, ") translate(10, 9)"),
787
- fill: "transparent",
788
- stroke: "rgb(77, 77, 77)",
789
- strokeWidth: 1,
790
- r: 2
791
- }));
794
+ }, angle + '° '));
792
795
  }), showWindowDoorMeasure ? renderedAllRuler : null, showBaseCabinetMeasure ? baseRuler : null, showWallCabinetMeasure ? wallRuler : null, /*#__PURE__*/React.createElement("g", {
793
796
  "data-element-root": true,
794
797
  "data-prototype": line.prototype,