kitchen-simulator 2.0.15 → 2.0.17

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.
@@ -262,64 +262,21 @@ export default function LiteRenderer(props) {
262
262
  return _ref.apply(this, arguments);
263
263
  };
264
264
  }();
265
- var loadMoldings = /*#__PURE__*/function () {
265
+ var initCatalog = /*#__PURE__*/function () {
266
266
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
267
- var molding, toeMoldingData, moldingData, promises;
268
267
  return _regeneratorRuntime.wrap(function (_context2) {
269
268
  while (1) switch (_context2.prev = _context2.next) {
270
269
  case 0:
271
- molding = [];
272
- toeMoldingData = {};
273
- moldingData = {};
274
- if (moldingData.name = TOE_KICK_MOLDING) toeMoldingData = moldingData;
275
- promises = molding.map(function (child) {
276
- return new Promise(function (resolve, reject) {
277
- var url = child === null || child === void 0 ? void 0 : child.shape_svg;
278
- if (!url) return resolve();
279
- var loader = new SVGLoader();
280
- loader.load(url, function (data) {
281
- var _data$xml$viewBox$ani, _data$xml, _data$xml$viewBox$ani2, _data$xml2;
282
- child.data = {
283
- paths: data.paths,
284
- svg_width: (_data$xml$viewBox$ani = (_data$xml = data.xml) === null || _data$xml === void 0 || (_data$xml = _data$xml.viewBox) === null || _data$xml === void 0 || (_data$xml = _data$xml.animVal) === null || _data$xml === void 0 ? void 0 : _data$xml.width) !== null && _data$xml$viewBox$ani !== void 0 ? _data$xml$viewBox$ani : 0,
285
- svg_height: (_data$xml$viewBox$ani2 = (_data$xml2 = data.xml) === null || _data$xml2 === void 0 || (_data$xml2 = _data$xml2.viewBox) === null || _data$xml2 === void 0 || (_data$xml2 = _data$xml2.animVal) === null || _data$xml2 === void 0 ? void 0 : _data$xml2.height) !== null && _data$xml$viewBox$ani2 !== void 0 ? _data$xml$viewBox$ani2 : 0
286
- };
287
- resolve();
288
- }, null, function (error) {
289
- console.error(error);
290
- reject(error);
291
- });
292
- });
293
- });
294
- return _context2.abrupt("return", Promise.all(promises));
270
+ _context2.next = 1;
271
+ return initMyCatalog();
295
272
  case 1:
296
273
  case "end":
297
274
  return _context2.stop();
298
275
  }
299
276
  }, _callee2);
300
277
  }));
301
- return function loadMoldings() {
302
- return _ref2.apply(this, arguments);
303
- };
304
- }();
305
- var initCatalog = /*#__PURE__*/function () {
306
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
307
- return _regeneratorRuntime.wrap(function (_context3) {
308
- while (1) switch (_context3.prev = _context3.next) {
309
- case 0:
310
- _context3.next = 1;
311
- return initMyCatalog();
312
- case 1:
313
- _context3.next = 2;
314
- return loadMoldings();
315
- case 2:
316
- case "end":
317
- return _context3.stop();
318
- }
319
- }, _callee3);
320
- }));
321
278
  return function initCatalog() {
322
- return _ref3.apply(this, arguments);
279
+ return _ref2.apply(this, arguments);
323
280
  };
324
281
  }();
325
282
  initCatalog();
@@ -567,6 +567,7 @@ export default function Viewer2D(_ref, _ref2) {
567
567
  // let evt = new Event('mousemove-planner-event');
568
568
  // evt.viewerEvent = viewerEvent;
569
569
  // document.dispatchEvent(evt);
570
+ var elementPrototype, internalType;
570
571
  var _mapCursorPosition = mapCursorPosition(viewerEvent),
571
572
  x = _mapCursorPosition.x,
572
573
  y = _mapCursorPosition.y;
@@ -580,56 +581,168 @@ export default function Viewer2D(_ref, _ref2) {
580
581
  y: y - sPoint.y
581
582
  };
582
583
  projectActions.selectAll(differs);
583
- } else switch (mode) {
584
- case constants.MODE_DRAWING_LINE:
585
- // check whether the drawing line is started.
586
- if (drawStart || state.getIn(['scene', 'setLineAttributes'])) {
584
+ } else {
585
+ switch (mode) {
586
+ case constants.MODE_DRAWING_LINE:
587
+ elementPrototype = 'lines';
588
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
589
+ break;
590
+ case constants.MODE_DRAWING_HOLE:
591
+ elementPrototype = 'holes';
592
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
593
+ break;
594
+ case constants.MODE_DRAWING_ITEM:
595
+ elementPrototype = 'items';
596
+ internalType = INTERNAL_EVENT_DRAW_ELEMENT;
597
+ break;
598
+ case constants.MODE_DRAGGING_HOLE:
599
+ elementPrototype = 'holes';
600
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
601
+ break;
602
+ case constants.MODE_DRAGGING_LINE:
603
+ elementPrototype = 'lines';
604
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
605
+ break;
606
+ case constants.MODE_DRAGGING_VERTEX:
607
+ elementPrototype = 'lines';
608
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
609
+ break;
610
+ case constants.MODE_DRAGGING_ITEM:
611
+ elementPrototype = 'items';
612
+ internalType = INTERNAL_EVENT_DRAG_ELEMENT;
613
+ break;
614
+ case constants.MODE_ROTATING_ITEM:
615
+ elementPrototype = 'items';
616
+ internalType = INTERNAL_EVENT_ROTATE_ELEMENT;
617
+ break;
618
+ }
619
+ switch (mode) {
620
+ case constants.MODE_DRAWING_LINE:
621
+ // check whether the drawing line is started.
587
622
  var lineID = state.getIn(['scene', 'layers', layerID, 'selected', 'lines']).first();
588
- var _vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
589
623
  var lines = state.getIn(['scene', 'layers', layerID, 'lines']).toJS();
590
624
  var drawingLine = state.getIn(['scene', 'layers', layerID, 'lines', lineID]).toJS();
591
625
  var tlines = [];
592
- setdrawStart(false);
593
- // get the lines that have same points with drawing line.
594
- getRelatedLines(tlines, drawingLine, _vertices, lines);
595
- setRelatedLines(tlines);
596
- linesActions.updateDrawingLine(x, y, tlines, state.snapMask);
597
- } else {
598
- linesActions.updateDrawingLine(x, y, relatedLines, state.snapMask);
599
- }
600
- // Blocked 90 degree snap.
601
- // let prevVertexID = state.getIn(['scene', 'layers', layerID, 'selected', 'vertices']).toJS()[0];
602
- // let prevVertex = state.getIn(['scene', 'layers', layerID, 'vertices', prevVertexID]);
603
- // let dx = Math.abs(x - prevVertex.x);
604
- // let dy = Math.abs(y - prevVertex.y);
605
- // if (dx > dy) y = prevVertex.y
606
- // else x = prevVertex.x;
607
- break;
608
- case constants.MODE_DRAWING_HOLE:
609
- holesActions.updateDrawingHole(layerID, x, y);
610
- break;
611
- case constants.MODE_DRAWING_ITEM:
612
- var _layer = scene.layers.get(layerID);
613
- var flag = false;
614
- _layer.items.some(function (item) {
615
- if (item.selected) {
616
- item.counterTop.uri = _layer.counterTop.uri;
617
- current_sel_obj_id = item.id;
618
- flag = true;
626
+ if (drawStart || state.getIn(['scene', 'setLineAttributes'])) {
627
+ var _vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
628
+ setdrawStart(false);
629
+ // get the lines that have same points with drawing line.
630
+ getRelatedLines(tlines, drawingLine, _vertices, lines);
631
+ setRelatedLines(tlines);
632
+ linesActions.updateDrawingLine(x, y, tlines, state.snapMask);
633
+ } else {
634
+ linesActions.updateDrawingLine(x, y, relatedLines, state.snapMask);
619
635
  }
620
- });
621
- if (current_sel_obj_id === null || !flag) {
622
- itemsActions.updateDrawingItem(layerID, x, y);
623
- endPoint.x = x;
624
- endPoint.y = y;
625
- } else {
636
+
637
+ // Blocked 90 degree snap.
638
+ // let prevVertexID = state.getIn(['scene', 'layers', layerID, 'selected', 'vertices']).toJS()[0];
639
+ // let prevVertex = state.getIn(['scene', 'layers', layerID, 'vertices', prevVertexID]);
640
+ // let dx = Math.abs(x - prevVertex.x);
641
+ // let dy = Math.abs(y - prevVertex.y);
642
+ // if (dx > dy) y = prevVertex.y
643
+ // else x = prevVertex.x;
644
+ break;
645
+ case constants.MODE_DRAWING_HOLE:
646
+ holesActions.updateDrawingHole(layerID, x, y);
647
+ break;
648
+ case constants.MODE_DRAWING_ITEM:
649
+ var _layer = scene.layers.get(layerID);
650
+ var flag = false;
651
+ _layer.items.some(function (item) {
652
+ if (item.selected) {
653
+ item.counterTop.uri = _layer.counterTop.uri;
654
+ current_sel_obj_id = item.id;
655
+ flag = true;
656
+ }
657
+ });
658
+ if (current_sel_obj_id === null || !flag) {
659
+ itemsActions.updateDrawingItem(layerID, x, y);
660
+ endPoint.x = x;
661
+ endPoint.y = y;
662
+ } else {
663
+ prepareSnap();
664
+ var _GeometryUtils$calcSn = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
665
+ nx = _GeometryUtils$calcSn.nx,
666
+ ny = _GeometryUtils$calcSn.ny,
667
+ rot = _GeometryUtils$calcSn.rot,
668
+ rotRad = _GeometryUtils$calcSn.rotRad;
669
+ var _val = {
670
+ pos: {
671
+ x: x,
672
+ y: y
673
+ },
674
+ rotRad: rotRad,
675
+ size: allItemRect.cur && allItemRect.cur.size,
676
+ layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
677
+ is_corner: allItemRect.cur && allItemRect.cur.is_corner
678
+ };
679
+ var _GeometryUtils$getAll = GeometryUtils.getAllHoleRect(scene, _val),
680
+ _isSect = _GeometryUtils$getAll.isSect,
681
+ _snap = _GeometryUtils$getAll.snap;
682
+ if (!isEmpty(_snap) && _isSect) {
683
+ if (_snap.length == 1) _val.pos = {
684
+ x: _snap[0].x,
685
+ y: _snap[0].y
686
+ };else {
687
+ 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 = {
688
+ x: _snap[0].x,
689
+ y: _snap[0].y
690
+ };else _val.pos = {
691
+ x: _snap[1].x,
692
+ y: _snap[1].y
693
+ };
694
+ }
695
+ var interSect = GeometryUtils.validInterSect(allItemRect.others, _val);
696
+ if (interSect) {
697
+ nx = _val.pos.x;
698
+ ny = _val.pos.y;
699
+ }
700
+ }
701
+ _val.pos = {
702
+ x: nx,
703
+ y: ny
704
+ };
705
+ var _isrectSect = GeometryUtils.validInterSect(allItemRect.others, _val);
706
+ if (_isrectSect && _isSect) {
707
+ itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
708
+ itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
709
+ endPoint.x = nx;
710
+ endPoint.y = ny;
711
+ }
712
+ if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('cabinet')) {
713
+ itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
714
+ itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
715
+ endPoint.x = nx;
716
+ endPoint.y = ny;
717
+ }
718
+ 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')) {
719
+ itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
720
+ itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
721
+ endPoint.x = nx;
722
+ endPoint.y = ny;
723
+ }
724
+ }
725
+ break;
726
+ case constants.MODE_DRAGGING_HOLE:
727
+ holesActions.updateDraggingHole(x, y);
728
+ break;
729
+ case constants.MODE_DRAGGING_LINE:
730
+ linesActions.updateDraggingLine(x, y, relatedLines, state.snapMask);
731
+ break;
732
+ case constants.MODE_DRAGGING_VERTEX:
733
+ var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
734
+ getConnectedLines();
735
+ var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
736
+ verticesActions.updateDraggingVertex(result.x, result.y, state.snapMask);
737
+ break;
738
+ case constants.MODE_DRAGGING_ITEM:
626
739
  prepareSnap();
627
- var _GeometryUtils$calcSn = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
628
- nx = _GeometryUtils$calcSn.nx,
629
- ny = _GeometryUtils$calcSn.ny,
630
- rot = _GeometryUtils$calcSn.rot,
631
- rotRad = _GeometryUtils$calcSn.rotRad;
632
- var _val = {
740
+ var _GeometryUtils$calcSn2 = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
741
+ nx = _GeometryUtils$calcSn2.nx,
742
+ ny = _GeometryUtils$calcSn2.ny,
743
+ rot = _GeometryUtils$calcSn2.rot,
744
+ rotRad = _GeometryUtils$calcSn2.rotRad;
745
+ var val = {
633
746
  pos: {
634
747
  x: x,
635
748
  y: y
@@ -639,125 +752,58 @@ export default function Viewer2D(_ref, _ref2) {
639
752
  layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
640
753
  is_corner: allItemRect.cur && allItemRect.cur.is_corner
641
754
  };
642
- var _GeometryUtils$getAll = GeometryUtils.getAllHoleRect(scene, _val),
643
- _isSect = _GeometryUtils$getAll.isSect,
644
- _snap = _GeometryUtils$getAll.snap;
645
- if (!isEmpty(_snap) && _isSect) {
646
- if (_snap.length == 1) _val.pos = {
647
- x: _snap[0].x,
648
- y: _snap[0].y
649
- };else {
650
- 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 = {
651
- x: _snap[0].x,
652
- y: _snap[0].y
653
- };else _val.pos = {
654
- x: _snap[1].x,
655
- y: _snap[1].y
755
+ var _GeometryUtils$getAll2 = GeometryUtils.getAllHoleRect(scene, val),
756
+ isSect = _GeometryUtils$getAll2.isSect,
757
+ snap = _GeometryUtils$getAll2.snap;
758
+ if (!isEmpty(snap) && isSect) {
759
+ if (snap.length == 1) val.pos = {
760
+ x: snap[0].x,
761
+ y: snap[0].y
762
+ };else if (snap.length == 2) {
763
+ 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 = {
764
+ x: snap[0].x,
765
+ y: snap[0].y
766
+ };else val.pos = {
767
+ x: snap[1].x,
768
+ y: snap[1].y
656
769
  };
657
770
  }
658
- var interSect = GeometryUtils.validInterSect(allItemRect.others, _val);
659
- if (interSect) {
660
- nx = _val.pos.x;
661
- ny = _val.pos.y;
771
+ var _interSect = GeometryUtils.validInterSect(allItemRect.others, val);
772
+ if (_interSect) {
773
+ nx = val.pos.x;
774
+ ny = val.pos.y;
662
775
  }
663
776
  }
664
- _val.pos = {
777
+ val.pos = {
665
778
  x: nx,
666
779
  y: ny
667
780
  };
668
- var _isrectSect = GeometryUtils.validInterSect(allItemRect.others, _val);
669
- if (_isrectSect && _isSect) {
781
+ var isrectSect = GeometryUtils.validInterSect(allItemRect.others, val);
782
+ if (isrectSect && isSect) {
670
783
  itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
671
784
  itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
672
- endPoint.x = nx;
673
- endPoint.y = ny;
674
785
  }
675
- if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('cabinet')) {
786
+ if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cabinet')) {
676
787
  itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
677
788
  itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
678
- endPoint.x = nx;
679
- endPoint.y = ny;
680
789
  }
681
790
  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')) {
682
791
  itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
683
792
  itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
684
- endPoint.x = nx;
685
- endPoint.y = ny;
686
- }
687
- }
688
- break;
689
- case constants.MODE_DRAGGING_HOLE:
690
- holesActions.updateDraggingHole(x, y);
691
- break;
692
- case constants.MODE_DRAGGING_LINE:
693
- linesActions.updateDraggingLine(x, y, relatedLines, state.snapMask);
694
- break;
695
- case constants.MODE_DRAGGING_VERTEX:
696
- var vertices = state.getIn(['scene', 'layers', layerID, 'vertices']).toJS();
697
- getConnectedLines();
698
- var result = getEndPoint(vertices, x, y, 'DRAGGING_VERTEX');
699
- verticesActions.updateDraggingVertex(result.x, result.y, state.snapMask);
700
- break;
701
- case constants.MODE_DRAGGING_ITEM:
702
- prepareSnap();
703
- var _GeometryUtils$calcSn2 = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, x, y, allArea),
704
- nx = _GeometryUtils$calcSn2.nx,
705
- ny = _GeometryUtils$calcSn2.ny,
706
- rot = _GeometryUtils$calcSn2.rot,
707
- rotRad = _GeometryUtils$calcSn2.rotRad;
708
- var val = {
709
- pos: {
710
- x: x,
711
- y: y
712
- },
713
- rotRad: rotRad,
714
- size: allItemRect.cur && allItemRect.cur.size,
715
- layoutpos: allItemRect.cur && allItemRect.cur.layoutpos,
716
- is_corner: allItemRect.cur && allItemRect.cur.is_corner
717
- };
718
- var _GeometryUtils$getAll2 = GeometryUtils.getAllHoleRect(scene, val),
719
- isSect = _GeometryUtils$getAll2.isSect,
720
- snap = _GeometryUtils$getAll2.snap;
721
- if (!isEmpty(snap) && isSect) {
722
- if (snap.length == 1) val.pos = {
723
- x: snap[0].x,
724
- y: snap[0].y
725
- };else if (snap.length == 2) {
726
- 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 = {
727
- x: snap[0].x,
728
- y: snap[0].y
729
- };else val.pos = {
730
- x: snap[1].x,
731
- y: snap[1].y
732
- };
733
- }
734
- var _interSect = GeometryUtils.validInterSect(allItemRect.others, val);
735
- if (_interSect) {
736
- nx = val.pos.x;
737
- ny = val.pos.y;
738
793
  }
739
- }
740
- val.pos = {
741
- x: nx,
742
- y: ny
743
- };
744
- var isrectSect = GeometryUtils.validInterSect(allItemRect.others, val);
745
- if (isrectSect && isSect) {
746
- itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
747
- itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
748
- }
749
- if (allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cook Top') || allItemRect.cur && allItemRect.cur.itemInfo.name.includes('Cabinet')) {
750
- itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
751
- itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
752
- }
753
- 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')) {
754
- itemsActions.updateDraggingItemChanged(nx, ny, layerID, current_sel_obj_id);
755
- itemsActions.updateRotatingItemChanged(rot, layerID, current_sel_obj_id);
756
- }
757
- break;
758
- case constants.MODE_ROTATING_ITEM:
759
- itemsActions.updateRotatingItem(x, y);
760
- break;
794
+ break;
795
+ case constants.MODE_ROTATING_ITEM:
796
+ itemsActions.updateRotatingItem(x, y);
797
+ break;
798
+ }
799
+ }
800
+ if (!isEmpty(elementPrototype)) {
801
+ var elementID = state.getIn(['scene', 'layers', layerID, 'selected', elementPrototype]).first();
802
+ var currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
803
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
804
+ type: internalType,
805
+ value: currentObject === null || currentObject === void 0 ? void 0 : currentObject.toJS()
806
+ });
761
807
  }
762
808
  viewerEvent.originalEvent.stopPropagation();
763
809
  };
@@ -779,6 +825,10 @@ export default function Viewer2D(_ref, _ref2) {
779
825
  return;
780
826
  }
781
827
  }
828
+ if (mode === constants.MODE_DRAWING_ITEM) {
829
+ endPoint.x = x;
830
+ endPoint.y = y;
831
+ }
782
832
  if (mode === constants.MODE_IDLE) {
783
833
  var elementData = extractElementData(event.target);
784
834
  if (!elementData) return;
@@ -818,9 +868,22 @@ export default function Viewer2D(_ref, _ref2) {
818
868
  break;
819
869
  }
820
870
  var currentObject = state.getIn(['scene', 'layers', layerID, elementData.prototype, elementData.id]);
871
+ if (elementData.prototype === 'lines' && currentObject) {
872
+ // caculating length of selected line//
873
+ var v_a = layer.vertices.get(currentObject.vertices.get(0));
874
+ var v_b = layer.vertices.get(currentObject.vertices.get(1));
875
+ var distance = GeometryUtils.pointsDistance(v_a.x, v_a.y, v_b.x, v_b.y);
876
+ var _length = convert(distance).from('cm').to('in');
877
+ elementData.length = _length;
878
+ //////////////////////////////////////
879
+ }
880
+ // Adding length field to internal event payload when selected lines
881
+ var payloadValue = (elementData === null || elementData === void 0 ? void 0 : elementData.prototype) === 'lines' ? _objectSpread(_objectSpread({}, currentObject === null || currentObject === void 0 ? void 0 : currentObject.toJS()), {}, {
882
+ length: elementData === null || elementData === void 0 ? void 0 : elementData.length
883
+ }) : currentObject === null || currentObject === void 0 ? void 0 : currentObject.toJS();
821
884
  onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
822
885
  type: INTERNAL_EVENT_SELECT_ELEMENT,
823
- value: currentObject === null || currentObject === void 0 ? void 0 : currentObject.toJS()
886
+ value: payloadValue
824
887
  });
825
888
  } else {
826
889
  sPoint.x = x;
@@ -944,6 +1007,10 @@ export default function Viewer2D(_ref, _ref2) {
944
1007
  if (document.getElementById('setting_dialog')) {
945
1008
  document.getElementById('setting_dialog').style.display = 'none';
946
1009
  }
1010
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1011
+ type: constants.INTERNAL_EVENT_REPLACE_CABINET,
1012
+ value: state.getIn(['scene', 'layers', layerID, 'items', elementData.id]).toJS()
1013
+ });
947
1014
  itemsActions.selectItem(elementData.layer, elementData.id);
948
1015
  replaceCabinet(true);
949
1016
  break;
@@ -1251,7 +1318,7 @@ export default function Viewer2D(_ref, _ref2) {
1251
1318
  var onChangeValue = function onChangeValue(value) {
1252
1319
  if (sFlag) return;
1253
1320
  var _zoomValue = parseInt((value.a - 0.5) / constants.ZOOM_VARIABLE);
1254
- if (_zoomValue > 404) return;
1321
+ if (_zoomValue > constants.MAX_ZOOM_IN_SCALE) return;
1255
1322
  if (_zoomValue < 0 || Number.isNaN(_zoomValue)) return;
1256
1323
  if (rulerEdit !== null && value.startX && value.startY || value.lastAction === 'zoom') {
1257
1324
  var _rulerEdit = document.getElementById('ruler_numberInput'),
package/es/constants.js CHANGED
@@ -693,6 +693,10 @@ export var ATT_HOLE_OFFSET_B = 'offsetB';
693
693
  export var PROP_FLIP_DOOR_HANDLE = 'flip_doorhandle';
694
694
  export var PROP_OPEN_DOORS = 'open_doors';
695
695
  export var PROP_ALTITUDE = 'altitude';
696
+ export var PROP_RESIZE_WIDTH = 'width';
697
+ export var PROP_RESIZE_HEIGHT = 'height';
698
+ export var PROP_RESIZE_DEPTH = 'depth';
699
+ export var MAX_ZOOM_IN_SCALE = Infinity;
696
700
 
697
701
  // external event type
698
702
  export var EXTERNAL_EVENT_SYNC_SCENE = 'EXTERNAL_EVENT_SYNC_SCENE'; // Host request the scene data to 3DTool for sync : Host -> 3DTool
@@ -723,10 +727,12 @@ export var EXTERNAL_EVENT_DUPLICATE_ELEMENT = 'EXTERNAL_EVENT_DUPLICATE_ELEMENT'
723
727
  export var EXTERNAL_EVENT_DELETE_ELEMENT = 'EXTERNAL_EVENT_DELETE_ELEMENT';
724
728
  export var EXTERNAL_EVENT_UPDATE_ATTRIBUTE = 'EXTERNAL_EVENT_UPDATE_ATTRIBUTE'; // update the element's attributes (distance, rotation...) in the property window
725
729
  export var EXTERNAL_EVENT_UPDATE_PROPERTY = 'EXTERNAL_EVENT_UPDATE_PROPERTY'; // update the element's property (flip_doorhandle, open_doors...) in the property window
730
+ export var EXTERNAL_EVENT_REPLACE_CABINET = 'EXTERNAL_EVENT_REPLACE_CABINET';
726
731
 
727
732
  // internal event type
728
733
  export var INTERNAL_EVENT_UNSELECT_ALL = 'INTERNAL_EVENT_UNSELECT_ALL';
729
734
  export var INTERNAL_EVENT_SELECT_ELEMENT = 'INTERNAL_EVENT_SELECT_ELEMENT';
730
735
  export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
731
736
  export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
732
- export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
737
+ export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
738
+ export var INTERNAL_EVENT_REPLACE_CABINET = 'INTERNAL_EVENT_REPLACE_CABINET';
@@ -12,10 +12,11 @@ import doorStylePaylod2 from "./mocks/doorStylePayload2.json";
12
12
  import itemCDSPayload from "./mocks/itemCDSPayload.json";
13
13
  import rectangleData from "./mocks/rectangleShape.json";
14
14
  import moldingPayload from "./mocks/moldingPayload.json";
15
+ import replaceCabinetPayload from "./mocks/replaceCabinetPayload.json";
15
16
  import ReactDOM from 'react-dom';
16
17
  import LiteRenderer from "./LiteRenderer";
17
18
  import { Button } from 'antd';
18
- import { LEFT, RIGHT, TOP, BOTTOM, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_SET_INITIAL_DATA, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, BACK_DIST_ANG, ATT_ITEM_POS, ATT_ITEM_ROTATION, ATT_LINE_LENGTH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, HOLE_NAMES, EXTERNAL_EVENT_CENTERING_2D, PROP_ALTITUDE, EXTERNAL_EVENT_DUPLICATE_ELEMENT, ELEMENT_ITEM, EXTERNAL_EVENT_DELETE_ELEMENT } from "./constants";
19
+ import { LEFT, RIGHT, TOP, BOTTOM, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_SET_INITIAL_DATA, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, BACK_DIST_ANG, ATT_ITEM_POS, ATT_ITEM_ROTATION, ATT_LINE_LENGTH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, HOLE_NAMES, EXTERNAL_EVENT_CENTERING_2D, PROP_ALTITUDE, EXTERNAL_EVENT_DUPLICATE_ELEMENT, ELEMENT_ITEM, EXTERNAL_EVENT_DELETE_ELEMENT, PROP_RESIZE_WIDTH, EXTERNAL_EVENT_REPLACE_CABINET } from "./constants";
19
20
 
20
21
  // --- renderer props ---
21
22
  var options = {
@@ -458,7 +459,35 @@ function WorkSpace(props) {
458
459
  };
459
460
  setExternalEvent(evt);
460
461
  }
461
- }, "Centering Viewer2D")), /*#__PURE__*/React.createElement(LiteRenderer, {
462
+ }, "Centering Viewer2D"), /*#__PURE__*/React.createElement(Button, {
463
+ actionType: "danger",
464
+ onClick: function onClick() {
465
+ var evt = {
466
+ type: EXTERNAL_EVENT_UPDATE_PROPERTY,
467
+ payload: {
468
+ propertyName: PROP_RESIZE_WIDTH,
469
+ // this property should be Map
470
+ value: new Map({
471
+ length: 68.57999780544007,
472
+ // cm
473
+ _length: 27,
474
+ // inch
475
+ _unit: 'in'
476
+ })
477
+ }
478
+ };
479
+ setExternalEvent(evt);
480
+ }
481
+ }, "Change width to 27\""), /*#__PURE__*/React.createElement(Button, {
482
+ actionType: "danger",
483
+ onClick: function onClick() {
484
+ var evt = {
485
+ type: EXTERNAL_EVENT_REPLACE_CABINET,
486
+ payload: replaceCabinetPayload // B12 Data
487
+ };
488
+ setExternalEvent(evt);
489
+ }
490
+ }, "Replace cabinet to B12")), /*#__PURE__*/React.createElement(LiteRenderer, {
462
491
  width: props.width,
463
492
  height: props.height,
464
493
  configData: mockProps.configData,