kitchen-simulator 7.0.7-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);
@@ -38,6 +38,10 @@ export default function WorkSpaceHostMimic() {
38
38
  var _api$__render;
39
39
  var api = apiRef.current;
40
40
  if (!api) return;
41
+ console.log({
42
+ width: window.innerWidth,
43
+ height: window.innerHeight
44
+ });
41
45
  (_api$__render = api.__render) === null || _api$__render === void 0 || _api$__render.call(api, {
42
46
  width: window.innerWidth,
43
47
  height: window.innerHeight,
@@ -145,14 +145,26 @@ var Project = /*#__PURE__*/function () {
145
145
  var h = bb.maxY - bb.minY;
146
146
  if (w != 0 && Math.abs(w) != Infinity && h != 0 && Math.abs(h) != Infinity) {
147
147
  a = viewer.viewerHeight < h ? viewer.viewerHeight / h : (viewer.viewerHeight / h * 3 / 5 - 0.5) / constants.ZOOM_VARIABLE > 400 ? viewer.viewerHeight / h * 400 / ((viewer.viewerHeight / h - 0.5) / constants.ZOOM_VARIABLE) : viewer.viewerHeight / h * 3 / 5;
148
- e = (viewer.viewerWidth - (bb.maxX + bb.minX) * a) / 2;
149
- f = (viewer.viewerHeight - (viewer.SVGHeight * 2 - bb.maxY - bb.minY) * a) / 2;
150
- var maxE = 10;
151
- var minE = viewer.viewerWidth - (a * viewer.SVGWidth + 10);
152
- e = Math.min(maxE, Math.max(minE, e));
153
- var maxF = 80;
154
- var minF = viewer.viewerHeight - (a * viewer.SVGHeight + 10);
155
- f = Math.min(maxF, Math.max(minF, f));
148
+ var scaledWidth = a * viewer.SVGWidth;
149
+ var scaledHeight = a * viewer.SVGHeight;
150
+
151
+ // Horizontal
152
+ if (scaledWidth <= viewer.viewerWidth) {
153
+ e = (viewer.viewerWidth - scaledWidth) / 2;
154
+ } else {
155
+ var maxE = 10;
156
+ var minE = viewer.viewerWidth - (scaledWidth + 10);
157
+ e = Math.min(maxE, Math.max(minE, e));
158
+ }
159
+
160
+ // Vertical
161
+ if (scaledHeight <= viewer.viewerHeight) {
162
+ f = (viewer.viewerHeight - scaledHeight) / 2;
163
+ } else {
164
+ var maxF = 80;
165
+ var minF = viewer.viewerHeight - (scaledHeight + 10);
166
+ f = Math.min(maxF, Math.max(minF, f));
167
+ }
156
168
  _viewer2D = _viewer2D.merge({
157
169
  a: a,
158
170
  d: a,
@@ -171,6 +183,7 @@ var Project = /*#__PURE__*/function () {
171
183
  doorStyle: doorStyle,
172
184
  viewer2D: _viewer2D
173
185
  });
186
+ state = centering2D(state, viewer2DActions);
174
187
  state = Item.setCounterTop(state, counterTop).updatedState;
175
188
  state = Area.setFloorStyles(state, floorStyle).updatedState;
176
189
  this.updateZoomScale(state, a);
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();
@@ -1,5 +1,7 @@
1
1
  import { CHANGE_BASE_CABINET_MEASURE, CHANGE_WALL_CABINET_MEASURE, CHANGE_WALL_LENGTH_MEASURE, CHANGE_WINDOW_DOOR_MEASURE, MODE_2D_PAN, MODE_2D_ZOOM_IN, MODE_2D_ZOOM_OUT, SELECT_TOOL_PAN, SELECT_TOOL_ZOOM_IN, SELECT_TOOL_ZOOM_OUT, UPDATE_2D_CAMERA, UPDATE_CEIL_HEIGHT, UPDATE_CEIL_HEIGHT_UNIT } from "../constants";
2
2
  import { convert } from "../utils/convert-units-lite";
3
+ import { centering2D } from "../utils/helper";
4
+ import * as viewer2DActions from "../actions/viewer2d-actions";
3
5
  export default function (state, action) {
4
6
  var _state = state,
5
7
  scene = _state.scene;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitchen-simulator",
3
- "version": "7.0.7-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",