kitchen-simulator 1.0.0-alin.8 → 1.0.0-clark.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/LiteKitchenConfigurator.js +17 -175
- package/es/LiteRenderer.js +29 -114
- package/es/actions/items-actions.js +11 -6
- package/es/actions/project-actions.js +2 -3
- package/es/assets/img/svg/logo.svg +11 -0
- package/es/assets/img/svg/logo_with_text.svg +25 -0
- package/es/catalog/areas/area/planner-element.js +10 -5
- package/es/catalog/catalog.js +1 -4
- package/es/catalog/factories/wall-factory.js +8 -8
- package/es/catalog/lines/wall/planner-element.js +18 -9
- package/es/catalog/utils/exporter.js +5 -1
- package/es/catalog/utils/item-loader.js +112 -31
- package/es/catalog/utils/mtl-loader.js +2 -2
- package/es/catalog/utils/obj-loader.js +2 -2
- package/es/class/item.js +111 -145
- package/es/class/line.js +27 -12
- package/es/class/project.js +9 -23
- package/es/components/content.js +10 -5
- package/es/components/viewer2d/grids/grid-streak.js +1 -1
- package/es/components/viewer2d/item.js +20 -81
- package/es/components/viewer2d/layer.js +1 -1
- package/es/components/viewer2d/line.js +334 -259
- package/es/components/viewer2d/ruler.js +15 -35
- package/es/components/viewer2d/rulerDist.js +18 -32
- package/es/components/viewer2d/viewer2d.js +123 -95
- package/es/components/viewer3d/libs/mtl-loader.js +2 -2
- package/es/components/viewer3d/libs/obj-loader.js +2 -2
- package/es/components/viewer3d/libs/orbit-controls.js +3 -4
- package/es/components/viewer3d/libs/pointer-lock-controls.js +6 -7
- package/es/components/viewer3d/viewer3d.js +91 -70
- package/es/constants.js +38 -3
- package/es/devLiteRenderer.js +165 -10
- package/es/index.js +52 -3
- package/es/models.js +7 -5
- package/es/reducers/items-reducer.js +8 -4
- package/es/reducers/project-reducer.js +1 -1
- package/es/shared-style.js +4 -4
- package/es/utils/get-edges-of-subgraphs.js +1 -1
- package/es/utils/graph-cycles.js +1 -1
- package/es/utils/graph.js +1 -1
- package/es/utils/helper.js +1 -1
- package/es/utils/isolate-event-handler.js +567 -46
- package/lib/LiteKitchenConfigurator.js +18 -176
- package/lib/LiteRenderer.js +29 -114
- package/lib/actions/items-actions.js +11 -5
- package/lib/actions/project-actions.js +2 -3
- package/lib/assets/img/svg/logo.svg +11 -0
- package/lib/assets/img/svg/logo_with_text.svg +25 -0
- package/lib/catalog/areas/area/planner-element.js +11 -5
- package/lib/catalog/catalog.js +1 -4
- package/lib/catalog/factories/wall-factory.js +8 -8
- package/lib/catalog/lines/wall/planner-element.js +19 -9
- package/lib/catalog/utils/exporter.js +5 -1
- package/lib/catalog/utils/item-loader.js +111 -31
- package/lib/catalog/utils/mtl-loader.js +9 -2
- package/lib/catalog/utils/obj-loader.js +10 -2
- package/lib/class/item.js +111 -145
- package/lib/class/line.js +27 -12
- package/lib/class/project.js +9 -23
- package/lib/components/content.js +10 -5
- package/lib/components/viewer2d/grids/grid-streak.js +1 -1
- package/lib/components/viewer2d/item.js +20 -81
- package/lib/components/viewer2d/layer.js +1 -1
- package/lib/components/viewer2d/line.js +334 -258
- package/lib/components/viewer2d/ruler.js +15 -35
- package/lib/components/viewer2d/rulerDist.js +18 -32
- package/lib/components/viewer2d/viewer2d.js +121 -93
- package/lib/components/viewer3d/libs/mtl-loader.js +9 -2
- package/lib/components/viewer3d/libs/obj-loader.js +9 -2
- package/lib/components/viewer3d/libs/orbit-controls.js +11 -5
- package/lib/components/viewer3d/libs/pointer-lock-controls.js +13 -7
- package/lib/components/viewer3d/viewer3d.js +90 -69
- package/lib/constants.js +42 -7
- package/lib/devLiteRenderer.js +164 -9
- package/lib/index.js +52 -3
- package/lib/models.js +7 -5
- package/lib/reducers/items-reducer.js +7 -3
- package/lib/reducers/project-reducer.js +1 -1
- package/lib/shared-style.js +4 -4
- package/lib/utils/get-edges-of-subgraphs.js +6 -1
- package/lib/utils/graph-cycles.js +7 -8
- package/lib/utils/graph.js +6 -1
- package/lib/utils/helper.js +2 -2
- package/lib/utils/isolate-event-handler.js +567 -45
- package/package.json +3 -3
|
@@ -8,15 +8,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
11
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
13
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
16
15
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
16
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
18
17
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
20
18
|
var _axios = _interopRequireDefault(require("axios"));
|
|
21
19
|
var _convertUnitsLite = require("./utils/convert-units-lite");
|
|
22
20
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -33,7 +31,7 @@ var _objectsUtils = require("./utils/objects-utils");
|
|
|
33
31
|
var _version = require("./version");
|
|
34
32
|
var _isolateEventHandler = require("./utils/isolate-event-handler");
|
|
35
33
|
var _excluded = ["width", "height", "state", "stateExtractor"];
|
|
36
|
-
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
|
|
34
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
37
35
|
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; }
|
|
38
36
|
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; }
|
|
39
37
|
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)); }
|
|
@@ -51,23 +49,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
51
49
|
_this = _callSuper(this, LiteKitchenConfigurator, [props]);
|
|
52
50
|
|
|
53
51
|
// utm tracking
|
|
54
|
-
(0, _defineProperty2["default"])(_this, "handleBeforeUnload", function (e) {
|
|
55
|
-
var areas = _this.props.stateExtractor(_this.props.state).getIn(['scene', 'layers', _this.props.stateExtractor(_this.props.state).scene.selectedLayer, 'areas']);
|
|
56
|
-
if (!_this.state.isSaved && areas.size > 0) {
|
|
57
|
-
setTimeout(function () {
|
|
58
|
-
_this.setState({
|
|
59
|
-
savePromptVisible: true,
|
|
60
|
-
isLeaving: true
|
|
61
|
-
});
|
|
62
|
-
}, 500);
|
|
63
|
-
_this.saveProjectToStorage();
|
|
64
|
-
|
|
65
|
-
// This line is required to trigger the browser confirmation dialog
|
|
66
|
-
e.preventDefault();
|
|
67
|
-
e.returnValue = '';
|
|
68
|
-
return '';
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
52
|
var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
|
|
72
53
|
var utmStrEncoded = utmDetailParams.get('details');
|
|
73
54
|
var utmRequestData = null;
|
|
@@ -340,139 +321,20 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
340
321
|
catalog: this.props.catalog
|
|
341
322
|
});
|
|
342
323
|
}
|
|
343
|
-
}, {
|
|
344
|
-
key: "saveProjectToStorage",
|
|
345
|
-
value: function saveProjectToStorage() {
|
|
346
|
-
var _this$props = this.props,
|
|
347
|
-
state = _this$props.state,
|
|
348
|
-
stateExtractor = _this$props.stateExtractor;
|
|
349
|
-
var extractedState = stateExtractor(state);
|
|
350
|
-
var projectData = JSON.stringify(extractedState.get('scene').toJS());
|
|
351
|
-
sessionStorage.setItem(window.location.href, projectData);
|
|
352
|
-
}
|
|
353
324
|
}, {
|
|
354
325
|
key: "componentDidMount",
|
|
355
326
|
value: function componentDidMount() {
|
|
356
|
-
var _this3 = this;
|
|
357
|
-
window.addEventListener('beforeunload', this.handleBeforeUnload);
|
|
358
327
|
console.log('context =>', this.context);
|
|
359
328
|
window.forRedo = [];
|
|
360
329
|
var store = this.context.store;
|
|
361
|
-
var _this$
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
stateExtractor = _this$props2.stateExtractor,
|
|
365
|
-
state = _this$props2.state,
|
|
366
|
-
plugins = _this$props2.plugins;
|
|
367
|
-
projectActions.initCatalog(catalog);
|
|
368
|
-
var match = this.props.match;
|
|
369
|
-
if (sessionStorage.getItem(window.location.href)) {
|
|
370
|
-
var jsonData = sessionStorage.getItem(window.location.href);
|
|
371
|
-
projectActions.loadProject(JSON.parse(jsonData), this.props.categoryData);
|
|
372
|
-
sessionStorage.removeItem(window.location.href);
|
|
373
|
-
return;
|
|
374
|
-
}
|
|
330
|
+
var _this$props = this.props,
|
|
331
|
+
stateExtractor = _this$props.stateExtractor,
|
|
332
|
+
plugins = _this$props.plugins;
|
|
375
333
|
var newplugins = (0, _toConsumableArray2["default"])(plugins);
|
|
376
334
|
newplugins.forEach(function (newplugin) {
|
|
377
335
|
return newplugin(store, stateExtractor);
|
|
378
336
|
});
|
|
379
|
-
if (match && match.params.pid === undefined) {
|
|
380
|
-
projectActions.newProject();
|
|
381
|
-
sessionStorage.setItem('projectTitle', 'Untitled');
|
|
382
|
-
projectActions.rename('Untitled');
|
|
383
|
-
sessionStorage.removeItem('projectId');
|
|
384
|
-
sessionStorage.removeItem('email');
|
|
385
|
-
sessionStorage.removeItem('firstName');
|
|
386
|
-
sessionStorage.removeItem('lastName');
|
|
387
|
-
sessionStorage.removeItem('usedObjects');
|
|
388
|
-
return;
|
|
389
|
-
}
|
|
390
|
-
if (match && match.params.pid !== undefined) {
|
|
391
|
-
if (match.params.pid === 'new') {
|
|
392
|
-
projectActions.newProject();
|
|
393
|
-
sessionStorage.setItem('projectTitle', 'Untitled');
|
|
394
|
-
projectActions.rename('Untitled');
|
|
395
|
-
sessionStorage.removeItem('projectId');
|
|
396
|
-
sessionStorage.removeItem('email');
|
|
397
|
-
sessionStorage.removeItem('firstName');
|
|
398
|
-
sessionStorage.removeItem('lastName');
|
|
399
|
-
sessionStorage.removeItem('usedObjects');
|
|
400
|
-
} else {
|
|
401
|
-
_axios["default"].post("".concat(constants.API_SERVER_URL, "/api/project/loadPidProject"), {
|
|
402
|
-
pid: match.params.pid,
|
|
403
|
-
visualizerName: sessionStorage.getItem('visualizerName')
|
|
404
|
-
}).then(/*#__PURE__*/function () {
|
|
405
|
-
var _ref = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(response) {
|
|
406
|
-
var projectElement, jsonData, _t;
|
|
407
|
-
return _regenerator["default"].wrap(function (_context) {
|
|
408
|
-
while (1) switch (_context.prev = _context.next) {
|
|
409
|
-
case 0:
|
|
410
|
-
projectElement = response.data.projectElement;
|
|
411
|
-
if (!(projectElement.length === 0)) {
|
|
412
|
-
_context.next = 1;
|
|
413
|
-
break;
|
|
414
|
-
}
|
|
415
|
-
return _context.abrupt("return");
|
|
416
|
-
case 1:
|
|
417
|
-
sessionStorage.setItem('projectTitle', projectElement[0].title);
|
|
418
|
-
projectActions.rename(projectElement[0].title);
|
|
419
|
-
sessionStorage.setItem('projectId', projectElement[0].id);
|
|
420
|
-
sessionStorage.setItem('email', projectElement[0].email);
|
|
421
|
-
sessionStorage.setItem('firstName', projectElement[0].firstName);
|
|
422
|
-
sessionStorage.setItem('lastName', projectElement[0].lastName);
|
|
423
|
-
sessionStorage.setItem('phone', projectElement[0].phone);
|
|
424
|
-
if (!projectElement[0].project_data) {
|
|
425
|
-
_context.next = 2;
|
|
426
|
-
break;
|
|
427
|
-
}
|
|
428
|
-
jsonData = JSON.parse(projectElement[0].project_data);
|
|
429
|
-
_context.next = 5;
|
|
430
|
-
break;
|
|
431
|
-
case 2:
|
|
432
|
-
_context.prev = 2;
|
|
433
|
-
_context.next = 3;
|
|
434
|
-
return _axios["default"].post("".concat(constants.API_SERVER_URL, "/api/project/loadPidData"), {
|
|
435
|
-
pid: match.params.pid
|
|
436
|
-
}).data.data;
|
|
437
|
-
case 3:
|
|
438
|
-
jsonData = _context.sent;
|
|
439
|
-
_context.next = 5;
|
|
440
|
-
break;
|
|
441
|
-
case 4:
|
|
442
|
-
_context.prev = 4;
|
|
443
|
-
_t = _context["catch"](2);
|
|
444
|
-
_this3.setState({
|
|
445
|
-
isSnackBarOpen: true,
|
|
446
|
-
snackBarMessage: _t
|
|
447
|
-
});
|
|
448
|
-
case 5:
|
|
449
|
-
jsonData.isLoadingCabinet = false;
|
|
450
|
-
projectActions.loadProject(jsonData, _this3.props.categoryData);
|
|
451
|
-
case 6:
|
|
452
|
-
case "end":
|
|
453
|
-
return _context.stop();
|
|
454
|
-
}
|
|
455
|
-
}, _callee, null, [[2, 4]]);
|
|
456
|
-
}));
|
|
457
|
-
return function (_x) {
|
|
458
|
-
return _ref.apply(this, arguments);
|
|
459
|
-
};
|
|
460
|
-
}());
|
|
461
|
-
}
|
|
462
|
-
sessionStorage.removeItem('user_type');
|
|
463
|
-
sessionStorage.removeItem('project_type');
|
|
464
|
-
sessionStorage.removeItem('project_timeline');
|
|
465
|
-
}
|
|
466
337
|
}
|
|
467
|
-
}, {
|
|
468
|
-
key: "componentWillUnmount",
|
|
469
|
-
value: function componentWillUnmount() {
|
|
470
|
-
window.addEventListener('beforeunload', this.handleBeforeUnload);
|
|
471
|
-
window.onbeforeunload = null;
|
|
472
|
-
}
|
|
473
|
-
}, {
|
|
474
|
-
key: "componentWillMount",
|
|
475
|
-
value: function componentWillMount() {}
|
|
476
338
|
}, {
|
|
477
339
|
key: "componentWillReceiveProps",
|
|
478
340
|
value: function componentWillReceiveProps(nextProps) {
|
|
@@ -480,11 +342,12 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
480
342
|
state = nextProps.state,
|
|
481
343
|
projectActions = nextProps.projectActions,
|
|
482
344
|
catalog = nextProps.catalog,
|
|
483
|
-
externalEvent = nextProps.externalEvent
|
|
345
|
+
externalEvent = nextProps.externalEvent,
|
|
346
|
+
onInternalEvent = nextProps.onInternalEvent;
|
|
484
347
|
|
|
485
348
|
// handle external events
|
|
486
349
|
if (this.props.externalEvent !== externalEvent) {
|
|
487
|
-
(0, _isolateEventHandler.handleExternalEvent)(
|
|
350
|
+
(0, _isolateEventHandler.handleExternalEvent)(nextProps);
|
|
488
351
|
}
|
|
489
352
|
var plannerState = stateExtractor(state);
|
|
490
353
|
var catalogReady = plannerState.getIn(['catalog', 'ready']);
|
|
@@ -503,12 +366,12 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
503
366
|
}, {
|
|
504
367
|
key: "render",
|
|
505
368
|
value: function render() {
|
|
506
|
-
var _this$
|
|
507
|
-
width = _this$
|
|
508
|
-
height = _this$
|
|
509
|
-
state = _this$
|
|
510
|
-
stateExtractor = _this$
|
|
511
|
-
props = (0, _objectWithoutProperties2["default"])(_this$
|
|
369
|
+
var _this$props2 = this.props,
|
|
370
|
+
width = _this$props2.width,
|
|
371
|
+
height = _this$props2.height,
|
|
372
|
+
state = _this$props2.state,
|
|
373
|
+
stateExtractor = _this$props2.stateExtractor,
|
|
374
|
+
props = (0, _objectWithoutProperties2["default"])(_this$props2, _excluded);
|
|
512
375
|
var _this$state = this.state,
|
|
513
376
|
savePopupVisible = _this$state.savePopupVisible,
|
|
514
377
|
quotePopupVisible = _this$state.quotePopupVisible,
|
|
@@ -516,8 +379,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
516
379
|
signOpen = _this$state.signOpen,
|
|
517
380
|
myProjectsOpen = _this$state.myProjectsOpen;
|
|
518
381
|
var contentW = width - toolbarW;
|
|
519
|
-
var categoryData = this.props.categoryData;
|
|
520
|
-
// console.log(categoryData);
|
|
521
382
|
// let contentW = width - toolbarW - sidebarW;
|
|
522
383
|
// let toolbarH = height - footerBarH;
|
|
523
384
|
// let contentH = height - footerBarH;
|
|
@@ -528,27 +389,6 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
528
389
|
var headerW = width;
|
|
529
390
|
var headerH = 60;
|
|
530
391
|
var extractedState = stateExtractor(state);
|
|
531
|
-
var doorStyle = extractedState.get('doorStyle');
|
|
532
|
-
if (extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== undefined && extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== null) {
|
|
533
|
-
var extractedStateData = extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']);
|
|
534
|
-
var doorIdAvailable = false;
|
|
535
|
-
if (this.props.categoryData.doorStyles && this.props.categoryData.doorStyles.items) {
|
|
536
|
-
this.props.categoryData.doorStyles.items.find(function (category) {
|
|
537
|
-
doorIdAvailable = category.items.find(function (style) {
|
|
538
|
-
var item = style.items.find(function (it) {
|
|
539
|
-
return it.id === extractedStateData.id;
|
|
540
|
-
});
|
|
541
|
-
if (item) {
|
|
542
|
-
colorItem = item;
|
|
543
|
-
return true;
|
|
544
|
-
} else {
|
|
545
|
-
return false;
|
|
546
|
-
}
|
|
547
|
-
});
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
if (doorIdAvailable) doorStyle = extractedStateData;
|
|
551
|
-
}
|
|
552
392
|
var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extractedState.scene);
|
|
553
393
|
var allVisible = firstVisit || signOpen || myProjectsOpen;
|
|
554
394
|
var _scene = extractedState.getIn(['scene']);
|
|
@@ -591,7 +431,8 @@ var LiteKitchenConfigurator = /*#__PURE__*/function (_Component) {
|
|
|
591
431
|
}, props, {
|
|
592
432
|
onWheel: function onWheel(event) {
|
|
593
433
|
return event.preventDefault();
|
|
594
|
-
}
|
|
434
|
+
},
|
|
435
|
+
onInternalEvent: this.props.onInternalEvent
|
|
595
436
|
}))));
|
|
596
437
|
}
|
|
597
438
|
}]);
|
|
@@ -610,7 +451,8 @@ LiteKitchenConfigurator.propTypes = {
|
|
|
610
451
|
footerbarComponents: _propTypes["default"].array,
|
|
611
452
|
customContents: _propTypes["default"].object,
|
|
612
453
|
softwareSignature: _propTypes["default"].string,
|
|
613
|
-
configData: _propTypes["default"].object
|
|
454
|
+
configData: _propTypes["default"].object,
|
|
455
|
+
onInternalEvent: _propTypes["default"].func
|
|
614
456
|
};
|
|
615
457
|
LiteKitchenConfigurator.contextTypes = {
|
|
616
458
|
store: _propTypes["default"].object.isRequired
|
package/lib/LiteRenderer.js
CHANGED
|
@@ -36,11 +36,10 @@ var _itemLoader = require("./catalog/utils/item-loader");
|
|
|
36
36
|
var _export2 = require("./plugins/export");
|
|
37
37
|
var _immutable = require("immutable");
|
|
38
38
|
var Sentry = _interopRequireWildcard(require("@sentry/react"));
|
|
39
|
-
var _projectActions = require("./actions/project-actions");
|
|
40
39
|
var _exporter = _interopRequireDefault(require("./catalog/utils/exporter"));
|
|
41
40
|
var THREE = _interopRequireWildcard(require("three"));
|
|
42
41
|
var _LiteKitchenConfigurator = _interopRequireDefault(require("./LiteKitchenConfigurator"));
|
|
43
|
-
var _excluded = ["width", "height", "projectElement", "
|
|
42
|
+
var _excluded = ["width", "height", "projectElement", "dataBundle", "configData", "options", "user", "auth", "featureFlags", "sentry", "analytics", "externalEvent", "onInternalEvent", "onError"];
|
|
44
43
|
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); }
|
|
45
44
|
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; }
|
|
46
45
|
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; }
|
|
@@ -154,7 +153,6 @@ function LiteRenderer(props) {
|
|
|
154
153
|
var width = props.width,
|
|
155
154
|
height = props.height,
|
|
156
155
|
projectElement = props.projectElement,
|
|
157
|
-
categoryData = props.categoryData,
|
|
158
156
|
dataBundle = props.dataBundle,
|
|
159
157
|
configData = props.configData,
|
|
160
158
|
options = props.options,
|
|
@@ -164,6 +162,7 @@ function LiteRenderer(props) {
|
|
|
164
162
|
sentry = props.sentry,
|
|
165
163
|
analytics = props.analytics,
|
|
166
164
|
externalEvent = props.externalEvent,
|
|
165
|
+
onInternalEvent = props.onInternalEvent,
|
|
167
166
|
onError = props.onError,
|
|
168
167
|
passThrough = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
169
168
|
|
|
@@ -253,21 +252,15 @@ function LiteRenderer(props) {
|
|
|
253
252
|
emit(lastExternalEventRef.current, last.errors);
|
|
254
253
|
}
|
|
255
254
|
}, [externalEvent, emit]);
|
|
256
|
-
var _ref =
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
_ref2$furnishing = _ref2.furnishing,
|
|
266
|
-
furnishing = _ref2$furnishing === void 0 ? [] : _ref2$furnishing,
|
|
267
|
-
_ref2$lighting = _ref2.lighting,
|
|
268
|
-
lighting = _ref2$lighting === void 0 ? [] : _ref2$lighting;
|
|
269
|
-
var _projectElement = (0, _slicedToArray2["default"])(projectElement, 1),
|
|
270
|
-
project_data = _projectElement[0].project_data;
|
|
255
|
+
var _ref = dataBundle || {},
|
|
256
|
+
_ref$data = _ref.data,
|
|
257
|
+
data = _ref$data === void 0 ? [] : _ref$data,
|
|
258
|
+
_ref$appliances = _ref.appliances,
|
|
259
|
+
appliances = _ref$appliances === void 0 ? [] : _ref$appliances,
|
|
260
|
+
_ref$furnishing = _ref.furnishing,
|
|
261
|
+
furnishing = _ref$furnishing === void 0 ? [] : _ref$furnishing,
|
|
262
|
+
_ref$lighting = _ref.lighting,
|
|
263
|
+
lighting = _ref$lighting === void 0 ? [] : _ref$lighting;
|
|
271
264
|
var id = configData.id,
|
|
272
265
|
logoImg = configData.logoImg,
|
|
273
266
|
companyUrl = configData.companyUrl;
|
|
@@ -275,13 +268,9 @@ function LiteRenderer(props) {
|
|
|
275
268
|
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
276
269
|
outlineSVGData = _React$useState2[0],
|
|
277
270
|
setOutlineSVGData = _React$useState2[1];
|
|
278
|
-
var _React$useState3 = _react["default"].useState(false),
|
|
279
|
-
_React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
|
|
280
|
-
catalogInitiated = _React$useState4[0],
|
|
281
|
-
setCatalogInitiated = _React$useState4[1];
|
|
282
271
|
(0, _react.useEffect)(function () {
|
|
283
272
|
var initMyCatalog = /*#__PURE__*/function () {
|
|
284
|
-
var
|
|
273
|
+
var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
285
274
|
var x, _x, _x2;
|
|
286
275
|
return _regenerator["default"].wrap(function (_context) {
|
|
287
276
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -298,75 +287,19 @@ function LiteRenderer(props) {
|
|
|
298
287
|
}, _callee);
|
|
299
288
|
}));
|
|
300
289
|
return function initMyCatalog() {
|
|
301
|
-
return
|
|
290
|
+
return _ref2.apply(this, arguments);
|
|
302
291
|
};
|
|
303
292
|
}();
|
|
304
293
|
var loadMoldings = /*#__PURE__*/function () {
|
|
305
|
-
var
|
|
306
|
-
var
|
|
294
|
+
var _ref3 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
295
|
+
var molding, toeMoldingData, moldingData, promises;
|
|
307
296
|
return _regenerator["default"].wrap(function (_context2) {
|
|
308
297
|
while (1) switch (_context2.prev = _context2.next) {
|
|
309
298
|
case 0:
|
|
310
|
-
door_color_alias = [];
|
|
311
|
-
subgroup_ids = catalogs.filter(function (item) {
|
|
312
|
-
return item.id == id;
|
|
313
|
-
})[0].manufacturer_subgroup_ids.split(',');
|
|
314
|
-
door_color_alias_ids = [];
|
|
315
|
-
subgroups.forEach(function (subgroup) {
|
|
316
|
-
if (subgroup_ids.some(function (id) {
|
|
317
|
-
return id == subgroup.id.toString();
|
|
318
|
-
})) {
|
|
319
|
-
subgroup.door_color_alias_ids.split(',').forEach(function (item) {
|
|
320
|
-
item != '' && door_color_alias_ids.push(item);
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
colorAlias.forEach(function (color) {
|
|
325
|
-
return door_color_alias_ids.some(function (id) {
|
|
326
|
-
return id == color.id.toString();
|
|
327
|
-
}) && door_color_alias.push(color);
|
|
328
|
-
});
|
|
329
|
-
doorStyleData = categoryData.data.doorStyles.items;
|
|
330
|
-
categoryData.data.doorStyles.items = doorStyleData.treeStruct;
|
|
331
|
-
door_color_alias.forEach(function (dca) {
|
|
332
|
-
doorStyleData.doorColorData.forEach(function (dc) {
|
|
333
|
-
dc.door_style_id = parseInt(dc.door_style_id);
|
|
334
|
-
if (dc.id !== dca.door_color_id) return;
|
|
335
|
-
dc.name = dca.alias_name;
|
|
336
|
-
dc.color_sku_alias = dca.sku_alias_name;
|
|
337
|
-
doorStyleData.treeStruct.forEach(function (el) {
|
|
338
|
-
el.items.forEach(function (elem) {
|
|
339
|
-
return dc.door_style_id === elem.id && (dc.door_style_name = elem.name);
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
dca.alias_installation_type = (0, _helper.isEmpty)(dca.alias_installation_type) ? [] : dca.alias_installation_type.split(',').map(function (n) {
|
|
343
|
-
return parseInt(n);
|
|
344
|
-
});
|
|
345
|
-
categoryData.data.doorStyles.items.forEach(function (item) {
|
|
346
|
-
if (dca.alias_installation_type.some(function (ait) {
|
|
347
|
-
return ait === item.id;
|
|
348
|
-
})) item.items.forEach(function (ds) {
|
|
349
|
-
if (ds.name === dc.door_style_name) ds.items.push(dc);
|
|
350
|
-
});
|
|
351
|
-
});
|
|
352
|
-
});
|
|
353
|
-
});
|
|
354
299
|
molding = [];
|
|
355
|
-
toeMoldingData =
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
if (index.name.toLowerCase().includes('molding')) {
|
|
359
|
-
index.items.forEach(function (item) {
|
|
360
|
-
return molding.push(item);
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
if (index.name.includes(_constants.TOE_KICK_MOLDING)) {
|
|
364
|
-
index.items.forEach(function (item) {
|
|
365
|
-
return toeMoldingData.push(item);
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
categoryData.data.toeMoldingData = toeMoldingData;
|
|
300
|
+
toeMoldingData = {};
|
|
301
|
+
moldingData = {};
|
|
302
|
+
if (moldingData.name = _constants.TOE_KICK_MOLDING) toeMoldingData = moldingData;
|
|
370
303
|
promises = molding.map(function (child) {
|
|
371
304
|
return new Promise(function (resolve, reject) {
|
|
372
305
|
var url = child === null || child === void 0 ? void 0 : child.shape_svg;
|
|
@@ -394,17 +327,17 @@ function LiteRenderer(props) {
|
|
|
394
327
|
}, _callee2);
|
|
395
328
|
}));
|
|
396
329
|
return function loadMoldings() {
|
|
397
|
-
return
|
|
330
|
+
return _ref3.apply(this, arguments);
|
|
398
331
|
};
|
|
399
332
|
}();
|
|
400
333
|
var loadSVGs = /*#__PURE__*/function () {
|
|
401
|
-
var
|
|
334
|
+
var _ref4 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
402
335
|
var svgLoadPromises, outlineData;
|
|
403
336
|
return _regenerator["default"].wrap(function (_context4) {
|
|
404
337
|
while (1) switch (_context4.prev = _context4.next) {
|
|
405
338
|
case 0:
|
|
406
339
|
svgLoadPromises = data.map(/*#__PURE__*/function () {
|
|
407
|
-
var
|
|
340
|
+
var _ref5 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(item) {
|
|
408
341
|
var _parsed$xml$viewBox, _parsed$xml$viewBox2, response, svgText, loader, parsed, _t;
|
|
409
342
|
return _regenerator["default"].wrap(function (_context3) {
|
|
410
343
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -452,7 +385,7 @@ function LiteRenderer(props) {
|
|
|
452
385
|
}, _callee3, null, [[1, 5]]);
|
|
453
386
|
}));
|
|
454
387
|
return function (_x3) {
|
|
455
|
-
return
|
|
388
|
+
return _ref5.apply(this, arguments);
|
|
456
389
|
};
|
|
457
390
|
}());
|
|
458
391
|
_context4.next = 1;
|
|
@@ -467,15 +400,14 @@ function LiteRenderer(props) {
|
|
|
467
400
|
}, _callee4);
|
|
468
401
|
}));
|
|
469
402
|
return function loadSVGs() {
|
|
470
|
-
return
|
|
403
|
+
return _ref4.apply(this, arguments);
|
|
471
404
|
};
|
|
472
405
|
}();
|
|
473
406
|
var initCatalog = /*#__PURE__*/function () {
|
|
474
|
-
var
|
|
407
|
+
var _ref6 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
475
408
|
return _regenerator["default"].wrap(function (_context5) {
|
|
476
409
|
while (1) switch (_context5.prev = _context5.next) {
|
|
477
410
|
case 0:
|
|
478
|
-
setCatalogInitiated(false);
|
|
479
411
|
_context5.next = 1;
|
|
480
412
|
return initMyCatalog();
|
|
481
413
|
case 1:
|
|
@@ -485,20 +417,18 @@ function LiteRenderer(props) {
|
|
|
485
417
|
_context5.next = 3;
|
|
486
418
|
return loadSVGs();
|
|
487
419
|
case 3:
|
|
488
|
-
setCatalogInitiated(true);
|
|
489
|
-
case 4:
|
|
490
420
|
case "end":
|
|
491
421
|
return _context5.stop();
|
|
492
422
|
}
|
|
493
423
|
}, _callee5);
|
|
494
424
|
}));
|
|
495
425
|
return function initCatalog() {
|
|
496
|
-
return
|
|
426
|
+
return _ref6.apply(this, arguments);
|
|
497
427
|
};
|
|
498
428
|
}();
|
|
499
429
|
initCatalog();
|
|
500
430
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
501
|
-
}, [
|
|
431
|
+
}, [data, id]);
|
|
502
432
|
|
|
503
433
|
// Register items once SVGs are loaded
|
|
504
434
|
(0, _react.useEffect)(function () {
|
|
@@ -535,21 +465,6 @@ function LiteRenderer(props) {
|
|
|
535
465
|
});
|
|
536
466
|
for (var x in Item) MyCatalog.registerElement(Item[x]);
|
|
537
467
|
}, [outlineSVGData, data, appliances, furnishing, lighting]);
|
|
538
|
-
(0, _react.useEffect)(function () {
|
|
539
|
-
if (projectElement.length === 0) return;
|
|
540
|
-
if (!catalogInitiated) return;
|
|
541
|
-
sessionStorage.setItem('projectTitle', projectElement[0].title);
|
|
542
|
-
store.dispatch((0, _projectActions.rename)(projectElement[0].title));
|
|
543
|
-
sessionStorage.setItem('projectId', projectElement[0].id);
|
|
544
|
-
sessionStorage.setItem('email', projectElement[0].email);
|
|
545
|
-
sessionStorage.setItem('firstName', projectElement[0].firstName);
|
|
546
|
-
sessionStorage.setItem('lastName', projectElement[0].lastName);
|
|
547
|
-
sessionStorage.setItem('phone', projectElement[0].phone);
|
|
548
|
-
var jsonData;
|
|
549
|
-
jsonData = JSON.parse(projectElement[0].project_data);
|
|
550
|
-
jsonData.isLoadingCabinet = false;
|
|
551
|
-
store.dispatch((0, _projectActions.loadProject)(jsonData, categoryData));
|
|
552
|
-
}, [project_data, catalogInitiated]);
|
|
553
468
|
return /*#__PURE__*/_react["default"].createElement(_AppContext["default"].Provider, null, /*#__PURE__*/_react["default"].createElement(_reactRedux.Provider, {
|
|
554
469
|
store: store
|
|
555
470
|
}, /*#__PURE__*/_react["default"].createElement(ToolErrorBoundary, {
|
|
@@ -564,10 +479,10 @@ function LiteRenderer(props) {
|
|
|
564
479
|
stateExtractor: function stateExtractor(state) {
|
|
565
480
|
return state.get('KitchenConfigurator');
|
|
566
481
|
},
|
|
567
|
-
categoryData: categoryData,
|
|
568
482
|
data: data,
|
|
569
483
|
configData: configData,
|
|
570
|
-
externalEvent: externalEvent
|
|
484
|
+
externalEvent: externalEvent,
|
|
485
|
+
onInternalEvent: onInternalEvent
|
|
571
486
|
}, passThrough)))));
|
|
572
487
|
}
|
|
573
488
|
|
|
@@ -577,7 +492,6 @@ LiteRenderer.propTypes = {
|
|
|
577
492
|
width: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
|
|
578
493
|
height: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
|
|
579
494
|
projectElement: _propTypes["default"].arrayOf(_propTypes["default"].object),
|
|
580
|
-
categoryData: _propTypes["default"].any,
|
|
581
495
|
dataBundle: _propTypes["default"].any,
|
|
582
496
|
configData: _propTypes["default"].any,
|
|
583
497
|
catalog: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].instanceOf(Models.Catalog)]),
|
|
@@ -592,6 +506,7 @@ LiteRenderer.propTypes = {
|
|
|
592
506
|
environment: _propTypes["default"].string
|
|
593
507
|
}),
|
|
594
508
|
externalEvent: _propTypes["default"].object,
|
|
509
|
+
onInternalEvent: _propTypes["default"].func,
|
|
595
510
|
onError: _propTypes["default"].func,
|
|
596
511
|
store: _propTypes["default"].object
|
|
597
512
|
};
|
|
@@ -8,6 +8,7 @@ exports.beginDraggingItem = beginDraggingItem;
|
|
|
8
8
|
exports.beginDraggingItem3D = beginDraggingItem3D;
|
|
9
9
|
exports.beginRotatingItem = beginRotatingItem;
|
|
10
10
|
exports.beginRotatingItem3D = beginRotatingItem3D;
|
|
11
|
+
exports.changeDistance = changeDistance;
|
|
11
12
|
exports.duplicateSelected = duplicateSelected;
|
|
12
13
|
exports.editWidth = editWidth;
|
|
13
14
|
exports.endCreatingCabinet = endCreatingCabinet;
|
|
@@ -274,14 +275,20 @@ function updateItemsAltitude(layerID, itemID, value) {
|
|
|
274
275
|
value: value
|
|
275
276
|
};
|
|
276
277
|
}
|
|
277
|
-
function setDoorStyle(doorStyle,
|
|
278
|
+
function setDoorStyle(doorStyle, itemCDS, isAll) {
|
|
278
279
|
return {
|
|
279
280
|
type: _constants.SET_DOOR_STYLE,
|
|
280
281
|
doorStyle: doorStyle,
|
|
281
|
-
|
|
282
|
+
itemCDS: itemCDS,
|
|
282
283
|
isAll: isAll
|
|
283
284
|
};
|
|
284
285
|
}
|
|
286
|
+
function changeDistance(distancePayload) {
|
|
287
|
+
return {
|
|
288
|
+
type: _constants.CHANGE_DISTANCE,
|
|
289
|
+
distancePayload: distancePayload
|
|
290
|
+
};
|
|
291
|
+
}
|
|
285
292
|
function setCounterTop(counterTop) {
|
|
286
293
|
return {
|
|
287
294
|
type: _constants.SET_COUNTER_TOP,
|
|
@@ -343,11 +350,10 @@ function setModelling(model) {
|
|
|
343
350
|
model: model
|
|
344
351
|
};
|
|
345
352
|
}
|
|
346
|
-
function setInitialDoorStyle(doorStyle
|
|
353
|
+
function setInitialDoorStyle(doorStyle) {
|
|
347
354
|
return {
|
|
348
355
|
type: _constants.SET_INITIAL_DOOR_STYLE,
|
|
349
|
-
doorStyle: doorStyle
|
|
350
|
-
oStyle: oStyle
|
|
356
|
+
doorStyle: doorStyle
|
|
351
357
|
};
|
|
352
358
|
}
|
|
353
359
|
function setMoveStatus(status) {
|
|
@@ -69,11 +69,10 @@ function setStateProperties(properties) {
|
|
|
69
69
|
properties: properties
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
|
-
function loadProject(sceneJSON
|
|
72
|
+
function loadProject(sceneJSON) {
|
|
73
73
|
return {
|
|
74
74
|
type: _constants.LOAD_PROJECT,
|
|
75
|
-
sceneJSON: sceneJSON
|
|
76
|
-
categoryData: categoryData
|
|
75
|
+
sceneJSON: sceneJSON
|
|
77
76
|
};
|
|
78
77
|
}
|
|
79
78
|
function newProject() {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M2.53725 5.07449C3.93853 5.07449 5.07449 3.93853 5.07449 2.53725C5.07449 1.13596 3.93853 0 2.53725 0C1.13596 0 0 1.13596 0 2.53725C0 3.93853 1.13596 5.07449 2.53725 5.07449Z" fill="#6332AC"/>
|
|
3
|
+
<path d="M11.9788 5.07449C13.3801 5.07449 14.5161 3.93853 14.5161 2.53725C14.5161 1.13596 13.3801 0 11.9788 0C10.5775 0 9.44156 1.13596 9.44156 2.53725C9.44156 3.93853 10.5775 5.07449 11.9788 5.07449Z" fill="#4DCBCB"/>
|
|
4
|
+
<path d="M21.4628 5.07449C22.8641 5.07449 24 3.93853 24 2.53725C24 1.13596 22.8641 0 21.4628 0C20.0615 0 18.9255 1.13596 18.9255 2.53725C18.9255 3.93853 20.0615 5.07449 21.4628 5.07449Z" fill="#154AC5"/>
|
|
5
|
+
<path d="M2.53728 14.5169C3.93856 14.5169 5.07452 13.3809 5.07452 11.9796C5.07452 10.5783 3.93856 9.44238 2.53728 9.44238C1.13599 9.44238 3.05176e-05 10.5783 3.05176e-05 11.9796C3.05176e-05 13.3809 1.13599 14.5169 2.53728 14.5169Z" fill="#0C389D"/>
|
|
6
|
+
<path d="M11.9788 14.5169C13.3801 14.5169 14.5161 13.3809 14.5161 11.9796C14.5161 10.5783 13.3801 9.44238 11.9788 9.44238C10.5775 9.44238 9.44156 10.5783 9.44156 11.9796C9.44156 13.3809 10.5775 14.5169 11.9788 14.5169Z" fill="#4C12A1"/>
|
|
7
|
+
<path d="M21.4628 14.5169C22.8641 14.5169 24 13.3809 24 11.9796C24 10.5783 22.8641 9.44238 21.4628 9.44238C20.0615 9.44238 18.9255 10.5783 18.9255 11.9796C18.9255 13.3809 20.0615 14.5169 21.4628 14.5169Z" fill="#008D8D"/>
|
|
8
|
+
<path d="M2.53728 24C3.93856 24 5.07452 22.8641 5.07452 21.4628C5.07452 20.0615 3.93856 18.9255 2.53728 18.9255C1.13599 18.9255 3.05176e-05 20.0615 3.05176e-05 21.4628C3.05176e-05 22.8641 1.13599 24 2.53728 24Z" fill="#00B9B9"/>
|
|
9
|
+
<path d="M11.9788 24C13.3801 24 14.5161 22.8641 14.5161 21.4628C14.5161 20.0615 13.3801 18.9255 11.9788 18.9255C10.5775 18.9255 9.44156 20.0615 9.44156 21.4628C9.44156 22.8641 10.5775 24 11.9788 24Z" fill="#3A66CA"/>
|
|
10
|
+
<path d="M21.4628 24C22.8641 24 24 22.8641 24 21.4628C24 20.0615 22.8641 18.9255 21.4628 18.9255C20.0615 18.9255 18.9255 20.0615 18.9255 21.4628C18.9255 22.8641 20.0615 24 21.4628 24Z" fill="#3A0B80"/>
|
|
11
|
+
</svg>
|