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.
@@ -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
- var _excluded = ["width", "height", "projectElement", "categoryData", "dataBundle", "configData", "options", "user", "auth", "featureFlags", "sentry", "analytics", "externalEvent", "onEvent", "onSave", "onError"];
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
- import _regeneratorRuntime from "@babel/runtime/regenerator";
10
- import React, { useEffect } from 'react';
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
- onEvent: onEvent,
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
- onEvent: PropTypes.func,
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, MOVE_PAN, 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";
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: MOVE_PAN,
16
+ type: UPDATE_2D_CAMERA,
17
17
  value: value
18
18
  };
19
19
  }
@@ -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
- toolbarProps: {
1357
- position: 'none'
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 MOVE_PAN = 'MOVE_PAN';
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
- MOVE_PAN: MOVE_PAN,
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,
@@ -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
- setExternalEvant(evt);
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(LiteRenderer, {
141
- width: 1264,
142
- height: 1164,
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
- onSave: onSave,
153
- onEvent: onEvent,
154
- onError: onError
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, MOVE_PAN, UPDATE_CEIL_HEIGHT, UPDATE_CEIL_HEIGHT_UNIT } from "../constants";
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 MOVE_PAN:
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, MOVE_PAN, SELECT_TOOL_3D_FIRST_PERSON, SELECT_TOOL_3D_VIEW, UPDATE_3D_CEIL_HEIGHT, UPDATE_3D_CEIL_HEIGHT_UNIT } from "../constants";
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;