kitchen-simulator 4.0.0-queuedEvents → 4.0.0

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 (111) hide show
  1. package/es/LiteKitchenConfigurator.js +141 -288
  2. package/es/LiteRenderer.js +159 -398
  3. package/es/actions/items-actions.js +10 -6
  4. package/es/actions/lines-actions.js +3 -1
  5. package/es/actions/project-actions.js +15 -5
  6. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  7. package/es/catalog/areas/area/planner-element.js +10 -5
  8. package/es/catalog/catalog.js +1 -4
  9. package/es/catalog/factories/area-factory-3d.js +2 -1
  10. package/es/catalog/factories/wall-factory-3d.js +2 -2
  11. package/es/catalog/factories/wall-factory.js +8 -8
  12. package/es/catalog/lines/wall/planner-element.js +18 -9
  13. package/es/catalog/utils/exporter.js +7 -3
  14. package/es/catalog/utils/item-loader.js +24 -14
  15. package/es/catalog/utils/mtl-loader.js +2 -2
  16. package/es/catalog/utils/obj-loader.js +2 -2
  17. package/es/class/hole.js +0 -2
  18. package/es/class/item.js +183 -184
  19. package/es/class/line.js +11 -3
  20. package/es/class/project.js +165 -48
  21. package/es/components/content.js +19 -6
  22. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  23. package/es/components/viewer2d/item.js +84 -51
  24. package/es/components/viewer2d/line.js +315 -243
  25. package/es/components/viewer2d/ruler.js +20 -38
  26. package/es/components/viewer2d/rulerDist.js +48 -78
  27. package/es/components/viewer2d/utils.js +6 -0
  28. package/es/components/viewer2d/viewer2d.js +298 -220
  29. package/es/components/viewer3d/front3D.js +3 -2
  30. package/es/components/viewer3d/libs/mtl-loader.js +2 -2
  31. package/es/components/viewer3d/libs/obj-loader.js +2 -2
  32. package/es/components/viewer3d/libs/orbit-controls.js +3 -4
  33. package/es/components/viewer3d/libs/pointer-lock-controls.js +6 -7
  34. package/es/components/viewer3d/scene-creator.js +51 -15
  35. package/es/components/viewer3d/viewer3d.js +121 -82
  36. package/es/constants.js +111 -3
  37. package/es/devLiteRenderer.js +688 -31
  38. package/es/index.js +567 -87
  39. package/es/models.js +9 -5
  40. package/es/plugins/SVGLoader.js +7 -5
  41. package/es/plugins/console-debugger.js +0 -2
  42. package/es/plugins/keyboard.js +15 -6
  43. package/es/reducers/items-reducer.js +5 -5
  44. package/es/reducers/lines-reducer.js +1 -1
  45. package/es/reducers/project-reducer.js +5 -3
  46. package/es/shared-style.js +4 -4
  47. package/es/utils/geometry.js +163 -2
  48. package/es/utils/get-edges-of-subgraphs.js +1 -1
  49. package/es/utils/graph-cycles.js +1 -1
  50. package/es/utils/graph.js +1 -1
  51. package/es/utils/helper.js +105 -3
  52. package/es/utils/isolate-event-handler.js +1542 -164
  53. package/es/utils/molding.js +461 -11
  54. package/lib/LiteKitchenConfigurator.js +141 -289
  55. package/lib/LiteRenderer.js +159 -399
  56. package/lib/actions/items-actions.js +10 -6
  57. package/lib/actions/lines-actions.js +3 -1
  58. package/lib/actions/project-actions.js +15 -4
  59. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  60. package/lib/catalog/areas/area/planner-element.js +11 -5
  61. package/lib/catalog/catalog.js +1 -4
  62. package/lib/catalog/factories/area-factory-3d.js +2 -1
  63. package/lib/catalog/factories/wall-factory-3d.js +2 -2
  64. package/lib/catalog/factories/wall-factory.js +8 -8
  65. package/lib/catalog/lines/wall/planner-element.js +19 -9
  66. package/lib/catalog/utils/exporter.js +7 -3
  67. package/lib/catalog/utils/item-loader.js +24 -14
  68. package/lib/catalog/utils/mtl-loader.js +9 -2
  69. package/lib/catalog/utils/obj-loader.js +10 -2
  70. package/lib/class/hole.js +0 -2
  71. package/lib/class/item.js +180 -181
  72. package/lib/class/line.js +9 -1
  73. package/lib/class/project.js +164 -47
  74. package/lib/components/content.js +19 -6
  75. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  76. package/lib/components/viewer2d/item.js +83 -50
  77. package/lib/components/viewer2d/line.js +315 -242
  78. package/lib/components/viewer2d/ruler.js +19 -37
  79. package/lib/components/viewer2d/rulerDist.js +48 -78
  80. package/lib/components/viewer2d/utils.js +7 -0
  81. package/lib/components/viewer2d/viewer2d.js +296 -219
  82. package/lib/components/viewer3d/front3D.js +3 -2
  83. package/lib/components/viewer3d/libs/mtl-loader.js +9 -2
  84. package/lib/components/viewer3d/libs/obj-loader.js +9 -2
  85. package/lib/components/viewer3d/libs/orbit-controls.js +11 -5
  86. package/lib/components/viewer3d/libs/pointer-lock-controls.js +13 -7
  87. package/lib/components/viewer3d/scene-creator.js +49 -13
  88. package/lib/components/viewer3d/viewer3d.js +119 -80
  89. package/lib/constants.js +116 -7
  90. package/lib/devLiteRenderer.js +687 -30
  91. package/lib/index.js +567 -87
  92. package/lib/models.js +9 -5
  93. package/lib/plugins/SVGLoader.js +7 -5
  94. package/lib/plugins/console-debugger.js +0 -2
  95. package/lib/plugins/keyboard.js +15 -6
  96. package/lib/reducers/items-reducer.js +5 -5
  97. package/lib/reducers/lines-reducer.js +1 -1
  98. package/lib/reducers/project-reducer.js +4 -2
  99. package/lib/shared-style.js +4 -4
  100. package/lib/utils/geometry.js +164 -2
  101. package/lib/utils/get-edges-of-subgraphs.js +6 -1
  102. package/lib/utils/graph-cycles.js +7 -8
  103. package/lib/utils/graph.js +6 -1
  104. package/lib/utils/helper.js +108 -2
  105. package/lib/utils/isolate-event-handler.js +1538 -159
  106. package/lib/utils/molding.js +463 -9
  107. package/package.json +1 -1
  108. package/es/assets/Window.hdr +0 -2100
  109. package/es/assets/img/1.jpg +0 -0
  110. package/lib/assets/Window.hdr +0 -2100
  111. package/lib/assets/img/1.jpg +0 -0
@@ -22,14 +22,15 @@ var _convertUnitsLite = require("../../utils/convert-units-lite");
22
22
  var _immutable = require("immutable");
23
23
  var _math = require("../../utils/math");
24
24
  var _helper = require("../../utils/helper");
25
+ var _utils = require("./utils");
25
26
  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); }
26
27
  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; }
27
- 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) { (0, _defineProperty2["default"])(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; }
28
- // variables
28
+ 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) { (0, _defineProperty2["default"])(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; } // variables
29
29
  // variables
30
30
  var pinFlag = false;
31
31
  var sFlag = false; //for all object move
32
32
  var sPoint = {}; //for all object move
33
+ var mouseDownPoint = {}; // mouse clicked point
33
34
  var endPoint = {};
34
35
  var current_sel_obj_id = null;
35
36
  var allItemRect;
@@ -133,7 +134,8 @@ function Viewer2D(_ref, _ref2) {
133
134
  width = _ref.width,
134
135
  height = _ref.height,
135
136
  setToolbar = _ref.setToolbar,
136
- replaceCabinet = _ref.replaceCabinet;
137
+ replaceCabinet = _ref.replaceCabinet,
138
+ onInternalEvent = _ref.onInternalEvent;
137
139
  var viewer2DActions = _ref2.viewer2DActions,
138
140
  linesActions = _ref2.linesActions,
139
141
  holesActions = _ref2.holesActions,
@@ -588,56 +590,134 @@ function Viewer2D(_ref, _ref2) {
588
590
  y: y - sPoint.y
589
591
  };
590
592
  projectActions.selectAll(differs);
591
- } else switch (mode) {
592
- case constants.MODE_DRAWING_LINE:
593
- // check whether the drawing line is started.
594
- if (drawStart || state.getIn(['scene', 'setLineAttributes'])) {
593
+ } else {
594
+ switch (mode) {
595
+ case constants.MODE_DRAWING_LINE:
596
+ // check whether the drawing line is started.
595
597
  var lineID = state.getIn(['scene', 'layers', layerID, 'selected', 'lines']).first();
596
- var _vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
597
598
  var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
598
599
  var drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', lineID]).toJS();
599
600
  var tlines = [];
600
- setdrawStart(false);
601
- // get the lines that have same points with drawing line.
602
- getRelatedLines(tlines, drawingLine, _vertices, lines);
603
- setRelatedLines(tlines);
604
- linesActions.updateDrawingLine(x, y, tlines, state.snapMask);
605
- } else {
606
- linesActions.updateDrawingLine(x, y, relatedLines, state.snapMask);
607
- }
608
- // Blocked 90 degree snap.
609
- // let prevVertexID = state.getIn(['scene', 'layers', layerID, 'selected', 'vertices']).toJS()[0];
610
- // let prevVertex = state.getIn(['scene', 'layers', layerID, 'vertices', prevVertexID]);
611
- // let dx = Math.abs(x - prevVertex.x);
612
- // let dy = Math.abs(y - prevVertex.y);
613
- // if (dx > dy) y = prevVertex.y
614
- // else x = prevVertex.x;
615
- break;
616
- case constants.MODE_DRAWING_HOLE:
617
- holesActions.updateDrawingHole(layerID, x, y);
618
- break;
619
- case constants.MODE_DRAWING_ITEM:
620
- var _layer = scene.layers.get(layerID);
621
- var flag = false;
622
- _layer.items.some(function (item) {
623
- if (item.selected) {
624
- item.counterTop.uri = _layer.counterTop.uri;
625
- current_sel_obj_id = item.id;
626
- flag = true;
601
+ if (drawStart || state.getIn(['scene', 'setLineAttributes'])) {
602
+ var _vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
603
+ setdrawStart(false);
604
+ // get the lines that have same points with drawing line.
605
+ getRelatedLines(tlines, drawingLine, _vertices, lines);
606
+ setRelatedLines(tlines);
607
+ linesActions.updateDrawingLine(x, y, tlines, state.snapMask);
608
+ } else {
609
+ linesActions.updateDrawingLine(x, y, relatedLines, state.snapMask);
627
610
  }
628
- });
629
- if (current_sel_obj_id === null || !flag) {
630
- itemsActions.updateDrawingItem(layerID, x, y);
631
- endPoint.x = x;
632
- endPoint.y = y;
633
- } else {
611
+
612
+ // Blocked 90 degree snap.
613
+ // let prevVertexID = state.getIn(['scene', 'layers', layerID, 'selected', 'vertices']).toJS()[0];
614
+ // let prevVertex = state.getIn(['scene', 'layers', layerID, 'vertices', prevVertexID]);
615
+ // let dx = Math.abs(x - prevVertex.x);
616
+ // let dy = Math.abs(y - prevVertex.y);
617
+ // if (dx > dy) y = prevVertex.y
618
+ // else x = prevVertex.x;
619
+ break;
620
+ case constants.MODE_DRAWING_HOLE:
621
+ holesActions.updateDrawingHole(layerID, x, y);
622
+ break;
623
+ case constants.MODE_DRAWING_ITEM:
624
+ var _layer = scene.layers.get(layerID);
625
+ var flag = false;
626
+ _layer.items.some(function (item) {
627
+ if (item.selected) {
628
+ item.counterTop.uri = _layer.counterTop.uri;
629
+ current_sel_obj_id = item.id;
630
+ flag = true;
631
+ }
632
+ });
633
+ if (current_sel_obj_id === null || !flag) {
634
+ itemsActions.updateDrawingItem(layerID, x, y);
635
+ endPoint.x = x;
636
+ endPoint.y = y;
637
+ } else {
638
+ prepareSnap();
639
+ var _GeometryUtils$calcSn = _export2.GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
640
+ nx = _GeometryUtils$calcSn.nx,
641
+ ny = _GeometryUtils$calcSn.ny,
642
+ rot = _GeometryUtils$calcSn.rot,
643
+ rotRad = _GeometryUtils$calcSn.rotRad;
644
+ var _val = {
645
+ pos: {
646
+ x: x,
647
+ y: y
648
+ },
649
+ rotRad: rotRad,
650
+ size: allItemRect.cur && allItemRect.cur.size,
651
+ layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
652
+ is_corner: allItemRect.cur && allItemRect.cur.is_corner
653
+ };
654
+ var _GeometryUtils$getAll = _export2.GeometryUtils.getAllHoleRect(scene, _val),
655
+ _isSect = _GeometryUtils$getAll.isSect,
656
+ _snap = _GeometryUtils$getAll.snap;
657
+ if (!(0, _helper.isEmpty)(_snap) && _isSect) {
658
+ if (_snap.length == 1) _val.pos = {
659
+ x: _snap[0].x,
660
+ y: _snap[0].y
661
+ };else {
662
+ if ((_snap[0].x - x) * (_snap[0].x - x) + (_snap[0].y - y) * (_snap[0].y - y) < (_snap[1].x - x) * (_snap[1].x - x) + (_snap[1].y - y) * (_snap[1].y - y)) _val.pos = {
663
+ x: _snap[0].x,
664
+ y: _snap[0].y
665
+ };else _val.pos = {
666
+ x: _snap[1].x,
667
+ y: _snap[1].y
668
+ };
669
+ }
670
+ var interSect = _export2.GeometryUtils.validInterSect(allItemRect.others, _val);
671
+ if (interSect) {
672
+ nx = _val.pos.x;
673
+ ny = _val.pos.y;
674
+ }
675
+ }
676
+ _val.pos = {
677
+ x: nx,
678
+ y: ny
679
+ };
680
+ var _isrectSect = _export2.GeometryUtils.validInterSect(allItemRect.others, _val);
681
+ if (_isrectSect && _isSect) {
682
+ itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
683
+ itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
684
+ endPoint.x = nx;
685
+ endPoint.y = ny;
686
+ }
687
+ if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('cabinet')) {
688
+ itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
689
+ itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
690
+ endPoint.x = nx;
691
+ endPoint.y = ny;
692
+ }
693
+ if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Hood') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Range') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top')) {
694
+ itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
695
+ itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
696
+ endPoint.x = nx;
697
+ endPoint.y = ny;
698
+ }
699
+ }
700
+ break;
701
+ case constants.MODE_DRAGGING_HOLE:
702
+ holesActions.updateDraggingHole(x, y);
703
+ break;
704
+ case constants.MODE_DRAGGING_LINE:
705
+ linesActions.updateDraggingLine(x, y, relatedLines, state.snapMask);
706
+ break;
707
+ case constants.MODE_DRAGGING_VERTEX:
708
+ var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
709
+ getConnectedLines();
710
+ var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
711
+ verticesActions.updateDraggingVertex(result.x, result.y, state.snapMask);
712
+ break;
713
+ case constants.MODE_DRAGGING_ITEM:
634
714
  prepareSnap();
635
- var _GeometryUtils$calcSn = _export2.GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
636
- nx = _GeometryUtils$calcSn.nx,
637
- ny = _GeometryUtils$calcSn.ny,
638
- rot = _GeometryUtils$calcSn.rot,
639
- rotRad = _GeometryUtils$calcSn.rotRad;
640
- var _val = {
715
+ var _GeometryUtils$calcSn2 = _export2.GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
716
+ nx = _GeometryUtils$calcSn2.nx,
717
+ ny = _GeometryUtils$calcSn2.ny,
718
+ rot = _GeometryUtils$calcSn2.rot,
719
+ rotRad = _GeometryUtils$calcSn2.rotRad;
720
+ var val = {
641
721
  pos: {
642
722
  x: x,
643
723
  y: y
@@ -647,125 +727,50 @@ function Viewer2D(_ref, _ref2) {
647
727
  layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
648
728
  is_corner: allItemRect.cur && allItemRect.cur.is_corner
649
729
  };
650
- var _GeometryUtils$getAll = _export2.GeometryUtils.getAllHoleRect(scene, _val),
651
- _isSect = _GeometryUtils$getAll.isSect,
652
- _snap = _GeometryUtils$getAll.snap;
653
- if (!(0, _helper.isEmpty)(_snap) && _isSect) {
654
- if (_snap.length == 1) _val.pos = {
655
- x: _snap[0].x,
656
- y: _snap[0].y
657
- };else {
658
- if ((_snap[0].x - x) * (_snap[0].x - x) + (_snap[0].y - y) * (_snap[0].y - y) < (_snap[1].x - x) * (_snap[1].x - x) + (_snap[1].y - y) * (_snap[1].y - y)) _val.pos = {
659
- x: _snap[0].x,
660
- y: _snap[0].y
661
- };else _val.pos = {
662
- x: _snap[1].x,
663
- y: _snap[1].y
730
+ var _GeometryUtils$getAll2 = _export2.GeometryUtils.getAllHoleRect(scene, val),
731
+ isSect = _GeometryUtils$getAll2.isSect,
732
+ snap = _GeometryUtils$getAll2.snap;
733
+ if (!(0, _helper.isEmpty)(snap) && isSect) {
734
+ if (snap.length == 1) val.pos = {
735
+ x: snap[0].x,
736
+ y: snap[0].y
737
+ };else if (snap.length == 2) {
738
+ if ((snap[0].x - x) * (snap[0].x - x) + (snap[0].y - y) * (snap[0].y - y) < (snap[1].x - x) * (snap[1].x - x) + (snap[1].y - y) * (snap[1].y - y)) val.pos = {
739
+ x: snap[0].x,
740
+ y: snap[0].y
741
+ };else val.pos = {
742
+ x: snap[1].x,
743
+ y: snap[1].y
664
744
  };
665
745
  }
666
- var interSect = _export2.GeometryUtils.validInterSect(allItemRect.others, _val);
667
- if (interSect) {
668
- nx = _val.pos.x;
669
- ny = _val.pos.y;
746
+ var _interSect = _export2.GeometryUtils.validInterSect(allItemRect.others, val);
747
+ if (_interSect) {
748
+ nx = val.pos.x;
749
+ ny = val.pos.y;
670
750
  }
671
751
  }
672
- _val.pos = {
752
+ val.pos = {
673
753
  x: nx,
674
754
  y: ny
675
755
  };
676
- var _isrectSect = _export2.GeometryUtils.validInterSect(allItemRect.others, _val);
677
- if (_isrectSect && _isSect) {
756
+ var isrectSect = _export2.GeometryUtils.validInterSect(allItemRect.others, val);
757
+ if (isrectSect && isSect) {
678
758
  itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
679
759
  itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
680
- endPoint.x = nx;
681
- endPoint.y = ny;
682
760
  }
683
- if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('cabinet')) {
761
+ if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cabinet')) {
684
762
  itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
685
763
  itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
686
- endPoint.x = nx;
687
- endPoint.y = ny;
688
764
  }
689
765
  if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Hood') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Range') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top')) {
690
766
  itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
691
767
  itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
692
- endPoint.x = nx;
693
- endPoint.y = ny;
694
- }
695
- }
696
- break;
697
- case constants.MODE_DRAGGING_HOLE:
698
- holesActions.updateDraggingHole(x, y);
699
- break;
700
- case constants.MODE_DRAGGING_LINE:
701
- linesActions.updateDraggingLine(x, y, relatedLines, state.snapMask);
702
- break;
703
- case constants.MODE_DRAGGING_VERTEX:
704
- var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
705
- getConnectedLines();
706
- var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
707
- verticesActions.updateDraggingVertex(result.x, result.y, state.snapMask);
708
- break;
709
- case constants.MODE_DRAGGING_ITEM:
710
- prepareSnap();
711
- var _GeometryUtils$calcSn2 = _export2.GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
712
- nx = _GeometryUtils$calcSn2.nx,
713
- ny = _GeometryUtils$calcSn2.ny,
714
- rot = _GeometryUtils$calcSn2.rot,
715
- rotRad = _GeometryUtils$calcSn2.rotRad;
716
- var val = {
717
- pos: {
718
- x: x,
719
- y: y
720
- },
721
- rotRad: rotRad,
722
- size: allItemRect.cur && allItemRect.cur.size,
723
- layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
724
- is_corner: allItemRect.cur && allItemRect.cur.is_corner
725
- };
726
- var _GeometryUtils$getAll2 = _export2.GeometryUtils.getAllHoleRect(scene, val),
727
- isSect = _GeometryUtils$getAll2.isSect,
728
- snap = _GeometryUtils$getAll2.snap;
729
- if (!(0, _helper.isEmpty)(snap) && isSect) {
730
- if (snap.length == 1) val.pos = {
731
- x: snap[0].x,
732
- y: snap[0].y
733
- };else if (snap.length == 2) {
734
- if ((snap[0].x - x) * (snap[0].x - x) + (snap[0].y - y) * (snap[0].y - y) < (snap[1].x - x) * (snap[1].x - x) + (snap[1].y - y) * (snap[1].y - y)) val.pos = {
735
- x: snap[0].x,
736
- y: snap[0].y
737
- };else val.pos = {
738
- x: snap[1].x,
739
- y: snap[1].y
740
- };
741
- }
742
- var _interSect = _export2.GeometryUtils.validInterSect(allItemRect.others, val);
743
- if (_interSect) {
744
- nx = val.pos.x;
745
- ny = val.pos.y;
746
768
  }
747
- }
748
- val.pos = {
749
- x: nx,
750
- y: ny
751
- };
752
- var isrectSect = _export2.GeometryUtils.validInterSect(allItemRect.others, val);
753
- if (isrectSect && isSect) {
754
- itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
755
- itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
756
- }
757
- if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cabinet')) {
758
- itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
759
- itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
760
- }
761
- if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Hood') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Range') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top')) {
762
- itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
763
- itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
764
- }
765
- break;
766
- case constants.MODE_ROTATING_ITEM:
767
- itemsActions.updateRotatingItem(x, y);
768
- break;
769
+ break;
770
+ case constants.MODE_ROTATING_ITEM:
771
+ itemsActions.updateRotatingItem(x, y);
772
+ break;
773
+ }
769
774
  }
770
775
  viewerEvent.originalEvent.stopPropagation();
771
776
  };
@@ -787,38 +792,44 @@ function Viewer2D(_ref, _ref2) {
787
792
  return;
788
793
  }
789
794
  }
795
+ mouseDownPoint = {
796
+ x: x,
797
+ y: y
798
+ };
790
799
  if (mode === constants.MODE_IDLE) {
791
800
  var elementData = extractElementData(event.target);
792
801
  if (!elementData) return;
793
- if (sCount < 2) switch (elementData.prototype) {
794
- case 'lines':
795
- if (elementData.selected) {
796
- if (elementData.part === 'remove') break;else if (elementData.part === 'elevation') break;
797
- linesActions.beginDraggingLine(elementData.layer, elementData.id, x, y, state.snapMask);
798
- }
799
- break;
800
- case 'vertices':
801
- verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
802
- break;
803
- case 'items':
804
- setToolbar('');
805
- current_sel_obj_id = elementData.id;
806
- 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 {
807
- // closes the setting dialog
808
- if (document.getElementById('setting_dialog')) {
809
- document.getElementById('setting_dialog').style.display = 'none';
802
+ if (sCount < 2) {
803
+ switch (elementData.prototype) {
804
+ case 'lines':
805
+ if (elementData.selected) {
806
+ if (elementData.part === 'remove') break;else if (elementData.part === 'elevation') break;
807
+ linesActions.beginDraggingLine(elementData.layer, elementData.id, x, y, state.snapMask);
810
808
  }
811
- itemsActions.selectItem(elementData.layer, elementData.id);
812
- // projectActions.setMode(constants.MODE_DRAGGING_ITEM);
813
- itemsActions.beginDraggingItem(elementData.layer, elementData.id, x, y);
814
- replaceCabinet(false);
815
- }
816
- break;
817
- case 'holes':
818
- if (elementData.selected) holesActions.beginDraggingHole(elementData.layer, elementData.id, x, y);
819
- break;
820
- default:
821
- break;
809
+ break;
810
+ case 'vertices':
811
+ verticesActions.beginDraggingVertex(elementData.layer, elementData.id, x, y, state.snapMask);
812
+ break;
813
+ case 'items':
814
+ setToolbar('');
815
+ current_sel_obj_id = elementData.id;
816
+ 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 {
817
+ // closes the setting dialog
818
+ if (document.getElementById('setting_dialog')) {
819
+ document.getElementById('setting_dialog').style.display = 'none';
820
+ }
821
+ itemsActions.selectItem(elementData.layer, elementData.id);
822
+ // projectActions.setMode(constants.MODE_DRAGGING_ITEM);
823
+ itemsActions.beginDraggingItem(elementData.layer, elementData.id, x, y);
824
+ replaceCabinet(false);
825
+ }
826
+ break;
827
+ case 'holes':
828
+ if (elementData.selected) holesActions.beginDraggingHole(elementData.layer, elementData.id, x, y);
829
+ break;
830
+ default:
831
+ break;
832
+ }
822
833
  } else {
823
834
  sPoint.x = x;
824
835
  sPoint.y = y;
@@ -830,15 +841,17 @@ function Viewer2D(_ref, _ref2) {
830
841
  var onMouseUp = function onMouseUp(viewerEvent) {
831
842
  //set move all flag false
832
843
  sFlag = false;
833
- // //////////////////////
834
- // setRulerEdit(null);
835
844
  var event = viewerEvent.originalEvent;
836
- var bbox = event.target.getBoundingClientRect();
845
+ var parent = document.querySelector('#kitchen-simulator-container');
846
+ var targetRect = event.target.getBoundingClientRect();
847
+ var parentRect = parent.getBoundingClientRect();
848
+ var left = targetRect.left - parentRect.left;
849
+ var top = targetRect.top - parentRect.top;
850
+ left = left - (200 - targetRect.width) / 2;
851
+ top = top - (50 - targetRect.height) / 2;
837
852
  if (!mode.includes('ING')) {
838
853
  setToolbar('');
839
854
  }
840
- // bbox.width = event.target.getBBox().width;
841
- // bbox.height = event.target.getBBox().height;
842
855
  if (event.target.tagName === 'rect') {
843
856
  if (event.target.id) {
844
857
  setRulerEditID(event.target.id);
@@ -852,12 +865,63 @@ function Viewer2D(_ref, _ref2) {
852
865
  var _mapCursorPosition3 = mapCursorPosition(viewerEvent),
853
866
  x = _mapCursorPosition3.x,
854
867
  y = _mapCursorPosition3.y;
868
+ var draggingDistance = Math.sqrt((x - mouseDownPoint.x) * (x - mouseDownPoint.x) + (y - mouseDownPoint.y) * (y - mouseDownPoint.y));
855
869
  var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
856
870
  var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
871
+ var elementData = extractElementData(event.target);
872
+ var selectedLayer = scene.getIn(['layers', layerID]);
873
+ var elementPrototype = null;
874
+ var internalType = null;
875
+ switch (mode) {
876
+ case constants.MODE_DRAWING_LINE:
877
+ elementPrototype = 'lines';
878
+ internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
879
+ break;
880
+ case constants.MODE_DRAWING_HOLE:
881
+ elementPrototype = 'holes';
882
+ internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
883
+ break;
884
+ case constants.MODE_DRAWING_ITEM:
885
+ elementPrototype = 'items';
886
+ internalType = _constants.INTERNAL_EVENT_DRAW_ELEMENT;
887
+ break;
888
+ case constants.MODE_DRAGGING_LINE:
889
+ elementPrototype = 'lines';
890
+ internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
891
+ break;
892
+ case constants.MODE_DRAGGING_HOLE:
893
+ elementPrototype = 'holes';
894
+ internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
895
+ break;
896
+ case constants.MODE_DRAGGING_VERTEX:
897
+ elementPrototype = 'lines';
898
+ internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;
899
+ break;
900
+ case constants.MODE_ROTATING_ITEM:
901
+ elementPrototype = 'items';
902
+ internalType = _constants.INTERNAL_EVENT_ROTATE_ELEMENT;
903
+ break;
904
+
905
+ // item selection be came from dragging mode
906
+ case constants.MODE_DRAGGING_ITEM:
907
+ elementPrototype = 'items';
908
+ internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
909
+ break;
910
+ case constants.MODE_IDLE:
911
+ switch (elementData === null || elementData === void 0 ? void 0 : elementData.prototype) {
912
+ case 'areas':
913
+ case 'lines':
914
+ case 'holes':
915
+ if ((0, _helper.isEmpty)(elementData === null || elementData === void 0 ? void 0 : elementData.part)) {
916
+ elementPrototype = elementData === null || elementData === void 0 ? void 0 : elementData.prototype;
917
+ internalType = _constants.INTERNAL_EVENT_SELECT_ELEMENT;
918
+ }
919
+ break;
920
+ }
921
+ break;
922
+ }
857
923
  switch (mode) {
858
924
  case constants.MODE_IDLE:
859
- var elementData = extractElementData(event.target);
860
- var selectedLayer = scene.getIn(['layers', layerID]);
861
925
  switch (elementData ? elementData.prototype : 'none') {
862
926
  case 'areas':
863
927
  if (document.getElementById('setting_dialog')) {
@@ -894,7 +958,7 @@ function Viewer2D(_ref, _ref2) {
894
958
  case 'items':
895
959
  if (elementData.part === 'duplicate') {
896
960
  var currentObject = state.getIn(['scene', 'layers', layerID, 'items', elementData.id]);
897
- itemsActions.duplicateSelected(currentObject);
961
+ if (!(0, _utils.isWarningItem)(currentObject)) itemsActions.duplicateSelected(currentObject, onInternalEvent); // send draw internal event when duplicating
898
962
  break;
899
963
  } else if (elementData.part === 'remove') {
900
964
  projectActions.remove();
@@ -904,6 +968,7 @@ function Viewer2D(_ref, _ref2) {
904
968
  if (document.getElementById('setting_dialog')) {
905
969
  document.getElementById('setting_dialog').style.display = 'none';
906
970
  }
971
+ internalType = constants.INTERNAL_EVENT_REPLACE_CABINET;
907
972
  itemsActions.selectItem(elementData.layer, elementData.id);
908
973
  replaceCabinet(true);
909
974
  break;
@@ -918,14 +983,12 @@ function Viewer2D(_ref, _ref2) {
918
983
  id: "ruler_numberInput",
919
984
  style: {
920
985
  position: 'absolute',
921
- left: bbox.left - (150 - bbox.width) / 2,
922
- top: bbox.top - (50 - bbox.height) / 2,
986
+ left: left,
987
+ top: top,
923
988
  zIndex: 1000
924
989
  }
925
990
  }, /*#__PURE__*/_react["default"].createElement(_formNumberInput["default"], {
926
991
  style: {
927
- width: 150,
928
- height: 50,
929
992
  textAlign: 'center',
930
993
  paddingRight: 10,
931
994
  fontSize: '16px',
@@ -952,14 +1015,12 @@ function Viewer2D(_ref, _ref2) {
952
1015
  id: "ruler_numberInput",
953
1016
  style: {
954
1017
  position: 'absolute',
955
- left: bbox.left - (150 - bbox.width) / 2,
956
- top: bbox.top - (50 - bbox.height) / 2,
1018
+ left: left,
1019
+ top: top,
957
1020
  zIndex: 1000
958
1021
  }
959
1022
  }, /*#__PURE__*/_react["default"].createElement(_formNumberInput["default"], {
960
1023
  style: {
961
- width: 150,
962
- height: 50,
963
1024
  textAlign: 'center',
964
1025
  paddingRight: 10,
965
1026
  fontSize: '16px',
@@ -987,14 +1048,12 @@ function Viewer2D(_ref, _ref2) {
987
1048
  id: "ruler_numberInput",
988
1049
  style: {
989
1050
  position: 'absolute',
990
- left: bbox.left - (150 - bbox.width) / 2,
991
- top: bbox.top - (50 - bbox.height) / 2,
1051
+ left: left,
1052
+ top: top,
992
1053
  zIndex: 1000
993
1054
  }
994
1055
  }, /*#__PURE__*/_react["default"].createElement(_formNumberInput["default"], {
995
1056
  style: {
996
- width: 150,
997
- height: 50,
998
1057
  textAlign: 'center',
999
1058
  padding: 'auto',
1000
1059
  fontSize: '16px',
@@ -1022,14 +1081,12 @@ function Viewer2D(_ref, _ref2) {
1022
1081
  id: "ruler_numberInput",
1023
1082
  style: {
1024
1083
  position: 'absolute',
1025
- left: bbox.left - (150 - bbox.width) / 2,
1026
- top: bbox.top - (50 - bbox.height) / 2,
1084
+ left: left,
1085
+ top: top,
1027
1086
  zIndex: 1000
1028
1087
  }
1029
1088
  }, /*#__PURE__*/_react["default"].createElement(_formNumberInput["default"], {
1030
1089
  style: {
1031
- width: 150,
1032
- height: 50,
1033
1090
  textAlign: 'center',
1034
1091
  paddingRight: 10,
1035
1092
  fontSize: '16px',
@@ -1057,14 +1114,12 @@ function Viewer2D(_ref, _ref2) {
1057
1114
  id: "ruler_numberInput",
1058
1115
  style: {
1059
1116
  position: 'absolute',
1060
- left: bbox.left - (150 - bbox.width) / 2,
1061
- top: bbox.top - (50 - bbox.height) / 2,
1117
+ left: left,
1118
+ top: top,
1062
1119
  zIndex: 1000
1063
1120
  }
1064
1121
  }, /*#__PURE__*/_react["default"].createElement(_formNumberInput["default"], {
1065
1122
  style: {
1066
- width: 150,
1067
- height: 50,
1068
1123
  textAlign: 'center',
1069
1124
  paddingRight: 10,
1070
1125
  fontSize: '16px',
@@ -1092,14 +1147,12 @@ function Viewer2D(_ref, _ref2) {
1092
1147
  id: "ruler_numberInput",
1093
1148
  style: {
1094
1149
  position: 'absolute',
1095
- left: bbox.left - (150 - bbox.width) / 2,
1096
- top: bbox.top - (50 - bbox.height) / 2,
1150
+ left: left,
1151
+ top: top,
1097
1152
  zIndex: 1000
1098
1153
  }
1099
1154
  }, /*#__PURE__*/_react["default"].createElement(_formNumberInput["default"], {
1100
1155
  style: {
1101
- width: 150,
1102
- height: 50,
1103
1156
  textAlign: 'center',
1104
1157
  paddingRight: 10,
1105
1158
  fontSize: '16px',
@@ -1126,8 +1179,8 @@ function Viewer2D(_ref, _ref2) {
1126
1179
  id: "ruler_numberInput",
1127
1180
  style: {
1128
1181
  position: 'absolute',
1129
- left: bbox.left - (150 - bbox.width) / 2,
1130
- top: bbox.top - (50 - bbox.height) / 2,
1182
+ left: left,
1183
+ top: top,
1131
1184
  zIndex: 1000
1132
1185
  }
1133
1186
  }, /*#__PURE__*/_react["default"].createElement(_formNumberInput["default"], {
@@ -1156,7 +1209,7 @@ function Viewer2D(_ref, _ref2) {
1156
1209
  break;
1157
1210
  case constants.MODE_WAITING_DRAWING_LINE:
1158
1211
  setdrawStart(true);
1159
- linesActions.beginDrawingLine(layerID, x, y, state.snapMask);
1212
+ linesActions.beginDrawingLine(layerID, x, y, state.snapMask, onInternalEvent);
1160
1213
  break;
1161
1214
  case constants.MODE_DRAWING_LINE:
1162
1215
  // Blocked 90 degree snap.
@@ -1170,13 +1223,16 @@ function Viewer2D(_ref, _ref2) {
1170
1223
  getConnectedLines();
1171
1224
  var endInfor = getEndPoint(vertices, x, y, 'END_DRAWIN_LINE');
1172
1225
  linesActions.endDrawingLine(endInfor.x, endInfor.y, state.snapMask);
1173
- linesActions.beginDrawingLine(layerID, endInfor.x, endInfor.y, state.snapMask);
1226
+ linesActions.beginDrawingLine(layerID, endInfor.x, endInfor.y, state.snapMask, onInternalEvent);
1174
1227
  break;
1175
1228
  case constants.MODE_DRAWING_HOLE:
1176
1229
  holesActions.endDrawingHole(layerID, x, y);
1177
1230
  break;
1178
1231
  case constants.MODE_DRAWING_ITEM:
1179
- itemsActions.endDrawingItem(layerID, endPoint.x, endPoint.y);
1232
+ {
1233
+ var itemData = state.getIn(['scene', 'layers', layerID, elementData === null || elementData === void 0 ? void 0 : elementData.prototype, elementData === null || elementData === void 0 ? void 0 : elementData.id]);
1234
+ itemsActions.endDrawingItem(layerID, itemData.isInitialPos ? itemData.x : endPoint.x, itemData.isInitialPos ? itemData.y : endPoint.y);
1235
+ }
1180
1236
  break;
1181
1237
  case constants.MODE_DRAGGING_LINE:
1182
1238
  linesActions.endDraggingLine(x, y, relatedLines, state.snapMask);
@@ -1197,24 +1253,45 @@ function Viewer2D(_ref, _ref2) {
1197
1253
  itemsActions.endRotatingItem(x, y);
1198
1254
  break;
1199
1255
  }
1256
+ if (internalType) {
1257
+ var _currentObject2;
1258
+ var _currentObject = state.getIn(['scene', 'layers', layerID, elementData === null || elementData === void 0 ? void 0 : elementData.prototype, elementData === null || elementData === void 0 ? void 0 : elementData.id]);
1259
+ if (internalType === _constants.INTERNAL_EVENT_SELECT_ELEMENT && ((_currentObject2 = _currentObject) === null || _currentObject2 === void 0 ? void 0 : _currentObject2.prototype) === 'items' && draggingDistance > constants.EPSILON) internalType = _constants.INTERNAL_EVENT_DRAG_ELEMENT;else if (internalType === _constants.INTERNAL_EVENT_DRAW_ELEMENT || draggingDistance > constants.EPSILON) {
1260
+ var elementID = state.getIn(['scene', 'layers', layerID, 'selected', elementPrototype]).first();
1261
+ _currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
1262
+ }
1263
+ if (_currentObject) {
1264
+ var payload = (0, _helper.updatePayloadOfInternalEvent)(_currentObject, layer, catalog);
1265
+
1266
+ // send selection event befor replace event
1267
+ if (internalType === constants.INTERNAL_EVENT_REPLACE_CABINET) {
1268
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1269
+ type: _constants.INTERNAL_EVENT_SELECT_ELEMENT,
1270
+ value: payload
1271
+ });
1272
+ }
1273
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1274
+ type: internalType,
1275
+ value: payload
1276
+ });
1277
+ }
1278
+ }
1200
1279
  event.stopPropagation();
1201
1280
  };
1202
1281
  var onChangeValue = function onChangeValue(value) {
1203
1282
  if (sFlag) return;
1204
1283
  var _zoomValue = parseInt((value.a - 0.5) / constants.ZOOM_VARIABLE);
1205
- if (_zoomValue > 404) return;
1284
+ if (_zoomValue > constants.MAX_ZOOM_IN_SCALE) return;
1206
1285
  if (_zoomValue < 0 || Number.isNaN(_zoomValue)) return;
1207
1286
  if (rulerEdit !== null && value.startX && value.startY || value.lastAction === 'zoom') {
1208
- var _rulerEdit = document.getElementById('ruler_numberInput'),
1287
+ var _rulerEdit = document.getElementById('ruler_numberInput') && document.getElementById('ruler_numberInput'),
1209
1288
  _rect;
1210
1289
  if (rulerEditID !== null) {
1211
- _rect = document.getElementById(rulerEditID);
1290
+ _rect = document.getElementById(rulerEditID) && document.getElementById(rulerEditID);
1212
1291
  }
1213
1292
  var bbox;
1214
1293
  if (_rect && _rulerEdit) {
1215
1294
  bbox = _rect.getBoundingClientRect();
1216
- // bbox.width = _rect.getBBox().width;
1217
- // bbox.height = _rect.getBBox().height;
1218
1295
  _rulerEdit.style.left = "".concat(bbox.left - (150 - bbox.width) / 2, "px");
1219
1296
  _rulerEdit.style.top = "".concat(bbox.top - (50 - bbox.height) / 2, "px");
1220
1297
  }