kitchen-simulator 7.0.8-react-18 → 7.0.9-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.
@@ -6,7 +6,7 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
6
6
  import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
8
8
  import _inherits from "@babel/runtime/helpers/esm/inherits";
9
- var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError"];
9
+ var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError", "onViewer2DChange"];
10
10
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
11
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
12
  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; } } }; }
@@ -32,6 +32,7 @@ import * as Lines from "./catalog/lines/wall/planner-element";
32
32
  import * as Holes from "./catalog/holes/export";
33
33
  import { ConsoleDebugger, Keyboard } from "./plugins/export";
34
34
  import LiteKitchenConfigurator from "./LiteKitchenConfigurator";
35
+ import { toPlainObject } from "../es/utils/helper";
35
36
  var isBrowser = typeof window !== 'undefined';
36
37
  if (isBrowser) window.THREE = THREE;
37
38
 
@@ -156,6 +157,10 @@ function createInstanceStore() {
156
157
  function createPlugins() {
157
158
  return [Keyboard(), ConsoleDebugger()];
158
159
  }
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
+ }
159
164
  export default function LiteRenderer(props) {
160
165
  ensureSentryInit();
161
166
  var width = props.width,
@@ -164,6 +169,7 @@ export default function LiteRenderer(props) {
164
169
  externalEvent = props.externalEvent,
165
170
  onInternalEvent = props.onInternalEvent,
166
171
  onError = props.onError,
172
+ onViewer2DChange = props.onViewer2DChange,
167
173
  passThrough = _objectWithoutProperties(props, _excluded);
168
174
  useEffect(function () {
169
175
  return function () {
@@ -177,6 +183,36 @@ export default function LiteRenderer(props) {
177
183
  // ✅ instance-scoped store (no module singleton)
178
184
  var storeRef = useRef(null);
179
185
  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]);
180
216
 
181
217
  // ✅ instance-scoped catalog (no module singleton)
182
218
  var catalogRef = useRef(null);
package/es/index.js CHANGED
@@ -368,6 +368,7 @@ export function renderKitchenSimulator(container) {
368
368
 
369
369
  // ✅ Reuse root
370
370
  var root = container[ROOT_KEY];
371
+ var latestViewer2D = null;
371
372
  if (!root) {
372
373
  root = createRoot(container);
373
374
  container[ROOT_KEY] = root;
@@ -548,7 +549,10 @@ export function renderKitchenSimulator(container) {
548
549
  key: "render",
549
550
  value: function render() {
550
551
  return /*#__PURE__*/React.createElement(LiteRenderer, _extends({}, this.props, {
551
- externalEvent: this.state.externalEvent
552
+ externalEvent: this.state.externalEvent,
553
+ onViewer2DChange: function onViewer2DChange(v) {
554
+ latestViewer2D = v;
555
+ }
552
556
  }));
553
557
  }
554
558
  }]);
@@ -557,6 +561,9 @@ export function renderKitchenSimulator(container) {
557
561
  __render: function __render(nextProps) {
558
562
  root.render(/*#__PURE__*/React.createElement(Wrapper, nextProps));
559
563
  },
564
+ getViewer2D: function getViewer2D() {
565
+ return latestViewer2D;
566
+ },
560
567
  // ✅ host can query current inFlight
561
568
  getGltfInFlight: function getGltfInFlight() {
562
569
  return gltfTracker.getInFlight();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "7.0.8-react-18",
3
+ "version": "7.0.9-react-18",
4
4
  "description": "It is a kitchen simulator (self-contained micro-frontend).",
5
5
  "license": "MIT",
6
6
  "module": "es/index.js",