kitchen-simulator 7.0.9-react-18 → 7.0.10-react-18

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.
@@ -303,18 +303,19 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
303
303
  }, {
304
304
  key: "componentDidUpdate",
305
305
  value: function componentDidUpdate(prevProps) {
306
- var _extractedState$getIn2;
306
+ var _extractedState$getIn2, _extractedState$getIn3;
307
307
  var _this$props2 = this.props,
308
308
  externalEvent = _this$props2.externalEvent,
309
309
  extractedState = _this$props2.extractedState,
310
310
  projectActions = _this$props2.projectActions,
311
- catalog = _this$props2.catalog;
312
-
311
+ catalog = _this$props2.catalog,
312
+ onViewer2DChange = _this$props2.onViewer2DChange;
313
+ onViewer2DChange === null || onViewer2DChange === void 0 || onViewer2DChange(extractedState === null || extractedState === void 0 || (_extractedState$getIn2 = extractedState.getIn) === null || _extractedState$getIn2 === void 0 ? void 0 : _extractedState$getIn2.call(extractedState, ['viewer2D']).toJS());
313
314
  // same behavior: handle external event when it changes
314
315
  if (prevProps.externalEvent !== externalEvent) {
315
316
  handleExternalEvent(this.props);
316
317
  }
317
- var catalogReady = extractedState === null || extractedState === void 0 || (_extractedState$getIn2 = extractedState.getIn) === null || _extractedState$getIn2 === void 0 ? void 0 : _extractedState$getIn2.call(extractedState, ['catalog', 'ready']);
318
+ var catalogReady = extractedState === null || extractedState === void 0 || (_extractedState$getIn3 = extractedState.getIn) === null || _extractedState$getIn3 === void 0 ? void 0 : _extractedState$getIn3.call(extractedState, ['catalog', 'ready']);
318
319
  if (!catalogReady) projectActions.initCatalog(catalog);
319
320
  }
320
321
  }, {
@@ -25,14 +25,12 @@ import * as THREE from 'three';
25
25
  import * as Models from "./models";
26
26
  import { State } from "./models";
27
27
  import PlannerReducer from "./reducers/reducer";
28
- import AppContext from "./AppContext";
29
28
  import Catalog from "./catalog/catalog";
30
29
  import * as Areas from "./catalog/areas/area/planner-element";
31
30
  import * as Lines from "./catalog/lines/wall/planner-element";
32
31
  import * as Holes from "./catalog/holes/export";
33
32
  import { ConsoleDebugger, Keyboard } from "./plugins/export";
34
33
  import LiteKitchenConfigurator from "./LiteKitchenConfigurator";
35
- import { toPlainObject } from "../es/utils/helper";
36
34
  var isBrowser = typeof window !== 'undefined';
37
35
  if (isBrowser) window.THREE = THREE;
38
36
 
@@ -157,10 +155,6 @@ function createInstanceStore() {
157
155
  function createPlugins() {
158
156
  return [Keyboard(), ConsoleDebugger()];
159
157
  }
160
- function shallowEqualViewer(a, b) {
161
- if (!a || !b) return a === b;
162
- return a.a === b.a && a.d === b.d && a.e === b.e && a.f === b.f && a.viewerWidth === b.viewerWidth && a.viewerHeight === b.viewerHeight && a.SVGWidth === b.SVGWidth && a.SVGHeight === b.SVGHeight;
163
- }
164
158
  export default function LiteRenderer(props) {
165
159
  ensureSentryInit();
166
160
  var width = props.width,
@@ -183,36 +177,6 @@ export default function LiteRenderer(props) {
183
177
  // ✅ instance-scoped store (no module singleton)
184
178
  var storeRef = useRef(null);
185
179
  if (!storeRef.current) storeRef.current = createInstanceStore();
186
- var prevRef = useRef(null);
187
- useEffect(function () {
188
- var _state$viewer2D2, _state$get2;
189
- if (!onViewer2DChange) return;
190
- if (!storeRef.current) return;
191
-
192
- // you must have `store` in scope here (however LiteRenderer gets it)
193
- var unsub = storeRef.current.subscribe(function () {
194
- var _state$viewer2D, _state$get;
195
- var state = storeRef.current.getState();
196
-
197
- // viewer2D might be immutable or plain
198
- var viewer2D = toPlainObject((_state$viewer2D = state.viewer2D) !== null && _state$viewer2D !== void 0 ? _state$viewer2D : (_state$get = state.get) === null || _state$get === void 0 ? void 0 : _state$get.call(state, 'viewer2D'));
199
-
200
- // emit only when changed
201
- if (!shallowEqualViewer(prevRef.current, viewer2D)) {
202
- prevRef.current = viewer2D;
203
- onViewer2DChange(viewer2D);
204
- }
205
- });
206
-
207
- // emit once immediately
208
- var state = storeRef.current.getState();
209
- var viewer2D = toPlainObject((_state$viewer2D2 = state.viewer2D) !== null && _state$viewer2D2 !== void 0 ? _state$viewer2D2 : (_state$get2 = state.get) === null || _state$get2 === void 0 ? void 0 : _state$get2.call(state, 'viewer2D'));
210
- prevRef.current = viewer2D;
211
- onViewer2DChange(viewer2D);
212
- return function () {
213
- return unsub();
214
- };
215
- }, [onViewer2DChange]);
216
180
 
217
181
  // ✅ instance-scoped catalog (no module singleton)
218
182
  var catalogRef = useRef(null);
@@ -374,7 +338,8 @@ export default function LiteRenderer(props) {
374
338
  },
375
339
  configData: configData,
376
340
  externalEvent: externalEvent,
377
- onInternalEvent: onInternalEvent
341
+ onInternalEvent: onInternalEvent,
342
+ onViewer2DChange: onViewer2DChange
378
343
  }, passThrough))));
379
344
  }
380
345
  LiteRenderer.propTypes = {
@@ -190,4 +190,8 @@ export var isWarningItem = function isWarningItem(item) {
190
190
  if (item.category === 'cabinet') return !(item !== null && item !== void 0 && (_item$toJS$doorStyle = item.toJS().doorStyle) !== null && _item$toJS$doorStyle !== void 0 && (_item$toJS$doorStyle = _item$toJS$doorStyle.doorStyles) !== null && _item$toJS$doorStyle !== void 0 && (_item$toJS$doorStyle = _item$toJS$doorStyle.cds) !== null && _item$toJS$doorStyle !== void 0 && _item$toJS$doorStyle.filter(function (cd) {
191
191
  return cd.itemID == (item === null || item === void 0 ? void 0 : item.getIn(['itemID']));
192
192
  }).length) > 0;else return false;
193
- };
193
+ };
194
+ export function shallowEqualViewer(a, b) {
195
+ if (!a || !b) return a === b;
196
+ return a.a === b.a && a.d === b.d && a.e === b.e && a.f === b.f && a.viewerWidth === b.viewerWidth && a.viewerHeight === b.viewerHeight && a.SVGWidth === b.SVGWidth && a.SVGHeight === b.SVGHeight;
197
+ }
package/es/index.js CHANGED
@@ -15,6 +15,7 @@ import React from 'react';
15
15
  import * as Three from 'three';
16
16
  import LiteRenderer from "./LiteRenderer";
17
17
  import { createRoot } from 'react-dom/client';
18
+ import { shallowEqualViewer } from "./components/viewer2d/utils";
18
19
  var ROOT_KEY = '__kitchenSimulatorRoot__';
19
20
  var API_KEY = '__kitchenSimulatorApi__';
20
21
  function nextFrame() {
@@ -551,7 +552,9 @@ export function renderKitchenSimulator(container) {
551
552
  return /*#__PURE__*/React.createElement(LiteRenderer, _extends({}, this.props, {
552
553
  externalEvent: this.state.externalEvent,
553
554
  onViewer2DChange: function onViewer2DChange(v) {
554
- latestViewer2D = v;
555
+ if (!shallowEqualViewer(v, latestViewer2D)) {
556
+ latestViewer2D = v;
557
+ }
555
558
  }
556
559
  }));
557
560
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "7.0.9-react-18",
3
+ "version": "7.0.10-react-18",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "module": "es/index.js",