kitchen-simulator 1.1.1-test.77 → 1.1.1-test.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1405 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
16
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
18
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
- var _axios = _interopRequireDefault(require("axios"));
22
- var _convertUnitsLite = require("./utils/convert-units-lite");
23
- var _propTypes = _interopRequireDefault(require("prop-types"));
24
- var _react = _interopRequireWildcard(require("react"));
25
- var _reactHotjar = require("react-hotjar");
26
- var _reactRedux = require("react-redux");
27
- var _redux = require("redux");
28
- var _Snackbar = _interopRequireDefault(require("./components/atoms/Snackbar"));
29
- var _autosaveprompt = _interopRequireDefault(require("./components/toolbar/popup/autosaveprompt"));
30
- var _downloadsummary = _interopRequireDefault(require("./components/toolbar/popup/downloadsummary"));
31
- var _newproject = _interopRequireDefault(require("./components/toolbar/popup/newproject"));
32
- var _savedesign = _interopRequireDefault(require("./components/toolbar/popup/savedesign"));
33
- var _submitforquote = _interopRequireDefault(require("./components/toolbar/popup/submitforquote"));
34
- var _constants = _interopRequireWildcard(require("./constants"));
35
- var constants = _constants;
36
- var _lodash = _interopRequireDefault(require("lodash"));
37
- var _helper = require("./utils/helper");
38
- var _utils = require("./components/viewer2d/utils");
39
- var _export = _interopRequireDefault(require("./actions/export"));
40
- var _catalog = _interopRequireDefault(require("./catalog/catalog"));
41
- var _export2 = require("./class/export");
42
- var _export3 = require("./components/export");
43
- var _jwtService = _interopRequireDefault(require("./components/login/jwtService"));
44
- var _index = _interopRequireDefault(require("./components/toolbar/popup/submitprompt/index"));
45
- require("./styles/export");
46
- var _translator = _interopRequireDefault(require("./translator/translator"));
47
- var _objectsUtils = require("./utils/objects-utils");
48
- var _version = require("./version");
49
- var _localstorageSlim = _interopRequireDefault(require("localstorage-slim"));
50
- var _ga = require("./analytics/ga4");
51
- var _summarizeCart = require("./utils/summarizeCart");
52
- var _posthog = require("./analytics/posthog");
53
- var _excluded = ["width", "height", "state", "stateExtractor"];
54
- 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" != _typeof3(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 _t4 in e) "default" !== _t4 && {}.hasOwnProperty.call(e, _t4) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t4)) && (i.get || i.set) ? o(f, _t4, i) : f[_t4] = e[_t4]); return f; })(e, t); }
55
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
56
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
57
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
58
- 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; }
59
- 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; }
60
- 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)); }
61
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
62
- var Header = _export3.HeaderComponents.Header;
63
- var Toolbar = _export3.ToolbarComponents.Toolbar;
64
- var FooterBar = _export3.FooterBarComponents.FooterBar;
65
- var WizardStep = _export3.WizardStepComponents.WizardStep;
66
- var Sign = _export3.SignComponents.Sign;
67
- var MyProjects = _export3.MyProjectsComonents.MyProjects;
68
- var toolbarW = 0;
69
- var wrapperStyle = {
70
- display: 'flex',
71
- flexFlow: 'row nowrap'
72
- };
73
- var saveAlert = '';
74
- var KitchenConfigurator = /*#__PURE__*/function (_Component) {
75
- function KitchenConfigurator(props) {
76
- var _this$props$match, _this$props$match2, _this$props$match3, _utmRequestData2, _utmRequestData3, _utmRequestData4, _utmRequestData5, _utmRequestData6, _utmRequestData7, _utmRequestData8, _utmRequestData9, _utmRequestData0;
77
- var _this;
78
- (0, _classCallCheck2["default"])(this, KitchenConfigurator);
79
- _this = _callSuper(this, KitchenConfigurator, [props]);
80
- (0, _defineProperty2["default"])(_this, "debouncedSetIsSaved", _lodash["default"].debounce(function () {
81
- return _this.setState({
82
- isSaved: false
83
- });
84
- }, 200));
85
- (0, _defineProperty2["default"])(_this, "handleBeforeUnload", function (e) {
86
- var areas = _this.props.stateExtractor(_this.props.state).getIn(['scene', 'layers', _this.props.stateExtractor(_this.props.state).scene.selectedLayer, 'areas']);
87
- if (!_this.state.isSaved && areas.size > 0) {
88
- setTimeout(function () {
89
- _this.setState({
90
- savePromptVisible: true,
91
- isLeaving: true
92
- });
93
- }, 500);
94
- _this.saveProjectToStorage();
95
-
96
- // This line is required to trigger the browser confirmation dialog
97
- e.preventDefault();
98
- e.returnValue = '';
99
- return '';
100
- }
101
- });
102
- var utmDetailParams = new URLSearchParams(_this.props.location && _this.props.location.search);
103
- var utmStrEncoded = utmDetailParams.get('details');
104
- var utmRequestData = null;
105
- if (utmStrEncoded) {
106
- try {
107
- var _utmRequestData;
108
- utmRequestData = JSON.parse((0, _helper.base64Decode)(utmStrEncoded));
109
- utmRequestData = JSON.parse((_utmRequestData = utmRequestData) === null || _utmRequestData === void 0 ? void 0 : _utmRequestData.utm);
110
- } catch (e) {
111
- console.error('Cannot parse utm parameter: ', error);
112
- utmRequestData = null;
113
- }
114
- }
115
- _this.state = {
116
- savePopupVisible: false,
117
- quotePopupVisible: false,
118
- assistPopupVisible: false,
119
- newProjectPopupVisible: false,
120
- isModalVisible: false,
121
- submitPromptVisible: false,
122
- stateSubmitType: constants.SUBMIT_REQUEST_ASSIST,
123
- savePromptVisible: false,
124
- isShowProperty: true,
125
- submitTosave: false,
126
- signOpen: false,
127
- myProjectsOpen: false,
128
- myProjectsToLogin: false,
129
- downloadPopupVisible: false,
130
- toolbar: '',
131
- reviewQuotePopupOpened: false,
132
- floorOpened: false,
133
- cabinetOpened: false,
134
- applianceOpened: false,
135
- finishingOpened: false,
136
- doorStyleOpen: false,
137
- wizardStepOpend: ((_this$props$match = _this.props.match) === null || _this$props$match === void 0 || (_this$props$match = _this$props$match.params) === null || _this$props$match === void 0 ? void 0 : _this$props$match.pid) === undefined || ((_this$props$match2 = _this.props.match) === null || _this$props$match2 === void 0 || (_this$props$match2 = _this$props$match2.params) === null || _this$props$match2 === void 0 ? void 0 : _this$props$match2.pid) === 'null' ? true : false,
138
- tutorialMouseEventsAdd: false,
139
- replaceCabinetFlag: false,
140
- isSnackBarOpen: false,
141
- isSnackBar1Open: false,
142
- redirectURL: '',
143
- snackBarMessage: '',
144
- isSaved: !!((_this$props$match3 = _this.props.match) !== null && _this$props$match3 !== void 0 && (_this$props$match3 = _this$props$match3.params) !== null && _this$props$match3 !== void 0 && _this$props$match3.token),
145
- isLeaving: false
146
- };
147
- _this.utm = {
148
- utm_source: ((_utmRequestData2 = utmRequestData) === null || _utmRequestData2 === void 0 ? void 0 : _utmRequestData2.source) || 'source',
149
- utm_medium: ((_utmRequestData3 = utmRequestData) === null || _utmRequestData3 === void 0 ? void 0 : _utmRequestData3.medium) || 'medium',
150
- utm_campaign: ((_utmRequestData4 = utmRequestData) === null || _utmRequestData4 === void 0 ? void 0 : _utmRequestData4.campaign) || 'campaign',
151
- utm_term: ((_utmRequestData5 = utmRequestData) === null || _utmRequestData5 === void 0 ? void 0 : _utmRequestData5.term) || 'term',
152
- utm_content: ((_utmRequestData6 = utmRequestData) === null || _utmRequestData6 === void 0 ? void 0 : _utmRequestData6.content) || 'content',
153
- gclid: ((_utmRequestData7 = utmRequestData) === null || _utmRequestData7 === void 0 ? void 0 : _utmRequestData7.gclid) || 'gclid',
154
- msclkid: ((_utmRequestData8 = utmRequestData) === null || _utmRequestData8 === void 0 ? void 0 : _utmRequestData8.msclkid) || 'msclkid',
155
- fbclid: ((_utmRequestData9 = utmRequestData) === null || _utmRequestData9 === void 0 ? void 0 : _utmRequestData9.fbclid) || 'fbclid',
156
- ttclid: ((_utmRequestData0 = utmRequestData) === null || _utmRequestData0 === void 0 ? void 0 : _utmRequestData0.ttclid) || 'ttclid'
157
- };
158
- _this.jwtCheck();
159
- _this.openFloor = _this.openFloor.bind(_this);
160
- _this.openCabinet = _this.openCabinet.bind(_this);
161
- _this.openFinishing = _this.openFinishing.bind(_this);
162
- _this.openAppliance = _this.openAppliance.bind(_this);
163
- _this.toggleDoorStyle = _this.toggleDoorStyle.bind(_this);
164
- _this.onReviewQuoteClicked = _this.onReviewQuoteClicked.bind(_this);
165
- _this.closeFloorTB = _this.closeFloorTB.bind(_this);
166
- _this.closeCabinetTB = _this.closeCabinetTB.bind(_this);
167
- _this.closeFinishingTB = _this.closeFinishingTB.bind(_this);
168
- _this.closeApplianceTB = _this.closeApplianceTB.bind(_this);
169
- _this.setToolbar = _this.setToolbar.bind(_this);
170
- _this.replaceCabinet = _this.replaceCabinet.bind(_this);
171
- _this.setSubmitToSave = _this.setSubmitToSave.bind(_this);
172
- _this.setSignOpen = _this.setSignOpen.bind(_this);
173
- _this.setMyProjectsOpen = _this.setMyProjectsOpen.bind(_this);
174
- _this.setMyProjectsToLogin = _this.setMyProjectsToLogin.bind(_this);
175
- _this.setDownloadPopupVisible = _this.setDownloadPopupVisible.bind(_this);
176
- _this.neverShowInput = /*#__PURE__*/_react["default"].createRef(null);
177
- _this.setShowProperty = _this.setShowProperty.bind(_this);
178
- return _this;
179
- }
180
- (0, _inherits2["default"])(KitchenConfigurator, _Component);
181
- return (0, _createClass2["default"])(KitchenConfigurator, [{
182
- key: "setToolbar",
183
- value: function setToolbar(toolBarKey) {
184
- this.setState({
185
- toolbar: toolBarKey
186
- });
187
- }
188
- }, {
189
- key: "setShowProperty",
190
- value: function setShowProperty(value) {
191
- this.setState({
192
- isShowProperty: value
193
- });
194
- }
195
- }, {
196
- key: "setMyProjectsOpen",
197
- value: function setMyProjectsOpen(value) {
198
- this.setState({
199
- myProjectsOpen: value
200
- });
201
- this.setState({
202
- signOpen: false
203
- });
204
- this.setState({
205
- wizardStepOpend: false
206
- });
207
- }
208
- }, {
209
- key: "setMyProjectsToLogin",
210
- value: function setMyProjectsToLogin(value) {
211
- this.setState({
212
- myProjectsToLogin: value
213
- });
214
- }
215
- }, {
216
- key: "setDownloadPopupVisible",
217
- value: function setDownloadPopupVisible(value) {
218
- this.setState({
219
- reviewQuotePopupOpened: false
220
- });
221
- this.setState({
222
- savePopupVisible: false
223
- });
224
- this.setState({
225
- quotePopupVisible: false
226
- });
227
- this.setState({
228
- submitTosave: false
229
- });
230
- this.setState({
231
- assistPopupVisible: false
232
- });
233
- this.setState({
234
- newProjectPopupVisible: false
235
- });
236
- this.setState({
237
- downloadPopupVisible: value
238
- });
239
- }
240
- }, {
241
- key: "setSubmitToSave",
242
- value: function setSubmitToSave(value) {
243
- this.setState({
244
- submitTosave: value
245
- });
246
- }
247
- }, {
248
- key: "setSignOpen",
249
- value: function setSignOpen(value) {
250
- this.setState({
251
- wizardStepOpend: false
252
- });
253
- this.setState({
254
- myProjectsOpen: false
255
- });
256
- this.setState({
257
- signOpen: value
258
- });
259
- }
260
- }, {
261
- key: "openFloor",
262
- value: function openFloor() {
263
- this.setState({
264
- floorOpened: true
265
- });
266
- document.getElementById('make_floorplan_inactive').parentElement.parentElement.style.zIndex = 999;
267
- }
268
- }, {
269
- key: "openCabinet",
270
- value: function openCabinet() {
271
- this.setState({
272
- cabinetOpened: true
273
- });
274
- document.getElementById('add_cabinets_inactive').parentElement.parentElement.style.zIndex = 999;
275
- }
276
- }, {
277
- key: "toggleDoorStyle",
278
- value: function toggleDoorStyle(visible) {
279
- this.setState({
280
- doorStyleOpen: visible
281
- });
282
- document.getElementById('select_doorstyle_inactive').parentElement.parentElement.style.zIndex = visible ? 999 : 6;
283
- }
284
- }, {
285
- key: "replaceCabinet",
286
- value: function replaceCabinet(value) {
287
- this.setState({
288
- replaceCabinetFlag: value
289
- });
290
- }
291
- }, {
292
- key: "openAppliance",
293
- value: function openAppliance() {
294
- this.setState({
295
- applianceOpened: true
296
- });
297
- document.getElementById('add_appliances_inactive').parentElement.parentElement.style.zIndex = 999;
298
- }
299
- }, {
300
- key: "openFinishing",
301
- value: function openFinishing() {
302
- this.setState({
303
- finishingOpened: true
304
- });
305
- document.getElementById('finishing_touches_inactive').parentElement.parentElement.style.zIndex = 999;
306
- }
307
- }, {
308
- key: "onReviewQuoteClicked",
309
- value: function onReviewQuoteClicked(visible) {
310
- this.setState({
311
- reviewQuotePopupOpened: visible
312
- });
313
- document.getElementById('review_quote_inactive').parentElement.parentElement.style.zIndex = visible ? 999 : 6;
314
- }
315
- }, {
316
- key: "closeFloorTB",
317
- value: function closeFloorTB() {
318
- this.setState({
319
- floorOpened: false
320
- });
321
- document.getElementById('make_floorplan_inactive') && (document.getElementById('make_floorplan_inactive').parentElement.parentElement.style.zIndex = 6);
322
- }
323
- }, {
324
- key: "closeCabinetTB",
325
- value: function closeCabinetTB() {
326
- this.setState({
327
- cabinetOpened: false
328
- });
329
- document.getElementById('add_cabinets_inactive').parentElement.parentElement.style.zIndex = 6;
330
- }
331
- }, {
332
- key: "closeFinishingTB",
333
- value: function closeFinishingTB() {
334
- this.setState({
335
- finishingOpened: false
336
- });
337
- document.getElementById('finishing_touches_inactive').parentElement.parentElement.style.zIndex = 6;
338
- }
339
- }, {
340
- key: "closeApplianceTB",
341
- value: function closeApplianceTB() {
342
- this.setState({
343
- applianceOpened: false
344
- });
345
- document.getElementById('add_appliances_inactive').parentElement.parentElement.style.zIndex = 6;
346
- }
347
- }, {
348
- key: "closeDoorstyle",
349
- value: function closeDoorstyle() {
350
- this.setState({});
351
- document.getElementById('select_doorstyle_inactive').parentElement.parentElement.style.zIndex = 6;
352
- }
353
- }, {
354
- key: "closeReviewQuote",
355
- value: function closeReviewQuote() {
356
- this.setState({});
357
- document.getElementById('review_quote_inactive').parentElement.parentElement.style.zIndex = 6;
358
- }
359
- }, {
360
- key: "jwtCheck",
361
- value: function jwtCheck() {
362
- var _this2 = this;
363
- _jwtService["default"].on('onAutoLogin', function () {
364
- /**
365
- * Sign in and retrieve user data from Api
366
- */
367
- _jwtService["default"].signInWithToken().then(function (user) {
368
- //this.props.userActions.setUserData(user);
369
- _this2.props.userActions.login(user.id, user.role, _jwtService["default"].getAccessToken(), _this2.utm);
370
- //this.props.showMessage(option)
371
- //this.props.showMessage({message: 'Logged in with token data', variant: 'success'});
372
- //alert('Logged in with token data');
373
- })["catch"](function (error) {
374
- //this.props.showMessage({message: error});
375
- _this2.setState({
376
- isSnackBarOpen: true,
377
- snackBarMessage: error
378
- });
379
- });
380
- });
381
- _jwtService["default"].on('onAutoLogout', function (message) {
382
- if (message) {
383
- //this.props.showMessage({message, variant: 'error'});
384
- }
385
- _this2.props.userActions.logout();
386
- });
387
- _jwtService["default"].init();
388
- }
389
- }, {
390
- key: "getChildContext",
391
- value: function getChildContext() {
392
- var _this3 = this;
393
- return _objectSpread(_objectSpread({}, (0, _objectsUtils.objectsMap)(_export["default"], function (actionNamespace) {
394
- return _this3.props[actionNamespace];
395
- })), {}, {
396
- translator: this.props.translator,
397
- catalog: this.props.catalog
398
- });
399
- }
400
- }, {
401
- key: "saveProjectToStorage",
402
- value: function saveProjectToStorage() {
403
- var _this$props = this.props,
404
- state = _this$props.state,
405
- stateExtractor = _this$props.stateExtractor;
406
- var extractedState = stateExtractor(state);
407
- var projectData = JSON.stringify(extractedState.get('scene').toJS());
408
- sessionStorage.setItem(window.location.href, projectData);
409
- }
410
- }, {
411
- key: "componentDidUpdate",
412
- value: function componentDidUpdate(prevProps) {
413
- // Only strip properties if the object is not null/undefined
414
- function stripProperty(obj, properties) {
415
- if (!obj) return obj;
416
- var changed = false;
417
- var newObj = _objectSpread({}, obj);
418
- var _iterator = _createForOfIteratorHelper(properties),
419
- _step;
420
- try {
421
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
422
- var prop = _step.value;
423
- if (prop in newObj) {
424
- delete newObj[prop];
425
- changed = true;
426
- }
427
- }
428
- } catch (err) {
429
- _iterator.e(err);
430
- } finally {
431
- _iterator.f();
432
- }
433
- return changed ? newObj : obj;
434
- }
435
- var prevState = this.props.stateExtractor(prevProps.state);
436
- var currState = this.props.stateExtractor(this.props.state);
437
-
438
- // Only convert to JS once per items/areas/lines
439
- var prevLayer = prevState.scene.selectedLayer;
440
- var currLayer = currState.scene.selectedLayer;
441
- var prevItems = prevState.getIn(['scene', 'layers', prevLayer, 'items']).toJS();
442
- var currItems = currState.getIn(['scene', 'layers', currLayer, 'items']).toJS();
443
- var prevItemsProps = Object.values(prevItems).map(function (_ref) {
444
- var x = _ref.x,
445
- y = _ref.y,
446
- rotation = _ref.rotation;
447
- return {
448
- x: x,
449
- y: y,
450
- rotation: rotation
451
- };
452
- });
453
- var currItemsProps = Object.values(currItems).map(function (_ref2) {
454
- var x = _ref2.x,
455
- y = _ref2.y,
456
- rotation = _ref2.rotation;
457
- return {
458
- x: x,
459
- y: y,
460
- rotation: rotation
461
- };
462
- });
463
- var prevDoorStyleRaw = prevState.getIn(['scene', 'layers', prevLayer, 'doorStyle']);
464
- var currDoorStyleRaw = currState.getIn(['scene', 'layers', currLayer, 'doorStyle']);
465
- var prevDoorStyle = stripProperty(prevDoorStyleRaw, ['doorStyles']);
466
- var currDoorStyle = stripProperty(currDoorStyleRaw, ['doorStyles']);
467
- var prevAreasRaw = prevState.getIn(['scene', 'layers', prevLayer, 'areas']).toJS();
468
- var currAreasRaw = currState.getIn(['scene', 'layers', currLayer, 'areas']).toJS();
469
- var prevAreas = stripProperty(Object.values(prevAreasRaw)[0], ['selected']);
470
- var currAreas = stripProperty(Object.values(currAreasRaw)[0], ['selected']);
471
- var prevLinesRaw = prevState.getIn(['scene', 'layers', prevLayer, 'lines']).toJS();
472
- var currLinesRaw = currState.getIn(['scene', 'layers', currLayer, 'lines']).toJS();
473
- var prevLines = stripProperty(Object.values(prevLinesRaw)[0], ['selected']);
474
- var currLines = stripProperty(Object.values(currLinesRaw)[0], ['selected']);
475
- var prevCeilingHeight = prevState.getIn(['scene', 'layers', prevLayer, 'ceilHeight']);
476
- var currCeilingHeight = currState.getIn(['scene', 'layers', currLayer, 'ceilHeight']);
477
- var changed = !_lodash["default"].isEqual(prevItemsProps, currItemsProps) || !_lodash["default"].isEqual(prevDoorStyle, currDoorStyle) || !_lodash["default"].isEqual(prevAreas, currAreas) || !_lodash["default"].isEqual(prevLines, currLines) || prevCeilingHeight !== currCeilingHeight;
478
- if (changed) {
479
- this.debouncedSetIsSaved();
480
- var currentItemsLength = Object.keys(currItems).length;
481
- var prevItemsLength = Object.keys(prevItems).length;
482
- // make sure prompt appears only when adding cabinets
483
- var allowedItemLengths = [5, 10, 15];
484
- if (prevItemsLength === currentItemsLength - 1 && currentItemsLength === 1) {
485
- _ga.GA.events.cabinetPlaced();
486
- }
487
- if (allowedItemLengths.includes(currentItemsLength) && prevItemsLength === currentItemsLength - 1 && !this.props.match.params.token) {
488
- this.setState({
489
- savePromptVisible: true
490
- });
491
- }
492
- }
493
- }
494
- }, {
495
- key: "componentDidMount",
496
- value: function componentDidMount() {
497
- var _this4 = this;
498
- var cross = _ga.GA.deriveCrossAuthFromUrl(window.location.search);
499
- var entry = _ga.GA.deriveProjectEntry();
500
- _ga.GA.bootSessionContext({
501
- projectEntry: entry,
502
- crossAuth: cross
503
- });
504
- _reactHotjar.hotjar.event && _reactHotjar.hotjar.event("pageview:".concat((0, _helper.getPath)()));
505
- window.addEventListener('beforeunload', this.handleBeforeUnload);
506
- window.forRedo = [];
507
- var store = this.context.store;
508
- var _this$props2 = this.props,
509
- projectActions = _this$props2.projectActions,
510
- catalog = _this$props2.catalog,
511
- stateExtractor = _this$props2.stateExtractor,
512
- state = _this$props2.state,
513
- plugins = _this$props2.plugins;
514
- projectActions.initCatalog(catalog);
515
- var match = this.props.match;
516
- if (sessionStorage.getItem(window.location.href)) {
517
- var jsonData = sessionStorage.getItem(window.location.href);
518
- projectActions.loadProject(JSON.parse(jsonData), this.props.categoryData);
519
- sessionStorage.removeItem(window.location.href);
520
- return;
521
- }
522
- if (match && match.params.pid === undefined) {
523
- var newplugins = (0, _toConsumableArray2["default"])(plugins);
524
- newplugins.forEach(function (newplugin) {
525
- return newplugin(store, stateExtractor);
526
- });
527
- projectActions.newProject();
528
- sessionStorage.setItem('projectTitle', 'Untitled');
529
- projectActions.rename('Untitled');
530
- sessionStorage.removeItem('projectId');
531
- sessionStorage.removeItem('email');
532
- sessionStorage.removeItem('firstName');
533
- sessionStorage.removeItem('lastName');
534
- sessionStorage.removeItem('usedObjects');
535
- return;
536
- }
537
- if (match && match.params.pid !== undefined) {
538
- if (match.params.pid === 'new') {
539
- projectActions.newProject();
540
- sessionStorage.setItem('projectTitle', 'Untitled');
541
- projectActions.rename('Untitled');
542
- sessionStorage.removeItem('projectId');
543
- sessionStorage.removeItem('email');
544
- sessionStorage.removeItem('firstName');
545
- sessionStorage.removeItem('lastName');
546
- sessionStorage.removeItem('usedObjects');
547
- } else {
548
- _axios["default"].post("".concat(constants.API_SERVER_URL, "/api/project/loadPidProject"), {
549
- pid: match.params.pid,
550
- visualizerName: sessionStorage.getItem('visualizerName')
551
- }).then(/*#__PURE__*/function () {
552
- var _ref3 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(response) {
553
- var projectElement, jsonData, _t;
554
- return _regenerator["default"].wrap(function (_context) {
555
- while (1) switch (_context.prev = _context.next) {
556
- case 0:
557
- projectElement = response.data.projectElement;
558
- if (!(projectElement.length === 0)) {
559
- _context.next = 1;
560
- break;
561
- }
562
- return _context.abrupt("return");
563
- case 1:
564
- sessionStorage.setItem('projectTitle', projectElement[0].title);
565
- projectActions.rename(projectElement[0].title);
566
- sessionStorage.setItem('projectId', projectElement[0].id);
567
- sessionStorage.setItem('email', projectElement[0].email);
568
- sessionStorage.setItem('firstName', projectElement[0].firstName);
569
- sessionStorage.setItem('lastName', projectElement[0].lastName);
570
- sessionStorage.setItem('phone', projectElement[0].phone);
571
- if (!projectElement[0].project_data) {
572
- _context.next = 2;
573
- break;
574
- }
575
- jsonData = JSON.parse(projectElement[0].project_data);
576
- _context.next = 5;
577
- break;
578
- case 2:
579
- _context.prev = 2;
580
- _context.next = 3;
581
- return _axios["default"].post("".concat(constants.API_SERVER_URL, "/api/project/loadPidData"), {
582
- pid: match.params.pid
583
- }).data.data;
584
- case 3:
585
- jsonData = _context.sent;
586
- _context.next = 5;
587
- break;
588
- case 4:
589
- _context.prev = 4;
590
- _t = _context["catch"](2);
591
- _this4.setState({
592
- isSnackBarOpen: true,
593
- snackBarMessage: _t
594
- });
595
- case 5:
596
- jsonData.isLoadingCabinet = false;
597
- projectActions.loadProject(jsonData, _this4.props.categoryData);
598
- case 6:
599
- case "end":
600
- return _context.stop();
601
- }
602
- }, _callee, null, [[2, 4]]);
603
- }));
604
- return function (_x) {
605
- return _ref3.apply(this, arguments);
606
- };
607
- }());
608
- }
609
- sessionStorage.removeItem('user_type');
610
- sessionStorage.removeItem('project_type');
611
- sessionStorage.removeItem('project_timeline');
612
- }
613
- }
614
- }, {
615
- key: "componentWillUnmount",
616
- value: function componentWillUnmount() {
617
- window.addEventListener('beforeunload', this.handleBeforeUnload);
618
- window.onbeforeunload = null;
619
- }
620
- }, {
621
- key: "componentWillMount",
622
- value: function componentWillMount() {}
623
- }, {
624
- key: "componentWillReceiveProps",
625
- value: function componentWillReceiveProps(nextProps) {
626
- var stateExtractor = nextProps.stateExtractor,
627
- state = nextProps.state,
628
- projectActions = nextProps.projectActions,
629
- catalog = nextProps.catalog;
630
- var plannerState = stateExtractor(state);
631
- var catalogReady = plannerState.getIn(['catalog', 'ready']);
632
- if (!catalogReady) {
633
- projectActions.initCatalog(catalog);
634
- }
635
- }
636
- }, {
637
- key: "isProjectEmpty",
638
- value: function isProjectEmpty(scene) {
639
- var layers = scene.layers,
640
- selectedLayer = scene.selectedLayer;
641
- var layer = layers.get(selectedLayer);
642
- return layer.areas.size + layer.lines.size + layer.holes.size + layer.items.size === 0;
643
- }
644
- }, {
645
- key: "handleSaveDesign",
646
- value: function handleSaveDesign(value) {
647
- var _this$props3 = this.props,
648
- stateExtractor = _this$props3.stateExtractor,
649
- state = _this$props3.state;
650
- var plannerState = stateExtractor(state);
651
- var items = plannerState.getIn(['scene', 'layers', 'layer-1', 'items']);
652
- var areas = plannerState.getIn(['scene', 'layers', 'layer-1', 'areas']);
653
- if (areas.size === 0) {
654
- this.setState({
655
- isSnackBarOpen: true,
656
- snackBarMessage: 'Your project is empty.'
657
- });
658
- return;
659
- }
660
- // if (items.size === 0) {
661
- // saveAlert = <StyledAlert text={<span style={{fontSize: 16, fontFamily: DEFAULT_FONT_FAMILY}}>Add at least one item</span>} onClose={() => saveAlert = ""} />
662
- // return;
663
- // } else saveAlert = '';
664
- this.setState({
665
- reviewQuotePopupOpened: false
666
- });
667
- this.setState({
668
- savePopupVisible: value
669
- });
670
- this.setState({
671
- assistPopupVisible: false
672
- });
673
- this.setState({
674
- newProjectPopupVisible: false
675
- });
676
- this.setState({
677
- savePromptVisible: false
678
- });
679
- this.setState({
680
- submitPromptVisible: false
681
- });
682
- }
683
- }, {
684
- key: "handleNewProject",
685
- value: function handleNewProject(value) {
686
- this.setState({
687
- reviewQuotePopupOpened: false
688
- });
689
- this.setState({
690
- savePopupVisible: false
691
- });
692
- this.setState({
693
- quotePopupVisible: false
694
- });
695
- this.setState({
696
- assistPopupVisible: false
697
- });
698
- this.setState({
699
- newProjectPopupVisible: value
700
- });
701
- }
702
- }, {
703
- key: "handleSubmitForQuote",
704
- value: function handleSubmitForQuote(isVisible) {
705
- var submitType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : constants.SUBMIT_REQUEST_ASSIST;
706
- var items = this.props.stateExtractor(this.props.state).getIn(['scene', 'layers', this.props.stateExtractor(this.props.state).scene.selectedLayer, 'items']);
707
- if (submitType === constants.SUBMIT_ADD_CART) {
708
- this.setToolbar('reviewforquote');
709
- }
710
- if (submitType === constants.SUBMIT_ADD_CART && !items.size) {
711
- this.setState({
712
- isSnackBarOpen: true,
713
- snackBarMessage: 'Your project is empty. Please add at least one item.'
714
- });
715
- } else {
716
- this.setState({
717
- reviewQuotePopupOpened: false
718
- });
719
- this.setState({
720
- savePopupVisible: false
721
- });
722
- this.setState({
723
- quotePopupVisible: isVisible
724
- });
725
- this.setState({
726
- submitTosave: false
727
- });
728
- this.setState({
729
- assistPopupVisible: false
730
- });
731
- this.setState({
732
- newProjectPopupVisible: false
733
- });
734
- this.setState({
735
- stateSubmitType: submitType
736
- });
737
- }
738
- }
739
- }, {
740
- key: "findDelkeys",
741
- value: function findDelkeys(obj, deleteKeys, path) {
742
- if ((0, _typeof2["default"])(obj) === 'object') {
743
- var allkeys = Object.keys(obj);
744
- for (var i = 0; i < allkeys.length; i++) {
745
- var value = obj[allkeys[i]];
746
- if ((0, _utils.isEmpty)(value)) {
747
- deleteKeys.push({
748
- path: path,
749
- key: allkeys[i]
750
- });
751
- } else if ((0, _typeof2["default"])(value) === 'object') {
752
- var newPath = path + allkeys[i] + ',';
753
- this.findDelkeys(value, deleteKeys, newPath);
754
- }
755
- }
756
- } else if ((0, _utils.isEmpty)(obj)) {
757
- var tmpkey = path.split(',');
758
- deleteKeys.push({
759
- path: path,
760
- key: tmpkey[tmpkey.length - 1]
761
- });
762
- }
763
- }
764
- }, {
765
- key: "render",
766
- value: function render() {
767
- var _this5 = this;
768
- var _this$props4 = this.props,
769
- width = _this$props4.width,
770
- height = _this$props4.height,
771
- state = _this$props4.state,
772
- stateExtractor = _this$props4.stateExtractor,
773
- props = (0, _objectWithoutProperties2["default"])(_this$props4, _excluded);
774
- var _this$state = this.state,
775
- savePopupVisible = _this$state.savePopupVisible,
776
- quotePopupVisible = _this$state.quotePopupVisible,
777
- assistPopupVisible = _this$state.assistPopupVisible,
778
- newProjectPopupVisible = _this$state.newProjectPopupVisible,
779
- savePromptVisible = _this$state.savePromptVisible,
780
- isLeaving = _this$state.isLeaving,
781
- submitPromptVisible = _this$state.submitPromptVisible,
782
- stateSubmitType = _this$state.stateSubmitType,
783
- submitTosave = _this$state.submitTosave,
784
- signOpen = _this$state.signOpen,
785
- myProjectsOpen = _this$state.myProjectsOpen,
786
- myProjectsToLogin = _this$state.myProjectsToLogin,
787
- downloadPopupVisible = _this$state.downloadPopupVisible;
788
- var contentW = width - toolbarW;
789
- var categoryData = this.props.categoryData;
790
- var toolbarH = height;
791
- var contentH = height;
792
- var sidebarH = height;
793
- var headerW = width;
794
- var headerH = 60;
795
- var userInfo = this.props.match ? this.props.match.params : [];
796
- var extractedState = stateExtractor(state);
797
- //console.log('KC state - mode: ', extractedState.mode);
798
- var doorStyle = extractedState.get('doorStyle');
799
- if (extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== undefined && extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']) !== null) {
800
- var extractedStateData = extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'doorStyle']);
801
- var doorIdAvailable = false;
802
- if (this.props.categoryData.doorStyles && this.props.categoryData.doorStyles.items) {
803
- this.props.categoryData.doorStyles.items.find(function (category) {
804
- doorIdAvailable = category.items.find(function (style) {
805
- var item = style.items.find(function (it) {
806
- return it.id === extractedStateData.id;
807
- });
808
- return !!item;
809
- });
810
- });
811
- }
812
- if (doorIdAvailable) doorStyle = extractedStateData;
813
- }
814
- var firstVisit = this.state.wizardStepOpend && this.isProjectEmpty(extractedState.scene);
815
- var allVisible = firstVisit || signOpen || myProjectsOpen;
816
- var _scene = extractedState.getIn(['scene']);
817
- var len = (0, _convertUnitsLite.convert)(_scene.width).from(_scene.unit).to('cm');
818
- var _viewer2D = extractedState.getIn(['viewer2D']);
819
- if (_viewer2D.size > 0) {
820
- var scaleX = width / len * 3;
821
- var scaleY = height / len * 3;
822
- var scale = scaleX > scaleY ? scaleY : scaleX;
823
- var _e = width - len * scale,
824
- _f = height - len * scale;
825
- var viewer = _viewer2D.toJS();
826
- if (viewer.e === 0 && viewer.f === 0) {
827
- _viewer2D = _viewer2D.merge({
828
- e: viewer.viewerWidth / 2 - viewer.SVGWidth / 2,
829
- f: viewer.viewerHeight / 2 - viewer.SVGHeight / 2,
830
- a: 0.99,
831
- d: 0.99
832
- });
833
- }
834
- }
835
- extractedState = extractedState.merge({
836
- viewer2D: _viewer2D
837
- });
838
- var history = this.props.history;
839
- var handleContinueQuote = function handleContinueQuote() {
840
- _this5.setToolbar('reviewforquote');
841
- _this5.setState({
842
- savePopupVisible: false,
843
- quotePopupVisible: true
844
- });
845
- };
846
- var newProject = function newProject() {
847
- _this5.props.projectActions.newProject();
848
- sessionStorage.setItem('projectTitle', 'Untitled');
849
- _this5.props.projectActions.rename('Untitled');
850
- sessionStorage.removeItem('projectId');
851
- sessionStorage.removeItem('usedObjects');
852
- var visualizerName = sessionStorage.getItem('visualizerName');
853
- var originalAccessToken = _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_ORIGINAL_TOKEN);
854
- var tokenName = _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_TOKEN_NAME);
855
- var pathname = "/".concat(visualizerName);
856
- if (tokenName && originalAccessToken) {
857
- pathname += "?".concat(tokenName).concat(originalAccessToken);
858
- }
859
- history.push({
860
- pathname: pathname
861
- });
862
- _this5.setState({
863
- wizardStepOpend: false
864
- });
865
- };
866
-
867
- /**
868
- * @description Save Projects
869
- * @param {{email,firstName,lastName,notes,projectName}} param Project information to save
870
- */
871
- var saveProject = /*#__PURE__*/function () {
872
- var _ref4 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(param) {
873
- var _state2, _state3;
874
- var rlt, title, projectId, projectTitle, utm, state, _state, scene, itemData, newScene, deleteKeys, i, tmp, deletePath, j, projectData, object_count, originalAccessToken, tokenName, response, _response$data, success, message, userData, access_token, insertId, currentProjectID, _t2;
875
- return _regenerator["default"].wrap(function (_context2) {
876
- while (1) switch (_context2.prev = _context2.next) {
877
- case 0:
878
- rlt = {
879
- success: false
880
- }; // Get storage info
881
- title = sessionStorage.getItem('projectTitle');
882
- projectId = sessionStorage.getItem('projectId');
883
- projectTitle = param && param.projectName || title || "Project-".concat(new Date().toLocaleString());
884
- utm = _this5.utm; // State
885
- state = _export2.Project.unselectAll(extractedState).updatedState;
886
- _state = state, scene = _state.scene;
887
- state = state.merge({
888
- scene: scene.merge({
889
- title: projectTitle
890
- })
891
- });
892
-
893
- // Set storage info
894
- sessionStorage.setItem('projectTitle', projectTitle);
895
- props.projectActions.rename(projectTitle);
896
-
897
- // Filter cds
898
- itemData = state.getIn(['scene', 'layers', state.get('scene').toJS().selectedLayer, 'items']).toArray();
899
- itemData.forEach(function (it) {
900
- var _item$doorStyle;
901
- var item = it.toJS();
902
- var doorStyles = item === null || item === void 0 || (_item$doorStyle = item.doorStyle) === null || _item$doorStyle === void 0 ? void 0 : _item$doorStyle.doorStyles;
903
-
904
- // Skip if no doorStyles data at all
905
- if (!doorStyles) return;
906
- var newCDSdata = Array.isArray(doorStyles.cds) ? doorStyles.cds.filter(function (it1) {
907
- return it1.cabinet_door_style_id === doorStyles.cabinet_door_style_id;
908
- }) : [];
909
- var layerId = state.get('scene').toJS().selectedLayer;
910
- var basePath = ['scene', 'layers', layerId, 'items', it.id, 'doorStyle', 'doorStyles'];
911
- if (state.hasIn(basePath)) {
912
- state = state.setIn([].concat(basePath, ['cds']), newCDSdata);
913
- }
914
- });
915
-
916
- // Delete null values
917
- newScene = state.getIn(['scene']);
918
- deleteKeys = [];
919
- _this5.findDelkeys(newScene.toJS(), deleteKeys, '');
920
- for (i = 0; i < deleteKeys.length; i++) {
921
- tmp = newScene.toJS();
922
- deletePath = deleteKeys[i].path.split(',');
923
- for (j = 0; j < deletePath.length; j++) {
924
- if (!(0, _utils.isEmpty)(deletePath[j])) {
925
- tmp = tmp[deletePath[j]];
926
- }
927
- }
928
- if (deletePath.length >= 2) {
929
- delete tmp[deleteKeys[i].key];
930
- deletePath.pop();
931
- if (!(0, _utils.isEmpty)(newScene.getIn(deletePath))) newScene = newScene.setIn(deletePath, tmp);
932
- } else {
933
- newScene = newScene["delete"](deleteKeys[i].key);
934
- }
935
- }
936
- state = state.setIn(['scene'], newScene);
937
-
938
- // Data to save
939
- projectData = JSON.stringify(state.get('scene').toJS());
940
- object_count = Object.keys(((_state2 = state) === null || _state2 === void 0 || (_state2 = _state2.scene) === null || _state2 === void 0 || (_state2 = _state2.layers) === null || _state2 === void 0 || (_state2 = _state2.get((_state3 = state) === null || _state3 === void 0 || (_state3 = _state3.scene) === null || _state3 === void 0 ? void 0 : _state3.selectedLayer)) === null || _state2 === void 0 ? void 0 : _state2.items) || {}).length;
941
- _context2.prev = 1;
942
- originalAccessToken = _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_ORIGINAL_TOKEN);
943
- tokenName = _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_TOKEN_NAME);
944
- _context2.next = 2;
945
- return _axios["default"].post('/api/project/saveProject', _objectSpread(_objectSpread({
946
- pid: projectId,
947
- title: projectTitle,
948
- mode: _constants.MODE,
949
- access_token: userInfo.token ? userInfo.token : null,
950
- userrole: userInfo.role ? userInfo.role : null,
951
- saveData: _objectSpread(_objectSpread(_objectSpread({}, param), utm), {}, {
952
- projectData: projectData,
953
- object_count: object_count
954
- }),
955
- url: window.location.hostname,
956
- visualizerName: sessionStorage.getItem('visualizerName')
957
- }, originalAccessToken ? {
958
- original_token: originalAccessToken
959
- } : undefined), tokenName ? {
960
- query_params_token_prefix: tokenName
961
- } : undefined));
962
- case 2:
963
- response = _context2.sent;
964
- _response$data = response.data, success = _response$data.success, message = _response$data.message, userData = _response$data.userData, access_token = _response$data.access_token;
965
- if (success === true) {
966
- rlt.success = true;
967
- insertId = response.data.execResult.insertId;
968
- currentProjectID = insertId !== 0 ? insertId : state.getIn(['scene', 'currentProjectID']); // Set storage data
969
- sessionStorage.setItem('projectId', currentProjectID);
970
- sessionStorage.setItem('email', param.email);
971
- sessionStorage.setItem('phone', param.phone);
972
- sessionStorage.setItem('firstName', param.firstName);
973
- sessionStorage.setItem('lastName', param.lastName);
974
- props.projectActions.setProjectID({
975
- currentProjectID: currentProjectID
976
- });
977
- _export["default"].userActions.login(userData[0].id, userData[0].role, access_token, utm);
978
- _this5.setState({
979
- toolbar: _this5.state.toolbar,
980
- isSaved: true,
981
- isSnackBarOpen: true,
982
- snackBarMessage: 'Your project has been saved. </br> You can now request <b>Designer Assistance</b> or <b>Add to Cart</b>'
983
- });
984
- _ga.GA.events.projectSaved(currentProjectID, 'manual');
985
- _posthog.PH.projectSaved(currentProjectID);
986
- if (_this5.state.submitTosave) {
987
- handleContinueQuote();
988
- }
989
- } else {
990
- rlt.success = false;
991
- rlt.message = message;
992
- _this5.setState({
993
- isSnackBarOpen: true,
994
- snackBarMessage: "Failed to add project data: ".concat(message)
995
- });
996
- }
997
- _context2.next = 4;
998
- break;
999
- case 3:
1000
- _context2.prev = 3;
1001
- _t2 = _context2["catch"](1);
1002
- rlt.success = false;
1003
- console.error(_t2);
1004
- _this5.setState({
1005
- isSnackBarOpen: true,
1006
- snackBarMessage: 'Failed to add project data.'
1007
- });
1008
- case 4:
1009
- return _context2.abrupt("return", rlt);
1010
- case 5:
1011
- case "end":
1012
- return _context2.stop();
1013
- }
1014
- }, _callee2, null, [[1, 3]]);
1015
- }));
1016
- return function saveProject(_x2) {
1017
- return _ref4.apply(this, arguments);
1018
- };
1019
- }();
1020
- var pidSplit = userInfo.pid && userInfo.pid.indexOf('?');
1021
- // If pidSplit is undefined pid is undefined
1022
- var pid = pidSplit === undefined || pidSplit === -1 ? userInfo.pid : userInfo.pid.slice(0, pidSplit);
1023
- var submitForQuote = /*#__PURE__*/function () {
1024
- var _ref5 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(param) {
1025
- var rlt, apiUrl, extraFormData, originalAccessToken, tokenName, customerRequests, notes, response, _response$data2, success, message, redirect_url, _summarizeItems, totalCount, totalPrice, _t3;
1026
- return _regenerator["default"].wrap(function (_context3) {
1027
- while (1) switch (_context3.prev = _context3.next) {
1028
- case 0:
1029
- rlt = {
1030
- success: false
1031
- };
1032
- if (userInfo.token) {
1033
- _context3.next = 1;
1034
- break;
1035
- }
1036
- _this5.setState({
1037
- isSnackBarOpen: true,
1038
- snackBarMessage: 'You should save the project first.'
1039
- });
1040
- return _context3.abrupt("return");
1041
- case 1:
1042
- apiUrl = '';
1043
- if (param.flag === constants.SUBMIT_REQUEST_ASSIST) {
1044
- apiUrl = "".concat(_constants.API_SERVER_URL, "/api/project/submitProject");
1045
- } else if (param.flag === constants.SUBMIT_ADD_CART) {
1046
- apiUrl = "".concat(_constants.API_SERVER_URL, "/api/project/addCart");
1047
- }
1048
- _context3.prev = 2;
1049
- extraFormData = {
1050
- userType: sessionStorage.getItem('user_type') || '',
1051
- designType: sessionStorage.getItem('project_type') || '',
1052
- startTime: sessionStorage.getItem('project_timeline') || ''
1053
- };
1054
- originalAccessToken = _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_ORIGINAL_TOKEN);
1055
- tokenName = _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_TOKEN_NAME);
1056
- customerRequests = param.customer_requests;
1057
- notes = customerRequests.notes;
1058
- _context3.next = 3;
1059
- return _axios["default"].post(apiUrl, {
1060
- access_token: userInfo.token,
1061
- data: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, param), extraFormData.userType ? {
1062
- user_type: extraFormData.userType
1063
- } : undefined), extraFormData.designType ? {
1064
- project_type: extraFormData.designType
1065
- } : undefined), extraFormData.startTime ? {
1066
- project_timeline: extraFormData.startTime
1067
- } : undefined), {}, {
1068
- cart_total: parseFloat(sessionStorage.getItem('cart_total')),
1069
- client_name: sessionStorage.getItem('visualizerName'),
1070
- user_token: _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_TOKEN_VALUE),
1071
- cart_action_type: _localstorageSlim["default"].get(_constants.LOCAL_STORAGE_CART_ACTION),
1072
- customer_requests: Object.values(customerRequests.reviewOptions).filter(Boolean).join(', ')
1073
- }, param.flag === constants.SUBMIT_ADD_CART ? {
1074
- cart_notes: notes
1075
- } : {
1076
- designer_notes: notes
1077
- }), {}, {
1078
- question_add_to_cart: param.flag === constants.SUBMIT_ADD_CART
1079
- }, originalAccessToken ? {
1080
- original_token: originalAccessToken
1081
- } : undefined), tokenName ? {
1082
- query_params_token_prefix: tokenName
1083
- } : undefined),
1084
- num: true,
1085
- projectid: pid,
1086
- search: _this5.props.location.search,
1087
- userrole: userInfo.role,
1088
- url: window.location.hostname
1089
- });
1090
- case 3:
1091
- response = _context3.sent;
1092
- _response$data2 = response.data, success = _response$data2.success, message = _response$data2.message, redirect_url = _response$data2.redirect_url;
1093
- if (success) {
1094
- rlt.success = true;
1095
- param.email && sessionStorage.setItem('email', param.email);
1096
- param.phone && sessionStorage.setItem('phone', param.phone);
1097
- _this5.setState({
1098
- redirectURL: redirect_url,
1099
- isSnackBarOpen: true,
1100
- snackBarMessage: "".concat(param.flag === constants.SUBMIT_REQUEST_ASSIST ? 'Project submitted' : 'Added to cart', " successfully.").concat(customerRequests.reviewOptions.length > 0 || customerRequests.notes ? ' <br /> A confirmation has been emailed to you and a designer will be in contact shortly' : ''),
1101
- isSnackBar1Open: param.flag === constants.SUBMIT_ADD_CART
1102
- });
1103
- try {
1104
- if (param.flag === constants.SUBMIT_REQUEST_ASSIST) {
1105
- _ga.GA.events.assistanceRequested('manual', pid);
1106
- _posthog.PH.assistanceRequested('manual', pid);
1107
- } else {
1108
- _summarizeItems = (0, _summarizeCart.summarizeItems)(JSON.parse(sessionStorage.getItem('usedObjects'))), totalCount = _summarizeItems.totalCount, totalPrice = _summarizeItems.totalPrice;
1109
- _ga.GA.events.addToCart(pid, totalCount, totalPrice);
1110
- _posthog.PH.addToCart(pid, totalCount, totalPrice);
1111
- }
1112
- } catch (e) {
1113
- console.log('Error logging GA event', e);
1114
- }
1115
- } else {
1116
- rlt.success = false;
1117
- rlt.message = message;
1118
- _this5.setState({
1119
- isSnackBarOpen: true,
1120
- snackBarMessage: "".concat(param.flag === constants.SUBMIT_REQUEST_ASSIST ? 'Submitting project' : 'Adding to cart', " failed: ").concat(message)
1121
- });
1122
- }
1123
- _context3.next = 5;
1124
- break;
1125
- case 4:
1126
- _context3.prev = 4;
1127
- _t3 = _context3["catch"](2);
1128
- rlt.success = false;
1129
- console.log('err', _t3);
1130
- _this5.setState({
1131
- isSnackBarOpen: true,
1132
- snackBarMessage: "".concat(param.flag === constants.SUBMIT_REQUEST_ASSIST ? 'Submitting project' : 'Adding to cart', " failed.")
1133
- });
1134
- case 5:
1135
- return _context3.abrupt("return", rlt);
1136
- case 6:
1137
- case "end":
1138
- return _context3.stop();
1139
- }
1140
- }, _callee3, null, [[2, 4]]);
1141
- }));
1142
- return function submitForQuote(_x3) {
1143
- return _ref5.apply(this, arguments);
1144
- };
1145
- }();
1146
- return /*#__PURE__*/_react["default"].createElement("section", null, /*#__PURE__*/_react["default"].createElement(_Snackbar["default"], {
1147
- isOpen: this.state.isSnackBarOpen,
1148
- message: this.state.snackBarMessage,
1149
- handleClose: function handleClose() {
1150
- return _this5.setState({
1151
- isSnackBarOpen: false,
1152
- snackBarMessage: ''
1153
- });
1154
- },
1155
- autoHideDuration: 10000
1156
- }), /*#__PURE__*/_react["default"].createElement(_Snackbar["default"], {
1157
- style: {
1158
- marginTop: this.state.isSnackBarOpen ? 75 : 'unset'
1159
- },
1160
- isOpen: this.state.isSnackBar1Open,
1161
- message: "The items in your design have been added to your shopping cart at ".concat(_constants.CLIENTS_NAME[sessionStorage.getItem('visualizerName')], ". <br />Please log in with the same email address."),
1162
- autoHideDuration: 20000,
1163
- action: /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("a", {
1164
- href: this.state.redirectURL,
1165
- target: "_blank",
1166
- style: {
1167
- fontFamily: _constants.DEFAULT_FONT_FAMILY,
1168
- color: _constants.PRIMARY_GREEN_COLOR,
1169
- fontWeight: 700,
1170
- marginRight: 10
1171
- }
1172
- }, "View Cart"), /*#__PURE__*/_react["default"].createElement("img", {
1173
- onClick: function onClick() {
1174
- return _this5.setState({
1175
- isSnackBar1Open: false
1176
- });
1177
- },
1178
- style: {
1179
- "float": 'right',
1180
- height: 24,
1181
- cursor: 'pointer'
1182
- },
1183
- src: "/assets/img/svg/close.svg"
1184
- }))
1185
- }), /*#__PURE__*/_react["default"].createElement("div", {
1186
- style: _objectSpread(_objectSpread({}, wrapperStyle), {}, {
1187
- height: height
1188
- })
1189
- }, /*#__PURE__*/_react["default"].createElement(Header, (0, _extends2["default"])({
1190
- isTokenPresent: !!this.props.match.params.token,
1191
- isSaved: this.state.isSaved,
1192
- width: headerW,
1193
- height: headerH,
1194
- state: extractedState,
1195
- reviewQuoteHandler: this.onReviewQuoteClicked.bind(this),
1196
- handleSaveDesign: this.handleSaveDesign.bind(this),
1197
- handleSubmitForQuote: this.handleSubmitForQuote.bind(this),
1198
- handleNewProject: this.handleNewProject.bind(this),
1199
- handleSubmitPrompt: function handleSubmitPrompt(submitType) {
1200
- _this5.setState({
1201
- submitPromptVisible: true
1202
- });
1203
- _this5.setState({
1204
- stateSubmitType: submitType
1205
- });
1206
- },
1207
- logoImage: this.props.logoImage,
1208
- companyURL: this.props.companyURL,
1209
- setToolbar: this.setToolbar,
1210
- saveProject: saveProject,
1211
- newProject: newProject,
1212
- isModalVisible: this.state.isModalVisible,
1213
- allVisible: allVisible,
1214
- wizardStepOpend: firstVisit
1215
- }, props)), signOpen && /*#__PURE__*/_react["default"].createElement(Sign, {
1216
- setSignOpen: this.setSignOpen.bind(this),
1217
- setMyProjectsOpen: this.setMyProjectsOpen.bind(this),
1218
- setMyProjectsToLogin: this.setMyProjectsToLogin.bind(this),
1219
- myProjectsToLogin: myProjectsToLogin
1220
- }), !allVisible &&
1221
- /*#__PURE__*/
1222
- // left side bar & top tools bar
1223
- _react["default"].createElement(Toolbar, (0, _extends2["default"])({
1224
- width: toolbarW,
1225
- content: contentW,
1226
- height: toolbarH,
1227
- headerH: headerH,
1228
- state: extractedState,
1229
- layers: extractedState.scene.layers,
1230
- selectedLayer: extractedState.scene.selectedLayer
1231
- }, props, {
1232
- handleSaveDesign: this.handleSaveDesign.bind(this),
1233
- handleSubmitForQuote: this.handleSubmitForQuote.bind(this),
1234
- handleNewProject: this.handleNewProject.bind(this),
1235
- handleSubmitPrompt: function handleSubmitPrompt(submitType) {
1236
- _this5.setState({
1237
- submitPromptVisible: true
1238
- });
1239
- _this5.setState({
1240
- stateSubmitType: submitType
1241
- });
1242
- },
1243
- toolBar: this.state.toolbar,
1244
- setToolbar: this.setToolbar,
1245
- setDownloadPopupVisible: this.setDownloadPopupVisible.bind(this),
1246
- openFloor: this.openFloor,
1247
- openCabinet: this.openCabinet,
1248
- openAppliance: this.openAppliance,
1249
- openFinishing: this.openFinishing,
1250
- closeFloorTB: this.closeFloorTB,
1251
- closeCabinetTB: this.closeCabinetTB,
1252
- closeFinishingTB: this.closeFinishingTB,
1253
- closeApplianceTB: this.closeApplianceTB,
1254
- setShowProperty: this.setShowProperty,
1255
- reviewQuotePopupOpened: this.state.reviewQuotePopupOpened,
1256
- isShowProperty: this.state.isShowProperty,
1257
- categoryData: this.props.categoryData,
1258
- floorOpened: this.state.floorOpened,
1259
- cabinetOpened: this.state.cabinetOpened,
1260
- applianceOpened: this.state.applianceOpened,
1261
- finishingOpened: this.state.finishingOpened,
1262
- doorStyleOpen: this.state.doorStyleOpen,
1263
- toggleDoorStyle: this.toggleDoorStyle,
1264
- onReviewQuoteClicked: this.onReviewQuoteClicked,
1265
- wizardStepOpend: firstVisit,
1266
- replaceCabinetFlag: this.state.replaceCabinetFlag,
1267
- replaceCabinet: this.replaceCabinet
1268
- })), /*#__PURE__*/_react["default"].createElement(_export3.Content, (0, _extends2["default"])({
1269
- width: contentW,
1270
- height: contentH,
1271
- catalog: this.props.catalog,
1272
- state: extractedState,
1273
- toolBar: this.state.toolbar,
1274
- setToolbar: this.setToolbar,
1275
- replaceCabinet: this.replaceCabinet,
1276
- keyDownEnable: !savePopupVisible && !quotePopupVisible && !assistPopupVisible
1277
- }, props, {
1278
- onWheel: function onWheel(event) {
1279
- return event.preventDefault();
1280
- }
1281
- })), !allVisible && /*#__PURE__*/_react["default"].createElement(FooterBar, (0, _extends2["default"])({
1282
- content: contentW,
1283
- setToolbar: this.setToolbar,
1284
- layers: extractedState.scene.layers,
1285
- setShowProperty: this.setShowProperty,
1286
- state: extractedState,
1287
- selectedLayer: extractedState.scene.selectedLayer
1288
- }, props)), firstVisit && /*#__PURE__*/_react["default"].createElement(WizardStep, (0, _extends2["default"])({
1289
- key: "first-setting",
1290
- content: contentW,
1291
- layers: extractedState.scene.layers,
1292
- close: function close() {
1293
- return _this5.setState({
1294
- wizardStepOpend: false
1295
- });
1296
- },
1297
- state: extractedState,
1298
- setMyProjectsToLogin: this.setMyProjectsToLogin.bind(this),
1299
- setSignOpen: this.setSignOpen.bind(this),
1300
- selectedLayer: extractedState.scene.selectedLayer,
1301
- setMyProjectsOpen: this.setMyProjectsOpen.bind(this)
1302
- }, props)), myProjectsOpen && /*#__PURE__*/_react["default"].createElement(MyProjects, (0, _extends2["default"])({
1303
- setMyProjectsOpen: this.setMyProjectsOpen.bind(this)
1304
- }, props)), /*#__PURE__*/_react["default"].createElement(_savedesign["default"], (0, _extends2["default"])({
1305
- visible: savePopupVisible,
1306
- submitTosave: submitTosave,
1307
- handleSaveDesign: this.handleSaveDesign.bind(this),
1308
- saveProject: saveProject,
1309
- state: extractedState
1310
- }, props)), /*#__PURE__*/_react["default"].createElement(_submitforquote["default"], (0, _extends2["default"])({
1311
- categoryData: categoryData,
1312
- curDoorStyle: doorStyle,
1313
- handleSubmitForQuote: this.handleSubmitForQuote.bind(this),
1314
- submitForQuote: submitForQuote,
1315
- visible: quotePopupVisible,
1316
- setDoorStyle: this.props.itemsActions.setDoorStyle,
1317
- submitType: stateSubmitType
1318
- }, props)), /*#__PURE__*/_react["default"].createElement(_newproject["default"], {
1319
- isSaved: this.state.isSaved,
1320
- visible: newProjectPopupVisible,
1321
- handleNewProject: this.handleNewProject.bind(this),
1322
- newProject: newProject,
1323
- areas: extractedState.getIn(['scene', 'layers', extractedState.scene.selectedLayer, 'areas'])
1324
- }), /*#__PURE__*/_react["default"].createElement(_index["default"], {
1325
- visible: submitPromptVisible,
1326
- submitType: stateSubmitType,
1327
- handleOk: function handleOk(value) {
1328
- return _this5.handleSaveDesign(value) || _this5.setState({
1329
- submitTosave: true
1330
- });
1331
- },
1332
- handleClose: function handleClose() {
1333
- _this5.setState({
1334
- submitPromptVisible: false
1335
- });
1336
- }
1337
- }), /*#__PURE__*/_react["default"].createElement(_autosaveprompt["default"], {
1338
- isLeaving: isLeaving,
1339
- visible: savePromptVisible,
1340
- handleOk: this.handleSaveDesign.bind(this),
1341
- handleClose: function handleClose() {
1342
- return _this5.setState({
1343
- savePromptVisible: false,
1344
- submitTosave: false
1345
- });
1346
- }
1347
- }), /*#__PURE__*/_react["default"].createElement(_downloadsummary["default"], (0, _extends2["default"])({
1348
- visible: downloadPopupVisible,
1349
- state: extractedState,
1350
- catalog: this.props.catalog,
1351
- setDownloadPopupVisible: this.setDownloadPopupVisible.bind(this)
1352
- }, props)), saveAlert));
1353
- }
1354
- }]);
1355
- }(_react.Component);
1356
- KitchenConfigurator.propTypes = {
1357
- translator: _propTypes["default"].instanceOf(_translator["default"]),
1358
- catalog: _propTypes["default"].instanceOf(_catalog["default"]),
1359
- allowProjectFileSupport: _propTypes["default"].bool,
1360
- plugins: _propTypes["default"].arrayOf(_propTypes["default"].func),
1361
- autosaveKey: _propTypes["default"].string,
1362
- autosaveDelay: _propTypes["default"].number,
1363
- width: _propTypes["default"].number.isRequired,
1364
- height: _propTypes["default"].number.isRequired,
1365
- stateExtractor: _propTypes["default"].func.isRequired,
1366
- toolbarButtons: _propTypes["default"].array,
1367
- sidebarComponents: _propTypes["default"].array,
1368
- footerbarComponents: _propTypes["default"].array,
1369
- customContents: _propTypes["default"].object,
1370
- softwareSignature: _propTypes["default"].string,
1371
- configData: _propTypes["default"].object
1372
- };
1373
- KitchenConfigurator.contextTypes = {
1374
- store: _propTypes["default"].object.isRequired
1375
- };
1376
- KitchenConfigurator.childContextTypes = _objectSpread(_objectSpread({}, (0, _objectsUtils.objectsMap)(_export["default"], function () {
1377
- return _propTypes["default"].object;
1378
- })), {}, {
1379
- translator: _propTypes["default"].object,
1380
- catalog: _propTypes["default"].object
1381
- });
1382
- KitchenConfigurator.defaultProps = {
1383
- translator: new _translator["default"](),
1384
- catalog: new _catalog["default"](),
1385
- plugins: [],
1386
- allowProjectFileSupport: true,
1387
- softwareSignature: "KitchenConfigurator ".concat(_version.VERSION),
1388
- toolbarButtons: [],
1389
- sidebarComponents: [],
1390
- footerbarComponents: [],
1391
- customContents: {},
1392
- configData: {}
1393
- };
1394
- function mapStateToProps(reduxState) {
1395
- return {
1396
- state: reduxState
1397
- };
1398
- }
1399
- function mapDispatchToProps(dispatch) {
1400
- return (0, _objectsUtils.objectsMap)(_export["default"], function (actionNamespace) {
1401
- return (0, _redux.bindActionCreators)(_export["default"][actionNamespace], dispatch);
1402
- });
1403
- }
1404
- var _default = exports["default"] = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(KitchenConfigurator);
1405
- module.exports = exports.default;