kitchen-simulator 4.0.6-react-18 → 4.0.6

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 (192) hide show
  1. package/README.md +3 -0
  2. package/es/AppContext.js +1 -1
  3. package/es/LiteKitchenConfigurator.js +162 -107
  4. package/es/LiteRenderer.js +162 -137
  5. package/es/actions/export.js +25 -12
  6. package/es/assets/gltf/door_sliding.bin +0 -0
  7. package/es/assets/img/png/helper/video_preview_start.png +0 -0
  8. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  9. package/es/catalog/catalog.js +21 -5
  10. package/es/catalog/holes/window-clear/planner-element.js +2 -2
  11. package/es/catalog/properties/export.js +21 -0
  12. package/es/catalog/properties/property-checkbox.js +68 -0
  13. package/es/catalog/properties/property-color.js +39 -0
  14. package/es/catalog/properties/property-enum.js +50 -0
  15. package/es/catalog/properties/property-hidden.js +19 -0
  16. package/es/catalog/properties/property-lenght-measure.js +100 -0
  17. package/es/catalog/properties/property-length-measure.js +84 -0
  18. package/es/catalog/properties/property-length-measure_hole.js +100 -0
  19. package/es/catalog/properties/property-number.js +48 -0
  20. package/es/catalog/properties/property-read-only.js +26 -0
  21. package/es/catalog/properties/property-string.js +48 -0
  22. package/es/catalog/properties/property-toggle.js +39 -0
  23. package/es/catalog/properties/shared-property-style.js +14 -0
  24. package/es/catalog/utils/exporter.js +1 -0
  25. package/es/catalog/utils/item-loader.js +35 -26
  26. package/es/class/hole.js +0 -2
  27. package/es/class/item.js +96 -70
  28. package/es/class/line.js +4 -8
  29. package/es/class/project.js +93 -80
  30. package/es/components/content.js +5 -93
  31. package/es/components/export.js +4 -6
  32. package/es/components/style/button.js +106 -0
  33. package/es/components/style/cancel-button.js +21 -0
  34. package/es/components/style/content-container.js +30 -0
  35. package/es/components/style/content-title.js +25 -0
  36. package/es/components/style/delete-button.js +24 -0
  37. package/es/components/style/export.js +28 -2
  38. package/es/components/style/form-block.js +20 -0
  39. package/es/components/style/form-color-input.js +26 -0
  40. package/es/components/style/form-label.js +22 -0
  41. package/es/components/style/form-number-input.js +29 -27
  42. package/es/components/style/form-number-input_2.js +200 -0
  43. package/es/components/style/form-select.js +19 -0
  44. package/es/components/style/form-slider.js +60 -0
  45. package/es/components/style/form-submit-button.js +25 -0
  46. package/es/components/style/form-text-input.js +69 -0
  47. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  48. package/es/components/viewer2d/group.js +5 -4
  49. package/es/components/viewer2d/item.js +155 -359
  50. package/es/components/viewer2d/layer.js +1 -1
  51. package/es/components/viewer2d/line.js +17 -47
  52. package/es/components/viewer2d/ruler.js +5 -3
  53. package/es/components/viewer2d/rulerDist.js +8 -7
  54. package/es/components/viewer2d/rulerX.js +4 -2
  55. package/es/components/viewer2d/rulerY.js +3 -0
  56. package/es/components/viewer2d/scene.js +17 -12
  57. package/es/components/viewer2d/state.js +1 -1
  58. package/es/components/viewer2d/utils.js +2 -2
  59. package/es/components/viewer2d/vertex.js +3 -2
  60. package/es/components/viewer2d/viewer2d.js +51 -87
  61. package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
  62. package/es/components/viewer3d/scene-creator.js +59 -18
  63. package/es/components/viewer3d/viewer3d-first-person.js +24 -26
  64. package/es/components/viewer3d/viewer3d.js +100 -112
  65. package/es/constants.js +6 -2
  66. package/es/devLiteRenderer.js +491 -150
  67. package/es/index.js +606 -1
  68. package/es/models.js +3 -2
  69. package/es/plugins/SVGLoader.js +1414 -0
  70. package/es/plugins/console-debugger.js +34 -0
  71. package/es/plugins/export.js +7 -0
  72. package/es/plugins/keyboard.js +110 -0
  73. package/es/reducers/project-reducer.js +3 -0
  74. package/es/styles/export.js +5 -0
  75. package/es/styles/tabs.css +40 -0
  76. package/es/utils/geometry.js +72 -114
  77. package/es/utils/helper.js +38 -1
  78. package/es/utils/isolate-event-handler.js +826 -606
  79. package/es/utils/molding.js +457 -11
  80. package/lib/AppContext.js +1 -1
  81. package/lib/LiteKitchenConfigurator.js +161 -107
  82. package/lib/LiteRenderer.js +161 -137
  83. package/lib/actions/export.js +35 -39
  84. package/lib/assets/gltf/door_sliding.bin +0 -0
  85. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  86. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  87. package/lib/catalog/catalog.js +20 -4
  88. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  89. package/lib/catalog/properties/export.js +81 -0
  90. package/lib/catalog/properties/property-checkbox.js +76 -0
  91. package/lib/catalog/properties/property-color.js +47 -0
  92. package/lib/catalog/properties/property-enum.js +58 -0
  93. package/lib/catalog/properties/property-hidden.js +27 -0
  94. package/lib/catalog/properties/property-lenght-measure.js +108 -0
  95. package/lib/catalog/properties/property-length-measure.js +92 -0
  96. package/lib/catalog/properties/property-length-measure_hole.js +108 -0
  97. package/lib/catalog/properties/property-number.js +56 -0
  98. package/lib/catalog/properties/property-read-only.js +34 -0
  99. package/lib/catalog/properties/property-string.js +56 -0
  100. package/lib/catalog/properties/property-toggle.js +47 -0
  101. package/lib/catalog/properties/shared-property-style.js +21 -0
  102. package/lib/catalog/utils/exporter.js +1 -0
  103. package/lib/catalog/utils/item-loader.js +35 -26
  104. package/lib/class/hole.js +0 -2
  105. package/lib/class/item.js +94 -68
  106. package/lib/class/line.js +3 -7
  107. package/lib/class/project.js +93 -80
  108. package/lib/components/content.js +5 -93
  109. package/lib/components/export.js +6 -26
  110. package/lib/components/style/button.js +115 -0
  111. package/lib/components/style/cancel-button.js +29 -0
  112. package/lib/components/style/content-container.js +38 -0
  113. package/lib/components/style/content-title.js +35 -0
  114. package/lib/components/style/delete-button.js +34 -0
  115. package/lib/components/style/export.js +105 -1
  116. package/lib/components/style/form-block.js +28 -0
  117. package/lib/components/style/form-color-input.js +34 -0
  118. package/lib/components/style/form-label.js +30 -0
  119. package/lib/components/style/form-number-input.js +29 -27
  120. package/lib/components/style/form-number-input_2.js +209 -0
  121. package/lib/components/style/form-select.js +29 -0
  122. package/lib/components/style/form-slider.js +68 -0
  123. package/lib/components/style/form-submit-button.js +35 -0
  124. package/lib/components/style/form-text-input.js +78 -0
  125. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  126. package/lib/components/viewer2d/group.js +5 -4
  127. package/lib/components/viewer2d/item.js +152 -356
  128. package/lib/components/viewer2d/layer.js +1 -1
  129. package/lib/components/viewer2d/line.js +17 -47
  130. package/lib/components/viewer2d/ruler.js +4 -2
  131. package/lib/components/viewer2d/rulerDist.js +8 -7
  132. package/lib/components/viewer2d/rulerX.js +4 -2
  133. package/lib/components/viewer2d/rulerY.js +3 -0
  134. package/lib/components/viewer2d/scene.js +17 -12
  135. package/lib/components/viewer2d/state.js +1 -1
  136. package/lib/components/viewer2d/utils.js +2 -2
  137. package/lib/components/viewer2d/vertex.js +3 -2
  138. package/lib/components/viewer2d/viewer2d.js +49 -84
  139. package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
  140. package/lib/components/viewer3d/scene-creator.js +57 -16
  141. package/lib/components/viewer3d/viewer3d-first-person.js +24 -26
  142. package/lib/components/viewer3d/viewer3d.js +97 -108
  143. package/lib/constants.js +11 -7
  144. package/lib/devLiteRenderer.js +489 -148
  145. package/lib/index.js +607 -6
  146. package/lib/models.js +3 -2
  147. package/lib/plugins/SVGLoader.js +1419 -0
  148. package/lib/plugins/console-debugger.js +42 -0
  149. package/lib/plugins/export.js +25 -0
  150. package/lib/plugins/keyboard.js +117 -0
  151. package/lib/reducers/project-reducer.js +3 -0
  152. package/lib/styles/export.js +13 -0
  153. package/lib/styles/tabs.css +40 -0
  154. package/lib/utils/geometry.js +72 -114
  155. package/lib/utils/helper.js +40 -1
  156. package/lib/utils/isolate-event-handler.js +826 -605
  157. package/lib/utils/molding.js +458 -9
  158. package/package.json +21 -20
  159. package/es/mocks/appliancePayload.json +0 -27
  160. package/es/mocks/cabinetPayload.json +0 -1914
  161. package/es/mocks/cabinetPayload2.json +0 -76
  162. package/es/mocks/dataBundle2.json +0 -4
  163. package/es/mocks/distancePayload.json +0 -6
  164. package/es/mocks/doorStylePayload2.json +0 -84
  165. package/es/mocks/furnishingPayload.json +0 -23
  166. package/es/mocks/itemCDSPayload.json +0 -27
  167. package/es/mocks/lightingPayload.json +0 -23
  168. package/es/mocks/mockProps.json +0 -43
  169. package/es/mocks/mockProps2.json +0 -9
  170. package/es/mocks/moldingPayload.json +0 -19
  171. package/es/mocks/projectItemsCatalog.json +0 -133
  172. package/es/mocks/rectangleShape.json +0 -238
  173. package/es/mocks/replaceCabinetPayload.json +0 -81
  174. package/es/mocks/roomShapePayload.json +0 -5
  175. package/es/useAppContext.js +0 -8
  176. package/lib/mocks/appliancePayload.json +0 -27
  177. package/lib/mocks/cabinetPayload.json +0 -1914
  178. package/lib/mocks/cabinetPayload2.json +0 -76
  179. package/lib/mocks/dataBundle2.json +0 -4
  180. package/lib/mocks/distancePayload.json +0 -6
  181. package/lib/mocks/doorStylePayload2.json +0 -84
  182. package/lib/mocks/furnishingPayload.json +0 -23
  183. package/lib/mocks/itemCDSPayload.json +0 -27
  184. package/lib/mocks/lightingPayload.json +0 -23
  185. package/lib/mocks/mockProps.json +0 -43
  186. package/lib/mocks/mockProps2.json +0 -9
  187. package/lib/mocks/moldingPayload.json +0 -19
  188. package/lib/mocks/projectItemsCatalog.json +0 -133
  189. package/lib/mocks/rectangleShape.json +0 -238
  190. package/lib/mocks/replaceCabinetPayload.json +0 -81
  191. package/lib/mocks/roomShapePayload.json +0 -5
  192. 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;
41
-
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
- });
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;
52
45
 
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,42 +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
- var normalizedExternalEvent = _react["default"].useMemo(function () {
158
- if (!externalEvent) return null;
159
- if (externalEvent.id != null) return externalEvent;
160
- return _objectSpread(_objectSpread({}, externalEvent), {}, {
161
- id: "".concat(Date.now(), "-").concat(Math.random())
162
- });
163
- }, [externalEvent]);
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]);
164
237
 
165
238
  /* ---------- track last external event ---------- */
166
239
  var lastExternalEventRef = (0, _react.useRef)(null);
167
240
  (0, _react.useEffect)(function () {
168
- if (externalEvent) {
169
- lastExternalEventRef.current = externalEvent;
170
- }
241
+ if (externalEvent) lastExternalEventRef.current = externalEvent;
171
242
  }, [externalEvent]);
172
243
 
173
244
  /* ---------- error buffer + last emitted bundle ---------- */
174
- var errorsBufferRef = (0, _react.useRef)([]); // pending errors (not yet emitted)
245
+ var errorsBufferRef = (0, _react.useRef)([]);
175
246
  var lastEmittedRef = (0, _react.useRef)({
176
247
  externalEvent: null,
177
248
  errors: []
178
- }); // last bundle we sent
249
+ });
179
250
  var flushTimerRef = (0, _react.useRef)(null);
180
251
  var emit = (0, _react.useCallback)(function (external, errors) {
181
252
  var payload = {
@@ -184,13 +255,11 @@ function LiteRenderer(props) {
184
255
  };
185
256
  try {
186
257
  onError === null || onError === void 0 || onError(payload);
187
- } catch (_unused3) {}
258
+ } catch (_unused5) {}
188
259
  // eslint-disable-next-line no-console
189
260
  console.debug('[LiteRenderer:onError]', payload);
190
261
  lastEmittedRef.current = payload;
191
262
  }, [onError]);
192
-
193
- // batch short bursts (e.g., multiple async errors in same tick)
194
263
  var scheduleFlush = (0, _react.useCallback)(function () {
195
264
  if (flushTimerRef.current) return;
196
265
  flushTimerRef.current = setTimeout(function () {
@@ -199,7 +268,7 @@ function LiteRenderer(props) {
199
268
  if (!errors.length) return;
200
269
  errorsBufferRef.current = [];
201
270
  emit(lastExternalEventRef.current, errors);
202
- }, 0); // micro-batch; increase (e.g. 50ms) if you want coarser batching
271
+ }, 0);
203
272
  }, [emit]);
204
273
  var pushError = (0, _react.useCallback)(function (errPayload) {
205
274
  errorsBufferRef.current.push(_objectSpread({
@@ -210,6 +279,7 @@ function LiteRenderer(props) {
210
279
 
211
280
  /* ---------- global runtime + async error capture ---------- */
212
281
  (0, _react.useEffect)(function () {
282
+ if (!isBrowser) return;
213
283
  var onWindowError = function onWindowError(event) {
214
284
  pushError({
215
285
  type: 'runtime-error',
@@ -241,79 +311,33 @@ function LiteRenderer(props) {
241
311
  var prev = prevExternalEventRef.current;
242
312
  if (prev === externalEvent) return;
243
313
  prevExternalEventRef.current = externalEvent;
244
-
245
- // if we already emitted something before, re-send it with the new event context
246
314
  var last = lastEmittedRef.current;
247
315
  if (last && last.errors && last.errors.length) {
248
316
  emit(lastExternalEventRef.current, last.errors);
249
317
  }
250
318
  }, [externalEvent, emit]);
251
- var id = configData.id,
252
- logoImg = configData.logoImg,
253
- companyUrl = configData.companyUrl;
254
- (0, _react.useEffect)(function () {
255
- var initMyCatalog = /*#__PURE__*/function () {
256
- var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
257
- var x, _x, _x2;
258
- return _regenerator["default"].wrap(function (_context) {
259
- while (1) switch (_context.prev = _context.next) {
260
- case 0:
261
- for (x in Areas) MyCatalog.registerElement(Areas[x]);
262
- for (_x in Lines) MyCatalog.registerElement(Lines[_x]);
263
- for (_x2 in Holes) MyCatalog.registerElement(Holes[_x2]);
264
- MyCatalog.registerCategory('Windows', 'Windows', [Holes.windowClear, Holes.windowCross, Holes.windowDoubleHung, Holes.windowVertical]);
265
- MyCatalog.registerCategory('Doors', 'Doors', [Holes.doorInterior, Holes.doorExterior, Holes.doorCloset, Holes.doorSliding, Holes.doorwayFramed, Holes.doorwayFrameless]);
266
- case 1:
267
- case "end":
268
- return _context.stop();
269
- }
270
- }, _callee);
271
- }));
272
- return function initMyCatalog() {
273
- return _ref.apply(this, arguments);
274
- };
275
- }();
276
- var initCatalog = /*#__PURE__*/function () {
277
- var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
278
- return _regenerator["default"].wrap(function (_context2) {
279
- while (1) switch (_context2.prev = _context2.next) {
280
- case 0:
281
- _context2.next = 1;
282
- return initMyCatalog();
283
- case 1:
284
- case "end":
285
- return _context2.stop();
286
- }
287
- }, _callee2);
288
- }));
289
- return function initCatalog() {
290
- return _ref2.apply(this, arguments);
291
- };
292
- }();
293
- initCatalog();
294
- // eslint-disable-next-line react-hooks/exhaustive-deps
295
- }, [id]);
296
- return /*#__PURE__*/_react["default"].createElement(_reactRedux.Provider, {
297
- 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
298
324
  }, /*#__PURE__*/_react["default"].createElement(ToolErrorBoundary, {
299
325
  pushError: pushError
300
326
  }, /*#__PURE__*/_react["default"].createElement(_LiteKitchenConfigurator["default"], (0, _extends2["default"])({
301
- catalog: MyCatalog,
327
+ catalog: catalogRef.current,
302
328
  width: width,
303
329
  height: height,
304
330
  logoImage: logoImg,
305
331
  companyURL: companyUrl,
332
+ plugins: plugins,
306
333
  stateExtractor: function stateExtractor(state) {
307
334
  return state.get('KitchenConfigurator');
308
335
  },
309
336
  configData: configData,
310
- externalEvent: normalizedExternalEvent,
337
+ externalEvent: externalEvent,
311
338
  onInternalEvent: onInternalEvent
312
- }, passThrough))));
339
+ }, passThrough)))));
313
340
  }
314
-
315
- /* ============================== prop types ============================== */
316
-
317
341
  LiteRenderer.propTypes = {
318
342
  width: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
319
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];
@@ -13,12 +13,12 @@ var _constants = require("../../../constants");
13
13
  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); }
14
14
  var cached3DWindow = null;
15
15
  var _default = exports["default"] = {
16
- name: 'Clear Window',
16
+ name: 'Window',
17
17
  prototype: 'holes',
18
18
  info: {
19
19
  title: 'Clear',
20
20
  tag: ['window'],
21
- description: 'Clear Window',
21
+ description: 'Window',
22
22
  image: '/assets/img/svg/window/Clear.svg',
23
23
  url: '/assets/gltf/window_clear.gltf'
24
24
  },