kitchen-simulator 2.0.4 → 2.0.5-flip-handle-open-door
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.
- package/es/LiteRenderer.js +14 -146
- package/es/actions/items-actions.js +0 -6
- package/es/class/item.js +24 -55
- package/es/constants.js +21 -1
- package/es/devLiteRenderer.js +65 -12
- package/es/utils/isolate-event-handler.js +388 -17
- package/lib/LiteRenderer.js +15 -147
- package/lib/actions/items-actions.js +0 -7
- package/lib/class/item.js +24 -55
- package/lib/constants.js +26 -5
- package/lib/devLiteRenderer.js +65 -12
- package/lib/utils/isolate-event-handler.js +386 -16
- package/package.json +1 -1
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
3
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
4
|
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; }
|
|
4
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; }
|
|
5
6
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
-
import {
|
|
7
|
-
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, 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,
|
|
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
9
|
import { isEmpty } from "./helper";
|
|
9
10
|
import exporter from "../catalog/utils/exporter";
|
|
10
11
|
import { render2DItem, render3DItem } from "../catalog/utils/item-loader";
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
12
|
+
import { convert } from "./convert-units-lite";
|
|
13
|
+
import { GeometryUtils } from "./export";
|
|
14
|
+
import { returnReplaceableDeepSearchType } from "../components/viewer2d/utils";
|
|
15
|
+
var PRECISION = 2;
|
|
13
16
|
var loadSVGsByItem = /*#__PURE__*/function () {
|
|
14
17
|
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(item) {
|
|
15
18
|
var _parsed$xml$viewBox, _parsed$xml$viewBox2, response, svgText, loader, parsed, _t;
|
|
@@ -65,12 +68,12 @@ var loadSVGsByItem = /*#__PURE__*/function () {
|
|
|
65
68
|
var compareSVGRect = function compareSVGRect(value) {
|
|
66
69
|
return value.e <= 10 && value.e + value.a * value.SVGWidth + 10 >= value.viewerWidth && value.f <= 80 && value.f + value.d * value.SVGHeight + 10 >= value.viewerHeight ? true : false;
|
|
67
70
|
};
|
|
68
|
-
function loadJSON(_x2
|
|
71
|
+
function loadJSON(_x2) {
|
|
69
72
|
return _loadJSON.apply(this, arguments);
|
|
70
73
|
}
|
|
71
74
|
/********Parse TempPlaceholder from cabinetPayloadData **************/
|
|
72
75
|
function _loadJSON() {
|
|
73
|
-
_loadJSON = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(path
|
|
76
|
+
_loadJSON = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(path) {
|
|
74
77
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
75
78
|
while (1) switch (_context2.prev = _context2.next) {
|
|
76
79
|
case 0:
|
|
@@ -96,10 +99,9 @@ function _loadJSON() {
|
|
|
96
99
|
}));
|
|
97
100
|
return _loadJSON.apply(this, arguments);
|
|
98
101
|
}
|
|
99
|
-
|
|
102
|
+
function parseTempPlaceholdersFromCabinetPayload(_x3) {
|
|
100
103
|
return _parseTempPlaceholdersFromCabinetPayload.apply(this, arguments);
|
|
101
104
|
}
|
|
102
|
-
|
|
103
105
|
/***** Update cabinetPayloadData with updatedTempPlaceholders *****/
|
|
104
106
|
function _parseTempPlaceholdersFromCabinetPayload() {
|
|
105
107
|
_parseTempPlaceholdersFromCabinetPayload = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(cabinetPayload) {
|
|
@@ -441,7 +443,7 @@ function _parseTempPlaceholdersFromCabinetPayload() {
|
|
|
441
443
|
}));
|
|
442
444
|
return _parseTempPlaceholdersFromCabinetPayload.apply(this, arguments);
|
|
443
445
|
}
|
|
444
|
-
|
|
446
|
+
function updateCabinetPayload(_x4) {
|
|
445
447
|
return _updateCabinetPayload.apply(this, arguments);
|
|
446
448
|
}
|
|
447
449
|
function _updateCabinetPayload() {
|
|
@@ -471,9 +473,9 @@ function _updateCabinetPayload() {
|
|
|
471
473
|
}));
|
|
472
474
|
return _updateCabinetPayload.apply(this, arguments);
|
|
473
475
|
}
|
|
474
|
-
function addItemToCatalog(
|
|
476
|
+
function addItemToCatalog(_x5, _x6, _x7, _x8) {
|
|
475
477
|
return _addItemToCatalog.apply(this, arguments);
|
|
476
|
-
}
|
|
478
|
+
} // Get attributs of current selected element
|
|
477
479
|
function _addItemToCatalog() {
|
|
478
480
|
_addItemToCatalog = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(element, state, catalogInstance, projectActions) {
|
|
479
481
|
var elementJs, catalog, updatedStructureJson, outlineSVGData;
|
|
@@ -519,20 +521,368 @@ function _addItemToCatalog() {
|
|
|
519
521
|
}));
|
|
520
522
|
return _addItemToCatalog.apply(this, arguments);
|
|
521
523
|
}
|
|
524
|
+
function initAttrData(element, layer, state) {
|
|
525
|
+
element = _typeof(element.misc) === 'object' ? element.set('misc', new Map(element.misc)) : element;
|
|
526
|
+
switch (element.prototype) {
|
|
527
|
+
case 'items':
|
|
528
|
+
{
|
|
529
|
+
return new Map(element);
|
|
530
|
+
}
|
|
531
|
+
case 'lines':
|
|
532
|
+
{
|
|
533
|
+
var v_a = layer.vertices.get(element.vertices.get(0));
|
|
534
|
+
var v_b = layer.vertices.get(element.vertices.get(1));
|
|
535
|
+
var distance = GeometryUtils.pointsDistance(v_a.x, v_a.y, v_b.x, v_b.y);
|
|
536
|
+
var _unit = element.misc.get('_unitLength') || UNIT_INCH;
|
|
537
|
+
var _length = convert(distance).from(UNIT_CENTIMETER).to(_unit);
|
|
538
|
+
if (state.mode == MODE_DRAWING_LINE) {
|
|
539
|
+
return new Map({
|
|
540
|
+
vertexOne: v_a,
|
|
541
|
+
vertexTwo: v_b,
|
|
542
|
+
lineLength: new Map({
|
|
543
|
+
length: distance,
|
|
544
|
+
_length: _length,
|
|
545
|
+
_unit: _unit
|
|
546
|
+
}),
|
|
547
|
+
focus: element.focus
|
|
548
|
+
});
|
|
549
|
+
} else {
|
|
550
|
+
var allLines = layer.lines.toArray();
|
|
551
|
+
var relatedLine = allLines.filter(function (line) {
|
|
552
|
+
return line.vertices.toArray().includes(v_b.id) && line.id != element.id;
|
|
553
|
+
})[0];
|
|
554
|
+
var relatedVertexID = relatedLine && (relatedLine.vertices.toArray()[0] == v_b.id ? relatedLine.vertices.toArray()[1] : relatedLine.vertices.toArray()[0]);
|
|
555
|
+
var v_d = relatedVertexID && layer.getIn(['vertices', relatedVertexID]);
|
|
556
|
+
var lineToExtend = relatedVertexID && allLines.filter(function (line) {
|
|
557
|
+
return line.vertices.toArray().includes(relatedVertexID) && line.id != relatedLine.id;
|
|
558
|
+
})[0];
|
|
559
|
+
var v_c = lineToExtend && layer.getIn(['vertices', lineToExtend.vertices.toArray()[0] == v_d.id ? lineToExtend.vertices.toArray()[1] : lineToExtend.vertices.toArray()[0]]);
|
|
560
|
+
return new Map({
|
|
561
|
+
vertexOne: v_a,
|
|
562
|
+
vertexTwo: v_b,
|
|
563
|
+
vertexThree: v_c,
|
|
564
|
+
vertexFour: v_d,
|
|
565
|
+
lineToExtend: lineToExtend,
|
|
566
|
+
lineLength: new Map({
|
|
567
|
+
length: distance,
|
|
568
|
+
_length: _length,
|
|
569
|
+
_unit: _unit
|
|
570
|
+
}),
|
|
571
|
+
focus: element.focus
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
case 'holes':
|
|
576
|
+
{
|
|
577
|
+
var line = layer.lines.get(element.line);
|
|
578
|
+
var _layer$vertices$get = layer.vertices.get(line.vertices.get(0)),
|
|
579
|
+
x0 = _layer$vertices$get.x,
|
|
580
|
+
y0 = _layer$vertices$get.y;
|
|
581
|
+
var _layer$vertices$get2 = layer.vertices.get(line.vertices.get(1)),
|
|
582
|
+
x1 = _layer$vertices$get2.x,
|
|
583
|
+
y1 = _layer$vertices$get2.y;
|
|
584
|
+
var lineLength = GeometryUtils.pointsDistance(x0, y0, x1, y1);
|
|
585
|
+
var startAt = lineLength * element.offset - element.properties.get('width').get('length') / 2;
|
|
586
|
+
var endAt = lineLength - lineLength * element.offset - element.properties.get('width').get('length') / 2;
|
|
587
|
+
var _unitA = element.misc.get('_unitA') || UNIT_INCH;
|
|
588
|
+
var _lengthA = convert(x0 > x1 ? endAt : startAt).from(UNIT_CENTIMETER).to(_unitA);
|
|
589
|
+
var _unitB = element.misc.get('_unitB') || UNIT_INCH;
|
|
590
|
+
var _lengthB = convert(x0 > x1 ? startAt : endAt).from(UNIT_CENTIMETER).to(_unitB);
|
|
591
|
+
return new Map({
|
|
592
|
+
offset: element.offset,
|
|
593
|
+
offsetA: new Map({
|
|
594
|
+
length: MathUtils.toFixedFloat(x0 > x1 ? endAt : startAt, PRECISION),
|
|
595
|
+
_length: MathUtils.toFixedFloat(_lengthA, PRECISION),
|
|
596
|
+
_unit: _unitA
|
|
597
|
+
}),
|
|
598
|
+
offsetB: new Map({
|
|
599
|
+
length: MathUtils.toFixedFloat(x0 > x1 ? startAt : endAt, PRECISION),
|
|
600
|
+
_length: MathUtils.toFixedFloat(_lengthB, PRECISION),
|
|
601
|
+
_unit: _unitB
|
|
602
|
+
})
|
|
603
|
+
});
|
|
604
|
+
}
|
|
605
|
+
case 'areas':
|
|
606
|
+
{
|
|
607
|
+
return new Map({});
|
|
608
|
+
}
|
|
609
|
+
default:
|
|
610
|
+
return null;
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
// Get properties of current selected element
|
|
614
|
+
function initPropData(element, catalog) {
|
|
615
|
+
var mapped = {};
|
|
616
|
+
if (!catalog.elements.hasOwnProperty(element.type) && !(!catalog.elements[element.type] && !!catalog.elements[returnReplaceableDeepSearchType(element.type)])) {
|
|
617
|
+
console.log("Last Selected ".concat(element.type, " Element does not exist in catalog."));
|
|
618
|
+
return new Map(mapped);
|
|
619
|
+
}
|
|
620
|
+
var catalogElement = catalog.getElement(element.type);
|
|
621
|
+
var isFiller = catalogElement.long_name ? catalogElement.long_name.toUpperCase().includes('FILLER') : false;
|
|
622
|
+
if (isFiller) {
|
|
623
|
+
var height = {
|
|
624
|
+
defaultValue: element.properties.get('height').toJS(),
|
|
625
|
+
label: 'Height',
|
|
626
|
+
type: 'length-measure'
|
|
627
|
+
};
|
|
628
|
+
var depth = {
|
|
629
|
+
defaultValue: element.properties.get('depth').toJS(),
|
|
630
|
+
label: 'Depth',
|
|
631
|
+
type: 'length-measure'
|
|
632
|
+
};
|
|
633
|
+
catalogElement.properties = {
|
|
634
|
+
altitude: catalogElement.properties.altitude,
|
|
635
|
+
width: catalogElement.properties.width,
|
|
636
|
+
height: height,
|
|
637
|
+
depth: depth,
|
|
638
|
+
flip_doorhandle: catalogElement.properties.flip_doorhandle,
|
|
639
|
+
resize_and_scaling: catalogElement.properties.resize_and_scaling
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
for (var name in catalogElement.properties) {
|
|
643
|
+
mapped[name] = new Map({
|
|
644
|
+
currentValue: element.properties.has(name) ? element.properties.get(name) : fromJS(catalogElement.properties[name].defaultValue),
|
|
645
|
+
configs: catalogElement.properties[name]
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
return new Map(mapped);
|
|
649
|
+
}
|
|
650
|
+
function updateAttributeOfSelectedElement(element, attrPayload, state, layer, projectActions) {
|
|
651
|
+
var attributesFormData = initAttrData(element, layer, state);
|
|
652
|
+
var value = attrPayload.value;
|
|
653
|
+
var attributeName = attrPayload.attributeName;
|
|
654
|
+
// pre process
|
|
655
|
+
if (attributeName === ATT_ITEM_POS) {
|
|
656
|
+
// calculate the new position of movement
|
|
657
|
+
var rotRad = (value.directionAng + element.rotation) / 180 * Math.PI;
|
|
658
|
+
var newX = element.x + convert((value.oldDistance - value.newDistance) * Math.cos(rotRad)).from('in').to('cm');
|
|
659
|
+
var newY = element.y + convert((value.oldDistance - value.newDistance) * Math.sin(rotRad)).from('in').to('cm');
|
|
660
|
+
// const reversedDirection =
|
|
661
|
+
// value.directionAng === LEFT_DIST_ANG
|
|
662
|
+
// ? RIGHT_DIST_ANG
|
|
663
|
+
// : value.directionAng === RIGHT_DIST_ANG
|
|
664
|
+
// ? LEFT_DIST_ANG
|
|
665
|
+
// : value.directionAng === BACK_DIST_ANG
|
|
666
|
+
// ? FRONT_DIST_ANG
|
|
667
|
+
// : BACK_DIST_ANG;
|
|
668
|
+
// let dist = convert(
|
|
669
|
+
// element.distArray?.find(v => v[1] === reversedDirection)
|
|
670
|
+
// ? element.distArray?.find(v => v[1] === reversedDirection)[0]
|
|
671
|
+
// : 0
|
|
672
|
+
// )
|
|
673
|
+
// .from('cm')
|
|
674
|
+
// .to('in');
|
|
675
|
+
// if (dist + (value.oldDistance - value.newDistance) <= 0 || value.newDistance < 0) {
|
|
676
|
+
// // confirm "The item will be placed outside the floor plan. Are you sure?"
|
|
677
|
+
// setPopupOpen(true);
|
|
678
|
+
// return;
|
|
679
|
+
// }
|
|
680
|
+
value = {
|
|
681
|
+
x: newX,
|
|
682
|
+
y: newY
|
|
683
|
+
};
|
|
684
|
+
} else if (attributeName === ATT_LINE_LENGTH || attributeName === ATT_HOLE_OFFSET_A || attributeName === ATT_HOLE_OFFSET_B) {
|
|
685
|
+
var att = attributesFormData.has(attributeName) ? attributesFormData.get(attributeName) : element[attributeName];
|
|
686
|
+
if (att) value = att.merge({
|
|
687
|
+
_length: value,
|
|
688
|
+
_unit: UNIT_INCH,
|
|
689
|
+
length: convert(value).from(UNIT_INCH).to(UNIT_CENTIMETER)
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
// make the new attrivutes
|
|
693
|
+
switch (element.prototype) {
|
|
694
|
+
case 'items':
|
|
695
|
+
{
|
|
696
|
+
if (attributeName == ATT_ITEM_POS) {
|
|
697
|
+
var xVal = value.x;
|
|
698
|
+
var yVal = value.y;
|
|
699
|
+
attributesFormData = attributesFormData.set('x', xVal);
|
|
700
|
+
attributesFormData = attributesFormData.set('y', yVal);
|
|
701
|
+
} else {
|
|
702
|
+
attributesFormData = attributesFormData.set(attributeName, value);
|
|
703
|
+
}
|
|
704
|
+
break;
|
|
705
|
+
}
|
|
706
|
+
case 'lines':
|
|
707
|
+
{
|
|
708
|
+
switch (attributeName) {
|
|
709
|
+
case ATT_LINE_LENGTH:
|
|
710
|
+
{
|
|
711
|
+
var v_0 = attributesFormData.get('vertexOne');
|
|
712
|
+
var v_1 = attributesFormData.get('vertexTwo');
|
|
713
|
+
var v_b_new = GeometryUtils.extendLine(v_0.x, v_0.y, v_1.x, v_1.y, value.get('length'), PRECISION);
|
|
714
|
+
attributesFormData = attributesFormData.withMutations(function (attr) {
|
|
715
|
+
attr.set('vertexTwo', v_1.merge(v_b_new));
|
|
716
|
+
attr.set('lineLength', value);
|
|
717
|
+
});
|
|
718
|
+
break;
|
|
719
|
+
}
|
|
720
|
+
case ATT_VERTEXT_ONE:
|
|
721
|
+
case ATT_VERTEXT_TWO:
|
|
722
|
+
{
|
|
723
|
+
attributesFormData = attributesFormData.withMutations(function (attr) {
|
|
724
|
+
attr.set(attributeName, attr.get(attributeName).merge(value));
|
|
725
|
+
var newDistance = GeometryUtils.verticesDistance(attr.get('vertexOne'), attr.get('vertexTwo'));
|
|
726
|
+
attr.mergeIn(['lineLength'], attr.get('lineLength').merge({
|
|
727
|
+
length: newDistance,
|
|
728
|
+
_length: convert(newDistance).from(UNIT_CENTIMETER).to(attr.get('lineLength').get('_unit'))
|
|
729
|
+
}));
|
|
730
|
+
});
|
|
731
|
+
break;
|
|
732
|
+
}
|
|
733
|
+
default:
|
|
734
|
+
{
|
|
735
|
+
attributesFormData = attributesFormData.set(attributeName, value);
|
|
736
|
+
break;
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
break;
|
|
740
|
+
}
|
|
741
|
+
case 'holes':
|
|
742
|
+
{
|
|
743
|
+
switch (attributeName) {
|
|
744
|
+
case ATT_HOLE_OFFSET_A:
|
|
745
|
+
{
|
|
746
|
+
var line = layer.lines.get(element.line);
|
|
747
|
+
var _layer$vertices$get3 = layer.vertices.get(line.vertices.get(0)),
|
|
748
|
+
x0 = _layer$vertices$get3.x,
|
|
749
|
+
y0 = _layer$vertices$get3.y;
|
|
750
|
+
var _layer$vertices$get4 = layer.vertices.get(line.vertices.get(1)),
|
|
751
|
+
x1 = _layer$vertices$get4.x,
|
|
752
|
+
y1 = _layer$vertices$get4.y;
|
|
753
|
+
var alpha = GeometryUtils.angleBetweenTwoPoints(x0, y0, x1, y1);
|
|
754
|
+
var lineLength = GeometryUtils.pointsDistance(x0, y0, x1, y1);
|
|
755
|
+
var widthLength = element.properties.get('width').get('length');
|
|
756
|
+
var halfWidthLength = widthLength / 2;
|
|
757
|
+
var lengthValue = value.get('length');
|
|
758
|
+
lengthValue = Math.max(lengthValue, 0);
|
|
759
|
+
lengthValue = Math.min(lengthValue, lineLength - widthLength);
|
|
760
|
+
var xp = (lengthValue + halfWidthLength) * Math.cos(alpha) + x0;
|
|
761
|
+
var yp = (lengthValue + halfWidthLength) * Math.sin(alpha) + y0;
|
|
762
|
+
var offset = GeometryUtils.pointPositionOnLineSegment(x0, y0, x1, y1, xp, yp);
|
|
763
|
+
/*
|
|
764
|
+
if (x0 > x1) offset = 1 - offset;
|
|
765
|
+
*/
|
|
766
|
+
var endAt = MathUtils.toFixedFloat(lineLength - lineLength * offset - halfWidthLength, PRECISION);
|
|
767
|
+
var offsetUnit = attributesFormData.getIn(['offsetB', '_unit']);
|
|
768
|
+
var offsetB = new Map({
|
|
769
|
+
length: endAt,
|
|
770
|
+
_length: convert(endAt).from(UNIT_CENTIMETER).to(offsetUnit),
|
|
771
|
+
_unit: offsetUnit
|
|
772
|
+
});
|
|
773
|
+
attributesFormData = attributesFormData.set('offsetB', offsetB).set('offset', offset);
|
|
774
|
+
var offsetAttribute = new Map({
|
|
775
|
+
length: MathUtils.toFixedFloat(lengthValue, PRECISION),
|
|
776
|
+
_unit: value.get('_unit'),
|
|
777
|
+
_length: MathUtils.toFixedFloat(convert(lengthValue).from(UNIT_CENTIMETER).to(value.get('_unit')), PRECISION)
|
|
778
|
+
});
|
|
779
|
+
attributesFormData = attributesFormData.set(attributeName, offsetAttribute);
|
|
780
|
+
break;
|
|
781
|
+
}
|
|
782
|
+
case ATT_HOLE_OFFSET_B:
|
|
783
|
+
{
|
|
784
|
+
var _line = layer.lines.get(element.line);
|
|
785
|
+
var _layer$vertices$get5 = layer.vertices.get(_line.vertices.get(0)),
|
|
786
|
+
_x9 = _layer$vertices$get5.x,
|
|
787
|
+
_y = _layer$vertices$get5.y;
|
|
788
|
+
var _layer$vertices$get6 = layer.vertices.get(_line.vertices.get(1)),
|
|
789
|
+
_x0 = _layer$vertices$get6.x,
|
|
790
|
+
_y2 = _layer$vertices$get6.y;
|
|
791
|
+
var _alpha = GeometryUtils.angleBetweenTwoPoints(_x9, _y, _x0, _y2);
|
|
792
|
+
var _lineLength = GeometryUtils.pointsDistance(_x9, _y, _x0, _y2);
|
|
793
|
+
var _widthLength = element.properties.get('width').get('length');
|
|
794
|
+
var _halfWidthLength = _widthLength / 2;
|
|
795
|
+
var _lengthValue = value.get('length');
|
|
796
|
+
_lengthValue = Math.max(_lengthValue, 0);
|
|
797
|
+
_lengthValue = Math.min(_lengthValue, _lineLength - _widthLength);
|
|
798
|
+
var _xp = _x0 - (_lengthValue + _halfWidthLength) * Math.cos(_alpha);
|
|
799
|
+
var _yp = _y2 - (_lengthValue + _halfWidthLength) * Math.sin(_alpha);
|
|
800
|
+
var _offset = GeometryUtils.pointPositionOnLineSegment(_x9, _y, _x0, _y2, _xp, _yp);
|
|
801
|
+
/*
|
|
802
|
+
if (x0 > x1) offset = 1 - offset;
|
|
803
|
+
*/
|
|
804
|
+
var startAt = MathUtils.toFixedFloat(_lineLength * _offset - _halfWidthLength, PRECISION);
|
|
805
|
+
var _offsetUnit = attributesFormData.getIn(['offsetA', '_unit']);
|
|
806
|
+
var offsetA = new Map({
|
|
807
|
+
length: startAt,
|
|
808
|
+
_length: convert(startAt).from(UNIT_CENTIMETER).to(_offsetUnit),
|
|
809
|
+
_unit: _offsetUnit
|
|
810
|
+
});
|
|
811
|
+
attributesFormData = attributesFormData.set('offsetA', offsetA).set('offset', _offset);
|
|
812
|
+
var _offsetAttribute = new Map({
|
|
813
|
+
length: MathUtils.toFixedFloat(_lengthValue, PRECISION),
|
|
814
|
+
_unit: value.get('_unit'),
|
|
815
|
+
_length: MathUtils.toFixedFloat(convert(_lengthValue).from(UNIT_CENTIMETER).to(value.get('_unit')), PRECISION)
|
|
816
|
+
});
|
|
817
|
+
attributesFormData = attributesFormData.set(attributeName, _offsetAttribute);
|
|
818
|
+
break;
|
|
819
|
+
}
|
|
820
|
+
default:
|
|
821
|
+
{
|
|
822
|
+
attributesFormData = attributesFormData.set(attributeName, value);
|
|
823
|
+
break;
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
break;
|
|
827
|
+
}
|
|
828
|
+
default:
|
|
829
|
+
break;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
// update attribute action
|
|
833
|
+
switch (element.prototype) {
|
|
834
|
+
case 'items':
|
|
835
|
+
{
|
|
836
|
+
projectActions.setItemsAttributes(attributesFormData);
|
|
837
|
+
break;
|
|
838
|
+
}
|
|
839
|
+
case 'lines':
|
|
840
|
+
{
|
|
841
|
+
projectActions.setLinesAttributes(attributesFormData);
|
|
842
|
+
break;
|
|
843
|
+
}
|
|
844
|
+
case 'holes':
|
|
845
|
+
{
|
|
846
|
+
projectActions.setHolesAttributes(attributesFormData);
|
|
847
|
+
break;
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
function updatePropertyOfSelectedElement(element, propertyPayload, catalog,
|
|
852
|
+
// class instance of Catalog, get from props
|
|
853
|
+
projectActions) {
|
|
854
|
+
var propertiesFormData = initPropData(element, catalog);
|
|
855
|
+
var value = propertyPayload.value;
|
|
856
|
+
var propertyName = propertyPayload.propertyName;
|
|
857
|
+
// make new properties
|
|
858
|
+
if (propertyName === PROP_FLIP_DOOR_HANDLE && element.properties.get(PROP_OPEN_DOORS)) {
|
|
859
|
+
alert('Doors are already open.');
|
|
860
|
+
return;
|
|
861
|
+
}
|
|
862
|
+
propertiesFormData = propertiesFormData.setIn([propertyName, 'currentValue'], value);
|
|
863
|
+
|
|
864
|
+
// update property action
|
|
865
|
+
if (propertiesFormData) {
|
|
866
|
+
var properties = propertiesFormData.map(function (data) {
|
|
867
|
+
return data.get('currentValue');
|
|
868
|
+
});
|
|
869
|
+
projectActions.setProperties(properties);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
522
872
|
export function handleExternalEvent(_x1) {
|
|
523
873
|
return _handleExternalEvent.apply(this, arguments);
|
|
524
874
|
}
|
|
525
875
|
function _handleExternalEvent() {
|
|
526
876
|
_handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(props) {
|
|
527
|
-
var evt, state, _evt$payload, cdsItems, itemKeys, _loop3, i, _props$onInternalEven, sLineCnt, element, _evt$payload3, moveType, moveValue, value, defaulTitle, _evt$payload4, doorStyle, itemCDS, isAll, _doorStyle, _value, _zoomValue, _value2, _zoomValue2, _evt$payload5, moldingInfo, isGlobal, _evt$payload6, option, _value3,
|
|
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;
|
|
528
878
|
return _regeneratorRuntime.wrap(function (_context8) {
|
|
529
879
|
while (1) switch (_context8.prev = _context8.next) {
|
|
530
880
|
case 0:
|
|
531
|
-
console.log('***external event****', props
|
|
881
|
+
// console.log('***external event****', props);
|
|
532
882
|
evt = props.externalEvent;
|
|
533
883
|
state = props.state.get('KitchenConfigurator');
|
|
534
884
|
_t5 = evt === null || evt === void 0 ? void 0 : evt.type;
|
|
535
|
-
_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 ===
|
|
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;
|
|
536
886
|
break;
|
|
537
887
|
case 1:
|
|
538
888
|
// prepare item data request
|
|
@@ -635,7 +985,23 @@ function _handleExternalEvent() {
|
|
|
635
985
|
return addItemToCatalog(element, state, props.catalog, props.projectActions);
|
|
636
986
|
case 10:
|
|
637
987
|
// start drawing item
|
|
638
|
-
ARRAY_3D_MODES.includes(state.mode)
|
|
988
|
+
if (ARRAY_3D_MODES.includes(state.mode)) {
|
|
989
|
+
// in 3d view
|
|
990
|
+
props.itemsActions.selectToolDrawingItem3D(element.name);
|
|
991
|
+
} else {
|
|
992
|
+
// in 2d view
|
|
993
|
+
// create cabinet
|
|
994
|
+
props.itemsActions.selectToolDrawingItem(element.name);
|
|
995
|
+
// mapping the initial position of client coord to viewer2D coord
|
|
996
|
+
_evt$payload$initialP = evt.payload.initialPosition, mouseX = _evt$payload$initialP.mouseX, mouseY = _evt$payload$initialP.mouseY;
|
|
997
|
+
v2d = (_state$viewer2D = state.viewer2D) === null || _state$viewer2D === void 0 ? void 0 : _state$viewer2D.toJS();
|
|
998
|
+
if (mouseX && mouseY && v2d) {
|
|
999
|
+
vPosX = (mouseX - v2d.e) / v2d.a;
|
|
1000
|
+
vPosY = (mouseY - v2d.f) / v2d.d;
|
|
1001
|
+
layerID = state.scene.selectedLayer; // move cabinet to initial position
|
|
1002
|
+
props.itemsActions.updateDrawingItem(layerID, vPosX, -vPosY + state.scene.height);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
639
1005
|
props.projectActions.pushLastSelectedCatalogElementToHistory(element);
|
|
640
1006
|
props.projectActions.setIsCabinetDrawing(true);
|
|
641
1007
|
case 11:
|
|
@@ -757,8 +1123,13 @@ function _handleExternalEvent() {
|
|
|
757
1123
|
}
|
|
758
1124
|
return _context8.abrupt("continue", 34);
|
|
759
1125
|
case 32:
|
|
760
|
-
|
|
761
|
-
|
|
1126
|
+
layerId = state.getIn(['scene', 'selectedLayer']);
|
|
1127
|
+
layer = state.getIn(['scene', 'layers', layerId]);
|
|
1128
|
+
_layer$getIn = layer.getIn(['selected']), selectedLines = _layer$getIn.lines, selectedHoles = _layer$getIn.holes, selectedItems = _layer$getIn.items;
|
|
1129
|
+
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
|
+
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
|
+
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);
|
|
762
1133
|
case 33:
|
|
763
1134
|
// send scene object from 3DTool to HostApp using internalEvent
|
|
764
1135
|
(_props$onInternalEven2 = props.onInternalEvent) === null || _props$onInternalEven2 === void 0 || _props$onInternalEven2.call(props, {
|