kitchen-simulator 10.0.6 → 10.0.8

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.
@@ -297,6 +297,11 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
297
297
  }, warning_buttons)));
298
298
  } else {
299
299
  rendered = /*#__PURE__*/React.createElement("g", {
300
+ "data-element-root": true,
301
+ "data-prototype": element.prototype,
302
+ "data-id": element.id,
303
+ "data-selected": element.selected,
304
+ "data-layer": layer.id,
300
305
  onMouseOver: function onMouseOver(event) {
301
306
  setHover(true);
302
307
  },
package/es/class/item.js CHANGED
@@ -272,7 +272,7 @@ var Item = /*#__PURE__*/function () {
272
272
  var should = applyScope === DOORSTYLE_SCOPE_ALL ? true : (_idSet = idSet) === null || _idSet === void 0 ? void 0 : _idSet.has(it.id);
273
273
  if (!should) return;
274
274
  var picked = ccdf_list.find(function (c) {
275
- return (c === null || c === void 0 ? void 0 : c.cabinet_id) == null || (c === null || c === void 0 ? void 0 : c.cabinet_id) === it.itemID;
275
+ return (c === null || c === void 0 ? void 0 : c.cabinet_id) === it.itemID;
276
276
  });
277
277
  if (!picked) return;
278
278
  state = state.setIn(['scene', 'layers', layerID, 'items', it.id, 'ccdf'], _objectSpread(_objectSpread({}, picked), {}, {
package/es/constants.js CHANGED
@@ -317,7 +317,8 @@ export var ITEMS_ACTIONS = {
317
317
  END_LOADING: END_LOADING,
318
318
  STORE_DIST_ARRAY: STORE_DIST_ARRAY,
319
319
  VALIDATE_ITEM_POSTIONS: VALIDATE_ITEM_POSTIONS,
320
- REPLACE_ITEM: REPLACE_ITEM
320
+ REPLACE_ITEM: REPLACE_ITEM,
321
+ SET_ITEMS_CCDF: SET_ITEMS_CCDF
321
322
  };
322
323
  export var HOLE_ACTIONS = {
323
324
  SELECT_HOLE: SELECT_HOLE,
@@ -1,7 +1,4 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
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
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
6
3
  export function handleChangeDoorStyleEvent(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9, _x0, _x1, _x10) {
7
4
  return _handleChangeDoorStyleEvent.apply(this, arguments);
@@ -51,15 +48,12 @@ function _handleChangeDoorStyleEvent() {
51
48
  if (!ccdf_list.some(function (v) {
52
49
  return item.itemID === v.itemID && item.name === v.name && doorStyle.id === v.doorFinishId;
53
50
  })) {
54
- ccdf_list.push(_objectSpread(_objectSpread({}, item), {}, {
55
- itemID: item.itemID,
56
- prototype: item.prototype,
57
- category: item.category,
58
- name: item.name,
59
- type: item.type,
60
- sku_number: item.sku_number,
61
- doorFinishId: doorStyle.id
62
- }));
51
+ ccdf_list.push({
52
+ cabinetSku: item.sku,
53
+ sizeInfo: item.sizeInfo,
54
+ catalogSku: item.sku_number,
55
+ ccdf: item.ccdf
56
+ });
63
57
  }
64
58
  case 1:
65
59
  case "end":
@@ -90,7 +84,8 @@ function _handleChangeDoorStyleEvent() {
90
84
  // result is ccdf_list
91
85
  function () {
92
86
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(result) {
93
- var mappedCabinetDefinitionList, rt, _i, _result$ccdf_list, _doorStyle$id;
87
+ var _result$ccdf_list, _doorStyle$id;
88
+ var mappedCabinetDefinitionList, rt, _i;
94
89
  return _regeneratorRuntime.wrap(function (_context) {
95
90
  while (1) switch (_context.prev = _context.next) {
96
91
  case 0:
@@ -110,14 +105,10 @@ function _handleChangeDoorStyleEvent() {
110
105
  _context.next = 1;
111
106
  break;
112
107
  case 3:
113
- // Persist ccdf on affected instances so SYNC includes ccdf.id for each item.
108
+ // Persist ccdf on affected instances so SYNC includes the latest ccdf.id for each item.
114
109
  // IMPORTANT: host response `ccdf_list[]` may not include `door_finish_id`.
115
- // Use request doorFinishId (doorStyle.id) as source of truth.
116
- try {
117
- 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);
118
- } catch (e) {
119
- // best-effort only
120
- }
110
+ // Use request doorFinishId (doorStyle.id) as the source of truth for door_finish_id.
111
+ 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);
121
112
  props.itemsActions.setDoorStyle(doorStyle, itemCDS, applyScope, itemIds);
122
113
  case 4:
123
114
  case "end":
@@ -21,7 +21,7 @@ function _handleLoadProjectEvent() {
21
21
  ccdf_list = [];
22
22
  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 : {};
23
23
  Object.keys(items).forEach(function (k) {
24
- var _it$properties, _it$properties2, _it$properties3, _it$doorStyle2;
24
+ var _it$properties, _it$properties2, _it$properties3;
25
25
  var it = items[k];
26
26
  //////// check altitude of item property and change length from _length (convert length from 'in' fo 'cm')
27
27
  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')) {
@@ -32,13 +32,10 @@ function _handleLoadProjectEvent() {
32
32
  var _it$doorStyle;
33
33
  return it.itemID === v.itemID && it.name === v.name && ((_it$doorStyle = it.doorStyle) === null || _it$doorStyle === void 0 ? void 0 : _it$doorStyle.id) === v.doorFinishId;
34
34
  })) ccdf_list.push({
35
- itemID: it.itemID,
36
- prototype: it.prototype,
37
- category: it.category,
38
- name: it.name,
39
- type: it.type,
40
- sku_number: it.sku_number,
41
- doorFinishId: (_it$doorStyle2 = it.doorStyle) === null || _it$doorStyle2 === void 0 ? void 0 : _it$doorStyle2.id
35
+ cabinetSku: it.sku,
36
+ sizeInfo: it.sizeInfo,
37
+ catalogSku: it.sku_number,
38
+ ccdf: it.ccdf
42
39
  });
43
40
  });
44
41
  newScene = new Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
@@ -55,7 +52,7 @@ function _handleLoadProjectEvent() {
55
52
  }, /*#__PURE__*/function () {
56
53
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(result) {
57
54
  var _evt$payload2;
58
- var cdsList, _result$ccdf_list, ccdfList, doorFinishIdByCabinetId, cabinetDefinitionList, rt, i;
55
+ var cdsList, _result$ccdf_list, resp, cabinetDefinitionList, rt, i;
59
56
  return _regeneratorRuntime.wrap(function (_context) {
60
57
  while (1) switch (_context.prev = _context.next) {
61
58
  case 0:
@@ -67,23 +64,19 @@ function _handleLoadProjectEvent() {
67
64
  // IMPORTANT: host response `ccdf_list[]` may not include `door_finish_id`.
68
65
  // Use request payload (`ccdf_list[].doorFinishId`) as door_finish_id source.
69
66
  try {
70
- ccdfList = (_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [];
71
- doorFinishIdByCabinetId = new Map(ccdf_list.filter(function (x) {
72
- return (x === null || x === void 0 ? void 0 : x.itemID) != null && (x === null || x === void 0 ? void 0 : x.doorFinishId) != null;
73
- }).map(function (x) {
74
- return [x.itemID, x.doorFinishId];
75
- }));
67
+ resp = (_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [];
76
68
  Object.keys(items).forEach(function (k) {
77
- var _ref2, _it$doorStyle$id, _it$doorStyle3;
69
+ var _it$doorStyle$id, _it$doorStyle2;
78
70
  var it = items[k];
79
- var desiredDoorFinishId = (_ref2 = (_it$doorStyle$id = it === null || it === void 0 || (_it$doorStyle3 = it.doorStyle) === null || _it$doorStyle3 === void 0 ? void 0 : _it$doorStyle3.id) !== null && _it$doorStyle$id !== void 0 ? _it$doorStyle$id : doorFinishIdByCabinetId.get(it.itemID)) !== null && _ref2 !== void 0 ? _ref2 : null; // door_finish_id
71
+ var desiredDoorFinishId = (_it$doorStyle$id = it === null || it === void 0 || (_it$doorStyle2 = it.doorStyle) === null || _it$doorStyle2 === void 0 ? void 0 : _it$doorStyle2.id) !== null && _it$doorStyle$id !== void 0 ? _it$doorStyle$id : null;
80
72
  if (!desiredDoorFinishId) return;
81
- var matched = ccdfList.find(function (c) {
73
+ var picked = resp.find(function (c) {
82
74
  return (c === null || c === void 0 ? void 0 : c.cabinet_id) === it.itemID;
83
75
  });
84
- if (matched) {
85
- it.ccdf = _objectSpread(_objectSpread({}, matched), {}, {
86
- door_finish_id: desiredDoorFinishId
76
+ if (picked) {
77
+ var _picked$door_finish_i;
78
+ it.ccdf = _objectSpread(_objectSpread({}, picked), {}, {
79
+ door_finish_id: (_picked$door_finish_i = picked === null || picked === void 0 ? void 0 : picked.door_finish_id) !== null && _picked$door_finish_i !== void 0 ? _picked$door_finish_i : desiredDoorFinishId
87
80
  });
88
81
  }
89
82
  });
@@ -6,13 +6,17 @@ export function ccdfMapper(ccdf_list, layer) {
6
6
  // console.log(ccdf_list, catalog);
7
7
  // make structure_json list using ccdf-list
8
8
  var cabinetDefinitionList = [];
9
- var tempPlaceholders = [];
10
- var structure = {};
11
- var cdfId;
12
- var structure_json = {};
13
- var cabinetDefinition = {};
14
9
  var layerJS = toJSIfNeeded(layer);
15
10
  ccdf_list === null || ccdf_list === void 0 || ccdf_list.forEach(function (ccdf) {
11
+ // IMPORTANT: DIY-834-43
12
+ // Each CCDF row must produce its own independent structure/tempPlaceholders objects.
13
+ // Reusing the same object across iterations causes cross-cabinet mutation bugs
14
+ // (e.g. B12's `structure.base` being overwritten by W1218's gltf).
15
+ var tempPlaceholders = [];
16
+ var structure = {};
17
+ var cdfId;
18
+ var structure_json = {};
19
+ var cabinetDefinition = {};
16
20
  var itemKeys = Object.keys(layerJS.items);
17
21
  var correctItemId = '';
18
22
  for (var i = 0; i < itemKeys.length; i++) {
@@ -2,9 +2,12 @@ import { isEmpty } from "../../../components/viewer2d/utils";
2
2
  export function mapFromCCDFToCDS(ccdf_list) {
3
3
  // This function make CDS from CCDF_List
4
4
  var itemCDSList = [];
5
- var itemCDSData = {};
6
- var cabitnetDoorStyleId;
7
5
  ccdf_list === null || ccdf_list === void 0 || ccdf_list.forEach(function (asItem) {
6
+ // IMPORTANT: DIY-834-43
7
+ // `itemCDSData` must be recreated per asItem. Reusing it across iterations
8
+ // can leak one cabinet's door/drawer mappings into another.
9
+ var itemCDSData = {};
10
+ var cabitnetDoorStyleId;
8
11
  if (!isEmpty(asItem === null || asItem === void 0 ? void 0 : asItem.id)) {
9
12
  cabitnetDoorStyleId = asItem.id;
10
13
  }
@@ -311,6 +311,11 @@ function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corner, sha
311
311
  }, warning_buttons)));
312
312
  } else {
313
313
  rendered = /*#__PURE__*/_react["default"].createElement("g", {
314
+ "data-element-root": true,
315
+ "data-prototype": element.prototype,
316
+ "data-id": element.id,
317
+ "data-selected": element.selected,
318
+ "data-layer": layer.id,
314
319
  onMouseOver: function onMouseOver(event) {
315
320
  setHover(true);
316
321
  },
package/lib/class/item.js CHANGED
@@ -279,7 +279,7 @@ var Item = exports["default"] = /*#__PURE__*/function () {
279
279
  var should = applyScope === _constants.DOORSTYLE_SCOPE_ALL ? true : (_idSet = idSet) === null || _idSet === void 0 ? void 0 : _idSet.has(it.id);
280
280
  if (!should) return;
281
281
  var picked = ccdf_list.find(function (c) {
282
- return (c === null || c === void 0 ? void 0 : c.cabinet_id) == null || (c === null || c === void 0 ? void 0 : c.cabinet_id) === it.itemID;
282
+ return (c === null || c === void 0 ? void 0 : c.cabinet_id) === it.itemID;
283
283
  });
284
284
  if (!picked) return;
285
285
  state = state.setIn(['scene', 'layers', layerID, 'items', it.id, 'ccdf'], _objectSpread(_objectSpread({}, picked), {}, {
package/lib/constants.js CHANGED
@@ -327,7 +327,8 @@ var ITEMS_ACTIONS = exports.ITEMS_ACTIONS = {
327
327
  END_LOADING: END_LOADING,
328
328
  STORE_DIST_ARRAY: STORE_DIST_ARRAY,
329
329
  VALIDATE_ITEM_POSTIONS: VALIDATE_ITEM_POSTIONS,
330
- REPLACE_ITEM: REPLACE_ITEM
330
+ REPLACE_ITEM: REPLACE_ITEM,
331
+ SET_ITEMS_CCDF: SET_ITEMS_CCDF
331
332
  };
332
333
  var HOLE_ACTIONS = exports.HOLE_ACTIONS = {
333
334
  SELECT_HOLE: SELECT_HOLE,
@@ -6,10 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.handleChangeDoorStyleEvent = handleChangeDoorStyleEvent;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
- 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; }
12
- 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; }
13
10
  function handleChangeDoorStyleEvent(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9, _x0, _x1, _x10) {
14
11
  return _handleChangeDoorStyleEvent.apply(this, arguments);
15
12
  }
@@ -58,15 +55,12 @@ function _handleChangeDoorStyleEvent() {
58
55
  if (!ccdf_list.some(function (v) {
59
56
  return item.itemID === v.itemID && item.name === v.name && doorStyle.id === v.doorFinishId;
60
57
  })) {
61
- ccdf_list.push(_objectSpread(_objectSpread({}, item), {}, {
62
- itemID: item.itemID,
63
- prototype: item.prototype,
64
- category: item.category,
65
- name: item.name,
66
- type: item.type,
67
- sku_number: item.sku_number,
68
- doorFinishId: doorStyle.id
69
- }));
58
+ ccdf_list.push({
59
+ cabinetSku: item.sku,
60
+ sizeInfo: item.sizeInfo,
61
+ catalogSku: item.sku_number,
62
+ ccdf: item.ccdf
63
+ });
70
64
  }
71
65
  case 1:
72
66
  case "end":
@@ -97,7 +91,8 @@ function _handleChangeDoorStyleEvent() {
97
91
  // result is ccdf_list
98
92
  function () {
99
93
  var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(result) {
100
- var mappedCabinetDefinitionList, rt, _i, _result$ccdf_list, _doorStyle$id;
94
+ var _result$ccdf_list, _doorStyle$id;
95
+ var mappedCabinetDefinitionList, rt, _i;
101
96
  return _regenerator["default"].wrap(function (_context) {
102
97
  while (1) switch (_context.prev = _context.next) {
103
98
  case 0:
@@ -117,14 +112,10 @@ function _handleChangeDoorStyleEvent() {
117
112
  _context.next = 1;
118
113
  break;
119
114
  case 3:
120
- // Persist ccdf on affected instances so SYNC includes ccdf.id for each item.
115
+ // Persist ccdf on affected instances so SYNC includes the latest ccdf.id for each item.
121
116
  // IMPORTANT: host response `ccdf_list[]` may not include `door_finish_id`.
122
- // Use request doorFinishId (doorStyle.id) as source of truth.
123
- try {
124
- 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);
125
- } catch (e) {
126
- // best-effort only
127
- }
117
+ // Use request doorFinishId (doorStyle.id) as the source of truth for door_finish_id.
118
+ 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);
128
119
  props.itemsActions.setDoorStyle(doorStyle, itemCDS, applyScope, itemIds);
129
120
  case 4:
130
121
  case "end":
@@ -28,7 +28,7 @@ function _handleLoadProjectEvent() {
28
28
  ccdf_list = [];
29
29
  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 : {};
30
30
  Object.keys(items).forEach(function (k) {
31
- var _it$properties, _it$properties2, _it$properties3, _it$doorStyle2;
31
+ var _it$properties, _it$properties2, _it$properties3;
32
32
  var it = items[k];
33
33
  //////// check altitude of item property and change length from _length (convert length from 'in' fo 'cm')
34
34
  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 !== (0, _convertUnitsLite.convert)(it.properties.altitude._length).from(it.properties.altitude._unit).to('cm')) {
@@ -39,13 +39,10 @@ function _handleLoadProjectEvent() {
39
39
  var _it$doorStyle;
40
40
  return it.itemID === v.itemID && it.name === v.name && ((_it$doorStyle = it.doorStyle) === null || _it$doorStyle === void 0 ? void 0 : _it$doorStyle.id) === v.doorFinishId;
41
41
  })) ccdf_list.push({
42
- itemID: it.itemID,
43
- prototype: it.prototype,
44
- category: it.category,
45
- name: it.name,
46
- type: it.type,
47
- sku_number: it.sku_number,
48
- doorFinishId: (_it$doorStyle2 = it.doorStyle) === null || _it$doorStyle2 === void 0 ? void 0 : _it$doorStyle2.id
42
+ cabinetSku: it.sku,
43
+ sizeInfo: it.sizeInfo,
44
+ catalogSku: it.sku_number,
45
+ ccdf: it.ccdf
49
46
  });
50
47
  });
51
48
  newScene = new _models.Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
@@ -62,7 +59,7 @@ function _handleLoadProjectEvent() {
62
59
  }, /*#__PURE__*/function () {
63
60
  var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(result) {
64
61
  var _evt$payload2;
65
- var cdsList, _result$ccdf_list, ccdfList, doorFinishIdByCabinetId, cabinetDefinitionList, rt, i;
62
+ var cdsList, _result$ccdf_list, resp, cabinetDefinitionList, rt, i;
66
63
  return _regenerator["default"].wrap(function (_context) {
67
64
  while (1) switch (_context.prev = _context.next) {
68
65
  case 0:
@@ -74,23 +71,19 @@ function _handleLoadProjectEvent() {
74
71
  // IMPORTANT: host response `ccdf_list[]` may not include `door_finish_id`.
75
72
  // Use request payload (`ccdf_list[].doorFinishId`) as door_finish_id source.
76
73
  try {
77
- ccdfList = (_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [];
78
- doorFinishIdByCabinetId = new Map(ccdf_list.filter(function (x) {
79
- return (x === null || x === void 0 ? void 0 : x.itemID) != null && (x === null || x === void 0 ? void 0 : x.doorFinishId) != null;
80
- }).map(function (x) {
81
- return [x.itemID, x.doorFinishId];
82
- }));
74
+ resp = (_result$ccdf_list = result === null || result === void 0 ? void 0 : result.ccdf_list) !== null && _result$ccdf_list !== void 0 ? _result$ccdf_list : [];
83
75
  Object.keys(items).forEach(function (k) {
84
- var _ref2, _it$doorStyle$id, _it$doorStyle3;
76
+ var _it$doorStyle$id, _it$doorStyle2;
85
77
  var it = items[k];
86
- var desiredDoorFinishId = (_ref2 = (_it$doorStyle$id = it === null || it === void 0 || (_it$doorStyle3 = it.doorStyle) === null || _it$doorStyle3 === void 0 ? void 0 : _it$doorStyle3.id) !== null && _it$doorStyle$id !== void 0 ? _it$doorStyle$id : doorFinishIdByCabinetId.get(it.itemID)) !== null && _ref2 !== void 0 ? _ref2 : null; // door_finish_id
78
+ var desiredDoorFinishId = (_it$doorStyle$id = it === null || it === void 0 || (_it$doorStyle2 = it.doorStyle) === null || _it$doorStyle2 === void 0 ? void 0 : _it$doorStyle2.id) !== null && _it$doorStyle$id !== void 0 ? _it$doorStyle$id : null;
87
79
  if (!desiredDoorFinishId) return;
88
- var matched = ccdfList.find(function (c) {
80
+ var picked = resp.find(function (c) {
89
81
  return (c === null || c === void 0 ? void 0 : c.cabinet_id) === it.itemID;
90
82
  });
91
- if (matched) {
92
- it.ccdf = _objectSpread(_objectSpread({}, matched), {}, {
93
- door_finish_id: desiredDoorFinishId
83
+ if (picked) {
84
+ var _picked$door_finish_i;
85
+ it.ccdf = _objectSpread(_objectSpread({}, picked), {}, {
86
+ door_finish_id: (_picked$door_finish_i = picked === null || picked === void 0 ? void 0 : picked.door_finish_id) !== null && _picked$door_finish_i !== void 0 ? _picked$door_finish_i : desiredDoorFinishId
94
87
  });
95
88
  }
96
89
  });
@@ -13,13 +13,17 @@ function ccdfMapper(ccdf_list, layer) {
13
13
  // console.log(ccdf_list, catalog);
14
14
  // make structure_json list using ccdf-list
15
15
  var cabinetDefinitionList = [];
16
- var tempPlaceholders = [];
17
- var structure = {};
18
- var cdfId;
19
- var structure_json = {};
20
- var cabinetDefinition = {};
21
16
  var layerJS = (0, _immutable.toJSIfNeeded)(layer);
22
17
  ccdf_list === null || ccdf_list === void 0 || ccdf_list.forEach(function (ccdf) {
18
+ // IMPORTANT: DIY-834-43
19
+ // Each CCDF row must produce its own independent structure/tempPlaceholders objects.
20
+ // Reusing the same object across iterations causes cross-cabinet mutation bugs
21
+ // (e.g. B12's `structure.base` being overwritten by W1218's gltf).
22
+ var tempPlaceholders = [];
23
+ var structure = {};
24
+ var cdfId;
25
+ var structure_json = {};
26
+ var cabinetDefinition = {};
23
27
  var itemKeys = Object.keys(layerJS.items);
24
28
  var correctItemId = '';
25
29
  for (var i = 0; i < itemKeys.length; i++) {
@@ -8,9 +8,12 @@ var _utils = require("../../../components/viewer2d/utils");
8
8
  function mapFromCCDFToCDS(ccdf_list) {
9
9
  // This function make CDS from CCDF_List
10
10
  var itemCDSList = [];
11
- var itemCDSData = {};
12
- var cabitnetDoorStyleId;
13
11
  ccdf_list === null || ccdf_list === void 0 || ccdf_list.forEach(function (asItem) {
12
+ // IMPORTANT: DIY-834-43
13
+ // `itemCDSData` must be recreated per asItem. Reusing it across iterations
14
+ // can leak one cabinet's door/drawer mappings into another.
15
+ var itemCDSData = {};
16
+ var cabitnetDoorStyleId;
14
17
  if (!(0, _utils.isEmpty)(asItem === null || asItem === void 0 ? void 0 : asItem.id)) {
15
18
  cabitnetDoorStyleId = asItem.id;
16
19
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "10.0.6",
3
+ "version": "10.0.8",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",