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.
- package/es/LiteRenderer.js +37 -1
- package/es/WorkSpaceHostMimic.js +4 -0
- package/es/class/project.js +21 -8
- package/es/index.js +8 -1
- package/es/reducers/viewer2d-reducer.js +2 -0
- package/package.json +1 -1
package/es/LiteRenderer.js
CHANGED
|
@@ -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/WorkSpaceHostMimic.js
CHANGED
|
@@ -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,
|
package/es/class/project.js
CHANGED
|
@@ -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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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;
|