kitchen-simulator 3.0.1 → 3.1.0-alpha.12

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.
Files changed (43) hide show
  1. package/es/LiteKitchenConfigurator.js +42 -9
  2. package/es/LiteRenderer.js +5 -8
  3. package/es/actions/lines-actions.js +3 -1
  4. package/es/assets/img/png/helper/video_preview_start.png +0 -0
  5. package/es/catalog/factories/area-factory-3d.js +17 -17
  6. package/es/catalog/holes/window-clear/planner-element.js +2 -2
  7. package/es/catalog/utils/item-loader.js +198 -197
  8. package/es/class/item.js +11 -0
  9. package/es/class/line.js +14 -2
  10. package/es/components/viewer2d/item.js +41 -14
  11. package/es/components/viewer2d/rulerDist.js +1 -1
  12. package/es/components/viewer2d/utils.js +2 -2
  13. package/es/components/viewer2d/viewer2d.js +13 -11
  14. package/es/components/viewer3d/viewer3d.js +98 -96
  15. package/es/constants.js +6 -2
  16. package/es/devLiteRenderer.js +192 -98
  17. package/es/index.js +82 -13
  18. package/es/reducers/lines-reducer.js +1 -1
  19. package/es/utils/geometry.js +161 -0
  20. package/es/utils/isolate-event-handler.js +273 -116
  21. package/es/utils/molding.js +234 -2
  22. package/lib/LiteKitchenConfigurator.js +42 -9
  23. package/lib/LiteRenderer.js +5 -8
  24. package/lib/actions/lines-actions.js +3 -1
  25. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  26. package/lib/catalog/factories/area-factory-3d.js +14 -14
  27. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  28. package/lib/catalog/utils/item-loader.js +195 -194
  29. package/lib/class/item.js +11 -0
  30. package/lib/class/line.js +13 -1
  31. package/lib/components/viewer2d/item.js +40 -13
  32. package/lib/components/viewer2d/rulerDist.js +1 -1
  33. package/lib/components/viewer2d/utils.js +2 -2
  34. package/lib/components/viewer2d/viewer2d.js +13 -11
  35. package/lib/components/viewer3d/viewer3d.js +98 -96
  36. package/lib/constants.js +11 -7
  37. package/lib/devLiteRenderer.js +186 -92
  38. package/lib/index.js +82 -13
  39. package/lib/reducers/lines-reducer.js +1 -1
  40. package/lib/utils/geometry.js +162 -0
  41. package/lib/utils/isolate-event-handler.js +272 -115
  42. package/lib/utils/molding.js +233 -0
  43. package/package.json +1 -1
package/es/constants.js CHANGED
@@ -66,6 +66,7 @@ export var CHANGE_WALL_LENGTH_MEASURE = 'CHANGE_WALL_LENGTH_MEASURE';
66
66
  export var CHANGE_BASE_CABINET_MEASURE = 'CHANGE_BASE_CABINET_MEASURE';
67
67
  export var CHANGE_WALL_CABINET_MEASURE = 'CHANGE_WALL_CABINET_MEASURE';
68
68
  export var CHANGE_WINDOW_DOOR_MEASURE = 'CHANGE_WINDOW_DOOR_MEASURE';
69
+ export var CHANGE_MEASUREMENT_UNIT = 'CHANGE_MEASUREMENT_UNIT';
69
70
 
70
71
  //ACTIONS viewer3D
71
72
  export var SELECT_TOOL_3D_VIEW = 'SELECT_TOOL_3D_VIEW';
@@ -650,10 +651,11 @@ export var PROJECT_SETTING_OPTION = {
650
651
  CHANGE_WALL_LENGTH_MEASURE: CHANGE_WALL_LENGTH_MEASURE,
651
652
  CHANGE_BASE_CABINET_MEASURE: CHANGE_BASE_CABINET_MEASURE,
652
653
  CHANGE_WALL_CABINET_MEASURE: CHANGE_WALL_CABINET_MEASURE,
653
- CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE
654
+ CHANGE_WINDOW_DOOR_MEASURE: CHANGE_WINDOW_DOOR_MEASURE,
655
+ CHANGE_MEASUREMENT_UNIT: CHANGE_MEASUREMENT_UNIT
654
656
  };
655
657
  export var HOLE_NAMES = {
656
- WINDOW_CLEAR: 'Clear Window',
658
+ WINDOW_CLEAR: 'Window',
657
659
  WINDOW_CROSS: 'Cross Window',
658
660
  WINDOW_DOUBLE_HUNG: 'Double Hung Window',
659
661
  WINDOW_VERTICAL: 'window-vertical',
@@ -739,6 +741,7 @@ export var EXTERNAL_EVENT_UPDATE_ATTRIBUTE = 'EXTERNAL_EVENT_UPDATE_ATTRIBUTE';
739
741
  export var EXTERNAL_EVENT_UPDATE_PROPERTY = 'EXTERNAL_EVENT_UPDATE_PROPERTY'; // update the element's property (flip_doorhandle, open_doors...) in the property window
740
742
  export var EXTERNAL_EVENT_REPLACE_CABINET = 'EXTERNAL_EVENT_REPLACE_CABINET';
741
743
  export var EXTERNAL_EVENT_SET_FINISHING = 'EXTERNAL_EVENT_SET_FINISHING'; // set finishing(wallColor, floorStyle, doorHandle, backsplash, counterTop)
744
+ export var EXTERNAL_EVENT_ROTATE_PAN = 'EXTERNAL_EVENT_ROTATE_PAN'; // external event for rotate pan
742
745
 
743
746
  // internal event type
744
747
  export var INTERNAL_EVENT_UNSELECT_ALL = 'INTERNAL_EVENT_UNSELECT_ALL';
@@ -747,6 +750,7 @@ export var INTERNAL_EVENT_DRAG_ELEMENT = 'INTERNAL_EVENT_DRAG_ELEMENT';
747
750
  export var INTERNAL_EVENT_DRAW_ELEMENT = 'INTERNAL_EVENT_DRAW_ELEMENT';
748
751
  export var INTERNAL_EVENT_ROTATE_ELEMENT = 'INTERNAL_EVENT_ROTATE_ELEMENT';
749
752
  export var INTERNAL_EVENT_REPLACE_CABINET = 'INTERNAL_EVENT_REPLACE_CABINET';
753
+ export var INTERNAL_EVENT_START_DRAW_WALL = 'INTERNAL_EVENT_START_DRAW_WALL';
750
754
 
751
755
  // room shape type
752
756
  export var ROOM_SHAPE_TYPE = {
@@ -1,12 +1,13 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
- import React, { useState, useEffect } from 'react';
5
- import { Map } from 'immutable';
6
- import ContainerDimensions from 'react-container-dimensions';
4
+ import React, { useState, useEffect } from "react";
5
+ import { Map } from "immutable";
6
+ import ContainerDimensions from "react-container-dimensions";
7
7
  import projectItemsCatalog from "./mocks/projectItemsCatalog.json";
8
8
  import mockProps from "./mocks/mockProps.json";
9
9
  import cabinetPaylod from "./mocks/cabinetPayload2.json";
10
+ import cabinetW0940Payload from "./mocks/cabinetPayload.json";
10
11
  import appliancePaylod from "./mocks/appliancePayload.json";
11
12
  import doorStylePaylod2 from "./mocks/doorStylePayload2.json";
12
13
  import roomShapePayload from "./mocks/roomShapePayload.json";
@@ -16,14 +17,15 @@ import furnishingPayload from "./mocks/furnishingPayload.json";
16
17
  import rectangleData from "./mocks/rectangleShape.json";
17
18
  import moldingPayload from "./mocks/moldingPayload.json";
18
19
  import replaceCabinetPayload from "./mocks/replaceCabinetPayload.json";
19
- import ReactDOM from 'react-dom';
20
+ import ReactDOM from "react-dom";
20
21
  import LiteRenderer from "./LiteRenderer";
21
- import { Button } from 'antd';
22
- 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, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, BACK_DIST_ANG, ATT_ITEM_POS, ATT_ITEM_ROTATION, ATT_LINE_LENGTH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, HOLE_NAMES, EXTERNAL_EVENT_CENTERING_2D, PROP_ALTITUDE, EXTERNAL_EVENT_DUPLICATE_ELEMENT, ELEMENT_ITEM, EXTERNAL_EVENT_DELETE_ELEMENT, PROP_RESIZE_WIDTH, EXTERNAL_EVENT_REPLACE_CABINET, EXTERNAL_EVENT_SET_FINISHING, FINISHING_TYPE } from "./constants";
22
+ import { Button } from "antd";
23
+ 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, EXTERNAL_EVENT_CHANGE_DOORSTYLE, EXTERNAL_EVENT_ADD_ROOM_SHAPE, EXTERNAL_EVENT_ZOOM_IN, EXTERNAL_EVENT_ZOOM_OUT, EXTERNAL_EVENT_UNDO, EXTERNAL_EVENT_REDO, EXTERNAL_EVENT_SET_MOLDING, EXTERNAL_EVENT_PROJECT_SETTING, PROJECT_SETTING_OPTION, EXTERNAL_EVENT_SYNC_SCENE, EXTERNAL_EVENT_UPDATE_ATTRIBUTE, BACK_DIST_ANG, ATT_ITEM_POS, ATT_ITEM_ROTATION, ATT_LINE_LENGTH, EXTERNAL_EVENT_UPDATE_PROPERTY, PROP_FLIP_DOOR_HANDLE, PROP_OPEN_DOORS, EXTERNAL_EVENT_LOAD_PROJECT, INTERNAL_EVENT_ITEMS_CATALOG, EXTERNAL_EVENT_ADD_HOLE, HOLE_NAMES, EXTERNAL_EVENT_CENTERING_2D, PROP_ALTITUDE, EXTERNAL_EVENT_DUPLICATE_ELEMENT, ELEMENT_ITEM, EXTERNAL_EVENT_DELETE_ELEMENT, PROP_RESIZE_WIDTH, EXTERNAL_EVENT_REPLACE_CABINET, EXTERNAL_EVENT_SET_FINISHING, FINISHING_TYPE, EXTERNAL_EVENT_ROTATE_PAN } from "./constants";
24
+ import { convert } from "./utils/convert-units-lite";
23
25
 
24
26
  // --- renderer props ---
25
27
  var options = {
26
- unit: 'in',
28
+ unit: "in",
27
29
  enable3D: true
28
30
  };
29
31
  var onInternalEvent = /*#__PURE__*/function () {
@@ -32,7 +34,7 @@ var onInternalEvent = /*#__PURE__*/function () {
32
34
  return _regeneratorRuntime.wrap(function (_context) {
33
35
  while (1) switch (_context.prev = _context.next) {
34
36
  case 0:
35
- console.log('EVENT:', evt.type, evt.value);
37
+ console.log("EVENT:", evt.type, evt.value);
36
38
  _t = evt.type;
37
39
  _context.next = _t === INTERNAL_EVENT_ITEMS_CATALOG ? 1 : 3;
38
40
  break;
@@ -51,7 +53,7 @@ var onInternalEvent = /*#__PURE__*/function () {
51
53
  return _ref.apply(this, arguments);
52
54
  };
53
55
  }();
54
- document.getElementById('app').style.display = 'block';
56
+ document.getElementById("app").style.display = "block";
55
57
  function WorkSpace(props) {
56
58
  var _useState = useState(null),
57
59
  _useState2 = _slicedToArray(_useState, 2),
@@ -213,6 +215,15 @@ function WorkSpace(props) {
213
215
  setExternalEvent(evt);
214
216
  }
215
217
  }, "Add B12 Cabinet"), /*#__PURE__*/React.createElement(Button, {
218
+ actionType: "danger",
219
+ onClick: function onClick() {
220
+ var evt = {
221
+ type: EXTERNAL_EVENT_ADD_ITEM,
222
+ payload: cabinetW0940Payload
223
+ };
224
+ setExternalEvent(evt);
225
+ }
226
+ }, "Add W0930 Cabinet"), /*#__PURE__*/React.createElement(Button, {
216
227
  actionType: "danger",
217
228
  onClick: function onClick() {
218
229
  var evt = {
@@ -231,91 +242,91 @@ function WorkSpace(props) {
231
242
  var evt = {
232
243
  type: EXTERNAL_EVENT_ADD_ROOM_SHAPE,
233
244
  payload: {
234
- roomShapeType: 'rectangle',
245
+ roomShapeType: "rectangle",
235
246
  width: 250,
236
247
  height: 100,
237
248
  doorStyle: {
238
249
  id: 36,
239
- type: 'door',
240
- name: 'Brilliant White Shaker',
241
- thumbnail: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/thumbnail/Brilliant%20White%20Shaker%20-%20RTA.jpg',
242
- texture: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
243
- color: '#ffffff',
250
+ type: "door",
251
+ name: "Brilliant White Shaker",
252
+ thumbnail: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/thumbnail/Brilliant%20White%20Shaker%20-%20RTA.jpg",
253
+ texture: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
254
+ color: "#ffffff",
244
255
  glossness: 1,
245
256
  door_style_id: 42,
246
257
  brightness: 1,
247
- sku: 'SW',
248
- color_family: ',10,',
249
- color_sku_alias: 'SW',
250
- door_style_name: 'Shaker',
251
- install: '',
258
+ sku: "SW",
259
+ color_family: ",10,",
260
+ color_sku_alias: "SW",
261
+ door_style_name: "Shaker",
262
+ install: "",
252
263
  doorStyles: {
253
- base: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
254
- counttop: 'https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg',
255
- interior: 'https://media.test.diydesignspace.com/uploads/assets/default/maple.jpg',
256
- base_door_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
257
- base_fixed_drawer_door_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
258
- base_drawer_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
259
- base_drawer_door_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
260
- door_handle_1: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
261
- fixed_drawer_door_handle_1: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
262
- drawer_door_handle_1: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
263
- base_door_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
264
- base_fixed_drawer_door_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
265
- base_drawer_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
266
- base_drawer_door_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
267
- door_handle_2: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
268
- fixed_drawer_door_handle_2: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
269
- drawer_door_handle_2: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
270
- base_door_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
271
- base_fixed_drawer_door_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
272
- base_drawer_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
273
- base_drawer_door_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
274
- door_handle_3: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
275
- fixed_drawer_door_handle_3: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
276
- drawer_door_handle_3: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
277
- base_door_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
278
- base_fixed_drawer_door_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
279
- base_drawer_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
280
- base_drawer_door_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
281
- door_handle_4: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
282
- fixed_drawer_door_handle_4: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
283
- drawer_door_handle_4: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
284
- base_door_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
285
- base_fixed_drawer_door_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
286
- base_drawer_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
287
- base_drawer_door_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
288
- door_handle_5: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
289
- fixed_drawer_door_handle_5: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
290
- drawer_door_handle_5: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
291
- base_door_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
292
- base_fixed_drawer_door_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
293
- base_drawer_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
294
- base_drawer_door_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
295
- door_handle_6: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
296
- fixed_drawer_door_handle_6: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
297
- drawer_door_handle_6: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
298
- base_door_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
299
- base_fixed_drawer_door_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
300
- base_drawer_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
301
- base_drawer_door_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
302
- door_handle_7: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
303
- fixed_drawer_door_handle_7: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
304
- drawer_door_handle_7: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
305
- base_door_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
306
- base_fixed_drawer_door_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
307
- base_drawer_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
308
- base_drawer_door_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
309
- door_handle_8: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
310
- fixed_drawer_door_handle_8: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
311
- drawer_door_handle_8: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
312
- base_door_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
313
- base_fixed_drawer_door_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
314
- base_drawer_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
315
- base_drawer_door_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
316
- door_handle_9: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
317
- fixed_drawer_door_handle_9: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
318
- drawer_door_handle_9: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg'
264
+ base: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
265
+ counttop: "https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg",
266
+ interior: "http://127.0.0.1:4002/uploads/assets/default/maple.jpg",
267
+ base_door_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
268
+ base_fixed_drawer_door_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
269
+ base_drawer_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
270
+ base_drawer_door_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
271
+ door_handle_1: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
272
+ fixed_drawer_door_handle_1: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
273
+ drawer_door_handle_1: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
274
+ base_door_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
275
+ base_fixed_drawer_door_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
276
+ base_drawer_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
277
+ base_drawer_door_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
278
+ door_handle_2: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
279
+ fixed_drawer_door_handle_2: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
280
+ drawer_door_handle_2: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
281
+ base_door_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
282
+ base_fixed_drawer_door_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
283
+ base_drawer_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
284
+ base_drawer_door_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
285
+ door_handle_3: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
286
+ fixed_drawer_door_handle_3: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
287
+ drawer_door_handle_3: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
288
+ base_door_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
289
+ base_fixed_drawer_door_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
290
+ base_drawer_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
291
+ base_drawer_door_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
292
+ door_handle_4: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
293
+ fixed_drawer_door_handle_4: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
294
+ drawer_door_handle_4: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
295
+ base_door_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
296
+ base_fixed_drawer_door_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
297
+ base_drawer_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
298
+ base_drawer_door_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
299
+ door_handle_5: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
300
+ fixed_drawer_door_handle_5: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
301
+ drawer_door_handle_5: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
302
+ base_door_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
303
+ base_fixed_drawer_door_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
304
+ base_drawer_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
305
+ base_drawer_door_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
306
+ door_handle_6: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
307
+ fixed_drawer_door_handle_6: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
308
+ drawer_door_handle_6: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
309
+ base_door_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
310
+ base_fixed_drawer_door_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
311
+ base_drawer_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
312
+ base_drawer_door_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
313
+ door_handle_7: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
314
+ fixed_drawer_door_handle_7: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
315
+ drawer_door_handle_7: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
316
+ base_door_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
317
+ base_fixed_drawer_door_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
318
+ base_drawer_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
319
+ base_drawer_door_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
320
+ door_handle_8: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
321
+ fixed_drawer_door_handle_8: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
322
+ drawer_door_handle_8: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
323
+ base_door_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
324
+ base_fixed_drawer_door_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
325
+ base_drawer_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
326
+ base_drawer_door_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
327
+ door_handle_9: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
328
+ fixed_drawer_door_handle_9: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
329
+ drawer_door_handle_9: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg"
319
330
  },
320
331
  installation_types: [125, 124]
321
332
  }
@@ -474,7 +485,7 @@ function WorkSpace(props) {
474
485
  // cm
475
486
  _length: 10,
476
487
  // inch
477
- _unit: 'in'
488
+ _unit: "in"
478
489
  })
479
490
  }
480
491
  };
@@ -487,7 +498,7 @@ function WorkSpace(props) {
487
498
  type: EXTERNAL_EVENT_DUPLICATE_ELEMENT,
488
499
  payload: {
489
500
  elementPrototype: ELEMENT_ITEM,
490
- elementId: '' // id of current operating element
501
+ elementId: "" // id of current operating element
491
502
  }
492
503
  };
493
504
  setExternalEvent(evt);
@@ -499,7 +510,7 @@ function WorkSpace(props) {
499
510
  type: EXTERNAL_EVENT_DELETE_ELEMENT,
500
511
  payload: {
501
512
  elementPrototype: ELEMENT_ITEM,
502
- elementId: '' // id of current operating element
513
+ elementId: "" // id of current operating element
503
514
  }
504
515
  };
505
516
  setExternalEvent(evt);
@@ -560,7 +571,7 @@ function WorkSpace(props) {
560
571
  type: EXTERNAL_EVENT_SET_FINISHING,
561
572
  payload: {
562
573
  category: FINISHING_TYPE.COUNTER_TOP,
563
- texture: 'https://media.test.diydesignspace.com/uploads/CountTop/202111302746_7/texture/Arabescato_texture.jpg'
574
+ texture: "https://media.test.diydesignspace.com/uploads/CountTop/202111302746_7/texture/Arabescato_texture.jpg"
564
575
  }
565
576
  };
566
577
  setExternalEvent(evt);
@@ -572,7 +583,7 @@ function WorkSpace(props) {
572
583
  type: EXTERNAL_EVENT_SET_FINISHING,
573
584
  payload: {
574
585
  category: FINISHING_TYPE.BACKSPLASH,
575
- texture: 'https://media.test.diydesignspace.com/uploads/CountTop/202305225249_14/texture/Unique_Marquina_texture.jpg'
586
+ texture: "https://media.test.diydesignspace.com/uploads/CountTop/202305225249_14/texture/Unique_Marquina_texture.jpg"
576
587
  }
577
588
  };
578
589
  setExternalEvent(evt);
@@ -584,7 +595,7 @@ function WorkSpace(props) {
584
595
  type: EXTERNAL_EVENT_SET_FINISHING,
585
596
  payload: {
586
597
  category: FINISHING_TYPE.FLOOR_STYLE,
587
- texture: 'https://media.test.diydesignspace.com/uploads/CountTop/202203163338_3/texture/oak-chestnut.webp'
598
+ texture: "https://media.test.diydesignspace.com/uploads/CountTop/202203163338_3/texture/oak-chestnut.webp"
588
599
  }
589
600
  };
590
601
  setExternalEvent(evt);
@@ -596,7 +607,7 @@ function WorkSpace(props) {
596
607
  type: EXTERNAL_EVENT_SET_FINISHING,
597
608
  payload: {
598
609
  category: FINISHING_TYPE.WALL_COLOR,
599
- color: '#bab863'
610
+ color: "#bab863"
600
611
  }
601
612
  };
602
613
  setExternalEvent(evt);
@@ -608,7 +619,7 @@ function WorkSpace(props) {
608
619
  type: EXTERNAL_EVENT_SET_FINISHING,
609
620
  payload: {
610
621
  category: FINISHING_TYPE.DOOR_HANDLE,
611
- gltf: 'https://media.test.diydesignspace.com/uploads/DoorHandle/202107294150_29/gltf/Handle1.gltf'
622
+ gltf: "https://media.test.diydesignspace.com/uploads/DoorHandle/202107294150_29/gltf/Handle1.gltf"
612
623
  }
613
624
  };
614
625
  setExternalEvent(evt);
@@ -635,7 +646,7 @@ function WorkSpace(props) {
635
646
  // cm
636
647
  _length: 27,
637
648
  // inch
638
- _unit: 'in'
649
+ _unit: "in"
639
650
  })
640
651
  }
641
652
  };
@@ -659,7 +670,90 @@ function WorkSpace(props) {
659
670
  };
660
671
  setExternalEvent(evt);
661
672
  }
662
- }, "Add room shape from width, height")), /*#__PURE__*/React.createElement(LiteRenderer, {
673
+ }, "Add room shape from width, height"), /*#__PURE__*/React.createElement(Button, {
674
+ actionType: "danger",
675
+ onClick: function onClick() {
676
+ var _tl = Math.floor(Math.random() * 50);
677
+ var tl = convert(_tl).from("in").to("cm");
678
+ var evt = {
679
+ type: EXTERNAL_EVENT_UPDATE_PROPERTY,
680
+ payload: {
681
+ propertyName: PROP_RESIZE_WIDTH,
682
+ value: new Map({
683
+ _length: _tl,
684
+ // inch
685
+ _unit: "in",
686
+ length: tl // cm
687
+ })
688
+ }
689
+ };
690
+ setExternalEvent(evt);
691
+ }
692
+ }, "random width"), /*#__PURE__*/React.createElement(Button, {
693
+ actionType: "primary",
694
+ onClick: function onClick() {
695
+ var evt = {
696
+ type: EXTERNAL_EVENT_ROTATE_PAN,
697
+ payload: {
698
+ rotateType: RIGHT
699
+ }
700
+ };
701
+ setExternalEvent(evt);
702
+ }
703
+ }, /*#__PURE__*/React.createElement("img", {
704
+ src: "/assets/img/svg/bottombar/spin-right.svg"
705
+ })), /*#__PURE__*/React.createElement(Button, {
706
+ actionType: "primary",
707
+ onClick: function onClick() {
708
+ var evt = {
709
+ type: EXTERNAL_EVENT_ROTATE_PAN,
710
+ payload: {
711
+ rotateType: LEFT
712
+ }
713
+ };
714
+ setExternalEvent(evt);
715
+ }
716
+ }, /*#__PURE__*/React.createElement("img", {
717
+ src: "/assets/img/svg/bottombar/spin-left.svg"
718
+ })), /*#__PURE__*/React.createElement(Button, {
719
+ actionType: "primary",
720
+ onClick: function onClick() {
721
+ var evt = {
722
+ type: EXTERNAL_EVENT_ROTATE_PAN,
723
+ payload: {
724
+ rotateType: TOP
725
+ }
726
+ };
727
+ setExternalEvent(evt);
728
+ }
729
+ }, /*#__PURE__*/React.createElement("img", {
730
+ src: "/assets/img/svg/bottombar/spin-up.svg"
731
+ })), /*#__PURE__*/React.createElement(Button, {
732
+ actionType: "primary",
733
+ onClick: function onClick() {
734
+ var evt = {
735
+ type: EXTERNAL_EVENT_ROTATE_PAN,
736
+ payload: {
737
+ rotateType: BOTTOM
738
+ }
739
+ };
740
+ setExternalEvent(evt);
741
+ }
742
+ }, /*#__PURE__*/React.createElement("img", {
743
+ src: "/assets/img/svg/bottombar/spin-down.svg"
744
+ })), /*#__PURE__*/React.createElement(Button, {
745
+ actionType: "danger",
746
+ onClick: function onClick() {
747
+ var evt = {
748
+ type: EXTERNAL_EVENT_PROJECT_SETTING,
749
+ payload: {
750
+ option: PROJECT_SETTING_OPTION.CHANGE_MEASUREMENT_UNIT,
751
+ value: "cm"
752
+ }
753
+ };
754
+ setExternalEvent(evt);
755
+ }
756
+ }, "Setting-MeasurementUnit-'cm'")), /*#__PURE__*/React.createElement(LiteRenderer, {
663
757
  width: props.width,
664
758
  height: props.height,
665
759
  configData: mockProps.configData,
@@ -677,7 +771,7 @@ function WorkSpace(props) {
677
771
  // externalEvent: { id?, type, payload } | null,
678
772
  // meta?: { filename?, lineno?, colno? }
679
773
  // }
680
- console.error('TOOL ERROR:', payload);
774
+ console.error("TOOL ERROR:", payload);
681
775
  }
682
776
  }));
683
777
  }
@@ -688,4 +782,4 @@ ReactDOM.render(/*#__PURE__*/React.createElement(ContainerDimensions, null, func
688
782
  width: width,
689
783
  height: height
690
784
  });
691
- }), document.getElementById('app') && document.getElementById('app'));
785
+ }), document.getElementById("app") && document.getElementById("app"));
package/es/index.js CHANGED
@@ -4,6 +4,9 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
4
  import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
5
5
  import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
6
6
  import _inherits from "@babel/runtime/helpers/esm/inherits";
7
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
8
+ 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; }
9
+ 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; }
7
10
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
11
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
9
12
  import React from 'react';
@@ -11,45 +14,111 @@ import ReactDOM from 'react-dom';
11
14
  import LiteRenderer from "./LiteRenderer";
12
15
  export function renderKitchenSimulator(container) {
13
16
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
- var setExternalEventFn = null;
15
-
16
- // Internal wrapper that exposes a state setter
17
+ var apiRef = null;
18
+ var idSeq = 0;
17
19
  var Wrapper = /*#__PURE__*/function (_React$Component) {
18
20
  function Wrapper(p) {
19
21
  var _this;
20
22
  _classCallCheck(this, Wrapper);
21
23
  _this = _callSuper(this, Wrapper, [p]);
24
+ _defineProperty(_this, "onExternalEventProcessed", function (eventId) {
25
+ // Resolve only if it matches the current event in flight
26
+ if (eventId === _this._currentId) {
27
+ try {
28
+ var _this$_currentResolve, _this2;
29
+ (_this$_currentResolve = (_this2 = _this)._currentResolve) === null || _this$_currentResolve === void 0 || _this$_currentResolve.call(_this2);
30
+ } finally {
31
+ _this._currentResolve = null;
32
+ _this._currentId = null;
33
+ _this.processing = false;
34
+ _this.processNext();
35
+ }
36
+ }
37
+ });
22
38
  _this.state = {
23
- externalEvent: p.externalEvent || null
39
+ externalEvent: null
40
+ };
41
+ _this.queue = [];
42
+ _this.processing = false;
43
+ _this._currentResolve = null;
44
+ _this._currentId = null;
45
+ apiRef = {
46
+ enqueueExternalEvent: function enqueueExternalEvent(ev) {
47
+ return _this.enqueue(ev);
48
+ }
24
49
  };
25
- setExternalEventFn = _this.setExternalEvent.bind(_this);
26
50
  return _this;
27
51
  }
28
52
  _inherits(Wrapper, _React$Component);
29
53
  return _createClass(Wrapper, [{
30
- key: "setExternalEvent",
31
- value: function setExternalEvent(newEvent) {
54
+ key: "enqueue",
55
+ value: function enqueue(ev) {
56
+ if (!ev) return Promise.resolve();
57
+ var id = ++idSeq;
58
+ var resolve;
59
+ var promise = new Promise(function (res) {
60
+ return resolve = res;
61
+ });
62
+ this.queue.push({
63
+ id: id,
64
+ ev: ev,
65
+ resolve: resolve
66
+ });
67
+ if (!this.processing) this.processNext();
68
+ return promise;
69
+ }
70
+ }, {
71
+ key: "processNext",
72
+ value: function processNext() {
73
+ var _this3 = this;
74
+ var next = this.queue.shift();
75
+ if (!next) {
76
+ this.processing = false;
77
+ return;
78
+ }
79
+ this.processing = true;
80
+
81
+ // Tool assigns __eventId (do NOT rely on host for this)
82
+ var payload = _objectSpread(_objectSpread({}, next.ev), {}, {
83
+ __eventId: next.id
84
+ });
85
+
86
+ // Edge trigger: clear then set so downstream sees prop change reliably
32
87
  this.setState({
33
- externalEvent: newEvent
88
+ externalEvent: null
89
+ }, function () {
90
+ _this3._currentResolve = next.resolve;
91
+ _this3._currentId = next.id;
92
+ _this3.setState({
93
+ externalEvent: payload
94
+ });
34
95
  });
35
96
  }
36
97
  }, {
37
98
  key: "render",
38
99
  value: function render() {
39
100
  return /*#__PURE__*/React.createElement(LiteRenderer, _extends({}, this.props, {
40
- externalEvent: this.state.externalEvent
101
+ externalEvent: this.state.externalEvent,
102
+ onExternalEventProcessed: this.onExternalEventProcessed
41
103
  }));
42
104
  }
43
105
  }]);
44
- }(React.Component); // Mount once
106
+ }(React.Component);
45
107
  ReactDOM.render(/*#__PURE__*/React.createElement(Wrapper, props), container);
46
108
  return {
47
- updateExternalEvent: function updateExternalEvent(newExternalEvent) {
48
- var _setExternalEventFn;
49
- (_setExternalEventFn = setExternalEventFn) === null || _setExternalEventFn === void 0 || _setExternalEventFn(newExternalEvent);
109
+ // Promise-based API (use this from host)
110
+ enqueueExternalEvent: function enqueueExternalEvent(ev) {
111
+ var _apiRef$enqueueExtern, _apiRef, _apiRef$enqueueExtern2;
112
+ return (_apiRef$enqueueExtern = (_apiRef = apiRef) === null || _apiRef === void 0 || (_apiRef$enqueueExtern2 = _apiRef.enqueueExternalEvent) === null || _apiRef$enqueueExtern2 === void 0 ? void 0 : _apiRef$enqueueExtern2.call(_apiRef, ev)) !== null && _apiRef$enqueueExtern !== void 0 ? _apiRef$enqueueExtern : Promise.resolve();
113
+ },
114
+ // old API still works, but no await possible
115
+ updateExternalEvent: function updateExternalEvent(ev) {
116
+ var _apiRef2, _apiRef2$enqueueExter;
117
+ (_apiRef2 = apiRef) === null || _apiRef2 === void 0 || (_apiRef2$enqueueExter = _apiRef2.enqueueExternalEvent) === null || _apiRef2$enqueueExter === void 0 || _apiRef2$enqueueExter.call(_apiRef2, ev);
50
118
  },
51
119
  unmount: function unmount() {
52
120
  ReactDOM.unmountComponentAtNode(container);
121
+ apiRef = null;
53
122
  }
54
123
  };
55
124
  }
@@ -13,7 +13,7 @@ export default function (state, action) {
13
13
  state = state.merge({
14
14
  sceneHistory: history.historyPush(state.sceneHistory, state.scene)
15
15
  });
16
- return Line.beginDrawingLine(state, action.layerID, action.x, action.y).updatedState;
16
+ return Line.beginDrawingLine(state, action.layerID, action.x, action.y, action.onInternalEvent).updatedState;
17
17
  case UPDATE_DRAWING_LINE:
18
18
  return Line.updateDrawingLine(state, action.x, action.y, action.relatedLines).updatedState;
19
19
  case STOP_DRAWING_LINE: