kitchen-simulator 4.4.2-dynamic-holes → 4.4.3

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 (33) hide show
  1. package/es/LiteRenderer.js +57 -153
  2. package/es/catalog/holes/door-double/door_double.png +0 -0
  3. package/es/catalog/holes/door-panic/panicDoor.png +0 -0
  4. package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  5. package/es/catalog/holes/gate/gate.jpg +0 -0
  6. package/es/catalog/holes/window-clear/texture.png +0 -0
  7. package/es/catalog/holes/window-cross/texture.png +0 -0
  8. package/es/catalog/holes/window-double-hung/texture.png +0 -0
  9. package/es/catalog/holes/window-vertical/texture.png +0 -0
  10. package/es/catalog/utils/item-loader.js +3 -18
  11. package/es/constants.js +9 -7
  12. package/es/devLiteRenderer.js +0 -2
  13. package/es/utils/helper.js +18 -9
  14. package/es/utils/isolate-event-handler.js +6 -4
  15. package/es/utils/molding.js +3 -235
  16. package/es/utils/skinPanelEngine.js +17 -3
  17. package/lib/LiteRenderer.js +57 -153
  18. package/lib/catalog/holes/door-double/door_double.png +0 -0
  19. package/lib/catalog/holes/door-panic/panicDoor.png +0 -0
  20. package/lib/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  21. package/lib/catalog/holes/gate/gate.jpg +0 -0
  22. package/lib/catalog/holes/window-clear/texture.png +0 -0
  23. package/lib/catalog/holes/window-cross/texture.png +0 -0
  24. package/lib/catalog/holes/window-double-hung/texture.png +0 -0
  25. package/lib/catalog/holes/window-vertical/texture.png +0 -0
  26. package/lib/catalog/utils/item-loader.js +2 -17
  27. package/lib/constants.js +14 -12
  28. package/lib/devLiteRenderer.js +0 -2
  29. package/lib/utils/helper.js +20 -9
  30. package/lib/utils/isolate-event-handler.js +5 -3
  31. package/lib/utils/molding.js +3 -236
  32. package/lib/utils/skinPanelEngine.js +16 -2
  33. package/package.json +1 -1
@@ -1,13 +1,19 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
- var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError", "holes"];
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
5
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
6
+ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
7
+ import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
8
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
9
+ var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError"];
10
+ 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; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
12
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7
13
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
8
14
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9
- 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; }
10
- 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; }
15
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
16
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11
17
  // LiteRenderer.jsx
12
18
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
13
19
  import PropTypes from 'prop-types';
@@ -73,147 +79,48 @@ function serializeError(err) {
73
79
  };
74
80
  }
75
81
  }
76
- var INCH_TO_CM = 2.54;
77
- var normalizeKey = function normalizeKey(value) {
78
- return (value !== null && value !== void 0 ? value : '').toString().toLowerCase().replace(/[^a-z0-9]+/g, '');
79
- };
80
- var safeParseJson = function safeParseJson(value) {
81
- if (!value) return null;
82
- try {
83
- return JSON.parse(value);
84
- } catch (_unused3) {
85
- return null;
86
- }
87
- };
88
- var toCatalogLength = function toCatalogLength(value, prop) {
89
- var _prop$defaultValue;
90
- if (value == null) return null;
91
- var unit = prop === null || prop === void 0 || (_prop$defaultValue = prop.defaultValue) === null || _prop$defaultValue === void 0 ? void 0 : _prop$defaultValue.unit;
92
- if (unit && unit.toLowerCase() === 'in') return value;
93
- return value * INCH_TO_CM;
94
- };
95
- var overrideLengthProperty = function overrideLengthProperty(prop, value) {
96
- if (!prop || value == null) return prop;
97
- var length = toCatalogLength(value, prop);
98
- if (length == null) return prop;
99
- return _objectSpread(_objectSpread({}, prop), {}, {
100
- defaultValue: _objectSpread(_objectSpread({}, prop.defaultValue), {}, {
101
- length: length
102
- })
103
- });
104
- };
105
- var findBaseHoleTemplate = function findBaseHoleTemplate(hole, templates) {
106
- var target = normalizeKey(hole === null || hole === void 0 ? void 0 : hole.name);
107
- if (!target) return null;
108
- return templates.find(function (template) {
109
- var _template$info, _template$info2;
110
- 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);
111
- return candidates.includes(target);
112
- }) || null;
113
- };
114
- var buildHoleElementFromTemplate = function buildHoleElementFromTemplate(hole, base) {
115
- var _base$info, _base$info2, _base$info3, _base$info4, _base$info5, _base$structure_json;
116
- if (!hole || !base) return null;
117
- var nextInfo = _objectSpread(_objectSpread({}, base.info), {}, {
118
- title: hole.name || ((_base$info = base.info) === null || _base$info === void 0 ? void 0 : _base$info.title),
119
- 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),
120
- image: hole.menu_thumbnail || ((_base$info4 = base.info) === null || _base$info4 === void 0 ? void 0 : _base$info4.image),
121
- url: hole.gltf || ((_base$info5 = base.info) === null || _base$info5 === void 0 ? void 0 : _base$info5.url)
122
- });
123
- var nextProperties = _objectSpread({}, base.properties);
124
- if (nextProperties.width) {
125
- nextProperties.width = overrideLengthProperty(nextProperties.width, hole.width);
126
- }
127
- if (nextProperties.height) {
128
- nextProperties.height = overrideLengthProperty(nextProperties.height, hole.height);
129
- }
130
- if (nextProperties.length) {
131
- nextProperties.length = overrideLengthProperty(nextProperties.length, hole.length);
82
+
83
+ /* ---------- Error Boundary that pushes into buffer ---------- */
84
+ var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
85
+ function ToolErrorBoundary() {
86
+ _classCallCheck(this, ToolErrorBoundary);
87
+ return _callSuper(this, ToolErrorBoundary, arguments);
132
88
  }
133
- var customConfig = safeParseJson(hole.custom_config);
134
- var customProps = (customConfig === null || customConfig === void 0 ? void 0 : customConfig.properties) || {};
135
- Object.keys(customProps).forEach(function (key) {
136
- if (!nextProperties[key]) return;
137
- nextProperties[key] = overrideLengthProperty(nextProperties[key], customProps[key]);
138
- });
139
- return _objectSpread(_objectSpread({}, base), {}, {
140
- name: hole.name || base.name,
141
- info: nextInfo,
142
- properties: nextProperties,
143
- structure_json: _objectSpread(_objectSpread({}, base.structure_json || {}), {}, {
144
- hole_id: hole.id || ((_base$structure_json = base.structure_json) === null || _base$structure_json === void 0 ? void 0 : _base$structure_json.hole_id)
145
- })
146
- });
147
- };
148
- var buildHoleElements = function buildHoleElements(holes) {
149
- var categories = {
150
- Doors: [],
151
- Windows: []
152
- };
153
- var elements = [];
154
- if (!Array.isArray(holes)) return {
155
- elements: elements,
156
- categories: categories
157
- };
158
- var templates = Object.values(Holes);
159
- var usedNames = new Set();
160
- holes.forEach(function (hole) {
161
- var _base$info6;
162
- if (!hole || hole.is_deleted) return;
163
- var base = findBaseHoleTemplate(hole, templates);
164
- if (!base) return;
165
- var element = buildHoleElementFromTemplate(hole, base);
166
- if (!element || !element.name || usedNames.has(element.name)) return;
167
- usedNames.add(element.name);
168
- elements.push(element);
169
- var typeKey = normalizeKey(hole.type);
170
- if (typeKey === 'window') {
171
- categories.Windows.push(element);
172
- } else if (typeKey === 'door') {
173
- categories.Doors.push(element);
174
- } 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')) {
175
- categories.Windows.push(element);
176
- } else {
177
- categories.Doors.push(element);
89
+ _inherits(ToolErrorBoundary, _React$Component);
90
+ return _createClass(ToolErrorBoundary, [{
91
+ key: "componentDidCatch",
92
+ value: function componentDidCatch(error, info) {
93
+ var pushError = this.props.pushError;
94
+ pushError({
95
+ type: 'render-error',
96
+ error: serializeError(error),
97
+ info: {
98
+ componentStack: info === null || info === void 0 ? void 0 : info.componentStack
99
+ }
100
+ });
178
101
  }
179
- });
180
- return {
181
- elements: elements,
182
- categories: categories
183
- };
102
+ }, {
103
+ key: "render",
104
+ value: function render() {
105
+ return this.props.children;
106
+ }
107
+ }]);
108
+ }(React.Component);
109
+ ToolErrorBoundary.propTypes = {
110
+ pushError: PropTypes.func.isRequired,
111
+ children: PropTypes.any
184
112
  };
185
113
 
186
114
  // ----------------- catalog init -----------------
187
- function initCatalogOnce(catalog, holePayload) {
115
+ function initCatalogOnce(catalog) {
188
116
  if (!catalog) return;
189
- if (!catalog.__ksInitialized) {
190
- for (var x in Areas) catalog.registerElement(Areas[x]);
191
- for (var _x in Lines) catalog.registerElement(Lines[_x]);
192
- catalog.__ksInitialized = true;
193
- }
194
- var holeElements = (holePayload === null || holePayload === void 0 ? void 0 : holePayload.elements) || [];
195
- holeElements.forEach(function (element) {
196
- if (!catalog.hasElement(element.name)) {
197
- console.log(element);
198
- catalog.registerElement(element);
199
- }
200
- });
201
- var categories = (holePayload === null || holePayload === void 0 ? void 0 : holePayload.categories) || {};
202
- Object.entries(categories).forEach(function (_ref) {
203
- var _ref2 = _slicedToArray(_ref, 2),
204
- name = _ref2[0],
205
- elements = _ref2[1];
206
- if (!elements.length) return;
207
- if (!catalog.hasCategory(name)) {
208
- catalog.registerCategory(name, name, elements);
209
- return;
210
- }
211
- elements.forEach(function (element) {
212
- if (!catalog.categoryHasElement(name, element.name)) {
213
- catalog.addToCategory(name, element);
214
- }
215
- });
216
- });
117
+ if (catalog.__ksInitialized) return;
118
+ for (var x in Areas) catalog.registerElement(Areas[x]);
119
+ for (var _x in Lines) catalog.registerElement(Lines[_x]);
120
+ for (var _x2 in Holes) catalog.registerElement(Holes[_x2]);
121
+ catalog.registerCategory('Windows', 'Windows', [Holes.windowClear, Holes.windowCross, Holes.windowDoubleHung, Holes.windowVertical]);
122
+ catalog.registerCategory('Doors', 'Doors', [Holes.doorInterior, Holes.doorExterior, Holes.doorCloset, Holes.doorSliding, Holes.doorwayFramed, Holes.doorwayFrameless]);
123
+ catalog.__ksInitialized = true;
217
124
  }
218
125
 
219
126
  // ----------------- store factory -----------------
@@ -257,11 +164,7 @@ export default function LiteRenderer(props) {
257
164
  externalEvent = props.externalEvent,
258
165
  onInternalEvent = props.onInternalEvent,
259
166
  onError = props.onError,
260
- holes = props.holes,
261
167
  passThrough = _objectWithoutProperties(props, _excluded);
262
- var holePayload = useMemo(function () {
263
- return buildHoleElements(holes);
264
- }, [holes]);
265
168
 
266
169
  // ✅ instance-scoped store (no module singleton)
267
170
  var storeRef = useRef(null);
@@ -271,8 +174,8 @@ export default function LiteRenderer(props) {
271
174
  var catalogRef = useRef(null);
272
175
  if (!catalogRef.current) {
273
176
  catalogRef.current = new Catalog();
177
+ initCatalogOnce(catalogRef.current);
274
178
  }
275
- initCatalogOnce(catalogRef.current, holePayload);
276
179
 
277
180
  // ✅ stable plugins array
278
181
  var plugins = useMemo(function () {
@@ -295,7 +198,7 @@ export default function LiteRenderer(props) {
295
198
  try {
296
199
  var maybeCleanup = p === null || p === void 0 ? void 0 : p(store, stateExtractor);
297
200
  if (typeof maybeCleanup === 'function') cleanups.push(maybeCleanup);
298
- } catch (_unused5) {
201
+ } catch (_unused4) {
299
202
  // keep prior behavior: do not crash
300
203
  }
301
204
  }
@@ -313,7 +216,7 @@ export default function LiteRenderer(props) {
313
216
  var fn = _step2.value;
314
217
  try {
315
218
  fn();
316
- } catch (_unused4) {}
219
+ } catch (_unused3) {}
317
220
  }
318
221
  } catch (err) {
319
222
  _iterator2.e(err);
@@ -344,7 +247,7 @@ export default function LiteRenderer(props) {
344
247
  };
345
248
  try {
346
249
  onError === null || onError === void 0 || onError(payload);
347
- } catch (_unused6) {}
250
+ } catch (_unused5) {}
348
251
  // eslint-disable-next-line no-console
349
252
  console.debug('[LiteRenderer:onError]', payload);
350
253
  lastEmittedRef.current = payload;
@@ -405,11 +308,13 @@ export default function LiteRenderer(props) {
405
308
  emit(lastExternalEventRef.current, last.errors);
406
309
  }
407
310
  }, [externalEvent, emit]);
408
- var _ref3 = configData || {},
409
- logoImg = _ref3.logoImg,
410
- companyUrl = _ref3.companyUrl;
311
+ var _ref = configData || {},
312
+ logoImg = _ref.logoImg,
313
+ companyUrl = _ref.companyUrl;
411
314
  return /*#__PURE__*/React.createElement(AppContext.Provider, null, /*#__PURE__*/React.createElement(Provider, {
412
315
  store: storeRef.current
316
+ }, /*#__PURE__*/React.createElement(ToolErrorBoundary, {
317
+ pushError: pushError
413
318
  }, /*#__PURE__*/React.createElement(LiteKitchenConfigurator, _extends({
414
319
  catalog: catalogRef.current,
415
320
  width: width,
@@ -423,7 +328,7 @@ export default function LiteRenderer(props) {
423
328
  configData: configData,
424
329
  externalEvent: externalEvent,
425
330
  onInternalEvent: onInternalEvent
426
- }, passThrough))));
331
+ }, passThrough)))));
427
332
  }
428
333
  LiteRenderer.propTypes = {
429
334
  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
@@ -443,6 +348,5 @@ LiteRenderer.propTypes = {
443
348
  externalEvent: PropTypes.object,
444
349
  onInternalEvent: PropTypes.func,
445
350
  onError: PropTypes.func,
446
- holes: PropTypes.array,
447
351
  store: PropTypes.object
448
352
  };
Binary file
@@ -12,7 +12,7 @@ import { ARROW_COLOR, BASE_CABINET_LAYOUTPOS, OBJTYPE_GROUP, OBJTYPE_MESH, SHADE
12
12
  import { Item } from "../../models";
13
13
  import * as GeomUtils from "./geom-utils";
14
14
  import { loadGLTF } from "./load-obj";
15
- import { animateDoor, isEmpty, translateDrawer } from "../../utils/helper";
15
+ import { animateDoor, getSkuAliasFromCatalogElement, isEmpty, translateDrawer } from "../../utils/helper";
16
16
  import { isWarningItem } from "../../components/viewer2d/utils";
17
17
  var INITIAL_NORMAL_MAP = '';
18
18
 
@@ -122,23 +122,8 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
122
122
  var lineCount = 0; //parseInt(((newWidth) / 8 - 0.51).toFixed(), 10) - 1;
123
123
  var rowCount = 0; //parseInt((element.type.length / lineCount - 0.51).toFixed(), 10);
124
124
 
125
- // Get type
126
- var objSKU = this.obj.sku_number;
127
- if (objSKU.length !== 0) {
128
- var dcId,
129
- doorStyle = element.doorStyle;
130
- if (doorStyle instanceof Map) {
131
- dcId = doorStyle.get('id');
132
- } else {
133
- dcId = doorStyle.id;
134
- }
135
- var skuItem = this.obj.skuArray.find(function (el) {
136
- return el.door_color_id === dcId;
137
- });
138
- if (skuItem !== undefined) {
139
- objSKU = skuItem.sku;
140
- }
141
- }
125
+ // Get SKU Alias
126
+ var objSKU = getSkuAliasFromCatalogElement(this, element);
142
127
  if (rowCount > 0) {
143
128
  for (var _x = 0; _x < rowCount; _x++) {
144
129
  splitStr.push(objSKU.slice(lineCount * _x, lineCount * (_x + 1)));
package/es/constants.js CHANGED
@@ -657,16 +657,16 @@ export var PROJECT_SETTING_OPTION = {
657
657
  CHANGE_MEASUREMENT_UNIT: CHANGE_MEASUREMENT_UNIT
658
658
  };
659
659
  export var HOLE_NAMES = {
660
- WINDOW_CLEAR: 'Clear',
661
- WINDOW_CROSS: 'Cross',
662
- WINDOW_DOUBLE_HUNG: 'Double Hung',
663
- WINDOW_VERTICAL: 'Vertical',
660
+ WINDOW_CLEAR: 'Window',
661
+ WINDOW_CROSS: 'Cross Window',
662
+ WINDOW_DOUBLE_HUNG: 'Double Hung Window',
663
+ WINDOW_VERTICAL: 'window-vertical',
664
664
  DOOR_CLOSET: 'Closet',
665
665
  DOOR_EXTERIOR: 'Exterior',
666
666
  DOOR_INTERIOR: 'Interior',
667
667
  DOOR_SLIDING: 'Sliding',
668
668
  DOOR_FRAMED: 'Framed Doorway',
669
- DOOR_FRAMELESS: 'Frameless Doorway'
669
+ DOOR_FRAMELESS: 'FrameLess Doorway'
670
670
  };
671
671
 
672
672
  // direction type
@@ -773,9 +773,11 @@ export var DOORSTYLE_SCOPE_SINGLE = 'single';
773
773
  export var DOORSTYLE_SCOPE_MULTIPLE = 'multiple';
774
774
 
775
775
  // skin panel SKU
776
- export var SKIN_SKU_BSV_24 = 'BSV24'; // 23.25" x 34.5" : For base cabinets
776
+ export var SKIN_SKU_BSV_24 = 'BSV'; // 23.25" x 34.5" : For base cabinets
777
777
  export var SKIN_SKU_BSV_48 = 'BSV48'; // 48" x 34.5" : For base cabinets back-to-back or island backs
778
778
  export var SKIN_SKU_WSV_1242 = 'WSV1242'; // 11.25" x 42" : For 12" deep wall cabinets
779
779
  export var SKIN_SKU_WSV_2442 = 'WSV2442'; // 23.25" x 42" : For 24" deep wall cabinets
780
780
  export var SKIN_SKU_WSV_2460 = 'WSV2460'; // Usually used for CT3DR or CT2DR SKUs + stacked wall cabinets
781
- export var SKIN_SKU_USV245325 = 'USV2453.25'; // 23.25" x 53.25" : For tall cabinets
781
+ export var SKIN_SKU_USV245325 = 'USV2453.25'; // 23.25" x 53.25" : For tall cabinets
782
+
783
+ export var DEFAULT_MOLDING_PIECE_LENGTH = 96; // in inch, 8 feet, standard length for molding pieces
@@ -17,7 +17,6 @@ import furnishingPayload from "./mocks/furnishingPayload.json";
17
17
  import rectangleData from "./mocks/rectangleShape.json";
18
18
  import moldingPayload from "./mocks/moldingPayload.json";
19
19
  import replaceCabinetPayload from "./mocks/replaceCabinetPayload.json";
20
- import holesPayload from "./mocks/holesPayload.json";
21
20
  import ReactDOM from 'react-dom';
22
21
  import LiteRenderer from "./LiteRenderer";
23
22
  import { Button } from 'antd';
@@ -861,7 +860,6 @@ function WorkSpace(props) {
861
860
  logoImg: "/assets/logo.png",
862
861
  companyUrl: "https://example.com",
863
862
  toolbarButtons: [],
864
- holes: holesPayload,
865
863
  externalEvent: externalEvent,
866
864
  onInternalEvent: onInternalEvent,
867
865
  onError: function onError(payload) {
@@ -413,7 +413,6 @@ export function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
413
413
  updatedPayload.length = _length;
414
414
  //////////////////////////////////////
415
415
  } else if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.prototype) === 'items') {
416
- var _catalog$elements$cur;
417
416
  // check this cabinet has warning box
418
417
  updatedPayload.isWarning = isWarningItem(currentObject);
419
418
  // check this item is available molding
@@ -424,14 +423,7 @@ export function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
424
423
  if (pointArray) updatedPayload.distArray = pointArray;
425
424
 
426
425
  // update sku_number using sku_array
427
- var currentDoorColorId = currentObject.getIn(['doorStyle', 'id']);
428
- var skuArray = catalog === null || catalog === void 0 || (_catalog$elements$cur = catalog.elements[currentObject.get('name')]) === null || _catalog$elements$cur === void 0 || (_catalog$elements$cur = _catalog$elements$cur.obj) === null || _catalog$elements$cur === void 0 ? void 0 : _catalog$elements$cur.skuArray;
429
- var correctSKU = skuArray === null || skuArray === void 0 ? void 0 : skuArray.find(function (sku) {
430
- return sku.door_color_id === currentDoorColorId;
431
- });
432
- if (correctSKU) {
433
- updatedPayload.sku_number = correctSKU.sku;
434
- }
426
+ updatedPayload.sku_number = getSkuAliasFromCatalog(catalog, currentObject);
435
427
  } else if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.prototype) === 'holes') {
436
428
  var _calcDistancesFromHol = calcDistancesFromHoleToNearestOneOrWall(currentObject, layer),
437
429
  distLeft = _calcDistancesFromHol.distLeft,
@@ -448,4 +440,21 @@ export function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
448
440
  };
449
441
  }
450
442
  return updatedPayload;
443
+ }
444
+ export function getSkuAliasFromCatalog(catalog, sceneObject) {
445
+ var _catalog$elements;
446
+ var sceneObjectJS = typeof (sceneObject === null || sceneObject === void 0 ? void 0 : sceneObject.toJS) === 'function' ? sceneObject.toJS() : sceneObject;
447
+ var elementName = sceneObjectJS === null || sceneObjectJS === void 0 ? void 0 : sceneObjectJS.name;
448
+ var catalogElement = catalog === null || catalog === void 0 || (_catalog$elements = catalog.elements) === null || _catalog$elements === void 0 ? void 0 : _catalog$elements[elementName];
449
+ return getSkuAliasFromCatalogElement(catalogElement, sceneObjectJS);
450
+ }
451
+ export function getSkuAliasFromCatalogElement(catalogElement, sceneObject) {
452
+ var _sceneObjectJS$doorSt, _catalogElement$obj, _skuAlias$sku;
453
+ var sceneObjectJS = typeof (sceneObject === null || sceneObject === void 0 ? void 0 : sceneObject.toJS) === 'function' ? sceneObject.toJS() : sceneObject;
454
+ var doorColorId = sceneObjectJS === null || sceneObjectJS === void 0 || (_sceneObjectJS$doorSt = sceneObjectJS.doorStyle) === null || _sceneObjectJS$doorSt === void 0 ? void 0 : _sceneObjectJS$doorSt.id;
455
+ var skuArray = catalogElement === null || catalogElement === void 0 || (_catalogElement$obj = catalogElement.obj) === null || _catalogElement$obj === void 0 ? void 0 : _catalogElement$obj.skuArray;
456
+ var skuAlias = skuArray === null || skuArray === void 0 ? void 0 : skuArray.find(function (sku) {
457
+ return sku.door_color_id === doorColorId;
458
+ });
459
+ return (_skuAlias$sku = skuAlias === null || skuAlias === void 0 ? void 0 : skuAlias.sku) !== null && _skuAlias$sku !== void 0 ? _skuAlias$sku : sceneObjectJS === null || sceneObjectJS === void 0 ? void 0 : sceneObjectJS.sku_number;
451
460
  }
@@ -6,7 +6,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
6
6
  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
7
  import _regeneratorRuntime from "@babel/runtime/regenerator";
8
8
  import { Map } from 'immutable';
9
- import { EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, MODE_IDLE, MODE_2D_PAN, EXTERNAL_EVENT_ADD_ITEM, ARRAY_3D_MODES, MODE_IDLE_3D, MODE_ELEVATION_VIEW, MODE_DRAWING_LINE, TOP, BOTTOM, LEFT, RIGHT, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, INTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, ATT_ITEM_POS, ATT_LINE_LENGTH, ATT_VERTEXT_ONE, ATT_VERTEXT_TWO, ATT_HOLE_OFFSET_A, ATT_HOLE_OFFSET_B, UNIT_CENTIMETER, UNIT_INCH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, EXTERNAL_EVENT_CENTERING_2D, EXTERNAL_EVENT_DUPLICATE_ELEMENT, EXTERNAL_EVENT_DELETE_ELEMENT, ELEMENT_HOLE, ELEMENT_ITEM, ELEMENT_LINE, EXTERNAL_EVENT_REPLACE_CABINET, FINISHING_TYPE, EXTERNAL_EVENT_SET_FINISHING, EXTERNAL_EVENT_ROTATE_PAN, DOORSTYLE_SCOPE_SINGLE, DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE } from "../constants";
9
+ import { EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, MODE_IDLE, MODE_2D_PAN, EXTERNAL_EVENT_ADD_ITEM, ARRAY_3D_MODES, MODE_IDLE_3D, MODE_ELEVATION_VIEW, MODE_DRAWING_LINE, TOP, BOTTOM, LEFT, RIGHT, EXTERNAL_EVENT_NEW_PROJECT, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, INTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, ATT_ITEM_POS, ATT_LINE_LENGTH, ATT_VERTEXT_ONE, ATT_VERTEXT_TWO, ATT_HOLE_OFFSET_A, ATT_HOLE_OFFSET_B, UNIT_CENTIMETER, UNIT_INCH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, EXTERNAL_EVENT_CENTERING_2D, EXTERNAL_EVENT_DUPLICATE_ELEMENT, EXTERNAL_EVENT_DELETE_ELEMENT, ELEMENT_HOLE, ELEMENT_ITEM, ELEMENT_LINE, EXTERNAL_EVENT_REPLACE_CABINET, FINISHING_TYPE, EXTERNAL_EVENT_SET_FINISHING, EXTERNAL_EVENT_ROTATE_PAN, DOORSTYLE_SCOPE_SINGLE, DOORSTYLE_SCOPE_ALL, DOORSTYLE_SCOPE_MULTIPLE, DEFAULT_MOLDING_PIECE_LENGTH } from "../constants";
10
10
  import { isEmpty, updateViwer2D, centering2D } from "./helper";
11
11
  import exporter from "../catalog/utils/exporter";
12
12
  import { render2DItem, render3DItem, render3DApplianceItem, render3DLightingItem } from "../catalog/utils/item-loader";
@@ -1212,7 +1212,7 @@ export function handleExternalEvent(_x0) {
1212
1212
  function _handleExternalEvent() {
1213
1213
  _handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee0(props) {
1214
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$onInternalEven3, sceneData, currentTexture, _t5, _t6, _t7;
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;
1216
1216
  return _regeneratorRuntime.wrap(function (_context11) {
1217
1217
  while (1) switch (_context11.prev = _context11.next) {
1218
1218
  case 0:
@@ -1607,10 +1607,12 @@ function _handleExternalEvent() {
1607
1607
  case 48:
1608
1608
  sceneData = state.scene.toJS(); // get molding data for "ReviewForQuote"
1609
1609
  currentTexture = layer.doorStyle !== null || layer.doorStyle !== undefined ? layer.doorStyle : props.state.doorStyle.toJS();
1610
- sceneData.layers[layerId].moldingData = getMoldingDataOfScene2(layer, props.catalog, currentTexture);
1610
+ 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
+ sceneData.layers[layerId].moldingData = getMoldingDataOfScene2(layer, props.catalog, currentTexture, moldingPieceLength);
1611
1612
 
1612
1613
  // get skin panel data
1613
- sceneData.layers[layerId].skinPanelData = computeSkinPanels(layer);
1614
+ skinPanelExclusionSKUs = (_props$configData$ski = props === null || props === void 0 || (_props$configData2 = props.configData) === null || _props$configData2 === void 0 ? void 0 : _props$configData2.skinPanelExclusionSKUs) !== null && _props$configData$ski !== void 0 ? _props$configData$ski : [];
1615
+ sceneData.layers[layerId].skinPanelData = computeSkinPanels(layer, skinPanelExclusionSKUs, props.catalog);
1614
1616
 
1615
1617
  // send scene object from 3DTool to HostApp using internalEvent
1616
1618
  (_props$onInternalEven3 = props.onInternalEvent) === null || _props$onInternalEven3 === void 0 || _props$onInternalEven3.call(props, {