kitchen-simulator 4.1.1-react-18 → 4.1.1

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 (202) hide show
  1. package/README.md +3 -0
  2. package/es/AppContext.js +1 -1
  3. package/es/LiteKitchenConfigurator.js +162 -111
  4. package/es/LiteRenderer.js +161 -129
  5. package/es/actions/export.js +25 -12
  6. package/es/assets/gltf/door_sliding.bin +0 -0
  7. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  8. package/es/catalog/catalog.js +21 -5
  9. package/es/catalog/factories/area-factory-3d.js +17 -17
  10. package/es/catalog/factories/wall-factory.js +1 -1
  11. package/es/catalog/holes/window-clear/planner-element.js +2 -2
  12. package/es/catalog/properties/export.js +21 -0
  13. package/es/catalog/properties/property-checkbox.js +68 -0
  14. package/es/catalog/properties/property-color.js +39 -0
  15. package/es/catalog/properties/property-enum.js +50 -0
  16. package/es/catalog/properties/property-hidden.js +19 -0
  17. package/es/catalog/properties/property-lenght-measure.js +100 -0
  18. package/es/catalog/properties/property-length-measure.js +84 -0
  19. package/es/catalog/properties/property-length-measure_hole.js +100 -0
  20. package/es/catalog/properties/property-number.js +48 -0
  21. package/es/catalog/properties/property-read-only.js +26 -0
  22. package/es/catalog/properties/property-string.js +48 -0
  23. package/es/catalog/properties/property-toggle.js +39 -0
  24. package/es/catalog/properties/shared-property-style.js +14 -0
  25. package/es/catalog/utils/exporter.js +24 -11
  26. package/es/catalog/utils/item-loader.js +222 -213
  27. package/es/class/hole.js +0 -2
  28. package/es/class/item.js +89 -70
  29. package/es/class/layer.js +1 -1
  30. package/es/class/line.js +4 -8
  31. package/es/class/project.js +97 -80
  32. package/es/components/content.js +5 -93
  33. package/es/components/export.js +4 -6
  34. package/es/components/style/button.js +106 -0
  35. package/es/components/style/cancel-button.js +21 -0
  36. package/es/components/style/content-container.js +30 -0
  37. package/es/components/style/content-title.js +25 -0
  38. package/es/components/style/delete-button.js +24 -0
  39. package/es/components/style/export.js +28 -2
  40. package/es/components/style/form-block.js +20 -0
  41. package/es/components/style/form-color-input.js +26 -0
  42. package/es/components/style/form-label.js +22 -0
  43. package/es/components/style/form-number-input.js +29 -27
  44. package/es/components/style/form-number-input_2.js +200 -0
  45. package/es/components/style/form-select.js +19 -0
  46. package/es/components/style/form-slider.js +60 -0
  47. package/es/components/style/form-submit-button.js +25 -0
  48. package/es/components/style/form-text-input.js +69 -0
  49. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  50. package/es/components/viewer2d/group.js +5 -4
  51. package/es/components/viewer2d/item.js +155 -359
  52. package/es/components/viewer2d/layer.js +1 -1
  53. package/es/components/viewer2d/line.js +22 -52
  54. package/es/components/viewer2d/ruler.js +16 -11
  55. package/es/components/viewer2d/rulerDist.js +38 -51
  56. package/es/components/viewer2d/rulerX.js +4 -2
  57. package/es/components/viewer2d/rulerY.js +3 -0
  58. package/es/components/viewer2d/scene.js +17 -12
  59. package/es/components/viewer2d/state.js +1 -1
  60. package/es/components/viewer2d/utils.js +2 -2
  61. package/es/components/viewer2d/vertex.js +3 -2
  62. package/es/components/viewer2d/viewer2d.js +56 -87
  63. package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
  64. package/es/components/viewer3d/scene-creator.js +255 -58
  65. package/es/components/viewer3d/viewer3d-first-person.js +24 -26
  66. package/es/components/viewer3d/viewer3d.js +103 -124
  67. package/es/constants.js +7 -2
  68. package/es/devLiteRenderer.js +491 -150
  69. package/es/index.js +588 -23
  70. package/es/models.js +13 -8
  71. package/es/plugins/SVGLoader.js +1414 -0
  72. package/es/plugins/console-debugger.js +34 -0
  73. package/es/plugins/export.js +7 -0
  74. package/es/plugins/keyboard.js +110 -0
  75. package/es/reducers/project-reducer.js +3 -0
  76. package/es/reducers/viewer2d-reducer.js +3 -1
  77. package/es/reducers/viewer3d-reducer.js +3 -1
  78. package/es/styles/export.js +5 -0
  79. package/es/styles/tabs.css +40 -0
  80. package/es/utils/geometry.js +77 -119
  81. package/es/utils/helper.js +38 -1
  82. package/es/utils/isolate-event-handler.js +827 -607
  83. package/es/utils/molding.js +459 -11
  84. package/es/utils/ruler.js +58 -0
  85. package/lib/AppContext.js +1 -1
  86. package/lib/LiteKitchenConfigurator.js +161 -111
  87. package/lib/LiteRenderer.js +160 -129
  88. package/lib/actions/export.js +35 -39
  89. package/lib/assets/gltf/door_sliding.bin +0 -0
  90. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  91. package/lib/catalog/catalog.js +20 -4
  92. package/lib/catalog/factories/area-factory-3d.js +14 -14
  93. package/lib/catalog/factories/wall-factory.js +1 -1
  94. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  95. package/lib/catalog/properties/export.js +81 -0
  96. package/lib/catalog/properties/property-checkbox.js +76 -0
  97. package/lib/catalog/properties/property-color.js +47 -0
  98. package/lib/catalog/properties/property-enum.js +58 -0
  99. package/lib/catalog/properties/property-hidden.js +27 -0
  100. package/lib/catalog/properties/property-lenght-measure.js +108 -0
  101. package/lib/catalog/properties/property-length-measure.js +92 -0
  102. package/lib/catalog/properties/property-length-measure_hole.js +108 -0
  103. package/lib/catalog/properties/property-number.js +56 -0
  104. package/lib/catalog/properties/property-read-only.js +34 -0
  105. package/lib/catalog/properties/property-string.js +56 -0
  106. package/lib/catalog/properties/property-toggle.js +47 -0
  107. package/lib/catalog/properties/shared-property-style.js +21 -0
  108. package/lib/catalog/utils/exporter.js +24 -11
  109. package/lib/catalog/utils/item-loader.js +219 -210
  110. package/lib/class/hole.js +0 -2
  111. package/lib/class/item.js +87 -68
  112. package/lib/class/layer.js +1 -1
  113. package/lib/class/line.js +3 -7
  114. package/lib/class/project.js +97 -80
  115. package/lib/components/content.js +5 -93
  116. package/lib/components/export.js +6 -26
  117. package/lib/components/style/button.js +115 -0
  118. package/lib/components/style/cancel-button.js +29 -0
  119. package/lib/components/style/content-container.js +38 -0
  120. package/lib/components/style/content-title.js +35 -0
  121. package/lib/components/style/delete-button.js +34 -0
  122. package/lib/components/style/export.js +105 -1
  123. package/lib/components/style/form-block.js +28 -0
  124. package/lib/components/style/form-color-input.js +34 -0
  125. package/lib/components/style/form-label.js +30 -0
  126. package/lib/components/style/form-number-input.js +29 -27
  127. package/lib/components/style/form-number-input_2.js +209 -0
  128. package/lib/components/style/form-select.js +29 -0
  129. package/lib/components/style/form-slider.js +68 -0
  130. package/lib/components/style/form-submit-button.js +35 -0
  131. package/lib/components/style/form-text-input.js +78 -0
  132. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  133. package/lib/components/viewer2d/group.js +5 -4
  134. package/lib/components/viewer2d/item.js +152 -356
  135. package/lib/components/viewer2d/layer.js +1 -1
  136. package/lib/components/viewer2d/line.js +22 -52
  137. package/lib/components/viewer2d/ruler.js +15 -10
  138. package/lib/components/viewer2d/rulerDist.js +38 -51
  139. package/lib/components/viewer2d/rulerX.js +4 -2
  140. package/lib/components/viewer2d/rulerY.js +3 -0
  141. package/lib/components/viewer2d/scene.js +17 -12
  142. package/lib/components/viewer2d/state.js +1 -1
  143. package/lib/components/viewer2d/utils.js +2 -2
  144. package/lib/components/viewer2d/vertex.js +3 -2
  145. package/lib/components/viewer2d/viewer2d.js +54 -84
  146. package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
  147. package/lib/components/viewer3d/scene-creator.js +252 -55
  148. package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
  149. package/lib/components/viewer3d/viewer3d.js +100 -120
  150. package/lib/constants.js +12 -7
  151. package/lib/devLiteRenderer.js +489 -148
  152. package/lib/index.js +590 -23
  153. package/lib/models.js +13 -8
  154. package/lib/plugins/SVGLoader.js +1419 -0
  155. package/lib/plugins/console-debugger.js +42 -0
  156. package/lib/plugins/export.js +25 -0
  157. package/lib/plugins/keyboard.js +117 -0
  158. package/lib/reducers/project-reducer.js +3 -0
  159. package/lib/reducers/viewer2d-reducer.js +3 -1
  160. package/lib/reducers/viewer3d-reducer.js +3 -1
  161. package/lib/styles/export.js +13 -0
  162. package/lib/styles/tabs.css +40 -0
  163. package/lib/utils/geometry.js +77 -119
  164. package/lib/utils/helper.js +40 -1
  165. package/lib/utils/isolate-event-handler.js +827 -606
  166. package/lib/utils/molding.js +460 -9
  167. package/lib/utils/ruler.js +63 -0
  168. package/package.json +20 -15
  169. package/es/mocks/appliancePayload.json +0 -27
  170. package/es/mocks/cabinetPayload.json +0 -1914
  171. package/es/mocks/cabinetPayload2.json +0 -76
  172. package/es/mocks/dataBundle2.json +0 -4
  173. package/es/mocks/distancePayload.json +0 -6
  174. package/es/mocks/doorStylePayload2.json +0 -84
  175. package/es/mocks/furnishingPayload.json +0 -23
  176. package/es/mocks/itemCDSPayload.json +0 -27
  177. package/es/mocks/lightingPayload.json +0 -23
  178. package/es/mocks/mockProps.json +0 -43
  179. package/es/mocks/mockProps2.json +0 -9
  180. package/es/mocks/moldingPayload.json +0 -19
  181. package/es/mocks/projectItemsCatalog.json +0 -133
  182. package/es/mocks/rectangleShape.json +0 -238
  183. package/es/mocks/replaceCabinetPayload.json +0 -81
  184. package/es/mocks/roomShapePayload.json +0 -5
  185. package/es/useAppContext.js +0 -8
  186. package/lib/mocks/appliancePayload.json +0 -27
  187. package/lib/mocks/cabinetPayload.json +0 -1914
  188. package/lib/mocks/cabinetPayload2.json +0 -76
  189. package/lib/mocks/dataBundle2.json +0 -4
  190. package/lib/mocks/distancePayload.json +0 -6
  191. package/lib/mocks/doorStylePayload2.json +0 -84
  192. package/lib/mocks/furnishingPayload.json +0 -23
  193. package/lib/mocks/itemCDSPayload.json +0 -27
  194. package/lib/mocks/lightingPayload.json +0 -23
  195. package/lib/mocks/mockProps.json +0 -43
  196. package/lib/mocks/mockProps2.json +0 -9
  197. package/lib/mocks/moldingPayload.json +0 -19
  198. package/lib/mocks/projectItemsCatalog.json +0 -133
  199. package/lib/mocks/rectangleShape.json +0 -238
  200. package/lib/mocks/replaceCabinetPayload.json +0 -81
  201. package/lib/mocks/roomShapePayload.json +0 -5
  202. package/lib/useAppContext.js +0 -16
@@ -6,9 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports["default"] = LiteRenderer;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
11
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -20,70 +18,53 @@ var _react = _interopRequireWildcard(require("react"));
20
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
21
19
  var _reactRedux = require("react-redux");
22
20
  var _redux = require("redux");
21
+ var _immutable = require("immutable");
22
+ var Sentry = _interopRequireWildcard(require("@sentry/react"));
23
+ var THREE = _interopRequireWildcard(require("three"));
23
24
  var _models = _interopRequireWildcard(require("./models"));
24
25
  var Models = _models;
25
26
  var _reducer = _interopRequireDefault(require("./reducers/reducer"));
27
+ var _AppContext = _interopRequireDefault(require("./AppContext"));
26
28
  var _catalog = _interopRequireDefault(require("./catalog/catalog"));
27
29
  var Areas = _interopRequireWildcard(require("./catalog/areas/area/planner-element"));
28
30
  var Lines = _interopRequireWildcard(require("./catalog/lines/wall/planner-element"));
29
31
  var Holes = _interopRequireWildcard(require("./catalog/holes/export"));
30
- var _immutable = require("immutable");
31
- var Sentry = _interopRequireWildcard(require("@sentry/react"));
32
- var THREE = _interopRequireWildcard(require("three"));
32
+ var _export2 = require("./plugins/export");
33
33
  var _LiteKitchenConfigurator = _interopRequireDefault(require("./LiteKitchenConfigurator"));
34
- var _excluded = ["width", "height", "configData", "options", "user", "auth", "featureFlags", "sentry", "analytics", "externalEvent", "onInternalEvent", "onError"];
34
+ var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError"];
35
35
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
36
36
  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; }
37
37
  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; }
38
+ 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; } } }; }
39
+ 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; } }
40
+ 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; }
38
41
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
39
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
40
- if (typeof window !== 'undefined') window.THREE = THREE;
42
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // LiteRenderer.jsx
43
+ var isBrowser = typeof window !== 'undefined';
44
+ if (isBrowser) window.THREE = THREE;
41
45
 
42
- /* ============================== component ============================= */
43
- var MyCatalog = new _catalog["default"]();
44
- var AppState = (0, _immutable.Map)({
45
- KitchenConfigurator: new _models.State()
46
- });
47
- console.log('Version: 378.45-202509_DIY-364-mbox-crash');
48
- isProduction && Sentry.init({
49
- dsn: process.env.SENTRY_DSN,
50
- environment: process.env.SENTRY_ENVIRONMENT
51
- });
52
-
53
- //define reducer
54
- var reducer = function reducer(state, action) {
55
- state = state || AppState;
56
- state = state.update('KitchenConfigurator', function (plannerState) {
57
- return (0, _reducer["default"])(plannerState, action);
46
+ // ---- Keep prior Sentry behavior but ensure it only initializes once ----
47
+ var __sentryInited = false;
48
+ function ensureSentryInit() {
49
+ if (!isBrowser) return;
50
+ // assumes isProduction exists in your build just like today
51
+ if (!isProduction) return;
52
+ if (__sentryInited) return;
53
+ __sentryInited = true;
54
+ Sentry.init({
55
+ dsn: process.env.SENTRY_DSN,
56
+ environment: process.env.SENTRY_ENVIRONMENT
58
57
  });
59
- return state;
60
- };
61
- var store = (0, _redux.createStore)(reducer, null, !isProduction && window.devToolsExtension ? window.devToolsExtension({
62
- features: {
63
- pause: true,
64
- // start/pause recording of dispatched actions
65
- lock: true,
66
- // lock/unlock dispatching actions and side effects
67
- persist: true,
68
- // persist states on page reloading
69
- "export": true,
70
- // export history of actions in a file
71
- "import": 'custom',
72
- // import history of actions from a file
73
- jump: true,
74
- // jump back and forth (time travelling)
75
- skip: true,
76
- // skip (cancel) actions
77
- reorder: true,
78
- // drag and drop actions in the history list
79
- dispatch: true,
80
- // dispatch custom actions or action creators
81
- test: true // generate tests for the selected actions
82
- },
83
- maxAge: 999999
84
- }) : function (f) {
85
- return f;
86
- });
58
+ }
59
+
60
+ // ---------------- error helpers ----------------
61
+ function safeJson(v) {
62
+ try {
63
+ return JSON.parse(JSON.stringify(v));
64
+ } catch (_unused) {
65
+ return undefined;
66
+ }
67
+ }
87
68
  function serializeError(err) {
88
69
  try {
89
70
  if (!err) return {
@@ -100,19 +81,12 @@ function serializeError(err) {
100
81
  message: String(err),
101
82
  raw: safeJson(err)
102
83
  };
103
- } catch (_unused) {
84
+ } catch (_unused2) {
104
85
  return {
105
86
  message: 'Error serializing error'
106
87
  };
107
88
  }
108
89
  }
109
- function safeJson(v) {
110
- try {
111
- return JSON.parse(JSON.stringify(v));
112
- } catch (_unused2) {
113
- return undefined;
114
- }
115
- }
116
90
 
117
91
  /* ---------- Error Boundary that pushes into buffer ---------- */
118
92
  var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
@@ -140,35 +114,139 @@ var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
140
114
  }
141
115
  }]);
142
116
  }(_react["default"].Component);
117
+ ToolErrorBoundary.propTypes = {
118
+ pushError: _propTypes["default"].func.isRequired,
119
+ children: _propTypes["default"].any
120
+ };
121
+
122
+ // ----------------- catalog init -----------------
123
+ function initCatalogOnce(catalog) {
124
+ if (!catalog) return;
125
+ if (catalog.__ksInitialized) return;
126
+ for (var x in Areas) catalog.registerElement(Areas[x]);
127
+ for (var _x in Lines) catalog.registerElement(Lines[_x]);
128
+ for (var _x2 in Holes) catalog.registerElement(Holes[_x2]);
129
+ catalog.registerCategory('Windows', 'Windows', [Holes.windowClear, Holes.windowCross, Holes.windowDoubleHung, Holes.windowVertical]);
130
+ catalog.registerCategory('Doors', 'Doors', [Holes.doorInterior, Holes.doorExterior, Holes.doorCloset, Holes.doorSliding, Holes.doorwayFramed, Holes.doorwayFrameless]);
131
+ catalog.__ksInitialized = true;
132
+ }
133
+
134
+ // ----------------- store factory -----------------
135
+ function createInstanceStore() {
136
+ var AppState = (0, _immutable.Map)({
137
+ KitchenConfigurator: new _models.State()
138
+ });
139
+ var reducer = function reducer(state, action) {
140
+ state = state || AppState;
141
+ return state.update('KitchenConfigurator', function (plannerState) {
142
+ return (0, _reducer["default"])(plannerState, action);
143
+ });
144
+ };
145
+ var enhancer = !isProduction && isBrowser && window.devToolsExtension ? window.devToolsExtension({
146
+ features: {
147
+ pause: true,
148
+ lock: true,
149
+ persist: true,
150
+ "export": true,
151
+ "import": 'custom',
152
+ jump: true,
153
+ skip: true,
154
+ reorder: true,
155
+ dispatch: true,
156
+ test: true
157
+ },
158
+ maxAge: 999999
159
+ }) : function (f) {
160
+ return f;
161
+ };
162
+ return (0, _redux.createStore)(reducer, null, enhancer);
163
+ }
164
+ function createPlugins() {
165
+ return [(0, _export2.Keyboard)(), (0, _export2.ConsoleDebugger)()];
166
+ }
143
167
  function LiteRenderer(props) {
168
+ ensureSentryInit();
144
169
  var width = props.width,
145
170
  height = props.height,
146
171
  configData = props.configData,
147
- options = props.options,
148
- user = props.user,
149
- auth = props.auth,
150
- featureFlags = props.featureFlags,
151
- sentry = props.sentry,
152
- analytics = props.analytics,
153
172
  externalEvent = props.externalEvent,
154
173
  onInternalEvent = props.onInternalEvent,
155
174
  onError = props.onError,
156
175
  passThrough = (0, _objectWithoutProperties2["default"])(props, _excluded);
157
176
 
177
+ // ✅ instance-scoped store (no module singleton)
178
+ var storeRef = (0, _react.useRef)(null);
179
+ if (!storeRef.current) storeRef.current = createInstanceStore();
180
+
181
+ // ✅ instance-scoped catalog (no module singleton)
182
+ var catalogRef = (0, _react.useRef)(null);
183
+ if (!catalogRef.current) {
184
+ catalogRef.current = new _catalog["default"]();
185
+ initCatalogOnce(catalogRef.current);
186
+ }
187
+
188
+ // ✅ stable plugins array
189
+ var plugins = (0, _react.useMemo)(function () {
190
+ return createPlugins();
191
+ }, []);
192
+
193
+ // ✅ plugin lifecycle: supports cleanup if plugin returns function
194
+ var pluginCleanupsRef = (0, _react.useRef)([]);
195
+ (0, _react.useEffect)(function () {
196
+ var store = storeRef.current;
197
+ var stateExtractor = function stateExtractor(state) {
198
+ return state.get('KitchenConfigurator');
199
+ };
200
+ var cleanups = [];
201
+ var _iterator = _createForOfIteratorHelper(plugins),
202
+ _step;
203
+ try {
204
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
205
+ var p = _step.value;
206
+ try {
207
+ var maybeCleanup = p === null || p === void 0 ? void 0 : p(store, stateExtractor);
208
+ if (typeof maybeCleanup === 'function') cleanups.push(maybeCleanup);
209
+ } catch (_unused4) {
210
+ // keep prior behavior: do not crash
211
+ }
212
+ }
213
+ } catch (err) {
214
+ _iterator.e(err);
215
+ } finally {
216
+ _iterator.f();
217
+ }
218
+ pluginCleanupsRef.current = cleanups;
219
+ return function () {
220
+ var _iterator2 = _createForOfIteratorHelper(pluginCleanupsRef.current),
221
+ _step2;
222
+ try {
223
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
224
+ var fn = _step2.value;
225
+ try {
226
+ fn();
227
+ } catch (_unused3) {}
228
+ }
229
+ } catch (err) {
230
+ _iterator2.e(err);
231
+ } finally {
232
+ _iterator2.f();
233
+ }
234
+ pluginCleanupsRef.current = [];
235
+ };
236
+ }, [plugins]);
237
+
158
238
  /* ---------- track last external event ---------- */
159
239
  var lastExternalEventRef = (0, _react.useRef)(null);
160
240
  (0, _react.useEffect)(function () {
161
- if (externalEvent) {
162
- lastExternalEventRef.current = externalEvent;
163
- }
241
+ if (externalEvent) lastExternalEventRef.current = externalEvent;
164
242
  }, [externalEvent]);
165
243
 
166
244
  /* ---------- error buffer + last emitted bundle ---------- */
167
- var errorsBufferRef = (0, _react.useRef)([]); // pending errors (not yet emitted)
245
+ var errorsBufferRef = (0, _react.useRef)([]);
168
246
  var lastEmittedRef = (0, _react.useRef)({
169
247
  externalEvent: null,
170
248
  errors: []
171
- }); // last bundle we sent
249
+ });
172
250
  var flushTimerRef = (0, _react.useRef)(null);
173
251
  var emit = (0, _react.useCallback)(function (external, errors) {
174
252
  var payload = {
@@ -177,13 +255,11 @@ function LiteRenderer(props) {
177
255
  };
178
256
  try {
179
257
  onError === null || onError === void 0 || onError(payload);
180
- } catch (_unused3) {}
258
+ } catch (_unused5) {}
181
259
  // eslint-disable-next-line no-console
182
260
  console.debug('[LiteRenderer:onError]', payload);
183
261
  lastEmittedRef.current = payload;
184
262
  }, [onError]);
185
-
186
- // batch short bursts (e.g., multiple async errors in same tick)
187
263
  var scheduleFlush = (0, _react.useCallback)(function () {
188
264
  if (flushTimerRef.current) return;
189
265
  flushTimerRef.current = setTimeout(function () {
@@ -192,7 +268,7 @@ function LiteRenderer(props) {
192
268
  if (!errors.length) return;
193
269
  errorsBufferRef.current = [];
194
270
  emit(lastExternalEventRef.current, errors);
195
- }, 0); // micro-batch; increase (e.g. 50ms) if you want coarser batching
271
+ }, 0);
196
272
  }, [emit]);
197
273
  var pushError = (0, _react.useCallback)(function (errPayload) {
198
274
  errorsBufferRef.current.push(_objectSpread({
@@ -203,6 +279,7 @@ function LiteRenderer(props) {
203
279
 
204
280
  /* ---------- global runtime + async error capture ---------- */
205
281
  (0, _react.useEffect)(function () {
282
+ if (!isBrowser) return;
206
283
  var onWindowError = function onWindowError(event) {
207
284
  pushError({
208
285
  type: 'runtime-error',
@@ -234,79 +311,33 @@ function LiteRenderer(props) {
234
311
  var prev = prevExternalEventRef.current;
235
312
  if (prev === externalEvent) return;
236
313
  prevExternalEventRef.current = externalEvent;
237
-
238
- // if we already emitted something before, re-send it with the new event context
239
314
  var last = lastEmittedRef.current;
240
315
  if (last && last.errors && last.errors.length) {
241
316
  emit(lastExternalEventRef.current, last.errors);
242
317
  }
243
318
  }, [externalEvent, emit]);
244
- var id = configData.id,
245
- logoImg = configData.logoImg,
246
- companyUrl = configData.companyUrl;
247
- (0, _react.useEffect)(function () {
248
- var initMyCatalog = /*#__PURE__*/function () {
249
- var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
250
- var x, _x, _x2;
251
- return _regenerator["default"].wrap(function (_context) {
252
- while (1) switch (_context.prev = _context.next) {
253
- case 0:
254
- for (x in Areas) MyCatalog.registerElement(Areas[x]);
255
- for (_x in Lines) MyCatalog.registerElement(Lines[_x]);
256
- for (_x2 in Holes) MyCatalog.registerElement(Holes[_x2]);
257
- MyCatalog.registerCategory('Windows', 'Windows', [Holes.windowClear, Holes.windowCross, Holes.windowDoubleHung, Holes.windowVertical]);
258
- MyCatalog.registerCategory('Doors', 'Doors', [Holes.doorInterior, Holes.doorExterior, Holes.doorCloset, Holes.doorSliding, Holes.doorwayFramed, Holes.doorwayFrameless]);
259
- case 1:
260
- case "end":
261
- return _context.stop();
262
- }
263
- }, _callee);
264
- }));
265
- return function initMyCatalog() {
266
- return _ref.apply(this, arguments);
267
- };
268
- }();
269
- var initCatalog = /*#__PURE__*/function () {
270
- var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
271
- return _regenerator["default"].wrap(function (_context2) {
272
- while (1) switch (_context2.prev = _context2.next) {
273
- case 0:
274
- _context2.next = 1;
275
- return initMyCatalog();
276
- case 1:
277
- case "end":
278
- return _context2.stop();
279
- }
280
- }, _callee2);
281
- }));
282
- return function initCatalog() {
283
- return _ref2.apply(this, arguments);
284
- };
285
- }();
286
- initCatalog();
287
- // eslint-disable-next-line react-hooks/exhaustive-deps
288
- }, [id]);
289
- return /*#__PURE__*/_react["default"].createElement(_reactRedux.Provider, {
290
- store: store
319
+ var _ref = configData || {},
320
+ logoImg = _ref.logoImg,
321
+ companyUrl = _ref.companyUrl;
322
+ return /*#__PURE__*/_react["default"].createElement(_AppContext["default"].Provider, null, /*#__PURE__*/_react["default"].createElement(_reactRedux.Provider, {
323
+ store: storeRef.current
291
324
  }, /*#__PURE__*/_react["default"].createElement(ToolErrorBoundary, {
292
325
  pushError: pushError
293
326
  }, /*#__PURE__*/_react["default"].createElement(_LiteKitchenConfigurator["default"], (0, _extends2["default"])({
294
- catalog: MyCatalog,
327
+ catalog: catalogRef.current,
295
328
  width: width,
296
329
  height: height,
297
330
  logoImage: logoImg,
298
331
  companyURL: companyUrl,
332
+ plugins: plugins,
299
333
  stateExtractor: function stateExtractor(state) {
300
334
  return state.get('KitchenConfigurator');
301
335
  },
302
336
  configData: configData,
303
337
  externalEvent: externalEvent,
304
338
  onInternalEvent: onInternalEvent
305
- }, passThrough))));
339
+ }, passThrough)))));
306
340
  }
307
-
308
- /* ============================== prop types ============================== */
309
-
310
341
  LiteRenderer.propTypes = {
311
342
  width: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
312
343
  height: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
@@ -1,40 +1,36 @@
1
- "use strict";
1
+ import * as projectActions from "./project-actions";
2
+ import * as viewer2DActions from "./viewer2d-actions";
3
+ import * as viewer3DActions from "./viewer3d-actions";
4
+ import * as linesActions from "./lines-actions";
5
+ import * as holesActions from "./holes-actions";
6
+ import * as sceneActions from "./scene-actions";
7
+ import * as verticesActions from "./vertices-actions";
8
+ import * as itemsActions from "./items-actions";
9
+ import * as areaActions from "./area-actions";
10
+ import * as groupsActions from "./groups-actions";
2
11
 
3
- var _typeof = require("@babel/runtime/helpers/typeof");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.viewer3DActions = exports.viewer2DActions = exports.verticesActions = exports.sceneActions = exports.projectActions = exports.linesActions = exports.itemsActions = exports.holesActions = exports.groupsActions = exports["default"] = exports.areaActions = void 0;
8
- var projectActions = _interopRequireWildcard(require("./project-actions"));
9
- exports.projectActions = projectActions;
10
- var viewer2DActions = _interopRequireWildcard(require("./viewer2d-actions"));
11
- exports.viewer2DActions = viewer2DActions;
12
- var viewer3DActions = _interopRequireWildcard(require("./viewer3d-actions"));
13
- exports.viewer3DActions = viewer3DActions;
14
- var linesActions = _interopRequireWildcard(require("./lines-actions"));
15
- exports.linesActions = linesActions;
16
- var holesActions = _interopRequireWildcard(require("./holes-actions"));
17
- exports.holesActions = holesActions;
18
- var sceneActions = _interopRequireWildcard(require("./scene-actions"));
19
- exports.sceneActions = sceneActions;
20
- var verticesActions = _interopRequireWildcard(require("./vertices-actions"));
21
- exports.verticesActions = verticesActions;
22
- var itemsActions = _interopRequireWildcard(require("./items-actions"));
23
- exports.itemsActions = itemsActions;
24
- var areaActions = _interopRequireWildcard(require("./area-actions"));
25
- exports.areaActions = areaActions;
26
- var groupsActions = _interopRequireWildcard(require("./groups-actions"));
27
- exports.groupsActions = groupsActions;
28
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
29
- var _default = exports["default"] = {
30
- projectActions: projectActions,
31
- viewer2DActions: viewer2DActions,
32
- viewer3DActions: viewer3DActions,
33
- linesActions: linesActions,
34
- holesActions: holesActions,
35
- sceneActions: sceneActions,
36
- verticesActions: verticesActions,
37
- itemsActions: itemsActions,
38
- areaActions: areaActions,
39
- groupsActions: groupsActions
40
- };
12
+ export {
13
+ projectActions,
14
+ viewer2DActions,
15
+ viewer3DActions,
16
+ linesActions,
17
+ holesActions,
18
+ sceneActions,
19
+ verticesActions,
20
+ itemsActions,
21
+ areaActions,
22
+ groupsActions
23
+ };
24
+
25
+ export default {
26
+ projectActions,
27
+ viewer2DActions,
28
+ viewer3DActions,
29
+ linesActions,
30
+ holesActions,
31
+ sceneActions,
32
+ verticesActions,
33
+ itemsActions,
34
+ areaActions,
35
+ groupsActions
36
+ };
Binary file
@@ -1,6 +1,13 @@
1
- <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M14.5566 21L1.90534 17.3692L0.994629 4.08225L14.8953 6.34589L14.5566 21Z" stroke="#4C12A1" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="5 3"/>
3
- <path d="M14.5564 21L20.2416 14.9342L21.0051 2.53974L14.8952 6.34589" stroke="#4C12A1" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="5 3"/>
4
- <path d="M8.91868 1L9.14126 12.3969L1.90534 17.3692L0.994629 4.08224L8.91868 1Z" stroke="#4C12A1" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="5 3"/>
5
- <path d="M8.9187 1L21.0053 2.53972L20.2418 14.9342L9.14128 12.3969L8.9187 1Z" stroke="#4C12A1" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="5 3"/>
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_1516_100789)">
3
+ <path d="M4.25 6L2 7.125L8 10.125L14 7.125L11.75 6" stroke="rgba(58, 11, 128, 1)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M2 10.125L8 13.125L14 10.125" stroke="rgba(58, 11, 128, 1)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <path d="M8 7.125V1.875" stroke="rgba(58, 11, 128, 1)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <path d="M5.75 4.125L8 1.875L10.25 4.125" stroke="rgba(58, 11, 128, 1)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
7
+ </g>
8
+ <defs>
9
+ <clipPath id="clip0_1516_100789">
10
+ <rect width="16" height="16" fill="white"/>
11
+ </clipPath>
12
+ </defs>
6
13
  </svg>
@@ -8,6 +8,7 @@ exports["default"] = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _export = require("./properties/export");
11
12
  var _constants = require("../constants");
12
13
  var _utils = require("../components/viewer2d/utils");
13
14
  var Catalog = exports["default"] = /*#__PURE__*/function () {
@@ -25,6 +26,7 @@ var Catalog = exports["default"] = /*#__PURE__*/function () {
25
26
  };
26
27
  this.propertyTypes = {};
27
28
  this.unit = unit;
29
+ this.registerMultiplePropertyType([['color', _export.PropertyColor, _export.PropertyColor], ['enum', _export.PropertyEnum, _export.PropertyEnum], ['string', _export.PropertyString, _export.PropertyString], ['number', _export.PropertyNumber, _export.PropertyNumber], ['length-measure', _export.PropertyLengthMeasure, _export.PropertyLengthMeasure], ['toggle', _export.PropertyToggle, _export.PropertyToggle], ['checkbox', _export.PropertyCheckbox, _export.PropertyCheckbox], ['hidden', _export.PropertyHidden, _export.PropertyHidden], ['read-only', _export.PropertyReadOnly, _export.PropertyReadOnly]]);
28
30
  }
29
31
 
30
32
  /**
@@ -90,6 +92,20 @@ var Catalog = exports["default"] = /*#__PURE__*/function () {
90
92
  }
91
93
  }
92
94
 
95
+ /**
96
+ * @description Register multiple elements
97
+ * @param {array} [elementArray] Array of elements
98
+ * @return {void}
99
+ */
100
+ }, {
101
+ key: "registerMultipleElements",
102
+ value: function registerMultipleElements(elementArray) {
103
+ var _this = this;
104
+ elementArray.forEach(function (el) {
105
+ return _this.registerElement(el);
106
+ });
107
+ }
108
+
93
109
  /**
94
110
  * @description Register a new property
95
111
  * @param {string} type Type of property
@@ -115,9 +131,9 @@ var Catalog = exports["default"] = /*#__PURE__*/function () {
115
131
  }, {
116
132
  key: "registerMultiplePropertyType",
117
133
  value: function registerMultiplePropertyType(propertyTypeArray) {
118
- var _this = this;
134
+ var _this2 = this;
119
135
  propertyTypeArray.forEach(function (el) {
120
- return _this.registerPropertyType.apply(_this, (0, _toConsumableArray2["default"])(el));
136
+ return _this2.registerPropertyType.apply(_this2, (0, _toConsumableArray2["default"])(el));
121
137
  });
122
138
  }
123
139
 
@@ -170,7 +186,7 @@ var Catalog = exports["default"] = /*#__PURE__*/function () {
170
186
  }, {
171
187
  key: "registerCategory",
172
188
  value: function registerCategory(name, label, childs) {
173
- var _this2 = this;
189
+ var _this3 = this;
174
190
  if (this.validateCategory(name, label)) {
175
191
  this.categories[name] = {
176
192
  name: name,
@@ -181,7 +197,7 @@ var Catalog = exports["default"] = /*#__PURE__*/function () {
181
197
  this.categories.root.categories.push(this.categories[name]);
182
198
  if (childs && childs.length) {
183
199
  childs.forEach(function (el) {
184
- return _this2.addToCategory(name, el);
200
+ return _this3.addToCategory(name, el);
185
201
  });
186
202
  }
187
203
  return this.categories[name];