kitchen-simulator 3.0.3 → 3.1.0-alpha.13

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 (41) hide show
  1. package/es/LiteKitchenConfigurator.js +52 -29
  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 +8 -0
  9. package/es/class/line.js +14 -2
  10. package/es/components/viewer2d/item.js +36 -12
  11. package/es/components/viewer2d/utils.js +2 -2
  12. package/es/components/viewer2d/viewer2d.js +12 -10
  13. package/es/components/viewer3d/viewer3d.js +66 -74
  14. package/es/constants.js +6 -2
  15. package/es/devLiteRenderer.js +192 -98
  16. package/es/index.js +104 -14
  17. package/es/reducers/lines-reducer.js +1 -1
  18. package/es/utils/geometry.js +161 -0
  19. package/es/utils/isolate-event-handler.js +268 -114
  20. package/es/utils/molding.js +234 -2
  21. package/lib/LiteKitchenConfigurator.js +52 -29
  22. package/lib/LiteRenderer.js +5 -8
  23. package/lib/actions/lines-actions.js +3 -1
  24. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  25. package/lib/catalog/factories/area-factory-3d.js +14 -14
  26. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  27. package/lib/catalog/utils/item-loader.js +195 -194
  28. package/lib/class/item.js +8 -0
  29. package/lib/class/line.js +13 -1
  30. package/lib/components/viewer2d/item.js +36 -12
  31. package/lib/components/viewer2d/utils.js +2 -2
  32. package/lib/components/viewer2d/viewer2d.js +12 -10
  33. package/lib/components/viewer3d/viewer3d.js +66 -74
  34. package/lib/constants.js +11 -7
  35. package/lib/devLiteRenderer.js +186 -92
  36. package/lib/index.js +104 -14
  37. package/lib/reducers/lines-reducer.js +1 -1
  38. package/lib/utils/geometry.js +162 -0
  39. package/lib/utils/isolate-event-handler.js +267 -113
  40. package/lib/utils/molding.js +233 -0
  41. package/package.json +1 -1
@@ -11,6 +11,7 @@ var _reactContainerDimensions = _interopRequireDefault(require("react-container-
11
11
  var _projectItemsCatalog = _interopRequireDefault(require("./mocks/projectItemsCatalog.json"));
12
12
  var _mockProps = _interopRequireDefault(require("./mocks/mockProps.json"));
13
13
  var _cabinetPayload = _interopRequireDefault(require("./mocks/cabinetPayload2.json"));
14
+ var _cabinetPayload2 = _interopRequireDefault(require("./mocks/cabinetPayload.json"));
14
15
  var _appliancePayload = _interopRequireDefault(require("./mocks/appliancePayload.json"));
15
16
  var _doorStylePayload = _interopRequireDefault(require("./mocks/doorStylePayload2.json"));
16
17
  var _roomShapePayload = _interopRequireDefault(require("./mocks/roomShapePayload.json"));
@@ -24,10 +25,11 @@ var _reactDom = _interopRequireDefault(require("react-dom"));
24
25
  var _LiteRenderer = _interopRequireDefault(require("./LiteRenderer"));
25
26
  var _antd = require("antd");
26
27
  var _constants = require("./constants");
28
+ var _convertUnitsLite = require("./utils/convert-units-lite");
27
29
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
28
30
  // --- renderer props ---
29
31
  var options = {
30
- unit: 'in',
32
+ unit: "in",
31
33
  enable3D: true
32
34
  };
33
35
  var onInternalEvent = /*#__PURE__*/function () {
@@ -36,7 +38,7 @@ var onInternalEvent = /*#__PURE__*/function () {
36
38
  return _regenerator["default"].wrap(function (_context) {
37
39
  while (1) switch (_context.prev = _context.next) {
38
40
  case 0:
39
- console.log('EVENT:', evt.type, evt.value);
41
+ console.log("EVENT:", evt.type, evt.value);
40
42
  _t = evt.type;
41
43
  _context.next = _t === _constants.INTERNAL_EVENT_ITEMS_CATALOG ? 1 : 3;
42
44
  break;
@@ -55,7 +57,7 @@ var onInternalEvent = /*#__PURE__*/function () {
55
57
  return _ref.apply(this, arguments);
56
58
  };
57
59
  }();
58
- document.getElementById('app').style.display = 'block';
60
+ document.getElementById("app").style.display = "block";
59
61
  function WorkSpace(props) {
60
62
  var _useState = (0, _react.useState)(null),
61
63
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -217,6 +219,15 @@ function WorkSpace(props) {
217
219
  setExternalEvent(evt);
218
220
  }
219
221
  }, "Add B12 Cabinet"), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
222
+ actionType: "danger",
223
+ onClick: function onClick() {
224
+ var evt = {
225
+ type: _constants.EXTERNAL_EVENT_ADD_ITEM,
226
+ payload: _cabinetPayload2["default"]
227
+ };
228
+ setExternalEvent(evt);
229
+ }
230
+ }, "Add W0930 Cabinet"), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
220
231
  actionType: "danger",
221
232
  onClick: function onClick() {
222
233
  var evt = {
@@ -235,91 +246,91 @@ function WorkSpace(props) {
235
246
  var evt = {
236
247
  type: _constants.EXTERNAL_EVENT_ADD_ROOM_SHAPE,
237
248
  payload: {
238
- roomShapeType: 'rectangle',
249
+ roomShapeType: "rectangle",
239
250
  width: 250,
240
251
  height: 100,
241
252
  doorStyle: {
242
253
  id: 36,
243
- type: 'door',
244
- name: 'Brilliant White Shaker',
245
- thumbnail: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/thumbnail/Brilliant%20White%20Shaker%20-%20RTA.jpg',
246
- texture: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
247
- color: '#ffffff',
254
+ type: "door",
255
+ name: "Brilliant White Shaker",
256
+ thumbnail: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/thumbnail/Brilliant%20White%20Shaker%20-%20RTA.jpg",
257
+ texture: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
258
+ color: "#ffffff",
248
259
  glossness: 1,
249
260
  door_style_id: 42,
250
261
  brightness: 1,
251
- sku: 'SW',
252
- color_family: ',10,',
253
- color_sku_alias: 'SW',
254
- door_style_name: 'Shaker',
255
- install: '',
262
+ sku: "SW",
263
+ color_family: ",10,",
264
+ color_sku_alias: "SW",
265
+ door_style_name: "Shaker",
266
+ install: "",
256
267
  doorStyles: {
257
- base: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
258
- counttop: 'https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg',
259
- interior: 'https://media.test.diydesignspace.com/uploads/assets/default/maple.jpg',
260
- base_door_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
261
- base_fixed_drawer_door_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
262
- base_drawer_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
263
- base_drawer_door_1: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
264
- door_handle_1: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
265
- fixed_drawer_door_handle_1: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
266
- drawer_door_handle_1: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
267
- base_door_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
268
- base_fixed_drawer_door_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
269
- base_drawer_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
270
- base_drawer_door_2: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
271
- door_handle_2: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
272
- fixed_drawer_door_handle_2: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
273
- drawer_door_handle_2: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
274
- base_door_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
275
- base_fixed_drawer_door_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
276
- base_drawer_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
277
- base_drawer_door_3: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
278
- door_handle_3: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
279
- fixed_drawer_door_handle_3: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
280
- drawer_door_handle_3: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
281
- base_door_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
282
- base_fixed_drawer_door_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
283
- base_drawer_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
284
- base_drawer_door_4: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
285
- door_handle_4: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
286
- fixed_drawer_door_handle_4: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
287
- drawer_door_handle_4: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
288
- base_door_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
289
- base_fixed_drawer_door_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
290
- base_drawer_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
291
- base_drawer_door_5: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
292
- door_handle_5: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
293
- fixed_drawer_door_handle_5: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
294
- drawer_door_handle_5: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
295
- base_door_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
296
- base_fixed_drawer_door_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
297
- base_drawer_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
298
- base_drawer_door_6: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
299
- door_handle_6: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
300
- fixed_drawer_door_handle_6: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
301
- drawer_door_handle_6: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
302
- base_door_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
303
- base_fixed_drawer_door_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
304
- base_drawer_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
305
- base_drawer_door_7: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
306
- door_handle_7: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
307
- fixed_drawer_door_handle_7: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
308
- drawer_door_handle_7: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
309
- base_door_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
310
- base_fixed_drawer_door_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
311
- base_drawer_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
312
- base_drawer_door_8: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
313
- door_handle_8: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
314
- fixed_drawer_door_handle_8: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
315
- drawer_door_handle_8: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
316
- base_door_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
317
- base_fixed_drawer_door_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
318
- base_drawer_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
319
- base_drawer_door_9: 'https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg',
320
- door_handle_9: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
321
- fixed_drawer_door_handle_9: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg',
322
- drawer_door_handle_9: 'https://media.test.diydesignspace.com/uploads/assets/default/steel.jpg'
268
+ base: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
269
+ counttop: "https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg",
270
+ interior: "http://127.0.0.1:4002/uploads/assets/default/maple.jpg",
271
+ base_door_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
272
+ base_fixed_drawer_door_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
273
+ base_drawer_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
274
+ base_drawer_door_1: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
275
+ door_handle_1: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
276
+ fixed_drawer_door_handle_1: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
277
+ drawer_door_handle_1: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
278
+ base_door_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
279
+ base_fixed_drawer_door_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
280
+ base_drawer_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
281
+ base_drawer_door_2: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
282
+ door_handle_2: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
283
+ fixed_drawer_door_handle_2: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
284
+ drawer_door_handle_2: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
285
+ base_door_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
286
+ base_fixed_drawer_door_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
287
+ base_drawer_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
288
+ base_drawer_door_3: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
289
+ door_handle_3: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
290
+ fixed_drawer_door_handle_3: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
291
+ drawer_door_handle_3: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
292
+ base_door_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
293
+ base_fixed_drawer_door_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
294
+ base_drawer_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
295
+ base_drawer_door_4: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
296
+ door_handle_4: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
297
+ fixed_drawer_door_handle_4: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
298
+ drawer_door_handle_4: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
299
+ base_door_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
300
+ base_fixed_drawer_door_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
301
+ base_drawer_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
302
+ base_drawer_door_5: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
303
+ door_handle_5: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
304
+ fixed_drawer_door_handle_5: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
305
+ drawer_door_handle_5: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
306
+ base_door_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
307
+ base_fixed_drawer_door_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
308
+ base_drawer_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
309
+ base_drawer_door_6: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
310
+ door_handle_6: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
311
+ fixed_drawer_door_handle_6: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
312
+ drawer_door_handle_6: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
313
+ base_door_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
314
+ base_fixed_drawer_door_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
315
+ base_drawer_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
316
+ base_drawer_door_7: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
317
+ door_handle_7: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
318
+ fixed_drawer_door_handle_7: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
319
+ drawer_door_handle_7: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
320
+ base_door_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
321
+ base_fixed_drawer_door_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
322
+ base_drawer_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
323
+ base_drawer_door_8: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
324
+ door_handle_8: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
325
+ fixed_drawer_door_handle_8: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
326
+ drawer_door_handle_8: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
327
+ base_door_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
328
+ base_fixed_drawer_door_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
329
+ base_drawer_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
330
+ base_drawer_door_9: "https://media.test.diydesignspace.com/uploads/DoorColor/202105065453_36/texture/White1px.jpeg",
331
+ door_handle_9: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
332
+ fixed_drawer_door_handle_9: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg",
333
+ drawer_door_handle_9: "http://127.0.0.1:4002/uploads/assets/default/steel.jpg"
323
334
  },
324
335
  installation_types: [125, 124]
325
336
  }
@@ -478,7 +489,7 @@ function WorkSpace(props) {
478
489
  // cm
479
490
  _length: 10,
480
491
  // inch
481
- _unit: 'in'
492
+ _unit: "in"
482
493
  })
483
494
  }
484
495
  };
@@ -491,7 +502,7 @@ function WorkSpace(props) {
491
502
  type: _constants.EXTERNAL_EVENT_DUPLICATE_ELEMENT,
492
503
  payload: {
493
504
  elementPrototype: _constants.ELEMENT_ITEM,
494
- elementId: '' // id of current operating element
505
+ elementId: "" // id of current operating element
495
506
  }
496
507
  };
497
508
  setExternalEvent(evt);
@@ -503,7 +514,7 @@ function WorkSpace(props) {
503
514
  type: _constants.EXTERNAL_EVENT_DELETE_ELEMENT,
504
515
  payload: {
505
516
  elementPrototype: _constants.ELEMENT_ITEM,
506
- elementId: '' // id of current operating element
517
+ elementId: "" // id of current operating element
507
518
  }
508
519
  };
509
520
  setExternalEvent(evt);
@@ -564,7 +575,7 @@ function WorkSpace(props) {
564
575
  type: _constants.EXTERNAL_EVENT_SET_FINISHING,
565
576
  payload: {
566
577
  category: _constants.FINISHING_TYPE.COUNTER_TOP,
567
- texture: 'https://media.test.diydesignspace.com/uploads/CountTop/202111302746_7/texture/Arabescato_texture.jpg'
578
+ texture: "https://media.test.diydesignspace.com/uploads/CountTop/202111302746_7/texture/Arabescato_texture.jpg"
568
579
  }
569
580
  };
570
581
  setExternalEvent(evt);
@@ -576,7 +587,7 @@ function WorkSpace(props) {
576
587
  type: _constants.EXTERNAL_EVENT_SET_FINISHING,
577
588
  payload: {
578
589
  category: _constants.FINISHING_TYPE.BACKSPLASH,
579
- texture: 'https://media.test.diydesignspace.com/uploads/CountTop/202305225249_14/texture/Unique_Marquina_texture.jpg'
590
+ texture: "https://media.test.diydesignspace.com/uploads/CountTop/202305225249_14/texture/Unique_Marquina_texture.jpg"
580
591
  }
581
592
  };
582
593
  setExternalEvent(evt);
@@ -588,7 +599,7 @@ function WorkSpace(props) {
588
599
  type: _constants.EXTERNAL_EVENT_SET_FINISHING,
589
600
  payload: {
590
601
  category: _constants.FINISHING_TYPE.FLOOR_STYLE,
591
- texture: 'https://media.test.diydesignspace.com/uploads/CountTop/202203163338_3/texture/oak-chestnut.webp'
602
+ texture: "https://media.test.diydesignspace.com/uploads/CountTop/202203163338_3/texture/oak-chestnut.webp"
592
603
  }
593
604
  };
594
605
  setExternalEvent(evt);
@@ -600,7 +611,7 @@ function WorkSpace(props) {
600
611
  type: _constants.EXTERNAL_EVENT_SET_FINISHING,
601
612
  payload: {
602
613
  category: _constants.FINISHING_TYPE.WALL_COLOR,
603
- color: '#bab863'
614
+ color: "#bab863"
604
615
  }
605
616
  };
606
617
  setExternalEvent(evt);
@@ -612,7 +623,7 @@ function WorkSpace(props) {
612
623
  type: _constants.EXTERNAL_EVENT_SET_FINISHING,
613
624
  payload: {
614
625
  category: _constants.FINISHING_TYPE.DOOR_HANDLE,
615
- gltf: 'https://media.test.diydesignspace.com/uploads/DoorHandle/202107294150_29/gltf/Handle1.gltf'
626
+ gltf: "https://media.test.diydesignspace.com/uploads/DoorHandle/202107294150_29/gltf/Handle1.gltf"
616
627
  }
617
628
  };
618
629
  setExternalEvent(evt);
@@ -639,7 +650,7 @@ function WorkSpace(props) {
639
650
  // cm
640
651
  _length: 27,
641
652
  // inch
642
- _unit: 'in'
653
+ _unit: "in"
643
654
  })
644
655
  }
645
656
  };
@@ -663,7 +674,90 @@ function WorkSpace(props) {
663
674
  };
664
675
  setExternalEvent(evt);
665
676
  }
666
- }, "Add room shape from width, height")), /*#__PURE__*/_react["default"].createElement(_LiteRenderer["default"], {
677
+ }, "Add room shape from width, height"), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
678
+ actionType: "danger",
679
+ onClick: function onClick() {
680
+ var _tl = Math.floor(Math.random() * 50);
681
+ var tl = (0, _convertUnitsLite.convert)(_tl).from("in").to("cm");
682
+ var evt = {
683
+ type: _constants.EXTERNAL_EVENT_UPDATE_PROPERTY,
684
+ payload: {
685
+ propertyName: _constants.PROP_RESIZE_WIDTH,
686
+ value: new _immutable.Map({
687
+ _length: _tl,
688
+ // inch
689
+ _unit: "in",
690
+ length: tl // cm
691
+ })
692
+ }
693
+ };
694
+ setExternalEvent(evt);
695
+ }
696
+ }, "random width"), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
697
+ actionType: "primary",
698
+ onClick: function onClick() {
699
+ var evt = {
700
+ type: _constants.EXTERNAL_EVENT_ROTATE_PAN,
701
+ payload: {
702
+ rotateType: _constants.RIGHT
703
+ }
704
+ };
705
+ setExternalEvent(evt);
706
+ }
707
+ }, /*#__PURE__*/_react["default"].createElement("img", {
708
+ src: "/assets/img/svg/bottombar/spin-right.svg"
709
+ })), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
710
+ actionType: "primary",
711
+ onClick: function onClick() {
712
+ var evt = {
713
+ type: _constants.EXTERNAL_EVENT_ROTATE_PAN,
714
+ payload: {
715
+ rotateType: _constants.LEFT
716
+ }
717
+ };
718
+ setExternalEvent(evt);
719
+ }
720
+ }, /*#__PURE__*/_react["default"].createElement("img", {
721
+ src: "/assets/img/svg/bottombar/spin-left.svg"
722
+ })), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
723
+ actionType: "primary",
724
+ onClick: function onClick() {
725
+ var evt = {
726
+ type: _constants.EXTERNAL_EVENT_ROTATE_PAN,
727
+ payload: {
728
+ rotateType: _constants.TOP
729
+ }
730
+ };
731
+ setExternalEvent(evt);
732
+ }
733
+ }, /*#__PURE__*/_react["default"].createElement("img", {
734
+ src: "/assets/img/svg/bottombar/spin-up.svg"
735
+ })), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
736
+ actionType: "primary",
737
+ onClick: function onClick() {
738
+ var evt = {
739
+ type: _constants.EXTERNAL_EVENT_ROTATE_PAN,
740
+ payload: {
741
+ rotateType: _constants.BOTTOM
742
+ }
743
+ };
744
+ setExternalEvent(evt);
745
+ }
746
+ }, /*#__PURE__*/_react["default"].createElement("img", {
747
+ src: "/assets/img/svg/bottombar/spin-down.svg"
748
+ })), /*#__PURE__*/_react["default"].createElement(_antd.Button, {
749
+ actionType: "danger",
750
+ onClick: function onClick() {
751
+ var evt = {
752
+ type: _constants.EXTERNAL_EVENT_PROJECT_SETTING,
753
+ payload: {
754
+ option: _constants.PROJECT_SETTING_OPTION.CHANGE_MEASUREMENT_UNIT,
755
+ value: "cm"
756
+ }
757
+ };
758
+ setExternalEvent(evt);
759
+ }
760
+ }, "Setting-MeasurementUnit-'cm'")), /*#__PURE__*/_react["default"].createElement(_LiteRenderer["default"], {
667
761
  width: props.width,
668
762
  height: props.height,
669
763
  configData: _mockProps["default"].configData,
@@ -681,7 +775,7 @@ function WorkSpace(props) {
681
775
  // externalEvent: { id?, type, payload } | null,
682
776
  // meta?: { filename?, lineno?, colno? }
683
777
  // }
684
- console.error('TOOL ERROR:', payload);
778
+ console.error("TOOL ERROR:", payload);
685
779
  }
686
780
  }));
687
781
  }
@@ -692,4 +786,4 @@ _reactDom["default"].render(/*#__PURE__*/_react["default"].createElement(_reactC
692
786
  width: width,
693
787
  height: height
694
788
  });
695
- }), document.getElementById('app') && document.getElementById('app'));
789
+ }), document.getElementById("app") && document.getElementById("app"));
package/lib/index.js CHANGED
@@ -12,52 +12,142 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
12
12
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
13
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16
  var _react = _interopRequireDefault(require("react"));
16
17
  var _reactDom = _interopRequireDefault(require("react-dom"));
17
18
  var _LiteRenderer = _interopRequireDefault(require("./LiteRenderer"));
19
+ var _client = require("react-dom/client");
20
+ 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; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
22
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
19
23
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
20
24
  function renderKitchenSimulator(container) {
21
25
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
22
- var setExternalEventFn = null;
23
-
24
- // Internal wrapper that exposes a state setter
26
+ var apiRef = null;
27
+ var idSeq = 0;
25
28
  var Wrapper = /*#__PURE__*/function (_React$Component) {
26
29
  function Wrapper(p) {
27
30
  var _this;
28
31
  (0, _classCallCheck2["default"])(this, Wrapper);
29
32
  _this = _callSuper(this, Wrapper, [p]);
33
+ (0, _defineProperty2["default"])(_this, "onExternalEventProcessed", function (eventId) {
34
+ // Resolve only if it matches the current event in flight
35
+ if (eventId === _this._currentId) {
36
+ try {
37
+ var _this$_currentResolve, _this2;
38
+ (_this$_currentResolve = (_this2 = _this)._currentResolve) === null || _this$_currentResolve === void 0 || _this$_currentResolve.call(_this2);
39
+ } finally {
40
+ _this._currentResolve = null;
41
+ _this._currentId = null;
42
+ _this.processing = false;
43
+ _this.processNext();
44
+ }
45
+ }
46
+ });
30
47
  _this.state = {
31
- externalEvent: p.externalEvent || null
48
+ externalEvent: null
49
+ };
50
+ _this.queue = [];
51
+ _this.processing = false;
52
+ _this._currentResolve = null;
53
+ _this._currentId = null;
54
+ apiRef = {
55
+ enqueueExternalEvent: function enqueueExternalEvent(ev) {
56
+ return _this.enqueue(ev);
57
+ }
32
58
  };
33
- setExternalEventFn = _this.setExternalEvent.bind(_this);
34
59
  return _this;
35
60
  }
36
61
  (0, _inherits2["default"])(Wrapper, _React$Component);
37
62
  return (0, _createClass2["default"])(Wrapper, [{
38
- key: "setExternalEvent",
39
- value: function setExternalEvent(newEvent) {
63
+ key: "enqueue",
64
+ value: function enqueue(ev) {
65
+ var _ev$waitForAckMs,
66
+ _this3 = this;
67
+ if (!ev) return Promise.resolve();
68
+ var id = ++idSeq;
69
+ var _resolve;
70
+ var promise = new Promise(function (res) {
71
+ return _resolve = res;
72
+ });
73
+
74
+ // failsafe: resolve after X ms no matter what (avoid host deadlock)
75
+ var timeoutMs = (_ev$waitForAckMs = ev === null || ev === void 0 ? void 0 : ev.waitForAckMs) !== null && _ev$waitForAckMs !== void 0 ? _ev$waitForAckMs : 15000;
76
+ var t = setTimeout(function () {
77
+ if (_this3._currentId === id) {
78
+ console.warn('External event ack timeout', id, ev);
79
+ _this3.onExternalEventProcessed(id); // force-drain
80
+ }
81
+ }, timeoutMs);
82
+ this.queue.push({
83
+ id: id,
84
+ ev: ev,
85
+ resolve: function resolve() {
86
+ clearTimeout(t);
87
+ _resolve();
88
+ }
89
+ });
90
+ if (!this.processing) this.processNext();
91
+ return promise;
92
+ }
93
+ }, {
94
+ key: "processNext",
95
+ value: function processNext() {
96
+ var _this4 = this;
97
+ var next = this.queue.shift();
98
+ if (!next) {
99
+ this.processing = false;
100
+ return;
101
+ }
102
+ this.processing = true;
103
+
104
+ // Tool assigns __eventId (do NOT rely on host for this)
105
+ var payload = _objectSpread(_objectSpread({}, next.ev), {}, {
106
+ __eventId: next.id
107
+ });
108
+
109
+ // Edge trigger: clear then set so downstream sees prop change reliably
40
110
  this.setState({
41
- externalEvent: newEvent
111
+ externalEvent: null
112
+ }, function () {
113
+ _this4._currentResolve = next.resolve;
114
+ _this4._currentId = next.id;
115
+ _this4.setState({
116
+ externalEvent: payload
117
+ });
42
118
  });
43
119
  }
44
120
  }, {
45
121
  key: "render",
46
122
  value: function render() {
47
123
  return /*#__PURE__*/_react["default"].createElement(_LiteRenderer["default"], (0, _extends2["default"])({}, this.props, {
48
- externalEvent: this.state.externalEvent
124
+ externalEvent: this.state.externalEvent,
125
+ onExternalEventProcessed: this.onExternalEventProcessed
49
126
  }));
50
127
  }
51
128
  }]);
52
- }(_react["default"].Component); // Mount once
53
- _reactDom["default"].render(/*#__PURE__*/_react["default"].createElement(Wrapper, props), container);
129
+ }(_react["default"].Component);
130
+ var ROOT_KEY = '__kitchenSimulatorRoot__';
131
+ var root = container[ROOT_KEY];
132
+ if (!root) {
133
+ root = (0, _client.createRoot)(container);
134
+ container[ROOT_KEY] = root;
135
+ }
136
+ root.render(/*#__PURE__*/_react["default"].createElement(Wrapper, props), container);
54
137
  return {
55
- updateExternalEvent: function updateExternalEvent(newExternalEvent) {
56
- var _setExternalEventFn;
57
- (_setExternalEventFn = setExternalEventFn) === null || _setExternalEventFn === void 0 || _setExternalEventFn(newExternalEvent);
138
+ // Promise-based API (use this from host)
139
+ enqueueExternalEvent: function enqueueExternalEvent(ev) {
140
+ var _apiRef$enqueueExtern, _apiRef, _apiRef$enqueueExtern2;
141
+ 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();
142
+ },
143
+ // old API still works, but no await possible
144
+ updateExternalEvent: function updateExternalEvent(ev) {
145
+ var _apiRef2, _apiRef2$enqueueExter;
146
+ (_apiRef2 = apiRef) === null || _apiRef2 === void 0 || (_apiRef2$enqueueExter = _apiRef2.enqueueExternalEvent) === null || _apiRef2$enqueueExter === void 0 || _apiRef2$enqueueExter.call(_apiRef2, ev);
58
147
  },
59
148
  unmount: function unmount() {
60
149
  _reactDom["default"].unmountComponentAtNode(container);
150
+ apiRef = null;
61
151
  }
62
152
  };
63
153
  }
@@ -19,7 +19,7 @@ function _default(state, action) {
19
19
  state = state.merge({
20
20
  sceneHistory: _export2.history.historyPush(state.sceneHistory, state.scene)
21
21
  });
22
- return _export.Line.beginDrawingLine(state, action.layerID, action.x, action.y).updatedState;
22
+ return _export.Line.beginDrawingLine(state, action.layerID, action.x, action.y, action.onInternalEvent).updatedState;
23
23
  case _constants.UPDATE_DRAWING_LINE:
24
24
  return _export.Line.updateDrawingLine(state, action.x, action.y, action.relatedLines).updatedState;
25
25
  case _constants.STOP_DRAWING_LINE: