kitchen-simulator 11.37.0 → 11.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -273,10 +273,12 @@ export function setWallColor(texture) {
273
273
  };
274
274
  }
275
275
  export function setMolding(texture, isAll) {
276
+ var onInternalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
276
277
  return {
277
278
  type: SET_MOLDING,
278
279
  molding: texture,
279
- isAll: isAll
280
+ isAll: isAll,
281
+ onInternalEvent: onInternalEvent
280
282
  };
281
283
  }
282
284
  export function updateMolding() {
package/es/class/item.js CHANGED
@@ -1,14 +1,16 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
1
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
4
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
5
  import _createClass from "@babel/runtime/helpers/esm/createClass";
6
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
7
  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; }
6
8
  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; }
7
9
  import { convert } from "../utils/convert-units-lite";
8
10
  import { Group, Hole, Layer } from "./export";
9
11
  import { GeometryUtils, IDBroker, MoldingUtils, NameGenerator } from "../utils/export";
10
12
  import { fromJS, Map } from 'immutable';
11
- import { DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE, DOORSTYLE_SCOPE_SINGLE, INSTALLATION_SUFFIX_TYPE, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_MIRROR_ELEMENT, MODE_DRAGGING_ITEM, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM, MODE_ROTATING_ITEM_3D, MOLDING_LOCATIONS } from "../constants";
13
+ import { DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE, DOORSTYLE_SCOPE_SINGLE, INSTALLATION_SUFFIX_TYPE, INTERNAL_EVENT_DRAW_ELEMENT, INTERNAL_EVENT_ITEMS_CATALOG, INTERNAL_EVENT_MIRROR_ELEMENT, MODE_DRAGGING_ITEM, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM, MODE_ROTATING_ITEM_3D, MOLDING_LOCATIONS } from "../constants";
12
14
  import { debugUtil, updatePayloadOfInternalEvent } from "../utils/helper";
13
15
  import { isUndefined } from 'util';
14
16
  import { hasMoldingLayout } from "../utils/molding";
@@ -18,6 +20,7 @@ import { toJSIfNeeded } from "../shared/objects/immutable";
18
20
  import { canMirrorCabinet } from "../shared/domain/cabinet-mirror";
19
21
  import { isWarningCabinet } from "../shared/domain/cabinet-warning";
20
22
  import { mapFromCCDFToCDS } from "../mappings/external-events/mappers/ccdfToCDSMapper";
23
+ import { prepareMoldingCCDFList } from "../events/external/handleExternalEvent.util";
21
24
  var allItemRect;
22
25
  var allItemSnap;
23
26
  var allLines;
@@ -310,7 +313,7 @@ var Item = /*#__PURE__*/function () {
310
313
  updatedState: state
311
314
  };
312
315
  var idSet = null;
313
- if (applyScope === DOORSTYLE_SCOPE_SINGLE) {
316
+ if (applyScope === DOORSTYLE_SCOPE_SINGLE || applyScope === false) {
314
317
  var selectedItemIds = state.getIn(['scene', 'layers', layerID, 'selected', 'items']).toJS();
315
318
  idSet = new Set(selectedItemIds);
316
319
  }
@@ -330,14 +333,15 @@ var Item = /*#__PURE__*/function () {
330
333
  layer.items.forEach(function (it) {
331
334
  var _idSet2;
332
335
  // if (isEmpty(it?.molding)) return;
333
- var should = applyScope === DOORSTYLE_SCOPE_ALL ? true : (_idSet2 = idSet) === null || _idSet2 === void 0 ? void 0 : _idSet2.has(it.id);
336
+ var should = applyScope === DOORSTYLE_SCOPE_ALL || applyScope === true ? true : (_idSet2 = idSet) === null || _idSet2 === void 0 ? void 0 : _idSet2.has(it.id);
334
337
  if (!should) return;
335
338
  var itemMoldings = it.molding;
339
+ var itemDoorFinish = it.doorStyle;
336
340
  var updatedItemMoldings = [];
337
341
  itemMoldings === null || itemMoldings === void 0 || itemMoldings.forEach(function (md) {
338
342
  var itemMoldingID = md.itemID;
339
343
  var picked = ccdf_list.find(function (c) {
340
- return (c === null || c === void 0 ? void 0 : c.cabinet_id) && c.cabinet_id === itemMoldingID;
344
+ return (c === null || c === void 0 ? void 0 : c.cabinet_id) && (c === null || c === void 0 ? void 0 : c.door_finish_id) && c.cabinet_id === itemMoldingID && c.door_finish_id === (itemDoorFinish === null || itemDoorFinish === void 0 ? void 0 : itemDoorFinish.id);
341
345
  });
342
346
  if (!picked) return;
343
347
  md.ccdf = picked;
@@ -1671,6 +1675,8 @@ var Item = /*#__PURE__*/function () {
1671
1675
  }, {
1672
1676
  key: "setMolding",
1673
1677
  value: function setMolding(state, molding, isAll) {
1678
+ var _this4 = this;
1679
+ var onInternalEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1674
1680
  var _state14 = state,
1675
1681
  scene = _state14.scene;
1676
1682
  var layerID = scene.get('selectedLayer');
@@ -1754,6 +1760,60 @@ var Item = /*#__PURE__*/function () {
1754
1760
  });
1755
1761
  }
1756
1762
  }
1763
+ var layerId = state.getIn(['scene', 'selectedLayer']);
1764
+ var allItems = state.getIn(['scene', 'layers', layerId, 'items']).toJS();
1765
+ var targetItems = [],
1766
+ molding_ccdf_list = [];
1767
+ switch (isAll) {
1768
+ case true:
1769
+ targetItems = Object.values(allItems);
1770
+ break;
1771
+ case false:
1772
+ targetItems = Object.values(allItems.filter(function (item) {
1773
+ var _item$molding;
1774
+ return !isEmpty(item === null || item === void 0 || (_item$molding = item.molding) === null || _item$molding === void 0 ? void 0 : _item$molding.find(function (md) {
1775
+ return md.itemID === molding.itemID;
1776
+ }));
1777
+ }));
1778
+ default:
1779
+ break;
1780
+ }
1781
+ for (var i = 0; i < targetItems.length; i++) {
1782
+ var _item$molding2;
1783
+ var item = targetItems[i];
1784
+ molding_ccdf_list.push.apply(molding_ccdf_list, _toConsumableArray(prepareMoldingCCDFList(item === null || item === void 0 ? void 0 : item.doorStyle, item === null || item === void 0 || (_item$molding2 = item.molding) === null || _item$molding2 === void 0 ? void 0 : _item$molding2.filter(function (md) {
1785
+ return md.itemID === molding.itemID;
1786
+ }))));
1787
+ }
1788
+ if (molding_ccdf_list.length > 0) {
1789
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1790
+ type: INTERNAL_EVENT_ITEMS_CATALOG,
1791
+ value: {
1792
+ event_type: 'change_door_style',
1793
+ ccdf_list: [],
1794
+ molding_ccdf_list: molding_ccdf_list
1795
+ }
1796
+ },
1797
+ /*#__PURE__*/
1798
+ // result is ccdf_list
1799
+ function () {
1800
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(result) {
1801
+ var _this4$setMoldingsCCD, _result$molding_ccdf_;
1802
+ return _regeneratorRuntime.wrap(function (_context) {
1803
+ while (1) switch (_context.prev = _context.next) {
1804
+ case 0:
1805
+ state = (_this4$setMoldingsCCD = _this4.setMoldingsCCDF(state, (_result$molding_ccdf_ = result === null || result === void 0 ? void 0 : result.molding_ccdf_list) !== null && _result$molding_ccdf_ !== void 0 ? _result$molding_ccdf_ : [], isAll)) === null || _this4$setMoldingsCCD === void 0 ? void 0 : _this4$setMoldingsCCD.updatedState;
1806
+ case 1:
1807
+ case "end":
1808
+ return _context.stop();
1809
+ }
1810
+ }, _callee);
1811
+ }));
1812
+ return function (_x) {
1813
+ return _ref.apply(this, arguments);
1814
+ };
1815
+ }());
1816
+ }
1757
1817
  state = state.merge({
1758
1818
  sceneHistory: historyPush(state.sceneHistory, state.scene)
1759
1819
  });
@@ -1079,4 +1079,21 @@ export function mergeSameElements(projectItemsCatalog) {
1079
1079
  _loop(i);
1080
1080
  }
1081
1081
  return result;
1082
+ }
1083
+ export function prepareMoldingCCDFList(doorStyle, moldingData) {
1084
+ var moldingCCDFs = [];
1085
+ for (var i = 0; i < moldingData.length; i++) {
1086
+ var _molding$ccdf$catalog, _molding$ccdf, _molding$ccdf$cabinet, _molding$ccdf2, _doorStyle$id, _molding$long_name;
1087
+ var molding = moldingData[i];
1088
+ moldingCCDFs.push({
1089
+ sizeinfo: molding.sizeinfo,
1090
+ catalog_cabinet_sku: (_molding$ccdf$catalog = molding === null || molding === void 0 || (_molding$ccdf = molding.ccdf) === null || _molding$ccdf === void 0 ? void 0 : _molding$ccdf.catalog_cabinet_sku) !== null && _molding$ccdf$catalog !== void 0 ? _molding$ccdf$catalog : molding.sku_number,
1091
+ cabinet_id: (_molding$ccdf$cabinet = molding === null || molding === void 0 || (_molding$ccdf2 = molding.ccdf) === null || _molding$ccdf2 === void 0 ? void 0 : _molding$ccdf2.cabinet_id) !== null && _molding$ccdf$cabinet !== void 0 ? _molding$ccdf$cabinet : molding.itemID,
1092
+ ccdf: molding.ccdf,
1093
+ target_door_finish_id: (_doorStyle$id = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id !== void 0 ? _doorStyle$id : null,
1094
+ long_name: (_molding$long_name = molding === null || molding === void 0 ? void 0 : molding.long_name) !== null && _molding$long_name !== void 0 ? _molding$long_name : null,
1095
+ id: molding.itemID
1096
+ });
1097
+ }
1098
+ return moldingCCDFs;
1082
1099
  }
@@ -1,23 +1,7 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { asyncPool } from "../../shared/concurrency/async-pool";
4
- function prepareMoldingCCDFList(doorStyle, moldingData) {
5
- var moldingCCDFs = [];
6
- for (var i = 0; i < moldingData.length; i++) {
7
- var _molding$ccdf$catalog, _molding$ccdf, _molding$ccdf$cabinet, _molding$ccdf2, _doorStyle$id, _molding$long_name;
8
- var molding = moldingData[i];
9
- moldingCCDFs.push({
10
- sizeinfo: molding.sizeinfo,
11
- catalog_cabinet_sku: (_molding$ccdf$catalog = molding === null || molding === void 0 || (_molding$ccdf = molding.ccdf) === null || _molding$ccdf === void 0 ? void 0 : _molding$ccdf.catalog_cabinet_sku) !== null && _molding$ccdf$catalog !== void 0 ? _molding$ccdf$catalog : molding.sku_number,
12
- cabinet_id: (_molding$ccdf$cabinet = molding === null || molding === void 0 || (_molding$ccdf2 = molding.ccdf) === null || _molding$ccdf2 === void 0 ? void 0 : _molding$ccdf2.cabinet_id) !== null && _molding$ccdf$cabinet !== void 0 ? _molding$ccdf$cabinet : molding.itemID,
13
- ccdf: molding.ccdf,
14
- target_door_finish_id: (_doorStyle$id = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id !== void 0 ? _doorStyle$id : null,
15
- long_name: (_molding$long_name = molding === null || molding === void 0 ? void 0 : molding.long_name) !== null && _molding$long_name !== void 0 ? _molding$long_name : null,
16
- id: molding.itemID
17
- });
18
- }
19
- return moldingCCDFs;
20
- }
4
+ import { prepareMoldingCCDFList } from "./handleExternalEvent.util";
21
5
  export function handleChangeDoorStyleEvent(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9, _x0, _x1, _x10) {
22
6
  return _handleChangeDoorStyleEvent.apply(this, arguments);
23
7
  }
@@ -59,7 +43,7 @@ function _handleChangeDoorStyleEvent() {
59
43
  case 4:
60
44
  ccdf_list = [];
61
45
  _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {
62
- var item, _item$ccdf$catalog_ca, _item$ccdf, _item$ccdf$cabinet_id, _item$ccdf2, _doorStyle$id3, _item$long_name;
46
+ var item, _item$ccdf$catalog_ca, _item$ccdf, _item$ccdf$cabinet_id, _item$ccdf2, _doorStyle$id2, _item$long_name;
63
47
  return _regeneratorRuntime.wrap(function (_context2) {
64
48
  while (1) switch (_context2.prev = _context2.next) {
65
49
  case 0:
@@ -73,7 +57,7 @@ function _handleChangeDoorStyleEvent() {
73
57
  catalog_cabinet_sku: (_item$ccdf$catalog_ca = item === null || item === void 0 || (_item$ccdf = item.ccdf) === null || _item$ccdf === void 0 ? void 0 : _item$ccdf.catalog_cabinet_sku) !== null && _item$ccdf$catalog_ca !== void 0 ? _item$ccdf$catalog_ca : item.sku_number,
74
58
  cabinet_id: (_item$ccdf$cabinet_id = item === null || item === void 0 || (_item$ccdf2 = item.ccdf) === null || _item$ccdf2 === void 0 ? void 0 : _item$ccdf2.cabinet_id) !== null && _item$ccdf$cabinet_id !== void 0 ? _item$ccdf$cabinet_id : null,
75
59
  ccdf: item.ccdf,
76
- target_door_finish_id: (_doorStyle$id3 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id3 !== void 0 ? _doorStyle$id3 : null,
60
+ target_door_finish_id: (_doorStyle$id2 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id2 !== void 0 ? _doorStyle$id2 : null,
77
61
  long_name: (_item$long_name = item === null || item === void 0 ? void 0 : item.long_name) !== null && _item$long_name !== void 0 ? _item$long_name : null,
78
62
  scene_cabinet_id: item.id
79
63
  });
@@ -110,7 +94,7 @@ function _handleChangeDoorStyleEvent() {
110
94
  // result is ccdf_list
111
95
  function () {
112
96
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(result) {
113
- var _result$ccdf_list, _doorStyle$id2, _result$molding_ccdf_;
97
+ var _result$ccdf_list, _doorStyle$id, _result$molding_ccdf_;
114
98
  var mappedCabinetDefinitionList, rt;
115
99
  return _regeneratorRuntime.wrap(function (_context) {
116
100
  while (1) switch (_context.prev = _context.next) {
@@ -128,7 +112,7 @@ function _handleChangeDoorStyleEvent() {
128
112
  // Persist ccdf on affected instances so SYNC includes the latest ccdf.id for each item.
129
113
  // IMPORTANT: host response `ccdf_list[]` may not include `door_finish_id`.
130
114
  // Use request door_finish_id (doorStyle.id) as the source of truth for door_finish_id.
131
- props.itemsActions.setItemsCCDF((_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [], applyScope, itemIds, (_doorStyle$id2 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id2 !== void 0 ? _doorStyle$id2 : null);
115
+ props.itemsActions.setItemsCCDF((_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [], applyScope, itemIds, (_doorStyle$id = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id !== void 0 ? _doorStyle$id : null);
132
116
  props.itemsActions.setMoldingsCCDF((_result$molding_ccdf_ = result === null || result === void 0 ? void 0 : result.molding_ccdf_list) !== null && _result$molding_ccdf_ !== void 0 ? _result$molding_ccdf_ : [], applyScope);
133
117
  props.itemsActions.setDoorStyle(doorStyle, itemCDS, applyScope, itemIds);
134
118
  case 2:
@@ -1,4 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
3
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
4
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
5
  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; }
@@ -7,19 +8,21 @@ import { convert } from "../../utils/convert-units-lite";
7
8
  import { INTERNAL_EVENT_ITEMS_CATALOG } from "../../constants";
8
9
  import { Scene, State } from "../../models";
9
10
  import { asyncPool } from "../../shared/concurrency/async-pool";
11
+ import { prepareMoldingCCDFList } from "./handleExternalEvent.util";
12
+ import { isEmpty } from "../../components/viewer2d/utils";
10
13
  export function handleLoadProjectEvent(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8) {
11
14
  return _handleLoadProjectEvent.apply(this, arguments);
12
15
  }
13
16
  function _handleLoadProjectEvent() {
14
17
  _handleLoadProjectEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(props, state, evt, mapFromCCDFToCDS, updateProjectWithCDSList, ccdfMapper, mergeSameElements, addItemToCatalog) {
15
- var layerName, _evt$payload$layers$l, _evt$payload, _state$catalog, ccdf_list, items, newScene, tempState, _props$onInternalEven;
18
+ var layerName, _evt$payload$layers$l, _evt$payload, _state$catalog, ccdf_list, molding_ccdf_list, items, newScene, tempState, _props$onInternalEven;
16
19
  return _regeneratorRuntime.wrap(function (_context2) {
17
20
  while (1) switch (_context2.prev = _context2.next) {
18
21
  case 0:
19
22
  layerName = 'layer-1';
20
23
  if (evt !== null && evt !== void 0 && evt.payload) {
21
24
  // prepare item data request
22
- ccdf_list = [];
25
+ ccdf_list = [], molding_ccdf_list = [];
23
26
  items = (_evt$payload$layers$l = evt === null || evt === void 0 || (_evt$payload = evt.payload) === null || _evt$payload === void 0 || (_evt$payload = _evt$payload.layers[layerName]) === null || _evt$payload === void 0 ? void 0 : _evt$payload.items) !== null && _evt$payload$layers$l !== void 0 ? _evt$payload$layers$l : {};
24
27
  Object.keys(items).forEach(function (k) {
25
28
  var _it$properties, _it$properties2, _it$properties3;
@@ -43,6 +46,7 @@ function _handleLoadProjectEvent() {
43
46
  long_name: (_it$long_name = it === null || it === void 0 ? void 0 : it.long_name) !== null && _it$long_name !== void 0 ? _it$long_name : null,
44
47
  scene_cabinet_id: it.id
45
48
  });
49
+ if (!isEmpty(it.doorStyle) && !isEmpty(it.molding)) molding_ccdf_list.push.apply(molding_ccdf_list, _toConsumableArray(prepareMoldingCCDFList(it.doorStyle, it.molding)));
46
50
  }
47
51
  });
48
52
  newScene = new Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
@@ -55,7 +59,8 @@ function _handleLoadProjectEvent() {
55
59
  type: INTERNAL_EVENT_ITEMS_CATALOG,
56
60
  value: {
57
61
  event_type: 'load_project',
58
- ccdf_list: ccdf_list
62
+ ccdf_list: ccdf_list,
63
+ molding_ccdf_list: molding_ccdf_list
59
64
  }
60
65
  }, /*#__PURE__*/function () {
61
66
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(result) {
@@ -99,6 +104,7 @@ function _handleLoadProjectEvent() {
99
104
  });
100
105
  case 1:
101
106
  props.projectActions.loadProject(evt.payload);
107
+ props.itemsActions.setMoldingsCCDF(result === null || result === void 0 ? void 0 : result.molding_ccdf_list, 'all');
102
108
  case 2:
103
109
  case "end":
104
110
  return _context.stop();
@@ -13,7 +13,7 @@ function _handleSetMolding() {
13
13
  _context.next = 1;
14
14
  return loadMoldingSvg(moldingInfo);
15
15
  case 1:
16
- props.itemsActions.setMolding(moldingInfo, isGlobal);
16
+ props.itemsActions.setMolding(moldingInfo, isGlobal, props.onInternalEvent);
17
17
  case 2:
18
18
  case "end":
19
19
  return _context.stop();
@@ -109,7 +109,7 @@ export default function (state, action) {
109
109
  state = stateHistoryPush(state).updatedState;
110
110
  return Item.setCounterTop(state, action.counterTop).updatedState;
111
111
  case SET_MOLDING:
112
- return Item.setMolding(state, action.molding, action.isAll).updatedState;
112
+ return Item.setMolding(state, action.molding, action.isAll, action.onInternalEvent).updatedState;
113
113
  case UPDATE_MOLDING:
114
114
  return Item.updateMolding(state).updatedState;
115
115
  case SET_WALL_COLOR:
@@ -699,97 +699,6 @@ function getTrimmedContourLineSegs(lineSegs, otherLines, cnt) {
699
699
  return [];
700
700
  }
701
701
  }
702
- export function getLinesFromItems(moldingGroup, layer, catalog) {
703
- var allLineRects = GeometryUtils.buildRectFromLines(layer, GeometryUtils.getAllLines(layer));
704
- var items = _toConsumableArray(moldingGroup.items);
705
- var MGlines = getLinesOfItem(items[0], allLineRects, catalog);
706
- items = sortItemsByDistance(items, items[0]);
707
- var _loop7 = function _loop7() {
708
- var itemLines = getLinesOfItem(items[i], allLineRects, catalog);
709
- var temp_MGLines = [];
710
- MGlines.forEach(function (line) {
711
- var idx = itemLines.findIndex(function (itemLine) {
712
- return isLinesOverlapped(line, itemLine);
713
- });
714
- var curItemLine = itemLines[idx];
715
- if (idx > -1) {
716
- if (!(GeometryUtils.samePoints(line[0], curItemLine[0]) && GeometryUtils.samePoints(line[1], curItemLine[1]) || GeometryUtils.samePoints(line[0], curItemLine[1]) && GeometryUtils.samePoints(line[1], curItemLine[0]))) {
717
- var MGLine = mergeOverlappedLines(line, curItemLine);
718
- temp_MGLines.push(MGLine);
719
- }
720
- itemLines.splice(idx, 1);
721
- } else {
722
- temp_MGLines.push(line);
723
- }
724
- });
725
- itemLines.forEach(function (itemLine) {
726
- return temp_MGLines.push(itemLine);
727
- });
728
- MGlines = [].concat(temp_MGLines);
729
- };
730
- for (var i = 1; i < items.length; i++) {
731
- _loop7();
732
- }
733
- // return MGlines;
734
- var snapped_other_items = layer.items.toArray().filter(function (item) {
735
- if (items.some(function (it) {
736
- return item.id === it.id;
737
- })) return false;
738
- return isItemSnappedGroup(item, items);
739
- });
740
- snapped_other_items.forEach(function (item) {
741
- var itemAltitude = item.properties.get('altitude').get('_length');
742
- var itemAltitudeUnit = item.properties.get('altitude').get('_unit');
743
- itemAltitude = convert(itemAltitude).from(itemAltitudeUnit).to('cm');
744
- var itemHeight = item.properties.get('height').get('_length');
745
- var itemHeightUnit = item.properties.get('height').get('_unit');
746
- itemHeight = convert(itemHeight).from(itemHeightUnit).to('cm');
747
- var mgroupAltitude = items[0].properties.get('altitude').get('_length');
748
- var mgroupAltitudeUnit = items[0].properties.get('altitude').get('_unit');
749
- mgroupAltitude = convert(mgroupAltitude).from(mgroupAltitudeUnit).to('cm');
750
- var mgroupHeight = items[0].properties.get('height').get('_length');
751
- var mgroupHeightUnit = items[0].properties.get('height').get('_unit');
752
- mgroupHeight = convert(mgroupHeight).from(mgroupHeightUnit).to('cm');
753
- var flag = false;
754
- switch (moldingGroup.location_type) {
755
- case TOP_MOLDING_LOCATION:
756
- flag = itemAltitude + itemHeight > mgroupAltitude + mgroupHeight;
757
- break;
758
- case MIDDLE_MOLDING_LOCATION:
759
- flag = true;
760
- break;
761
- case BOTTOM_MOLDING_LOCATION:
762
- flag = itemAltitude < mgroupAltitude;
763
- break;
764
- }
765
- if (item.category !== 'cabinet' || ![BASE_CABINET_LAYOUTPOS, WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS].includes(item.layoutpos)) flag = true;
766
- if (flag) {
767
- var itemLines = getLinesOfItem(item, allLineRects, catalog);
768
- var temp_MGLines = [];
769
- MGlines.forEach(function (mgl) {
770
- var idx = itemLines.findIndex(function (itl) {
771
- return isLinesOverlapped(mgl, itl);
772
- });
773
- var curITL = itemLines[idx];
774
- if (idx > -1) {
775
- if (getDelta(mgl[0], mgl[1], curITL[1], curITL[0]) < EPSILON || getDelta(mgl[0], mgl[1], curITL[0], curITL[1]) < EPSILON) {
776
- if (GeometryUtils.verticesDistance(mgl[0], mgl[1]) > GeometryUtils.verticesDistance(curITL[0], curITL[1])) {
777
- var MGLine = mergeOverlappedLines(mgl, curITL);
778
- temp_MGLines.push(MGLine);
779
- }
780
- itemLines.splice(idx, 1);
781
- } else {
782
- temp_MGLines.push(mgl);
783
- }
784
- } else {
785
- temp_MGLines.push(mgl);
786
- }
787
- });
788
- MGlines = [].concat(temp_MGLines);
789
- }
790
- });
791
- return MGlines;
792
- }
793
702
  function getMDPoints(newMD) {
794
703
  if (newMD.lines.length < 1) return _objectSpread(_objectSpread({}, newMD), {}, {
795
704
  pointGroups: []
@@ -839,7 +748,7 @@ function getMDPoints(newMD) {
839
748
  var pointGroups = [[]];
840
749
  var flag = 1;
841
750
  var i = 0;
842
- var _loop8 = function _loop8() {
751
+ var _loop7 = function _loop7() {
843
752
  if (pointGroups[i].length === 0) {
844
753
  pointGroups[i].push(new Three.Vector2(MDlines[0][0].x - cPos.x, MDlines[0][0].y - cPos.y), new Three.Vector2(MDlines[0][1].x - cPos.x, MDlines[0][1].y - cPos.y));
845
754
  MDlines.splice(0, 1);
@@ -904,7 +813,7 @@ function getMDPoints(newMD) {
904
813
  }
905
814
  };
906
815
  while (MDlines.length !== 0) {
907
- _loop8();
816
+ _loop7();
908
817
  }
909
818
  var z = newMD.items[0].properties.get('altitude').get('_length');
910
819
  var zUnit = newMD.items[0].properties.get('altitude').get('_unit') || 'cm';
@@ -1014,14 +923,14 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLe
1014
923
  // filter the real molding line segments
1015
924
  var removeLineIds = []; // remove the line that fully overlapped to other line
1016
925
  var newLines = []; // new countour line segment that except the overlapped part
1017
- var _loop9 = function _loop9(i) {
926
+ var _loop8 = function _loop8(i) {
1018
927
  var srcLine = {
1019
928
  x1: moldingLines[i].line[0].x,
1020
929
  y1: moldingLines[i].line[0].y,
1021
930
  x2: moldingLines[i].line[1].x,
1022
931
  y2: moldingLines[i].line[1].y
1023
932
  };
1024
- var _loop1 = function _loop1(_j) {
933
+ var _loop0 = function _loop0(_j) {
1025
934
  if (i === _j) return 0; // continue
1026
935
  if (Math.abs(moldingLines[i].z - moldingLines[_j].z) > EPSILON) return 0; // continue
1027
936
  var destLine = {
@@ -1056,13 +965,13 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLe
1056
965
  },
1057
966
  _ret4;
1058
967
  for (var _j = 0; _j < moldingLines.length; _j++) {
1059
- _ret4 = _loop1(_j);
968
+ _ret4 = _loop0(_j);
1060
969
  if (_ret4 === 0) continue;
1061
970
  if (_ret4 === 1) break;
1062
971
  }
1063
972
  };
1064
973
  for (var i = 0; i < moldingLines.length; i++) {
1065
- _loop9(i);
974
+ _loop8(i);
1066
975
  }
1067
976
  moldingLines = moldingLines.filter(function (line, idx) {
1068
977
  return !removeLineIds.some(function (id) {
@@ -1093,7 +1002,7 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLe
1093
1002
  // console.log('moldingLines: ', moldingLines);
1094
1003
 
1095
1004
  // make molding data with grouping molding & doorStyle
1096
- var _loop0 = function _loop0() {
1005
+ var _loop9 = function _loop9() {
1097
1006
  var ml = moldingLines[k];
1098
1007
  var mlLength = ml.molding.name === TOE_KICK_MOLDING ? ml.inchWidth : convert(GeometryUtils.verticesDistance(ml.line[0], ml.line[1])).from('cm').to('in');
1099
1008
  var idx = moldingData.findIndex(function (v) {
@@ -1110,7 +1019,7 @@ export function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLe
1110
1019
  }
1111
1020
  };
1112
1021
  for (var k = 0; k < moldingLines.length; k++) {
1113
- _loop0();
1022
+ _loop9();
1114
1023
  }
1115
1024
  // console.log('moldingData: ', moldingData);
1116
1025
 
@@ -326,10 +326,12 @@ function setWallColor(texture) {
326
326
  };
327
327
  }
328
328
  function setMolding(texture, isAll) {
329
+ var onInternalEvent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
329
330
  return {
330
331
  type: _constants.SET_MOLDING,
331
332
  molding: texture,
332
- isAll: isAll
333
+ isAll: isAll,
334
+ onInternalEvent: onInternalEvent
333
335
  };
334
336
  }
335
337
  function updateMolding() {
package/lib/class/item.js CHANGED
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -23,6 +25,7 @@ var _immutable2 = require("../shared/objects/immutable");
23
25
  var _cabinetMirror = require("../shared/domain/cabinet-mirror");
24
26
  var _cabinetWarning = require("../shared/domain/cabinet-warning");
25
27
  var _ccdfToCDSMapper = require("../mappings/external-events/mappers/ccdfToCDSMapper");
28
+ var _handleExternalEvent = require("../events/external/handleExternalEvent.util");
26
29
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
30
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
28
31
  var allItemRect;
@@ -317,7 +320,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
317
320
  updatedState: state
318
321
  };
319
322
  var idSet = null;
320
- if (applyScope === _constants.DOORSTYLE_SCOPE_SINGLE) {
323
+ if (applyScope === _constants.DOORSTYLE_SCOPE_SINGLE || applyScope === false) {
321
324
  var selectedItemIds = state.getIn(['scene', 'layers', layerID, 'selected', 'items']).toJS();
322
325
  idSet = new Set(selectedItemIds);
323
326
  }
@@ -337,14 +340,15 @@ var Item = exports["default"] = /*#__PURE__*/function () {
337
340
  layer.items.forEach(function (it) {
338
341
  var _idSet2;
339
342
  // if (isEmpty(it?.molding)) return;
340
- var should = applyScope === _constants.DOORSTYLE_SCOPE_ALL ? true : (_idSet2 = idSet) === null || _idSet2 === void 0 ? void 0 : _idSet2.has(it.id);
343
+ var should = applyScope === _constants.DOORSTYLE_SCOPE_ALL || applyScope === true ? true : (_idSet2 = idSet) === null || _idSet2 === void 0 ? void 0 : _idSet2.has(it.id);
341
344
  if (!should) return;
342
345
  var itemMoldings = it.molding;
346
+ var itemDoorFinish = it.doorStyle;
343
347
  var updatedItemMoldings = [];
344
348
  itemMoldings === null || itemMoldings === void 0 || itemMoldings.forEach(function (md) {
345
349
  var itemMoldingID = md.itemID;
346
350
  var picked = ccdf_list.find(function (c) {
347
- return (c === null || c === void 0 ? void 0 : c.cabinet_id) && c.cabinet_id === itemMoldingID;
351
+ return (c === null || c === void 0 ? void 0 : c.cabinet_id) && (c === null || c === void 0 ? void 0 : c.door_finish_id) && c.cabinet_id === itemMoldingID && c.door_finish_id === (itemDoorFinish === null || itemDoorFinish === void 0 ? void 0 : itemDoorFinish.id);
348
352
  });
349
353
  if (!picked) return;
350
354
  md.ccdf = picked;
@@ -1678,6 +1682,8 @@ var Item = exports["default"] = /*#__PURE__*/function () {
1678
1682
  }, {
1679
1683
  key: "setMolding",
1680
1684
  value: function setMolding(state, molding, isAll) {
1685
+ var _this4 = this;
1686
+ var onInternalEvent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1681
1687
  var _state14 = state,
1682
1688
  scene = _state14.scene;
1683
1689
  var layerID = scene.get('selectedLayer');
@@ -1761,6 +1767,60 @@ var Item = exports["default"] = /*#__PURE__*/function () {
1761
1767
  });
1762
1768
  }
1763
1769
  }
1770
+ var layerId = state.getIn(['scene', 'selectedLayer']);
1771
+ var allItems = state.getIn(['scene', 'layers', layerId, 'items']).toJS();
1772
+ var targetItems = [],
1773
+ molding_ccdf_list = [];
1774
+ switch (isAll) {
1775
+ case true:
1776
+ targetItems = Object.values(allItems);
1777
+ break;
1778
+ case false:
1779
+ targetItems = Object.values(allItems.filter(function (item) {
1780
+ var _item$molding;
1781
+ return !(0, _utils.isEmpty)(item === null || item === void 0 || (_item$molding = item.molding) === null || _item$molding === void 0 ? void 0 : _item$molding.find(function (md) {
1782
+ return md.itemID === molding.itemID;
1783
+ }));
1784
+ }));
1785
+ default:
1786
+ break;
1787
+ }
1788
+ for (var i = 0; i < targetItems.length; i++) {
1789
+ var _item$molding2;
1790
+ var item = targetItems[i];
1791
+ molding_ccdf_list.push.apply(molding_ccdf_list, (0, _toConsumableArray2["default"])((0, _handleExternalEvent.prepareMoldingCCDFList)(item === null || item === void 0 ? void 0 : item.doorStyle, item === null || item === void 0 || (_item$molding2 = item.molding) === null || _item$molding2 === void 0 ? void 0 : _item$molding2.filter(function (md) {
1792
+ return md.itemID === molding.itemID;
1793
+ }))));
1794
+ }
1795
+ if (molding_ccdf_list.length > 0) {
1796
+ onInternalEvent === null || onInternalEvent === void 0 || onInternalEvent({
1797
+ type: _constants.INTERNAL_EVENT_ITEMS_CATALOG,
1798
+ value: {
1799
+ event_type: 'change_door_style',
1800
+ ccdf_list: [],
1801
+ molding_ccdf_list: molding_ccdf_list
1802
+ }
1803
+ },
1804
+ /*#__PURE__*/
1805
+ // result is ccdf_list
1806
+ function () {
1807
+ var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(result) {
1808
+ var _this4$setMoldingsCCD, _result$molding_ccdf_;
1809
+ return _regenerator["default"].wrap(function (_context) {
1810
+ while (1) switch (_context.prev = _context.next) {
1811
+ case 0:
1812
+ state = (_this4$setMoldingsCCD = _this4.setMoldingsCCDF(state, (_result$molding_ccdf_ = result === null || result === void 0 ? void 0 : result.molding_ccdf_list) !== null && _result$molding_ccdf_ !== void 0 ? _result$molding_ccdf_ : [], isAll)) === null || _this4$setMoldingsCCD === void 0 ? void 0 : _this4$setMoldingsCCD.updatedState;
1813
+ case 1:
1814
+ case "end":
1815
+ return _context.stop();
1816
+ }
1817
+ }, _callee);
1818
+ }));
1819
+ return function (_x) {
1820
+ return _ref.apply(this, arguments);
1821
+ };
1822
+ }());
1823
+ }
1764
1824
  state = state.merge({
1765
1825
  sceneHistory: (0, _history.historyPush)(state.sceneHistory, state.scene)
1766
1826
  });
@@ -9,6 +9,7 @@ exports.getElement = getElement;
9
9
  exports.getPlannerStateFromProps = getPlannerStateFromProps;
10
10
  exports.loadMoldingSvg = loadMoldingSvg;
11
11
  exports.mergeSameElements = mergeSameElements;
12
+ exports.prepareMoldingCCDFList = prepareMoldingCCDFList;
12
13
  exports.updateAttributeOfSelectedElement = updateAttributeOfSelectedElement;
13
14
  exports.updatePropertyOfSelectedElement = updatePropertyOfSelectedElement;
14
15
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -1090,4 +1091,21 @@ function mergeSameElements(projectItemsCatalog) {
1090
1091
  _loop(i);
1091
1092
  }
1092
1093
  return result;
1094
+ }
1095
+ function prepareMoldingCCDFList(doorStyle, moldingData) {
1096
+ var moldingCCDFs = [];
1097
+ for (var i = 0; i < moldingData.length; i++) {
1098
+ var _molding$ccdf$catalog, _molding$ccdf, _molding$ccdf$cabinet, _molding$ccdf2, _doorStyle$id, _molding$long_name;
1099
+ var molding = moldingData[i];
1100
+ moldingCCDFs.push({
1101
+ sizeinfo: molding.sizeinfo,
1102
+ catalog_cabinet_sku: (_molding$ccdf$catalog = molding === null || molding === void 0 || (_molding$ccdf = molding.ccdf) === null || _molding$ccdf === void 0 ? void 0 : _molding$ccdf.catalog_cabinet_sku) !== null && _molding$ccdf$catalog !== void 0 ? _molding$ccdf$catalog : molding.sku_number,
1103
+ cabinet_id: (_molding$ccdf$cabinet = molding === null || molding === void 0 || (_molding$ccdf2 = molding.ccdf) === null || _molding$ccdf2 === void 0 ? void 0 : _molding$ccdf2.cabinet_id) !== null && _molding$ccdf$cabinet !== void 0 ? _molding$ccdf$cabinet : molding.itemID,
1104
+ ccdf: molding.ccdf,
1105
+ target_door_finish_id: (_doorStyle$id = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id !== void 0 ? _doorStyle$id : null,
1106
+ long_name: (_molding$long_name = molding === null || molding === void 0 ? void 0 : molding.long_name) !== null && _molding$long_name !== void 0 ? _molding$long_name : null,
1107
+ id: molding.itemID
1108
+ });
1109
+ }
1110
+ return moldingCCDFs;
1093
1111
  }
@@ -8,23 +8,7 @@ exports.handleChangeDoorStyleEvent = handleChangeDoorStyleEvent;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _asyncPool = require("../../shared/concurrency/async-pool");
11
- function prepareMoldingCCDFList(doorStyle, moldingData) {
12
- var moldingCCDFs = [];
13
- for (var i = 0; i < moldingData.length; i++) {
14
- var _molding$ccdf$catalog, _molding$ccdf, _molding$ccdf$cabinet, _molding$ccdf2, _doorStyle$id, _molding$long_name;
15
- var molding = moldingData[i];
16
- moldingCCDFs.push({
17
- sizeinfo: molding.sizeinfo,
18
- catalog_cabinet_sku: (_molding$ccdf$catalog = molding === null || molding === void 0 || (_molding$ccdf = molding.ccdf) === null || _molding$ccdf === void 0 ? void 0 : _molding$ccdf.catalog_cabinet_sku) !== null && _molding$ccdf$catalog !== void 0 ? _molding$ccdf$catalog : molding.sku_number,
19
- cabinet_id: (_molding$ccdf$cabinet = molding === null || molding === void 0 || (_molding$ccdf2 = molding.ccdf) === null || _molding$ccdf2 === void 0 ? void 0 : _molding$ccdf2.cabinet_id) !== null && _molding$ccdf$cabinet !== void 0 ? _molding$ccdf$cabinet : molding.itemID,
20
- ccdf: molding.ccdf,
21
- target_door_finish_id: (_doorStyle$id = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id !== void 0 ? _doorStyle$id : null,
22
- long_name: (_molding$long_name = molding === null || molding === void 0 ? void 0 : molding.long_name) !== null && _molding$long_name !== void 0 ? _molding$long_name : null,
23
- id: molding.itemID
24
- });
25
- }
26
- return moldingCCDFs;
27
- }
11
+ var _handleExternalEvent = require("./handleExternalEvent.util");
28
12
  function handleChangeDoorStyleEvent(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9, _x0, _x1, _x10) {
29
13
  return _handleChangeDoorStyleEvent.apply(this, arguments);
30
14
  }
@@ -66,7 +50,7 @@ function _handleChangeDoorStyleEvent() {
66
50
  case 4:
67
51
  ccdf_list = [];
68
52
  _loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
69
- var item, _item$ccdf$catalog_ca, _item$ccdf, _item$ccdf$cabinet_id, _item$ccdf2, _doorStyle$id3, _item$long_name;
53
+ var item, _item$ccdf$catalog_ca, _item$ccdf, _item$ccdf$cabinet_id, _item$ccdf2, _doorStyle$id2, _item$long_name;
70
54
  return _regenerator["default"].wrap(function (_context2) {
71
55
  while (1) switch (_context2.prev = _context2.next) {
72
56
  case 0:
@@ -80,7 +64,7 @@ function _handleChangeDoorStyleEvent() {
80
64
  catalog_cabinet_sku: (_item$ccdf$catalog_ca = item === null || item === void 0 || (_item$ccdf = item.ccdf) === null || _item$ccdf === void 0 ? void 0 : _item$ccdf.catalog_cabinet_sku) !== null && _item$ccdf$catalog_ca !== void 0 ? _item$ccdf$catalog_ca : item.sku_number,
81
65
  cabinet_id: (_item$ccdf$cabinet_id = item === null || item === void 0 || (_item$ccdf2 = item.ccdf) === null || _item$ccdf2 === void 0 ? void 0 : _item$ccdf2.cabinet_id) !== null && _item$ccdf$cabinet_id !== void 0 ? _item$ccdf$cabinet_id : null,
82
66
  ccdf: item.ccdf,
83
- target_door_finish_id: (_doorStyle$id3 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id3 !== void 0 ? _doorStyle$id3 : null,
67
+ target_door_finish_id: (_doorStyle$id2 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id2 !== void 0 ? _doorStyle$id2 : null,
84
68
  long_name: (_item$long_name = item === null || item === void 0 ? void 0 : item.long_name) !== null && _item$long_name !== void 0 ? _item$long_name : null,
85
69
  scene_cabinet_id: item.id
86
70
  });
@@ -103,7 +87,7 @@ function _handleChangeDoorStyleEvent() {
103
87
  _context3.next = 5;
104
88
  break;
105
89
  case 7:
106
- moldingCCDFList = prepareMoldingCCDFList(doorStyle, moldingData);
90
+ moldingCCDFList = (0, _handleExternalEvent.prepareMoldingCCDFList)(doorStyle, moldingData);
107
91
  if (ccdf_list.length > 0) {
108
92
  (_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
109
93
  type: INTERNAL_EVENT_ITEMS_CATALOG,
@@ -117,7 +101,7 @@ function _handleChangeDoorStyleEvent() {
117
101
  // result is ccdf_list
118
102
  function () {
119
103
  var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(result) {
120
- var _result$ccdf_list, _doorStyle$id2, _result$molding_ccdf_;
104
+ var _result$ccdf_list, _doorStyle$id, _result$molding_ccdf_;
121
105
  var mappedCabinetDefinitionList, rt;
122
106
  return _regenerator["default"].wrap(function (_context) {
123
107
  while (1) switch (_context.prev = _context.next) {
@@ -135,7 +119,7 @@ function _handleChangeDoorStyleEvent() {
135
119
  // Persist ccdf on affected instances so SYNC includes the latest ccdf.id for each item.
136
120
  // IMPORTANT: host response `ccdf_list[]` may not include `door_finish_id`.
137
121
  // Use request door_finish_id (doorStyle.id) as the source of truth for door_finish_id.
138
- props.itemsActions.setItemsCCDF((_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [], applyScope, itemIds, (_doorStyle$id2 = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id2 !== void 0 ? _doorStyle$id2 : null);
122
+ props.itemsActions.setItemsCCDF((_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [], applyScope, itemIds, (_doorStyle$id = doorStyle === null || doorStyle === void 0 ? void 0 : doorStyle.id) !== null && _doorStyle$id !== void 0 ? _doorStyle$id : null);
139
123
  props.itemsActions.setMoldingsCCDF((_result$molding_ccdf_ = result === null || result === void 0 ? void 0 : result.molding_ccdf_list) !== null && _result$molding_ccdf_ !== void 0 ? _result$molding_ccdf_ : [], applyScope);
140
124
  props.itemsActions.setDoorStyle(doorStyle, itemCDS, applyScope, itemIds);
141
125
  case 2:
@@ -7,11 +7,14 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.handleLoadProjectEvent = handleLoadProjectEvent;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
12
  var _convertUnitsLite = require("../../utils/convert-units-lite");
12
13
  var _constants = require("../../constants");
13
14
  var _models = require("../../models");
14
15
  var _asyncPool = require("../../shared/concurrency/async-pool");
16
+ var _handleExternalEvent = require("./handleExternalEvent.util");
17
+ var _utils = require("../../components/viewer2d/utils");
15
18
  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; }
16
19
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
20
  function handleLoadProjectEvent(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8) {
@@ -19,14 +22,14 @@ function handleLoadProjectEvent(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8) {
19
22
  }
20
23
  function _handleLoadProjectEvent() {
21
24
  _handleLoadProjectEvent = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(props, state, evt, mapFromCCDFToCDS, updateProjectWithCDSList, ccdfMapper, mergeSameElements, addItemToCatalog) {
22
- var layerName, _evt$payload$layers$l, _evt$payload, _state$catalog, ccdf_list, items, newScene, tempState, _props$onInternalEven;
25
+ var layerName, _evt$payload$layers$l, _evt$payload, _state$catalog, ccdf_list, molding_ccdf_list, items, newScene, tempState, _props$onInternalEven;
23
26
  return _regenerator["default"].wrap(function (_context2) {
24
27
  while (1) switch (_context2.prev = _context2.next) {
25
28
  case 0:
26
29
  layerName = 'layer-1';
27
30
  if (evt !== null && evt !== void 0 && evt.payload) {
28
31
  // prepare item data request
29
- ccdf_list = [];
32
+ ccdf_list = [], molding_ccdf_list = [];
30
33
  items = (_evt$payload$layers$l = evt === null || evt === void 0 || (_evt$payload = evt.payload) === null || _evt$payload === void 0 || (_evt$payload = _evt$payload.layers[layerName]) === null || _evt$payload === void 0 ? void 0 : _evt$payload.items) !== null && _evt$payload$layers$l !== void 0 ? _evt$payload$layers$l : {};
31
34
  Object.keys(items).forEach(function (k) {
32
35
  var _it$properties, _it$properties2, _it$properties3;
@@ -50,6 +53,7 @@ function _handleLoadProjectEvent() {
50
53
  long_name: (_it$long_name = it === null || it === void 0 ? void 0 : it.long_name) !== null && _it$long_name !== void 0 ? _it$long_name : null,
51
54
  scene_cabinet_id: it.id
52
55
  });
56
+ if (!(0, _utils.isEmpty)(it.doorStyle) && !(0, _utils.isEmpty)(it.molding)) molding_ccdf_list.push.apply(molding_ccdf_list, (0, _toConsumableArray2["default"])((0, _handleExternalEvent.prepareMoldingCCDFList)(it.doorStyle, it.molding)));
53
57
  }
54
58
  });
55
59
  newScene = new _models.Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
@@ -62,7 +66,8 @@ function _handleLoadProjectEvent() {
62
66
  type: _constants.INTERNAL_EVENT_ITEMS_CATALOG,
63
67
  value: {
64
68
  event_type: 'load_project',
65
- ccdf_list: ccdf_list
69
+ ccdf_list: ccdf_list,
70
+ molding_ccdf_list: molding_ccdf_list
66
71
  }
67
72
  }, /*#__PURE__*/function () {
68
73
  var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(result) {
@@ -106,6 +111,7 @@ function _handleLoadProjectEvent() {
106
111
  });
107
112
  case 1:
108
113
  props.projectActions.loadProject(evt.payload);
114
+ props.itemsActions.setMoldingsCCDF(result === null || result === void 0 ? void 0 : result.molding_ccdf_list, 'all');
109
115
  case 2:
110
116
  case "end":
111
117
  return _context.stop();
@@ -20,7 +20,7 @@ function _handleSetMolding() {
20
20
  _context.next = 1;
21
21
  return loadMoldingSvg(moldingInfo);
22
22
  case 1:
23
- props.itemsActions.setMolding(moldingInfo, isGlobal);
23
+ props.itemsActions.setMolding(moldingInfo, isGlobal, props.onInternalEvent);
24
24
  case 2:
25
25
  case "end":
26
26
  return _context.stop();
@@ -112,7 +112,7 @@ function _default(state, action) {
112
112
  state = stateHistoryPush(state).updatedState;
113
113
  return _export.Item.setCounterTop(state, action.counterTop).updatedState;
114
114
  case _constants.SET_MOLDING:
115
- return _export.Item.setMolding(state, action.molding, action.isAll).updatedState;
115
+ return _export.Item.setMolding(state, action.molding, action.isAll, action.onInternalEvent).updatedState;
116
116
  case _constants.UPDATE_MOLDING:
117
117
  return _export.Item.updateMolding(state).updatedState;
118
118
  case _constants.SET_WALL_COLOR:
@@ -9,7 +9,6 @@ exports.createMonldingGroup = createMonldingGroup;
9
9
  exports.getAllMoldingGroups = getAllMoldingGroups;
10
10
  exports.getItemGroupFromMolding = getItemGroupFromMolding;
11
11
  exports.getItemRect = getItemRect;
12
- exports.getLinesFromItems = getLinesFromItems;
13
12
  exports.getLinesFromItems2 = getLinesFromItems2;
14
13
  exports.getLinesOfItem = getLinesOfItem;
15
14
  exports.getLinesOfItem2 = getLinesOfItem2;
@@ -727,97 +726,6 @@ function getTrimmedContourLineSegs(lineSegs, otherLines, cnt) {
727
726
  return [];
728
727
  }
729
728
  }
730
- function getLinesFromItems(moldingGroup, layer, catalog) {
731
- var allLineRects = _export.GeometryUtils.buildRectFromLines(layer, _export.GeometryUtils.getAllLines(layer));
732
- var items = (0, _toConsumableArray2["default"])(moldingGroup.items);
733
- var MGlines = getLinesOfItem(items[0], allLineRects, catalog);
734
- items = sortItemsByDistance(items, items[0]);
735
- var _loop7 = function _loop7() {
736
- var itemLines = getLinesOfItem(items[i], allLineRects, catalog);
737
- var temp_MGLines = [];
738
- MGlines.forEach(function (line) {
739
- var idx = itemLines.findIndex(function (itemLine) {
740
- return isLinesOverlapped(line, itemLine);
741
- });
742
- var curItemLine = itemLines[idx];
743
- if (idx > -1) {
744
- if (!(_export.GeometryUtils.samePoints(line[0], curItemLine[0]) && _export.GeometryUtils.samePoints(line[1], curItemLine[1]) || _export.GeometryUtils.samePoints(line[0], curItemLine[1]) && _export.GeometryUtils.samePoints(line[1], curItemLine[0]))) {
745
- var MGLine = mergeOverlappedLines(line, curItemLine);
746
- temp_MGLines.push(MGLine);
747
- }
748
- itemLines.splice(idx, 1);
749
- } else {
750
- temp_MGLines.push(line);
751
- }
752
- });
753
- itemLines.forEach(function (itemLine) {
754
- return temp_MGLines.push(itemLine);
755
- });
756
- MGlines = [].concat(temp_MGLines);
757
- };
758
- for (var i = 1; i < items.length; i++) {
759
- _loop7();
760
- }
761
- // return MGlines;
762
- var snapped_other_items = layer.items.toArray().filter(function (item) {
763
- if (items.some(function (it) {
764
- return item.id === it.id;
765
- })) return false;
766
- return isItemSnappedGroup(item, items);
767
- });
768
- snapped_other_items.forEach(function (item) {
769
- var itemAltitude = item.properties.get('altitude').get('_length');
770
- var itemAltitudeUnit = item.properties.get('altitude').get('_unit');
771
- itemAltitude = (0, _convertUnitsLite.convert)(itemAltitude).from(itemAltitudeUnit).to('cm');
772
- var itemHeight = item.properties.get('height').get('_length');
773
- var itemHeightUnit = item.properties.get('height').get('_unit');
774
- itemHeight = (0, _convertUnitsLite.convert)(itemHeight).from(itemHeightUnit).to('cm');
775
- var mgroupAltitude = items[0].properties.get('altitude').get('_length');
776
- var mgroupAltitudeUnit = items[0].properties.get('altitude').get('_unit');
777
- mgroupAltitude = (0, _convertUnitsLite.convert)(mgroupAltitude).from(mgroupAltitudeUnit).to('cm');
778
- var mgroupHeight = items[0].properties.get('height').get('_length');
779
- var mgroupHeightUnit = items[0].properties.get('height').get('_unit');
780
- mgroupHeight = (0, _convertUnitsLite.convert)(mgroupHeight).from(mgroupHeightUnit).to('cm');
781
- var flag = false;
782
- switch (moldingGroup.location_type) {
783
- case _constants.TOP_MOLDING_LOCATION:
784
- flag = itemAltitude + itemHeight > mgroupAltitude + mgroupHeight;
785
- break;
786
- case _constants.MIDDLE_MOLDING_LOCATION:
787
- flag = true;
788
- break;
789
- case _constants.BOTTOM_MOLDING_LOCATION:
790
- flag = itemAltitude < mgroupAltitude;
791
- break;
792
- }
793
- if (item.category !== 'cabinet' || ![_constants.BASE_CABINET_LAYOUTPOS, _constants.WALL_CABINET_LAYOUTPOS, _constants.TALL_CABINET_LAYOUTPOS].includes(item.layoutpos)) flag = true;
794
- if (flag) {
795
- var itemLines = getLinesOfItem(item, allLineRects, catalog);
796
- var temp_MGLines = [];
797
- MGlines.forEach(function (mgl) {
798
- var idx = itemLines.findIndex(function (itl) {
799
- return isLinesOverlapped(mgl, itl);
800
- });
801
- var curITL = itemLines[idx];
802
- if (idx > -1) {
803
- if (getDelta(mgl[0], mgl[1], curITL[1], curITL[0]) < _constants.EPSILON || getDelta(mgl[0], mgl[1], curITL[0], curITL[1]) < _constants.EPSILON) {
804
- if (_export.GeometryUtils.verticesDistance(mgl[0], mgl[1]) > _export.GeometryUtils.verticesDistance(curITL[0], curITL[1])) {
805
- var MGLine = mergeOverlappedLines(mgl, curITL);
806
- temp_MGLines.push(MGLine);
807
- }
808
- itemLines.splice(idx, 1);
809
- } else {
810
- temp_MGLines.push(mgl);
811
- }
812
- } else {
813
- temp_MGLines.push(mgl);
814
- }
815
- });
816
- MGlines = [].concat(temp_MGLines);
817
- }
818
- });
819
- return MGlines;
820
- }
821
729
  function getMDPoints(newMD) {
822
730
  if (newMD.lines.length < 1) return _objectSpread(_objectSpread({}, newMD), {}, {
823
731
  pointGroups: []
@@ -867,7 +775,7 @@ function getMDPoints(newMD) {
867
775
  var pointGroups = [[]];
868
776
  var flag = 1;
869
777
  var i = 0;
870
- var _loop8 = function _loop8() {
778
+ var _loop7 = function _loop7() {
871
779
  if (pointGroups[i].length === 0) {
872
780
  pointGroups[i].push(new Three.Vector2(MDlines[0][0].x - cPos.x, MDlines[0][0].y - cPos.y), new Three.Vector2(MDlines[0][1].x - cPos.x, MDlines[0][1].y - cPos.y));
873
781
  MDlines.splice(0, 1);
@@ -932,7 +840,7 @@ function getMDPoints(newMD) {
932
840
  }
933
841
  };
934
842
  while (MDlines.length !== 0) {
935
- _loop8();
843
+ _loop7();
936
844
  }
937
845
  var z = newMD.items[0].properties.get('altitude').get('_length');
938
846
  var zUnit = newMD.items[0].properties.get('altitude').get('_unit') || 'cm';
@@ -1042,14 +950,14 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLength) {
1042
950
  // filter the real molding line segments
1043
951
  var removeLineIds = []; // remove the line that fully overlapped to other line
1044
952
  var newLines = []; // new countour line segment that except the overlapped part
1045
- var _loop9 = function _loop9(i) {
953
+ var _loop8 = function _loop8(i) {
1046
954
  var srcLine = {
1047
955
  x1: moldingLines[i].line[0].x,
1048
956
  y1: moldingLines[i].line[0].y,
1049
957
  x2: moldingLines[i].line[1].x,
1050
958
  y2: moldingLines[i].line[1].y
1051
959
  };
1052
- var _loop1 = function _loop1(_j) {
960
+ var _loop0 = function _loop0(_j) {
1053
961
  if (i === _j) return 0; // continue
1054
962
  if (Math.abs(moldingLines[i].z - moldingLines[_j].z) > _constants.EPSILON) return 0; // continue
1055
963
  var destLine = {
@@ -1084,13 +992,13 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLength) {
1084
992
  },
1085
993
  _ret4;
1086
994
  for (var _j = 0; _j < moldingLines.length; _j++) {
1087
- _ret4 = _loop1(_j);
995
+ _ret4 = _loop0(_j);
1088
996
  if (_ret4 === 0) continue;
1089
997
  if (_ret4 === 1) break;
1090
998
  }
1091
999
  };
1092
1000
  for (var i = 0; i < moldingLines.length; i++) {
1093
- _loop9(i);
1001
+ _loop8(i);
1094
1002
  }
1095
1003
  moldingLines = moldingLines.filter(function (line, idx) {
1096
1004
  return !removeLineIds.some(function (id) {
@@ -1121,7 +1029,7 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLength) {
1121
1029
  // console.log('moldingLines: ', moldingLines);
1122
1030
 
1123
1031
  // make molding data with grouping molding & doorStyle
1124
- var _loop0 = function _loop0() {
1032
+ var _loop9 = function _loop9() {
1125
1033
  var ml = moldingLines[k];
1126
1034
  var mlLength = ml.molding.name === _constants.TOE_KICK_MOLDING ? ml.inchWidth : (0, _convertUnitsLite.convert)(_export.GeometryUtils.verticesDistance(ml.line[0], ml.line[1])).from('cm').to('in');
1127
1035
  var idx = moldingData.findIndex(function (v) {
@@ -1138,7 +1046,7 @@ function getMoldingDataOfScene2(layer, catalog, doorStyle, moldingPieceLength) {
1138
1046
  }
1139
1047
  };
1140
1048
  for (var k = 0; k < moldingLines.length; k++) {
1141
- _loop0();
1049
+ _loop9();
1142
1050
  }
1143
1051
  // console.log('moldingData: ', moldingData);
1144
1052
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "11.37.0",
3
+ "version": "11.38.0",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",