kitchen-simulator 2.0.5-flip-handle-open-door → 2.0.7-unselected-drag

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.
@@ -61,7 +61,7 @@ var STYLE_FNT0 = {
61
61
  };
62
62
  var EPSILON = 3;
63
63
  export default {
64
- name: 'Closet',
64
+ name: 'Closet Door',
65
65
  prototype: 'holes',
66
66
  info: {
67
67
  title: 'Closet',
@@ -62,7 +62,7 @@ var STYLE_FNT0 = {
62
62
  };
63
63
  var EPSILON = 3;
64
64
  export default {
65
- name: 'Exterior',
65
+ name: 'Exterior Door',
66
66
  prototype: 'holes',
67
67
  info: {
68
68
  title: 'Exterior',
@@ -62,7 +62,7 @@ var STYLE_FNT0 = {
62
62
  };
63
63
  var EPSILON = 3;
64
64
  export default {
65
- name: 'Interior',
65
+ name: 'Interior Door',
66
66
  prototype: 'holes',
67
67
  info: {
68
68
  title: 'Interior',
@@ -8,7 +8,7 @@ import { loadGLTF } from "../../utils/load-obj";
8
8
  import { OBJTYPE_MESH } from "../../../constants";
9
9
  var cached3DDoor = null;
10
10
  export default {
11
- name: 'Sliding',
11
+ name: 'Sliding Door',
12
12
  prototype: 'holes',
13
13
  info: {
14
14
  tag: ['door'],
@@ -16,7 +16,7 @@ var STYLE_HOLE_SELECTED = {
16
16
  };
17
17
  var EPSILON = 3;
18
18
  export default {
19
- name: 'window-vertical',
19
+ name: 'Vertical Window',
20
20
  prototype: 'holes',
21
21
  info: {
22
22
  tag: ['window'],
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Viewer2D from "./viewer2d/viewer2d";
4
4
  import Viewer3D from "./viewer3d/viewer3d";
@@ -20,6 +20,14 @@ export default function Content(_ref, _ref2) {
20
20
  onInternalEvent = _ref.onInternalEvent;
21
21
  var projectActions = _ref2.projectActions;
22
22
  var mode = state.get('mode');
23
+
24
+ // Internal Event for unselect_all
25
+ useEffect(function () {
26
+ if (state.getIn(['scene', 'layers', 'layer-1', 'selected', 'vertices']).size + state.getIn(['scene', 'layers', 'layer-1', 'selected', 'lines']).size + state.getIn(['scene', 'layers', 'layer-1', 'selected', 'holes']).size + state.getIn(['scene', 'layers', 'layer-1', 'selected', 'areas']).size + state.getIn(['scene', 'layers', 'layer-1', 'selected', 'items']).size < 1) onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
27
+ type: constants.INTERNAL_EVENT_UNSELECT_ALL,
28
+ value: null
29
+ });
30
+ }, [state.getIn(['scene', 'layers', 'layer-1', 'selected'])]);
23
31
  switch (mode) {
24
32
  // this mode is when view elevation
25
33
  case constants.MODE_ELEVATION_VIEW:
@@ -20,6 +20,7 @@ import { isEmpty } from "../../utils/helper"; // variables
20
20
  var pinFlag = false;
21
21
  var sFlag = false; //for all object move
22
22
  var sPoint = {}; //for all object move
23
+ var mouseDownPoint = {}; // mouse clicked point
23
24
  var endPoint = {};
24
25
  var current_sel_obj_id = null;
25
26
  var allItemRect;
@@ -781,6 +782,10 @@ export default function Viewer2D(_ref, _ref2) {
781
782
  if (mode === constants.MODE_IDLE) {
782
783
  var elementData = extractElementData(event.target);
783
784
  if (!elementData) return;
785
+ mouseDownPoint = {
786
+ x: x,
787
+ y: y
788
+ };
784
789
  if (sCount < 2) {
785
790
  switch (elementData.prototype) {
786
791
  case 'lines':
@@ -1232,7 +1237,8 @@ export default function Viewer2D(_ref, _ref2) {
1232
1237
  itemsActions.endRotatingItem(x, y);
1233
1238
  break;
1234
1239
  }
1235
- if (elementPrototype) {
1240
+ var draggingDistance = Math.sqrt((x - mouseDownPoint.x) * (x - mouseDownPoint.x) + (y - mouseDownPoint.y) * (y - mouseDownPoint.y));
1241
+ if (elementPrototype && draggingDistance > constants.EPSILON) {
1236
1242
  elementID = state.getIn(['scene', 'layers', layerID, 'selected', elementPrototype]).first();
1237
1243
  var _currentObject = state.getIn(['scene', 'layers', layerID, elementPrototype, elementID]);
1238
1244
  onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
package/es/constants.js CHANGED
@@ -653,6 +653,18 @@ export var PROJECT_SETTING_OPTION = {
653
653
  CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
654
654
  CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE
655
655
  };
656
+ export var HOLE_NAMES = {
657
+ WINDOW_CLEAR: 'Window',
658
+ WINDOW_CROSS: 'Cross Window',
659
+ WINDOW_DOUBLE_HUNG: 'Double Hung Window',
660
+ WINDOW_VERTICAL: 'Vertical Window',
661
+ DOOR_CLOSET: 'Closet Door',
662
+ DOOR_EXTERIOR: 'Exterior Door',
663
+ DOOR_INTERIOR: 'Interior Door',
664
+ DOOR_SLIDING: 'Sliding Door',
665
+ DOOR_FRAMED: 'Framed Doorway',
666
+ DOOR_FRAMELESS: 'FrameLess Doorway'
667
+ };
656
668
 
657
669
  // direction type
658
670
  export var LEFT = 'Left';
@@ -690,6 +702,7 @@ export var EXTERNAL_EVENT_TOGGLE_TO_2D = 'EXTERNAL_EVENT_TOGGLE_TO_2D';
690
702
  export var EXTERNAL_EVENT_TOGGLE_TO_ELEVATION = 'EXTERNAL_EVENT_TOGGLE_TO_ELEVATION';
691
703
  export var EXTERNAL_EVENT_ADD_WALL = 'EXTERNAL_EVENT_ADD_WALL';
692
704
  export var EXTERNAL_EVENT_ADD_ITEM = 'EXTERNAL_EVENT_ADD_ITEM';
705
+ export var EXTERNAL_EVENT_ADD_HOLE = 'EXTERNAL_EVENT_ADD_HOLE';
693
706
  export var EXTERNAL_EVENT_MOVE_PAN = 'EXTERNAL_EVENT_MOVE_PAN';
694
707
  export var EXTERNAL_EVENT_NEW_PROJECT = 'EXTERNAL_EVENT_NEW_PROJECT';
695
708
  export var EXTERNAL_EVENT_CHANGE_DOORSTYLE = 'EXTERNAL_EVENT_CHANGE_DOORSTYLE';
@@ -705,6 +718,7 @@ export var EXTERNAL_EVENT_UPDATE_ATTRIBUTE = 'EXTERNAL_EVENT_UPDATE_ATTRIBUTE';
705
718
  export var EXTERNAL_EVENT_UPDATE_PROPERTY = 'EXTERNAL_EVENT_UPDATE_PROPERTY'; // update the element's property (flip_doorhandle, open_doors...) in the property window
706
719
 
707
720
  // internal event type
721
+ export var INTERNAL_EVENT_UNSELECT_ALL = 'INTERNAL_EVENT_UNSELECT_ALL';
708
722
  export var INTERNAL_EVENT_SELECT_ELEMENT = 'INTERNAL_EVENT_SELECT_ELEMENT';
709
723
  export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
710
724
  export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
@@ -5,8 +5,8 @@ import React, { useState, useEffect } from 'react';
5
5
  import ContainerDimensions from 'react-container-dimensions';
6
6
  import projectItemsCatalog from "./mocks/projectItemsCatalog.json";
7
7
  import mockProps from "./mocks/mockProps.json";
8
- import mockDataBundle from "./mocks/dataBundle2.json";
9
8
  import cabinetPaylod from "./mocks/cabinetPayload2.json";
9
+ import appliancePaylod from "./mocks/appliancePayload.json";
10
10
  import doorStylePaylod2 from "./mocks/doorStylePayload2.json";
11
11
  import itemCDSPayload from "./mocks/itemCDSPayload.json";
12
12
  import rectangleData from "./mocks/rectangleShape.json";
@@ -15,7 +15,7 @@ import distancePayload from "./mocks/distancePayload.json";
15
15
  import ReactDOM from 'react-dom';
16
16
  import LiteRenderer from "./LiteRenderer";
17
17
  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_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, 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 } from "./constants";
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 } from "./constants";
19
19
 
20
20
  // --- renderer props ---
21
21
  var options = {
@@ -371,7 +371,38 @@ function WorkSpace(props) {
371
371
  };
372
372
  setExternalEvent(evt);
373
373
  }
374
- }, "Open Doors")), /*#__PURE__*/React.createElement(LiteRenderer, {
374
+ }, "Open Doors"), /*#__PURE__*/React.createElement(Button, {
375
+ actionType: "danger",
376
+ onClick: function onClick() {
377
+ var evt = {
378
+ type: EXTERNAL_EVENT_ADD_HOLE,
379
+ payload: {
380
+ holeName: HOLE_NAMES.WINDOW_CROSS
381
+ }
382
+ };
383
+ setExternalEvent(evt);
384
+ }
385
+ }, "Add Hole (Cross Window)"), /*#__PURE__*/React.createElement(Button, {
386
+ actionType: "danger",
387
+ onClick: function onClick() {
388
+ var evt = {
389
+ type: EXTERNAL_EVENT_ADD_HOLE,
390
+ payload: {
391
+ holeName: HOLE_NAMES.DOOR_EXTERIOR
392
+ }
393
+ };
394
+ setExternalEvent(evt);
395
+ }
396
+ }, "Add Hole (DOOR_EXTERIOR)"), /*#__PURE__*/React.createElement(Button, {
397
+ actionType: "danger",
398
+ onClick: function onClick() {
399
+ var evt = {
400
+ type: EXTERNAL_EVENT_ADD_ITEM,
401
+ payload: appliancePaylod
402
+ };
403
+ setExternalEvent(evt);
404
+ }
405
+ }, "Add Appliance (30 Bottom Freezer)")), /*#__PURE__*/React.createElement(LiteRenderer, {
375
406
  width: props.width,
376
407
  height: props.height,
377
408
  projectElement: mockProps.projectElement,
@@ -5,13 +5,14 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
5
5
  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
6
  import _regeneratorRuntime from "@babel/runtime/regenerator";
7
7
  import { Map } from 'immutable';
8
- import { EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, MODE_IDLE, MODE_2D_PAN, EXTERNAL_EVENT_ADD_ITEM, ARRAY_3D_MODES, MODE_IDLE_3D, MODE_ELEVATION_VIEW, MODE_DRAWING_LINE, TOP, BOTTOM, LEFT, RIGHT, 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, ZOOM_VARIABLE, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, INTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, ATT_ITEM_POS, ATT_LINE_LENGTH, ATT_VERTEXT_ONE, ATT_VERTEXT_TWO, ATT_HOLE_OFFSET_A, ATT_HOLE_OFFSET_B, UNIT_CENTIMETER, UNIT_INCH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS } from "../constants";
8
+ import { EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, MODE_IDLE, MODE_2D_PAN, EXTERNAL_EVENT_ADD_ITEM, ARRAY_3D_MODES, MODE_IDLE_3D, MODE_ELEVATION_VIEW, MODE_DRAWING_LINE, TOP, BOTTOM, LEFT, RIGHT, 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, ZOOM_VARIABLE, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, INTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, ATT_ITEM_POS, ATT_LINE_LENGTH, ATT_VERTEXT_ONE, ATT_VERTEXT_TWO, ATT_HOLE_OFFSET_A, ATT_HOLE_OFFSET_B, UNIT_CENTIMETER, UNIT_INCH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE } from "../constants";
9
9
  import { isEmpty } from "./helper";
10
10
  import exporter from "../catalog/utils/exporter";
11
- import { render2DItem, render3DItem } from "../catalog/utils/item-loader";
11
+ import { render2DItem, render3DItem, render3DApplianceItem, render3DLightingItem } from "../catalog/utils/item-loader";
12
12
  import { convert } from "./convert-units-lite";
13
13
  import { GeometryUtils } from "./export";
14
14
  import { returnReplaceableDeepSearchType } from "../components/viewer2d/utils";
15
+ import { SVGLoader } from 'three/addons/loaders/SVGLoader';
15
16
  var PRECISION = 2;
16
17
  var loadSVGsByItem = /*#__PURE__*/function () {
17
18
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(item) {
@@ -445,7 +446,7 @@ function _parseTempPlaceholdersFromCabinetPayload() {
445
446
  }
446
447
  function updateCabinetPayload(_x4) {
447
448
  return _updateCabinetPayload.apply(this, arguments);
448
- }
449
+ } // Get attributs of current selected element
449
450
  function _updateCabinetPayload() {
450
451
  _updateCabinetPayload = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(cabinetPayload) {
451
452
  var tempPlaceholders, cabinetPayloadKeys, i;
@@ -473,54 +474,6 @@ function _updateCabinetPayload() {
473
474
  }));
474
475
  return _updateCabinetPayload.apply(this, arguments);
475
476
  }
476
- function addItemToCatalog(_x5, _x6, _x7, _x8) {
477
- return _addItemToCatalog.apply(this, arguments);
478
- } // Get attributs of current selected element
479
- function _addItemToCatalog() {
480
- _addItemToCatalog = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(element, state, catalogInstance, projectActions) {
481
- var elementJs, catalog, updatedStructureJson, outlineSVGData;
482
- return _regeneratorRuntime.wrap(function (_context5) {
483
- while (1) switch (_context5.prev = _context5.next) {
484
- case 0:
485
- catalog = state.getIn(['catalog']).toJS(); // add item to catalog of state
486
- updatedStructureJson = _objectSpread(_objectSpread({}, element.structure_json), element.structure_json.tempPlaceholders[0].structure);
487
- element = _objectSpread(_objectSpread({}, element), {}, {
488
- cds: {
489
- data: [_objectSpread({}, element.customer_property)],
490
- itemID: element.itemID
491
- }
492
- });
493
- element.structure_json = updatedStructureJson;
494
- if (!isEmpty(catalog === null || catalog === void 0 ? void 0 : catalog.elements[element.name])) {
495
- _context5.next = 3;
496
- break;
497
- }
498
- _context5.next = 1;
499
- return loadSVGsByItem(element);
500
- case 1:
501
- outlineSVGData = _context5.sent;
502
- _context5.next = 2;
503
- return updateCabinetPayload(element);
504
- case 2:
505
- elementJs = _context5.sent;
506
- elementJs = exporter(_objectSpread(_objectSpread({}, elementJs), {}, {
507
- outlineSVGData: outlineSVGData,
508
- type: 'cabinet',
509
- render2DItem: render2DItem,
510
- render3DItem: render3DItem
511
- }));
512
- if (catalogInstance !== null && catalogInstance !== void 0 && catalogInstance.validateElement(elementJs)) {
513
- catalogInstance.registerElement(elementJs);
514
- projectActions.addElementToCatalog(elementJs);
515
- }
516
- case 3:
517
- case "end":
518
- return _context5.stop();
519
- }
520
- }, _callee5);
521
- }));
522
- return _addItemToCatalog.apply(this, arguments);
523
- }
524
477
  function initAttrData(element, layer, state) {
525
478
  element = _typeof(element.misc) === 'object' ? element.set('misc', new Map(element.misc)) : element;
526
479
  switch (element.prototype) {
@@ -783,21 +736,21 @@ function updateAttributeOfSelectedElement(element, attrPayload, state, layer, pr
783
736
  {
784
737
  var _line = layer.lines.get(element.line);
785
738
  var _layer$vertices$get5 = layer.vertices.get(_line.vertices.get(0)),
786
- _x9 = _layer$vertices$get5.x,
739
+ _x5 = _layer$vertices$get5.x,
787
740
  _y = _layer$vertices$get5.y;
788
741
  var _layer$vertices$get6 = layer.vertices.get(_line.vertices.get(1)),
789
- _x0 = _layer$vertices$get6.x,
742
+ _x6 = _layer$vertices$get6.x,
790
743
  _y2 = _layer$vertices$get6.y;
791
- var _alpha = GeometryUtils.angleBetweenTwoPoints(_x9, _y, _x0, _y2);
792
- var _lineLength = GeometryUtils.pointsDistance(_x9, _y, _x0, _y2);
744
+ var _alpha = GeometryUtils.angleBetweenTwoPoints(_x5, _y, _x6, _y2);
745
+ var _lineLength = GeometryUtils.pointsDistance(_x5, _y, _x6, _y2);
793
746
  var _widthLength = element.properties.get('width').get('length');
794
747
  var _halfWidthLength = _widthLength / 2;
795
748
  var _lengthValue = value.get('length');
796
749
  _lengthValue = Math.max(_lengthValue, 0);
797
750
  _lengthValue = Math.min(_lengthValue, _lineLength - _widthLength);
798
- var _xp = _x0 - (_lengthValue + _halfWidthLength) * Math.cos(_alpha);
751
+ var _xp = _x6 - (_lengthValue + _halfWidthLength) * Math.cos(_alpha);
799
752
  var _yp = _y2 - (_lengthValue + _halfWidthLength) * Math.sin(_alpha);
800
- var _offset = GeometryUtils.pointPositionOnLineSegment(_x9, _y, _x0, _y2, _xp, _yp);
753
+ var _offset = GeometryUtils.pointPositionOnLineSegment(_x5, _y, _x6, _y2, _xp, _yp);
801
754
  /*
802
755
  if (x0 > x1) offset = 1 - offset;
803
756
  */
@@ -869,12 +822,67 @@ projectActions) {
869
822
  projectActions.setProperties(properties);
870
823
  }
871
824
  }
825
+ function addItemToCatalog(_x7, _x8, _x9, _x0) {
826
+ return _addItemToCatalog.apply(this, arguments);
827
+ }
828
+ function _addItemToCatalog() {
829
+ _addItemToCatalog = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(element, state, catalogInstance, projectActions) {
830
+ var elementJs, catalog, outlineSVGData, updatedStructureJson;
831
+ return _regeneratorRuntime.wrap(function (_context5) {
832
+ while (1) switch (_context5.prev = _context5.next) {
833
+ case 0:
834
+ elementJs = element;
835
+ catalog = state.getIn(['catalog']).toJS(); // add item to catalog of state
836
+ // if (isEmpty(catalog?.elements[element.name])) {
837
+ _context5.next = 1;
838
+ return loadSVGsByItem(element);
839
+ case 1:
840
+ outlineSVGData = _context5.sent;
841
+ if (!(element.type === 'cabinet')) {
842
+ _context5.next = 3;
843
+ break;
844
+ }
845
+ // make placeholders of element and tempPlaceholder
846
+ updatedStructureJson = _objectSpread(_objectSpread({}, element.structure_json), element.structure_json.tempPlaceholders[0].structure);
847
+ element.structure_json = updatedStructureJson;
848
+ element = _objectSpread(_objectSpread({}, element), {}, {
849
+ cds: {
850
+ data: [_objectSpread({}, element.customer_property)],
851
+ itemID: element.itemID
852
+ }
853
+ });
854
+ _context5.next = 2;
855
+ return updateCabinetPayload(element);
856
+ case 2:
857
+ elementJs = _context5.sent;
858
+ case 3:
859
+ elementJs = _objectSpread(_objectSpread({}, elementJs), {}, {
860
+ outlineSVGData: outlineSVGData,
861
+ type: element.type,
862
+ render2DItem: render2DItem
863
+ });
864
+ if (element.type === 'appliance' || element.type === 'furnishing') elementJs.render3DItem = render3DApplianceItem;else if (element.type === 'lighting') elementJs.render3DItem = render3DLightingItem;else elementJs.render3DItem = render3DItem;
865
+ elementJs = exporter(elementJs);
866
+ if (catalogInstance !== null && catalogInstance !== void 0 && catalogInstance.validateElement(elementJs)) {
867
+ catalogInstance.registerElement(elementJs);
868
+ projectActions.addElementToCatalog(elementJs);
869
+ }
870
+ // }
871
+ case 4:
872
+ case "end":
873
+ return _context5.stop();
874
+ }
875
+ }, _callee5);
876
+ }));
877
+ return _addItemToCatalog.apply(this, arguments);
878
+ }
872
879
  export function handleExternalEvent(_x1) {
873
880
  return _handleExternalEvent.apply(this, arguments);
874
881
  }
875
882
  function _handleExternalEvent() {
876
883
  _handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(props) {
877
- var evt, state, _evt$payload, cdsItems, itemKeys, _loop3, i, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, _evt$payload3, moveType, moveValue, value, defaulTitle, _evt$payload4, doorStyle, itemCDS, isAll, _doorStyle, _value, _zoomValue, _value2, _zoomValue2, _evt$payload5, moldingInfo, isGlobal, _evt$payload6, option, _value3, layerId, layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i2, _i3, _i4, _props$onInternalEven2, _t5, _t6;
884
+ var _evt$payload3, _evt$payload4;
885
+ var evt, state, _evt$payload, cdsItems, itemKeys, _loop3, i, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, _evt$payload5, moveType, moveValue, value, defaulTitle, _evt$payload6, doorStyle, itemCDS, isAll, _doorStyle, _value, _zoomValue, _value2, _zoomValue2, _evt$payload7, moldingInfo, isGlobal, _evt$payload8, option, _value3, layerId, layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i2, _i3, _i4, _props$onInternalEven2, _t5, _t6;
878
886
  return _regeneratorRuntime.wrap(function (_context8) {
879
887
  while (1) switch (_context8.prev = _context8.next) {
880
888
  case 0:
@@ -882,7 +890,7 @@ function _handleExternalEvent() {
882
890
  evt = props.externalEvent;
883
891
  state = props.state.get('KitchenConfigurator');
884
892
  _t5 = evt === null || evt === void 0 ? void 0 : evt.type;
885
- _context8.next = _t5 === EXTERNAL_EVENT_LOAD_PROJECT ? 1 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_3D ? 5 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_2D ? 6 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_ELEVATION ? 7 : _t5 === EXTERNAL_EVENT_ADD_WALL ? 8 : _t5 === EXTERNAL_EVENT_ADD_ITEM ? 9 : _t5 === EXTERNAL_EVENT_MOVE_PAN ? 12 : _t5 === EXTERNAL_EVENT_NEW_PROJECT ? 18 : _t5 === EXTERNAL_EVENT_CHANGE_DOORSTYLE ? 19 : _t5 === EXTERNAL_EVENT_SET_INITIAL_DATA ? 20 : _t5 === EXTERNAL_EVENT_ADD_ROOM_SHAPE ? 21 : _t5 === EXTERNAL_EVENT_ZOOM_IN ? 22 : _t5 === EXTERNAL_EVENT_ZOOM_OUT ? 25 : _t5 === EXTERNAL_EVENT_UNDO ? 28 : _t5 === EXTERNAL_EVENT_REDO ? 29 : _t5 === EXTERNAL_EVENT_SET_MOLDING ? 30 : _t5 === EXTERNAL_EVENT_PROJECT_SETTING ? 31 : _t5 === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? 32 : _t5 === EXTERNAL_EVENT_UPDATE_PROPERTY ? 32 : _t5 === EXTERNAL_EVENT_SYNC_SCENE ? 33 : 34;
893
+ _context8.next = _t5 === EXTERNAL_EVENT_LOAD_PROJECT ? 1 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_3D ? 5 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_2D ? 6 : _t5 === EXTERNAL_EVENT_TOGGLE_TO_ELEVATION ? 7 : _t5 === EXTERNAL_EVENT_ADD_WALL ? 8 : _t5 === EXTERNAL_EVENT_ADD_ITEM ? 9 : _t5 === EXTERNAL_EVENT_ADD_HOLE ? 12 : _t5 === EXTERNAL_EVENT_MOVE_PAN ? 13 : _t5 === EXTERNAL_EVENT_NEW_PROJECT ? 19 : _t5 === EXTERNAL_EVENT_CHANGE_DOORSTYLE ? 20 : _t5 === EXTERNAL_EVENT_SET_INITIAL_DATA ? 21 : _t5 === EXTERNAL_EVENT_ADD_ROOM_SHAPE ? 22 : _t5 === EXTERNAL_EVENT_ZOOM_IN ? 23 : _t5 === EXTERNAL_EVENT_ZOOM_OUT ? 26 : _t5 === EXTERNAL_EVENT_UNDO ? 29 : _t5 === EXTERNAL_EVENT_REDO ? 30 : _t5 === EXTERNAL_EVENT_SET_MOLDING ? 31 : _t5 === EXTERNAL_EVENT_PROJECT_SETTING ? 32 : _t5 === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? 33 : _t5 === EXTERNAL_EVENT_UPDATE_PROPERTY ? 33 : _t5 === EXTERNAL_EVENT_SYNC_SCENE ? 34 : 35;
886
894
  break;
887
895
  case 1:
888
896
  // prepare item data request
@@ -958,23 +966,23 @@ function _handleExternalEvent() {
958
966
  };
959
967
  }());
960
968
  }
961
- return _context8.abrupt("continue", 34);
969
+ return _context8.abrupt("continue", 35);
962
970
  case 5:
963
971
  props.projectActions.setMode(MODE_IDLE_3D);
964
- return _context8.abrupt("continue", 34);
972
+ return _context8.abrupt("continue", 35);
965
973
  case 6:
966
974
  props.projectActions.setMode(MODE_IDLE);
967
- return _context8.abrupt("continue", 34);
975
+ return _context8.abrupt("continue", 35);
968
976
  case 7:
969
977
  sLineCnt = state.getIn(['scene', 'layers', 'layer-1', 'selected', 'lines']).size;
970
978
  if (sLineCnt > 0) props.projectActions.setMode(MODE_ELEVATION_VIEW);
971
- return _context8.abrupt("continue", 34);
979
+ return _context8.abrupt("continue", 35);
972
980
  case 8:
973
981
  if (state.mode === MODE_IDLE || state.mode === MODE_2D_PAN) props.linesActions.selectToolDrawingLine('wall');else {
974
982
  props.projectActions.setMode(MODE_IDLE);
975
983
  props.linesActions.selectToolDrawingLine('wall');
976
984
  }
977
- return _context8.abrupt("continue", 34);
985
+ return _context8.abrupt("continue", 35);
978
986
  case 9:
979
987
  if (isEmpty(evt === null || evt === void 0 ? void 0 : evt.payload)) {
980
988
  _context8.next = 11;
@@ -1005,45 +1013,48 @@ function _handleExternalEvent() {
1005
1013
  props.projectActions.pushLastSelectedCatalogElementToHistory(element);
1006
1014
  props.projectActions.setIsCabinetDrawing(true);
1007
1015
  case 11:
1008
- return _context8.abrupt("continue", 34);
1016
+ return _context8.abrupt("continue", 35);
1009
1017
  case 12:
1010
- _evt$payload3 = evt.payload, moveType = _evt$payload3.moveType, moveValue = _evt$payload3.moveValue;
1018
+ ARRAY_3D_MODES.includes(state.mode) ? props.holesActions.selectToolDrawingHole3D(evt === null || evt === void 0 || (_evt$payload3 = evt.payload) === null || _evt$payload3 === void 0 ? void 0 : _evt$payload3.holeName) : props.holesActions.selectToolDrawingHole(evt === null || evt === void 0 || (_evt$payload4 = evt.payload) === null || _evt$payload4 === void 0 ? void 0 : _evt$payload4.holeName);
1019
+ return _context8.abrupt("continue", 35);
1020
+ case 13:
1021
+ _evt$payload5 = evt.payload, moveType = _evt$payload5.moveType, moveValue = _evt$payload5.moveValue;
1011
1022
  value = state.getIn(['viewer2D']).toJS();
1012
1023
  _t6 = moveType;
1013
- _context8.next = _t6 === TOP ? 13 : _t6 === BOTTOM ? 14 : _t6 === RIGHT ? 15 : _t6 === LEFT ? 16 : 17;
1024
+ _context8.next = _t6 === TOP ? 14 : _t6 === BOTTOM ? 15 : _t6 === RIGHT ? 16 : _t6 === LEFT ? 17 : 18;
1014
1025
  break;
1015
- case 13:
1016
- value.f -= moveValue;
1017
- return _context8.abrupt("continue", 17);
1018
1026
  case 14:
1019
- value.f += moveValue;
1020
- return _context8.abrupt("continue", 17);
1027
+ value.f -= moveValue;
1028
+ return _context8.abrupt("continue", 18);
1021
1029
  case 15:
1022
- value.e += moveValue;
1023
- return _context8.abrupt("continue", 17);
1030
+ value.f += moveValue;
1031
+ return _context8.abrupt("continue", 18);
1024
1032
  case 16:
1025
- value.e -= moveValue;
1026
- return _context8.abrupt("continue", 17);
1033
+ value.e += moveValue;
1034
+ return _context8.abrupt("continue", 18);
1027
1035
  case 17:
1028
- if (compareSVGRect(value)) props.viewer2DActions.updateCameraView(value);
1029
- return _context8.abrupt("continue", 34);
1036
+ value.e -= moveValue;
1037
+ return _context8.abrupt("continue", 18);
1030
1038
  case 18:
1039
+ if (compareSVGRect(value)) props.viewer2DActions.updateCameraView(value);
1040
+ return _context8.abrupt("continue", 35);
1041
+ case 19:
1031
1042
  defaulTitle = 'Untitle';
1032
1043
  props.projectActions.newProject();
1033
1044
  props.projectActions.rename(defaulTitle);
1034
- return _context8.abrupt("continue", 34);
1035
- case 19:
1036
- _evt$payload4 = evt.payload, doorStyle = _evt$payload4.doorStyle, itemCDS = _evt$payload4.itemCDS, isAll = _evt$payload4.isAll;
1037
- props.itemsActions.setDoorStyle(doorStyle, itemCDS, isAll);
1038
- return _context8.abrupt("continue", 34);
1045
+ return _context8.abrupt("continue", 35);
1039
1046
  case 20:
1047
+ _evt$payload6 = evt.payload, doorStyle = _evt$payload6.doorStyle, itemCDS = _evt$payload6.itemCDS, isAll = _evt$payload6.isAll;
1048
+ props.itemsActions.setDoorStyle(doorStyle, itemCDS, isAll);
1049
+ return _context8.abrupt("continue", 35);
1050
+ case 21:
1040
1051
  _doorStyle = evt.payload.doorStyle;
1041
1052
  props.itemsActions.setInitialDoorStyle(_doorStyle.doorStyle);
1042
- return _context8.abrupt("continue", 34);
1043
- case 21:
1044
- props.projectActions.loadProject(evt.payload);
1045
- return _context8.abrupt("continue", 34);
1053
+ return _context8.abrupt("continue", 35);
1046
1054
  case 22:
1055
+ props.projectActions.loadProject(evt.payload);
1056
+ return _context8.abrupt("continue", 35);
1057
+ case 23:
1047
1058
  _value = state.getIn(['viewer2D']).toJS();
1048
1059
  _value.a -= 0.1;
1049
1060
  _value.d -= 0.1;
@@ -1051,17 +1062,17 @@ function _handleExternalEvent() {
1051
1062
  _value.f += _value.SVGHeight * 0.1 / 2;
1052
1063
  _zoomValue = parseInt((_value.a - 0.5) / ZOOM_VARIABLE);
1053
1064
  if (!(_zoomValue > 404)) {
1054
- _context8.next = 23;
1065
+ _context8.next = 24;
1055
1066
  break;
1056
1067
  }
1057
1068
  return _context8.abrupt("return");
1058
- case 23:
1069
+ case 24:
1059
1070
  if (!(_zoomValue < 35 || Number.isNaN(_zoomValue))) {
1060
- _context8.next = 24;
1071
+ _context8.next = 25;
1061
1072
  break;
1062
1073
  }
1063
1074
  return _context8.abrupt("return");
1064
- case 24:
1075
+ case 25:
1065
1076
  while (!(_value.e <= 10)) {
1066
1077
  _value.e -= 0.1;
1067
1078
  }
@@ -1075,8 +1086,8 @@ function _handleExternalEvent() {
1075
1086
  _value.f += 0.1;
1076
1087
  }
1077
1088
  if (compareSVGRect(_value)) props.viewer2DActions.updateCameraView(_value);
1078
- return _context8.abrupt("continue", 34);
1079
- case 25:
1089
+ return _context8.abrupt("continue", 35);
1090
+ case 26:
1080
1091
  _value2 = state.getIn(['viewer2D']).toJS();
1081
1092
  _value2.a += 0.1;
1082
1093
  _value2.d += 0.1;
@@ -1084,31 +1095,31 @@ function _handleExternalEvent() {
1084
1095
  _value2.f -= _value2.SVGHeight * 0.1 / 2;
1085
1096
  _zoomValue2 = parseInt((_value2.a - 0.5) / ZOOM_VARIABLE);
1086
1097
  if (!(_zoomValue2 > 404)) {
1087
- _context8.next = 26;
1098
+ _context8.next = 27;
1088
1099
  break;
1089
1100
  }
1090
1101
  return _context8.abrupt("return");
1091
- case 26:
1102
+ case 27:
1092
1103
  if (!(_zoomValue2 < 35 || Number.isNaN(_zoomValue2))) {
1093
- _context8.next = 27;
1104
+ _context8.next = 28;
1094
1105
  break;
1095
1106
  }
1096
1107
  return _context8.abrupt("return");
1097
- case 27:
1098
- if (compareSVGRect(_value2)) props.viewer2DActions.updateCameraView(_value2);
1099
- return _context8.abrupt("continue", 34);
1100
1108
  case 28:
1101
- props.projectActions.undo();
1102
- return _context8.abrupt("continue", 34);
1109
+ if (compareSVGRect(_value2)) props.viewer2DActions.updateCameraView(_value2);
1110
+ return _context8.abrupt("continue", 35);
1103
1111
  case 29:
1104
- props.projectActions.redo();
1105
- return _context8.abrupt("continue", 34);
1112
+ props.projectActions.undo();
1113
+ return _context8.abrupt("continue", 35);
1106
1114
  case 30:
1107
- _evt$payload5 = evt.payload, moldingInfo = _evt$payload5.moldingInfo, isGlobal = _evt$payload5.isGlobal;
1108
- props.itemsActions.setMolding(moldingInfo, isGlobal);
1109
- return _context8.abrupt("continue", 34);
1115
+ props.projectActions.redo();
1116
+ return _context8.abrupt("continue", 35);
1110
1117
  case 31:
1111
- _evt$payload6 = evt.payload, option = _evt$payload6.option, _value3 = _evt$payload6.value;
1118
+ _evt$payload7 = evt.payload, moldingInfo = _evt$payload7.moldingInfo, isGlobal = _evt$payload7.isGlobal;
1119
+ props.itemsActions.setMolding(moldingInfo, isGlobal);
1120
+ return _context8.abrupt("continue", 35);
1121
+ case 32:
1122
+ _evt$payload8 = evt.payload, option = _evt$payload8.option, _value3 = _evt$payload8.value;
1112
1123
  if (option === PROJECT_SETTING_OPTION.UPDATE_CEIL_HEIGHT) {
1113
1124
  props.viewer2DActions.updateCeilHeight(_value3);
1114
1125
  props.viewer3DActions.update3DCeilHeight(_value3);
@@ -1121,16 +1132,16 @@ function _handleExternalEvent() {
1121
1132
  } else if (option === PROJECT_SETTING_OPTION.CHANGE_WINDOW_DOOR_MEASURE) {
1122
1133
  props.viewer2DActions.changeWindowDoorMeasure(_value3);
1123
1134
  }
1124
- return _context8.abrupt("continue", 34);
1125
- case 32:
1135
+ return _context8.abrupt("continue", 35);
1136
+ case 33:
1126
1137
  layerId = state.getIn(['scene', 'selectedLayer']);
1127
1138
  layer = state.getIn(['scene', 'layers', layerId]);
1128
1139
  _layer$getIn = layer.getIn(['selected']), selectedLines = _layer$getIn.lines, selectedHoles = _layer$getIn.holes, selectedItems = _layer$getIn.items;
1129
1140
  for (_i2 = 0; _i2 < selectedLines.size; _i2++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['lines', selectedLines.get(_i2)]), evt.payload, state, layer, props.projectActions) : updatePropertyOfSelectedElement(layer.getIn(['lines', selectedLines.get(_i2)]), evt.payload, props.catalog, props.projectActions);
1130
1141
  for (_i3 = 0; _i3 < selectedHoles.size; _i3++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['holes', selectedHoles.get(_i3)]), evt.payload, state, layer, props.projectActions) : updatePropertyOfSelectedElement(layer.getIn(['holes', selectedHoles.get(_i3)]), evt.payload, props.catalog, props.projectActions);
1131
1142
  for (_i4 = 0; _i4 < selectedItems.size; _i4++) (evt === null || evt === void 0 ? void 0 : evt.type) === EXTERNAL_EVENT_UPDATE_ATTRIBUTE ? updateAttributeOfSelectedElement(layer.getIn(['items', selectedItems.get(_i4)]), evt.payload, state, layer, props.projectActions) : updatePropertyOfSelectedElement(layer.getIn(['items', selectedItems.get(_i4)]), evt.payload, props.catalog, props.projectActions);
1132
- return _context8.abrupt("continue", 34);
1133
- case 33:
1143
+ return _context8.abrupt("continue", 35);
1144
+ case 34:
1134
1145
  // send scene object from 3DTool to HostApp using internalEvent
1135
1146
  (_props$onInternalEven2 = props.onInternalEvent) === null || _props$onInternalEven2 === void 0 || _props$onInternalEven2.call(props, {
1136
1147
  type: INTERNAL_EVENT_SYNC_SCENE,
@@ -1138,7 +1149,7 @@ function _handleExternalEvent() {
1138
1149
  scene: state.scene.toJS()
1139
1150
  }
1140
1151
  });
1141
- case 34:
1152
+ case 35:
1142
1153
  case "end":
1143
1154
  return _context8.stop();
1144
1155
  }
@@ -70,7 +70,7 @@ var STYLE_FNT0 = {
70
70
  };
71
71
  var EPSILON = 3;
72
72
  var _default = exports["default"] = {
73
- name: 'Closet',
73
+ name: 'Closet Door',
74
74
  prototype: 'holes',
75
75
  info: {
76
76
  title: 'Closet',
@@ -71,7 +71,7 @@ var STYLE_FNT0 = {
71
71
  };
72
72
  var EPSILON = 3;
73
73
  var _default = exports["default"] = {
74
- name: 'Exterior',
74
+ name: 'Exterior Door',
75
75
  prototype: 'holes',
76
76
  info: {
77
77
  title: 'Exterior',
@@ -71,7 +71,7 @@ var STYLE_FNT0 = {
71
71
  };
72
72
  var EPSILON = 3;
73
73
  var _default = exports["default"] = {
74
- name: 'Interior',
74
+ name: 'Interior Door',
75
75
  prototype: 'holes',
76
76
  info: {
77
77
  title: 'Interior',
@@ -17,7 +17,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
17
17
 
18
18
  var cached3DDoor = null;
19
19
  var _default = exports["default"] = {
20
- name: 'Sliding',
20
+ name: 'Sliding Door',
21
21
  prototype: 'holes',
22
22
  info: {
23
23
  tag: ['door'],
@@ -25,7 +25,7 @@ var STYLE_HOLE_SELECTED = {
25
25
  };
26
26
  var EPSILON = 3;
27
27
  var _default = exports["default"] = {
28
- name: 'window-vertical',
28
+ name: 'Vertical Window',
29
29
  prototype: 'holes',
30
30
  info: {
31
31
  tag: ['window'],