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

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 +3 -3
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import { convert } from "../../utils/convert-units-lite";
4
4
  import IDBroker from "../../utils/id-broker";
5
5
  import { LINE_THICKNESS, TEXT_COLOR_NEUTRAL_7 } from "../../constants";
6
+ import { STYLE_ROOM_SHAPE } from "./line";
6
7
  var STYLE = {
7
8
  stroke: TEXT_COLOR_NEUTRAL_7,
8
9
  strokeWidth: '1px'
@@ -15,6 +16,7 @@ var STYLE_TEXT = {
15
16
  textAnchor: 'middle',
16
17
  fontSize: '12px',
17
18
  pointerEvents: 'none',
19
+ fill: '#455A64',
18
20
  //http://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting-using-css
19
21
  WebkitTouchCallout: 'none' /* iOS Safari */,
20
22
  WebkitUserSelect: 'none' /* Chrome/Safari/Opera */,
@@ -28,37 +30,9 @@ export default function Ruler(_ref) {
28
30
  unit = _ref.unit,
29
31
  rulerUnit = _ref.rulerUnit,
30
32
  transform = _ref.transform,
31
- flag = _ref.flag;
32
- var update = function update(lengthInput, unitInput, type) {
33
- var newLength = toFixedFloat(lengthInput);
34
- var merged = null;
35
- if (type === 0) {
36
- merged = value.merge({
37
- _length: newLength,
38
- length: convert(newLength).from(unitInput).to('cm')
39
- });
40
- } else {
41
- merged = value.merge({
42
- _length: convert(newLength).from(UNIT_INCH).to(unitInput),
43
- _unit: unitInput
44
- });
45
- }
46
- // if (hook) {
47
- // return hook(merged, sourceElement, internalState, state).then(val => {
48
- // return onUpdate(val);
49
- // });
50
- // }
51
- // return onUpdate(merged);
52
- };
53
- // let _unit = "in";
54
- // let distanceText = convert(length).from(unit).to(rulerUnit);
33
+ style = _ref.style;
55
34
  var distanceText = convert(length).from(unit).to(rulerUnit).toFixed(0);
56
- var thickness = convert(LINE_THICKNESS).from(unit).to(rulerUnit).toFixed(0);
57
- // let _ft_len = convert(_length).from('in').to('ft');
58
- // let _ft_val = Math.floor(_ft_len); _ft_len -= _ft_val;
59
- // let _in_val = convert(_ft_len).from('ft').to('in').toFixed(0);
60
- // let distanceText = `${_ft_val}'${_in_val}"`;
61
- var textLength = (distanceText.length + layer.unit.length) * 18;
35
+ var textLength = (distanceText.length + layer.unit.length) * 9;
62
36
  return /*#__PURE__*/React.createElement("g", {
63
37
  transform: transform
64
38
  }, /*#__PURE__*/React.createElement("g", {
@@ -79,18 +53,24 @@ export default function Ruler(_ref) {
79
53
  style: STYLE_TEXT,
80
54
  fill: TEXT_COLOR_NEUTRAL_7
81
55
  }, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/React.createElement("line", {
82
- x1: "0",
56
+ x1: style === STYLE_ROOM_SHAPE ? 0 : 4,
83
57
  y1: "0",
84
58
  x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
85
59
  y2: "0",
86
- style: STYLE
60
+ style: style
87
61
  }), /*#__PURE__*/React.createElement("line", {
88
62
  x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
89
63
  y1: "0",
90
- x2: length,
64
+ x2: style === STYLE_ROOM_SHAPE ? length : length - 4,
91
65
  y2: "0",
92
- style: STYLE
93
- }));
66
+ style: style
67
+ }), style !== STYLE_ROOM_SHAPE && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("polygon", {
68
+ points: "3, 0, 6.5, -2, 6.5, 2 ",
69
+ style: style
70
+ }), /*#__PURE__*/React.createElement("polygon", {
71
+ points: "".concat(length - 3, ", 0, ").concat(length - 6.5, ", 2, ").concat(length - 6.5, ", -2"),
72
+ style: style
73
+ })));
94
74
  }
95
75
  Ruler.propTypes = {
96
76
  length: PropTypes.number.isRequired,
@@ -7,13 +7,15 @@ var ARROW_STYLE = {
7
7
  strokeLinecap: 'round'
8
8
  };
9
9
  var STYLE = {
10
- stroke: 'black',
11
- strokeWidth: '1.1px'
10
+ stroke: '#455A64',
11
+ fill: '#455A64',
12
+ strokeWidth: '1.5px'
12
13
  };
13
14
  var STYLE_TEXT = {
14
15
  textAnchor: 'middle',
15
16
  fontSize: '10px',
16
17
  pointerEvents: 'none',
18
+ fill: '#455A64',
17
19
  //http://stackoverflow.com/questions/826782/how-to-disable-text-selection-highlighting-using-css
18
20
  WebkitTouchCallout: 'none' /* iOS Safari */,
19
21
  WebkitUserSelect: 'none' /* Chrome/Safari/Opera */,
@@ -75,32 +77,24 @@ export default function RulerDist(_ref) {
75
77
  y: "0",
76
78
  transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
77
79
  style: STYLE_TEXT
78
- }, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit)), /*#__PURE__*/React.createElement("circle", {
79
- cx: "1",
80
- cy: "0",
81
- fill: "white",
82
- r: "1.1",
83
- stroke: "black",
84
- strokeWidth: "0.6"
85
- }), /*#__PURE__*/React.createElement("line", {
80
+ }, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/React.createElement("line", {
86
81
  x1: "2",
87
82
  y1: "0",
88
83
  x2: (length - textLength) / 2 < 0 ? 0 : length,
89
84
  y2: "0",
90
85
  style: STYLE
86
+ }), /*#__PURE__*/React.createElement("polygon", {
87
+ points: "1, 0, 4.5, -2, 4.5, 2 ",
88
+ style: STYLE
91
89
  }), /*#__PURE__*/React.createElement("line", {
92
90
  x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
93
91
  y1: "0",
94
92
  x2: length,
95
93
  y2: "0",
96
94
  style: STYLE
97
- }), /*#__PURE__*/React.createElement("circle", {
98
- cx: length - 1,
99
- cy: "0",
100
- fill: "white",
101
- r: "1.1",
102
- stroke: "black",
103
- strokeWidth: "0.6"
95
+ }), /*#__PURE__*/React.createElement("polygon", {
96
+ points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
97
+ style: STYLE
104
98
  }));
105
99
  } else {
106
100
  return /*#__PURE__*/React.createElement("g", {
@@ -110,32 +104,24 @@ export default function RulerDist(_ref) {
110
104
  y: "0",
111
105
  transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
112
106
  style: STYLE_TEXT
113
- }, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit)), /*#__PURE__*/React.createElement("circle", {
114
- cx: "1",
115
- cy: "0",
116
- fill: "white",
117
- r: "1.1",
118
- stroke: "black",
119
- strokeWidth: "0.6"
120
- }), /*#__PURE__*/React.createElement("line", {
107
+ }, Math.round(convert(distanceText).from('in').to(layer.unit) * 100) / 100, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/React.createElement("line", {
121
108
  x1: "2",
122
109
  y1: "0",
123
110
  x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
124
111
  y2: "0",
125
112
  style: STYLE
113
+ }), /*#__PURE__*/React.createElement("polygon", {
114
+ points: "1, 0, 4.5, -2, 4.5, 2 ",
115
+ style: STYLE
126
116
  }), /*#__PURE__*/React.createElement("line", {
127
117
  x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
128
118
  y1: "0",
129
119
  x2: length,
130
120
  y2: "0",
131
121
  style: STYLE
132
- }), /*#__PURE__*/React.createElement("circle", {
133
- cx: length - 1,
134
- cy: "0",
135
- fill: "white",
136
- r: "1.1",
137
- stroke: "black",
138
- strokeWidth: "0.6"
122
+ }), /*#__PURE__*/React.createElement("polygon", {
123
+ points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
124
+ style: STYLE
139
125
  }));
140
126
  }
141
127
  }
@@ -1,13 +1,12 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
5
  import React, { useEffect, useRef, useState } from 'react';
7
6
  import PropTypes from 'prop-types';
8
- import { ReactSVGPanZoom, TOOL_AUTO, TOOL_NONE, TOOL_PAN, TOOL_ZOOM_IN, TOOL_ZOOM_OUT, zoom } from 'react-svg-pan-zoom';
7
+ import { ReactSVGPanZoom, TOOL_AUTO, TOOL_NONE, TOOL_PAN, TOOL_ZOOM_IN, TOOL_ZOOM_OUT } from 'react-svg-pan-zoom';
9
8
  import * as constants from "../../constants";
10
- import { DECIMAL_PLACES_2, LINE_THICKNESS, MIN_ANGLE_DISALLOW_DRAW_WALL, MODE_ELEVATION_VIEW, MODE_IDLE, UNIT_ANGLE } from "../../constants";
9
+ import { DECIMAL_PLACES_2, LINE_THICKNESS, MIN_ANGLE_DISALLOW_DRAW_WALL, MODE_ELEVATION_VIEW, MODE_IDLE, UNIT_ANGLE, INTERNAL_EVENT_SELECT_ELEMENT, INTERNAL_EVENT_DRAG_ELEMENT, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ROTATE_ELEMENT } from "../../constants";
11
10
  import State from "./state";
12
11
  import * as SharedStyle from "../../shared-style";
13
12
  import { RulerX, RulerY } from "./export";
@@ -124,7 +123,8 @@ export default function Viewer2D(_ref, _ref2) {
124
123
  width = _ref.width,
125
124
  height = _ref.height,
126
125
  setToolbar = _ref.setToolbar,
127
- replaceCabinet = _ref.replaceCabinet;
126
+ replaceCabinet = _ref.replaceCabinet,
127
+ onInternalEvent = _ref.onInternalEvent;
128
128
  var viewer2DActions = _ref2.viewer2DActions,
129
129
  linesActions = _ref2.linesActions,
130
130
  holesActions = _ref2.holesActions,
@@ -391,6 +391,7 @@ export default function Viewer2D(_ref, _ref2) {
391
391
  vertices[dragVertexId].y = y;
392
392
  }
393
393
  var absAngle, lineAngle;
394
+ var angles = [];
394
395
  if (draggingLine.vertices[0] !== draggingLine.vertices[1]) {
395
396
  if (isEmpty(relatedLines) && mode !== 'DRAGGING_LINE') {
396
397
  endDrag.push(true);
@@ -409,6 +410,7 @@ export default function Viewer2D(_ref, _ref2) {
409
410
  absAngle = Math.abs(lineAngle);
410
411
  var tmpRelated = [];
411
412
  GeometryUtils.getRelatedLines(tmpRelated, line, vertices, allLines, draggingLine.id);
413
+ angles.push(lineAngle);
412
414
  for (var j = 0; j < tmpRelated.length; j++) {
413
415
  var tmpAngle = Math.abs(GeometryUtils.angleBetweenTwoLines(tmpRelated[j], line, vertices));
414
416
  if (tmpAngle < MIN_ANGLE_DISALLOW_DRAW_WALL || tmpAngle > 360 - MIN_ANGLE_DISALLOW_DRAW_WALL) {
@@ -426,7 +428,6 @@ export default function Viewer2D(_ref, _ref2) {
426
428
  vtx = x;
427
429
  vty = y;
428
430
  } else {
429
- var rest = MIN_ANGLE_DISALLOW_DRAW_WALL - absAngle;
430
431
  // the origin point of rotation(snapping)
431
432
  var _originVerId = draggingLine.vertices.findIndex(function (vertice) {
432
433
  return vertice !== dragVertexId;
@@ -435,12 +436,22 @@ export default function Viewer2D(_ref, _ref2) {
435
436
  if (stepUnit) {
436
437
  var _ox = vertices[_originVerId].x;
437
438
  var _oy = vertices[_originVerId].y;
438
- // determine the direction of rotation.
439
- rest = lineAngle > 0 ? -rest : rest;
440
- // rotate the current point to last point around the first point of drawing line.
441
- var res = GeometryUtils.rotatePointAroundPoint(x, y, _ox, _oy, rest);
442
- vtx = res.x;
443
- vty = res.y;
439
+ angles.forEach(function (angle, index) {
440
+ if (Math.abs(angle) < MIN_ANGLE_DISALLOW_DRAW_WALL || Math.abs(angle) > 360 - MIN_ANGLE_DISALLOW_DRAW_WALL) {
441
+ var absVal = Math.abs(angle);
442
+ var rest = MIN_ANGLE_DISALLOW_DRAW_WALL - absVal;
443
+ if (absVal > 360 - MIN_ANGLE_DISALLOW_DRAW_WALL) {
444
+ absVal = 360 - absVal;
445
+ rest = -(MIN_ANGLE_DISALLOW_DRAW_WALL - absVal);
446
+ }
447
+ // determine the direction of rotation.
448
+ rest = angle > 0 ? -rest : rest;
449
+ // rotate the current point to last point around the first point of drawing line.
450
+ var res = GeometryUtils.rotatePointAroundPoint(x, y, _ox, _oy, rest);
451
+ vtx = res.x;
452
+ vty = res.y;
453
+ }
454
+ });
444
455
  }
445
456
  }
446
457
 
@@ -536,48 +547,18 @@ export default function Viewer2D(_ref, _ref2) {
536
547
  rectCenterPoint: [[point(mx, my), 180], [point(m1x, m1y), -90], [point(m2x, m2y), 0], [point(m3x, m3y), 90]]
537
548
  };
538
549
  };
539
- var calcDistanceArray = function calcDistanceArray() {
540
- var items = layer === null || layer === void 0 ? void 0 : layer.get('items');
541
- if (!items) return;
542
- items.forEach(function (item) {
543
- if ((item === null || item === void 0 ? void 0 : item.selected) === true) {
544
- var x = item.x,
545
- y = item.y,
546
- rotation = item.rotation,
547
- id = item.id;
548
- if (x == null || y == null) return;
549
- var val = {
550
- pos: {
551
- x: x,
552
- y: y
553
- },
554
- rotRad: rotation / 180 * Math.PI
555
- };
556
- var _width = getProperties(item, 'width');
557
- var depth = getProperties(item, 'depth');
558
- val.size = {
559
- width: _width,
560
- height: depth
561
- };
562
-
563
- // collect geometry
564
- var _allLines = GeometryUtils.getAllLines(layer) || [];
565
- var _allLineRects = GeometryUtils.buildRectFromLines(layer, _allLines) || [];
566
- var _allItemRect = GeometryUtils.getAllItems(scene, catalog, _allLineRects) || {
567
- others: []
568
- };
569
- var _allRect = [].concat(_toConsumableArray(_allItemRect.others || []), _toConsumableArray(_allLineRects));
570
-
571
- // current item
572
- var curItemInfo = getCalcRectFromItem(val);
573
- var pointArray = getDistant(x, y, val.rotRad, curItemInfo, _allRect);
574
-
575
- // store results safely
576
- if (Array.isArray(pointArray)) {
577
- itemsActions.storeDistArray(layerID, id, pointArray);
578
- }
579
- }
580
- });
550
+ var getConnectedLines = function getConnectedLines() {
551
+ var _state$getIn;
552
+ var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
553
+ var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
554
+ var lineID = state.getIn(['scene', 'layers', layerID, 'selected', 'lines']).first();
555
+ var drawingLine = (_state$getIn = state.getIn(['scene', 'layers', layerID, 'lines', lineID])) === null || _state$getIn === void 0 ? void 0 : _state$getIn.toJS();
556
+ // get the lines that have same points with drawing line.
557
+ if (!isEmpty(drawingLine)) {
558
+ var tlines = [];
559
+ getRelatedLines(tlines, drawingLine, vertices, lines);
560
+ setRelatedLines(tlines);
561
+ }
581
562
  };
582
563
  var onMouseMove = function onMouseMove(viewerEvent) {
583
564
  //workaround that allow imageful component to work
@@ -627,7 +608,6 @@ export default function Viewer2D(_ref, _ref2) {
627
608
  holesActions.updateDrawingHole(layerID, x, y);
628
609
  break;
629
610
  case constants.MODE_DRAWING_ITEM:
630
- calcDistanceArray();
631
611
  var _layer = scene.layers.get(layerID);
632
612
  var flag = false;
633
613
  _layer.items.some(function (item) {
@@ -713,11 +693,11 @@ export default function Viewer2D(_ref, _ref2) {
713
693
  break;
714
694
  case constants.MODE_DRAGGING_VERTEX:
715
695
  var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
696
+ getConnectedLines();
716
697
  var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
717
698
  verticesActions.updateDraggingVertex(result.x, result.y, state.snapMask);
718
699
  break;
719
700
  case constants.MODE_DRAGGING_ITEM:
720
- calcDistanceArray();
721
701
  prepareSnap();
722
702
  var _GeometryUtils$calcSn2 = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
723
703
  nx = _GeometryUtils$calcSn2.nx,
@@ -801,35 +781,42 @@ export default function Viewer2D(_ref, _ref2) {
801
781
  if (mode === constants.MODE_IDLE) {
802
782
  var elementData = extractElementData(event.target);
803
783
  if (!elementData) return;
804
- if (sCount < 2) switch (elementData.prototype) {
805
- case 'lines':
806
- if (elementData.selected) {
807
- if (elementData.part === 'remove') break;else if (elementData.part === 'elevation') break;
808
- linesActions.beginDraggingLine(elementData.layer, elementData.id, x, y, state.snapMask);
809
- }
810
- break;
811
- case 'vertices':
812
- verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
813
- break;
814
- case 'items':
815
- setToolbar('');
816
- current_sel_obj_id = elementData.id;
817
- 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 {
818
- // closes the setting dialog
819
- if (document.getElementById('setting_dialog')) {
820
- document.getElementById('setting_dialog').style.display = 'none';
784
+ if (sCount < 2) {
785
+ switch (elementData.prototype) {
786
+ case 'lines':
787
+ if (elementData.selected) {
788
+ if (elementData.part === 'remove') break;else if (elementData.part === 'elevation') break;
789
+ linesActions.beginDraggingLine(elementData.layer, elementData.id, x, y, state.snapMask);
821
790
  }
822
- itemsActions.selectItem(elementData.layer, elementData.id);
823
- // projectActions.setMode(constants.MODE_DRAGGING_ITEM);
824
- itemsActions.beginDraggingItem(elementData.layer, elementData.id, x, y);
825
- replaceCabinet(false);
826
- }
827
- break;
828
- case 'holes':
829
- if (elementData.selected) holesActions.beginDraggingHole(elementData.layer, elementData.id, x, y);
830
- break;
831
- default:
832
- break;
791
+ break;
792
+ case 'vertices':
793
+ verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
794
+ break;
795
+ case 'items':
796
+ setToolbar('');
797
+ current_sel_obj_id = elementData.id;
798
+ 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 {
799
+ // closes the setting dialog
800
+ if (document.getElementById('setting_dialog')) {
801
+ document.getElementById('setting_dialog').style.display = 'none';
802
+ }
803
+ itemsActions.selectItem(elementData.layer, elementData.id);
804
+ // projectActions.setMode(constants.MODE_DRAGGING_ITEM);
805
+ itemsActions.beginDraggingItem(elementData.layer, elementData.id, x, y);
806
+ replaceCabinet(false);
807
+ }
808
+ break;
809
+ case 'holes':
810
+ if (elementData.selected) holesActions.beginDraggingHole(elementData.layer, elementData.id, x, y);
811
+ break;
812
+ default:
813
+ break;
814
+ }
815
+ var currentObject = state.getIn(['scene', 'layers', layerID, elementData.prototype, elementData.id]);
816
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
817
+ type: INTERNAL_EVENT_SELECT_ELEMENT,
818
+ value: currentObject.toJS()
819
+ });
833
820
  } else {
834
821
  sPoint.x = x;
835
822
  sPoint.y = y;
@@ -865,10 +852,47 @@ export default function Viewer2D(_ref, _ref2) {
865
852
  y = _mapCursorPosition3.y;
866
853
  var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
867
854
  var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
855
+ var elementData = extractElementData(event.target);
856
+ var selectedLayer = scene.getIn(['layers', layerID]);
857
+ var elementPrototype = null;
858
+ var elementID = null;
859
+ var internalType = '';
860
+ switch (mode) {
861
+ case constants.MODE_DRAWING_LINE:
862
+ elementPrototype = 'lines';
863
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
864
+ break;
865
+ case constants.MODE_DRAWING_HOLE:
866
+ elementPrototype = 'holes';
867
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
868
+ break;
869
+ case constants.MODE_DRAWING_ITEM:
870
+ elementPrototype = 'items';
871
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
872
+ break;
873
+ case constants.MODE_DRAGGING_LINE:
874
+ elementPrototype = 'lines';
875
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
876
+ break;
877
+ case constants.MODE_DRAGGING_HOLE:
878
+ elementPrototype = 'holes';
879
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
880
+ break;
881
+ case constants.MODE_DRAGGING_ITEM:
882
+ elementPrototype = 'items';
883
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
884
+ break;
885
+ case constants.MODE_DRAGGING_VERTEX:
886
+ elementPrototype = 'lines';
887
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
888
+ break;
889
+ case constants.MODE_ROTATING_ITEM:
890
+ elementPrototype = 'items';
891
+ internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
892
+ break;
893
+ }
868
894
  switch (mode) {
869
895
  case constants.MODE_IDLE:
870
- var elementData = extractElementData(event.target);
871
- var selectedLayer = scene.getIn(['layers', layerID]);
872
896
  switch (elementData ? elementData.prototype : 'none') {
873
897
  case 'areas':
874
898
  if (document.getElementById('setting_dialog')) {
@@ -889,10 +913,10 @@ export default function Viewer2D(_ref, _ref2) {
889
913
  projectActions.setMode(_mode);
890
914
  break;
891
915
  } else {
892
- var _tlines = [];
893
- var _drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', elementData.id]).toJS();
894
- getRelatedLines(_tlines, _drawingLine, vertices, lines);
895
- setRelatedLines(_tlines);
916
+ var tlines = [];
917
+ var drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', elementData.id]).toJS();
918
+ getRelatedLines(tlines, drawingLine, vertices, lines);
919
+ setRelatedLines(tlines);
896
920
  linesActions.selectLine(elementData.layer, elementData.id);
897
921
  break;
898
922
  }
@@ -1178,12 +1202,7 @@ export default function Viewer2D(_ref, _ref2) {
1178
1202
  // if (dx > dy) y = prevVertex.y
1179
1203
  // else x = prevVertex.x;
1180
1204
  setdrawStart(true);
1181
- var lineID = state.getIn(['scene', 'layers', layerID, 'selected', 'lines']).first();
1182
- var drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', lineID]).toJS();
1183
- // get the lines that have same points with drawing line.
1184
- var tlines = [];
1185
- getRelatedLines(tlines, drawingLine, vertices, lines);
1186
- setRelatedLines(tlines);
1205
+ getConnectedLines();
1187
1206
  var endInfor = getEndPoint(vertices, x, y, 'END_DRAWIN_LINE');
1188
1207
  linesActions.endDrawingLine(endInfor.x, endInfor.y, state.snapMask);
1189
1208
  linesActions.beginDrawingLine(layerID, endInfor.x, endInfor.y, state.snapMask);
@@ -1198,6 +1217,7 @@ export default function Viewer2D(_ref, _ref2) {
1198
1217
  linesActions.endDraggingLine(x, y, relatedLines, state.snapMask);
1199
1218
  break;
1200
1219
  case constants.MODE_DRAGGING_VERTEX:
1220
+ getConnectedLines();
1201
1221
  var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
1202
1222
  verticesActions.endDraggingVertex(result.x, result.y, state.snapMask);
1203
1223
  break;
@@ -1212,6 +1232,14 @@ export default function Viewer2D(_ref, _ref2) {
1212
1232
  itemsActions.endRotatingItem(x, y);
1213
1233
  break;
1214
1234
  }
1235
+ if (elementPrototype) {
1236
+ elementID = state.getIn(['scene', 'layers', layerID, 'selected', elementPrototype]).first();
1237
+ var _currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
1238
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1239
+ type: internalType,
1240
+ value: _currentObject.toJS()
1241
+ });
1242
+ }
1215
1243
  event.stopPropagation();
1216
1244
  };
1217
1245
  var onChangeValue = function onChangeValue(value) {
@@ -4,7 +4,7 @@
4
4
  * @author angelxuanchang
5
5
  */
6
6
 
7
- var THREE = window.THREE || require('three');
7
+ import * as THREE from 'three';
8
8
  var MTLLoader;
9
9
  MTLLoader = function MTLLoader(manager) {
10
10
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -354,4 +354,4 @@ MTLLoader.MaterialCreator.prototype = {
354
354
  return texture;
355
355
  }
356
356
  };
357
- module.exports = MTLLoader;
357
+ export default MTLLoader;
@@ -2,7 +2,7 @@
2
2
  * @author mrdoob / http://mrdoob.com/
3
3
  */
4
4
 
5
- var THREE = window.THREE || require('three');
5
+ import * as THREE from 'three';
6
6
  var OBJLoader;
7
7
  OBJLoader = function OBJLoader(manager) {
8
8
  this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
@@ -459,4 +459,4 @@ OBJLoader.prototype = {
459
459
  return container;
460
460
  }
461
461
  };
462
- module.exports = OBJLoader;
462
+ export default OBJLoader;
@@ -13,9 +13,8 @@
13
13
  // Zoom - middle mouse, or mousewheel / touch: two finger spread or squish
14
14
  // Pan - right mouse, or arrow keys / touch: three finter swipe
15
15
 
16
- var THREE = window.THREE || require('three');
17
- var OrbitControls;
18
- module.exports = OrbitControls = function OrbitControls(object, domElement) {
16
+ import * as THREE from 'three';
17
+ export default function OrbitControls(object, domElement) {
19
18
  this.object = object;
20
19
  this.domElement = domElement !== undefined ? domElement : document;
21
20
 
@@ -623,7 +622,7 @@ module.exports = OrbitControls = function OrbitControls(object, domElement) {
623
622
  // force an update at start
624
623
 
625
624
  this.update();
626
- };
625
+ }
627
626
  OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);
628
627
  OrbitControls.prototype.constructor = OrbitControls;
629
628
  Object.defineProperties(OrbitControls.prototype, {
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * @author mrdoob / http://mrdoob.com/
3
+ * Converted to ESM
3
4
  */
4
5
 
5
- var THREE = window.THREE || require('three');
6
- var PointerLockControls;
7
- module.exports = PointerLockControls = function PointerLockControls(camera) {
6
+ import * as THREE from 'three';
7
+ export default function PointerLockControls(camera) {
8
8
  var scope = this;
9
9
  camera.rotation.set(0, 0, 0);
10
10
  var pitchObject = new THREE.Object3D();
@@ -15,14 +15,14 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
15
15
  yawObject.position.y = 10;
16
16
  yawObject.add(pitchObject);
17
17
  var PI_2 = Math.PI / 2;
18
- var onMouseMove = function onMouseMove(event) {
18
+ function onMouseMove(event) {
19
19
  if (scope.enabled === false) return;
20
20
  var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
21
21
  var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
22
22
  yawObject.rotation.y -= movementX * 0.002;
23
23
  pitchObject.rotation.x -= movementY * 0.002;
24
24
  pitchObject.rotation.x = Math.max(-PI_2, Math.min(PI_2, pitchObject.rotation.x));
25
- };
25
+ }
26
26
  this.dispose = function () {
27
27
  document.removeEventListener('mousemove', onMouseMove, false);
28
28
  };
@@ -33,7 +33,6 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
33
33
  };
34
34
  this.getDirection = function () {
35
35
  // assumes the camera itself is not rotated
36
-
37
36
  var direction = new THREE.Vector3(0, 0, -1);
38
37
  var rotation = new THREE.Euler(0, 0, 0, 'YXZ');
39
38
  return function (v) {
@@ -42,4 +41,4 @@ module.exports = PointerLockControls = function PointerLockControls(camera) {
42
41
  return v;
43
42
  };
44
43
  }();
45
- };
44
+ }