kitchen-simulator 1.0.0-alin.9 → 1.0.0-clark.101

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 (85) hide show
  1. package/es/LiteKitchenConfigurator.js +17 -175
  2. package/es/LiteRenderer.js +29 -114
  3. package/es/actions/items-actions.js +11 -6
  4. package/es/actions/project-actions.js +2 -3
  5. package/es/assets/img/svg/logo.svg +11 -0
  6. package/es/assets/img/svg/logo_with_text.svg +25 -0
  7. package/es/catalog/areas/area/planner-element.js +10 -5
  8. package/es/catalog/catalog.js +1 -4
  9. package/es/catalog/factories/wall-factory.js +8 -8
  10. package/es/catalog/lines/wall/planner-element.js +18 -9
  11. package/es/catalog/utils/exporter.js +5 -1
  12. package/es/catalog/utils/item-loader.js +112 -31
  13. package/es/catalog/utils/mtl-loader.js +2 -2
  14. package/es/catalog/utils/obj-loader.js +2 -2
  15. package/es/class/item.js +111 -145
  16. package/es/class/line.js +27 -12
  17. package/es/class/project.js +9 -23
  18. package/es/components/content.js +10 -5
  19. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  20. package/es/components/viewer2d/item.js +20 -81
  21. package/es/components/viewer2d/layer.js +1 -1
  22. package/es/components/viewer2d/line.js +334 -259
  23. package/es/components/viewer2d/ruler.js +15 -35
  24. package/es/components/viewer2d/rulerDist.js +18 -32
  25. package/es/components/viewer2d/viewer2d.js +123 -95
  26. package/es/components/viewer3d/libs/mtl-loader.js +2 -2
  27. package/es/components/viewer3d/libs/obj-loader.js +2 -2
  28. package/es/components/viewer3d/libs/orbit-controls.js +3 -4
  29. package/es/components/viewer3d/libs/pointer-lock-controls.js +6 -7
  30. package/es/components/viewer3d/viewer3d.js +91 -70
  31. package/es/constants.js +38 -3
  32. package/es/devLiteRenderer.js +165 -10
  33. package/es/index.js +52 -3
  34. package/es/models.js +7 -5
  35. package/es/reducers/items-reducer.js +8 -4
  36. package/es/reducers/project-reducer.js +1 -1
  37. package/es/shared-style.js +4 -4
  38. package/es/utils/get-edges-of-subgraphs.js +1 -1
  39. package/es/utils/graph-cycles.js +1 -1
  40. package/es/utils/graph.js +1 -1
  41. package/es/utils/helper.js +1 -1
  42. package/es/utils/isolate-event-handler.js +567 -46
  43. package/lib/LiteKitchenConfigurator.js +18 -176
  44. package/lib/LiteRenderer.js +29 -114
  45. package/lib/actions/items-actions.js +11 -5
  46. package/lib/actions/project-actions.js +2 -3
  47. package/lib/assets/img/svg/logo.svg +11 -0
  48. package/lib/assets/img/svg/logo_with_text.svg +25 -0
  49. package/lib/catalog/areas/area/planner-element.js +11 -5
  50. package/lib/catalog/catalog.js +1 -4
  51. package/lib/catalog/factories/wall-factory.js +8 -8
  52. package/lib/catalog/lines/wall/planner-element.js +19 -9
  53. package/lib/catalog/utils/exporter.js +5 -1
  54. package/lib/catalog/utils/item-loader.js +111 -31
  55. package/lib/catalog/utils/mtl-loader.js +9 -2
  56. package/lib/catalog/utils/obj-loader.js +10 -2
  57. package/lib/class/item.js +111 -145
  58. package/lib/class/line.js +27 -12
  59. package/lib/class/project.js +9 -23
  60. package/lib/components/content.js +10 -5
  61. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  62. package/lib/components/viewer2d/item.js +20 -81
  63. package/lib/components/viewer2d/layer.js +1 -1
  64. package/lib/components/viewer2d/line.js +334 -258
  65. package/lib/components/viewer2d/ruler.js +15 -35
  66. package/lib/components/viewer2d/rulerDist.js +18 -32
  67. package/lib/components/viewer2d/viewer2d.js +121 -93
  68. package/lib/components/viewer3d/libs/mtl-loader.js +9 -2
  69. package/lib/components/viewer3d/libs/obj-loader.js +9 -2
  70. package/lib/components/viewer3d/libs/orbit-controls.js +11 -5
  71. package/lib/components/viewer3d/libs/pointer-lock-controls.js +13 -7
  72. package/lib/components/viewer3d/viewer3d.js +90 -69
  73. package/lib/constants.js +42 -7
  74. package/lib/devLiteRenderer.js +164 -9
  75. package/lib/index.js +52 -3
  76. package/lib/models.js +7 -5
  77. package/lib/reducers/items-reducer.js +7 -3
  78. package/lib/reducers/project-reducer.js +1 -1
  79. package/lib/shared-style.js +4 -4
  80. package/lib/utils/get-edges-of-subgraphs.js +6 -1
  81. package/lib/utils/graph-cycles.js +7 -8
  82. package/lib/utils/graph.js +6 -1
  83. package/lib/utils/helper.js +2 -2
  84. package/lib/utils/isolate-event-handler.js +567 -45
  85. package/package.json +5 -9
@@ -10,6 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _convertUnitsLite = require("../../utils/convert-units-lite");
11
11
  var _idBroker = _interopRequireDefault(require("../../utils/id-broker"));
12
12
  var _constants = require("../../constants");
13
+ var _line = require("./line");
13
14
  var STYLE = {
14
15
  stroke: _constants.TEXT_COLOR_NEUTRAL_7,
15
16
  strokeWidth: '1px'
@@ -22,6 +23,7 @@ var STYLE_TEXT = {
22
23
  textAnchor: 'middle',
23
24
  fontSize: '12px',
24
25
  pointerEvents: 'none',
26
+ fill: '#455A64',
25
27
  //http://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting-using-css
26
28
  WebkitTouchCallout: 'none' /* iOS Safari */,
27
29
  WebkitUserSelect: 'none' /* Chrome/Safari/Opera */,
@@ -35,37 +37,9 @@ function Ruler(_ref) {
35
37
  unit = _ref.unit,
36
38
  rulerUnit = _ref.rulerUnit,
37
39
  transform = _ref.transform,
38
- flag = _ref.flag;
39
- var update = function update(lengthInput, unitInput, type) {
40
- var newLength = toFixedFloat(lengthInput);
41
- var merged = null;
42
- if (type === 0) {
43
- merged = value.merge({
44
- _length: newLength,
45
- length: (0, _convertUnitsLite.convert)(newLength).from(unitInput).to('cm')
46
- });
47
- } else {
48
- merged = value.merge({
49
- _length: (0, _convertUnitsLite.convert)(newLength).from(UNIT_INCH).to(unitInput),
50
- _unit: unitInput
51
- });
52
- }
53
- // if (hook) {
54
- // return hook(merged, sourceElement, internalState, state).then(val => {
55
- // return onUpdate(val);
56
- // });
57
- // }
58
- // return onUpdate(merged);
59
- };
60
- // let _unit = "in";
61
- // let distanceText = convert(length).from(unit).to(rulerUnit);
40
+ style = _ref.style;
62
41
  var distanceText = (0, _convertUnitsLite.convert)(length).from(unit).to(rulerUnit).toFixed(0);
63
- var thickness = (0, _convertUnitsLite.convert)(_constants.LINE_THICKNESS).from(unit).to(rulerUnit).toFixed(0);
64
- // let _ft_len = convert(_length).from('in').to('ft');
65
- // let _ft_val = Math.floor(_ft_len); _ft_len -= _ft_val;
66
- // let _in_val = convert(_ft_len).from('ft').to('in').toFixed(0);
67
- // let distanceText = `${_ft_val}'${_in_val}"`;
68
- var textLength = (distanceText.length + layer.unit.length) * 18;
42
+ var textLength = (distanceText.length + layer.unit.length) * 9;
69
43
  return /*#__PURE__*/_react["default"].createElement("g", {
70
44
  transform: transform
71
45
  }, /*#__PURE__*/_react["default"].createElement("g", {
@@ -86,18 +60,24 @@ function Ruler(_ref) {
86
60
  style: STYLE_TEXT,
87
61
  fill: _constants.TEXT_COLOR_NEUTRAL_7
88
62
  }, Math.round((0, _convertUnitsLite.convert)(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/_react["default"].createElement("line", {
89
- x1: "0",
63
+ x1: style === _line.STYLE_ROOM_SHAPE ? 0 : 4,
90
64
  y1: "0",
91
65
  x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
92
66
  y2: "0",
93
- style: STYLE
67
+ style: style
94
68
  }), /*#__PURE__*/_react["default"].createElement("line", {
95
69
  x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
96
70
  y1: "0",
97
- x2: length,
71
+ x2: style === _line.STYLE_ROOM_SHAPE ? length : length - 4,
98
72
  y2: "0",
99
- style: STYLE
100
- }));
73
+ style: style
74
+ }), style !== _line.STYLE_ROOM_SHAPE && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("polygon", {
75
+ points: "3, 0, 6.5, -2, 6.5, 2 ",
76
+ style: style
77
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
78
+ points: "".concat(length - 3, ", 0, ").concat(length - 6.5, ", 2, ").concat(length - 6.5, ", -2"),
79
+ style: style
80
+ })));
101
81
  }
102
82
  Ruler.propTypes = {
103
83
  length: _propTypes["default"].number.isRequired,
@@ -14,13 +14,15 @@ var ARROW_STYLE = {
14
14
  strokeLinecap: 'round'
15
15
  };
16
16
  var STYLE = {
17
- stroke: 'black',
18
- strokeWidth: '1.1px'
17
+ stroke: '#455A64',
18
+ fill: '#455A64',
19
+ strokeWidth: '1.5px'
19
20
  };
20
21
  var STYLE_TEXT = {
21
22
  textAnchor: 'middle',
22
23
  fontSize: '10px',
23
24
  pointerEvents: 'none',
25
+ fill: '#455A64',
24
26
  //http://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting-using-css
25
27
  WebkitTouchCallout: 'none' /* iOS Safari */,
26
28
  WebkitUserSelect: 'none' /* Chrome/Safari/Opera */,
@@ -82,32 +84,24 @@ function RulerDist(_ref) {
82
84
  y: "0",
83
85
  transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
84
86
  style: STYLE_TEXT
85
- }, Math.round((0, _convertUnitsLite.convert)(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit)), /*#__PURE__*/_react["default"].createElement("circle", {
86
- cx: "1",
87
- cy: "0",
88
- fill: "white",
89
- r: "1.1",
90
- stroke: "black",
91
- strokeWidth: "0.6"
92
- }), /*#__PURE__*/_react["default"].createElement("line", {
87
+ }, Math.round((0, _convertUnitsLite.convert)(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/_react["default"].createElement("line", {
93
88
  x1: "2",
94
89
  y1: "0",
95
90
  x2: (length - textLength) / 2 < 0 ? 0 : length,
96
91
  y2: "0",
97
92
  style: STYLE
93
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
94
+ points: "1, 0, 4.5, -2, 4.5, 2 ",
95
+ style: STYLE
98
96
  }), /*#__PURE__*/_react["default"].createElement("line", {
99
97
  x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
100
98
  y1: "0",
101
99
  x2: length,
102
100
  y2: "0",
103
101
  style: STYLE
104
- }), /*#__PURE__*/_react["default"].createElement("circle", {
105
- cx: length - 1,
106
- cy: "0",
107
- fill: "white",
108
- r: "1.1",
109
- stroke: "black",
110
- strokeWidth: "0.6"
102
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
103
+ points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
104
+ style: STYLE
111
105
  }));
112
106
  } else {
113
107
  return /*#__PURE__*/_react["default"].createElement("g", {
@@ -117,32 +111,24 @@ function RulerDist(_ref) {
117
111
  y: "0",
118
112
  transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
119
113
  style: STYLE_TEXT
120
- }, Math.round((0, _convertUnitsLite.convert)(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit)), /*#__PURE__*/_react["default"].createElement("circle", {
121
- cx: "1",
122
- cy: "0",
123
- fill: "white",
124
- r: "1.1",
125
- stroke: "black",
126
- strokeWidth: "0.6"
127
- }), /*#__PURE__*/_react["default"].createElement("line", {
114
+ }, Math.round((0, _convertUnitsLite.convert)(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/_react["default"].createElement("line", {
128
115
  x1: "2",
129
116
  y1: "0",
130
117
  x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
131
118
  y2: "0",
132
119
  style: STYLE
120
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
121
+ points: "1, 0, 4.5, -2, 4.5, 2 ",
122
+ style: STYLE
133
123
  }), /*#__PURE__*/_react["default"].createElement("line", {
134
124
  x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
135
125
  y1: "0",
136
126
  x2: length,
137
127
  y2: "0",
138
128
  style: STYLE
139
- }), /*#__PURE__*/_react["default"].createElement("circle", {
140
- cx: length - 1,
141
- cy: "0",
142
- fill: "white",
143
- r: "1.1",
144
- stroke: "black",
145
- strokeWidth: "0.6"
129
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
130
+ points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
131
+ style: STYLE
146
132
  }));
147
133
  }
148
134
  }
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports["default"] = Viewer2D;
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
11
  var _react = _interopRequireWildcard(require("react"));
@@ -134,7 +133,8 @@ function Viewer2D(_ref, _ref2) {
134
133
  width = _ref.width,
135
134
  height = _ref.height,
136
135
  setToolbar = _ref.setToolbar,
137
- replaceCabinet = _ref.replaceCabinet;
136
+ replaceCabinet = _ref.replaceCabinet,
137
+ onInternalEvent = _ref.onInternalEvent;
138
138
  var viewer2DActions = _ref2.viewer2DActions,
139
139
  linesActions = _ref2.linesActions,
140
140
  holesActions = _ref2.holesActions,
@@ -401,6 +401,7 @@ function Viewer2D(_ref, _ref2) {
401
401
  vertices[dragVertexId].y = y;
402
402
  }
403
403
  var absAngle, lineAngle;
404
+ var angles = [];
404
405
  if (draggingLine.vertices[0] !== draggingLine.vertices[1]) {
405
406
  if ((0, _helper.isEmpty)(relatedLines) && mode !== 'DRAGGING_LINE') {
406
407
  endDrag.push(true);
@@ -419,6 +420,7 @@ function Viewer2D(_ref, _ref2) {
419
420
  absAngle = Math.abs(lineAngle);
420
421
  var tmpRelated = [];
421
422
  _export2.GeometryUtils.getRelatedLines(tmpRelated, line, vertices, allLines, draggingLine.id);
423
+ angles.push(lineAngle);
422
424
  for (var j = 0; j < tmpRelated.length; j++) {
423
425
  var tmpAngle = Math.abs(_export2.GeometryUtils.angleBetweenTwoLines(tmpRelated[j], line, vertices));
424
426
  if (tmpAngle < _constants.MIN_ANGLE_DISALLOW_DRAW_WALL || tmpAngle > 360 - _constants.MIN_ANGLE_DISALLOW_DRAW_WALL) {
@@ -436,7 +438,6 @@ function Viewer2D(_ref, _ref2) {
436
438
  vtx = x;
437
439
  vty = y;
438
440
  } else {
439
- var rest = _constants.MIN_ANGLE_DISALLOW_DRAW_WALL - absAngle;
440
441
  // the origin point of rotation(snapping)
441
442
  var _originVerId = draggingLine.vertices.findIndex(function (vertice) {
442
443
  return vertice !== dragVertexId;
@@ -445,12 +446,22 @@ function Viewer2D(_ref, _ref2) {
445
446
  if (stepUnit) {
446
447
  var _ox = vertices[_originVerId].x;
447
448
  var _oy = vertices[_originVerId].y;
448
- // determine the direction of rotation.
449
- rest = lineAngle > 0 ? -rest : rest;
450
- // rotate the current point to last point around the first point of drawing line.
451
- var res = _export2.GeometryUtils.rotatePointAroundPoint(x, y, _ox, _oy, rest);
452
- vtx = res.x;
453
- vty = res.y;
449
+ angles.forEach(function (angle, index) {
450
+ if (Math.abs(angle) < _constants.MIN_ANGLE_DISALLOW_DRAW_WALL || Math.abs(angle) > 360 - _constants.MIN_ANGLE_DISALLOW_DRAW_WALL) {
451
+ var absVal = Math.abs(angle);
452
+ var rest = _constants.MIN_ANGLE_DISALLOW_DRAW_WALL - absVal;
453
+ if (absVal > 360 - _constants.MIN_ANGLE_DISALLOW_DRAW_WALL) {
454
+ absVal = 360 - absVal;
455
+ rest = -(_constants.MIN_ANGLE_DISALLOW_DRAW_WALL - absVal);
456
+ }
457
+ // determine the direction of rotation.
458
+ rest = angle > 0 ? -rest : rest;
459
+ // rotate the current point to last point around the first point of drawing line.
460
+ var res = _export2.GeometryUtils.rotatePointAroundPoint(x, y, _ox, _oy, rest);
461
+ vtx = res.x;
462
+ vty = res.y;
463
+ }
464
+ });
454
465
  }
455
466
  }
456
467
 
@@ -546,48 +557,18 @@ function Viewer2D(_ref, _ref2) {
546
557
  rectCenterPoint: [[point(mx, my), 180], [point(m1x, m1y), -90], [point(m2x, m2y), 0], [point(m3x, m3y), 90]]
547
558
  };
548
559
  };
549
- var calcDistanceArray = function calcDistanceArray() {
550
- var items = layer === null || layer === void 0 ? void 0 : layer.get('items');
551
- if (!items) return;
552
- items.forEach(function (item) {
553
- if ((item === null || item === void 0 ? void 0 : item.selected) === true) {
554
- var x = item.x,
555
- y = item.y,
556
- rotation = item.rotation,
557
- id = item.id;
558
- if (x == null || y == null) return;
559
- var val = {
560
- pos: {
561
- x: x,
562
- y: y
563
- },
564
- rotRad: rotation / 180 * Math.PI
565
- };
566
- var _width = getProperties(item, 'width');
567
- var depth = getProperties(item, 'depth');
568
- val.size = {
569
- width: _width,
570
- height: depth
571
- };
572
-
573
- // collect geometry
574
- var _allLines = _export2.GeometryUtils.getAllLines(layer) || [];
575
- var _allLineRects = _export2.GeometryUtils.buildRectFromLines(layer, _allLines) || [];
576
- var _allItemRect = _export2.GeometryUtils.getAllItems(scene, catalog, _allLineRects) || {
577
- others: []
578
- };
579
- var _allRect = [].concat((0, _toConsumableArray2["default"])(_allItemRect.others || []), (0, _toConsumableArray2["default"])(_allLineRects));
580
-
581
- // current item
582
- var curItemInfo = getCalcRectFromItem(val);
583
- var pointArray = getDistant(x, y, val.rotRad, curItemInfo, _allRect);
584
-
585
- // store results safely
586
- if (Array.isArray(pointArray)) {
587
- itemsActions.storeDistArray(layerID, id, pointArray);
588
- }
589
- }
590
- });
560
+ var getConnectedLines = function getConnectedLines() {
561
+ var _state$getIn;
562
+ var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
563
+ var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
564
+ var lineID = state.getIn(['scene', 'layers', layerID, 'selected', 'lines']).first();
565
+ var drawingLine = (_state$getIn = state.getIn(['scene', 'layers', layerID, 'lines', lineID])) === null || _state$getIn === void 0 ? void 0 : _state$getIn.toJS();
566
+ // get the lines that have same points with drawing line.
567
+ if (!(0, _helper.isEmpty)(drawingLine)) {
568
+ var tlines = [];
569
+ getRelatedLines(tlines, drawingLine, vertices, lines);
570
+ setRelatedLines(tlines);
571
+ }
591
572
  };
592
573
  var onMouseMove = function onMouseMove(viewerEvent) {
593
574
  //workaround that allow imageful component to work
@@ -637,7 +618,6 @@ function Viewer2D(_ref, _ref2) {
637
618
  holesActions.updateDrawingHole(layerID, x, y);
638
619
  break;
639
620
  case constants.MODE_DRAWING_ITEM:
640
- calcDistanceArray();
641
621
  var _layer = scene.layers.get(layerID);
642
622
  var flag = false;
643
623
  _layer.items.some(function (item) {
@@ -723,11 +703,11 @@ function Viewer2D(_ref, _ref2) {
723
703
  break;
724
704
  case constants.MODE_DRAGGING_VERTEX:
725
705
  var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
706
+ getConnectedLines();
726
707
  var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
727
708
  verticesActions.updateDraggingVertex(result.x, result.y, state.snapMask);
728
709
  break;
729
710
  case constants.MODE_DRAGGING_ITEM:
730
- calcDistanceArray();
731
711
  prepareSnap();
732
712
  var _GeometryUtils$calcSn2 = _export2.GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
733
713
  nx = _GeometryUtils$calcSn2.nx,
@@ -811,35 +791,42 @@ function Viewer2D(_ref, _ref2) {
811
791
  if (mode === constants.MODE_IDLE) {
812
792
  var elementData = extractElementData(event.target);
813
793
  if (!elementData) return;
814
- if (sCount < 2) switch (elementData.prototype) {
815
- case 'lines':
816
- if (elementData.selected) {
817
- if (elementData.part === 'remove') break;else if (elementData.part === 'elevation') break;
818
- linesActions.beginDraggingLine(elementData.layer, elementData.id, x, y, state.snapMask);
819
- }
820
- break;
821
- case 'vertices':
822
- verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
823
- break;
824
- case 'items':
825
- setToolbar('');
826
- current_sel_obj_id = elementData.id;
827
- if (elementData.part === 'rotation-anchor') itemsActions.beginRotatingItem(elementData.layer, elementData.id, x, y);else if (elementData.part === 'remove') break;else if (elementData.part === 'duplicate') break;else if (elementData.part === 'warning_edit') break;else {
828
- // closes the setting dialog
829
- if (document.getElementById('setting_dialog')) {
830
- document.getElementById('setting_dialog').style.display = 'none';
794
+ if (sCount < 2) {
795
+ switch (elementData.prototype) {
796
+ case 'lines':
797
+ if (elementData.selected) {
798
+ if (elementData.part === 'remove') break;else if (elementData.part === 'elevation') break;
799
+ linesActions.beginDraggingLine(elementData.layer, elementData.id, x, y, state.snapMask);
831
800
  }
832
- itemsActions.selectItem(elementData.layer, elementData.id);
833
- // projectActions.setMode(constants.MODE_DRAGGING_ITEM);
834
- itemsActions.beginDraggingItem(elementData.layer, elementData.id, x, y);
835
- replaceCabinet(false);
836
- }
837
- break;
838
- case 'holes':
839
- if (elementData.selected) holesActions.beginDraggingHole(elementData.layer, elementData.id, x, y);
840
- break;
841
- default:
842
- break;
801
+ break;
802
+ case 'vertices':
803
+ verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
804
+ break;
805
+ case 'items':
806
+ setToolbar('');
807
+ current_sel_obj_id = elementData.id;
808
+ if (elementData.part === 'rotation-anchor') itemsActions.beginRotatingItem(elementData.layer, elementData.id, x, y);else if (elementData.part === 'remove') break;else if (elementData.part === 'duplicate') break;else if (elementData.part === 'warning_edit') break;else {
809
+ // closes the setting dialog
810
+ if (document.getElementById('setting_dialog')) {
811
+ document.getElementById('setting_dialog').style.display = 'none';
812
+ }
813
+ itemsActions.selectItem(elementData.layer, elementData.id);
814
+ // projectActions.setMode(constants.MODE_DRAGGING_ITEM);
815
+ itemsActions.beginDraggingItem(elementData.layer, elementData.id, x, y);
816
+ replaceCabinet(false);
817
+ }
818
+ break;
819
+ case 'holes':
820
+ if (elementData.selected) holesActions.beginDraggingHole(elementData.layer, elementData.id, x, y);
821
+ break;
822
+ default:
823
+ break;
824
+ }
825
+ var currentObject = state.getIn(['scene', 'layers', layerID, elementData.prototype, elementData.id]);
826
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
827
+ type: _constants.INTERNAL_EVENT_SELECT_ELEMENT,
828
+ value: currentObject.toJS()
829
+ });
843
830
  } else {
844
831
  sPoint.x = x;
845
832
  sPoint.y = y;
@@ -875,10 +862,47 @@ function Viewer2D(_ref, _ref2) {
875
862
  y = _mapCursorPosition3.y;
876
863
  var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
877
864
  var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
865
+ var elementData = extractElementData(event.target);
866
+ var selectedLayer = scene.getIn(['layers', layerID]);
867
+ var elementPrototype = null;
868
+ var elementID = null;
869
+ var internalType = '';
870
+ switch (mode) {
871
+ case constants.MODE_DRAWING_LINE:
872
+ elementPrototype = 'lines';
873
+ internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
874
+ break;
875
+ case constants.MODE_DRAWING_HOLE:
876
+ elementPrototype = 'holes';
877
+ internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
878
+ break;
879
+ case constants.MODE_DRAWING_ITEM:
880
+ elementPrototype = 'items';
881
+ internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
882
+ break;
883
+ case constants.MODE_DRAGGING_LINE:
884
+ elementPrototype = 'lines';
885
+ internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
886
+ break;
887
+ case constants.MODE_DRAGGING_HOLE:
888
+ elementPrototype = 'holes';
889
+ internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
890
+ break;
891
+ case constants.MODE_DRAGGING_ITEM:
892
+ elementPrototype = 'items';
893
+ internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
894
+ break;
895
+ case constants.MODE_DRAGGING_VERTEX:
896
+ elementPrototype = 'lines';
897
+ internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
898
+ break;
899
+ case constants.MODE_ROTATING_ITEM:
900
+ elementPrototype = 'items';
901
+ internalType = _constants.INTERNAL_EVENT_ROTATE_ELEMENT;
902
+ break;
903
+ }
878
904
  switch (mode) {
879
905
  case constants.MODE_IDLE:
880
- var elementData = extractElementData(event.target);
881
- var selectedLayer = scene.getIn(['layers', layerID]);
882
906
  switch (elementData ? elementData.prototype : 'none') {
883
907
  case 'areas':
884
908
  if (document.getElementById('setting_dialog')) {
@@ -899,10 +923,10 @@ function Viewer2D(_ref, _ref2) {
899
923
  projectActions.setMode(_mode);
900
924
  break;
901
925
  } else {
902
- var _tlines = [];
903
- var _drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', elementData.id]).toJS();
904
- getRelatedLines(_tlines, _drawingLine, vertices, lines);
905
- setRelatedLines(_tlines);
926
+ var tlines = [];
927
+ var drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', elementData.id]).toJS();
928
+ getRelatedLines(tlines, drawingLine, vertices, lines);
929
+ setRelatedLines(tlines);
906
930
  linesActions.selectLine(elementData.layer, elementData.id);
907
931
  break;
908
932
  }
@@ -1188,12 +1212,7 @@ function Viewer2D(_ref, _ref2) {
1188
1212
  // if (dx > dy) y = prevVertex.y
1189
1213
  // else x = prevVertex.x;
1190
1214
  setdrawStart(true);
1191
- var lineID = state.getIn(['scene', 'layers', layerID, 'selected', 'lines']).first();
1192
- var drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', lineID]).toJS();
1193
- // get the lines that have same points with drawing line.
1194
- var tlines = [];
1195
- getRelatedLines(tlines, drawingLine, vertices, lines);
1196
- setRelatedLines(tlines);
1215
+ getConnectedLines();
1197
1216
  var endInfor = getEndPoint(vertices, x, y, 'END_DRAWIN_LINE');
1198
1217
  linesActions.endDrawingLine(endInfor.x, endInfor.y, state.snapMask);
1199
1218
  linesActions.beginDrawingLine(layerID, endInfor.x, endInfor.y, state.snapMask);
@@ -1208,6 +1227,7 @@ function Viewer2D(_ref, _ref2) {
1208
1227
  linesActions.endDraggingLine(x, y, relatedLines, state.snapMask);
1209
1228
  break;
1210
1229
  case constants.MODE_DRAGGING_VERTEX:
1230
+ getConnectedLines();
1211
1231
  var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
1212
1232
  verticesActions.endDraggingVertex(result.x, result.y, state.snapMask);
1213
1233
  break;
@@ -1222,6 +1242,14 @@ function Viewer2D(_ref, _ref2) {
1222
1242
  itemsActions.endRotatingItem(x, y);
1223
1243
  break;
1224
1244
  }
1245
+ if (elementPrototype) {
1246
+ elementID = state.getIn(['scene', 'layers', layerID, 'selected', elementPrototype]).first();
1247
+ var _currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
1248
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1249
+ type: internalType,
1250
+ value: _currentObject.toJS()
1251
+ });
1252
+ }
1225
1253
  event.stopPropagation();
1226
1254
  };
1227
1255
  var onChangeValue = function onChangeValue(value) {
@@ -1,12 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var THREE = _interopRequireWildcard(require("three"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3
10
  /**
4
11
  * Loads a Wavefront .mtl file specifying materials
5
12
  *
6
13
  * @author angelxuanchang
7
14
  */
8
15
 
9
- var THREE = window.THREE || require('three');
10
16
  var MTLLoader;
11
17
  MTLLoader = function MTLLoader(manager) {
12
18
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -356,4 +362,5 @@ MTLLoader.MaterialCreator.prototype = {
356
362
  return texture;
357
363
  }
358
364
  };
359
- module.exports = MTLLoader;
365
+ var _default = exports["default"] = MTLLoader;
366
+ module.exports = exports.default;
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var THREE = _interopRequireWildcard(require("three"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3
10
  /**
4
11
  * @author mrdoob / http://mrdoob.com/
5
12
  */
6
13
 
7
- var THREE = window.THREE || require('three');
8
14
  var OBJLoader;
9
15
  OBJLoader = function OBJLoader(manager) {
10
16
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -461,4 +467,5 @@ OBJLoader.prototype = {
461
467
  return container;
462
468
  }
463
469
  };
464
- module.exports = OBJLoader;
470
+ var _default = exports["default"] = OBJLoader;
471
+ module.exports = exports.default;
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = OrbitControls;
8
+ var THREE = _interopRequireWildcard(require("three"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3
10
  /**
4
11
  * @author qiao / https://github.com/qiao
5
12
  * @author mrdoob / http://mrdoob.com
@@ -15,9 +22,7 @@
15
22
  // Zoom - middle mouse, or mousewheel / touch: two finger spread or squish
16
23
  // Pan - right mouse, or arrow keys / touch: three finter swipe
17
24
 
18
- var THREE = window.THREE || require('three');
19
- var OrbitControls;
20
- module.exports = OrbitControls = function OrbitControls(object, domElement) {
25
+ function OrbitControls(object, domElement) {
21
26
  this.object = object;
22
27
  this.domElement = domElement !== undefined ? domElement : document;
23
28
 
@@ -625,7 +630,7 @@ module.exports = OrbitControls = function OrbitControls(object, domElement) {
625
630
  // force an update at start
626
631
 
627
632
  this.update();
628
- };
633
+ }
629
634
  OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);
630
635
  OrbitControls.prototype.constructor = OrbitControls;
631
636
  Object.defineProperties(OrbitControls.prototype, {
@@ -697,4 +702,5 @@ Object.defineProperties(OrbitControls.prototype, {
697
702
  this.dampingFactor = value;
698
703
  }
699
704
  }
700
- });
705
+ });
706
+ module.exports = exports.default;
@@ -1,12 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = PointerLockControls;
8
+ var THREE = _interopRequireWildcard(require("three"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
3
10
  /**
4
11
  * @author mrdoob / http://mrdoob.com/
12
+ * Converted to ESM
5
13
  */
6
14
 
7
- var THREE = window.THREE || require('three');
8
- var PointerLockControls;
9
- module.exports = PointerLockControls = function PointerLockControls(camera) {
15
+ function PointerLockControls(camera) {
10
16
  var scope = this;
11
17
  camera.rotation.set(0, 0, 0);
12
18
  var pitchObject = new THREE.Object3D();
@@ -17,14 +23,14 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
17
23
  yawObject.position.y = 10;
18
24
  yawObject.add(pitchObject);
19
25
  var PI_2 = Math.PI / 2;
20
- var onMouseMove = function onMouseMove(event) {
26
+ function onMouseMove(event) {
21
27
  if (scope.enabled === false) return;
22
28
  var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
23
29
  var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
24
30
  yawObject.rotation.y -= movementX * 0.002;
25
31
  pitchObject.rotation.x -= movementY * 0.002;
26
32
  pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x));
27
- };
33
+ }
28
34
  this.dispose = function () {
29
35
  document.removeEventListener('mousemove', onMouseMove, false);
30
36
  };
@@ -35,7 +41,6 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
35
41
  };
36
42
  this.getDirection = function () {
37
43
  // assumes the camera itself is not rotated
38
-
39
44
  var direction = new THREE.Vector3(0, 0, -1);
40
45
  var rotation = new THREE.Euler(0, 0, 0, 'YXZ');
41
46
  return function (v) {
@@ -44,4 +49,5 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
44
49
  return v;
45
50
  };
46
51
  }();
47
- };
52
+ }
53
+ module.exports = exports.default;