kitchen-simulator 4.4.4 → 5.0.0-new-api

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/es/LiteRenderer.js +15 -53
  2. package/es/catalog/factories/area-factory-3d.js +0 -4
  3. package/es/catalog/holes/door-double/door_double.png +0 -0
  4. package/es/catalog/holes/door-panic/panicDoor.png +0 -0
  5. package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  6. package/es/catalog/holes/gate/gate.jpg +0 -0
  7. package/es/catalog/holes/window-clear/texture.png +0 -0
  8. package/es/catalog/holes/window-cross/texture.png +0 -0
  9. package/es/catalog/holes/window-double-hung/texture.png +0 -0
  10. package/es/catalog/holes/window-vertical/texture.png +0 -0
  11. package/es/catalog/utils/item-loader.js +0 -4
  12. package/es/class/item.js +17 -6
  13. package/es/constants.js +12 -7
  14. package/es/devLiteRenderer.js +91 -109
  15. package/es/mappings/external-events/mapExternalEventPayload.js +28 -0
  16. package/es/mappings/external-events/mappers/addItemMapper.js +86 -0
  17. package/es/mappings/external-events/mappers/ccdfMapper.js +86 -0
  18. package/es/mappings/external-events/mappers/ccdfToCDSMapper.js +31 -0
  19. package/es/mappings/external-events/mappers/changeDoorStyleMapper.js +65 -0
  20. package/es/mappings/external-events/mappers/loadProjectMapper.js +62 -0
  21. package/es/mappings/holesToCatalog.js +139 -0
  22. package/es/models.js +12 -1
  23. package/es/utils/isolate-event-handler.js +55 -45
  24. package/es/utils/molding.js +17 -1
  25. package/es/utils/skinPanelEngine.js +16 -11
  26. package/lib/LiteRenderer.js +17 -55
  27. package/lib/catalog/factories/area-factory-3d.js +0 -4
  28. package/lib/catalog/holes/door-double/door_double.png +0 -0
  29. package/lib/catalog/holes/door-panic/panicDoor.png +0 -0
  30. package/lib/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  31. package/lib/catalog/holes/gate/gate.jpg +0 -0
  32. package/lib/catalog/holes/window-clear/texture.png +0 -0
  33. package/lib/catalog/holes/window-cross/texture.png +0 -0
  34. package/lib/catalog/holes/window-double-hung/texture.png +0 -0
  35. package/lib/catalog/holes/window-vertical/texture.png +0 -0
  36. package/lib/catalog/utils/item-loader.js +0 -4
  37. package/lib/class/item.js +17 -6
  38. package/lib/constants.js +17 -12
  39. package/lib/devLiteRenderer.js +93 -111
  40. package/lib/mappings/external-events/mapExternalEventPayload.js +33 -0
  41. package/lib/mappings/external-events/mappers/addItemMapper.js +92 -0
  42. package/lib/mappings/external-events/mappers/ccdfMapper.js +93 -0
  43. package/lib/mappings/external-events/mappers/ccdfToCDSMapper.js +37 -0
  44. package/lib/mappings/external-events/mappers/changeDoorStyleMapper.js +72 -0
  45. package/lib/mappings/external-events/mappers/loadProjectMapper.js +70 -0
  46. package/lib/mappings/holesToCatalog.js +148 -0
  47. package/lib/models.js +12 -1
  48. package/lib/utils/isolate-event-handler.js +55 -45
  49. package/lib/utils/molding.js +17 -1
  50. package/lib/utils/skinPanelEngine.js +15 -10
  51. package/package.json +1 -1
@@ -0,0 +1,65 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ 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; }
3
+ 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; }
4
+ import { DEFAULT_INTERIOR_URL } from "../../../constants";
5
+ import { isEmpty } from "../../../utils/helper";
6
+ export function mapChangeDoorStyleEvent(evt, state) {
7
+ var _evt$payload, _layer$toJS, _targetDoorStyle$ccdf;
8
+ if (isEmpty(evt)) return null;
9
+ var targetDoorStyle = evt === null || evt === void 0 || (_evt$payload = evt.payload) === null || _evt$payload === void 0 ? void 0 : _evt$payload.doorStyle;
10
+ if (isEmpty(targetDoorStyle)) return evt;
11
+ var layerId = state.getIn(['scene', 'selectedLayer']);
12
+ var layer = state.getIn(['scene', 'layers', layerId]);
13
+ if (isEmpty(layer)) return evt;
14
+ var handleTexture = layer.get('doorHandle');
15
+ var counterToptexture = layer === null || layer === void 0 || (_layer$toJS = layer.toJS()) === null || _layer$toJS === void 0 || (_layer$toJS = _layer$toJS.counterTop) === null || _layer$toJS === void 0 ? void 0 : _layer$toJS.uri;
16
+
17
+ // make doorStyles and update the doorStyle payload
18
+ var Max_PH = 9;
19
+ var doorStyles = {
20
+ base: targetDoorStyle.texture,
21
+ counttop: counterToptexture,
22
+ interior: DEFAULT_INTERIOR_URL
23
+ };
24
+ for (var i = 1; i <= Max_PH; i++) {
25
+ doorStyles['base_door_' + i] = targetDoorStyle.texture;
26
+ doorStyles['base_fixed_drawer_door_' + i] = targetDoorStyle.texture;
27
+ doorStyles['base_drawer_' + i] = targetDoorStyle.texture;
28
+ doorStyles['base_drawer_door_' + i] = targetDoorStyle.texture;
29
+ doorStyles['door_handle_' + i] = handleTexture;
30
+ doorStyles['fixed_drawer_door_handle_' + i] = handleTexture;
31
+ doorStyles['drawer_door_handle_' + i] = handleTexture;
32
+ }
33
+ evt.payload.doorStyle = _objectSpread(_objectSpread({}, targetDoorStyle), {}, {
34
+ doorStyles: doorStyles
35
+ });
36
+ // make itemCDS using assets3d
37
+ var itemCDS = [];
38
+ var itemCDSData = {};
39
+ var cabitnetDoorStyleId;
40
+ targetDoorStyle === null || targetDoorStyle === void 0 || (_targetDoorStyle$ccdf = targetDoorStyle.ccdf_list) === null || _targetDoorStyle$ccdf === void 0 || _targetDoorStyle$ccdf.forEach(function (asItem) {
41
+ if (!isEmpty(asItem === null || asItem === void 0 ? void 0 : asItem.id)) {
42
+ cabitnetDoorStyleId = asItem.id;
43
+ }
44
+ asItem === null || asItem === void 0 || asItem.assets3d.forEach(function (as) {
45
+ if (!isEmpty(as === null || as === void 0 ? void 0 : as.placeholder_name) && !isEmpty(as === null || as === void 0 ? void 0 : as.gltf)) {
46
+ var updatedName = 'base_' + (as === null || as === void 0 ? void 0 : as.placeholder_name) + '_gltf';
47
+ itemCDSData[updatedName] = as === null || as === void 0 ? void 0 : as.gltf;
48
+ }
49
+ itemCDSData['is_euro_cds'] = !isEmpty(as === null || as === void 0 ? void 0 : as.is_euro_cds) ? as.is_euro_cds : 0;
50
+ itemCDSData['euro_shape_svg'] = !isEmpty(as === null || as === void 0 ? void 0 : as.euro_shape_svg) ? as.is_euro_cds : null;
51
+ itemCDSData['euro_width'] = !isEmpty(as === null || as === void 0 ? void 0 : as.euro_width) ? as.is_euro_cds : null;
52
+ itemCDSData['euro_height'] = !isEmpty(as === null || as === void 0 ? void 0 : as.euro_height) ? as.is_euro_cds : null;
53
+ itemCDSData['euro_length'] = !isEmpty(as === null || as === void 0 ? void 0 : as.euro_length) ? as.is_euro_cds : null;
54
+ });
55
+ var data = [];
56
+ data.push(itemCDSData);
57
+ itemCDS.push({
58
+ itemID: asItem.cabinet_id,
59
+ data: data,
60
+ cabinet_door_style_id: cabitnetDoorStyleId
61
+ });
62
+ });
63
+ evt.payload.itemCDS = itemCDS;
64
+ return evt;
65
+ }
@@ -0,0 +1,62 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ 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; }
3
+ 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; }
4
+ import { DEFAULT_DOOR_HANDLE_TEXTURE_URL, DEFAULT_INTERIOR_URL } from "../../../constants";
5
+ import { isEmpty } from "../../../utils/helper";
6
+ export function mapLoadProjectEvent(evt, state) {
7
+ // preprocessing for loading project
8
+ // this function make doorStyles using item's doorStyle
9
+ if (isEmpty(evt)) return null;
10
+ var layerId = evt.payload.layers['layer-1'].id;
11
+ var layer = evt.payload.layers;
12
+ var itemKeys = Object.keys(layer[layerId].items);
13
+ if (isEmpty(layer)) return evt;
14
+ var handleTexture = !isEmpty(layer.doorHandle) ? layer.doorHandle : DEFAULT_DOOR_HANDLE_TEXTURE_URL;
15
+ var counterToptexture = layer.counterTop;
16
+ // make doorStyles and update the doorStyle payload
17
+ var Max_PH = 9;
18
+ for (var i = 0; i < itemKeys.length; i++) {
19
+ var item = layer[layerId].items[itemKeys[i]];
20
+ var doorStyle = item.doorStyle;
21
+ var doorStyles = {
22
+ base: doorStyle.texture,
23
+ counttop: counterToptexture,
24
+ interior: DEFAULT_INTERIOR_URL
25
+ };
26
+ for (var _i = 1; _i <= Max_PH; _i++) {
27
+ doorStyles['base_door_' + _i] = doorStyle.texture;
28
+ doorStyles['base_fixed_drawer_door_' + _i] = doorStyle.texture;
29
+ doorStyles['base_drawer_' + _i] = doorStyle.texture;
30
+ doorStyles['base_drawer_door_' + _i] = doorStyle.texture;
31
+ doorStyles['door_handle_' + _i] = handleTexture;
32
+ doorStyles['fixed_drawer_door_handle_' + _i] = handleTexture;
33
+ doorStyles['drawer_door_handle_' + _i] = handleTexture;
34
+ }
35
+ item.doorStyle = _objectSpread(_objectSpread({}, doorStyle), {}, {
36
+ doorStyles: doorStyles
37
+ });
38
+ layer[layerId].items[itemKeys[i]] = item;
39
+ }
40
+ return evt;
41
+ }
42
+ export function updateProjectWithCDSList(project, cdsList) {
43
+ //This function updates the project json using CDSList
44
+ if (isEmpty(project) || isEmpty(cdsList)) return project;
45
+ var layerId = project.layers['layer-1'].id;
46
+ var layer = project.layers;
47
+ var itemKeys = Object.keys(layer[layerId].items);
48
+ if (isEmpty(itemKeys)) return project;
49
+ var _loop = function _loop(i) {
50
+ cdsList.forEach(function (cds) {
51
+ var _layer$layerId;
52
+ if (((_layer$layerId = layer[layerId]) === null || _layer$layerId === void 0 || (_layer$layerId = _layer$layerId.items[itemKeys[i]]) === null || _layer$layerId === void 0 ? void 0 : _layer$layerId.itemID) === (cds === null || cds === void 0 ? void 0 : cds.itemID)) {
53
+ layer[layerId].items[itemKeys[i]].doorStyle.cds = cds;
54
+ }
55
+ });
56
+ };
57
+ for (var i = 0; i < itemKeys.length; i++) {
58
+ _loop(i);
59
+ }
60
+ project.layers = layer;
61
+ return project;
62
+ }
@@ -0,0 +1,139 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ import * as Holes from "../catalog/holes/export";
6
+ var INCH_TO_CM = 2.54;
7
+ var normalizeKey = function normalizeKey(value) {
8
+ return (value !== null && value !== void 0 ? value : '').toString().toLowerCase().replace(/[^a-z0-9]+/g, '');
9
+ };
10
+ var safeParseJson = function safeParseJson(value) {
11
+ if (!value) return null;
12
+ try {
13
+ return JSON.parse(value);
14
+ } catch (_unused) {
15
+ return null;
16
+ }
17
+ };
18
+ var toCatalogLength = function toCatalogLength(value, prop) {
19
+ var _prop$defaultValue;
20
+ if (value == null) return null;
21
+ var unit = prop === null || prop === void 0 || (_prop$defaultValue = prop.defaultValue) === null || _prop$defaultValue === void 0 ? void 0 : _prop$defaultValue.unit;
22
+ if (unit && unit.toLowerCase() === 'in') return value;
23
+ return value * INCH_TO_CM;
24
+ };
25
+ var overrideLengthProperty = function overrideLengthProperty(prop, value) {
26
+ if (!prop || value == null) return prop;
27
+ var length = toCatalogLength(value, prop);
28
+ if (length == null) return prop;
29
+ return _objectSpread(_objectSpread({}, prop), {}, {
30
+ defaultValue: _objectSpread(_objectSpread({}, prop.defaultValue), {}, {
31
+ length: length
32
+ })
33
+ });
34
+ };
35
+ var findBaseHoleTemplate = function findBaseHoleTemplate(hole, templates) {
36
+ var target = normalizeKey(hole === null || hole === void 0 ? void 0 : hole.name);
37
+ if (!target) return null;
38
+ return templates.find(function (template) {
39
+ var _template$info, _template$info2;
40
+ var candidates = [template === null || template === void 0 ? void 0 : template.name, template === null || template === void 0 || (_template$info = template.info) === null || _template$info === void 0 ? void 0 : _template$info.title, template === null || template === void 0 || (_template$info2 = template.info) === null || _template$info2 === void 0 ? void 0 : _template$info2.description].map(normalizeKey);
41
+ return candidates.includes(target);
42
+ }) || null;
43
+ };
44
+ var buildHoleElementFromTemplate = function buildHoleElementFromTemplate(hole, base) {
45
+ var _base$info, _base$info2, _base$info3, _base$info4, _base$info5, _base$structure_json;
46
+ if (!hole || !base) return null;
47
+ var nextInfo = _objectSpread(_objectSpread({}, base.info), {}, {
48
+ title: hole.name || ((_base$info = base.info) === null || _base$info === void 0 ? void 0 : _base$info.title),
49
+ description: ((_base$info2 = base.info) === null || _base$info2 === void 0 ? void 0 : _base$info2.description) || hole.name || ((_base$info3 = base.info) === null || _base$info3 === void 0 ? void 0 : _base$info3.title),
50
+ image: hole.menu_thumbnail || ((_base$info4 = base.info) === null || _base$info4 === void 0 ? void 0 : _base$info4.image),
51
+ url: hole.gltf || ((_base$info5 = base.info) === null || _base$info5 === void 0 ? void 0 : _base$info5.url)
52
+ });
53
+ var nextProperties = _objectSpread({}, base.properties);
54
+ if (nextProperties.width) {
55
+ nextProperties.width = overrideLengthProperty(nextProperties.width, hole.width);
56
+ }
57
+ if (nextProperties.height) {
58
+ nextProperties.height = overrideLengthProperty(nextProperties.height, hole.height);
59
+ }
60
+ if (nextProperties.length) {
61
+ nextProperties.length = overrideLengthProperty(nextProperties.length, hole.length);
62
+ }
63
+ var customConfig = safeParseJson(hole.custom_config);
64
+ var customProps = (customConfig === null || customConfig === void 0 ? void 0 : customConfig.properties) || {};
65
+ Object.keys(customProps).forEach(function (key) {
66
+ if (!nextProperties[key]) return;
67
+ nextProperties[key] = overrideLengthProperty(nextProperties[key], customProps[key]);
68
+ });
69
+ return _objectSpread(_objectSpread({}, base), {}, {
70
+ name: hole.name || base.name,
71
+ info: nextInfo,
72
+ properties: nextProperties,
73
+ structure_json: _objectSpread(_objectSpread({}, base.structure_json || {}), {}, {
74
+ hole_id: hole.id || ((_base$structure_json = base.structure_json) === null || _base$structure_json === void 0 ? void 0 : _base$structure_json.hole_id)
75
+ })
76
+ });
77
+ };
78
+ export var buildHoleElements = function buildHoleElements(holes) {
79
+ var categories = {
80
+ Doors: [],
81
+ Windows: []
82
+ };
83
+ var elements = [];
84
+ if (!Array.isArray(holes)) return {
85
+ elements: elements,
86
+ categories: categories
87
+ };
88
+ var templates = Object.values(Holes);
89
+ var usedNames = new Set();
90
+ holes.forEach(function (hole) {
91
+ var _base$info6;
92
+ if (!hole || hole.is_deleted) return;
93
+ var base = findBaseHoleTemplate(hole, templates);
94
+ if (!base) return;
95
+ var element = buildHoleElementFromTemplate(hole, base);
96
+ if (!element || !element.name || usedNames.has(element.name)) return;
97
+ usedNames.add(element.name);
98
+ elements.push(element);
99
+ var typeKey = normalizeKey(hole.type);
100
+ if (typeKey === 'window') {
101
+ categories.Windows.push(element);
102
+ } else if (typeKey === 'door') {
103
+ categories.Doors.push(element);
104
+ } else if ((_base$info6 = base.info) !== null && _base$info6 !== void 0 && (_base$info6 = _base$info6.tag) !== null && _base$info6 !== void 0 && _base$info6.includes('window')) {
105
+ categories.Windows.push(element);
106
+ } else {
107
+ categories.Doors.push(element);
108
+ }
109
+ });
110
+ return {
111
+ elements: elements,
112
+ categories: categories
113
+ };
114
+ };
115
+ export var registerDynamicHoles = function registerDynamicHoles(catalog, holePayload) {
116
+ if (!catalog) return;
117
+ var holeElements = (holePayload === null || holePayload === void 0 ? void 0 : holePayload.elements) || [];
118
+ holeElements.forEach(function (element) {
119
+ if (!catalog.hasElement(element.name)) {
120
+ catalog.registerElement(element);
121
+ }
122
+ });
123
+ var categories = (holePayload === null || holePayload === void 0 ? void 0 : holePayload.categories) || {};
124
+ Object.entries(categories).forEach(function (_ref) {
125
+ var _ref2 = _slicedToArray(_ref, 2),
126
+ name = _ref2[0],
127
+ elements = _ref2[1];
128
+ if (!elements.length) return;
129
+ if (!catalog.hasCategory(name)) {
130
+ catalog.registerCategory(name, name, elements);
131
+ return;
132
+ }
133
+ elements.forEach(function (element) {
134
+ if (!catalog.categoryHasElement(name, element.name)) {
135
+ catalog.addToCategory(name, element);
136
+ }
137
+ });
138
+ });
139
+ };
package/es/models.js CHANGED
@@ -180,6 +180,15 @@ export var Item = /*#__PURE__*/function (_Record7) {
180
180
  _inherits(Item, _Record7);
181
181
  return _createClass(Item);
182
182
  }(Record(_objectSpread(_objectSpread({}, sharedAttributes), {}, {
183
+ long_name: '',
184
+ sizeinfo: new Map(),
185
+ description: '',
186
+ base: '',
187
+ shape_svg: '',
188
+ gltf: '',
189
+ is_corner: -1,
190
+ obj_property: new Map(),
191
+ outline: '',
183
192
  prototype: 'items',
184
193
  x: 0,
185
194
  y: 0,
@@ -336,13 +345,15 @@ export var CatalogElement = /*#__PURE__*/function (_Record1) {
336
345
  }(Record({
337
346
  itemID: -1,
338
347
  name: '',
348
+ long_name: '',
339
349
  prototype: '',
340
350
  info: new Map(),
341
351
  properties: new Map(),
342
352
  obj: new Map(),
343
353
  type: '',
344
354
  cds: new Map(),
345
- structure_json: {}
355
+ structure_json: {},
356
+ gltf: ''
346
357
  }, 'CatalogElement'));
347
358
  export var Catalog = /*#__PURE__*/function (_Record10) {
348
359
  function Catalog() {
@@ -18,6 +18,10 @@ import { getMoldingDataOfScene2 } from "./molding";
18
18
  import { Scene, State } from "../models";
19
19
  import { calcDistancesFromHoleToNearestOneOrWall } from "./geometry";
20
20
  import { computeSkinPanels } from "./skinPanelEngine";
21
+ import { mapExternalEventPayload } from "../mappings/external-events/mapExternalEventPayload";
22
+ import { ccdfMapper } from "../mappings/external-events/mappers/ccdfMapper";
23
+ import { mapFromCCDFToCDS } from "../mappings/external-events/mappers/ccdfToCDSMapper";
24
+ import { updateProjectWithCDSList } from "../mappings/external-events/mappers/loadProjectMapper";
21
25
  var PRECISION = 2;
22
26
 
23
27
  // ---- compatibility: supports old + optimized props shapes ----
@@ -455,27 +459,28 @@ function updateCabinetPayload(_x3) {
455
459
  }
456
460
  function _updateCabinetPayload() {
457
461
  _updateCabinetPayload = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(cabinetPayload) {
458
- var cabinetPayloadKeys, i, _cabinetPayload$cabin, _cabinetPayload$cabin2;
462
+ var tempPlaceholders, cabinetPayloadKeys, i;
459
463
  return _regeneratorRuntime.wrap(function (_context6) {
460
464
  while (1) switch (_context6.prev = _context6.next) {
461
465
  case 0:
462
- // let tempPlaceholders = [];
463
- // tempPlaceholders = await parseTempPlaceholdersFromCabinetPayload(
464
- // cabinetPayload
465
- // );
466
+ tempPlaceholders = [];
467
+ _context6.next = 1;
468
+ return parseTempPlaceholdersFromCabinetPayload(cabinetPayload);
469
+ case 1:
470
+ tempPlaceholders = _context6.sent;
466
471
  cabinetPayloadKeys = Object.keys(cabinetPayload);
467
472
  for (i = 0; i < cabinetPayloadKeys.length; i++) {
468
473
  if (cabinetPayloadKeys[i] === 'structure_json') {
469
- cabinetPayload[cabinetPayloadKeys[i]]['placeholders'] = (_cabinetPayload$cabin = (_cabinetPayload$cabin2 = cabinetPayload[cabinetPayloadKeys[i]]['tempPlaceholders'][0]) === null || _cabinetPayload$cabin2 === void 0 ? void 0 : _cabinetPayload$cabin2.placeholders) !== null && _cabinetPayload$cabin !== void 0 ? _cabinetPayload$cabin : [];
470
-
471
474
  // cabinetPayload[cabinetPayloadKeys[i]]['placeholders'] =
472
- // tempPlaceholders[0].placeholders;
473
- // cabinetPayload[cabinetPayloadKeys[i]]['tempPlaceholders'] =
474
- // tempPlaceholders;
475
+ // cabinetPayload[cabinetPayloadKeys[i]]['tempPlaceholders'][0]
476
+ // ?.placeholders ?? [];
477
+
478
+ cabinetPayload[cabinetPayloadKeys[i]]['placeholders'] = tempPlaceholders[0].placeholders;
479
+ cabinetPayload[cabinetPayloadKeys[i]]['tempPlaceholders'] = tempPlaceholders;
475
480
  }
476
481
  }
477
482
  return _context6.abrupt("return", cabinetPayload);
478
- case 1:
483
+ case 2:
479
484
  case "end":
480
485
  return _context6.stop();
481
486
  }
@@ -1211,13 +1216,12 @@ export function handleExternalEvent(_x0) {
1211
1216
  }
1212
1217
  function _handleExternalEvent() {
1213
1218
  _handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee0(props) {
1214
- var _evt$payload3, _evt$payload4;
1215
- var evt, state, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _evt$payload5, doorStyle, itemCDS, applyScope, _evt$payload5$itemIds, itemIds, _layerId, allItems, targetItems, idSet, selectedItemIds, _cdsItems, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, measurementUnit, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$configData$mol, _props$configData, _props$configData$ski, _props$configData2, _props$onInternalEven3, sceneData, currentTexture, moldingPieceLength, skinPanelExclusionSKUs, _t5, _t6, _t7;
1219
+ var _evt$payload4, _evt$payload5;
1220
+ var state, evt, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _evt$payload6, doorStyle, applyScope, itemCDS, _evt$payload6$itemIds, itemIds, _layerId, allItems, targetItems, idSet, selectedItemIds, ccdf_list, _loop7, _i2, _props$onInternalEven2, _evt$payload7, roomShapeType, width, height, measurementUnit, _doorStyle, value, _value, _evt$payload8, moldingInfo, isGlobal, distElement, _distElement, _evt$payload9, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload0, _evt$payload1, _evt$payload10, _evt$payload11, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _layer$doorStyle, _currentTexture, _props$configData$mol, _props$configData, _props$configData$ski, _props$configData2, _props$onInternalEven3, sceneData, currentTexture, moldingPieceLength, skinPanelExclusionSKUs, _t5, _t6, _t7;
1216
1221
  return _regeneratorRuntime.wrap(function (_context11) {
1217
1222
  while (1) switch (_context11.prev = _context11.next) {
1218
1223
  case 0:
1219
1224
  // console.log('***external event****', props.externalEvent);
1220
- evt = props.externalEvent;
1221
1225
  state = getPlannerStateFromProps(props);
1222
1226
  if (state) {
1223
1227
  _context11.next = 1;
@@ -1225,6 +1229,7 @@ function _handleExternalEvent() {
1225
1229
  }
1226
1230
  return _context11.abrupt("return");
1227
1231
  case 1:
1232
+ evt = mapExternalEventPayload(props.externalEvent, state);
1228
1233
  layerId = state.getIn(['scene', 'selectedLayer']);
1229
1234
  layer = state.getIn(['scene', 'layers', layerId]);
1230
1235
  _t5 = evt === null || evt === void 0 ? void 0 : evt.type;
@@ -1239,19 +1244,19 @@ function _handleExternalEvent() {
1239
1244
  cdsItems = [];
1240
1245
  itemKeys = evt !== null && evt !== void 0 && (_evt$payload = evt.payload) !== null && _evt$payload !== void 0 && (_evt$payload = _evt$payload.layers['layer-1']) !== null && _evt$payload !== void 0 && _evt$payload.items ? Object.keys(evt.payload.layers['layer-1'].items) : [];
1241
1246
  _loop6 = /*#__PURE__*/_regeneratorRuntime.mark(function _loop6() {
1242
- var _evt$payload2, _it$properties, _it$properties2, _it$properties3, _it$doorStyle2;
1247
+ var _evt$payload3, _it$properties, _it$properties2, _it$properties3, _it$doorStyle2;
1243
1248
  var it;
1244
1249
  return _regeneratorRuntime.wrap(function (_context0) {
1245
1250
  while (1) switch (_context0.prev = _context0.next) {
1246
1251
  case 0:
1247
- it = evt === null || evt === void 0 || (_evt$payload2 = evt.payload) === null || _evt$payload2 === void 0 || (_evt$payload2 = _evt$payload2.layers['layer-1']) === null || _evt$payload2 === void 0 ? void 0 : _evt$payload2.items[itemKeys[i]]; //////// check altitude of item property and change length from _length (convert length from 'in' fo 'cm')
1252
+ it = evt === null || evt === void 0 || (_evt$payload3 = evt.payload) === null || _evt$payload3 === void 0 || (_evt$payload3 = _evt$payload3.layers['layer-1']) === null || _evt$payload3 === void 0 ? void 0 : _evt$payload3.items[itemKeys[i]]; //////// check altitude of item property and change length from _length (convert length from 'in' fo 'cm')
1248
1253
  if (it !== null && it !== void 0 && (_it$properties = it.properties) !== null && _it$properties !== void 0 && (_it$properties = _it$properties.altitude) !== null && _it$properties !== void 0 && _it$properties.length && it !== null && it !== void 0 && (_it$properties2 = it.properties) !== null && _it$properties2 !== void 0 && (_it$properties2 = _it$properties2.altitude) !== null && _it$properties2 !== void 0 && _it$properties2._unit && it !== null && it !== void 0 && (_it$properties3 = it.properties) !== null && _it$properties3 !== void 0 && (_it$properties3 = _it$properties3.altitude) !== null && _it$properties3 !== void 0 && _it$properties3._length && it.properties.altitude.length !== convert(it.properties.altitude._length).from(it.properties.altitude._unit).to('cm')) {
1249
1254
  it.properties.altitude.length = convert(it.properties.altitude._length).from(it.properties.altitude._unit).to('cm');
1250
1255
  }
1251
1256
  /////////
1252
1257
  if (!cdsItems.some(function (v) {
1253
1258
  var _it$doorStyle;
1254
- return it.itemID === v.itemID && it.name === v.name && ((_it$doorStyle = it.doorStyle) === null || _it$doorStyle === void 0 || (_it$doorStyle = _it$doorStyle.doorStyles) === null || _it$doorStyle === void 0 ? void 0 : _it$doorStyle.cabinet_door_style_id) === v.cdsId;
1259
+ return it.itemID === v.itemID && it.name === v.name && ((_it$doorStyle = it.doorStyle) === null || _it$doorStyle === void 0 ? void 0 : _it$doorStyle.id) === v.dfId;
1255
1260
  })) cdsItems.push({
1256
1261
  itemID: it.itemID,
1257
1262
  prototype: it.prototype,
@@ -1259,7 +1264,7 @@ function _handleExternalEvent() {
1259
1264
  name: it.name,
1260
1265
  type: it.type,
1261
1266
  sku_number: it.sku_number,
1262
- cdsId: (_it$doorStyle2 = it.doorStyle) === null || _it$doorStyle2 === void 0 || (_it$doorStyle2 = _it$doorStyle2.doorStyles) === null || _it$doorStyle2 === void 0 ? void 0 : _it$doorStyle2.cabinet_door_style_id
1267
+ dfId: (_it$doorStyle2 = it.doorStyle) === null || _it$doorStyle2 === void 0 ? void 0 : _it$doorStyle2.id
1263
1268
  });
1264
1269
  case 1:
1265
1270
  case "end":
@@ -1292,11 +1297,15 @@ function _handleExternalEvent() {
1292
1297
  }
1293
1298
  }, /*#__PURE__*/function () {
1294
1299
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(result) {
1295
- var rt, _i;
1300
+ var _evt$payload2;
1301
+ var cdsList, cabinetDefinitionList, rt, _i;
1296
1302
  return _regeneratorRuntime.wrap(function (_context9) {
1297
1303
  while (1) switch (_context9.prev = _context9.next) {
1298
1304
  case 0:
1299
- rt = mergeSameElements(result === null || result === void 0 ? void 0 : result.elements);
1305
+ cdsList = mapFromCCDFToCDS(result === null || result === void 0 ? void 0 : result.ccdf_list);
1306
+ evt.payload = updateProjectWithCDSList(evt.payload, cdsList);
1307
+ cabinetDefinitionList = ccdfMapper(result === null || result === void 0 ? void 0 : result.ccdf_list, evt === null || evt === void 0 || (_evt$payload2 = evt.payload) === null || _evt$payload2 === void 0 ? void 0 : _evt$payload2.layers['layer-1']);
1308
+ rt = mergeSameElements(cabinetDefinitionList);
1300
1309
  _i = 0;
1301
1310
  case 1:
1302
1311
  if (!(_i < (rt === null || rt === void 0 ? void 0 : rt.length))) {
@@ -1373,7 +1382,7 @@ function _handleExternalEvent() {
1373
1382
  case 13:
1374
1383
  return _context11.abrupt("continue", 49);
1375
1384
  case 14:
1376
- 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);
1385
+ ARRAY_3D_MODES.includes(state.mode) ? props.holesActions.selectToolDrawingHole3D(evt === null || evt === void 0 || (_evt$payload4 = evt.payload) === null || _evt$payload4 === void 0 ? void 0 : _evt$payload4.holeName) : props.holesActions.selectToolDrawingHole(evt === null || evt === void 0 || (_evt$payload5 = evt.payload) === null || _evt$payload5 === void 0 ? void 0 : _evt$payload5.holeName);
1377
1386
  return _context11.abrupt("continue", 49);
1378
1387
  case 15:
1379
1388
  moveAndRotatePan2D3D(evt.type, props, evt.payload, state);
@@ -1384,7 +1393,7 @@ function _handleExternalEvent() {
1384
1393
  props.projectActions.rename(defaulTitle);
1385
1394
  return _context11.abrupt("continue", 49);
1386
1395
  case 17:
1387
- _evt$payload5 = evt.payload, doorStyle = _evt$payload5.doorStyle, itemCDS = _evt$payload5.itemCDS, applyScope = _evt$payload5.applyScope, _evt$payload5$itemIds = _evt$payload5.itemIds, itemIds = _evt$payload5$itemIds === void 0 ? [] : _evt$payload5$itemIds;
1396
+ _evt$payload6 = evt.payload, doorStyle = _evt$payload6.doorStyle, applyScope = _evt$payload6.applyScope, itemCDS = _evt$payload6.itemCDS, _evt$payload6$itemIds = _evt$payload6.itemIds, itemIds = _evt$payload6$itemIds === void 0 ? [] : _evt$payload6$itemIds;
1388
1397
  _layerId = state.getIn(['scene', 'selectedLayer']);
1389
1398
  allItems = state.getIn(['scene', 'layers', _layerId, 'items']).toJS();
1390
1399
  targetItems = []; // Prepare idSet for SINGLE or MULTIPLE
@@ -1412,28 +1421,24 @@ function _handleExternalEvent() {
1412
1421
  case 20:
1413
1422
  return _context11.abrupt("continue", 21);
1414
1423
  case 21:
1415
- _cdsItems = [];
1424
+ ccdf_list = [];
1416
1425
  _loop7 = /*#__PURE__*/_regeneratorRuntime.mark(function _loop7() {
1417
- var _itemCDS$find;
1418
- var item, cdsId;
1426
+ var item;
1419
1427
  return _regeneratorRuntime.wrap(function (_context10) {
1420
1428
  while (1) switch (_context10.prev = _context10.next) {
1421
1429
  case 0:
1422
1430
  item = targetItems[_i2];
1423
- cdsId = (_itemCDS$find = itemCDS.find(function (itCDS) {
1424
- return itCDS.itemID === item.itemID;
1425
- })) === null || _itemCDS$find === void 0 ? void 0 : _itemCDS$find.cabinet_door_style_id;
1426
- if (cdsId && !_cdsItems.some(function (v) {
1427
- return item.itemID === v.itemID && item.name === v.name && cdsId === v.cdsId;
1431
+ if (!ccdf_list.some(function (v) {
1432
+ return item.itemID === v.itemID && item.name === v.name && doorStyle.id === v.doorFinishId;
1428
1433
  })) {
1429
- _cdsItems.push({
1434
+ ccdf_list.push({
1430
1435
  itemID: item.itemID,
1431
1436
  prototype: item.prototype,
1432
1437
  category: item.category,
1433
1438
  name: item.name,
1434
1439
  type: item.type,
1435
1440
  sku_number: item.sku_number,
1436
- cdsId: cdsId
1441
+ doorFinishId: doorStyle.id
1437
1442
  });
1438
1443
  }
1439
1444
  case 1:
@@ -1454,19 +1459,23 @@ function _handleExternalEvent() {
1454
1459
  _context11.next = 22;
1455
1460
  break;
1456
1461
  case 24:
1457
- if (_cdsItems.length > 0) {
1462
+ if (ccdf_list.length > 0) {
1458
1463
  (_props$onInternalEven2 = props.onInternalEvent) === null || _props$onInternalEven2 === void 0 || _props$onInternalEven2.call(props, {
1459
1464
  type: INTERNAL_EVENT_ITEMS_CATALOG,
1460
1465
  value: {
1461
- cdsItems: _cdsItems
1466
+ ccdf_list: ccdf_list
1462
1467
  }
1463
- }, /*#__PURE__*/function () {
1468
+ },
1469
+ /*#__PURE__*/
1470
+ // result is ccdf_list
1471
+ function () {
1464
1472
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee9(result) {
1465
- var rt, _i3;
1473
+ var mappedCabinetDefinitionList, rt, _i3;
1466
1474
  return _regeneratorRuntime.wrap(function (_context1) {
1467
1475
  while (1) switch (_context1.prev = _context1.next) {
1468
1476
  case 0:
1469
- rt = mergeSameElements(result === null || result === void 0 ? void 0 : result.elements);
1477
+ mappedCabinetDefinitionList = ccdfMapper(result.ccdf_list, layer); // result: ccdf_list
1478
+ rt = mergeSameElements(mappedCabinetDefinitionList);
1470
1479
  _i3 = 0;
1471
1480
  case 1:
1472
1481
  if (!(_i3 < (rt === null || rt === void 0 ? void 0 : rt.length))) {
@@ -1496,7 +1505,7 @@ function _handleExternalEvent() {
1496
1505
  }
1497
1506
  return _context11.abrupt("continue", 49);
1498
1507
  case 25:
1499
- _evt$payload6 = evt.payload, roomShapeType = _evt$payload6.roomShapeType, width = _evt$payload6.width, height = _evt$payload6.height, measurementUnit = _evt$payload6.measurementUnit, _doorStyle = _evt$payload6.doorStyle;
1508
+ _evt$payload7 = evt.payload, roomShapeType = _evt$payload7.roomShapeType, width = _evt$payload7.width, height = _evt$payload7.height, measurementUnit = _evt$payload7.measurementUnit, _doorStyle = _evt$payload7.doorStyle;
1500
1509
  props.projectActions.createRoomWithShape(roomShapeType, width, height, measurementUnit, _doorStyle);
1501
1510
  return _context11.abrupt("continue", 49);
1502
1511
  case 26:
@@ -1525,7 +1534,7 @@ function _handleExternalEvent() {
1525
1534
  props.projectActions.redo();
1526
1535
  return _context11.abrupt("continue", 49);
1527
1536
  case 31:
1528
- _evt$payload7 = evt.payload, moldingInfo = _evt$payload7.moldingInfo, isGlobal = _evt$payload7.isGlobal;
1537
+ _evt$payload8 = evt.payload, moldingInfo = _evt$payload8.moldingInfo, isGlobal = _evt$payload8.isGlobal;
1529
1538
  _context11.next = 32;
1530
1539
  return loadMoldingSvg(moldingInfo);
1531
1540
  case 32:
@@ -1540,7 +1549,7 @@ function _handleExternalEvent() {
1540
1549
  if (_distElement) props.projectActions.remove(_distElement);
1541
1550
  return _context11.abrupt("continue", 49);
1542
1551
  case 35:
1543
- _evt$payload8 = evt.payload, option = _evt$payload8.option, _value2 = _evt$payload8.value;
1552
+ _evt$payload9 = evt.payload, option = _evt$payload9.option, _value2 = _evt$payload9.value;
1544
1553
  _t7 = option;
1545
1554
  _context11.next = _t7 === PROJECT_SETTING_OPTION.CHANGE_MEASUREMENT_UNIT ? 36 : _t7 === PROJECT_SETTING_OPTION.UPDATE_CEIL_HEIGHT ? 37 : _t7 === PROJECT_SETTING_OPTION.CHANGE_WALL_LENGTH_MEASURE ? 38 : _t7 === PROJECT_SETTING_OPTION.CHANGE_BASE_CABINET_MEASURE ? 39 : _t7 === PROJECT_SETTING_OPTION.CHANGE_WALL_CABINET_MEASURE ? 40 : _t7 === PROJECT_SETTING_OPTION.CHANGE_WINDOW_DOOR_MEASURE ? 41 : 42;
1546
1555
  break;
@@ -1581,7 +1590,7 @@ function _handleExternalEvent() {
1581
1590
  case 45:
1582
1591
  _layerID = state.scene.selectedLayer;
1583
1592
  _layer2 = state.scene.getIn(['layers', _layerID]).toJS();
1584
- orginalItemInfo = evt === null || evt === void 0 || (_evt$payload9 = evt.payload) === null || _evt$payload9 === void 0 ? void 0 : _evt$payload9.orginalItemInfo;
1593
+ orginalItemInfo = evt === null || evt === void 0 || (_evt$payload0 = evt.payload) === null || _evt$payload0 === void 0 ? void 0 : _evt$payload0.orginalItemInfo;
1585
1594
  originalItem = _layer2 === null || _layer2 === void 0 ? void 0 : _layer2.items[orginalItemInfo.id];
1586
1595
  _context11.next = 46;
1587
1596
  return addItemToCatalog(evt.payload.replaceItemInfo, state, props.catalog, props.projectActions);
@@ -1593,10 +1602,10 @@ function _handleExternalEvent() {
1593
1602
  y: originalItem.y
1594
1603
  };
1595
1604
  replaceItem = {
1596
- name: evt === null || evt === void 0 || (_evt$payload0 = evt.payload) === null || _evt$payload0 === void 0 || (_evt$payload0 = _evt$payload0.replaceItemInfo) === null || _evt$payload0 === void 0 ? void 0 : _evt$payload0.name,
1605
+ name: evt === null || evt === void 0 || (_evt$payload1 = evt.payload) === null || _evt$payload1 === void 0 || (_evt$payload1 = _evt$payload1.replaceItemInfo) === null || _evt$payload1 === void 0 ? void 0 : _evt$payload1.name,
1597
1606
  info: {
1598
- width: evt === null || evt === void 0 || (_evt$payload1 = evt.payload) === null || _evt$payload1 === void 0 || (_evt$payload1 = _evt$payload1.replaceItemInfo) === null || _evt$payload1 === void 0 || (_evt$payload1 = _evt$payload1.sizeinfo) === null || _evt$payload1 === void 0 ? void 0 : _evt$payload1.width,
1599
- height: evt === null || evt === void 0 || (_evt$payload10 = evt.payload) === null || _evt$payload10 === void 0 || (_evt$payload10 = _evt$payload10.replaceItemInfo) === null || _evt$payload10 === void 0 || (_evt$payload10 = _evt$payload10.sizeinfo) === null || _evt$payload10 === void 0 ? void 0 : _evt$payload10.height
1607
+ width: evt === null || evt === void 0 || (_evt$payload10 = evt.payload) === null || _evt$payload10 === void 0 || (_evt$payload10 = _evt$payload10.replaceItemInfo) === null || _evt$payload10 === void 0 || (_evt$payload10 = _evt$payload10.sizeinfo) === null || _evt$payload10 === void 0 ? void 0 : _evt$payload10.width,
1608
+ height: evt === null || evt === void 0 || (_evt$payload11 = evt.payload) === null || _evt$payload11 === void 0 || (_evt$payload11 = _evt$payload11.replaceItemInfo) === null || _evt$payload11 === void 0 || (_evt$payload11 = _evt$payload11.sizeinfo) === null || _evt$payload11 === void 0 ? void 0 : _evt$payload11.height
1600
1609
  }
1601
1610
  };
1602
1611
  props.itemsActions.replaceItem(originalItemPos, originalItem, replaceItem);
@@ -1606,7 +1615,8 @@ function _handleExternalEvent() {
1606
1615
  return _context11.abrupt("continue", 49);
1607
1616
  case 48:
1608
1617
  sceneData = state.scene.toJS(); // get molding data for "ReviewForQuote"
1609
- currentTexture = layer.doorStyle !== null || layer.doorStyle !== undefined ? layer.doorStyle : props.state.doorStyle.toJS();
1618
+ currentTexture = (_layer$doorStyle = layer === null || layer === void 0 ? void 0 : layer.doorStyle) !== null && _layer$doorStyle !== void 0 ? _layer$doorStyle : props.state.doorStyle;
1619
+ if (!isEmpty(currentTexture) && Map.isMap(currentTexture)) currentTexture = (_currentTexture = currentTexture) === null || _currentTexture === void 0 ? void 0 : _currentTexture.toJS();
1610
1620
  moldingPieceLength = (_props$configData$mol = props === null || props === void 0 || (_props$configData = props.configData) === null || _props$configData === void 0 ? void 0 : _props$configData.moldingPieceLength) !== null && _props$configData$mol !== void 0 ? _props$configData$mol : DEFAULT_MOLDING_PIECE_LENGTH;
1611
1621
  sceneData.layers[layerId].moldingData = getMoldingDataOfScene2(layer, props.catalog, currentTexture, moldingPieceLength);
1612
1622
 
@@ -563,7 +563,23 @@ export function getLinesFromItems2(moldingGroup, layer, catalog) {
563
563
  })) return 1; // continue
564
564
  var mergedResult = getMergedLine(MGlines[_i3], filteredMGlines, 0);
565
565
  if (mergedResult) {
566
- newMGlines.push(mergedResult.mergedLine);
566
+ // keep origin line direction
567
+ var rstLine = mergedResult.mergedLine;
568
+ // if (
569
+ // (Math.abs(MGlines[i][0].x - rstLine[1].x) < EPSILON &&
570
+ // Math.abs(MGlines[i][0].y - rstLine[1].y) < EPSILON) ||
571
+ // (Math.abs(MGlines[i][1].x - rstLine[0].x) < EPSILON &&
572
+ // Math.abs(MGlines[i][1].y - rstLine[0].y) < EPSILON)
573
+ // ) {
574
+ // // swap two end points
575
+ // const tx = rstLine[0].x;
576
+ // const ty = rstLine[0].y;
577
+ // rstLine[0].x = rstLine[1].x;
578
+ // rstLine[0].y = rstLine[1].y;
579
+ // rstLine[1].x = tx;
580
+ // rstLine[1].y = ty;
581
+ // }
582
+ newMGlines.push(rstLine);
567
583
  filteredMGlines = mergedResult.filteredMGlines;
568
584
  }
569
585
  },