kitchen-simulator 3.1.14 → 4.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/es/LiteKitchenConfigurator.js +204 -24
  2. package/es/LiteRenderer.js +277 -12
  3. package/es/actions/items-actions.js +6 -10
  4. package/es/actions/lines-actions.js +1 -3
  5. package/es/actions/project-actions.js +5 -15
  6. package/es/assets/Window.hdr +2100 -0
  7. package/es/assets/gltf/door_sliding.bin +0 -0
  8. package/es/assets/img/1.jpg +0 -0
  9. package/es/catalog/areas/area/planner-element.js +5 -10
  10. package/es/catalog/catalog.js +4 -1
  11. package/es/catalog/factories/area-factory-3d.js +17 -18
  12. package/es/catalog/factories/wall-factory-3d.js +2 -2
  13. package/es/catalog/factories/wall-factory.js +8 -8
  14. package/es/catalog/lines/wall/planner-element.js +9 -18
  15. package/es/catalog/utils/exporter.js +3 -6
  16. package/es/catalog/utils/item-loader.js +197 -202
  17. package/es/catalog/utils/mtl-loader.js +2 -2
  18. package/es/catalog/utils/obj-loader.js +2 -2
  19. package/es/class/item.js +127 -107
  20. package/es/class/line.js +2 -14
  21. package/es/class/project.js +44 -150
  22. package/es/components/content.js +6 -19
  23. package/es/components/viewer2d/grids/grid-streak.js +1 -1
  24. package/es/components/viewer2d/item.js +51 -84
  25. package/es/components/viewer2d/line.js +243 -315
  26. package/es/components/viewer2d/ruler.js +36 -16
  27. package/es/components/viewer2d/rulerDist.js +75 -44
  28. package/es/components/viewer2d/utils.js +0 -6
  29. package/es/components/viewer2d/viewer2d.js +205 -301
  30. package/es/components/viewer3d/front3D.js +2 -3
  31. package/es/components/viewer3d/libs/mtl-loader.js +2 -2
  32. package/es/components/viewer3d/libs/obj-loader.js +2 -2
  33. package/es/components/viewer3d/libs/orbit-controls.js +4 -3
  34. package/es/components/viewer3d/libs/pointer-lock-controls.js +7 -6
  35. package/es/components/viewer3d/viewer3d.js +80 -127
  36. package/es/constants.js +3 -110
  37. package/es/devLiteRenderer.js +38 -597
  38. package/es/index.js +86 -16
  39. package/es/models.js +5 -8
  40. package/es/plugins/SVGLoader.js +5 -7
  41. package/es/plugins/keyboard.js +6 -15
  42. package/es/reducers/items-reducer.js +5 -5
  43. package/es/reducers/lines-reducer.js +1 -1
  44. package/es/reducers/project-reducer.js +3 -5
  45. package/es/shared-style.js +4 -4
  46. package/es/utils/geometry.js +0 -161
  47. package/es/utils/get-edges-of-subgraphs.js +1 -1
  48. package/es/utils/graph-cycles.js +1 -1
  49. package/es/utils/graph.js +1 -1
  50. package/es/utils/helper.js +2 -67
  51. package/es/utils/isolate-event-handler.js +124 -1367
  52. package/es/utils/molding.js +2 -238
  53. package/lib/LiteKitchenConfigurator.js +205 -25
  54. package/lib/LiteRenderer.js +278 -13
  55. package/lib/actions/items-actions.js +6 -10
  56. package/lib/actions/lines-actions.js +1 -3
  57. package/lib/actions/project-actions.js +4 -15
  58. package/lib/assets/Window.hdr +2100 -0
  59. package/lib/assets/gltf/door_sliding.bin +0 -0
  60. package/lib/assets/img/1.jpg +0 -0
  61. package/lib/catalog/areas/area/planner-element.js +5 -11
  62. package/lib/catalog/catalog.js +4 -1
  63. package/lib/catalog/factories/area-factory-3d.js +14 -15
  64. package/lib/catalog/factories/wall-factory-3d.js +2 -2
  65. package/lib/catalog/factories/wall-factory.js +8 -8
  66. package/lib/catalog/lines/wall/planner-element.js +9 -19
  67. package/lib/catalog/utils/exporter.js +3 -6
  68. package/lib/catalog/utils/item-loader.js +194 -199
  69. package/lib/catalog/utils/mtl-loader.js +2 -9
  70. package/lib/catalog/utils/obj-loader.js +2 -10
  71. package/lib/class/item.js +125 -105
  72. package/lib/class/line.js +1 -13
  73. package/lib/class/project.js +43 -149
  74. package/lib/components/content.js +6 -19
  75. package/lib/components/viewer2d/grids/grid-streak.js +1 -1
  76. package/lib/components/viewer2d/item.js +50 -83
  77. package/lib/components/viewer2d/line.js +242 -315
  78. package/lib/components/viewer2d/ruler.js +35 -15
  79. package/lib/components/viewer2d/rulerDist.js +75 -44
  80. package/lib/components/viewer2d/utils.js +0 -7
  81. package/lib/components/viewer2d/viewer2d.js +205 -299
  82. package/lib/components/viewer3d/front3D.js +2 -3
  83. package/lib/components/viewer3d/libs/mtl-loader.js +2 -9
  84. package/lib/components/viewer3d/libs/obj-loader.js +2 -9
  85. package/lib/components/viewer3d/libs/orbit-controls.js +5 -11
  86. package/lib/components/viewer3d/libs/pointer-lock-controls.js +7 -13
  87. package/lib/components/viewer3d/viewer3d.js +79 -125
  88. package/lib/constants.js +7 -115
  89. package/lib/devLiteRenderer.js +33 -592
  90. package/lib/index.js +86 -16
  91. package/lib/models.js +5 -8
  92. package/lib/plugins/SVGLoader.js +5 -7
  93. package/lib/plugins/keyboard.js +6 -15
  94. package/lib/reducers/items-reducer.js +5 -5
  95. package/lib/reducers/lines-reducer.js +1 -1
  96. package/lib/reducers/project-reducer.js +2 -4
  97. package/lib/shared-style.js +4 -4
  98. package/lib/utils/geometry.js +0 -162
  99. package/lib/utils/get-edges-of-subgraphs.js +1 -6
  100. package/lib/utils/graph-cycles.js +8 -7
  101. package/lib/utils/graph.js +1 -6
  102. package/lib/utils/helper.js +3 -70
  103. package/lib/utils/isolate-event-handler.js +121 -1364
  104. package/lib/utils/molding.js +0 -238
  105. package/package.json +1 -1
@@ -4,28 +4,27 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  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; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
6
  import { convert } from "../../utils/convert-units-lite";
7
- import { fromJS, Map } from "immutable";
8
- import React, { useState } from "react";
9
- import * as Three from "three";
7
+ import { fromJS, Map } from 'immutable';
8
+ import React, { useState } from 'react';
9
+ import * as Three from 'three';
10
10
  import * as SceneCreator from "../../components/viewer3d/scene-creator";
11
11
  import { ARROW_COLOR, BASE_CABINET_LAYOUTPOS, OBJTYPE_GROUP, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, SHAPE_SVG_DEPTH, SHAPE_SVG_PADDING, SHAPE_SVG_WIDTH, STATUS_WARNING_COLOR, STATUS_WARNING_LIGHT_COLOR, TALL_CABINET_LAYOUTPOS, UNIT_CENTIMETER, UNIT_INCH, WALL_CABINET_LAYOUTPOS } from "../../constants";
12
12
  import { Item } from "../../models";
13
13
  import * as GeomUtils from "./geom-utils";
14
14
  import { loadGLTF } from "./load-obj";
15
15
  import { animateDoor, isEmpty, translateDrawer } from "../../utils/helper";
16
- import { isWarningItem } from "../../components/viewer2d/utils";
17
- var INITIAL_NORMAL_MAP = "";
16
+ var INITIAL_NORMAL_MAP = '';
18
17
 
19
18
  // env Map ///////////////
20
19
  var paramsCounter = {
21
- envMap: "HDR",
20
+ envMap: 'HDR',
22
21
  roughness: 0.6,
23
22
  metalness: 0.3,
24
23
  exposure: 1
25
24
  // debug: true
26
25
  };
27
26
  var params = {
28
- envMap: "HDR",
27
+ envMap: 'HDR',
29
28
  roughness: 0.9,
30
29
  metalness: 0.1,
31
30
  metalness_glossy: 0.2,
@@ -33,18 +32,18 @@ var params = {
33
32
  // debug: false
34
33
  };
35
34
  var paramsModel = {
36
- envMap: "HDR",
35
+ envMap: 'HDR',
37
36
  roughness: 0.9,
38
37
  metalness: 0.2,
39
38
  exposure: 1.0
40
39
  // debug: false
41
40
  };
42
41
  var buttons = [{
43
- name: "Edit",
44
- thumbnail: "/assets/img/svg/3d_item_warning_edit.svg"
42
+ name: 'Edit',
43
+ thumbnail: '/assets/img/svg/3d_item_warning_edit.svg'
45
44
  }, {
46
- name: "Info",
47
- thumbnail: "/assets/img/svg/3d_item_warning_info.svg"
45
+ name: 'Info',
46
+ thumbnail: '/assets/img/svg/3d_item_warning_info.svg'
48
47
  }];
49
48
 
50
49
  // /////////////////////////
@@ -60,7 +59,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
60
59
  var x = element.x,
61
60
  y = element.y,
62
61
  rotation = element.rotation;
63
- var el_DSN = "el_DSN",
62
+ var el_DSN = 'el_DSN',
64
63
  doorStylesKeys = [];
65
64
  var _element = element.toJS();
66
65
  if (_element.doorStyle !== undefined) {
@@ -68,10 +67,10 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
68
67
  doorStylesKeys = Object.keys(_element.doorStyle.doorStyles);
69
68
  }
70
69
  }
71
- if ((doorStylesKeys.includes("euro_length") || doorStylesKeys.includes("euro_width") || doorStylesKeys.includes("euro_shape_svg")) && _element.doorStyle.doorStyles.is_euro_cds) {
70
+ if ((doorStylesKeys.includes('euro_length') || doorStylesKeys.includes('euro_width') || doorStylesKeys.includes('euro_shape_svg')) && _element.doorStyle.doorStyles.is_euro_cds) {
72
71
  el_DSN = _element.doorStyle.door_style_name;
73
72
  } else {
74
- el_DSN = "el_DSN";
73
+ el_DSN = 'el_DSN';
75
74
  }
76
75
  var width, depth, el_euro_length, el_euro_width, el_euro_length_unit, el_euro_width_unit, el_is_euro_cds, el_euro_shape_svg;
77
76
  if (doorStylesKeys.length > 0) {
@@ -81,41 +80,41 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
81
80
  el_euro_shape_svg = _element.doorStyle.doorStyles.euro_shape_svg;
82
81
  }
83
82
  if (el_euro_length === undefined && el_euro_width === undefined) {
84
- el_DSN = "el_DSN";
83
+ el_DSN = 'el_DSN';
85
84
  }
86
- if (el_DSN === "Euro & Frameless") {
85
+ if (el_DSN === 'Euro & Frameless') {
87
86
  // sizeinfo["depth"] = el_euro_length;
88
87
  // sizeinfo["width"] = el_euro_width;
89
88
  }
90
- var tempWidth = element.properties.get("width");
91
- var tempDepth = element.properties.get("depth");
89
+ var tempWidth = element.properties.get('width');
90
+ var tempDepth = element.properties.get('depth');
92
91
  width = tempWidth && {
93
- length: tempWidth.get("_length"),
94
- unit: tempWidth.get("_unit")
92
+ length: tempWidth.get('_length'),
93
+ unit: tempWidth.get('_unit')
95
94
  };
96
95
  depth = tempDepth && {
97
- length: tempDepth.get("_length"),
98
- unit: tempDepth.get("_unit")
96
+ length: tempDepth.get('_length'),
97
+ unit: tempDepth.get('_unit')
99
98
  };
100
- var originalWidth = convert(sizeinfo.width).from("in").to("cm");
101
- var originalDepth = convert(sizeinfo.depth).from("in").to("cm");
102
- var newWidth = convert(width.length).from(width.unit).to("cm");
103
- var newDepth = convert(depth.length).from(depth.unit).to("cm");
99
+ var originalWidth = convert(sizeinfo.width).from('in').to('cm');
100
+ var originalDepth = convert(sizeinfo.depth).from('in').to('cm');
101
+ var newWidth = convert(width.length).from(width.unit).to('cm');
102
+ var newDepth = convert(depth.length).from(depth.unit).to('cm');
104
103
  var padding = convert(SHAPE_SVG_PADDING).from(UNIT_INCH).to(UNIT_CENTIMETER);
105
104
  var angle = element.rotation + 90;
106
105
  var textRotation = 0;
107
106
  if (Math.sin(angle * Math.PI / 180) < 0) {
108
107
  textRotation = 180;
109
108
  }
110
- var color = "#eee";
109
+ var color = '#eee';
111
110
  if (layoutpos == BASE_CABINET_LAYOUTPOS) {
112
- color = "#3f8db3";
111
+ color = '#3f8db3';
113
112
  }
114
113
  if (layoutpos == TALL_CABINET_LAYOUTPOS) {
115
- color = "#93b3be";
114
+ color = '#93b3be';
116
115
  }
117
116
  if (layoutpos == WALL_CABINET_LAYOUTPOS) {
118
- color = "#48b08dcc";
117
+ color = '#48b08dcc';
119
118
  }
120
119
  var splitStr = [];
121
120
  var txtContent = [];
@@ -129,7 +128,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
129
128
  var dcId,
130
129
  doorStyle = element.doorStyle;
131
130
  if (doorStyle instanceof Map) {
132
- dcId = doorStyle.get("id");
131
+ dcId = doorStyle.get('id');
133
132
  } else {
134
133
  dcId = doorStyle.id;
135
134
  }
@@ -148,7 +147,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
148
147
  splitStr.push(type.slice(lineCount * rowCount));
149
148
  splitStr.forEach(function (el, key) {
150
149
  txtContent.push(/*#__PURE__*/React.createElement("text", {
151
- key: "text" + key,
150
+ key: 'text' + key,
152
151
  x: "0",
153
152
  y: newDepth / 2 - 12,
154
153
  dy: 16 * key,
@@ -158,16 +157,16 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
158
157
  ,
159
158
  style: {
160
159
  fontWeight: 500,
161
- fontSize: "7px",
162
- textAnchor: "middle",
163
- fill: "#FFF",
164
- display: "block"
160
+ fontSize: '7px',
161
+ textAnchor: 'middle',
162
+ fill: '#FFF',
163
+ display: 'block'
165
164
  }
166
165
  }, el));
167
166
  });
168
167
  var style = {
169
- stroke: element.selected ? "#565658" : "#565658",
170
- strokeWidth: "2px",
168
+ stroke: element.selected ? '#565658' : '#565658',
169
+ strokeWidth: '2px',
171
170
  fill: color
172
171
  };
173
172
  // let arrow_style = { stroke: element.selected ? '#0096fd' : null, strokeWidth: "2px", fill: "#84e1ce" };
@@ -175,8 +174,9 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
175
174
  var rendered = null;
176
175
  var svg_url, svg_width, svg_depth;
177
176
  if (shape_svg || el_euro_shape_svg) {
178
- if (typeof shape_svg == "string" || typeof el_euro_shape_svg == "string") {
179
- if (el_DSN === "Euro & Frameless" && el_is_euro_cds) {
177
+ var _element$toJS$doorSty;
178
+ if (typeof shape_svg == 'string' || typeof el_euro_shape_svg == 'string') {
179
+ if (el_DSN === 'Euro & Frameless' && el_is_euro_cds) {
180
180
  svg_url = el_euro_shape_svg;
181
181
  svg_width = newWidth;
182
182
  svg_depth = newDepth;
@@ -203,21 +203,17 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
203
203
  var warning_buttons = /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("g", {
204
204
  id: "warning_info_2d",
205
205
  style: {
206
- cursor: "pointer",
206
+ cursor: 'pointer',
207
207
  transform: "translate(".concat(-transX, "px, ").concat(-transY, "px)")
208
208
  },
209
209
  onMouseEnter: function onMouseEnter(event) {
210
210
  var bbox = event.target.getBoundingClientRect();
211
- if (document.getElementById("warning_box_2d")) {
212
- document.getElementById("warning_box_2d").style.display = "flex";
213
- document.getElementById("warning_box_2d").style.top = "".concat(bbox.top - 60, "px");
214
- document.getElementById("warning_box_2d").style.left = "".concat(bbox.left, "px");
215
- }
211
+ document.getElementById('warning_box_2d').style.display = 'flex';
212
+ document.getElementById('warning_box_2d').style.top = "".concat(bbox.top - 60, "px");
213
+ document.getElementById('warning_box_2d').style.left = "".concat(bbox.left, "px");
216
214
  },
217
215
  onMouseLeave: function onMouseLeave() {
218
- if (document.getElementById("warning_box_2d")) {
219
- document.getElementById("warning_box_2d").style.display = "none";
220
- }
216
+ document.getElementById('warning_box_2d').style.display = 'none';
221
217
  }
222
218
  }, /*#__PURE__*/React.createElement("circle", {
223
219
  cx: 0,
@@ -235,7 +231,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
235
231
  href: buttons[1].thumbnail
236
232
  })), /*#__PURE__*/React.createElement("g", {
237
233
  style: {
238
- cursor: "pointer",
234
+ cursor: 'pointer',
239
235
  transform: "translate(".concat(transX, "px, ").concat(transY, "px)")
240
236
  },
241
237
  "data-element-root": true,
@@ -281,7 +277,7 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
281
277
  }, /*#__PURE__*/React.createElement("image", {
282
278
  preserveAspectRatio: "none",
283
279
  style: {
284
- pointerEvents: "none"
280
+ pointerEvents: 'none'
285
281
  },
286
282
  href: svg_url,
287
283
  width: "".concat(newWidth + 2 * padding_width),
@@ -294,16 +290,18 @@ export function render2DItem(element, layer, scene, sizeinfo, layoutpos, is_corn
294
290
  y: "".concat(padding_depth),
295
291
  width: "".concat(newWidth),
296
292
  height: "".concat(newDepth),
297
- visibility: "hidden",
293
+ visibility: 'hidden',
298
294
  style: {
299
- pointerEvents: "all",
295
+ pointerEvents: 'all',
300
296
  opacity: 0.7,
301
- postion: "relative"
297
+ postion: 'relative'
302
298
  }
303
299
  }), /*#__PURE__*/React.createElement("g", {
304
300
  transform: "translate(".concat(padding_width, ",").concat(padding_depth, ")")
305
- }, txtContent)), element.category === "cabinet" && /*#__PURE__*/React.createElement("g", {
306
- visibility: isWarningItem(element) ? "visible" : "hidden"
301
+ }, txtContent)), element.category === 'cabinet' && /*#__PURE__*/React.createElement("g", {
302
+ visibility: (element === null || element === void 0 || (_element$toJS$doorSty = element.toJS().doorStyle) === null || _element$toJS$doorSty === void 0 || (_element$toJS$doorSty = _element$toJS$doorSty.doorStyles) === null || _element$toJS$doorSty === void 0 || (_element$toJS$doorSty = _element$toJS$doorSty.cds) === null || _element$toJS$doorSty === void 0 ? void 0 : _element$toJS$doorSty.filter(function (cd) {
303
+ return cd.itemID == (element === null || element === void 0 ? void 0 : element.getIn(['itemID']));
304
+ }).length) > 0 ? 'hidden' : 'visible'
307
305
  }, warning_buttons)));
308
306
  } else {
309
307
  rendered = /*#__PURE__*/React.createElement("g", {
@@ -390,38 +388,38 @@ var assignUVs = function assignUVs(geometry) {
390
388
  export function render3DItem(element, layer, scene, sizeinfo, structure_json, is_corner) {
391
389
  var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
392
390
  if (element.doorStyle.constructor !== Map) {
393
- element = element.set("doorStyle", fromJS(element.doorStyle));
391
+ element = element.set('doorStyle', fromJS(element.doorStyle));
394
392
  }
395
- if (element.doorStyle.toJS().handle_gltf !== "") {
393
+ if (element.doorStyle.toJS().handle_gltf !== '') {
396
394
  // Check element has doorHandle
397
395
  for (var i = 1; i < 10; i++) {
398
- element = element.setIn(["doorStyle", "doorStyles", "door_handle_" + i + "_gltf"], element.doorStyle.toJS().handle_gltf);
399
- element = element.setIn(["doorStyle", "doorStyles", "fixed_drawer_door_handle_" + i + "_gltf"], element.doorStyle.toJS().handle_gltf);
400
- element = element.setIn(["doorStyle", "doorStyles", "drawer_door_handle_" + i + "_gltf"], element.doorStyle.toJS().handle_gltf);
396
+ element = element.setIn(['doorStyle', 'doorStyles', 'door_handle_' + i + '_gltf'], element.doorStyle.toJS().handle_gltf);
397
+ element = element.setIn(['doorStyle', 'doorStyles', 'fixed_drawer_door_handle_' + i + '_gltf'], element.doorStyle.toJS().handle_gltf);
398
+ element = element.setIn(['doorStyle', 'doorStyles', 'drawer_door_handle_' + i + '_gltf'], element.doorStyle.toJS().handle_gltf);
401
399
  }
402
400
  }
403
401
  var width = {
404
402
  length: sizeinfo.width,
405
- unit: "in"
403
+ unit: 'in'
406
404
  };
407
405
  var depth = {
408
406
  length: sizeinfo.depth,
409
- unit: "in"
407
+ unit: 'in'
410
408
  };
411
409
  var height = {
412
410
  length: sizeinfo.height,
413
- unit: "in"
411
+ unit: 'in'
414
412
  };
415
- var newWidth = convert(width.length).from(width.unit).to("in");
416
- var newDepth = convert(depth.length).from(depth.unit).to("in");
417
- var newHeight = convert(height.length).from(height.unit).to("in");
418
- var mainName = ""; // to get name structure//
419
- if (element.properties.get("width")) newWidth = element.getIn(["properties", "width", "_length"]);
420
- if (element.properties.get("depth")) newDepth = element.getIn(["properties", "depth", "_length"]);
421
- if (element.properties.get("height")) newHeight = element.getIn(["properties", "height", "_length"]);
413
+ var newWidth = convert(width.length).from(width.unit).to('in');
414
+ var newDepth = convert(depth.length).from(depth.unit).to('in');
415
+ var newHeight = convert(height.length).from(height.unit).to('in');
416
+ var mainName = ''; // to get name structure//
417
+ if (element.properties.get('width')) newWidth = element.getIn(['properties', 'width', '_length']);
418
+ if (element.properties.get('depth')) newDepth = element.getIn(['properties', 'depth', '_length']);
419
+ if (element.properties.get('height')) newHeight = element.getIn(['properties', 'height', '_length']);
422
420
  var structure = structure_json;
423
421
  // structure.push({name:'model', url: '/assets/model/DCM.gltf'});
424
- structure.model = "/assets/model/DCM.gltf";
422
+ structure.model = '/assets/model/DCM.gltf';
425
423
  var placeholders = structure.placeholders;
426
424
  var doorStyles = null;
427
425
  var color = 0xffffff,
@@ -431,26 +429,25 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
431
429
  if (layer.toJS().counterTop.uri) {
432
430
  counterTop.uri = layer.toJS().counterTop.uri;
433
431
  }
434
- if ("name" in element.doorStyle) {
432
+ if ('name' in element.doorStyle) {
435
433
  doorStyles = new Map(element.doorStyle.doorStyles);
436
434
  color = element.doorStyle.color;
437
435
  glossness = element.doorStyle.glossness;
438
436
  handleMaterial.metalness = element.doorStyle.metalness;
439
437
  handleMaterial.roughness = element.doorStyle.roughness;
440
438
  } else if (element.doorStyle != null && element.doorStyle) {
441
- doorStyles = element.doorStyle.get("doorStyles");
442
- color = element.doorStyle.get("color");
443
- glossness = element.doorStyle.get("glossness");
444
- handleMaterial.metalness = element.doorStyle.get("metalness");
445
- handleMaterial.roughness = element.doorStyle.get("roughness");
439
+ doorStyles = element.doorStyle.get('doorStyles');
440
+ color = element.doorStyle.get('color');
441
+ glossness = element.doorStyle.get('glossness');
442
+ handleMaterial.metalness = element.doorStyle.get('metalness');
443
+ handleMaterial.roughness = element.doorStyle.get('roughness');
446
444
  }
447
- if (color === undefined) color = "#ffffff";
445
+ if (color === undefined) color = '#ffffff';
448
446
  if (glossness === undefined) glossness = 1;
449
447
  var tempDoorStyles = doorStyles.toJS();
450
448
  var tempPlaceholders = structure.tempPlaceholders;
451
449
  var tPlaceholders = tempPlaceholders.find(function (el) {
452
450
  return el.id === tempDoorStyles.cabinet_door_style_id;
453
- // return el.id === tempDoorStyles.cds[0].cabinet_door_style_id;
454
451
  });
455
452
  if (tPlaceholders !== undefined) {
456
453
  placeholders = tPlaceholders.placeholders;
@@ -469,13 +466,13 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
469
466
  areaMaterial.side = Three.DoubleSide;
470
467
  // areaMaterial.envMap = textureCube;
471
468
  if (isEmpty(doorStyles)) {
472
- var normalMap = doorStyles.get("base") || INITIAL_NORMAL_MAP;
469
+ var normalMap = doorStyles.get('base') || INITIAL_NORMAL_MAP;
473
470
  var interiortexture = loadTexture(normalMap);
474
471
  applyTexture(areaMaterial, interiortexture, 100, 100);
475
472
  }
476
473
  var object1 = object;
477
- var newAltitude = element.properties.get("altitude").get("_length");
478
- var newUnit = element.properties.get("altitude").get("_unit") || "in";
474
+ var newAltitude = element.properties.get('altitude').get('_length');
475
+ var newUnit = element.properties.get('altitude').get('_unit') || 'in';
479
476
  newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
480
477
  var _element = element.toJS();
481
478
  if (!_element.doorStyle.doorStyles.is_euro_cds) {
@@ -492,27 +489,27 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
492
489
  var door_match = child.name.match(matchStr);
493
490
  if (door_match && door_match.length > 2) {
494
491
  var _child$children$;
495
- var rotate_match_text = element.properties.toJS().flip_doorhandle ? "rotate_L" : "rotate_R";
496
- if (door_match[2] === "_L") {
497
- rotate_match_text = element.properties.toJS().flip_doorhandle ? "rotate_R" : "rotate_L";
492
+ var rotate_match_text = element.properties.toJS().flip_doorhandle ? 'rotate_L' : 'rotate_R';
493
+ if (door_match[2] === '_L') {
494
+ rotate_match_text = element.properties.toJS().flip_doorhandle ? 'rotate_R' : 'rotate_L';
498
495
  }
499
496
  var isDoubleDoor = door_match && door_match[2] !== undefined;
500
497
  (_child$children$ = child.children[0]) === null || _child$children$ === void 0 || _child$children$.children.forEach(function (it) {
501
498
  var _it$name, _it$children;
502
- if (it !== null && it !== void 0 && (_it$name = it.name) !== null && _it$name !== void 0 && _it$name.includes("handle") && (_it$children = it.children) !== null && _it$children !== void 0 && _it$children.length && is_corner === 1 && isDoubleDoor) {
499
+ if (it !== null && it !== void 0 && (_it$name = it.name) !== null && _it$name !== void 0 && _it$name.includes('handle') && (_it$children = it.children) !== null && _it$children !== void 0 && _it$children.length && is_corner === 1 && isDoubleDoor) {
503
500
  var _child$name, _child$name2, _object1$children, _t0$name, _t0$children;
504
- var tname = child !== null && child !== void 0 && (_child$name = child.name) !== null && _child$name !== void 0 && _child$name.endsWith("_L") ? child.name.replace("_L", "_R") : child === null || child === void 0 || (_child$name2 = child.name) === null || _child$name2 === void 0 ? void 0 : _child$name2.replace("_R", "_L");
501
+ var tname = child !== null && child !== void 0 && (_child$name = child.name) !== null && _child$name !== void 0 && _child$name.endsWith('_L') ? child.name.replace('_L', '_R') : child === null || child === void 0 || (_child$name2 = child.name) === null || _child$name2 === void 0 ? void 0 : _child$name2.replace('_R', '_L');
505
502
  var tmp = (object1 === null || object1 === void 0 || (_object1$children = object1.children) === null || _object1$children === void 0 ? void 0 : _object1$children.filter(function (item) {
506
503
  return (item === null || item === void 0 ? void 0 : item.name) === tname;
507
504
  })) || [];
508
505
  var t0 = tmp[0];
509
- var filterStr = t0 !== null && t0 !== void 0 && (_t0$name = t0.name) !== null && _t0$name !== void 0 && _t0$name.endsWith("_L") ? "rotate_L" : "rotate_R";
506
+ var filterStr = t0 !== null && t0 !== void 0 && (_t0$name = t0.name) !== null && _t0$name !== void 0 && _t0$name.endsWith('_L') ? 'rotate_L' : 'rotate_R';
510
507
  var tposArr = (t0 === null || t0 === void 0 || (_t0$children = t0.children) === null || _t0$children === void 0 || (_t0$children = _t0$children[0]) === null || _t0$children === void 0 || (_t0$children = _t0$children.children) === null || _t0$children === void 0 ? void 0 : _t0$children.filter(function (item) {
511
508
  var _item$name;
512
509
  return item === null || item === void 0 || (_item$name = item.name) === null || _item$name === void 0 ? void 0 : _item$name.endsWith(filterStr);
513
510
  })) || [];
514
511
  var tpos0 = tposArr[0];
515
- if (it.name.includes("base_end")) {
512
+ if (it.name.includes('base_end')) {
516
513
  var _it$position$x, _it$position, _it$position$y, _it$position2, _tpos0$position$x, _tpos0$position;
517
514
  door_animate_offset[child.name] = {
518
515
  x: -2 * ((_it$position$x = (_it$position = it.position) === null || _it$position === void 0 ? void 0 : _it$position.x) !== null && _it$position$x !== void 0 ? _it$position$x : 0) - 0.12,
@@ -580,16 +577,16 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
580
577
  // vertical line - 4 lines around object//////////////////////////
581
578
  var vLineGeom = new Three.BufferGeometry();
582
579
  var vertices = [(max.x - min.x) / 2 + min.x, 0, max.z, (max.x - min.x) / 2 + min.x, 0, max.z + 1.3];
583
- vLineGeom.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices), 3));
580
+ vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
584
581
  var vLineGeom1 = new Three.BufferGeometry();
585
582
  var vertices1 = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z - 1.3];
586
- vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices1), 3));
583
+ vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
587
584
  var vLineGeom2 = new Three.BufferGeometry();
588
585
  var vertices2 = [max.x, 0, max.z - (max.z - min.z) / 2, max.x + 1.3, 0, max.z - (max.z - min.z) / 2];
589
- vLineGeom2.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices2), 3));
586
+ vLineGeom2.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
590
587
  var vLineGeom3 = new Three.BufferGeometry();
591
588
  var vertices3 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x - 1.3, 0, max.z - (max.z - min.z) / 2];
592
- vLineGeom3.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices3), 3));
589
+ vLineGeom3.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
593
590
  // ///////////////////////////////////////
594
591
 
595
592
  // set names of transform object
@@ -602,12 +599,12 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
602
599
  color: new Three.Color(0xffffff).convertLinearToSRGB(),
603
600
  colorWrite: true
604
601
  }));
605
- rotFillObj.name = "rotate";
602
+ rotFillObj.name = 'rotate';
606
603
  var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
607
604
  color: new Three.Color(0xffffff).convertLinearToSRGB(),
608
605
  side: Three.DoubleSide
609
606
  }));
610
- upObj.name = "transUp";
607
+ upObj.name = 'transUp';
611
608
  var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
612
609
  color: new Three.Color(0xdd6699).convertLinearToSRGB(),
613
610
  side: Three.DoubleSide,
@@ -649,7 +646,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
649
646
  //rotObj.translateOnAxis(uVec, 1);
650
647
  upObj.translateOnAxis(uVec, 1);
651
648
  upObj.translateY(max.y - min.y);
652
- mBox.name = "TransformBox";
649
+ mBox.name = 'TransformBox';
653
650
  mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
654
651
  mBox.scale.set(1.01, 1.01, 1.01);
655
652
 
@@ -678,7 +675,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
678
675
  asrtObj.add(mBox);
679
676
  asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);
680
677
  //asrtObj.translateY(newAltitude / scalevec.y);
681
- asrtObj.name = "TransformGizmo";
678
+ asrtObj.name = 'TransformGizmo';
682
679
  // add assets Objects Group
683
680
  object1.add(asrtObj);
684
681
 
@@ -691,7 +688,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
691
688
  SceneCreator.getDistances(layer);
692
689
  }, 100);
693
690
  }
694
- var flip_doorhandle = element.properties.get("flip_doorhandle");
691
+ var flip_doorhandle = element.properties.get('flip_doorhandle');
695
692
  if (flip_doorhandle) {
696
693
  SceneCreator.updateDoorHandleMesh(element, object1, true);
697
694
  }
@@ -707,14 +704,14 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
707
704
  transparency: 0.8
708
705
  });
709
706
  obj.material = material;
710
- } else if (name.startsWith("sink_")) {
707
+ } else if (name.startsWith('sink_')) {
711
708
  // texture = loadTexture('/assets/img/texture/steel.jpg');
712
709
 
713
710
  var _material;
714
711
  // Get color from name
715
- if (name.includes("black") || name.includes("white")) {
712
+ if (name.includes('black') || name.includes('white')) {
716
713
  var _color2;
717
- if (name.includes("black")) {
714
+ if (name.includes('black')) {
718
715
  _color2 = new Three.Color(0x555555).convertLinearToSRGB();
719
716
  } else {
720
717
  _color2 = 0xffffff;
@@ -747,14 +744,14 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
747
744
  var open_doors = element.toJS().properties.open_doors;
748
745
  var object_match = obj.name.match(/\d_(interior_drawer[^LR1-9]*)(_[LR1-9])?$/) || obj.name.match(matchStr);
749
746
  if (object_match && object_match.length > 2) {
750
- var isDoor = object_match[1] === "door";
747
+ var isDoor = object_match[1] === 'door';
751
748
  if (isDoor) {
752
749
  var offsetData = object1.userData.door_animate_offset[obj.name];
753
750
  // Open Door
754
- animateDoor(offsetData, obj, open_doors, element.toJS(), is_corner, "Opened2D");
751
+ animateDoor(offsetData, obj, open_doors, element.toJS(), is_corner, 'Opened2D');
755
752
  } else {
756
753
  // Open Drawer
757
- translateDrawer(element.toJS(), obj, open_doors, "Opened2D");
754
+ translateDrawer(element.toJS(), obj, open_doors, 'Opened2D');
758
755
  }
759
756
  }
760
757
  }
@@ -764,30 +761,30 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
764
761
  // keys in structure
765
762
  var keys = Object.keys(structure);
766
763
  // if exist in cached Objects
767
- if (element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS()) + element.counterTop.uri in cachedObject) {
768
- var _objGroup = cachedObject[element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS())].clone();
764
+ if (element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS()) + element.counterTop.uri in cachedObject) {
765
+ var _objGroup = cachedObject[element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())].clone();
769
766
  return Promise.resolve(onLoadItem(_objGroup.clone()));
770
767
  }
771
768
 
772
769
  // base Object/////
773
770
  var objGroup = null;
774
771
  var _loadGLTFs = function loadGLTFs(i) {
775
- if (keys[i] === "animation") {
772
+ if (keys[i] === 'animation') {
776
773
  // if animation info
777
774
  i++;
778
775
  return _loadGLTFs(i);
779
776
  }
780
- if (keys[i] === "placeholders") {
777
+ if (keys[i] === 'placeholders') {
781
778
  // if placeholders group
782
779
  i++;
783
780
  return _loadGLTFs(i);
784
781
  }
785
782
  if (i === keys.length) {
786
783
  // if end of keys
787
- cachedObject[element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS())] = objGroup.clone(); //register to cachedObject
788
- return onLoadItem(cachedObject[element.type + color + "doorStyle" + JSON.stringify(doorStyles.toJS())].clone());
784
+ cachedObject[element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())] = objGroup.clone(); //register to cachedObject
785
+ return onLoadItem(cachedObject[element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())].clone());
789
786
  }
790
- if (keys[i] === "base") {
787
+ if (keys[i] === 'base') {
791
788
  // if base Objects
792
789
  i++;
793
790
  return _loadGLTFs(i);
@@ -800,15 +797,15 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
800
797
  }
801
798
  for (var j = 0; j < placeholderStructure.length; j++) {
802
799
  var phData = placeholderStructure[j];
803
- var phs = phData.split("/");
804
- var temp = phData.split("/");
800
+ var phs = phData.split('/');
801
+ var temp = phData.split('/');
805
802
  // placeholder remake////////////////
806
803
  for (var k = 0; k < phs.length; k++) {
807
804
  if (phs[k] in placeholders) {
808
805
  var placeholderphs = placeholders[phs[k]];
809
806
  var key = placeholderStructure.length / placeholderphs.length;
810
807
  phs[k] = placeholderphs[Math.floor(j / key)];
811
- var splitedData = phs[k].split("/");
808
+ var splitedData = phs[k].split('/');
812
809
  if (splitedData.length > 1) {
813
810
  phs[k] = splitedData[splitedData.length - 1];
814
811
  for (var m = splitedData.length - 2; m >= 0; m--) {
@@ -819,41 +816,41 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
819
816
  k = -1;
820
817
  continue;
821
818
  }
822
- if (phs[k].indexOf("ph") == -1) {
819
+ if (phs[k].indexOf('ph') == -1) {
823
820
  var _url = structure[temp[k - 1]];
824
- if (temp[k - 1] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS()) in structure) {
825
- if (structure[temp[k - 1] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())] != null) {
826
- _url = structure[temp[k - 1] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())];
821
+ if (temp[k - 1] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS()) in structure) {
822
+ if (structure[temp[k - 1] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())] != null) {
823
+ _url = structure[temp[k - 1] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())];
827
824
  }
828
825
  }
829
826
  if (_typeof(_url) == Array) _url = _url[0];
830
- var uData = _url.split("/");
827
+ var uData = _url.split('/');
831
828
  uData = uData[uData.length - 1];
832
829
  uData = uData.slice(0, -5);
833
- var datas = uData.split("_");
830
+ var datas = uData.split('_');
834
831
  uData = datas[1];
835
832
  for (var _i = 2; _i < datas.length; _i++) {
836
- uData += "_";
833
+ uData += '_';
837
834
  uData += datas[_i];
838
835
  }
839
- uData = mainName.replace("main", uData);
840
- phs[k] = "ph_" + uData + "_" + phs[k];
836
+ uData = mainName.replace('main', uData);
837
+ phs[k] = 'ph_' + uData + '_' + phs[k];
841
838
  }
842
839
  }
843
840
  phsArray.push(phs);
844
841
  }
845
842
  var url = structure[keys[i]];
846
- var normalMap = "";
847
- var urlData = url.split("/");
843
+ var normalMap = '';
844
+ var urlData = url.split('/');
848
845
  for (var _j = 0; _j < element.submodule.size; _j++) {
849
- var replaceUrlData = element.submodule.get(_j).split("/");
846
+ var replaceUrlData = element.submodule.get(_j).split('/');
850
847
  if (urlData.includes(replaceUrlData[replaceUrlData.length - 2])) {
851
848
  url = element.submodule.get(_j);
852
849
  break;
853
850
  }
854
851
  }
855
852
  for (var _j2 = 0; _j2 < element.normalMap.size; _j2++) {
856
- var normalMapData = element.normalMap.get(_j2).split("/");
853
+ var normalMapData = element.normalMap.get(_j2).split('/');
857
854
  if (urlData.includes(normalMapData[normalMapData.length - 2])) {
858
855
  normalMap = element.normalMap.get(_j2);
859
856
  break;
@@ -865,15 +862,15 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
865
862
  if (phsArray.length > 0) {
866
863
  // let loadUrl = dirName + url;
867
864
  var loadUrl = url;
868
- if (doorStyles.get(keys[i] + "_gltf") != undefined) {
869
- loadUrl = doorStyles.get(keys[i] + "_gltf");
870
- structure[keys[i] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())] = loadUrl;
865
+ if (doorStyles.get(keys[i] + '_gltf') != undefined) {
866
+ loadUrl = doorStyles.get(keys[i] + '_gltf');
867
+ structure[keys[i] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())] = loadUrl;
871
868
  } else {
872
- structure[keys[i] + "_doorStyle" + element.type + "doorStyle" + JSON.stringify(doorStyles.toJS())] = null;
869
+ structure[keys[i] + '_doorStyle' + element.type + 'doorStyle' + JSON.stringify(doorStyles.toJS())] = null;
873
870
  }
874
871
  return loadGLTF(loadUrl).then(function (object) {
875
- if (normalMap !== "") {
876
- var normalUrl = normalMap.split(".")[0] + "-normal." + normalMap.split(".")[1];
872
+ if (normalMap !== '') {
873
+ var normalUrl = normalMap.split('.')[0] + '-normal.' + normalMap.split('.')[1];
877
874
  var t = loadTexture(normalMap);
878
875
  var _m = loadTexture(normalUrl);
879
876
  var mat2 = new Three.MeshStandardMaterial({
@@ -897,7 +894,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
897
894
  // let normalMap = "catalog/items/doorstyle/" + doorStyles.get(keys[i]);
898
895
  var _normalMap = doorStyles.get(keys[i]) || INITIAL_NORMAL_MAP;
899
896
  var _mat;
900
- if (_normalMap === "") {
897
+ if (_normalMap === '') {
901
898
  var examplecolor = new Three.Color(parseInt(color.slice(1), 16)).convertLinearToSRGB();
902
899
  _mat = new Three.MeshStandardMaterial({
903
900
  color: examplecolor,
@@ -921,8 +918,8 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
921
918
  object.children[_j4].material = _mat;
922
919
  object.children[_j4].receiveShadow = true;
923
920
  object.children[_j4].castShadow = true;
924
- !object.children[_j4].name.includes("handle") && addEdgesToMesh(object.children[_j4]);
925
- } else if (!object.children[_j4].name.startsWith("ph_") && object.children[_j4].type === OBJTYPE_GROUP) {
921
+ !object.children[_j4].name.includes('handle') && addEdgesToMesh(object.children[_j4]);
922
+ } else if (!object.children[_j4].name.startsWith('ph_') && object.children[_j4].type === OBJTYPE_GROUP) {
926
923
  object.children[_j4].traverse(function (prim) {
927
924
  prim.material = _mat;
928
925
  prim.receiveShadow = true;
@@ -962,10 +959,10 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
962
959
  } else {
963
960
  if (parent.children[_k].name == placeholder) {
964
961
  var tmp = object.clone();
965
- if (placeholder.includes("drawer_door") && placeholder.includes("_handle")) {
962
+ if (placeholder.includes('drawer_door') && placeholder.includes('_handle')) {
966
963
  tmp.rotateZ(Math.PI / 2);
967
964
  }
968
- if (placeholder.includes("_handle") && tmp.children[0].type === OBJTYPE_MESH) {
965
+ if (placeholder.includes('_handle') && tmp.children[0].type === OBJTYPE_MESH) {
969
966
  // NOTE: change metalness of handle
970
967
  tmp.children[0].material.metalness = 1;
971
968
  // handleMaterial.metalness || 0.2;
@@ -979,25 +976,23 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
979
976
  }
980
977
  }
981
978
  }, function (reason) {
982
- console.log("loadGLTF failed for reason:", reason);
979
+ console.log('loadGLTF failed for reason:', reason);
983
980
  }).then(function () {
984
981
  i++;
985
982
  return _loadGLTFs(i);
986
983
  });
987
984
  }
988
985
  };
989
- return loadGLTF(structure["base"]).then(function (object) {
990
- object.name = "MainObject";
986
+ return loadGLTF(structure['base']).then(function (object) {
987
+ object.name = 'MainObject';
991
988
  object.receiveShadow = true;
992
989
  objGroup = object;
993
990
  if (!isEmpty(doorStyles)) {
994
- var normalMap = doorStyles.get("base") || INITIAL_NORMAL_MAP;
991
+ var normalMap = doorStyles.get('base') || INITIAL_NORMAL_MAP;
995
992
  if (counterTop.uri === undefined) {
996
993
  try {
997
994
  counterTop = counterTop.toJS();
998
995
  } catch (error) {
999
- //@todo THIS IS A TEMPORARY FIX FOR COUNTERTOP TEXTURE UNDEFINED ISSUE
1000
- counterTop.uri = "https://media.test.diydesignspace.com/uploads/CountTop/202105074107_5/texture/Unique_Calcatta_texture.jpg";
1001
996
  console.log(error);
1002
997
  }
1003
998
  }
@@ -1005,7 +1000,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
1005
1000
  counterTop.uri = layer.toJS().counterTop.uri;
1006
1001
  }
1007
1002
  var countTopMap = counterTop.uri;
1008
- var interiorMap = doorStyles.get("interior");
1003
+ var interiorMap = doorStyles.get('interior');
1009
1004
  var countT = loadTexture(countTopMap);
1010
1005
  countT.wrapS = Three.RepeatWrapping;
1011
1006
  countT.wrapT = Three.RepeatWrapping;
@@ -1014,7 +1009,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
1014
1009
  var mat2 = null,
1015
1010
  mat3 = null,
1016
1011
  mat4 = null;
1017
- if (normalMap === "") {
1012
+ if (normalMap === '') {
1018
1013
  mat2 = new Three.MeshStandardMaterial({
1019
1014
  color: examplecolor,
1020
1015
  metalness: glossness === 1 ? params.metalness : params.metalness_glossy,
@@ -1031,11 +1026,11 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
1031
1026
  }
1032
1027
  // mat2.envMap = textureCube;
1033
1028
 
1034
- if (normalMap !== "") {
1029
+ if (normalMap !== '') {
1035
1030
  var t = loadTexture(normalMap);
1036
1031
  mat2.map = t;
1037
1032
  }
1038
- if (normalMap === "") {
1033
+ if (normalMap === '') {
1039
1034
  mat3 = new Three.MeshStandardMaterial({
1040
1035
  // color: examplecolor,
1041
1036
  metalness: counterTop.metalness,
@@ -1057,13 +1052,13 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
1057
1052
  });
1058
1053
  mat4.map = loadTexture(interiorMap);
1059
1054
  for (var j = 0; j < object.children.length; j++) {
1060
- if (object.children[j].name.includes("main")) {}
1061
- if (object.children[j].name.includes("countertop")) {
1055
+ if (object.children[j].name.includes('main')) {}
1056
+ if (object.children[j].name.includes('countertop')) {
1062
1057
  object.children[j].material = mat3;
1063
1058
  object.children[j].receiveShadow = true;
1064
1059
  object.children[j].castShadow = true;
1065
1060
  addEdgesToMesh(object.children[j]);
1066
- } else if (object.children[j].name.includes("_interior_")) {
1061
+ } else if (object.children[j].name.includes('_interior_')) {
1067
1062
  object.children[j].material = mat4;
1068
1063
  } else if (object.children[j].type === OBJTYPE_MESH) {
1069
1064
  object.children[j].material = mat2;
@@ -1073,7 +1068,7 @@ export function render3DItem(element, layer, scene, sizeinfo, structure_json, is
1073
1068
  }
1074
1069
  }
1075
1070
  }, function (reason) {
1076
- console.log("loadGLTF failed for reason:", reason);
1071
+ console.log('loadGLTF failed for reason:', reason);
1077
1072
  objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
1078
1073
  }).then(function () {
1079
1074
  return _loadGLTFs(0);
@@ -1087,18 +1082,18 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1087
1082
  var applianceMaterial = element.applianceMaterial;
1088
1083
  if (applianceMaterial.metalness == undefined) applianceMaterial = applianceMaterial.toJS();
1089
1084
  var onLoadItem = function onLoadItem(object) {
1090
- var newAltitude = element.properties.get("altitude").get("_length");
1091
- var newUnit = element.properties.get("altitude").get("_unit") || "in";
1085
+ var newAltitude = element.properties.get('altitude').get('_length');
1086
+ var newUnit = element.properties.get('altitude').get('_unit') || 'in';
1092
1087
  newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
1093
- var newWidth = element.properties.get("width").get("_length");
1094
- var newWidthUnit = element.properties.get("width").get("_unit") || "in";
1095
- newWidth = convert(newWidth).from(newWidthUnit).to("in");
1096
- var newHeight = element.properties.get("height").get("_length");
1097
- var newHeightUnit = element.properties.get("height").get("_unit") || "in";
1098
- newHeight = convert(newHeight).from(newHeightUnit).to("in");
1099
- var newDepth = element.properties.get("depth").get("_length");
1100
- var newDepthUnit = element.properties.get("depth").get("_unit") || "in";
1101
- newDepth = convert(newDepth).from(newDepthUnit).to("in");
1088
+ var newWidth = element.properties.get('width').get('_length');
1089
+ var newWidthUnit = element.properties.get('width').get('_unit') || 'in';
1090
+ newWidth = convert(newWidth).from(newWidthUnit).to('in');
1091
+ var newHeight = element.properties.get('height').get('_length');
1092
+ var newHeightUnit = element.properties.get('height').get('_unit') || 'in';
1093
+ newHeight = convert(newHeight).from(newHeightUnit).to('in');
1094
+ var newDepth = element.properties.get('depth').get('_length');
1095
+ var newDepthUnit = element.properties.get('depth').get('_unit') || 'in';
1096
+ newDepth = convert(newDepth).from(newDepthUnit).to('in');
1102
1097
  object.scale.set(100 * newWidth / sizeinfo.width, 100 * newHeight / sizeinfo.height, 100 * newDepth / sizeinfo.depth);
1103
1098
  // Normalize the origin of the object
1104
1099
  var boundingBox = new Three.Box3().setFromObject(object);
@@ -1113,16 +1108,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1113
1108
  var name = obj.name;
1114
1109
  var texture,
1115
1110
  textureLoader = new Three.TextureLoader();
1116
- if (name.includes("_black")) {
1111
+ if (name.includes('_black')) {
1117
1112
  obj.material.roughness = 0.4;
1118
1113
  obj.material.metalness = 1.0;
1119
1114
  obj.material.color = new Three.Color(0, 0, 0);
1120
1115
  obj.castShadow = true;
1121
1116
  obj.receiveShadow = true;
1122
1117
  return object;
1123
- } else if (name.includes("_wood")) {
1124
- texture = loadTexture("/assets/img/texture/wood.jpg");
1125
- } else if (name.includes("_glass")) {
1118
+ } else if (name.includes('_wood')) {
1119
+ texture = loadTexture('/assets/img/texture/wood.jpg');
1120
+ } else if (name.includes('_glass')) {
1126
1121
  // texture = loadTexture('/assets/img/texture/glass.jpg');
1127
1122
  var material = new Three.MeshPhysicalMaterial({
1128
1123
  transparent: true,
@@ -1137,7 +1132,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1137
1132
  obj.castShadow = true;
1138
1133
  obj.receiveShadow = true;
1139
1134
  return object;
1140
- } else if (name.includes("_steel")) {
1135
+ } else if (name.includes('_steel')) {
1141
1136
  // texture = loadTexture('/assets/img/texture/steel.jpg');
1142
1137
  var _material2 = new Three.MeshPhysicalMaterial({
1143
1138
  roughness: 0.2,
@@ -1187,16 +1182,16 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1187
1182
  // vertical line - 4 lines around object//////////////////////////
1188
1183
  var vLineGeom = new Three.BufferGeometry();
1189
1184
  var vertices = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z + 1.3];
1190
- vLineGeom.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices), 3));
1185
+ vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
1191
1186
  var vLineGeom1 = new Three.BufferGeometry();
1192
1187
  var vertices1 = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z - 1.3];
1193
- vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices1), 3));
1188
+ vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
1194
1189
  var vLineGeom2 = new Three.BufferGeometry();
1195
1190
  var vertices2 = [max.x, 0, max.z - (max.z - min.z) / 2, max.x + 1.3, 0, max.z - (max.z - min.z) / 2];
1196
- vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices2), 3));
1191
+ vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
1197
1192
  var vLineGeom3 = new Three.BufferGeometry();
1198
1193
  var vertices3 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x - 1.3, 0, max.z - (max.z - min.z) / 2];
1199
- vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices3), 3));
1194
+ vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
1200
1195
  // ///////////////////////////////////////
1201
1196
 
1202
1197
  // set names of transform object
@@ -1209,12 +1204,12 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1209
1204
  color: 0xffffff,
1210
1205
  colorWrite: true
1211
1206
  }));
1212
- rotFillObj.name = "rotate";
1207
+ rotFillObj.name = 'rotate';
1213
1208
  var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
1214
1209
  color: 0xffffff,
1215
1210
  side: Three.DoubleSide
1216
1211
  }));
1217
- upObj.name = "transUp";
1212
+ upObj.name = 'transUp';
1218
1213
  var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
1219
1214
  color: new Three.Color(0xdd6699).convertLinearToSRGB(),
1220
1215
  side: Three.DoubleSide,
@@ -1254,7 +1249,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1254
1249
  vLine3.translateY(0.1);
1255
1250
  upObj.translateOnAxis(uVec, 1);
1256
1251
  upObj.translateY(max.y - min.y + 0.05);
1257
- mBox.name = "TransformBox";
1252
+ mBox.name = 'TransformBox';
1258
1253
  mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
1259
1254
  mBox.scale.set(1.01, 1.01, 1.01);
1260
1255
 
@@ -1282,7 +1277,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1282
1277
  asrtObj.add(mBox);
1283
1278
  asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);
1284
1279
  // asrtObj.translateY(newAltitude / scalevec.y);
1285
- asrtObj.name = "TransformGizmo";
1280
+ asrtObj.name = 'TransformGizmo';
1286
1281
  // add assets Objects Group
1287
1282
  object.add(asrtObj);
1288
1283
 
@@ -1312,7 +1307,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1312
1307
  cachedObject[element.type] = objGroup.clone(); //register to cachedObject
1313
1308
  return onLoadItem(cachedObject[element.type].clone());
1314
1309
  }
1315
- if (keys[i] === "base") {
1310
+ if (keys[i] === 'base') {
1316
1311
  // if base Objects
1317
1312
  i++;
1318
1313
  return _loadGLTFs2(i);
@@ -1321,13 +1316,13 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1321
1316
 
1322
1317
  // load base to start //
1323
1318
  // return loadGLTF(dirName + structure["base"])
1324
- return loadGLTF(structure["base"]).then(function (object) {
1319
+ return loadGLTF(structure['base']).then(function (object) {
1325
1320
  // let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
1326
1321
  // let texture = loadTexture(textureURL);
1327
1322
  // texture.wrapS = Three.MirroredRepeatWrapping;
1328
1323
  // texture.wrapT = Three.MirroredRepeatWrapping;
1329
1324
 
1330
- object.name = "MainObject";
1325
+ object.name = 'MainObject';
1331
1326
  // NOTE: changed appliance emissive color to black
1332
1327
  var mat2 = new Three.MeshStandardMaterial({
1333
1328
  emissive: new Three.Color(0x0d0d0d).convertLinearToSRGB(),
@@ -1345,7 +1340,7 @@ export function render3DApplianceItem(element, layer, scene, sizeinfo, structure
1345
1340
  }
1346
1341
  objGroup = object;
1347
1342
  }, function (reason) {
1348
- console.log("loadGLTF failed for reason:", reason);
1343
+ console.log('loadGLTF failed for reason:', reason);
1349
1344
  objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
1350
1345
  }).then(function () {
1351
1346
  return _loadGLTFs2(0);
@@ -1358,21 +1353,21 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1358
1353
  var onLoadItem = function onLoadItem(object) {
1359
1354
  var width = {
1360
1355
  length: sizeinfo.width,
1361
- unit: "in"
1356
+ unit: 'in'
1362
1357
  };
1363
1358
  var depth = {
1364
1359
  length: sizeinfo.depth,
1365
- unit: "in"
1360
+ unit: 'in'
1366
1361
  };
1367
1362
  var height = {
1368
1363
  length: sizeinfo.height,
1369
- unit: "in"
1364
+ unit: 'in'
1370
1365
  };
1371
- var newWidth = convert(width.length).from(width.unit).to("cm");
1372
- var newDepth = convert(depth.length).from(depth.unit).to("cm");
1373
- var newHeight = convert(height.length).from(height.unit).to("cm");
1374
- var newAltitude = element.properties.get("altitude").get("_length");
1375
- var newUnit = element.properties.get("altitude").get("_unit") || "in";
1366
+ var newWidth = convert(width.length).from(width.unit).to('cm');
1367
+ var newDepth = convert(depth.length).from(depth.unit).to('cm');
1368
+ var newHeight = convert(height.length).from(height.unit).to('cm');
1369
+ var newAltitude = element.properties.get('altitude').get('_length');
1370
+ var newUnit = element.properties.get('altitude').get('_unit') || 'in';
1376
1371
  newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);
1377
1372
 
1378
1373
  //object.scale.set(newWidth, newHeight, newDepth);
@@ -1419,16 +1414,16 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1419
1414
  // vertical line - 4 lines around object//////////////////////////
1420
1415
  var vLineGeom = new Three.BufferGeometry();
1421
1416
  var vertices = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z + 1.3];
1422
- vLineGeom.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices), 3));
1417
+ vLineGeom.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices), 3));
1423
1418
  var vLineGeom1 = new Three.BufferGeometry();
1424
1419
  var vertices1 = [(max.x - min.x) / 2 + min.x, 0, min.z, (max.x - min.x) / 2 + min.x, 0, min.z - 1.3];
1425
- vLineGeom1.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices1), 3));
1420
+ vLineGeom1.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices1), 3));
1426
1421
  var vLineGeom2 = new Three.BufferGeometry();
1427
1422
  var vertices2 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x + 1.3, 0, max.z - (max.z - min.z) / 2];
1428
- vLineGeom2.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices2), 3));
1423
+ vLineGeom2.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices2), 3));
1429
1424
  var vLineGeom3 = new Three.BufferGeometry();
1430
1425
  var vertices3 = [min.x, 0, max.z - (max.z - min.z) / 2, min.x - 1.3, 0, max.z - (max.z - min.z) / 2];
1431
- vLineGeom3.setAttribute("position", new Three.BufferAttribute(new Float32Array(vertices3), 3));
1426
+ vLineGeom3.setAttribute('position', new Three.BufferAttribute(new Float32Array(vertices3), 3));
1432
1427
  // ///////////////////////////////////////
1433
1428
 
1434
1429
  // set names of transform object
@@ -1441,12 +1436,12 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1441
1436
  color: 0xffffff,
1442
1437
  colorWrite: true
1443
1438
  }));
1444
- rotFillObj.name = "rotate";
1439
+ rotFillObj.name = 'rotate';
1445
1440
  var upObj = new Three.Mesh(upwardsGeom, new Three.MeshBasicMaterial({
1446
1441
  color: 0xffffff,
1447
1442
  side: Three.DoubleSide
1448
1443
  }));
1449
- upObj.name = "transUp";
1444
+ upObj.name = 'transUp';
1450
1445
  var mBox = new Three.Mesh(moveBox, new Three.MeshBasicMaterial({
1451
1446
  color: 0xdd6699,
1452
1447
  side: Three.DoubleSide,
@@ -1488,7 +1483,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1488
1483
  //rotObj.translateOnAxis(uVec, 1);
1489
1484
  upObj.translateOnAxis(uVec, 1);
1490
1485
  upObj.translateY(max.y - min.y);
1491
- mBox.name = "TransformBox";
1486
+ mBox.name = 'TransformBox';
1492
1487
  mBox.translateOnAxis(new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z), 1);
1493
1488
  mBox.scale.set(1.01, 1.01, 1.01);
1494
1489
 
@@ -1517,7 +1512,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1517
1512
  asrtObj.add(mBox);
1518
1513
  asrtObj.scale.set(1, 1, 1);
1519
1514
  //asrtObj.translateY(newAltitude / scalevec.y);
1520
- asrtObj.name = "TransformGizmo";
1515
+ asrtObj.name = 'TransformGizmo';
1521
1516
  // add assets Objects Group
1522
1517
  object.add(asrtObj);
1523
1518
 
@@ -1550,7 +1545,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1550
1545
  cachedObject[element.type] = objGroup.clone(); //register to cachedObject
1551
1546
  return onLoadItem(cachedObject[element.type].clone());
1552
1547
  }
1553
- if (keys[i] === "base") {
1548
+ if (keys[i] === 'base') {
1554
1549
  // if base Objects
1555
1550
  i++;
1556
1551
  return _loadGLTFs3(i);
@@ -1559,13 +1554,13 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1559
1554
 
1560
1555
  // load base to start //
1561
1556
  // return loadGLTF(dirName + structure["base"])
1562
- return loadGLTF(structure["base"]).then(function (object) {
1557
+ return loadGLTF(structure['base']).then(function (object) {
1563
1558
  // let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;
1564
1559
  // let texture = loadTexture(textureURL);
1565
1560
  // texture.wrapS = Three.MirroredRepeatWrapping;
1566
1561
  // texture.wrapT = Three.MirroredRepeatWrapping;
1567
1562
 
1568
- object.name = "MainObject";
1563
+ object.name = 'MainObject';
1569
1564
  var mat2 = new Three.MeshStandardMaterial({
1570
1565
  emissive: new Three.Color(0x666666).convertLinearToSRGB(),
1571
1566
  metalness: 0.7,
@@ -1581,7 +1576,7 @@ export function render3DLightingItem(element, layer, scene, sizeinfo, structure_
1581
1576
  }
1582
1577
  objGroup = object;
1583
1578
  }, function (reason) {
1584
- console.log("loadGLTF failed for reason:", reason);
1579
+ console.log('loadGLTF failed for reason:', reason);
1585
1580
  objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);
1586
1581
  }).then(function () {
1587
1582
  return _loadGLTFs3(0);