kitchen-simulator 1.0.0-alin.1 → 1.0.0-alin.2
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 +159 -50
- package/es/actions/project-actions.js +7 -1
- package/es/actions/viewer2d-actions.js +2 -2
- package/es/class/project.js +19 -1
- package/es/components/viewer2d/viewer2d.js +2 -3
- package/es/constants.js +4 -2
- package/es/devLiteRenderer.js +25 -21
- package/es/models.js +1 -1
- package/es/reducers/project-reducer.js +3 -1
- package/es/reducers/viewer2d-reducer.js +2 -2
- package/es/reducers/viewer3d-reducer.js +1 -3
- package/es/utils/isolate-event-handler.js +150 -47
- package/lib/LiteRenderer.js +157 -48
- package/lib/actions/project-actions.js +7 -0
- package/lib/actions/viewer2d-actions.js +1 -1
- package/lib/class/project.js +18 -0
- package/lib/components/viewer2d/viewer2d.js +2 -3
- package/lib/constants.js +7 -5
- package/lib/devLiteRenderer.js +25 -21
- package/lib/models.js +2 -2
- package/lib/reducers/project-reducer.js +2 -0
- package/lib/reducers/viewer2d-reducer.js +1 -1
- package/lib/reducers/viewer3d-reducer.js +0 -2
- package/lib/utils/isolate-event-handler.js +151 -47
- package/package.json +6 -3
package/es/LiteRenderer.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
2
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
3
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
5
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
6
|
-
|
|
6
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
7
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
8
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
9
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
10
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
11
|
+
var _excluded = ["width", "height", "projectElement", "categoryData", "dataBundle", "configData", "options", "user", "auth", "featureFlags", "sentry", "analytics", "externalEvent", "onError"];
|
|
12
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
13
|
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; }
|
|
8
14
|
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; }
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
16
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
17
|
+
import React, { useCallback, useEffect, useRef } from 'react';
|
|
11
18
|
import PropTypes from 'prop-types';
|
|
12
19
|
import { Provider } from 'react-redux';
|
|
13
20
|
import { createStore } from 'redux';
|
|
@@ -78,6 +85,62 @@ var store = createStore(reducer, null, !isProduction && window.devToolsExtension
|
|
|
78
85
|
return f;
|
|
79
86
|
});
|
|
80
87
|
var plugins = [Keyboard(), ConsoleDebugger()];
|
|
88
|
+
function serializeError(err) {
|
|
89
|
+
try {
|
|
90
|
+
if (!err) return {
|
|
91
|
+
message: 'Unknown error'
|
|
92
|
+
};
|
|
93
|
+
if (err instanceof Error) {
|
|
94
|
+
return {
|
|
95
|
+
name: err.name,
|
|
96
|
+
message: err.message,
|
|
97
|
+
stack: err.stack
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
message: String(err),
|
|
102
|
+
raw: safeJson(err)
|
|
103
|
+
};
|
|
104
|
+
} catch (_unused) {
|
|
105
|
+
return {
|
|
106
|
+
message: 'Error serializing error'
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function safeJson(v) {
|
|
111
|
+
try {
|
|
112
|
+
return JSON.parse(JSON.stringify(v));
|
|
113
|
+
} catch (_unused2) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* ---------- Error Boundary that pushes into buffer ---------- */
|
|
119
|
+
var ToolErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
120
|
+
function ToolErrorBoundary() {
|
|
121
|
+
_classCallCheck(this, ToolErrorBoundary);
|
|
122
|
+
return _callSuper(this, ToolErrorBoundary, arguments);
|
|
123
|
+
}
|
|
124
|
+
_inherits(ToolErrorBoundary, _React$Component);
|
|
125
|
+
return _createClass(ToolErrorBoundary, [{
|
|
126
|
+
key: "componentDidCatch",
|
|
127
|
+
value: function componentDidCatch(error, info) {
|
|
128
|
+
var pushError = this.props.pushError;
|
|
129
|
+
pushError({
|
|
130
|
+
type: 'render-error',
|
|
131
|
+
error: serializeError(error),
|
|
132
|
+
info: {
|
|
133
|
+
componentStack: info === null || info === void 0 ? void 0 : info.componentStack
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}, {
|
|
138
|
+
key: "render",
|
|
139
|
+
value: function render() {
|
|
140
|
+
return this.props.children;
|
|
141
|
+
}
|
|
142
|
+
}]);
|
|
143
|
+
}(React.Component);
|
|
81
144
|
export default function LiteRenderer(props) {
|
|
82
145
|
var width = props.width,
|
|
83
146
|
height = props.height,
|
|
@@ -92,10 +155,95 @@ export default function LiteRenderer(props) {
|
|
|
92
155
|
sentry = props.sentry,
|
|
93
156
|
analytics = props.analytics,
|
|
94
157
|
externalEvent = props.externalEvent,
|
|
95
|
-
onEvent = props.onEvent,
|
|
96
|
-
onSave = props.onSave,
|
|
97
158
|
onError = props.onError,
|
|
98
159
|
passThrough = _objectWithoutProperties(props, _excluded);
|
|
160
|
+
|
|
161
|
+
/* ---------- track last external event ---------- */
|
|
162
|
+
var lastExternalEventRef = useRef(null);
|
|
163
|
+
useEffect(function () {
|
|
164
|
+
if (externalEvent) {
|
|
165
|
+
lastExternalEventRef.current = externalEvent;
|
|
166
|
+
}
|
|
167
|
+
}, [externalEvent]);
|
|
168
|
+
|
|
169
|
+
/* ---------- error buffer + last emitted bundle ---------- */
|
|
170
|
+
var errorsBufferRef = useRef([]); // pending errors (not yet emitted)
|
|
171
|
+
var lastEmittedRef = useRef({
|
|
172
|
+
externalEvent: null,
|
|
173
|
+
errors: []
|
|
174
|
+
}); // last bundle we sent
|
|
175
|
+
var flushTimerRef = useRef(null);
|
|
176
|
+
var emit = useCallback(function (external, errors) {
|
|
177
|
+
var payload = {
|
|
178
|
+
externalEvent: external || null,
|
|
179
|
+
errors: errors || []
|
|
180
|
+
};
|
|
181
|
+
try {
|
|
182
|
+
onError === null || onError === void 0 || onError(payload);
|
|
183
|
+
} catch (_unused3) {}
|
|
184
|
+
// eslint-disable-next-line no-console
|
|
185
|
+
console.debug('[LiteRenderer:onError]', payload);
|
|
186
|
+
lastEmittedRef.current = payload;
|
|
187
|
+
}, [onError]);
|
|
188
|
+
|
|
189
|
+
// batch short bursts (e.g., multiple async errors in same tick)
|
|
190
|
+
var scheduleFlush = useCallback(function () {
|
|
191
|
+
if (flushTimerRef.current) return;
|
|
192
|
+
flushTimerRef.current = setTimeout(function () {
|
|
193
|
+
flushTimerRef.current = null;
|
|
194
|
+
var errors = errorsBufferRef.current;
|
|
195
|
+
if (!errors.length) return;
|
|
196
|
+
errorsBufferRef.current = [];
|
|
197
|
+
emit(lastExternalEventRef.current, errors);
|
|
198
|
+
}, 0); // micro-batch; increase (e.g. 50ms) if you want coarser batching
|
|
199
|
+
}, [emit]);
|
|
200
|
+
var pushError = useCallback(function (errPayload) {
|
|
201
|
+
errorsBufferRef.current.push(_objectSpread({
|
|
202
|
+
ts: Date.now()
|
|
203
|
+
}, errPayload));
|
|
204
|
+
scheduleFlush();
|
|
205
|
+
}, [scheduleFlush]);
|
|
206
|
+
|
|
207
|
+
/* ---------- global runtime + async error capture ---------- */
|
|
208
|
+
useEffect(function () {
|
|
209
|
+
var onWindowError = function onWindowError(event) {
|
|
210
|
+
pushError({
|
|
211
|
+
type: 'runtime-error',
|
|
212
|
+
error: serializeError((event === null || event === void 0 ? void 0 : event.error) || (event === null || event === void 0 ? void 0 : event.message)),
|
|
213
|
+
meta: {
|
|
214
|
+
filename: event === null || event === void 0 ? void 0 : event.filename,
|
|
215
|
+
lineno: event === null || event === void 0 ? void 0 : event.lineno,
|
|
216
|
+
colno: event === null || event === void 0 ? void 0 : event.colno
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
var onUnhandledRejection = function onUnhandledRejection(event) {
|
|
221
|
+
pushError({
|
|
222
|
+
type: 'unhandled-rejection',
|
|
223
|
+
error: serializeError(event === null || event === void 0 ? void 0 : event.reason)
|
|
224
|
+
});
|
|
225
|
+
};
|
|
226
|
+
window.addEventListener('error', onWindowError);
|
|
227
|
+
window.addEventListener('unhandledrejection', onUnhandledRejection);
|
|
228
|
+
return function () {
|
|
229
|
+
window.removeEventListener('error', onWindowError);
|
|
230
|
+
window.removeEventListener('unhandledrejection', onUnhandledRejection);
|
|
231
|
+
};
|
|
232
|
+
}, [pushError]);
|
|
233
|
+
|
|
234
|
+
/* ---------- re-trigger last batch when externalEvent changes ---------- */
|
|
235
|
+
var prevExternalEventRef = useRef(null);
|
|
236
|
+
useEffect(function () {
|
|
237
|
+
var prev = prevExternalEventRef.current;
|
|
238
|
+
if (prev === externalEvent) return;
|
|
239
|
+
prevExternalEventRef.current = externalEvent;
|
|
240
|
+
|
|
241
|
+
// if we already emitted something before, re-send it with the new event context
|
|
242
|
+
var last = lastEmittedRef.current;
|
|
243
|
+
if (last && last.errors && last.errors.length) {
|
|
244
|
+
emit(lastExternalEventRef.current, last.errors);
|
|
245
|
+
}
|
|
246
|
+
}, [externalEvent, emit]);
|
|
99
247
|
var _ref = categoryData && categoryData.data || {},
|
|
100
248
|
catalogs = _ref.catalogs,
|
|
101
249
|
colorAlias = _ref.colorAlias,
|
|
@@ -378,43 +526,6 @@ export default function LiteRenderer(props) {
|
|
|
378
526
|
});
|
|
379
527
|
for (var x in Item) MyCatalog.registerElement(Item[x]);
|
|
380
528
|
}, [outlineSVGData, data, appliances, furnishing, lighting]);
|
|
381
|
-
|
|
382
|
-
// Forward updates/save moments to host
|
|
383
|
-
useEffect(function () {
|
|
384
|
-
if (!onEvent && !onSave && !onError) return;
|
|
385
|
-
var unsubscribe = store.subscribe(function () {
|
|
386
|
-
var _state$get, _state$get$get, _state$get$get$get;
|
|
387
|
-
var state = store.getState();
|
|
388
|
-
onEvent === null || onEvent === void 0 || onEvent({
|
|
389
|
-
type: 'state-update',
|
|
390
|
-
payload: {
|
|
391
|
-
state: state
|
|
392
|
-
}
|
|
393
|
-
});
|
|
394
|
-
var pendingSave = state === null || state === void 0 || (_state$get = state.get) === null || _state$get === void 0 || (_state$get = _state$get.call(state, 'KitchenConfigurator')) === null || _state$get === void 0 || (_state$get$get = _state$get.get) === null || _state$get$get === void 0 || (_state$get$get = _state$get$get.call(_state$get, 'misc')) === null || _state$get$get === void 0 || (_state$get$get$get = _state$get$get.get) === null || _state$get$get$get === void 0 ? void 0 : _state$get$get$get.call(_state$get$get, 'pendingSave');
|
|
395
|
-
if (pendingSave && onSave) {
|
|
396
|
-
try {
|
|
397
|
-
var _planner$get, _planner$get2;
|
|
398
|
-
var planner = state.get('KitchenConfigurator');
|
|
399
|
-
var currentScene = planner !== null && planner !== void 0 && (_planner$get = planner.get) !== null && _planner$get !== void 0 && (_planner$get = _planner$get.call(planner, 'scene')) !== null && _planner$get !== void 0 && _planner$get.toJS ? planner.get('scene').toJS() : (planner === null || planner === void 0 || (_planner$get2 = planner.get) === null || _planner$get2 === void 0 ? void 0 : _planner$get2.call(planner, 'scene')) || null;
|
|
400
|
-
onSave({
|
|
401
|
-
type: 'save',
|
|
402
|
-
payload: {
|
|
403
|
-
scene: currentScene
|
|
404
|
-
}
|
|
405
|
-
});
|
|
406
|
-
} catch (e) {
|
|
407
|
-
onError === null || onError === void 0 || onError({
|
|
408
|
-
type: 'save-error',
|
|
409
|
-
error: e
|
|
410
|
-
});
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
});
|
|
414
|
-
return function () {
|
|
415
|
-
return unsubscribe();
|
|
416
|
-
};
|
|
417
|
-
}, [store, onEvent, onSave, onError]);
|
|
418
529
|
useEffect(function () {
|
|
419
530
|
if (projectElement.length === 0) return;
|
|
420
531
|
if (!catalogInitiated) return;
|
|
@@ -432,6 +543,8 @@ export default function LiteRenderer(props) {
|
|
|
432
543
|
}, [project_data, catalogInitiated]);
|
|
433
544
|
return /*#__PURE__*/React.createElement(AppContext.Provider, null, /*#__PURE__*/React.createElement(Provider, {
|
|
434
545
|
store: store
|
|
546
|
+
}, /*#__PURE__*/React.createElement(ToolErrorBoundary, {
|
|
547
|
+
pushError: pushError
|
|
435
548
|
}, /*#__PURE__*/React.createElement(LiteKitchenConfigurator, _extends({
|
|
436
549
|
catalog: MyCatalog,
|
|
437
550
|
width: width,
|
|
@@ -445,11 +558,8 @@ export default function LiteRenderer(props) {
|
|
|
445
558
|
categoryData: categoryData,
|
|
446
559
|
data: data,
|
|
447
560
|
configData: configData,
|
|
448
|
-
externalEvent: externalEvent
|
|
449
|
-
|
|
450
|
-
onSave: onSave,
|
|
451
|
-
onError: onError
|
|
452
|
-
}, passThrough))));
|
|
561
|
+
externalEvent: externalEvent
|
|
562
|
+
}, passThrough)))));
|
|
453
563
|
}
|
|
454
564
|
|
|
455
565
|
/* ============================== prop types ============================== */
|
|
@@ -472,8 +582,7 @@ LiteRenderer.propTypes = {
|
|
|
472
582
|
dsn: PropTypes.string,
|
|
473
583
|
environment: PropTypes.string
|
|
474
584
|
}),
|
|
475
|
-
|
|
476
|
-
onSave: PropTypes.func,
|
|
585
|
+
externalEvent: PropTypes.object,
|
|
477
586
|
onError: PropTypes.func,
|
|
478
587
|
store: PropTypes.object
|
|
479
588
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NEW_PROJECT, LOAD_PROJECT, SAVE_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, UNSELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, UNCREATE, PROJECT_RE_NAME, RECREATE, ROLLBACK, OPEN_PROJECT_CONFIGURATOR, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SELECT_ALL, SET_STATE_PROPERTIES, SHIFT2DOFF, SHIFT2DON, SET_IS_HELP, SET_IS_CABINET_DRAWING } from "../constants";
|
|
1
|
+
import { NEW_PROJECT, LOAD_PROJECT, SAVE_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, UNSELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, UNCREATE, PROJECT_RE_NAME, RECREATE, ROLLBACK, OPEN_PROJECT_CONFIGURATOR, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SELECT_ALL, SET_STATE_PROPERTIES, SHIFT2DOFF, SHIFT2DON, SET_IS_HELP, SET_IS_CABINET_DRAWING, ADD_ELEMENT_TO_CATALOG } from "../constants";
|
|
2
2
|
export function setIsHelp(isHelp) {
|
|
3
3
|
return {
|
|
4
4
|
type: SET_IS_HELP,
|
|
@@ -167,6 +167,12 @@ export function initCatalog(catalog) {
|
|
|
167
167
|
catalog: catalog
|
|
168
168
|
};
|
|
169
169
|
}
|
|
170
|
+
export function addElementToCatalog(element) {
|
|
171
|
+
return {
|
|
172
|
+
type: ADD_ELEMENT_TO_CATALOG,
|
|
173
|
+
element: element
|
|
174
|
+
};
|
|
175
|
+
}
|
|
170
176
|
export function updateMouseCoord() {
|
|
171
177
|
var coords = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
172
178
|
x: x,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { UPDATE_CEIL_HEIGHT_UNIT, UPDATE_CEIL_HEIGHT,
|
|
1
|
+
import { UPDATE_CEIL_HEIGHT_UNIT, UPDATE_CEIL_HEIGHT, UPDATE_2D_CAMERA, SELECT_TOOL_PAN, SELECT_TOOL_ZOOM_IN, SELECT_TOOL_ZOOM_OUT, CHANGE_WALL_LENGTH_MEASURE, CHANGE_BASE_CABINET_MEASURE, CHANGE_WALL_CABINET_MEASURE, CHANGE_WINDOW_DOOR_MEASURE } from "../constants";
|
|
2
2
|
export function updateCeilHeight(value) {
|
|
3
3
|
return {
|
|
4
4
|
type: UPDATE_CEIL_HEIGHT,
|
|
@@ -13,7 +13,7 @@ export function updateCeilHeightUnit(value) {
|
|
|
13
13
|
}
|
|
14
14
|
export function updateCameraView(value) {
|
|
15
15
|
return {
|
|
16
|
-
type:
|
|
16
|
+
type: UPDATE_2D_CAMERA,
|
|
17
17
|
value: value
|
|
18
18
|
};
|
|
19
19
|
}
|
package/es/class/project.js
CHANGED
|
@@ -6,7 +6,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
6
6
|
import { Map, List } from 'immutable';
|
|
7
7
|
import { MODE_VIEWING_CATALOG, MODE_CONFIGURING_PROJECT, MODE_IDLE, MODE_DRAWING_ITEM_3D, MODE_3D_VIEW, MODE_DRAGGING_ITEM_3D, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, MODE_DRAWING_ITEM, MODE_DRAWING_LINE, MODE_WAITING_DRAWING_LINE, MODE_DRAWING_HOLE, ARRAY_3D_MODES, END_DRAWING_LINE } from "../constants";
|
|
8
8
|
import * as constants from "../constants";
|
|
9
|
-
import { State, Catalog, Scene } from "../models";
|
|
9
|
+
import { State, Catalog, Scene, safeLoadMapList, CatalogElement } from "../models";
|
|
10
10
|
import { GeometryUtils, history } from "../utils/export";
|
|
11
11
|
import { Layer, Group, Line, Hole, Item, Area, HorizontalGuide, VerticalGuide } from "../class/export";
|
|
12
12
|
import * as viewer2DActions from "../actions/viewer2d-actions";
|
|
@@ -592,6 +592,24 @@ var Project = /*#__PURE__*/function () {
|
|
|
592
592
|
};
|
|
593
593
|
}
|
|
594
594
|
}
|
|
595
|
+
}, {
|
|
596
|
+
key: "addElementToCatalog",
|
|
597
|
+
value: function addElementToCatalog(state, element) {
|
|
598
|
+
try {
|
|
599
|
+
var elements = state.getIn(['catalog', 'elements']).toJS();
|
|
600
|
+
elements[element.name] = element;
|
|
601
|
+
var newElements = safeLoadMapList(elements, CatalogElement);
|
|
602
|
+
state = state.setIn(['catalog', 'elements'], newElements);
|
|
603
|
+
return {
|
|
604
|
+
updatedState: state
|
|
605
|
+
};
|
|
606
|
+
} catch (error) {
|
|
607
|
+
console.log('initCatalogError', error);
|
|
608
|
+
return {
|
|
609
|
+
updatedState: state
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
}
|
|
595
613
|
}, {
|
|
596
614
|
key: "updateMouseCoord",
|
|
597
615
|
value: function updateMouseCoord(state, coords) {
|
|
@@ -1353,9 +1353,8 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
1353
1353
|
onMouseDown: onMouseDown,
|
|
1354
1354
|
onMouseMove: onMouseMove,
|
|
1355
1355
|
onMouseUp: onMouseUp,
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
},
|
|
1356
|
+
miniaturePosition: "none",
|
|
1357
|
+
toolbarPosition: "none",
|
|
1359
1358
|
detectPinchGesture: false,
|
|
1360
1359
|
disableDoubleClickZoomWithToolAuto: true,
|
|
1361
1360
|
ref: Viewer
|
package/es/constants.js
CHANGED
|
@@ -33,6 +33,7 @@ export var SET_PROJECT_PROPERTIES = 'SET_PROJECT_PROPERTIES';
|
|
|
33
33
|
export var SET_PROJECT_ID = 'SET_PROJECT_ID';
|
|
34
34
|
export var OPEN_PROJECT_CONFIGURATOR = 'OPEN_PROJECT_CONFIGURATOR';
|
|
35
35
|
export var INIT_CATALOG = 'INIT_CATALOG';
|
|
36
|
+
export var ADD_ELEMENT_TO_CATALOG = 'ADD_ELEMENT_TO_CATALOG';
|
|
36
37
|
export var UPDATE_MOUSE_COORDS = 'UPDATE_MOUSE_COORDS';
|
|
37
38
|
export var UPDATE_ZOOM_SCALE = 'UPDATE_ZOOM_SCALE';
|
|
38
39
|
export var TOGGLE_SNAP = 'TOGGLE_SNAP';
|
|
@@ -59,7 +60,7 @@ export var SET_IS_CABINET_DRAWING = 'SET_IS_CABINET_DRAWING';
|
|
|
59
60
|
export var SELECT_TOOL_ZOOM_IN = 'SELECT_TOOL_ZOOM_IN';
|
|
60
61
|
export var SELECT_TOOL_ZOOM_OUT = 'SELECT_TOOL_ZOOM_OUT';
|
|
61
62
|
export var SELECT_TOOL_PAN = 'SELECT_TOOL_PAN';
|
|
62
|
-
export var
|
|
63
|
+
export var UPDATE_2D_CAMERA = 'UPDATE_2D_CAMERA';
|
|
63
64
|
export var CHANGE_WALL_LENGTH_MEASURE = 'CHANGE_WALL_LENGTH_MEASURE';
|
|
64
65
|
export var CHANGE_BASE_CABINET_MEASURE = 'CHANGE_BASE_CABINET_MEASURE';
|
|
65
66
|
export var CHANGE_WALL_CABINET_MEASURE = 'CHANGE_WALL_CABINET_MEASURE';
|
|
@@ -219,6 +220,7 @@ export var PROJECT_ACTIONS = {
|
|
|
219
220
|
PROJECT_RE_NAME: PROJECT_RE_NAME,
|
|
220
221
|
OPEN_PROJECT_CONFIGURATOR: OPEN_PROJECT_CONFIGURATOR,
|
|
221
222
|
INIT_CATALOG: INIT_CATALOG,
|
|
223
|
+
ADD_ELEMENT_TO_CATALOG: ADD_ELEMENT_TO_CATALOG,
|
|
222
224
|
UPDATE_MOUSE_COORDS: UPDATE_MOUSE_COORDS,
|
|
223
225
|
UPDATE_ZOOM_SCALE: UPDATE_ZOOM_SCALE,
|
|
224
226
|
TOGGLE_SNAP: TOGGLE_SNAP,
|
|
@@ -248,7 +250,7 @@ export var VIEWER2D_ACTIONS = {
|
|
|
248
250
|
SELECT_TOOL_ZOOM_IN: SELECT_TOOL_ZOOM_IN,
|
|
249
251
|
SELECT_TOOL_ZOOM_OUT: SELECT_TOOL_ZOOM_OUT,
|
|
250
252
|
SELECT_TOOL_PAN: SELECT_TOOL_PAN,
|
|
251
|
-
|
|
253
|
+
UPDATE_2D_CAMERA: UPDATE_2D_CAMERA,
|
|
252
254
|
CHANGE_WALL_LENGTH_MEASURE: CHANGE_WALL_LENGTH_MEASURE,
|
|
253
255
|
CHANGE_BASE_CABINET_MEASURE: CHANGE_BASE_CABINET_MEASURE,
|
|
254
256
|
CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
|
package/es/devLiteRenderer.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import React, { useState, useEffect } from 'react';
|
|
3
|
+
import ContainerDimensions from 'react-container-dimensions';
|
|
3
4
|
import mockProps from "./mocks/mockProps.json";
|
|
4
5
|
import mockCategoryData from "./mocks/categoryData.json";
|
|
5
6
|
import mockDataBundle from "./mocks/dataBundle.json";
|
|
7
|
+
import cabinetPaylod from "./mocks/cabinetPayload.json";
|
|
6
8
|
import ReactDOM from 'react-dom';
|
|
7
|
-
import LiteKitchenConfigurator from "./LiteKitchenConfigurator";
|
|
8
9
|
import LiteRenderer from "./LiteRenderer";
|
|
9
10
|
import { Button } from 'antd';
|
|
10
11
|
import { LEFT, RIGHT, TOP, BOTTOM, EXTERNAL_EVENT_ADD_ITEM, EXTERNAL_EVENT_ADD_WALL, EXTERNAL_EVENT_TOGGLE_TO_3D, EXTERNAL_EVENT_TOGGLE_TO_2D, EXTERNAL_EVENT_TOGGLE_TO_ELEVATION, EXTERNAL_EVENT_MOVE_PAN, EXTERNAL_EVENT_NEW_PROJECT } from "./constants";
|
|
@@ -14,19 +15,6 @@ var options = {
|
|
|
14
15
|
unit: 'in',
|
|
15
16
|
enable3D: true
|
|
16
17
|
};
|
|
17
|
-
var onSave = function onSave(_ref) {
|
|
18
|
-
var payload = _ref.payload;
|
|
19
|
-
console.log('SAVE triggered:', payload.scene);
|
|
20
|
-
};
|
|
21
|
-
var onEvent = function onEvent(evt) {
|
|
22
|
-
console.log('EVENT:', evt.type, evt.payload);
|
|
23
|
-
};
|
|
24
|
-
var onExternalEvent = function onExternalEvent(evt) {
|
|
25
|
-
console.log('EXTERNAL EVENT:', evt.type, evt.payload);
|
|
26
|
-
};
|
|
27
|
-
var onError = function onError(err) {
|
|
28
|
-
console.error('ERROR:', err);
|
|
29
|
-
};
|
|
30
18
|
document.getElementById('app').style.display = 'block';
|
|
31
19
|
function WorkSpace(props) {
|
|
32
20
|
var _useState = useState(null),
|
|
@@ -126,7 +114,7 @@ function WorkSpace(props) {
|
|
|
126
114
|
type: EXTERNAL_EVENT_NEW_PROJECT,
|
|
127
115
|
payload: {}
|
|
128
116
|
};
|
|
129
|
-
|
|
117
|
+
setExternalEvent(evt);
|
|
130
118
|
}
|
|
131
119
|
}, "New Project"), /*#__PURE__*/React.createElement(Button, {
|
|
132
120
|
actionType: "secondary",
|
|
@@ -137,9 +125,18 @@ function WorkSpace(props) {
|
|
|
137
125
|
};
|
|
138
126
|
setExternalEvent(evt);
|
|
139
127
|
}
|
|
140
|
-
}, "Add Walls"), /*#__PURE__*/React.createElement(
|
|
141
|
-
|
|
142
|
-
|
|
128
|
+
}, "Add Walls"), /*#__PURE__*/React.createElement(Button, {
|
|
129
|
+
actionType: "danger",
|
|
130
|
+
onClick: function onClick() {
|
|
131
|
+
var evt = {
|
|
132
|
+
type: EXTERNAL_EVENT_ADD_ITEM,
|
|
133
|
+
payload: cabinetPaylod
|
|
134
|
+
};
|
|
135
|
+
setExternalEvent(evt);
|
|
136
|
+
}
|
|
137
|
+
}, "Add B12 Cabinet"), /*#__PURE__*/React.createElement(LiteRenderer, {
|
|
138
|
+
width: 1200,
|
|
139
|
+
height: 953,
|
|
143
140
|
projectElement: mockProps.projectElement,
|
|
144
141
|
categoryData: mockCategoryData,
|
|
145
142
|
dataBundle: mockDataBundle,
|
|
@@ -149,9 +146,16 @@ function WorkSpace(props) {
|
|
|
149
146
|
companyUrl: "https://example.com",
|
|
150
147
|
toolbarButtons: [],
|
|
151
148
|
externalEvent: externalEvent,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
149
|
+
onError: function onError(payload) {
|
|
150
|
+
// payload = {
|
|
151
|
+
// type: 'render-error' | 'runtime-error' | 'unhandled-rejection',
|
|
152
|
+
// error: { name?, message, stack?, raw? },
|
|
153
|
+
// info?: { componentStack? },
|
|
154
|
+
// externalEvent: { id?, type, payload } | null,
|
|
155
|
+
// meta?: { filename?, lineno?, colno? }
|
|
156
|
+
// }
|
|
157
|
+
console.error('TOOL ERROR:', payload);
|
|
158
|
+
}
|
|
155
159
|
}));
|
|
156
160
|
}
|
|
157
161
|
ReactDOM.render(/*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(WorkSpace, null)), document.getElementById('app'));
|
package/es/models.js
CHANGED
|
@@ -13,7 +13,7 @@ import { MODE_IDLE, UNIT_INCH } from "./constants";
|
|
|
13
13
|
import { SNAP_MASK } from "./utils/snap";
|
|
14
14
|
import { isEmpty } from "./utils/helper";
|
|
15
15
|
import { convert } from "./utils/convert-units-lite";
|
|
16
|
-
var safeLoadMapList = function safeLoadMapList(mapList, Model, defaultMap) {
|
|
16
|
+
export var safeLoadMapList = function safeLoadMapList(mapList, Model, defaultMap) {
|
|
17
17
|
return mapList ? new Map(mapList).map(function (m) {
|
|
18
18
|
return new Model(m);
|
|
19
19
|
}).toMap() : defaultMap || new Map();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { history } from "../utils/export";
|
|
2
|
-
import { LOAD_PROJECT, NEW_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, MODE_IDLE, UNSELECT_ALL, SELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, RECREATE, UNCREATE, PROJECT_RE_NAME, ROLLBACK, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, OPEN_PROJECT_CONFIGURATOR, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SET_STATE_PROPERTIES, SHIFT2DON, SHIFT2DOFF, MODE_DRAWING_LINE, SET_IS_HELP, SET_IS_CABINET_DRAWING } from "../constants";
|
|
2
|
+
import { LOAD_PROJECT, NEW_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, MODE_IDLE, UNSELECT_ALL, SELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, INVERT, UNDO, REDO, RECREATE, UNCREATE, PROJECT_RE_NAME, ROLLBACK, SET_PROJECT_PROPERTIES, SET_PROJECT_ID, OPEN_PROJECT_CONFIGURATOR, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY, ALTERATE_STATE, SET_MODE, ADD_HORIZONTAL_GUIDE, ADD_VERTICAL_GUIDE, ADD_CIRCULAR_GUIDE, REMOVE_HORIZONTAL_GUIDE, REMOVE_VERTICAL_GUIDE, REMOVE_CIRCULAR_GUIDE, REMOVE_DRAWING_SUPPORT, SET_STATE_PROPERTIES, SHIFT2DON, SHIFT2DOFF, MODE_DRAWING_LINE, SET_IS_HELP, SET_IS_CABINET_DRAWING, ADD_ELEMENT_TO_CATALOG } from "../constants";
|
|
3
3
|
import { Project } from "../class/export";
|
|
4
4
|
export default function (state, action) {
|
|
5
5
|
switch (action.type) {
|
|
@@ -77,6 +77,8 @@ export default function (state, action) {
|
|
|
77
77
|
return Project.openProjectConfigurator(state).updatedState;
|
|
78
78
|
case INIT_CATALOG:
|
|
79
79
|
return Project.initCatalog(state, action.catalog).updatedState;
|
|
80
|
+
case ADD_ELEMENT_TO_CATALOG:
|
|
81
|
+
return Project.addElementToCatalog(state, action.element).updatedState;
|
|
80
82
|
case UPDATE_MOUSE_COORDS:
|
|
81
83
|
return Project.updateMouseCoord(state, action.coords).updatedState;
|
|
82
84
|
case UPDATE_ZOOM_SCALE:
|
|
@@ -1,4 +1,4 @@
|
|
|
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,
|
|
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
3
|
export default function (state, action) {
|
|
4
4
|
var _state = state,
|
|
@@ -37,7 +37,7 @@ export default function (state, action) {
|
|
|
37
37
|
state = state.mergeIn(['scene', 'layers', _selectedLayer, 'items'], newItems);
|
|
38
38
|
return state;
|
|
39
39
|
}
|
|
40
|
-
case
|
|
40
|
+
case UPDATE_2D_CAMERA:
|
|
41
41
|
return state.merge({
|
|
42
42
|
viewer2D: action.value
|
|
43
43
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MODE_3D_FIRST_PERSON, MODE_3D_VIEW,
|
|
1
|
+
import { MODE_3D_FIRST_PERSON, MODE_3D_VIEW, SELECT_TOOL_3D_FIRST_PERSON, SELECT_TOOL_3D_VIEW, UPDATE_3D_CEIL_HEIGHT, UPDATE_3D_CEIL_HEIGHT_UNIT } from "../constants";
|
|
2
2
|
import { Project } from "../class/export";
|
|
3
3
|
import { history } from "../utils/export";
|
|
4
4
|
import { convert } from "../utils/convert-units-lite";
|
|
@@ -42,8 +42,6 @@ export default function (state, action) {
|
|
|
42
42
|
state = state.mergeIn(['scene', 'layers', _selectedLayer, 'items'], newItems);
|
|
43
43
|
return state;
|
|
44
44
|
}
|
|
45
|
-
case MOVE_PAN:
|
|
46
|
-
return state;
|
|
47
45
|
case SELECT_TOOL_3D_VIEW:
|
|
48
46
|
state = Project.rollback(state).updatedState;
|
|
49
47
|
state = Project.setMode(state, MODE_3D_VIEW).updatedState;
|