kitchen-simulator 4.0.0-react-18 → 4.0.0

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 (180) hide show
  1. package/README.md +3 -0
  2. package/es/AppContext.js +1 -1
  3. package/es/LiteKitchenConfigurator.js +156 -108
  4. package/es/LiteRenderer.js +159 -130
  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 +17 -12
  26. package/es/class/hole.js +0 -2
  27. package/es/class/item.js +95 -69
  28. package/es/class/line.js +4 -8
  29. package/es/class/project.js +91 -80
  30. package/es/components/content.js +5 -2
  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 +11 -22
  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/group.js +5 -4
  48. package/es/components/viewer2d/item.js +41 -16
  49. package/es/components/viewer2d/layer.js +1 -1
  50. package/es/components/viewer2d/line.js +17 -47
  51. package/es/components/viewer2d/ruler.js +5 -3
  52. package/es/components/viewer2d/rulerDist.js +8 -7
  53. package/es/components/viewer2d/rulerX.js +3 -0
  54. package/es/components/viewer2d/rulerY.js +3 -0
  55. package/es/components/viewer2d/scene.js +4 -1
  56. package/es/components/viewer2d/state.js +1 -1
  57. package/es/components/viewer2d/utils.js +2 -2
  58. package/es/components/viewer2d/viewer2d.js +51 -84
  59. package/es/components/viewer3d/scene-creator.js +51 -15
  60. package/es/components/viewer3d/viewer3d-first-person.js +8 -0
  61. package/es/components/viewer3d/viewer3d.js +80 -88
  62. package/es/constants.js +6 -2
  63. package/es/devLiteRenderer.js +491 -150
  64. package/es/index.js +567 -25
  65. package/es/models.js +2 -1
  66. package/es/plugins/SVGLoader.js +1414 -0
  67. package/es/plugins/console-debugger.js +0 -2
  68. package/es/styles/export.js +5 -0
  69. package/es/styles/tabs.css +40 -0
  70. package/es/utils/geometry.js +52 -96
  71. package/es/utils/helper.js +38 -1
  72. package/es/utils/isolate-event-handler.js +781 -577
  73. package/es/utils/molding.js +457 -11
  74. package/lib/AppContext.js +1 -1
  75. package/lib/LiteKitchenConfigurator.js +155 -108
  76. package/lib/LiteRenderer.js +158 -130
  77. package/lib/actions/export.js +35 -39
  78. package/lib/assets/gltf/door_sliding.bin +0 -0
  79. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  80. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  81. package/lib/catalog/catalog.js +20 -4
  82. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  83. package/lib/catalog/properties/export.js +81 -0
  84. package/lib/catalog/properties/property-checkbox.js +76 -0
  85. package/lib/catalog/properties/property-color.js +47 -0
  86. package/lib/catalog/properties/property-enum.js +58 -0
  87. package/lib/catalog/properties/property-hidden.js +27 -0
  88. package/lib/catalog/properties/property-lenght-measure.js +108 -0
  89. package/lib/catalog/properties/property-length-measure.js +92 -0
  90. package/lib/catalog/properties/property-length-measure_hole.js +108 -0
  91. package/lib/catalog/properties/property-number.js +56 -0
  92. package/lib/catalog/properties/property-read-only.js +34 -0
  93. package/lib/catalog/properties/property-string.js +56 -0
  94. package/lib/catalog/properties/property-toggle.js +47 -0
  95. package/lib/catalog/properties/shared-property-style.js +21 -0
  96. package/lib/catalog/utils/exporter.js +1 -0
  97. package/lib/catalog/utils/item-loader.js +17 -12
  98. package/lib/class/hole.js +0 -2
  99. package/lib/class/item.js +93 -67
  100. package/lib/class/line.js +3 -7
  101. package/lib/class/project.js +91 -80
  102. package/lib/components/content.js +5 -2
  103. package/lib/components/export.js +6 -26
  104. package/lib/components/style/button.js +115 -0
  105. package/lib/components/style/cancel-button.js +29 -0
  106. package/lib/components/style/content-container.js +38 -0
  107. package/lib/components/style/content-title.js +35 -0
  108. package/lib/components/style/delete-button.js +34 -0
  109. package/lib/components/style/export.js +105 -1
  110. package/lib/components/style/form-block.js +28 -0
  111. package/lib/components/style/form-color-input.js +34 -0
  112. package/lib/components/style/form-label.js +30 -0
  113. package/lib/components/style/form-number-input.js +11 -22
  114. package/lib/components/style/form-number-input_2.js +209 -0
  115. package/lib/components/style/form-select.js +29 -0
  116. package/lib/components/style/form-slider.js +68 -0
  117. package/lib/components/style/form-submit-button.js +35 -0
  118. package/lib/components/style/form-text-input.js +78 -0
  119. package/lib/components/viewer2d/group.js +5 -4
  120. package/lib/components/viewer2d/item.js +41 -16
  121. package/lib/components/viewer2d/layer.js +1 -1
  122. package/lib/components/viewer2d/line.js +17 -47
  123. package/lib/components/viewer2d/ruler.js +4 -2
  124. package/lib/components/viewer2d/rulerDist.js +8 -7
  125. package/lib/components/viewer2d/rulerX.js +3 -0
  126. package/lib/components/viewer2d/rulerY.js +3 -0
  127. package/lib/components/viewer2d/scene.js +4 -1
  128. package/lib/components/viewer2d/state.js +1 -1
  129. package/lib/components/viewer2d/utils.js +2 -2
  130. package/lib/components/viewer2d/viewer2d.js +49 -81
  131. package/lib/components/viewer3d/scene-creator.js +49 -13
  132. package/lib/components/viewer3d/viewer3d-first-person.js +8 -0
  133. package/lib/components/viewer3d/viewer3d.js +77 -84
  134. package/lib/constants.js +11 -7
  135. package/lib/devLiteRenderer.js +489 -148
  136. package/lib/index.js +567 -25
  137. package/lib/models.js +2 -1
  138. package/lib/plugins/SVGLoader.js +1419 -0
  139. package/lib/plugins/console-debugger.js +0 -2
  140. package/lib/styles/export.js +13 -0
  141. package/lib/styles/tabs.css +40 -0
  142. package/lib/utils/geometry.js +52 -96
  143. package/lib/utils/helper.js +40 -1
  144. package/lib/utils/isolate-event-handler.js +781 -576
  145. package/lib/utils/molding.js +458 -9
  146. package/package.json +21 -16
  147. package/es/mocks/appliancePayload.json +0 -27
  148. package/es/mocks/cabinetPayload.json +0 -1914
  149. package/es/mocks/cabinetPayload2.json +0 -76
  150. package/es/mocks/dataBundle2.json +0 -4
  151. package/es/mocks/distancePayload.json +0 -6
  152. package/es/mocks/doorStylePayload2.json +0 -84
  153. package/es/mocks/furnishingPayload.json +0 -23
  154. package/es/mocks/itemCDSPayload.json +0 -27
  155. package/es/mocks/lightingPayload.json +0 -23
  156. package/es/mocks/mockProps.json +0 -43
  157. package/es/mocks/mockProps2.json +0 -9
  158. package/es/mocks/moldingPayload.json +0 -19
  159. package/es/mocks/projectItemsCatalog.json +0 -133
  160. package/es/mocks/rectangleShape.json +0 -238
  161. package/es/mocks/replaceCabinetPayload.json +0 -81
  162. package/es/mocks/roomShapePayload.json +0 -5
  163. package/es/useAppContext.js +0 -8
  164. package/lib/mocks/appliancePayload.json +0 -27
  165. package/lib/mocks/cabinetPayload.json +0 -1914
  166. package/lib/mocks/cabinetPayload2.json +0 -76
  167. package/lib/mocks/dataBundle2.json +0 -4
  168. package/lib/mocks/distancePayload.json +0 -6
  169. package/lib/mocks/doorStylePayload2.json +0 -84
  170. package/lib/mocks/furnishingPayload.json +0 -23
  171. package/lib/mocks/itemCDSPayload.json +0 -27
  172. package/lib/mocks/lightingPayload.json +0 -23
  173. package/lib/mocks/mockProps.json +0 -43
  174. package/lib/mocks/mockProps2.json +0 -9
  175. package/lib/mocks/moldingPayload.json +0 -19
  176. package/lib/mocks/projectItemsCatalog.json +0 -133
  177. package/lib/mocks/rectangleShape.json +0 -238
  178. package/lib/mocks/replaceCabinetPayload.json +0 -81
  179. package/lib/mocks/roomShapePayload.json +0 -5
  180. 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,72 +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
32
  var _export2 = require("./plugins/export");
31
- var _immutable = require("immutable");
32
- var Sentry = _interopRequireWildcard(require("@sentry/react"));
33
- var THREE = _interopRequireWildcard(require("three"));
34
33
  var _LiteKitchenConfigurator = _interopRequireDefault(require("./LiteKitchenConfigurator"));
35
- var _excluded = ["width", "height", "configData", "options", "user", "auth", "featureFlags", "sentry", "analytics", "externalEvent", "onInternalEvent", "onError"];
34
+ var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError"];
36
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); }
37
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; }
38
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; }
39
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)); }
40
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
41
- 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;
42
45
 
43
- /* ============================== component ============================= */
44
- var MyCatalog = new _catalog["default"]();
45
- var AppState = (0, _immutable.Map)({
46
- KitchenConfigurator: new _models.State()
47
- });
48
- console.log('Version: 378.45-202509_DIY-364-mbox-crash');
49
- isProduction && Sentry.init({
50
- dsn: process.env.SENTRY_DSN,
51
- environment: process.env.SENTRY_ENVIRONMENT
52
- });
53
-
54
- //define reducer
55
- var reducer = function reducer(state, action) {
56
- state = state || AppState;
57
- state = state.update('KitchenConfigurator', function (plannerState) {
58
- 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
59
57
  });
60
- return state;
61
- };
62
- var store = (0, _redux.createStore)(reducer, null, !isProduction && window.devToolsExtension ? window.devToolsExtension({
63
- features: {
64
- pause: true,
65
- // start/pause recording of dispatched actions
66
- lock: true,
67
- // lock/unlock dispatching actions and side effects
68
- persist: true,
69
- // persist states on page reloading
70
- "export": true,
71
- // export history of actions in a file
72
- "import": 'custom',
73
- // import history of actions from a file
74
- jump: true,
75
- // jump back and forth (time travelling)
76
- skip: true,
77
- // skip (cancel) actions
78
- reorder: true,
79
- // drag and drop actions in the history list
80
- dispatch: true,
81
- // dispatch custom actions or action creators
82
- test: true // generate tests for the selected actions
83
- },
84
- maxAge: 999999
85
- }) : function (f) {
86
- return f;
87
- });
88
- var plugins = [(0, _export2.Keyboard)(), (0, _export2.ConsoleDebugger)()];
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
+ }
89
68
  function serializeError(err) {
90
69
  try {
91
70
  if (!err) return {
@@ -102,19 +81,12 @@ function serializeError(err) {
102
81
  message: String(err),
103
82
  raw: safeJson(err)
104
83
  };
105
- } catch (_unused) {
84
+ } catch (_unused2) {
106
85
  return {
107
86
  message: 'Error serializing error'
108
87
  };
109
88
  }
110
89
  }
111
- function safeJson(v) {
112
- try {
113
- return JSON.parse(JSON.stringify(v));
114
- } catch (_unused2) {
115
- return undefined;
116
- }
117
- }
118
90
 
119
91
  /* ---------- Error Boundary that pushes into buffer ---------- */
120
92
  var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
@@ -142,35 +114,139 @@ var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
142
114
  }
143
115
  }]);
144
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
+ }
145
167
  function LiteRenderer(props) {
168
+ ensureSentryInit();
146
169
  var width = props.width,
147
170
  height = props.height,
148
171
  configData = props.configData,
149
- options = props.options,
150
- user = props.user,
151
- auth = props.auth,
152
- featureFlags = props.featureFlags,
153
- sentry = props.sentry,
154
- analytics = props.analytics,
155
172
  externalEvent = props.externalEvent,
156
173
  onInternalEvent = props.onInternalEvent,
157
174
  onError = props.onError,
158
175
  passThrough = (0, _objectWithoutProperties2["default"])(props, _excluded);
159
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
+
160
238
  /* ---------- track last external event ---------- */
161
239
  var lastExternalEventRef = (0, _react.useRef)(null);
162
240
  (0, _react.useEffect)(function () {
163
- if (externalEvent) {
164
- lastExternalEventRef.current = externalEvent;
165
- }
241
+ if (externalEvent) lastExternalEventRef.current = externalEvent;
166
242
  }, [externalEvent]);
167
243
 
168
244
  /* ---------- error buffer + last emitted bundle ---------- */
169
- var errorsBufferRef = (0, _react.useRef)([]); // pending errors (not yet emitted)
245
+ var errorsBufferRef = (0, _react.useRef)([]);
170
246
  var lastEmittedRef = (0, _react.useRef)({
171
247
  externalEvent: null,
172
248
  errors: []
173
- }); // last bundle we sent
249
+ });
174
250
  var flushTimerRef = (0, _react.useRef)(null);
175
251
  var emit = (0, _react.useCallback)(function (external, errors) {
176
252
  var payload = {
@@ -179,13 +255,11 @@ function LiteRenderer(props) {
179
255
  };
180
256
  try {
181
257
  onError === null || onError === void 0 || onError(payload);
182
- } catch (_unused3) {}
258
+ } catch (_unused5) {}
183
259
  // eslint-disable-next-line no-console
184
260
  console.debug('[LiteRenderer:onError]', payload);
185
261
  lastEmittedRef.current = payload;
186
262
  }, [onError]);
187
-
188
- // batch short bursts (e.g., multiple async errors in same tick)
189
263
  var scheduleFlush = (0, _react.useCallback)(function () {
190
264
  if (flushTimerRef.current) return;
191
265
  flushTimerRef.current = setTimeout(function () {
@@ -194,7 +268,7 @@ function LiteRenderer(props) {
194
268
  if (!errors.length) return;
195
269
  errorsBufferRef.current = [];
196
270
  emit(lastExternalEventRef.current, errors);
197
- }, 0); // micro-batch; increase (e.g. 50ms) if you want coarser batching
271
+ }, 0);
198
272
  }, [emit]);
199
273
  var pushError = (0, _react.useCallback)(function (errPayload) {
200
274
  errorsBufferRef.current.push(_objectSpread({
@@ -205,6 +279,7 @@ function LiteRenderer(props) {
205
279
 
206
280
  /* ---------- global runtime + async error capture ---------- */
207
281
  (0, _react.useEffect)(function () {
282
+ if (!isBrowser) return;
208
283
  var onWindowError = function onWindowError(event) {
209
284
  pushError({
210
285
  type: 'runtime-error',
@@ -236,64 +311,20 @@ function LiteRenderer(props) {
236
311
  var prev = prevExternalEventRef.current;
237
312
  if (prev === externalEvent) return;
238
313
  prevExternalEventRef.current = externalEvent;
239
-
240
- // if we already emitted something before, re-send it with the new event context
241
314
  var last = lastEmittedRef.current;
242
315
  if (last && last.errors && last.errors.length) {
243
316
  emit(lastExternalEventRef.current, last.errors);
244
317
  }
245
318
  }, [externalEvent, emit]);
246
- var id = configData.id,
247
- logoImg = configData.logoImg,
248
- companyUrl = configData.companyUrl;
249
- (0, _react.useEffect)(function () {
250
- var initMyCatalog = /*#__PURE__*/function () {
251
- var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
252
- var x, _x, _x2;
253
- return _regenerator["default"].wrap(function (_context) {
254
- while (1) switch (_context.prev = _context.next) {
255
- case 0:
256
- for (x in Areas) MyCatalog.registerElement(Areas[x]);
257
- for (_x in Lines) MyCatalog.registerElement(Lines[_x]);
258
- for (_x2 in Holes) MyCatalog.registerElement(Holes[_x2]);
259
- MyCatalog.registerCategory('Windows', 'Windows', [Holes.windowClear, Holes.windowCross, Holes.windowDoubleHung, Holes.windowVertical]);
260
- MyCatalog.registerCategory('Doors', 'Doors', [Holes.doorInterior, Holes.doorExterior, Holes.doorCloset, Holes.doorSliding, Holes.doorwayFramed, Holes.doorwayFrameless]);
261
- case 1:
262
- case "end":
263
- return _context.stop();
264
- }
265
- }, _callee);
266
- }));
267
- return function initMyCatalog() {
268
- return _ref.apply(this, arguments);
269
- };
270
- }();
271
- var initCatalog = /*#__PURE__*/function () {
272
- var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
273
- return _regenerator["default"].wrap(function (_context2) {
274
- while (1) switch (_context2.prev = _context2.next) {
275
- case 0:
276
- _context2.next = 1;
277
- return initMyCatalog();
278
- case 1:
279
- case "end":
280
- return _context2.stop();
281
- }
282
- }, _callee2);
283
- }));
284
- return function initCatalog() {
285
- return _ref2.apply(this, arguments);
286
- };
287
- }();
288
- initCatalog();
289
- // eslint-disable-next-line react-hooks/exhaustive-deps
290
- }, [id]);
291
- return /*#__PURE__*/_react["default"].createElement(_reactRedux.Provider, {
292
- 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
293
324
  }, /*#__PURE__*/_react["default"].createElement(ToolErrorBoundary, {
294
325
  pushError: pushError
295
326
  }, /*#__PURE__*/_react["default"].createElement(_LiteKitchenConfigurator["default"], (0, _extends2["default"])({
296
- catalog: MyCatalog,
327
+ catalog: catalogRef.current,
297
328
  width: width,
298
329
  height: height,
299
330
  logoImage: logoImg,
@@ -305,11 +336,8 @@ function LiteRenderer(props) {
305
336
  configData: configData,
306
337
  externalEvent: externalEvent,
307
338
  onInternalEvent: onInternalEvent
308
- }, passThrough))));
339
+ }, passThrough)))));
309
340
  }
310
-
311
- /* ============================== prop types ============================== */
312
-
313
341
  LiteRenderer.propTypes = {
314
342
  width: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
315
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
  },