kitchen-simulator 4.4.6 → 5.0.0-new-api

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/es/LiteRenderer.js +15 -53
  2. package/es/catalog/factories/area-factory-3d.js +0 -4
  3. package/es/catalog/holes/door-double/door_double.png +0 -0
  4. package/es/catalog/holes/door-panic/panicDoor.png +0 -0
  5. package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  6. package/es/catalog/holes/gate/gate.jpg +0 -0
  7. package/es/catalog/holes/window-clear/texture.png +0 -0
  8. package/es/catalog/holes/window-cross/texture.png +0 -0
  9. package/es/catalog/holes/window-double-hung/texture.png +0 -0
  10. package/es/catalog/holes/window-vertical/texture.png +0 -0
  11. package/es/catalog/utils/item-loader.js +0 -4
  12. package/es/class/item.js +17 -6
  13. package/es/constants.js +11 -6
  14. package/es/devLiteRenderer.js +91 -109
  15. package/es/mappings/external-events/mapExternalEventPayload.js +28 -0
  16. package/es/mappings/external-events/mappers/addItemMapper.js +86 -0
  17. package/es/mappings/external-events/mappers/ccdfMapper.js +86 -0
  18. package/es/mappings/external-events/mappers/ccdfToCDSMapper.js +31 -0
  19. package/es/mappings/external-events/mappers/changeDoorStyleMapper.js +65 -0
  20. package/es/mappings/external-events/mappers/loadProjectMapper.js +62 -0
  21. package/es/mappings/holesToCatalog.js +139 -0
  22. package/es/models.js +12 -1
  23. package/es/utils/isolate-event-handler.js +55 -45
  24. package/es/utils/molding.js +17 -1
  25. package/lib/LiteRenderer.js +17 -55
  26. package/lib/catalog/factories/area-factory-3d.js +0 -4
  27. package/lib/catalog/holes/door-double/door_double.png +0 -0
  28. package/lib/catalog/holes/door-panic/panicDoor.png +0 -0
  29. package/lib/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  30. package/lib/catalog/holes/gate/gate.jpg +0 -0
  31. package/lib/catalog/holes/window-clear/texture.png +0 -0
  32. package/lib/catalog/holes/window-cross/texture.png +0 -0
  33. package/lib/catalog/holes/window-double-hung/texture.png +0 -0
  34. package/lib/catalog/holes/window-vertical/texture.png +0 -0
  35. package/lib/catalog/utils/item-loader.js +0 -4
  36. package/lib/class/item.js +17 -6
  37. package/lib/constants.js +16 -11
  38. package/lib/devLiteRenderer.js +93 -111
  39. package/lib/mappings/external-events/mapExternalEventPayload.js +33 -0
  40. package/lib/mappings/external-events/mappers/addItemMapper.js +92 -0
  41. package/lib/mappings/external-events/mappers/ccdfMapper.js +93 -0
  42. package/lib/mappings/external-events/mappers/ccdfToCDSMapper.js +37 -0
  43. package/lib/mappings/external-events/mappers/changeDoorStyleMapper.js +72 -0
  44. package/lib/mappings/external-events/mappers/loadProjectMapper.js +70 -0
  45. package/lib/mappings/holesToCatalog.js +148 -0
  46. package/lib/models.js +12 -1
  47. package/lib/utils/isolate-event-handler.js +55 -45
  48. package/lib/utils/molding.js +17 -1
  49. package/package.json +1 -1
@@ -1,19 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
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"];
4
+ var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError", "holes"];
10
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; }
11
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; }
12
7
  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; } } }; }
13
8
  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; } }
14
9
  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; }
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; })(); }
17
10
  // LiteRenderer.jsx
18
11
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
19
12
  import PropTypes from 'prop-types';
@@ -29,7 +22,7 @@ import AppContext from "./AppContext";
29
22
  import Catalog from "./catalog/catalog";
30
23
  import * as Areas from "./catalog/areas/area/planner-element";
31
24
  import * as Lines from "./catalog/lines/wall/planner-element";
32
- import * as Holes from "./catalog/holes/export";
25
+ import { buildHoleElements, registerDynamicHoles } from "./mappings/holesToCatalog";
33
26
  import { ConsoleDebugger, Keyboard } from "./plugins/export";
34
27
  import LiteKitchenConfigurator from "./LiteKitchenConfigurator";
35
28
  var isBrowser = typeof window !== 'undefined';
@@ -80,50 +73,15 @@ function serializeError(err) {
80
73
  }
81
74
  }
82
75
 
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);
88
- }
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
- });
101
- }
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
112
- };
113
-
114
76
  // ----------------- catalog init -----------------
115
77
  function initCatalogOnce(catalog) {
116
78
  if (!catalog) return;
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;
79
+ if (!catalog.__ksInitialized) {
80
+ for (var x in Areas) catalog.registerElement(Areas[x]);
81
+ for (var _x in Lines) catalog.registerElement(Lines[_x]);
82
+ catalog.__ksInitialized = true;
83
+ }
124
84
  }
125
-
126
- // ----------------- store factory -----------------
127
85
  function createInstanceStore() {
128
86
  var AppState = Map({
129
87
  KitchenConfigurator: new State()
@@ -164,7 +122,11 @@ export default function LiteRenderer(props) {
164
122
  externalEvent = props.externalEvent,
165
123
  onInternalEvent = props.onInternalEvent,
166
124
  onError = props.onError,
125
+ holes = props.holes,
167
126
  passThrough = _objectWithoutProperties(props, _excluded);
127
+ var holePayload = useMemo(function () {
128
+ return buildHoleElements(holes);
129
+ }, [holes]);
168
130
 
169
131
  // ✅ instance-scoped store (no module singleton)
170
132
  var storeRef = useRef(null);
@@ -174,8 +136,9 @@ export default function LiteRenderer(props) {
174
136
  var catalogRef = useRef(null);
175
137
  if (!catalogRef.current) {
176
138
  catalogRef.current = new Catalog();
177
- initCatalogOnce(catalogRef.current);
178
139
  }
140
+ initCatalogOnce(catalogRef.current);
141
+ registerDynamicHoles(catalogRef.current, holePayload);
179
142
 
180
143
  // ✅ stable plugins array
181
144
  var plugins = useMemo(function () {
@@ -313,8 +276,6 @@ export default function LiteRenderer(props) {
313
276
  companyUrl = _ref.companyUrl;
314
277
  return /*#__PURE__*/React.createElement(AppContext.Provider, null, /*#__PURE__*/React.createElement(Provider, {
315
278
  store: storeRef.current
316
- }, /*#__PURE__*/React.createElement(ToolErrorBoundary, {
317
- pushError: pushError
318
279
  }, /*#__PURE__*/React.createElement(LiteKitchenConfigurator, _extends({
319
280
  catalog: catalogRef.current,
320
281
  width: width,
@@ -328,7 +289,7 @@ export default function LiteRenderer(props) {
328
289
  configData: configData,
329
290
  externalEvent: externalEvent,
330
291
  onInternalEvent: onInternalEvent
331
- }, passThrough)))));
292
+ }, passThrough))));
332
293
  }
333
294
  LiteRenderer.propTypes = {
334
295
  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
@@ -348,5 +309,6 @@ LiteRenderer.propTypes = {
348
309
  externalEvent: PropTypes.object,
349
310
  onInternalEvent: PropTypes.func,
350
311
  onError: PropTypes.func,
312
+ holes: PropTypes.array,
351
313
  store: PropTypes.object
352
314
  };
@@ -75,10 +75,6 @@ export function createArea(element, layer, scene, textures) {
75
75
  } else {
76
76
  color = SharedStyle.AREA_MESH_COLOR.unselected;
77
77
  }
78
- if (texture.uri === undefined || texture.uri == '') {
79
- // @todo THIS IS A TEMPORARY FIX TO HAVE A DEFAULT FLOOR TEXTURE
80
- texture.uri = layer.floorStyle.uri || 'https://media.test.diydesignspace.com/uploads/CountTop/202203162950_2/texture/oak-barcelona-s.jpg';
81
- }
82
78
  var shape = new Shape();
83
79
  shape.moveTo(vertices[0].x, vertices[0].y);
84
80
  for (var i = 1; i < vertices.length; i++) {
Binary file
@@ -988,10 +988,6 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
988
988
  if (isEmpty(counterTop.uri) && !isEmpty(layer === null || layer === void 0 || (_layer$toJS = layer.toJS()) === null || _layer$toJS === void 0 ? void 0 : _layer$toJS.counterTop.uri)) {
989
989
  counterTop.uri = layer.toJS().counterTop.uri;
990
990
  }
991
- if (isEmpty(counterTop.uri)) {
992
- //@todo THIS IS A TEMPORARY FIX FOR COUNTERTOP TEXTURE UNDEFINED ISSUE
993
- counterTop.uri = 'https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg';
994
- }
995
991
  var countTopMap = counterTop.uri;
996
992
  var interiorMap = doorStyles.get('interior');
997
993
  var countT = loadTexture(countTopMap);
package/es/class/item.js CHANGED
@@ -39,7 +39,16 @@ var Item = /*#__PURE__*/function () {
39
39
  id: itemID,
40
40
  itemID: state.catalog.getIn(['elements', type, 'itemID']),
41
41
  name: NameGenerator.generateName('items', state.catalog.getIn(['elements', type, 'info', 'title'])),
42
+ long_name: state.catalog.getIn(['elements', type, 'long_name']),
43
+ sizeinfo: state.catalog.getIn(['elements', type, 'info', 'sizeinfo']),
44
+ description: state.catalog.getIn(['elements', type, 'info', 'description']),
45
+ base: state.catalog.getIn(['elements', type, 'info', 'image']),
46
+ shape_svg: state.catalog.getIn(['elements', type, 'info', 'shape_svg']),
47
+ gltf: state.catalog.getIn(['elements', type, 'gltf']),
48
+ is_corner: state.catalog.getIn(['elements', type, 'info', 'is_corner']),
49
+ obj_property: state.catalog.getIn(['elements', type, 'obj']),
42
50
  sku_number: state.catalog.getIn(['elements', type, 'obj']).toJS().sku_number,
51
+ outline: state.catalog.getIn(['elements', type, 'info', 'outline']),
43
52
  //style: state.catalog.getIn(['elements', type, 'info', 'door']),
44
53
  category: state.catalog.getIn(['elements', type, 'type']),
45
54
  layoutpos: state.catalog.getIn(['elements', type, 'info', 'layoutpos']),
@@ -59,18 +68,20 @@ var Item = /*#__PURE__*/function () {
59
68
  doorStyle: refItem.doorStyle
60
69
  });
61
70
  } else {
62
- var _state$doorStyle, _ref, _temp$doorStyles$cds$, _temp$doorStyles, _temp$cds, _state3;
71
+ var _layer$doorStyle, _temp, _ref, _temp$doorStyles$cds$, _temp2, _temp3, _state3;
63
72
  var layer = state.getIn(['scene', 'layers', layerID]);
64
- var temp = layer.doorStyle || ((_state$doorStyle = state.doorStyle) === null || _state$doorStyle === void 0 ? void 0 : _state$doorStyle.toJS());
65
- var cds = (_ref = (_temp$doorStyles$cds$ = temp === null || temp === void 0 || (_temp$doorStyles = temp.doorStyles) === null || _temp$doorStyles === void 0 || (_temp$doorStyles = _temp$doorStyles.cds) === null || _temp$doorStyles === void 0 ? void 0 : _temp$doorStyles.find(function (elem) {
73
+ var temp = (_layer$doorStyle = layer === null || layer === void 0 ? void 0 : layer.doorStyle) !== null && _layer$doorStyle !== void 0 ? _layer$doorStyle : state.doorStyle;
74
+ if (!isEmpty(temp) && Map.isMap(temp)) temp = (_temp = temp) === null || _temp === void 0 ? void 0 : _temp.toJS();
75
+ var cds = (_ref = (_temp$doorStyles$cds$ = (_temp2 = temp) === null || _temp2 === void 0 || (_temp2 = _temp2.doorStyles) === null || _temp2 === void 0 || (_temp2 = _temp2.cds) === null || _temp2 === void 0 ? void 0 : _temp2.find(function (elem) {
66
76
  var _state;
67
77
  return elem.itemID === ((_state = state) === null || _state === void 0 || (_state = _state.catalog) === null || _state === void 0 ? void 0 : _state.getIn(['elements', type, 'itemID']));
68
- })) !== null && _temp$doorStyles$cds$ !== void 0 ? _temp$doorStyles$cds$ : temp === null || temp === void 0 || (_temp$cds = temp.cds) === null || _temp$cds === void 0 ? void 0 : _temp$cds.find(function (elem) {
78
+ })) !== null && _temp$doorStyles$cds$ !== void 0 ? _temp$doorStyles$cds$ : (_temp3 = temp) === null || _temp3 === void 0 || (_temp3 = _temp3.cds) === null || _temp3 === void 0 ? void 0 : _temp3.find(function (elem) {
69
79
  var _state2;
70
80
  return elem.itemID === ((_state2 = state) === null || _state2 === void 0 || (_state2 = _state2.catalog) === null || _state2 === void 0 ? void 0 : _state2.getIn(['elements', type, 'itemID']));
71
81
  })) !== null && _ref !== void 0 ? _ref : (_state3 = state) === null || _state3 === void 0 || (_state3 = _state3.catalog) === null || _state3 === void 0 ? void 0 : _state3.getIn(['elements', type, 'cds']);
72
82
  if (cds) {
73
- var updatedDoorStyles = _objectSpread(_objectSpread({}, temp === null || temp === void 0 ? void 0 : temp.doorStyles), {}, {
83
+ var _temp4;
84
+ var updatedDoorStyles = _objectSpread(_objectSpread({}, (_temp4 = temp) === null || _temp4 === void 0 ? void 0 : _temp4.doorStyles), {}, {
74
85
  cds: [cds],
75
86
  cabinet_door_style_id: cds.cabinet_door_style_id
76
87
  });
@@ -552,7 +563,7 @@ var Item = /*#__PURE__*/function () {
552
563
  if (!isEmpty(currentObject === null || currentObject === void 0 || (_currentObject$counte = currentObject.counterTop) === null || _currentObject$counte === void 0 ? void 0 : _currentObject$counte.uri)) {
553
564
  var _currentObject$counte2;
554
565
  counterTopURI = currentObject === null || currentObject === void 0 || (_currentObject$counte2 = currentObject.counterTop) === null || _currentObject$counte2 === void 0 ? void 0 : _currentObject$counte2.uri;
555
- } else if (!isEmpty(state.getIn(['scene', 'layers', 'layer-1', 'counterTop']))) counterTopURI = state.getIn(['scene', 'layers', 'layer-1', 'counterTop']).uri;else counterTopURI = 'https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg';
566
+ } else if (!isEmpty(state.getIn(['scene', 'layers', 'layer-1', 'counterTop']))) counterTopURI = state.getIn(['scene', 'layers', 'layer-1', 'counterTop']).uri;
556
567
  state = this.remove(state, state.scene.selectedLayer, selectedPos.selectedItemId).updatedState;
557
568
  state = this.create(state, state.scene.selectedLayer, selectedObject.name, selectedPos.x, selectedPos.y, selectedObject.info.width, selectedObject.info.height, selectedPos.rotation, false, [], false, null, counterTopURI).updatedState;
558
569
  // state = this.select(state, state.scene.selectedLayer, selectedPos.selectedItemId).updatedState;
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: 'Window',
661
- WINDOW_CROSS: 'Cross Window',
662
- WINDOW_DOUBLE_HUNG: 'Double Hung Window',
663
- WINDOW_VERTICAL: 'window-vertical',
660
+ WINDOW_CLEAR: 'Clear',
661
+ WINDOW_CROSS: 'Cross',
662
+ WINDOW_DOUBLE_HUNG: 'Double Hung',
663
+ WINDOW_VERTICAL: '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
@@ -771,4 +771,9 @@ export var ROOM_SHAPE_TYPE = {
771
771
  export var DOORSTYLE_SCOPE_ALL = 'all';
772
772
  export var DOORSTYLE_SCOPE_SINGLE = 'single';
773
773
  export var DOORSTYLE_SCOPE_MULTIPLE = 'multiple';
774
- export var DEFAULT_MOLDING_PIECE_LENGTH = 96; // in inch, 8 feet, standard length for molding pieces
774
+ export var DEFAULT_MOLDING_PIECE_LENGTH = 96; // in inch, 8 feet, standard length for molding pieces
775
+
776
+ // default urls
777
+
778
+ export var DEFAULT_INTERIOR_URL = 'http://localhost:4002/uploads/assets/default/maple.jpg';
779
+ export var DEFAULT_DOOR_HANDLE_TEXTURE_URL = 'http://127.0.0.1:4002/uploads/assets/default/steel.jpg';