kitchen-simulator 3.14.0 → 3.16.0-test-renderer-fix
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/LiteKitchenConfigurator.js +111 -88
- package/es/LiteRenderer.js +162 -130
- package/es/assets/gltf/door_sliding.bin +0 -0
- package/es/class/project.js +79 -76
- package/es/components/viewer2d/ruler.js +2 -1
- package/es/components/viewer3d/scene-creator.js +12 -7
- package/es/components/viewer3d/viewer3d.js +1 -0
- package/es/constants.js +1 -0
- package/es/devLiteRenderer.js +98 -0
- package/es/index.js +1 -1
- package/es/utils/isolate-event-handler.js +17 -29
- package/lib/LiteKitchenConfigurator.js +111 -89
- package/lib/LiteRenderer.js +161 -130
- package/lib/assets/gltf/door_sliding.bin +0 -0
- package/lib/class/project.js +79 -76
- package/lib/components/viewer2d/ruler.js +2 -1
- package/lib/components/viewer3d/scene-creator.js +12 -7
- package/lib/components/viewer3d/viewer3d.js +1 -0
- package/lib/constants.js +1 -0
- package/lib/devLiteRenderer.js +98 -0
- package/lib/index.js +1 -1
- package/lib/utils/isolate-event-handler.js +17 -29
- package/package.json +1 -1
package/lib/LiteRenderer.js
CHANGED
|
@@ -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,75 +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"));
|
|
26
27
|
var _AppContext = _interopRequireDefault(require("./AppContext"));
|
|
27
28
|
var _catalog = _interopRequireDefault(require("./catalog/catalog"));
|
|
28
|
-
var _SVGLoader = require("three/addons/loaders/SVGLoader");
|
|
29
|
-
var _constants = require("./constants");
|
|
30
29
|
var Areas = _interopRequireWildcard(require("./catalog/areas/area/planner-element"));
|
|
31
30
|
var Lines = _interopRequireWildcard(require("./catalog/lines/wall/planner-element"));
|
|
32
31
|
var Holes = _interopRequireWildcard(require("./catalog/holes/export"));
|
|
33
32
|
var _export2 = require("./plugins/export");
|
|
34
|
-
var _immutable = require("immutable");
|
|
35
|
-
var Sentry = _interopRequireWildcard(require("@sentry/react"));
|
|
36
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
37
33
|
var _LiteKitchenConfigurator = _interopRequireDefault(require("./LiteKitchenConfigurator"));
|
|
38
|
-
var _excluded = ["width", "height", "configData", "
|
|
34
|
+
var _excluded = ["width", "height", "configData", "externalEvent", "onInternalEvent", "onError"];
|
|
39
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); }
|
|
40
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; }
|
|
41
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; }
|
|
42
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)); }
|
|
43
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
/* ============================== component ============================= */
|
|
47
|
-
var MyCatalog = new _catalog["default"]();
|
|
48
|
-
var AppState = (0, _immutable.Map)({
|
|
49
|
-
KitchenConfigurator: new _models.State()
|
|
50
|
-
});
|
|
51
|
-
console.log('Version: 378.45-202509_DIY-364-mbox-crash');
|
|
52
|
-
isProduction && Sentry.init({
|
|
53
|
-
dsn: process.env.SENTRY_DSN,
|
|
54
|
-
environment: process.env.SENTRY_ENVIRONMENT
|
|
55
|
-
});
|
|
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;
|
|
56
45
|
|
|
57
|
-
//
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
46
|
+
// ---- Sentry init: keep behavior but avoid re-init on multiple mounts ----
|
|
47
|
+
var __sentryInited = false;
|
|
48
|
+
function ensureSentryInit() {
|
|
49
|
+
// assumes isProduction is defined in your build env like before
|
|
50
|
+
if (!isBrowser) return;
|
|
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
|
|
62
57
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"export": true,
|
|
74
|
-
// export history of actions in a file
|
|
75
|
-
"import": 'custom',
|
|
76
|
-
// import history of actions from a file
|
|
77
|
-
jump: true,
|
|
78
|
-
// jump back and forth (time travelling)
|
|
79
|
-
skip: true,
|
|
80
|
-
// skip (cancel) actions
|
|
81
|
-
reorder: true,
|
|
82
|
-
// drag and drop actions in the history list
|
|
83
|
-
dispatch: true,
|
|
84
|
-
// dispatch custom actions or action creators
|
|
85
|
-
test: true // generate tests for the selected actions
|
|
86
|
-
},
|
|
87
|
-
maxAge: 999999
|
|
88
|
-
}) : function (f) {
|
|
89
|
-
return f;
|
|
90
|
-
});
|
|
91
|
-
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
|
+
}
|
|
92
68
|
function serializeError(err) {
|
|
93
69
|
try {
|
|
94
70
|
if (!err) return {
|
|
@@ -105,19 +81,12 @@ function serializeError(err) {
|
|
|
105
81
|
message: String(err),
|
|
106
82
|
raw: safeJson(err)
|
|
107
83
|
};
|
|
108
|
-
} catch (
|
|
84
|
+
} catch (_unused2) {
|
|
109
85
|
return {
|
|
110
86
|
message: 'Error serializing error'
|
|
111
87
|
};
|
|
112
88
|
}
|
|
113
89
|
}
|
|
114
|
-
function safeJson(v) {
|
|
115
|
-
try {
|
|
116
|
-
return JSON.parse(JSON.stringify(v));
|
|
117
|
-
} catch (_unused2) {
|
|
118
|
-
return undefined;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
90
|
|
|
122
91
|
/* ---------- Error Boundary that pushes into buffer ---------- */
|
|
123
92
|
var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
@@ -145,35 +114,144 @@ var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
145
114
|
}
|
|
146
115
|
}]);
|
|
147
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
|
+
// keep your initial state semantics identical
|
|
137
|
+
var AppState = (0, _immutable.Map)({
|
|
138
|
+
KitchenConfigurator: new _models.State()
|
|
139
|
+
});
|
|
140
|
+
var reducer = function reducer(state, action) {
|
|
141
|
+
state = state || AppState;
|
|
142
|
+
return state.update('KitchenConfigurator', function (plannerState) {
|
|
143
|
+
return (0, _reducer["default"])(plannerState, action);
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// keep devtools behavior identical; guard against missing window
|
|
148
|
+
var enhancer = !isProduction && isBrowser && window.devToolsExtension ? window.devToolsExtension({
|
|
149
|
+
features: {
|
|
150
|
+
pause: true,
|
|
151
|
+
lock: true,
|
|
152
|
+
persist: true,
|
|
153
|
+
"export": true,
|
|
154
|
+
"import": 'custom',
|
|
155
|
+
jump: true,
|
|
156
|
+
skip: true,
|
|
157
|
+
reorder: true,
|
|
158
|
+
dispatch: true,
|
|
159
|
+
test: true
|
|
160
|
+
},
|
|
161
|
+
maxAge: 999999
|
|
162
|
+
}) : function (f) {
|
|
163
|
+
return f;
|
|
164
|
+
};
|
|
165
|
+
return (0, _redux.createStore)(reducer, null, enhancer);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// ----------------- plugins -----------------
|
|
169
|
+
function createPlugins() {
|
|
170
|
+
return [(0, _export2.Keyboard)(), (0, _export2.ConsoleDebugger)()];
|
|
171
|
+
}
|
|
148
172
|
function LiteRenderer(props) {
|
|
173
|
+
ensureSentryInit();
|
|
149
174
|
var width = props.width,
|
|
150
175
|
height = props.height,
|
|
151
176
|
configData = props.configData,
|
|
152
|
-
options = props.options,
|
|
153
|
-
user = props.user,
|
|
154
|
-
auth = props.auth,
|
|
155
|
-
featureFlags = props.featureFlags,
|
|
156
|
-
sentry = props.sentry,
|
|
157
|
-
analytics = props.analytics,
|
|
158
177
|
externalEvent = props.externalEvent,
|
|
159
178
|
onInternalEvent = props.onInternalEvent,
|
|
160
179
|
onError = props.onError,
|
|
161
180
|
passThrough = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
162
181
|
|
|
182
|
+
// ---- instance-scoped store + catalog (no module-level globals) ----
|
|
183
|
+
var storeRef = (0, _react.useRef)(null);
|
|
184
|
+
if (!storeRef.current) storeRef.current = createInstanceStore();
|
|
185
|
+
var catalogRef = (0, _react.useRef)(null);
|
|
186
|
+
if (!catalogRef.current) {
|
|
187
|
+
catalogRef.current = new _catalog["default"]();
|
|
188
|
+
initCatalogOnce(catalogRef.current);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// ---- plugins init once per instance + cleanup support ----
|
|
192
|
+
var pluginCleanupsRef = (0, _react.useRef)([]);
|
|
193
|
+
var plugins = (0, _react.useMemo)(function () {
|
|
194
|
+
return createPlugins();
|
|
195
|
+
}, []); // stable
|
|
196
|
+
|
|
197
|
+
(0, _react.useEffect)(function () {
|
|
198
|
+
var store = storeRef.current;
|
|
199
|
+
var stateExtractor = function stateExtractor(state) {
|
|
200
|
+
return state.get('KitchenConfigurator');
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
// plugins may or may not return cleanup; support both
|
|
204
|
+
var cleanups = [];
|
|
205
|
+
var _iterator = _createForOfIteratorHelper(plugins),
|
|
206
|
+
_step;
|
|
207
|
+
try {
|
|
208
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
209
|
+
var p = _step.value;
|
|
210
|
+
try {
|
|
211
|
+
var maybeCleanup = p === null || p === void 0 ? void 0 : p(store, stateExtractor);
|
|
212
|
+
if (typeof maybeCleanup === 'function') cleanups.push(maybeCleanup);
|
|
213
|
+
} catch (e) {
|
|
214
|
+
// keep behavior: don't crash; send to onError buffer
|
|
215
|
+
// (actual emitting is handled below)
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
} catch (err) {
|
|
219
|
+
_iterator.e(err);
|
|
220
|
+
} finally {
|
|
221
|
+
_iterator.f();
|
|
222
|
+
}
|
|
223
|
+
pluginCleanupsRef.current = cleanups;
|
|
224
|
+
return function () {
|
|
225
|
+
var _iterator2 = _createForOfIteratorHelper(pluginCleanupsRef.current),
|
|
226
|
+
_step2;
|
|
227
|
+
try {
|
|
228
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
229
|
+
var fn = _step2.value;
|
|
230
|
+
try {
|
|
231
|
+
fn();
|
|
232
|
+
} catch (_unused3) {}
|
|
233
|
+
}
|
|
234
|
+
} catch (err) {
|
|
235
|
+
_iterator2.e(err);
|
|
236
|
+
} finally {
|
|
237
|
+
_iterator2.f();
|
|
238
|
+
}
|
|
239
|
+
pluginCleanupsRef.current = [];
|
|
240
|
+
};
|
|
241
|
+
}, [plugins]);
|
|
242
|
+
|
|
163
243
|
/* ---------- track last external event ---------- */
|
|
164
244
|
var lastExternalEventRef = (0, _react.useRef)(null);
|
|
165
245
|
(0, _react.useEffect)(function () {
|
|
166
|
-
if (externalEvent)
|
|
167
|
-
lastExternalEventRef.current = externalEvent;
|
|
168
|
-
}
|
|
246
|
+
if (externalEvent) lastExternalEventRef.current = externalEvent;
|
|
169
247
|
}, [externalEvent]);
|
|
170
248
|
|
|
171
249
|
/* ---------- error buffer + last emitted bundle ---------- */
|
|
172
|
-
var errorsBufferRef = (0, _react.useRef)([]);
|
|
250
|
+
var errorsBufferRef = (0, _react.useRef)([]);
|
|
173
251
|
var lastEmittedRef = (0, _react.useRef)({
|
|
174
252
|
externalEvent: null,
|
|
175
253
|
errors: []
|
|
176
|
-
});
|
|
254
|
+
});
|
|
177
255
|
var flushTimerRef = (0, _react.useRef)(null);
|
|
178
256
|
var emit = (0, _react.useCallback)(function (external, errors) {
|
|
179
257
|
var payload = {
|
|
@@ -182,13 +260,12 @@ function LiteRenderer(props) {
|
|
|
182
260
|
};
|
|
183
261
|
try {
|
|
184
262
|
onError === null || onError === void 0 || onError(payload);
|
|
185
|
-
} catch (
|
|
263
|
+
} catch (_unused4) {}
|
|
264
|
+
// keep your debug
|
|
186
265
|
// eslint-disable-next-line no-console
|
|
187
266
|
console.debug('[LiteRenderer:onError]', payload);
|
|
188
267
|
lastEmittedRef.current = payload;
|
|
189
268
|
}, [onError]);
|
|
190
|
-
|
|
191
|
-
// batch short bursts (e.g., multiple async errors in same tick)
|
|
192
269
|
var scheduleFlush = (0, _react.useCallback)(function () {
|
|
193
270
|
if (flushTimerRef.current) return;
|
|
194
271
|
flushTimerRef.current = setTimeout(function () {
|
|
@@ -197,7 +274,7 @@ function LiteRenderer(props) {
|
|
|
197
274
|
if (!errors.length) return;
|
|
198
275
|
errorsBufferRef.current = [];
|
|
199
276
|
emit(lastExternalEventRef.current, errors);
|
|
200
|
-
}, 0);
|
|
277
|
+
}, 0);
|
|
201
278
|
}, [emit]);
|
|
202
279
|
var pushError = (0, _react.useCallback)(function (errPayload) {
|
|
203
280
|
errorsBufferRef.current.push(_objectSpread({
|
|
@@ -208,6 +285,7 @@ function LiteRenderer(props) {
|
|
|
208
285
|
|
|
209
286
|
/* ---------- global runtime + async error capture ---------- */
|
|
210
287
|
(0, _react.useEffect)(function () {
|
|
288
|
+
if (!isBrowser) return;
|
|
211
289
|
var onWindowError = function onWindowError(event) {
|
|
212
290
|
pushError({
|
|
213
291
|
type: 'runtime-error',
|
|
@@ -239,64 +317,20 @@ function LiteRenderer(props) {
|
|
|
239
317
|
var prev = prevExternalEventRef.current;
|
|
240
318
|
if (prev === externalEvent) return;
|
|
241
319
|
prevExternalEventRef.current = externalEvent;
|
|
242
|
-
|
|
243
|
-
// if we already emitted something before, re-send it with the new event context
|
|
244
320
|
var last = lastEmittedRef.current;
|
|
245
321
|
if (last && last.errors && last.errors.length) {
|
|
246
322
|
emit(lastExternalEventRef.current, last.errors);
|
|
247
323
|
}
|
|
248
324
|
}, [externalEvent, emit]);
|
|
249
|
-
var
|
|
250
|
-
logoImg =
|
|
251
|
-
companyUrl =
|
|
252
|
-
(0, _react.useEffect)(function () {
|
|
253
|
-
var initMyCatalog = /*#__PURE__*/function () {
|
|
254
|
-
var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
255
|
-
var x, _x, _x2;
|
|
256
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
257
|
-
while (1) switch (_context.prev = _context.next) {
|
|
258
|
-
case 0:
|
|
259
|
-
for (x in Areas) MyCatalog.registerElement(Areas[x]);
|
|
260
|
-
for (_x in Lines) MyCatalog.registerElement(Lines[_x]);
|
|
261
|
-
for (_x2 in Holes) MyCatalog.registerElement(Holes[_x2]);
|
|
262
|
-
MyCatalog.registerCategory('Windows', 'Windows', [Holes.windowClear, Holes.windowCross, Holes.windowDoubleHung, Holes.windowVertical]);
|
|
263
|
-
MyCatalog.registerCategory('Doors', 'Doors', [Holes.doorInterior, Holes.doorExterior, Holes.doorCloset, Holes.doorSliding, Holes.doorwayFramed, Holes.doorwayFrameless]);
|
|
264
|
-
case 1:
|
|
265
|
-
case "end":
|
|
266
|
-
return _context.stop();
|
|
267
|
-
}
|
|
268
|
-
}, _callee);
|
|
269
|
-
}));
|
|
270
|
-
return function initMyCatalog() {
|
|
271
|
-
return _ref.apply(this, arguments);
|
|
272
|
-
};
|
|
273
|
-
}();
|
|
274
|
-
var initCatalog = /*#__PURE__*/function () {
|
|
275
|
-
var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
276
|
-
return _regenerator["default"].wrap(function (_context2) {
|
|
277
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
278
|
-
case 0:
|
|
279
|
-
_context2.next = 1;
|
|
280
|
-
return initMyCatalog();
|
|
281
|
-
case 1:
|
|
282
|
-
case "end":
|
|
283
|
-
return _context2.stop();
|
|
284
|
-
}
|
|
285
|
-
}, _callee2);
|
|
286
|
-
}));
|
|
287
|
-
return function initCatalog() {
|
|
288
|
-
return _ref2.apply(this, arguments);
|
|
289
|
-
};
|
|
290
|
-
}();
|
|
291
|
-
initCatalog();
|
|
292
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
293
|
-
}, [id]);
|
|
325
|
+
var _ref = configData || {},
|
|
326
|
+
logoImg = _ref.logoImg,
|
|
327
|
+
companyUrl = _ref.companyUrl;
|
|
294
328
|
return /*#__PURE__*/_react["default"].createElement(_AppContext["default"].Provider, null, /*#__PURE__*/_react["default"].createElement(_reactRedux.Provider, {
|
|
295
|
-
store:
|
|
329
|
+
store: storeRef.current
|
|
296
330
|
}, /*#__PURE__*/_react["default"].createElement(ToolErrorBoundary, {
|
|
297
331
|
pushError: pushError
|
|
298
332
|
}, /*#__PURE__*/_react["default"].createElement(_LiteKitchenConfigurator["default"], (0, _extends2["default"])({
|
|
299
|
-
catalog:
|
|
333
|
+
catalog: catalogRef.current,
|
|
300
334
|
width: width,
|
|
301
335
|
height: height,
|
|
302
336
|
logoImage: logoImg,
|
|
@@ -310,9 +344,6 @@ function LiteRenderer(props) {
|
|
|
310
344
|
onInternalEvent: onInternalEvent
|
|
311
345
|
}, passThrough)))));
|
|
312
346
|
}
|
|
313
|
-
|
|
314
|
-
/* ============================== prop types ============================== */
|
|
315
|
-
|
|
316
347
|
LiteRenderer.propTypes = {
|
|
317
348
|
width: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
|
|
318
349
|
height: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
|
|
Binary file
|
package/lib/class/project.js
CHANGED
|
@@ -847,85 +847,88 @@ var Project = exports["default"] = /*#__PURE__*/function () {
|
|
|
847
847
|
state = state.merge({
|
|
848
848
|
catalog: catalog
|
|
849
849
|
});
|
|
850
|
-
var _viewer2D = state.viewer2D;
|
|
851
|
-
var viewer = _viewer2D.toJS();
|
|
852
|
-
width = (0, _convertUnitsLite.convert)(width).from(state.getIn(['scene', 'layers', 'layer-1', 'unit'])).to('cm');
|
|
853
|
-
height = (0, _convertUnitsLite.convert)(height).from(state.getIn(['scene', 'layers', 'layer-1', 'unit'])).to('cm');
|
|
854
|
-
var layerID = state.scene.selectedLayer;
|
|
855
850
|
state = _export2.Item.setInitialDoorStyle(state, doorStyle).updatedState;
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
851
|
+
var layerID = state.scene.selectedLayer;
|
|
852
|
+
if (roomShapeType !== constants.ROOM_SHAPE_TYPE.CUSTOM && !(0, _helper.isEmpty)(width) && !(0, _helper.isEmpty)(height) && width !== 0 && height !== 0) {
|
|
853
|
+
var _viewer2D = state.viewer2D;
|
|
854
|
+
var viewer = _viewer2D.toJS();
|
|
855
|
+
if ((0, _helper.isEmpty)(viewer)) return {
|
|
856
|
+
updatedState: state
|
|
857
|
+
};
|
|
858
|
+
width = (0, _convertUnitsLite.convert)(width).from(state.getIn(['scene', 'layers', 'layer-1', 'unit'])).to('cm');
|
|
859
|
+
height = (0, _convertUnitsLite.convert)(height).from(state.getIn(['scene', 'layers', 'layer-1', 'unit'])).to('cm');
|
|
860
|
+
var halfWidth = width / 2;
|
|
861
|
+
var halfHeight = height / 2;
|
|
862
|
+
var viewerWidth = viewer.SVGWidth;
|
|
863
|
+
var viewerHeight = viewer.SVGHeight;
|
|
864
|
+
var centerPos = {
|
|
865
|
+
x: viewerWidth / 2,
|
|
866
|
+
y: viewerHeight / 2
|
|
867
|
+
};
|
|
868
|
+
var vtLB = {
|
|
869
|
+
x: centerPos.x - halfWidth,
|
|
870
|
+
y: centerPos.y - halfHeight
|
|
871
|
+
};
|
|
872
|
+
var vtRB = {
|
|
873
|
+
x: centerPos.x + halfWidth,
|
|
874
|
+
y: centerPos.y - halfHeight
|
|
875
|
+
};
|
|
876
|
+
var vtRT = {
|
|
877
|
+
x: centerPos.x + halfWidth,
|
|
878
|
+
y: centerPos.y + halfHeight
|
|
879
|
+
};
|
|
880
|
+
var vtLT = {
|
|
881
|
+
x: centerPos.x - halfWidth,
|
|
882
|
+
y: centerPos.y + halfHeight
|
|
883
|
+
};
|
|
884
|
+
var vertices = [];
|
|
885
|
+
switch (roomShapeType) {
|
|
886
|
+
case 'rectangle':
|
|
887
|
+
vertices = [vtLB, vtLT, vtRT, vtRB];
|
|
888
|
+
break;
|
|
889
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_RIGHT_BOTTOM:
|
|
890
|
+
vertices = [vtLB, vtRB, vtRT];
|
|
891
|
+
break;
|
|
892
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_RIGHT_TOP:
|
|
893
|
+
vertices = [vtRB, vtRT, vtLT];
|
|
894
|
+
break;
|
|
895
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_LEFT_TOP:
|
|
896
|
+
vertices = [vtRT, vtLT, vtLB];
|
|
897
|
+
break;
|
|
898
|
+
case constants.ROOM_SHAPE_TYPE.TWO_WALLS_LEFT_BOTTOM:
|
|
899
|
+
vertices = [vtLT, vtLB, vtRB];
|
|
900
|
+
break;
|
|
901
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_LEFT_TOP_RIGHT:
|
|
902
|
+
vertices = [vtRB, vtRT, vtLT, vtLB];
|
|
903
|
+
break;
|
|
904
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_TOP_RIGHT_BOTTOM:
|
|
905
|
+
vertices = [vtLB, vtRB, vtRT, vtLT];
|
|
906
|
+
break;
|
|
907
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_RIGHT_BOTTOM_LEFT:
|
|
908
|
+
vertices = [vtLT, vtLB, vtRB, vtRT];
|
|
909
|
+
break;
|
|
910
|
+
case constants.ROOM_SHAPE_TYPE.THREE_WALLS_BOTTOM_LEFT_TOP:
|
|
911
|
+
vertices = [vtRT, vtLT, vtLB, vtRB];
|
|
912
|
+
break;
|
|
913
|
+
}
|
|
914
|
+
for (var i = 0; i < vertices.length - 1; i++) {
|
|
915
|
+
state = _export2.Line.create(state, layerID, 'wall', vertices[i].x, vertices[i].y, vertices[i + 1].x, vertices[i + 1].y).updatedState;
|
|
916
|
+
}
|
|
917
|
+
if (roomShapeType === constants.ROOM_SHAPE_TYPE.RECTANGLE) {
|
|
918
|
+
state = _export2.Line.create(state, layerID, 'wall', vertices[vertices.length - 1].x, vertices[vertices.length - 1].y, vertices[0].x, vertices[0].y).updatedState;
|
|
919
|
+
}
|
|
920
|
+
var layer = state.getIn(['scene', 'layers', layerID]);
|
|
921
|
+
var lines = layer.getIn(['lines']).toJS();
|
|
922
|
+
var drawingInfo = {};
|
|
923
|
+
var lineKey = Object.keys(lines);
|
|
924
|
+
for (var _i = 0; _i < lineKey.length; _i++) {
|
|
925
|
+
if (!(0, _helper.isEmpty)(lineKey)) {
|
|
926
|
+
drawingInfo.drawingLine = layer.getIn(['lines', lineKey[_i]]);
|
|
927
|
+
}
|
|
928
|
+
state = _export2.Layer.detectAndUpdateAreas(state, layerID, drawingInfo).updatedState;
|
|
926
929
|
}
|
|
927
|
-
state = _export2.Layer.detectAndUpdateAreas(state, layerID, drawingInfo).updatedState;
|
|
928
930
|
}
|
|
931
|
+
|
|
929
932
|
// copy keeped measurement unit
|
|
930
933
|
state = state.setIn(['scene', 'layers', layerID, 'unit'], layerUnit);
|
|
931
934
|
state = state.setIn(['scene', 'layers', layerID, 'ceilHeight'], ceilHeight);
|
|
@@ -39,6 +39,7 @@ function Ruler(_ref) {
|
|
|
39
39
|
transform = _ref.transform,
|
|
40
40
|
style = _ref.style;
|
|
41
41
|
var distanceText = (0, _convertUnitsLite.convert)(length).from(unit).to(rulerUnit).toFixed(0);
|
|
42
|
+
distanceText = (Math.round((0, _convertUnitsLite.convert)(distanceText).from('in').to(layer.unit) * 100) / 100).toFixed(0);
|
|
42
43
|
var textLength = (distanceText.length + layer.unit.length) * 9;
|
|
43
44
|
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
44
45
|
transform: transform
|
|
@@ -59,7 +60,7 @@ function Ruler(_ref) {
|
|
|
59
60
|
transform: "scale(1, -1)",
|
|
60
61
|
style: STYLE_TEXT,
|
|
61
62
|
fill: _constants.TEXT_COLOR_NEUTRAL_7
|
|
62
|
-
},
|
|
63
|
+
}, distanceText, layer.unit === 'in' ? '"' : layer.unit)), /*#__PURE__*/_react["default"].createElement("line", {
|
|
63
64
|
x1: style === _line.STYLE_ROOM_SHAPE ? 0 : 4,
|
|
64
65
|
y1: "0",
|
|
65
66
|
x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
|
|
@@ -301,7 +301,7 @@ function updateScene(planData, sceneData, oldSceneData, diffArray, actions, cata
|
|
|
301
301
|
* Every 'doorStyle' change has a 'door_style_id' change.
|
|
302
302
|
* So, if door_style_id changes, it indicates 'doorStyle' change.
|
|
303
303
|
*/
|
|
304
|
-
if (['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
|
|
304
|
+
if (path[1] === 'layers' && path[3] === 'molding' || path[path.length - 2] === 'doorStyle' && path[path.length - 1] === 'id' || ['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;
|
|
305
305
|
|
|
306
306
|
// If there are any molding change of layer
|
|
307
307
|
if (path[1] === 'layers' && path[3] === 'molding') isUpdateMolding = true;
|
|
@@ -986,9 +986,9 @@ function getLineDistance(obj, layer, isCalcWall, index) {
|
|
|
986
986
|
obj.geometry.attributes.position.needsUpdate = true;
|
|
987
987
|
obj.geometry.computeBoundingSphere();
|
|
988
988
|
obj.geometry.computeBoundingBox();
|
|
989
|
-
var dist = (0,
|
|
989
|
+
var dist = (0, _convertUnitsLite.convert)(intersects[i].distance).from('cm').to('in');
|
|
990
990
|
if (dist > 3) {
|
|
991
|
-
var _canvas =
|
|
991
|
+
var _canvas = getDistanceCanvas(dist, layer);
|
|
992
992
|
var wid = _canvas.width / window.innerWidth * 30;
|
|
993
993
|
var hei = _canvas.height / window.innerHeight * 30;
|
|
994
994
|
var texture = new Three.Texture(_canvas);
|
|
@@ -1110,7 +1110,7 @@ function getLineDistance(obj, layer, isCalcWall, index) {
|
|
|
1110
1110
|
obj.geometry.attributes.position.needsUpdate = true;
|
|
1111
1111
|
var _dist = (0, _math.formatNumber)(distance, _constants.DECIMAL_PLACES_2);
|
|
1112
1112
|
if (_dist > 3) {
|
|
1113
|
-
var _canvas2 =
|
|
1113
|
+
var _canvas2 = getDistanceCanvas(_dist, layer);
|
|
1114
1114
|
var _wid = _canvas2.width / window.innerWidth * 30;
|
|
1115
1115
|
var _hei = _canvas2.height / window.innerHeight * 30;
|
|
1116
1116
|
var _texture = new Three.Texture(_canvas2);
|
|
@@ -1238,12 +1238,17 @@ function getIntersectPoint(opX, opY, pX, pY) {
|
|
|
1238
1238
|
function gcd(a, b) {
|
|
1239
1239
|
return a % b ? gcd(b, a % b) : b;
|
|
1240
1240
|
}
|
|
1241
|
-
function
|
|
1242
|
-
var
|
|
1241
|
+
function getDistanceCanvas(distance, layer) {
|
|
1242
|
+
var _layer$unit;
|
|
1243
|
+
var parameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
1243
1244
|
var canvas = document.createElement('canvas');
|
|
1244
1245
|
var ctx = canvas.getContext('2d');
|
|
1246
|
+
var curUnit = (_layer$unit = layer === null || layer === void 0 ? void 0 : layer.unit) !== null && _layer$unit !== void 0 ? _layer$unit : 'in';
|
|
1247
|
+
var distText = String((Math.round((0, _convertUnitsLite.convert)(distance).from('in').to(curUnit) * 100) / 100).toFixed(0));
|
|
1245
1248
|
var fontSize = 16;
|
|
1246
|
-
var integral =
|
|
1249
|
+
var integral = distText + curUnit;
|
|
1250
|
+
// let integral = String(distance) + "''";
|
|
1251
|
+
|
|
1247
1252
|
parameters.fontName = parameters.fontName || _constants.ARROW_TEXT_FONTFACE;
|
|
1248
1253
|
|
|
1249
1254
|
// Prepare the font to be able to measure
|
|
@@ -238,6 +238,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
238
238
|
});
|
|
239
239
|
self.renderer.domElement.style.display = 'block';
|
|
240
240
|
}, 1500);
|
|
241
|
+
self.planData = planData;
|
|
241
242
|
});
|
|
242
243
|
var area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
|
|
243
244
|
var layer = scene.getIn(['layers', scene.selectedLayer]);
|