kitchen-simulator 5.0.0-test.2 → 5.0.0-test.4

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 (697) hide show
  1. package/es/KitchenConfigurator.js +1 -1
  2. package/es/KitchenConfigurator.js.map +1 -1
  3. package/es/index.js +2 -2
  4. package/es/index.js.map +1 -1
  5. package/package.json +8 -16
  6. package/src/KitchenConfigurator.jsx +1 -1
  7. package/src/index.js +3 -3
  8. package/lib/@history.js +0 -11
  9. package/lib/@history.js.map +0 -1
  10. package/lib/AppContext.js +0 -11
  11. package/lib/AppContext.js.map +0 -1
  12. package/lib/KitchenConfigurator.js +0 -1353
  13. package/lib/KitchenConfigurator.js.map +0 -1
  14. package/lib/KitchenConfiguratorApp.js +0 -539
  15. package/lib/KitchenConfiguratorApp.js.map +0 -1
  16. package/lib/actions/area-actions.js +0 -22
  17. package/lib/actions/area-actions.js.map +0 -1
  18. package/lib/actions/export.js +0 -44
  19. package/lib/actions/export.js.map +0 -1
  20. package/lib/actions/groups-actions.js +0 -108
  21. package/lib/actions/groups-actions.js.map +0 -1
  22. package/lib/actions/holes-actions.js +0 -141
  23. package/lib/actions/holes-actions.js.map +0 -1
  24. package/lib/actions/items-actions.js +0 -365
  25. package/lib/actions/items-actions.js.map +0 -1
  26. package/lib/actions/lines-actions.js +0 -98
  27. package/lib/actions/lines-actions.js.map +0 -1
  28. package/lib/actions/project-actions.js +0 -333
  29. package/lib/actions/project-actions.js.map +0 -1
  30. package/lib/actions/scene-actions.js +0 -44
  31. package/lib/actions/scene-actions.js.map +0 -1
  32. package/lib/actions/user-actions.js +0 -69
  33. package/lib/actions/user-actions.js.map +0 -1
  34. package/lib/actions/vertices-actions.js +0 -36
  35. package/lib/actions/vertices-actions.js.map +0 -1
  36. package/lib/actions/viewer2d-actions.js +0 -74
  37. package/lib/actions/viewer2d-actions.js.map +0 -1
  38. package/lib/actions/viewer3d-actions.js +0 -33
  39. package/lib/actions/viewer3d-actions.js.map +0 -1
  40. package/lib/catalog/areas/area/planner-element.js +0 -47
  41. package/lib/catalog/areas/area/planner-element.js.map +0 -1
  42. package/lib/catalog/catalog.js +0 -283
  43. package/lib/catalog/catalog.js.map +0 -1
  44. package/lib/catalog/factories/area-factory-3d.js +0 -192
  45. package/lib/catalog/factories/area-factory-3d.js.map +0 -1
  46. package/lib/catalog/factories/area-factory.js +0 -90
  47. package/lib/catalog/factories/area-factory.js.map +0 -1
  48. package/lib/catalog/factories/export.js +0 -26
  49. package/lib/catalog/factories/export.js.map +0 -1
  50. package/lib/catalog/factories/wall-factory-3d.js +0 -213
  51. package/lib/catalog/factories/wall-factory-3d.js.map +0 -1
  52. package/lib/catalog/factories/wall-factory.js +0 -279
  53. package/lib/catalog/factories/wall-factory.js.map +0 -1
  54. package/lib/catalog/holes/door-closet/planner-element.js +0 -232
  55. package/lib/catalog/holes/door-closet/planner-element.js.map +0 -1
  56. package/lib/catalog/holes/door-double/planner-element.js +0 -325
  57. package/lib/catalog/holes/door-double/planner-element.js.map +0 -1
  58. package/lib/catalog/holes/door-exterior/planner-element.js +0 -225
  59. package/lib/catalog/holes/door-exterior/planner-element.js.map +0 -1
  60. package/lib/catalog/holes/door-interior/planner-element.js +0 -237
  61. package/lib/catalog/holes/door-interior/planner-element.js.map +0 -1
  62. package/lib/catalog/holes/door-panic/planner-element.js +0 -513
  63. package/lib/catalog/holes/door-panic/planner-element.js.map +0 -1
  64. package/lib/catalog/holes/door-panic-double/planner-element.js +0 -473
  65. package/lib/catalog/holes/door-panic-double/planner-element.js.map +0 -1
  66. package/lib/catalog/holes/door-sliding/planner-element.js +0 -235
  67. package/lib/catalog/holes/door-sliding/planner-element.js.map +0 -1
  68. package/lib/catalog/holes/doorway-framed/planner-element.js +0 -155
  69. package/lib/catalog/holes/doorway-framed/planner-element.js.map +0 -1
  70. package/lib/catalog/holes/doorway-frameless/planner-element.js +0 -114
  71. package/lib/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
  72. package/lib/catalog/holes/window-clear/planner-element.js +0 -176
  73. package/lib/catalog/holes/window-clear/planner-element.js.map +0 -1
  74. package/lib/catalog/holes/window-cross/planner-element.js +0 -175
  75. package/lib/catalog/holes/window-cross/planner-element.js.map +0 -1
  76. package/lib/catalog/holes/window-double-hung/planner-element.js +0 -313
  77. package/lib/catalog/holes/window-double-hung/planner-element.js.map +0 -1
  78. package/lib/catalog/holes/window-vertical/planner-element.js +0 -286
  79. package/lib/catalog/holes/window-vertical/planner-element.js.map +0 -1
  80. package/lib/catalog/lines/wall/planner-element.js +0 -77
  81. package/lib/catalog/lines/wall/planner-element.js.map +0 -1
  82. package/lib/catalog/molding/molding-dcm/planner-element.js +0 -39
  83. package/lib/catalog/molding/molding-dcm/planner-element.js.map +0 -1
  84. package/lib/catalog/molding/molding-fbm/planner-element.js +0 -39
  85. package/lib/catalog/molding/molding-fbm/planner-element.js.map +0 -1
  86. package/lib/catalog/molding/molding-lrm/planner-element.js +0 -39
  87. package/lib/catalog/molding/molding-lrm/planner-element.js.map +0 -1
  88. package/lib/catalog/properties/export.js +0 -82
  89. package/lib/catalog/properties/export.js.map +0 -1
  90. package/lib/catalog/properties/property-checkbox.js +0 -79
  91. package/lib/catalog/properties/property-checkbox.js.map +0 -1
  92. package/lib/catalog/properties/property-color.js +0 -47
  93. package/lib/catalog/properties/property-color.js.map +0 -1
  94. package/lib/catalog/properties/property-enum.js +0 -63
  95. package/lib/catalog/properties/property-enum.js.map +0 -1
  96. package/lib/catalog/properties/property-hidden.js +0 -27
  97. package/lib/catalog/properties/property-hidden.js.map +0 -1
  98. package/lib/catalog/properties/property-lenght-measure.js +0 -109
  99. package/lib/catalog/properties/property-lenght-measure.js.map +0 -1
  100. package/lib/catalog/properties/property-length-measure.js +0 -93
  101. package/lib/catalog/properties/property-length-measure.js.map +0 -1
  102. package/lib/catalog/properties/property-length-measure_hole.js +0 -109
  103. package/lib/catalog/properties/property-length-measure_hole.js.map +0 -1
  104. package/lib/catalog/properties/property-number.js +0 -56
  105. package/lib/catalog/properties/property-number.js.map +0 -1
  106. package/lib/catalog/properties/property-read-only.js +0 -34
  107. package/lib/catalog/properties/property-read-only.js.map +0 -1
  108. package/lib/catalog/properties/property-string.js +0 -56
  109. package/lib/catalog/properties/property-string.js.map +0 -1
  110. package/lib/catalog/properties/property-toggle.js +0 -47
  111. package/lib/catalog/properties/property-toggle.js.map +0 -1
  112. package/lib/catalog/properties/shared-property-style.js +0 -21
  113. package/lib/catalog/properties/shared-property-style.js.map +0 -1
  114. package/lib/catalog/utils/FuseUtils.js +0 -89
  115. package/lib/catalog/utils/FuseUtils.js.map +0 -1
  116. package/lib/catalog/utils/exporter.js +0 -156
  117. package/lib/catalog/utils/exporter.js.map +0 -1
  118. package/lib/catalog/utils/geom-utils.js +0 -206
  119. package/lib/catalog/utils/geom-utils.js.map +0 -1
  120. package/lib/catalog/utils/item-loader.js +0 -1534
  121. package/lib/catalog/utils/item-loader.js.map +0 -1
  122. package/lib/catalog/utils/load-obj.js +0 -100
  123. package/lib/catalog/utils/load-obj.js.map +0 -1
  124. package/lib/catalog/utils/mtl-loader.js +0 -360
  125. package/lib/catalog/utils/mtl-loader.js.map +0 -1
  126. package/lib/catalog/utils/obj-loader.js +0 -479
  127. package/lib/catalog/utils/obj-loader.js.map +0 -1
  128. package/lib/class/FuseUtils.js +0 -89
  129. package/lib/class/FuseUtils.js.map +0 -1
  130. package/lib/class/area.js +0 -151
  131. package/lib/class/area.js.map +0 -1
  132. package/lib/class/export.js +0 -97
  133. package/lib/class/export.js.map +0 -1
  134. package/lib/class/group.js +0 -446
  135. package/lib/class/group.js.map +0 -1
  136. package/lib/class/guide.js +0 -68
  137. package/lib/class/guide.js.map +0 -1
  138. package/lib/class/hole.js +0 -935
  139. package/lib/class/hole.js.map +0 -1
  140. package/lib/class/item.js +0 -1894
  141. package/lib/class/item.js.map +0 -1
  142. package/lib/class/layer.js +0 -673
  143. package/lib/class/layer.js.map +0 -1
  144. package/lib/class/line.js +0 -1296
  145. package/lib/class/line.js.map +0 -1
  146. package/lib/class/project.js +0 -829
  147. package/lib/class/project.js.map +0 -1
  148. package/lib/class/vertex.js +0 -272
  149. package/lib/class/vertex.js.map +0 -1
  150. package/lib/components/atoms/Snackbar/index.js +0 -57
  151. package/lib/components/atoms/Snackbar/index.js.map +0 -1
  152. package/lib/components/atoms/radio-button/index.js +0 -33
  153. package/lib/components/atoms/radio-button/index.js.map +0 -1
  154. package/lib/components/atoms/radio-button/styles.js +0 -12
  155. package/lib/components/atoms/radio-button/styles.js.map +0 -1
  156. package/lib/components/button/MainButton.js +0 -98
  157. package/lib/components/button/MainButton.js.map +0 -1
  158. package/lib/components/button/ToggleMeasureButton.js +0 -63
  159. package/lib/components/button/ToggleMeasureButton.js.map +0 -1
  160. package/lib/components/catalog-view/catalog-breadcrumb.js +0 -61
  161. package/lib/components/catalog-view/catalog-breadcrumb.js.map +0 -1
  162. package/lib/components/catalog-view/catalog-item.js +0 -233
  163. package/lib/components/catalog-view/catalog-item.js.map +0 -1
  164. package/lib/components/catalog-view/catalog-list.js +0 -189
  165. package/lib/components/catalog-view/catalog-list.js.map +0 -1
  166. package/lib/components/catalog-view/catalog-page-item.js +0 -137
  167. package/lib/components/catalog-view/catalog-page-item.js.map +0 -1
  168. package/lib/components/catalog-view/catalog-turn-back-page-item.js +0 -113
  169. package/lib/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
  170. package/lib/components/configurator/custom-configurator.js +0 -101
  171. package/lib/components/configurator/custom-configurator.js.map +0 -1
  172. package/lib/components/configurator/project-configurator.js +0 -138
  173. package/lib/components/configurator/project-configurator.js.map +0 -1
  174. package/lib/components/content.js +0 -132
  175. package/lib/components/content.js.map +0 -1
  176. package/lib/components/export.js +0 -90
  177. package/lib/components/export.js.map +0 -1
  178. package/lib/components/firstsetting/button/styles.js +0 -34
  179. package/lib/components/firstsetting/button/styles.js.map +0 -1
  180. package/lib/components/firstsetting/export.js +0 -16
  181. package/lib/components/firstsetting/export.js.map +0 -1
  182. package/lib/components/firstsetting/firstsetting-content-button.js +0 -224
  183. package/lib/components/firstsetting/firstsetting-content-button.js.map +0 -1
  184. package/lib/components/firstsetting/firstsetting-toggle-button.js +0 -133
  185. package/lib/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
  186. package/lib/components/firstsetting/firstsetting.js +0 -633
  187. package/lib/components/firstsetting/firstsetting.js.map +0 -1
  188. package/lib/components/footerbar/button/ControlButton.js +0 -79
  189. package/lib/components/footerbar/button/ControlButton.js.map +0 -1
  190. package/lib/components/footerbar/button/DirectionButton.js +0 -76
  191. package/lib/components/footerbar/button/DirectionButton.js.map +0 -1
  192. package/lib/components/footerbar/button/DirectionPanSpinButton.js +0 -57
  193. package/lib/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
  194. package/lib/components/footerbar/button/ToggleButton.js +0 -83
  195. package/lib/components/footerbar/button/ToggleButton.js.map +0 -1
  196. package/lib/components/footerbar/button/ToggleConvertButton.js +0 -80
  197. package/lib/components/footerbar/button/ToggleConvertButton.js.map +0 -1
  198. package/lib/components/footerbar/button/ToggleMeasureButton.js +0 -59
  199. package/lib/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
  200. package/lib/components/footerbar/button/styles.js +0 -29
  201. package/lib/components/footerbar/button/styles.js.map +0 -1
  202. package/lib/components/footerbar/export.js +0 -16
  203. package/lib/components/footerbar/export.js.map +0 -1
  204. package/lib/components/footerbar/footer-content-button.js +0 -224
  205. package/lib/components/footerbar/footer-content-button.js.map +0 -1
  206. package/lib/components/footerbar/footer-toggle-button.js +0 -133
  207. package/lib/components/footerbar/footer-toggle-button.js.map +0 -1
  208. package/lib/components/footerbar/footerbar.js +0 -808
  209. package/lib/components/footerbar/footerbar.js.map +0 -1
  210. package/lib/components/footerbar/styles.js +0 -41
  211. package/lib/components/footerbar/styles.js.map +0 -1
  212. package/lib/components/header/button/MenuButton.js +0 -77
  213. package/lib/components/header/button/MenuButton.js.map +0 -1
  214. package/lib/components/header/button/SaveButton.js +0 -57
  215. package/lib/components/header/button/SaveButton.js.map +0 -1
  216. package/lib/components/header/button/styles.js +0 -68
  217. package/lib/components/header/button/styles.js.map +0 -1
  218. package/lib/components/header/export.js +0 -12
  219. package/lib/components/header/export.js.map +0 -1
  220. package/lib/components/header/header.js +0 -556
  221. package/lib/components/header/header.js.map +0 -1
  222. package/lib/components/header/styles.js +0 -47
  223. package/lib/components/header/styles.js.map +0 -1
  224. package/lib/components/login/Login.js +0 -94
  225. package/lib/components/login/Login.js.map +0 -1
  226. package/lib/components/login/LoginForm/index.js +0 -140
  227. package/lib/components/login/LoginForm/index.js.map +0 -1
  228. package/lib/components/login/Register.js +0 -104
  229. package/lib/components/login/Register.js.map +0 -1
  230. package/lib/components/login/RegisterForm/index.js +0 -237
  231. package/lib/components/login/RegisterForm/index.js.map +0 -1
  232. package/lib/components/login/jwtService.js +0 -239
  233. package/lib/components/login/jwtService.js.map +0 -1
  234. package/lib/components/molecules/slider/index.js +0 -22
  235. package/lib/components/molecules/slider/index.js.map +0 -1
  236. package/lib/components/molecules/slider/styles.js +0 -2
  237. package/lib/components/molecules/slider/styles.js.map +0 -1
  238. package/lib/components/myprojects/export.js +0 -12
  239. package/lib/components/myprojects/export.js.map +0 -1
  240. package/lib/components/myprojects/index.js +0 -453
  241. package/lib/components/myprojects/index.js.map +0 -1
  242. package/lib/components/myprojects/styles.js +0 -31
  243. package/lib/components/myprojects/styles.js.map +0 -1
  244. package/lib/components/sidebar/custom-accordion.js +0 -45
  245. package/lib/components/sidebar/custom-accordion.js.map +0 -1
  246. package/lib/components/sidebar/export.js +0 -50
  247. package/lib/components/sidebar/export.js.map +0 -1
  248. package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -74
  249. package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
  250. package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -124
  251. package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
  252. package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -135
  253. package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
  254. package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -260
  255. package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
  256. package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -84
  257. package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
  258. package/lib/components/sidebar/panel-element-editor/element-editor.js +0 -884
  259. package/lib/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
  260. package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
  261. package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
  262. package/lib/components/sidebar/panel-element-editor/panel-element-editor.js +0 -56
  263. package/lib/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
  264. package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -125
  265. package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
  266. package/lib/components/sidebar/panel-group-editor.js +0 -218
  267. package/lib/components/sidebar/panel-group-editor.js.map +0 -1
  268. package/lib/components/sidebar/panel-groups.js +0 -274
  269. package/lib/components/sidebar/panel-groups.js.map +0 -1
  270. package/lib/components/sidebar/panel-guides.js +0 -192
  271. package/lib/components/sidebar/panel-guides.js.map +0 -1
  272. package/lib/components/sidebar/panel-layer-elements.js +0 -258
  273. package/lib/components/sidebar/panel-layer-elements.js.map +0 -1
  274. package/lib/components/sidebar/panel-layers.js +0 -347
  275. package/lib/components/sidebar/panel-layers.js.map +0 -1
  276. package/lib/components/sidebar/panel.js +0 -110
  277. package/lib/components/sidebar/panel.js.map +0 -1
  278. package/lib/components/sidebar/sidebar.js +0 -117
  279. package/lib/components/sidebar/sidebar.js.map +0 -1
  280. package/lib/components/sidebar/toolbar-panel.js +0 -171
  281. package/lib/components/sidebar/toolbar-panel.js.map +0 -1
  282. package/lib/components/sign/export.js +0 -18
  283. package/lib/components/sign/export.js.map +0 -1
  284. package/lib/components/sign/main/index.js +0 -567
  285. package/lib/components/sign/main/index.js.map +0 -1
  286. package/lib/components/sign/main/styles.js +0 -27
  287. package/lib/components/sign/main/styles.js.map +0 -1
  288. package/lib/components/style/button.js +0 -121
  289. package/lib/components/style/button.js.map +0 -1
  290. package/lib/components/style/cancel-button.js +0 -30
  291. package/lib/components/style/cancel-button.js.map +0 -1
  292. package/lib/components/style/content-container.js +0 -41
  293. package/lib/components/style/content-container.js.map +0 -1
  294. package/lib/components/style/content-title.js +0 -38
  295. package/lib/components/style/content-title.js.map +0 -1
  296. package/lib/components/style/delete-button.js +0 -35
  297. package/lib/components/style/delete-button.js.map +0 -1
  298. package/lib/components/style/export.js +0 -122
  299. package/lib/components/style/export.js.map +0 -1
  300. package/lib/components/style/form-block.js +0 -32
  301. package/lib/components/style/form-block.js.map +0 -1
  302. package/lib/components/style/form-color-input.js +0 -35
  303. package/lib/components/style/form-color-input.js.map +0 -1
  304. package/lib/components/style/form-label.js +0 -34
  305. package/lib/components/style/form-label.js.map +0 -1
  306. package/lib/components/style/form-number-input.js +0 -197
  307. package/lib/components/style/form-number-input.js.map +0 -1
  308. package/lib/components/style/form-number-input_2.js +0 -214
  309. package/lib/components/style/form-number-input_2.js.map +0 -1
  310. package/lib/components/style/form-select.js +0 -30
  311. package/lib/components/style/form-select.js.map +0 -1
  312. package/lib/components/style/form-slider.js +0 -53
  313. package/lib/components/style/form-slider.js.map +0 -1
  314. package/lib/components/style/form-submit-button.js +0 -36
  315. package/lib/components/style/form-submit-button.js.map +0 -1
  316. package/lib/components/style/form-text-input.js +0 -84
  317. package/lib/components/style/form-text-input.js.map +0 -1
  318. package/lib/components/toolbar/button/ControlButton.js +0 -76
  319. package/lib/components/toolbar/button/ControlButton.js.map +0 -1
  320. package/lib/components/toolbar/button/DirectionButton.js +0 -57
  321. package/lib/components/toolbar/button/DirectionButton.js.map +0 -1
  322. package/lib/components/toolbar/button/RightButton.js +0 -140
  323. package/lib/components/toolbar/button/RightButton.js.map +0 -1
  324. package/lib/components/toolbar/button/ToggleButton.js +0 -66
  325. package/lib/components/toolbar/button/ToggleButton.js.map +0 -1
  326. package/lib/components/toolbar/button/index.js +0 -94
  327. package/lib/components/toolbar/button/index.js.map +0 -1
  328. package/lib/components/toolbar/button/styles.js +0 -21
  329. package/lib/components/toolbar/button/styles.js.map +0 -1
  330. package/lib/components/toolbar/components/DoorStyleMenu.js +0 -112
  331. package/lib/components/toolbar/components/DoorStyleMenu.js.map +0 -1
  332. package/lib/components/toolbar/components/Pricing.js +0 -110
  333. package/lib/components/toolbar/components/Pricing.js.map +0 -1
  334. package/lib/components/toolbar/components/ReviewForQuote.js +0 -485
  335. package/lib/components/toolbar/components/ReviewForQuote.js.map +0 -1
  336. package/lib/components/toolbar/export.js +0 -50
  337. package/lib/components/toolbar/export.js.map +0 -1
  338. package/lib/components/toolbar/main/Alert.js +0 -132
  339. package/lib/components/toolbar/main/Alert.js.map +0 -1
  340. package/lib/components/toolbar/main/TakePictureModal.js +0 -109
  341. package/lib/components/toolbar/main/TakePictureModal.js.map +0 -1
  342. package/lib/components/toolbar/main/confirm-popup.js +0 -95
  343. package/lib/components/toolbar/main/confirm-popup.js.map +0 -1
  344. package/lib/components/toolbar/main/index.js +0 -4619
  345. package/lib/components/toolbar/main/index.js.map +0 -1
  346. package/lib/components/toolbar/main/myComponents.js +0 -125
  347. package/lib/components/toolbar/main/myComponents.js.map +0 -1
  348. package/lib/components/toolbar/main/styles.js +0 -73
  349. package/lib/components/toolbar/main/styles.js.map +0 -1
  350. package/lib/components/toolbar/plugin-item.js +0 -156
  351. package/lib/components/toolbar/plugin-item.js.map +0 -1
  352. package/lib/components/toolbar/popup/appliance/appliance-category/index.js +0 -86
  353. package/lib/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
  354. package/lib/components/toolbar/popup/appliance/choose-appliance/index.js +0 -85
  355. package/lib/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
  356. package/lib/components/toolbar/popup/appliance/index.js +0 -89
  357. package/lib/components/toolbar/popup/appliance/index.js.map +0 -1
  358. package/lib/components/toolbar/popup/autosaveprompt/index.js +0 -99
  359. package/lib/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
  360. package/lib/components/toolbar/popup/autosaveprompt/styles.js +0 -16
  361. package/lib/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
  362. package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -86
  363. package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
  364. package/lib/components/toolbar/popup/cabinet/choose-product/index.js +0 -107
  365. package/lib/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
  366. package/lib/components/toolbar/popup/cabinet/index.js +0 -91
  367. package/lib/components/toolbar/popup/cabinet/index.js.map +0 -1
  368. package/lib/components/toolbar/popup/doorStyle/choose-style/index.js +0 -59
  369. package/lib/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
  370. package/lib/components/toolbar/popup/doorStyle/index.js +0 -68
  371. package/lib/components/toolbar/popup/doorStyle/index.js.map +0 -1
  372. package/lib/components/toolbar/popup/doorStyle/style-category/index.js +0 -152
  373. package/lib/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
  374. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -9
  375. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
  376. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -128
  377. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
  378. package/lib/components/toolbar/popup/downloadsummary/index.js +0 -572
  379. package/lib/components/toolbar/popup/downloadsummary/index.js.map +0 -1
  380. package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -60
  381. package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
  382. package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -200
  383. package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
  384. package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -254
  385. package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
  386. package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1762
  387. package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
  388. package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -96
  389. package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
  390. package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -125
  391. package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
  392. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1713
  393. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
  394. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -184
  395. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
  396. package/lib/components/toolbar/popup/downloadsummary/showWarranty.js +0 -115
  397. package/lib/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
  398. package/lib/components/toolbar/popup/downloadsummary/styles.js +0 -47
  399. package/lib/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
  400. package/lib/components/toolbar/popup/finishingtouch/category/index.js +0 -44
  401. package/lib/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
  402. package/lib/components/toolbar/popup/finishingtouch/index.js +0 -54
  403. package/lib/components/toolbar/popup/finishingtouch/index.js.map +0 -1
  404. package/lib/components/toolbar/popup/finishingtouch/material-edit.js +0 -163
  405. package/lib/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
  406. package/lib/components/toolbar/popup/finishingtouch/product/index.js +0 -65
  407. package/lib/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
  408. package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -124
  409. package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
  410. package/lib/components/toolbar/popup/floorplan/choose-floor/index.js +0 -255
  411. package/lib/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
  412. package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -20
  413. package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
  414. package/lib/components/toolbar/popup/floorplan/floor-category/index.js +0 -99
  415. package/lib/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
  416. package/lib/components/toolbar/popup/floorplan/index.js +0 -56
  417. package/lib/components/toolbar/popup/floorplan/index.js.map +0 -1
  418. package/lib/components/toolbar/popup/index.js +0 -195
  419. package/lib/components/toolbar/popup/index.js.map +0 -1
  420. package/lib/components/toolbar/popup/newproject/index.js +0 -75
  421. package/lib/components/toolbar/popup/newproject/index.js.map +0 -1
  422. package/lib/components/toolbar/popup/newproject/styles.js +0 -16
  423. package/lib/components/toolbar/popup/newproject/styles.js.map +0 -1
  424. package/lib/components/toolbar/popup/product/appliance.js +0 -73
  425. package/lib/components/toolbar/popup/product/appliance.js.map +0 -1
  426. package/lib/components/toolbar/popup/product/cabinetproduct.js +0 -33
  427. package/lib/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
  428. package/lib/components/toolbar/popup/product/doorstyle.js +0 -59
  429. package/lib/components/toolbar/popup/product/doorstyle.js.map +0 -1
  430. package/lib/components/toolbar/popup/product/doorstyleproduct.js +0 -59
  431. package/lib/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
  432. package/lib/components/toolbar/popup/product/floor.js +0 -59
  433. package/lib/components/toolbar/popup/product/floor.js.map +0 -1
  434. package/lib/components/toolbar/popup/product/floorproduct.js +0 -68
  435. package/lib/components/toolbar/popup/product/floorproduct.js.map +0 -1
  436. package/lib/components/toolbar/popup/product/index.js +0 -59
  437. package/lib/components/toolbar/popup/product/index.js.map +0 -1
  438. package/lib/components/toolbar/popup/product/primary.js +0 -71
  439. package/lib/components/toolbar/popup/product/primary.js.map +0 -1
  440. package/lib/components/toolbar/popup/product/productline.js +0 -128
  441. package/lib/components/toolbar/popup/product/productline.js.map +0 -1
  442. package/lib/components/toolbar/popup/product/reviewItem.js +0 -346
  443. package/lib/components/toolbar/popup/product/reviewItem.js.map +0 -1
  444. package/lib/components/toolbar/popup/product/reviewMolding.js +0 -291
  445. package/lib/components/toolbar/popup/product/reviewMolding.js.map +0 -1
  446. package/lib/components/toolbar/popup/product/styles.js +0 -79
  447. package/lib/components/toolbar/popup/product/styles.js.map +0 -1
  448. package/lib/components/toolbar/popup/savedesign/FullPictureForm.js +0 -169
  449. package/lib/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
  450. package/lib/components/toolbar/popup/savedesign/index.js +0 -516
  451. package/lib/components/toolbar/popup/savedesign/index.js.map +0 -1
  452. package/lib/components/toolbar/popup/savedesign/styles.js +0 -26
  453. package/lib/components/toolbar/popup/savedesign/styles.js.map +0 -1
  454. package/lib/components/toolbar/popup/setDoorStyleOption/index.js +0 -64
  455. package/lib/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
  456. package/lib/components/toolbar/popup/styles.js +0 -104
  457. package/lib/components/toolbar/popup/styles.js.map +0 -1
  458. package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -166
  459. package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
  460. package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -93
  461. package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
  462. package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -45
  463. package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
  464. package/lib/components/toolbar/popup/submitforquote/StepDots.js +0 -40
  465. package/lib/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
  466. package/lib/components/toolbar/popup/submitforquote/cart-choice.js +0 -141
  467. package/lib/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
  468. package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -50
  469. package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
  470. package/lib/components/toolbar/popup/submitforquote/index.js +0 -698
  471. package/lib/components/toolbar/popup/submitforquote/index.js.map +0 -1
  472. package/lib/components/toolbar/popup/submitforquote/styles.js +0 -38
  473. package/lib/components/toolbar/popup/submitforquote/styles.js.map +0 -1
  474. package/lib/components/toolbar/popup/submitprompt/index.js +0 -79
  475. package/lib/components/toolbar/popup/submitprompt/index.js.map +0 -1
  476. package/lib/components/toolbar/popup/submitprompt/styles.js +0 -16
  477. package/lib/components/toolbar/popup/submitprompt/styles.js.map +0 -1
  478. package/lib/components/toolbar/toolbar-button.js +0 -111
  479. package/lib/components/toolbar/toolbar-button.js.map +0 -1
  480. package/lib/components/toolbar/toolbar-load-button.js +0 -36
  481. package/lib/components/toolbar/toolbar-load-button.js.map +0 -1
  482. package/lib/components/toolbar/toolbar-save-button.js +0 -34
  483. package/lib/components/toolbar/toolbar-save-button.js.map +0 -1
  484. package/lib/components/tutorial-view/Modal.js +0 -503
  485. package/lib/components/tutorial-view/Modal.js.map +0 -1
  486. package/lib/components/tutorial-view/styles.js +0 -13
  487. package/lib/components/tutorial-view/styles.js.map +0 -1
  488. package/lib/components/viewer2d/area.js +0 -90
  489. package/lib/components/viewer2d/area.js.map +0 -1
  490. package/lib/components/viewer2d/export.js +0 -122
  491. package/lib/components/viewer2d/export.js.map +0 -1
  492. package/lib/components/viewer2d/grids/grid-horizontal-streak.js +0 -45
  493. package/lib/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
  494. package/lib/components/viewer2d/grids/grid-streak.js +0 -45
  495. package/lib/components/viewer2d/grids/grid-streak.js.map +0 -1
  496. package/lib/components/viewer2d/grids/grid-vertical-streak.js +0 -45
  497. package/lib/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
  498. package/lib/components/viewer2d/grids/grids.js +0 -45
  499. package/lib/components/viewer2d/grids/grids.js.map +0 -1
  500. package/lib/components/viewer2d/group.js +0 -63
  501. package/lib/components/viewer2d/group.js.map +0 -1
  502. package/lib/components/viewer2d/item.js +0 -522
  503. package/lib/components/viewer2d/item.js.map +0 -1
  504. package/lib/components/viewer2d/layer.js +0 -172
  505. package/lib/components/viewer2d/layer.js.map +0 -1
  506. package/lib/components/viewer2d/line.js +0 -899
  507. package/lib/components/viewer2d/line.js.map +0 -1
  508. package/lib/components/viewer2d/ruler.js +0 -108
  509. package/lib/components/viewer2d/ruler.js.map +0 -1
  510. package/lib/components/viewer2d/rulerDist.js +0 -154
  511. package/lib/components/viewer2d/rulerDist.js.map +0 -1
  512. package/lib/components/viewer2d/rulerX.js +0 -159
  513. package/lib/components/viewer2d/rulerX.js.map +0 -1
  514. package/lib/components/viewer2d/rulerY.js +0 -161
  515. package/lib/components/viewer2d/rulerY.js.map +0 -1
  516. package/lib/components/viewer2d/scene.js +0 -148
  517. package/lib/components/viewer2d/scene.js.map +0 -1
  518. package/lib/components/viewer2d/snap.js +0 -84
  519. package/lib/components/viewer2d/snap.js.map +0 -1
  520. package/lib/components/viewer2d/state.js +0 -88
  521. package/lib/components/viewer2d/state.js.map +0 -1
  522. package/lib/components/viewer2d/utils.js +0 -174
  523. package/lib/components/viewer2d/utils.js.map +0 -1
  524. package/lib/components/viewer2d/vertex.js +0 -76
  525. package/lib/components/viewer2d/vertex.js.map +0 -1
  526. package/lib/components/viewer2d/viewer2d.js +0 -1409
  527. package/lib/components/viewer2d/viewer2d.js.map +0 -1
  528. package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2598
  529. package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
  530. package/lib/components/viewer3d/dcm.js +0 -408
  531. package/lib/components/viewer3d/dcm.js.map +0 -1
  532. package/lib/components/viewer3d/fbm.js +0 -421
  533. package/lib/components/viewer3d/fbm.js.map +0 -1
  534. package/lib/components/viewer3d/front3D.js +0 -76
  535. package/lib/components/viewer3d/front3D.js.map +0 -1
  536. package/lib/components/viewer3d/grid-creator.js +0 -35
  537. package/lib/components/viewer3d/grid-creator.js.map +0 -1
  538. package/lib/components/viewer3d/grids/grid-horizontal-streak.js +0 -45
  539. package/lib/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
  540. package/lib/components/viewer3d/grids/grid-streak.js +0 -36
  541. package/lib/components/viewer3d/grids/grid-streak.js.map +0 -1
  542. package/lib/components/viewer3d/grids/grid-vertical-streak.js +0 -45
  543. package/lib/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
  544. package/lib/components/viewer3d/libs/first-person-controls.js +0 -75
  545. package/lib/components/viewer3d/libs/first-person-controls.js.map +0 -1
  546. package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1288
  547. package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
  548. package/lib/components/viewer3d/libs/mtl-loader.js +0 -360
  549. package/lib/components/viewer3d/libs/mtl-loader.js.map +0 -1
  550. package/lib/components/viewer3d/libs/obj-loader.js +0 -465
  551. package/lib/components/viewer3d/libs/obj-loader.js.map +0 -1
  552. package/lib/components/viewer3d/libs/orbit-controls.js +0 -701
  553. package/lib/components/viewer3d/libs/orbit-controls.js.map +0 -1
  554. package/lib/components/viewer3d/libs/pointer-lock-controls.js +0 -48
  555. package/lib/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
  556. package/lib/components/viewer3d/lrm.js +0 -312
  557. package/lib/components/viewer3d/lrm.js.map +0 -1
  558. package/lib/components/viewer3d/model.js +0 -715
  559. package/lib/components/viewer3d/model.js.map +0 -1
  560. package/lib/components/viewer3d/pointer-lock-navigation.js +0 -123
  561. package/lib/components/viewer3d/pointer-lock-navigation.js.map +0 -1
  562. package/lib/components/viewer3d/ruler-utils/itemRect.js +0 -69
  563. package/lib/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
  564. package/lib/components/viewer3d/ruler-utils/layer3D.js +0 -503
  565. package/lib/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
  566. package/lib/components/viewer3d/ruler-utils/ruler3D.js +0 -235
  567. package/lib/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
  568. package/lib/components/viewer3d/ruler-utils/scene3D.js +0 -70
  569. package/lib/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
  570. package/lib/components/viewer3d/ruler-utils/state3D.js +0 -26
  571. package/lib/components/viewer3d/ruler-utils/state3D.js.map +0 -1
  572. package/lib/components/viewer3d/scene-creator.js +0 -3641
  573. package/lib/components/viewer3d/scene-creator.js.map +0 -1
  574. package/lib/components/viewer3d/three-memory-cleaner.js +0 -61
  575. package/lib/components/viewer3d/three-memory-cleaner.js.map +0 -1
  576. package/lib/components/viewer3d/viewer3d-first-person.js +0 -321
  577. package/lib/components/viewer3d/viewer3d-first-person.js.map +0 -1
  578. package/lib/components/viewer3d/viewer3d.js +0 -2508
  579. package/lib/components/viewer3d/viewer3d.js.map +0 -1
  580. package/lib/components/wizardstep/button/styles.js +0 -67
  581. package/lib/components/wizardstep/button/styles.js.map +0 -1
  582. package/lib/components/wizardstep/export.js +0 -12
  583. package/lib/components/wizardstep/export.js.map +0 -1
  584. package/lib/components/wizardstep/index.js +0 -978
  585. package/lib/components/wizardstep/index.js.map +0 -1
  586. package/lib/components/wizardstep/styles.js +0 -68
  587. package/lib/components/wizardstep/styles.js.map +0 -1
  588. package/lib/components/wizardstep/wizardstep-content-button.js +0 -224
  589. package/lib/components/wizardstep/wizardstep-content-button.js.map +0 -1
  590. package/lib/components/wizardstep/wizardstep-toggle-button.js +0 -133
  591. package/lib/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
  592. package/lib/constants.js +0 -646
  593. package/lib/constants.js.map +0 -1
  594. package/lib/hooks/useCheckCart.js +0 -60
  595. package/lib/hooks/useCheckCart.js.map +0 -1
  596. package/lib/hooks/useGetPricesBySku.js +0 -81
  597. package/lib/hooks/useGetPricesBySku.js.map +0 -1
  598. package/lib/hooks/useValidateToken.js +0 -207
  599. package/lib/hooks/useValidateToken.js.map +0 -1
  600. package/lib/index.js +0 -102
  601. package/lib/index.js.map +0 -1
  602. package/lib/models.js +0 -518
  603. package/lib/models.js.map +0 -1
  604. package/lib/plugins/SVGLoader.js +0 -1418
  605. package/lib/plugins/SVGLoader.js.map +0 -1
  606. package/lib/plugins/autosave.js +0 -40
  607. package/lib/plugins/autosave.js.map +0 -1
  608. package/lib/plugins/console-debugger.js +0 -45
  609. package/lib/plugins/console-debugger.js.map +0 -1
  610. package/lib/plugins/export.js +0 -34
  611. package/lib/plugins/export.js.map +0 -1
  612. package/lib/plugins/keyboard.js +0 -108
  613. package/lib/plugins/keyboard.js.map +0 -1
  614. package/lib/reducers/areas-reducer.js +0 -19
  615. package/lib/reducers/areas-reducer.js.map +0 -1
  616. package/lib/reducers/export.js +0 -98
  617. package/lib/reducers/export.js.map +0 -1
  618. package/lib/reducers/groups-reducer.js +0 -45
  619. package/lib/reducers/groups-reducer.js.map +0 -1
  620. package/lib/reducers/holes-reducer.js +0 -69
  621. package/lib/reducers/holes-reducer.js.map +0 -1
  622. package/lib/reducers/items-reducer.js +0 -147
  623. package/lib/reducers/items-reducer.js.map +0 -1
  624. package/lib/reducers/lines-reducer.js +0 -52
  625. package/lib/reducers/lines-reducer.js.map +0 -1
  626. package/lib/reducers/project-reducer.js +0 -136
  627. package/lib/reducers/project-reducer.js.map +0 -1
  628. package/lib/reducers/reducer.js +0 -27
  629. package/lib/reducers/reducer.js.map +0 -1
  630. package/lib/reducers/scene-reducer.js +0 -35
  631. package/lib/reducers/scene-reducer.js.map +0 -1
  632. package/lib/reducers/user-reducer.js +0 -48
  633. package/lib/reducers/user-reducer.js.map +0 -1
  634. package/lib/reducers/vertices-reducer.js +0 -26
  635. package/lib/reducers/vertices-reducer.js.map +0 -1
  636. package/lib/reducers/viewer2d-reducer.js +0 -83
  637. package/lib/reducers/viewer2d-reducer.js.map +0 -1
  638. package/lib/reducers/viewer3d-reducer.js +0 -64
  639. package/lib/reducers/viewer3d-reducer.js.map +0 -1
  640. package/lib/shared-style.js +0 -73
  641. package/lib/shared-style.js.map +0 -1
  642. package/lib/styles/export.js +0 -14
  643. package/lib/styles/export.js.map +0 -1
  644. package/lib/translator/en.js +0 -111
  645. package/lib/translator/en.js.map +0 -1
  646. package/lib/translator/it.js +0 -86
  647. package/lib/translator/it.js.map +0 -1
  648. package/lib/translator/ru.js +0 -86
  649. package/lib/translator/ru.js.map +0 -1
  650. package/lib/translator/translator.js +0 -91
  651. package/lib/translator/translator.js.map +0 -1
  652. package/lib/utils/browser.js +0 -41
  653. package/lib/utils/browser.js.map +0 -1
  654. package/lib/utils/email-validator.js +0 -11
  655. package/lib/utils/email-validator.js.map +0 -1
  656. package/lib/utils/export.js +0 -57
  657. package/lib/utils/export.js.map +0 -1
  658. package/lib/utils/geometry.js +0 -2329
  659. package/lib/utils/geometry.js.map +0 -1
  660. package/lib/utils/get-edges-of-subgraphs.js +0 -29
  661. package/lib/utils/get-edges-of-subgraphs.js.map +0 -1
  662. package/lib/utils/graph-cycles.js +0 -241
  663. package/lib/utils/graph-cycles.js.map +0 -1
  664. package/lib/utils/graph-inner-cycles.js +0 -55
  665. package/lib/utils/graph-inner-cycles.js.map +0 -1
  666. package/lib/utils/graph.js +0 -152
  667. package/lib/utils/graph.js.map +0 -1
  668. package/lib/utils/helper.js +0 -360
  669. package/lib/utils/helper.js.map +0 -1
  670. package/lib/utils/history.js +0 -37
  671. package/lib/utils/history.js.map +0 -1
  672. package/lib/utils/id-broker.js +0 -26
  673. package/lib/utils/id-broker.js.map +0 -1
  674. package/lib/utils/logger.js +0 -15
  675. package/lib/utils/logger.js.map +0 -1
  676. package/lib/utils/math.js +0 -58
  677. package/lib/utils/math.js.map +0 -1
  678. package/lib/utils/molding.js +0 -864
  679. package/lib/utils/molding.js.map +0 -1
  680. package/lib/utils/name-generator.js +0 -24
  681. package/lib/utils/name-generator.js.map +0 -1
  682. package/lib/utils/objects-utils.js +0 -61
  683. package/lib/utils/objects-utils.js.map +0 -1
  684. package/lib/utils/phone-validator.js +0 -11
  685. package/lib/utils/phone-validator.js.map +0 -1
  686. package/lib/utils/process-black-list.js +0 -25
  687. package/lib/utils/process-black-list.js.map +0 -1
  688. package/lib/utils/react-if.js +0 -25
  689. package/lib/utils/react-if.js.map +0 -1
  690. package/lib/utils/snap-scene.js +0 -106
  691. package/lib/utils/snap-scene.js.map +0 -1
  692. package/lib/utils/snap.js +0 -250
  693. package/lib/utils/snap.js.map +0 -1
  694. package/lib/utils/threeCSG.es6.js +0 -504
  695. package/lib/utils/threeCSG.es6.js.map +0 -1
  696. package/lib/version.js +0 -8
  697. package/lib/version.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-creator.js","names":["_three","_interopRequireWildcard","require","Three","_gridCreator","_interopRequireDefault","_threeMemoryCleaner","_util","_constants","_export","_convertUnits","_geometry2","GeomUtils","_itemLoader","_utils","_helper","_math","e","__esModule","t","WeakMap","r","n","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","_toPrimitive","toPrimitive","String","Number","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_arrayLikeToArray","toString","slice","constructor","name","from","test","transformBox","fVLine","exports","scene_mode","parseData","sceneData","actions","catalog","camera","renderer","mode","planData","window","sceneGraph","unit","layers","busyResources","width","height","LODs","plan","Object3D","cam","grid","createGrid","boundingBox","Box3","setFromObject","promises","layer","id","selectedLayer","visible","concat","createLayerObjects","p1","Promise","resolve","all","then","parent","children","updateBoundingBox","isElevationView","buildElevationScene","promise","visibleTransformBox","flag","scene","updateMatrixWorld","ELEV_GRP","oldElevationGroup","getObjectByName","remove","elevationGroup","Group","traverse","obj","clone","applyMatrix4","matrixWorld","add","replaceMeshesWithLineSegments","moldingGroups","MoldingUtils","getAllMoldingGroups","lines","holes","areas","items","countertops","backsplashes","altitude","line","addLine","linesActions","holeID","addHole","holesActions","area","addArea","areaActions","item","addItem","itemsActions","canvas","document","createElement","style","ctx","getContext","fillStyle","strokeStyle","beginPath","arc","Math","PI","fill","stroke","img1","Image","crossOrigin","src","onload","drawImage","lineWidth","img2","createWarningObject","warningTexture","Texture","needsUpdate","warningObj","Sprite","SpriteMaterial","map","sizeAttenuation","material","transparent","depthTest","scale","renderOrder","updateScene","oldSceneData","diffArray","_draggingItem$toJS","_filteredDiffs","_filteredDiffs2","undefined","toolObj","angleObj","draggingItem","result","splitted","el","op","path","split","filteredDiffs","filterDiffs","_ref","_ref2","isEndDragging","isEmpty","toJS","DIFFERENT_VALUES_PATH_LENGTH","includes","_draggingItem$getIn","_draggingItem$getIn2","layerID","getIn","itemID","_sceneData$getIn","_sceneData$getIn$toJS","_selLayer$items","selLayer","distArray","isSettingDoorStyle","isUpdateMolding","_ref3","_ref4","_ref5","removeLayer","promiseValue","replaceObject","addObject","deleteSpecifiedMeshObjects","deleteCountertop","removeObject","layerSelectedID","layerSelected","layerGraph","lineID","removeLine","areaID","removeArea","removeItem","removeHole","replaceValue","animate_objects","myAnimRotate","open_doors","isCorner","animateStep","ANIMATE_STEP_MAX","ANIMATE_STEP_MIN","clearInterval","animate_intervalID","animateDoor","offset","myAnimTranslate","translateDrawer","modifiedPath","matchStr","vertex","lineHoles","newHoleData","getElement","type","updateRender3D","updateHole","updateLine","updateArea","tmpMoldings","updateItem","item3D","err","console","log","keyIndex","rotation","setTimeout","getDistances","removeSelItemMesh","position","x","z","itemType","elements","returnReplaceableDeepSearchType","item3DElement","pop","mBoxColor","_item","doorStyle","doorStyles","cds","showYelloBox","mBox","makeMBoxfromObject","properties","temp_MGArray","object","scalevec","Vector3","y","posVec","newAltitude","newUnit","convert","to","newWidth","newWidthUnit","newHeight","newHeightUnit","newDepth","newDepthUnit","sizeinfo","info","depth","box","baseBoxHelper","baseBox3FromObject","max","min","radius","sqrt","moveBox","BoxGeometry","controlGeom","rotGeom","rotGeoms","upwardsGeom","vLineGeom","BufferGeometry","vertices","setAttribute","BufferAttribute","Float32Array","attributes","vLineGeom1","vertices1","vLineGeom2","vertices2","vLineGeom3","vertices3","rotFillObj","Mesh","rotFill","MeshPhongMaterial","color","side","DoubleSide","colorWrite","rotStrokeObj","Line","rotStroke","LineBasicMaterial","upObj","MeshBasicMaterial","upwardbox","BoxHelper","SHADE_DARK_PURPLE_COLOR","opacity","vLine","vLine1","vLine2","vLine3","uVec","blLighting","translateY","translateOnAxis","rotFillObj1","rotStrokeObj1","rotateY","asrtObj","applyInteract","getElementById","display","selectItem","prevPos","updateDoorHandleMesh","door_animate_offset","userData","_loop","it","elem","door_match","match","rotate_match_text","flip_doorhandle","child","endsWith","moveObjectChildrens","selectedItem","selected","idx","object_match","temp","_object3$userData$doo","element","_animate_objects$elem","_animate_objects$elem2","_animate_objects$elem3","_userData$door_animat","_element$obj","_offset$x","_offset$y","_offset$z","_element$obj2","warn","setInterval","rItem","rItemElement","removeItemWithoutItem","addCountertop","category","addMolding","values","isCalcWall","index","getLineDistance","positionAttribute","geometry","wPoint0","fromBufferAttribute","wPoint1","raycaster","Raycaster","rayDirection","ray","direction","Camera","normalize","meshes","isMesh","intersects","intersectObjects","lx","ly","lz","extrudeSettings","steps","bevelEnabled","w","h","shape","Shape","moveTo","lineTo","geom","ExtrudeGeometry","center","distance","target","originPoint","array","newVec","computeBoundingSphere","computeBoundingBox","dist","formatNumber","DECIMAL_PLACES_2","getTextCanvas","wid","innerWidth","hei","innerHeight","texture","minFilter","LinearFilter","PlaneGeometry","textMesh","disposeObject","sprite1","objW","objL","triangle","triangle1","sin","cos","real_target","tX","tZ","tX1","tZ1","data","px","py","opX","opY","vec","getIntersectPoint","pX","pY","oA","A","oB","B","iX","iY","gcd","b","text","parameters","fontSize","integral","fontName","ARROW_TEXT_FONTFACE","font","italic","bold","textMetrics","measureText","textBaseline","baseline","ARROW_TEXT_BACKCOLOR","arcTo","fillColor","ARROW_TEXT_FORECOLOR","fillText","strokeColor","strokeText","ARRAY_3D_MODES","MODE_IDLE_3D","MODE_IDLE","layerId","hole3D","line3D","area3D","oldSceneLayer","newSceneLayer","deleteAllMolding","addPromise","addAction","holeData","render3D","LOD","castShadow","loadTexture","MeshPhysicalMaterial","roughness","transmission","thickness","transparency","isFinite","transGroup","bevelSegments","bevelSize","bevelThickness","triangleShape","transHole_Right","addShape","transHole_Left","pivot","vertex0","vertex1","tmp","pow","alpha","asin","holeAltitude","holeHeight","holeId","childLen","selectHole","applyOpacity","differences","selfDestroy","selfBuild","hole","oldHole","mesh","stateMode","lineVisible","lineId","selectLine","oldLine","interactFunction","selectArea","floorSupport","onBeforeRender","group","floorMesh","normal","computeVertexNormals","normals","pos","Vector4","matrixWorldInverse","dot","ceil","ceilMaterial","MeshStandardMaterial","BackSide","metalness","_loop2","realVec","ceilHeight","UNIT_CENTIMETER","translateZ","oldArea","bAddMolding","loadFlag","MODE_DRAWING_ITEM_3D","toggleLoadingCabinet","catalogElement","pivotElement","tranformControl","TransformGizmo","itemId","getItemVisible","itemRect","selectedLine","itemVisible","l0","l1","r0","rect","r1","r2","r3","delta12","GeometryUtils","distancePointFromLineSegment","delta23","delta30","DISTANCE_EPSILON","val","rotRad","catid","cat","size","layoutpos","is_corner","calcrect","getCalcRectFromItem3D","itemPos","some","endLoading","oldItem","interact","maxOpacity","newBoundingBox","newCenter","sub","minimizeRemoveDiffsWhenSwitchingLayers","minimizeChangePropertiesAfterSelectionsDiffs","minimizeChangePropertiesDiffs","foundDiff","_ref6","indexOf","idsFound","_ref7","_ref8","_ref9","createCTFromItem","createCTFromItems","item0","item1","CTId","IDBroker","acquireID","ct3d","widthUnit","depthUnit","heightUnit","createMDFromItem","molding","MDId","zUnit","location_type","TOP_MOLDING_LOCATION","MIDDLE_MOLDING_LOCATION","BOTTOM_MOLDING_LOCATION","pointGroups","tryAdjacent","ct1","ct2","verticesDistance","totalwidth","abs","newpos","newsize","compareVertices","isParallelLines","line1","line2","isParallel","EPSILON","tryAdjacentMD","md1","md2","id1","id2","newLines","isMerge","findIndex","disLine1","disLine2","sameMDistances","sameMPoints","samePointNum","floor","pointNum","k","showItemCT","CT","normalMap","counterTop","uri","interiortexture","applyTexture","Color","repeat","getCountertopMesh","countertop","getDoorStyleMaterial","tempItem","door_mesh","OBJTYPE_MESH","addCTMesh","ctMesh","quaternion","setFromAxisAngle","copy","updateMatrix","ctmeshMat","matrix","objMat","pivotMat","setPosition","find","ct","unit_width","finalMat","premultiply","getArea","c","isSingleQuadrilateral","groupCount","pointGroup","moldingVertices","mPointGroup","mdGeo","MDV","model","svg_width","svg_height","isSnap","Vector2","samePoints","verticesArray","tmp_pos","point","cur","prev","vecPC","vecNC","vecNorm","multiplyScalar","lenPN","lenNC","lenPC","acos","isNaN","rotateAround","p","mdGeo1","dcmFace","leng","f_a1","f_b1","f_c1","f_a2","f_b2","f_c2","indices","setIndex","faces","fbmFace","total_leng","assignUVs","_geometry$boundingBox","range","faceVertexUvs","face","v1","v2","v3","uvsNeedUpdate","assignUVsA","_geometry$boundingBox2","getMeshesFromScene","threedfabs","getDistanceBetweenLineSegment","pos1","pos2","pos3","pos4","_doorStyle","isItemCabinet","hasItemCDS","isSimilar","sameSign","ch1","ch2","getTotalDistance","sum","wrapS","RepeatWrapping","wrapT","normalScale","normalScaleX","normalScaleY","lengthRepeatScale","heightRepeatScale","createBacksplash","backsplashApplied","itemInfo","backsplash","itemToSave","backsplashVisible","splice","wallItems","allWallItems","getAllItemSpecified","WALL_CABINET_LAYOUTPOS","others","altitudeUnit","altItems","wallItem","altItem","posX","posY","posZ","rotY","posX1","posY1","posZ1","rotY1","splashWidth","splashHeight","splashDepth","wholeWidth","factor","halfWidth","centerFactor","_iterator","_step","back","hypot","areaMaterial","allLines","getAllLines","allLineRects","buildRectFromLines","isSnappedSideLine","geometry1","backsplash1","newBacksplash","addMGMesh","_molding$molding","paths","j","jl","subPaths","subPath","Path","fromJSON","getPoints","_addMGMesh","isBaseCabinet","BASE_CABINET_LAYOUTPOS","parseInt","temp_unit","height_unit","width_unit","length_unit","total","count","len","toNonIndexed","sumDistance","sumDistanceArray","finalDistance","uvs_element_array","posDistance","uvs","uvs_item","all_uvs","fbm3d","deleteCTMesh","deleteMGMesh","_planData$plan$childr","CTArray","long_name","newCT","oldCT","extCT","extCTIndex","tryMergeCT","delItem","delCT","delItemIndex","delCTIndex","cts","MGArray","tempMGArray","mg","snappedItems","toArray","oItem","isItemSnappedItem","updateMoldingGroupArray","itemActions","MODE_DRAGGING_ITEM_3D","MODE_ROTATING_ITEM_3D","moldingMesh","selItem","cnt","isEnableMolding","isEnableItemForMolding","itemsForGroup","curItem","isSameMoldingLayoutpos","new_MGArray","changeMoldings","destItem","destMolding","md","regenMGItemList","oldMG","filteredNewMGList","_loop3","newMG","oIt","nIt","rIt","nItem","v","_ret","mol","points","createMonldingGroup","chMolding","setMolding","_","flip","error","doorReg","doorHandleReg","doorRegResult","exec","phDoor","doorHandle","phRight","phLeft","childOfDoor","addWarningBox","altitudeLength","sBounding","warnBoxGeom","warnBoxObj","blending","MultiplyBlending","linewidth","checkCabinetOverlap","holeItems","holeAlti"],"sources":["../../../src/components/viewer3d/scene-creator.js"],"sourcesContent":["import * as Three from 'three';\r\nimport createGrid from './grid-creator';\r\nimport { disposeObject } from './three-memory-cleaner';\r\nimport { Color, Group } from 'three';\r\nimport { isUndefined } from 'util';\r\nimport {\r\n MODE_DRAWING_ITEM_3D,\r\n EPSILON,\r\n DISTANCE_EPSILON,\r\n OBJTYPE_MESH,\r\n ARROW_TEXT_FORECOLOR,\r\n ARROW_TEXT_BACKCOLOR,\r\n ARROW_TEXT_FONTFACE,\r\n UNIT_CENTIMETER,\r\n SHADE_DARK_PURPLE_COLOR,\r\n MODE_DRAGGING_ITEM_3D,\r\n MODE_ROTATING_ITEM_3D,\r\n ANIMATE_STEP_MAX,\r\n ANIMATE_STEP_MIN,\r\n ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT,\r\n TOP_MOLDING_LOCATION,\r\n MIDDLE_MOLDING_LOCATION,\r\n BOTTOM_MOLDING_LOCATION,\r\n BASE_CABINET_LAYOUTPOS,\r\n TALL_CABINET_LAYOUTPOS,\r\n WALL_CABINET_LAYOUTPOS,\r\n DECIMAL_PLACES_2,\r\n DIFFERENT_VALUES_PATH_LENGTH,\r\n MODE_IDLE_3D,\r\n ARRAY_3D_MODES,\r\n MODE_IDLE\r\n} from '../../constants';\r\nimport { IDBroker, GeometryUtils, MoldingUtils } from '../../utils/export';\r\nimport convert from 'convert-units';\r\nimport { verticesDistance } from '../../utils/geometry';\r\nimport * as GeomUtils from '../../../demo/src/catalog/utils/geom-utils';\r\nimport { loadTexture } from '../../../demo/src/catalog/utils/item-loader';\r\nimport { returnReplaceableDeepSearchType } from '../viewer2d/utils';\r\nimport {\r\n replaceMeshesWithLineSegments,\r\n isElevationView,\r\n isEmpty,\r\n animateDoor,\r\n translateDrawer\r\n} from '../../../src/utils/helper';\r\nimport { formatNumber } from '../../utils/math';\r\n\r\nlet transformBox;\r\nexport var fVLine = [];\r\nlet scene_mode = null;\r\n\r\nexport function parseData(sceneData, actions, catalog, camera, renderer, mode) {\r\n let planData = { catalog, sceneData };\r\n\r\n window.planData = planData;\r\n\r\n planData.sceneGraph = {\r\n unit: sceneData.unit,\r\n layers: {},\r\n busyResources: { layers: {} },\r\n width: sceneData.width,\r\n height: sceneData.height,\r\n LODs: {}\r\n };\r\n\r\n planData.plan = new Three.Object3D();\r\n planData.plan.name = 'plan';\r\n\r\n planData.cam = new Three.Object3D();\r\n planData.cam.name = 'cam';\r\n\r\n // Add a grid to the plan\r\n planData.grid = createGrid(sceneData);\r\n planData.grid.name = 'grid';\r\n\r\n planData.boundingBox = new Three.Box3().setFromObject(planData.grid);\r\n planData.boundingBox.name = 'boundingBox';\r\n\r\n let promises = [];\r\n\r\n sceneData.layers.forEach(layer => {\r\n if (layer.id === sceneData.selectedLayer || layer.visible) {\r\n promises = promises.concat(\r\n createLayerObjects(\r\n layer,\r\n planData,\r\n sceneData,\r\n actions,\r\n catalog,\r\n mode,\r\n camera,\r\n renderer\r\n )\r\n );\r\n }\r\n });\r\n\r\n var p1 = new Promise(resolve => {\r\n Promise.all(promises).then(value => {\r\n if (\r\n planData.plan.parent !== null &&\r\n planData.plan.children.length !== 0\r\n ) {\r\n updateBoundingBox(planData, false, mode);\r\n\r\n // if mode is elevation, build elevation scene\r\n if (isElevationView(mode)) buildElevationScene(planData, mode);\r\n }\r\n resolve('success');\r\n });\r\n });\r\n\r\n return { promise: p1, planData: planData };\r\n\r\n // return planData;\r\n}\r\n\r\nexport function visibleTransformBox(flag) {\r\n // if (transformBox instanceof Three.Mesh)\r\n // transformBox.visible = flag;\r\n}\r\n\r\nconst buildElevationScene = (planData, mode) => {\r\n let scene = planData.plan.parent;\r\n scene.updateMatrixWorld();\r\n const ELEV_GRP = 'ELEV_GRP';\r\n let oldElevationGroup = scene.getObjectByName(ELEV_GRP);\r\n if (oldElevationGroup) oldElevationGroup.parent.remove(oldElevationGroup);\r\n let elevationGroup = new Three.Group();\r\n scene.traverse(obj => {\r\n if (obj.name == 'MainObject') {\r\n let clone = obj.clone();\r\n clone.name = '';\r\n clone.visible = obj.parent.visible;\r\n clone.applyMatrix4(obj.parent.matrixWorld);\r\n elevationGroup.add(clone);\r\n }\r\n });\r\n elevationGroup.name = ELEV_GRP;\r\n elevationGroup.visible = false;\r\n\r\n planData.elevationGroup = elevationGroup;\r\n scene.traverse(obj => {\r\n if (obj.name == 'MainObject') {\r\n replaceMeshesWithLineSegments(obj);\r\n }\r\n });\r\n\r\n scene.add(elevationGroup);\r\n};\r\n\r\nfunction createLayerObjects(\r\n layer,\r\n planData,\r\n sceneData,\r\n actions,\r\n catalog,\r\n mode,\r\n camera,\r\n renderer\r\n) {\r\n let promises = [];\r\n\r\n let moldingGroups = MoldingUtils.getAllMoldingGroups(layer);\r\n\r\n planData.sceneGraph.layers[layer.id] = {\r\n id: layer.id,\r\n lines: {},\r\n holes: {},\r\n areas: {},\r\n items: {},\r\n countertops: [],\r\n moldingGroups: moldingGroups,\r\n backsplashes: [],\r\n\r\n visible: layer.visible,\r\n altitude: layer.altitude\r\n };\r\n\r\n planData.sceneGraph.busyResources.layers[layer.id] = {\r\n id: layer.id,\r\n lines: {},\r\n holes: {},\r\n areas: {},\r\n items: {},\r\n moldingGroups: {}\r\n };\r\n // Import lines\r\n layer.lines.forEach(line => {\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n line.id,\r\n catalog,\r\n actions.linesActions,\r\n mode\r\n )\r\n );\r\n line.holes.forEach(holeID => {\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n });\r\n });\r\n\r\n // Import areas\r\n layer.areas.forEach(area => {\r\n promises.push(\r\n addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n area.id,\r\n catalog,\r\n actions.areaActions,\r\n mode\r\n )\r\n );\r\n });\r\n // Import items\r\n layer.items.forEach(item => {\r\n promises.push(\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n item.id,\r\n catalog,\r\n actions.itemsActions,\r\n mode,\r\n null,\r\n null\r\n // false\r\n )\r\n );\r\n });\r\n\r\n return promises;\r\n}\r\n\r\nvar canvas = document.createElement('canvas');\r\ncanvas.width = 50;\r\ncanvas.height = 100;\r\ncanvas.style.width = 50 + 'px';\r\ncanvas.style.height = 100 + 'px';\r\nconst ctx = canvas.getContext('2d');\r\nctx.fillStyle = '#FFFFFF';\r\nctx.strokeStyle = '#ff7400';\r\nctx.beginPath();\r\nctx.arc(25, 25, 20, 0, 2 * Math.PI);\r\nctx.fill();\r\nctx.stroke();\r\nlet img1 = new Image();\r\nimg1.crossOrigin = 'anonymous';\r\nimg1.src = '/assets/img/svg/3d_item_warning_info.svg';\r\nimg1.onload = function () {\r\n ctx.drawImage(img1, 0, 0, 50, 50);\r\n};\r\n\r\nctx.lineWidth = 4;\r\nctx.beginPath();\r\nctx.arc(25, 75, 20, 0, 2 * Math.PI);\r\nctx.fill();\r\nctx.stroke();\r\nlet img2 = new Image();\r\nimg2.crossOrigin = 'anonymous';\r\nimg2.src = '/assets/img/svg/3d_item_warning_edit.svg';\r\nimg2.onload = function () {\r\n ctx.drawImage(img2, 8, 58, 34, 34);\r\n};\r\n\r\nexport function createWarningObject() {\r\n let warningTexture = new Three.Texture(canvas);\r\n warningTexture.needsUpdate = true;\r\n\r\n let warningObj = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: warningTexture, sizeAttenuation: true })\r\n );\r\n warningObj.material.transparent = true;\r\n warningObj.material.depthTest = false;\r\n warningObj.scale.set(20, 40, 20);\r\n warningObj.renderOrder = 3;\r\n warningObj.name = 'warningObj';\r\n\r\n return warningObj;\r\n}\r\n\r\nexport function updateScene(\r\n planData,\r\n sceneData,\r\n oldSceneData,\r\n diffArray,\r\n actions,\r\n catalog,\r\n mode = null,\r\n toolObj = null,\r\n angleObj = null,\r\n draggingItem = null\r\n) {\r\n var result = [];\r\n if (mode != null) {\r\n scene_mode = mode;\r\n }\r\n let splitted = diffArray.map(el => {\r\n return { op: el.op, path: el.path.split('/'), value: el.value };\r\n });\r\n let filteredDiffs = filterDiffs(splitted, sceneData, oldSceneData);\r\n //***testing additional filter***\r\n filteredDiffs = filteredDiffs.filter(({ path }) => path[3] !== 'selected');\r\n filteredDiffs = filteredDiffs.filter(({ path }) => path[1] !== 'groups');\r\n //*******************************\r\n //This is executed when dragging item is end and performs the updateing filteredDiffs.\r\n if (\r\n sceneData?.isEndDragging === true &&\r\n draggingItem &&\r\n !isEmpty(draggingItem.toJS?.()) &&\r\n filteredDiffs?.[0]?.path?.length < DIFFERENT_VALUES_PATH_LENGTH &&\r\n filteredDiffs?.[0]?.path?.includes('showfg')\r\n ) {\r\n const layerID = draggingItem.getIn?.(['layerID']);\r\n const itemID = draggingItem.getIn?.(['itemID']);\r\n\r\n if (layerID && itemID) {\r\n filteredDiffs[0].path = [\r\n '',\r\n 'layers',\r\n layerID,\r\n 'items',\r\n itemID,\r\n 'distArray'\r\n ];\r\n\r\n const selLayer = sceneData.getIn?.(['layers', layerID])?.toJS?.();\r\n const distArray = selLayer?.items?.[itemID]?.distArray;\r\n\r\n filteredDiffs[0].value = distArray;\r\n }\r\n }\r\n\r\n // Check to see if diffs includes changes associated with doorStyle and global molding simultaneously.\r\n let isSettingDoorStyle = false; // If it includes any doorStyle change\r\n let isUpdateMolding = false; // If it includes any global molding change\r\n filteredDiffs.forEach(({ path }) => {\r\n /**\r\n * Every 'doorStyle' change has a 'door_style_id' change.\r\n * So, if door_style_id changes, it indicates 'doorStyle' change.\r\n */\r\n if (['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;\r\n\r\n // If there are any molding change of layer\r\n if (path[1] === 'layers' && path[3] === 'molding') isUpdateMolding = true;\r\n });\r\n\r\n if (isSettingDoorStyle && isUpdateMolding)\r\n /**\r\n * If so, any other changes could be ignored.\r\n * Because the molding change of layer invokes 'createLayerObject()'\r\n * and that function re-renders an whole layer.\r\n */\r\n filteredDiffs = filteredDiffs.filter(({ path }) => {\r\n return path[1] === 'layers' && path[3] === 'molding';\r\n });\r\n\r\n filteredDiffs.forEach(({ op, path, value }) => {\r\n /* First of all I need to find the object I need to update */\r\n if (path[1] === 'layers') {\r\n let layer = sceneData.getIn(['layers', path[2]]);\r\n\r\n if (path.length === 3 && op === 'remove') {\r\n removeLayer(path[2], planData);\r\n } else if (path.length > 3) {\r\n if (path.length > 5)\r\n if (\r\n path[5] === 'submodule' ||\r\n path[5] === 'doorStyle' ||\r\n path[5] === 'properties'\r\n )\r\n op = 'replace';\r\n switch (op) {\r\n case 'replace':\r\n var promiseValue = replaceObject(\r\n path,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode,\r\n value\r\n );\r\n if (promiseValue !== undefined) {\r\n result.push(promiseValue.promise);\r\n }\r\n break;\r\n case 'add':\r\n addObject(\r\n path,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode,\r\n toolObj\r\n );\r\n break;\r\n case 'remove':\r\n if (angleObj) planData.plan.parent.remove(angleObj);\r\n if (toolObj) planData.plan.parent.remove(toolObj);\r\n deleteSpecifiedMeshObjects('WarningBox' + path[4]);\r\n deleteSpecifiedMeshObjects('backsplash' + path[4]);\r\n let item = oldSceneData\r\n .getIn(['layers', path[2]])\r\n .getIn(['items', path[4]]);\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n removeObject(\r\n path,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog\r\n );\r\n break;\r\n }\r\n }\r\n } else if (path[1] === 'selectedLayer') {\r\n let layerSelectedID = value;\r\n let layerSelected = sceneData.getIn(['layers', layerSelectedID]);\r\n // First of all I check if the new selected layer is not visible\r\n if (!layerSelected.visible) {\r\n // I need to create the objects for this layer\r\n let promises = createLayerObjects(\r\n layerSelected,\r\n planData,\r\n sceneData,\r\n actions,\r\n catalog,\r\n mode\r\n );\r\n Promise.all(promises).then(() =>\r\n updateBoundingBox(planData, false, mode)\r\n );\r\n }\r\n\r\n let layerGraph = planData.sceneGraph.layers[oldSceneData.selectedLayer];\r\n\r\n if (layerGraph) {\r\n if (!layerGraph.visible) {\r\n // I need to remove the objects for this layer\r\n for (let lineID in layerGraph.lines)\r\n removeLine(planData, layerGraph.id, lineID);\r\n for (let areaID in layerGraph.areas)\r\n removeArea(planData, layerGraph.id, areaID);\r\n for (let itemID in layerGraph.items)\r\n removeItem(planData, layerGraph.id, itemID);\r\n for (let holeID in layerGraph.holes)\r\n removeHole(planData, layerGraph.id, holeID);\r\n }\r\n }\r\n }\r\n });\r\n var p1 = new Promise(resolve => {\r\n Promise.all(result).then(replaceValue => {\r\n // if mode is elevation, build elevation scene\r\n // When scene is updated, replaceValue is not empty.\r\n if (isElevationView(mode) && !isEmpty(replaceValue))\r\n buildElevationScene(planData, mode);\r\n resolve('successPromise');\r\n });\r\n });\r\n\r\n return { promise: p1, planData };\r\n}\r\n\r\nlet animate_objects = {};\r\n\r\nfunction myAnimRotate(obj, open_doors, item, isCorner) {\r\n let animateStep = animate_objects[obj.name].animateStep;\r\n\r\n // if open the door, animateStep increases to ANIMATE_STEP_MAX and if close the door, animateStep decreases to ANIMATE_STEP_MIN\r\n animateStep = open_doors ? animateStep + 1 : animateStep - 1;\r\n\r\n // clear interval when the opening or closing door is ended.\r\n if (animateStep > ANIMATE_STEP_MAX || animateStep < ANIMATE_STEP_MIN) {\r\n clearInterval(animate_objects[obj.name].animate_intervalID);\r\n return;\r\n }\r\n animate_objects[obj.name].animateStep = animateStep;\r\n\r\n animateDoor(\r\n animate_objects[obj.name].offset,\r\n obj,\r\n open_doors,\r\n item,\r\n isCorner,\r\n 'Opened3D'\r\n );\r\n}\r\n\r\nfunction myAnimTranslate(obj, open_doors, item) {\r\n let animateStep = animate_objects[obj.name].animateStep;\r\n animateStep = open_doors ? animateStep + 1 : animateStep - 1;\r\n\r\n if (animateStep > ANIMATE_STEP_MAX || animateStep < ANIMATE_STEP_MIN) {\r\n clearInterval(animate_objects[obj.name].animate_intervalID);\r\n return;\r\n }\r\n\r\n animate_objects[obj.name].animateStep = animateStep;\r\n\r\n translateDrawer(item, obj, open_doors, 'Opened3D');\r\n}\r\n\r\nfunction replaceObject(\r\n modifiedPath,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode = null,\r\n value = null\r\n) {\r\n let promises = [];\r\n const matchStr = /\\d_(door[^LR1-9]*)(_[LR])?(_[1-9])?$/;\r\n switch (modifiedPath[3]) {\r\n case 'vertices':\r\n if (modifiedPath[5] !== 'selected') {\r\n let vertex = layer.getIn(['vertices', modifiedPath[4]]);\r\n\r\n if (modifiedPath[5] === 'x' || modifiedPath[5] === 'y') {\r\n vertex.lines.forEach(lineID => {\r\n let lineHoles = oldSceneData.getIn([\r\n 'layers',\r\n layer.id,\r\n 'lines',\r\n lineID,\r\n 'holes'\r\n ]);\r\n if (lineHoles)\r\n lineHoles.forEach(holeID => {\r\n replaceObject(\r\n [0, 0, 0, 'holes', holeID, 'selected'],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n );\r\n });\r\n return replaceObject(\r\n [0, 0, 0, 'lines', lineID],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n );\r\n });\r\n vertex.areas.forEach(areaID =>\r\n replaceObject(\r\n [0, 0, 0, 'areas', areaID],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n )\r\n );\r\n }\r\n\r\n if (modifiedPath[5] === 'areas') {\r\n let areaID = vertex.getIn(['areas', ~~modifiedPath[6]]);\r\n replaceObject(\r\n [0, 0, 0, 'areas', areaID],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n );\r\n }\r\n }\r\n break;\r\n case 'holes':\r\n let newHoleData = layer.getIn(['holes', modifiedPath[4]]);\r\n\r\n if (catalog.getElement(newHoleData.type).updateRender3D) {\r\n promises.push(\r\n updateHole(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.holesActions,\r\n () => removeHole(planData, layer.id, newHoleData.id),\r\n () =>\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n newHoleData.id,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n )\r\n );\r\n } else {\r\n let lineID = newHoleData.line;\r\n if (\r\n modifiedPath[5] === 'selected' ||\r\n scene_mode === 'MODE_DRAWING_HOLE_3D' ||\r\n scene_mode === 'MODE_DRAGGING_HOLE_3D'\r\n ) {\r\n // I remove only the hole without removing the wall\r\n removeHole(planData, layer.id, newHoleData.id);\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n newHoleData.id,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n } else {\r\n layer.getIn(['lines', lineID, 'holes']).forEach(holeID => {\r\n removeHole(planData, layer.id, holeID);\r\n });\r\n removeLine(planData, layer.id, lineID);\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n actions.linesActions\r\n )\r\n );\r\n layer.getIn(['lines', lineID, 'holes']).forEach(holeID => {\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n });\r\n }\r\n }\r\n break;\r\n case 'lines':\r\n let line = layer.getIn(['lines', modifiedPath[4]]);\r\n\r\n if (catalog.getElement(line.type).updateRender3D) {\r\n promises.push(\r\n updateLine(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.linesActions,\r\n () => removeLine(planData, layer.id, modifiedPath[4]),\r\n () =>\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.linesActions\r\n )\r\n )\r\n );\r\n } else {\r\n removeLine(planData, layer.id, modifiedPath[4]);\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.linesActions\r\n )\r\n );\r\n }\r\n break;\r\n case 'areas':\r\n let area = layer.getIn(['areas', modifiedPath[4]]);\r\n\r\n if (catalog.getElement(area.type).updateRender3D) {\r\n promises.push(\r\n updateArea(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.areaActions,\r\n () => removeArea(planData, layer.id, modifiedPath[4]),\r\n () =>\r\n addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.areaActions\r\n )\r\n )\r\n );\r\n } else {\r\n if (planData.sceneGraph.layers[layer.id].areas[modifiedPath[4]]) {\r\n removeArea(planData, layer.id, modifiedPath[4]);\r\n }\r\n promises.push(\r\n addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.areaActions\r\n )\r\n );\r\n }\r\n break;\r\n case 'items':\r\n let item = layer.getIn(['items', modifiedPath[4]]);\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n let tmpMoldings = [...planData.sceneGraph.layers[layer.id].moldingGroups];\r\n if (catalog.getElement(item.type).updateRender3D) {\r\n promises.push(\r\n updateItem(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.itemsActions,\r\n () =>\r\n removeItem(\r\n planData,\r\n layer.id,\r\n modifiedPath[4],\r\n oldSceneData.getIn(['layers', layer.id]),\r\n layer\r\n ),\r\n () =>\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.itemsActions,\r\n mode\r\n )\r\n )\r\n );\r\n } else {\r\n let item3D = null;\r\n try {\r\n item3D = planData.sceneGraph.layers[layer.id].items[modifiedPath[4]];\r\n } catch (err) {\r\n console.log('modifiedPath: ', modifiedPath, '\\nError: ', err);\r\n return;\r\n }\r\n\r\n if (!item3D) return;\r\n let keyIndex = modifiedPath.length - 1;\r\n if (modifiedPath[keyIndex] == 'rotation') {\r\n item3D.rotation.set(0, (value * Math.PI) / 180 + Math.PI, 0);\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 50);\r\n removeSelItemMesh(tmpMoldings, item, planData, mode);\r\n } else if (modifiedPath[keyIndex] == 'x') {\r\n item3D.position.x = value;\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 50);\r\n removeSelItemMesh(tmpMoldings, item, planData, mode);\r\n } else if (modifiedPath[keyIndex] == 'y') {\r\n item3D.position.z = -value;\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 50);\r\n removeSelItemMesh(tmpMoldings, item, planData, mode);\r\n } else if (modifiedPath[keyIndex] == 'selected') {\r\n const itemType = !!catalog.elements[item.type]\r\n ? catalog.elements[item.type].type\r\n : catalog.elements[returnReplaceableDeepSearchType(item.type)].type;\r\n\r\n if (value == false) {\r\n item3D.children[0].children = item3D.children[0].children.filter(\r\n item3DElement =>\r\n item3DElement.name !== 'TransformBox' &&\r\n item3DElement.name !== 'TransformGizmo'\r\n );\r\n if (item3D) {\r\n if (item3D.children.length > 1) {\r\n item3D.children.pop();\r\n }\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n let mBox = GeomUtils.makeMBoxfromObject(item3D, mBoxColor);\r\n let warningObj = createWarningObject();\r\n warningObj.position.set(\r\n 0,\r\n item.properties.get('height').get('length') / 3,\r\n 0\r\n );\r\n if (mBox) {\r\n mBox.add(warningObj);\r\n item3D.add(mBox);\r\n }\r\n }\r\n }\r\n }\r\n let temp_MGArray =\r\n planData.sceneGraph.layers[layer.id].moldingGroups;\r\n } else {\r\n if (\r\n item3D.name !== 'pivot' &&\r\n item3D.children[0].children[\r\n item3D.children[0].children.length - 1\r\n ].name == 'TransformGizmo'\r\n )\r\n return;\r\n if (\r\n item3D.children[0].children[\r\n item3D.children[0].children.length - 1\r\n ].name == 'TransformGizmo'\r\n ) {\r\n item3D.children[0].children.pop();\r\n }\r\n let object = item3D.children[0].clone();\r\n if (item3D.children.length > 1) {\r\n item3D.children.pop();\r\n }\r\n item3D.children.pop();\r\n let altitude = item.properties.get('altitude').get('length');\r\n let scalevec = new Three.Vector3(\r\n object.scale.x,\r\n object.scale.y,\r\n object.scale.z\r\n );\r\n let posVec = new Three.Vector3(\r\n object.position.x,\r\n object.position.y,\r\n object.position.z\r\n );\r\n let newAltitude = item.properties.get('altitude').get('_length');\r\n let newUnit = item.properties.get('altitude').get('_unit') || 'in';\r\n newAltitude = convert(newAltitude).from(newUnit).to(sceneData.unit);\r\n\r\n let newWidth = item.properties.get('width').get('_length');\r\n let newWidthUnit =\r\n item.properties.get('width').get('_unit') || 'in';\r\n newWidth = convert(newWidth).from(newWidthUnit).to('in');\r\n\r\n let newHeight = item.properties.get('height').get('_length');\r\n let newHeightUnit =\r\n item.properties.get('height').get('_unit') || 'in';\r\n newHeight = convert(newHeight).from(newHeightUnit).to('in');\r\n\r\n let newDepth = item.properties.get('depth').get('_length');\r\n let newDepthUnit =\r\n item.properties.get('depth').get('_unit') || 'in';\r\n newDepth = convert(newDepth).from(newDepthUnit).to('in');\r\n let sizeinfo = !!catalog.elements[item.type]\r\n ? catalog.elements[item.type].info.sizeinfo\r\n : catalog.elements[returnReplaceableDeepSearchType(item.type)]\r\n .info.sizeinfo;\r\n object.scale.set(\r\n (1 * newWidth) / sizeinfo.width,\r\n (1 * newHeight) / sizeinfo.height,\r\n (1 * newDepth) / sizeinfo.depth\r\n );\r\n object.position.set(0, 0, 0);\r\n object.rotation.set(0, 0, 0);\r\n\r\n let box = GeomUtils.baseBoxHelper(object, 0xffffff);\r\n box.material.lineWidth = 0.01;\r\n let boundingBox = GeomUtils.baseBox3FromObject(object);\r\n let max = boundingBox.max;\r\n let min = boundingBox.min;\r\n let radius =\r\n Math.sqrt(\r\n (boundingBox.max.x - boundingBox.min.x) *\r\n (boundingBox.max.x - boundingBox.min.x) +\r\n (boundingBox.max.z - boundingBox.min.z) *\r\n (boundingBox.max.z - boundingBox.min.z)\r\n ) / 2;\r\n let moveBox = new Three.BoxGeometry(\r\n max.x - min.x,\r\n max.y - min.y,\r\n max.z - min.z\r\n );\r\n\r\n // translate Object\r\n let controlGeom = GeomUtils.controlGeom();\r\n\r\n // rotate Object //////////\r\n let rotGeom = GeomUtils.rotGeoms(radius + 0.05);\r\n // //////////////////////////////////\r\n // upwards Geometry///////////\r\n let upwardsGeom = GeomUtils.upwardsGeom();\r\n\r\n let vLineGeom = new Three.BufferGeometry();\r\n let vertices = [\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n max.z,\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n max.z + 1.3\r\n ];\r\n vLineGeom.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices), 3)\r\n );\r\n vLineGeom.attributes.position.needsUpdate = true;\r\n\r\n let vLineGeom1 = new Three.BufferGeometry();\r\n let vertices1 = [\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n min.z,\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n min.z - 1.3\r\n ];\r\n vLineGeom1.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices1), 3)\r\n );\r\n vLineGeom1.attributes.position.needsUpdate = true;\r\n\r\n let vLineGeom2 = new Three.BufferGeometry();\r\n let vertices2 = [\r\n max.x,\r\n 0,\r\n max.z - (max.z - min.z) / 2,\r\n max.x + 1.3,\r\n 0,\r\n max.z - (max.z - min.z) / 2\r\n ];\r\n vLineGeom2.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices2), 3)\r\n );\r\n\r\n let vLineGeom3 = new Three.BufferGeometry();\r\n\r\n let vertices3 = [\r\n min.x,\r\n 0,\r\n max.z - (max.z - min.z) / 2,\r\n min.x - 1.3,\r\n 0,\r\n max.z - (max.z - min.z) / 2\r\n ];\r\n vLineGeom3.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices3), 3)\r\n );\r\n // ///////////////////////////////////////\r\n\r\n // set names of transform object\r\n let rotFillObj = new Three.Mesh(\r\n rotGeom.rotFill,\r\n new Three.MeshPhongMaterial({\r\n color: 0x000000,\r\n side: Three.DoubleSide,\r\n colorWrite: true\r\n })\r\n );\r\n let rotStrokeObj = new Three.Line(\r\n rotGeom.rotStroke,\r\n new Three.LineBasicMaterial({ color: 0xffffff, colorWrite: true })\r\n );\r\n rotFillObj.name = 'rotate';\r\n let upObj = new Three.Mesh(\r\n upwardsGeom,\r\n new Three.MeshBasicMaterial({\r\n color: 0x000000,\r\n side: Three.DoubleSide\r\n })\r\n );\r\n // let upLine = new Three.Line(upwardsGeom, new Three.LineBasicMaterial({ color: 0x000000 }));\r\n // upLine.name = \"transUp\";\r\n // upObj.add(upLine);\r\n upObj.name = 'transUp';\r\n let upwardbox = new Three.BoxHelper(upObj, 0x326780);\r\n upwardbox.material.lineWidth = 0.01;\r\n fVLine = [];\r\n // let obj = new Three.Mesh(controlGeom, new Three.MeshPhongMaterial({ color: 0xffffff, side: Three.DoubleSide, colorWrite: true }));\r\n // obj.name = \"translateX\";\r\n let color = SHADE_DARK_PURPLE_COLOR;\r\n let mBox = new Three.Mesh(\r\n moveBox,\r\n new Three.MeshBasicMaterial({\r\n color: 0xdd6699,\r\n side: Three.DoubleSide,\r\n transparent: true,\r\n opacity: 0.4\r\n })\r\n );\r\n let vLine = new Three.Line(\r\n vLineGeom,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n let vLine1 = new Three.Line(\r\n vLineGeom1,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n let vLine2 = new Three.Line(\r\n vLineGeom2,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n let vLine3 = new Three.Line(\r\n vLineGeom3,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n fVLine.push(vLine);\r\n fVLine.push(vLine1);\r\n fVLine.push(vLine2);\r\n fVLine.push(vLine3);\r\n vLine.renderOrder = 1;\r\n vLine1.renderOrder = 1;\r\n vLine2.renderOrder = 1;\r\n vLine3.renderOrder = 1;\r\n vLine.material.transparent = true;\r\n vLine1.material.transparent = true;\r\n vLine2.material.transparent = true;\r\n vLine3.material.transparent = true;\r\n vLine.material.depthTest = false;\r\n vLine1.material.depthTest = false;\r\n vLine2.material.depthTest = false;\r\n vLine3.material.depthTest = false;\r\n let uVec = new Three.Vector3(\r\n -posVec.x / scalevec.x,\r\n -posVec.y / scalevec.y,\r\n -posVec.z / scalevec.z\r\n );\r\n let blLighting = item.type.includes('Light');\r\n vLine.translateY(blLighting ? 1.6 : 0.1);\r\n vLine1.translateY(blLighting ? 1.6 : 0.1);\r\n vLine2.translateY(blLighting ? 1.6 : 0.1);\r\n vLine3.translateY(blLighting ? 1.6 : 0.1);\r\n upObj.translateOnAxis(uVec, 1);\r\n upObj.translateY(max.y - min.y);\r\n mBox.name = 'TransformBox';\r\n mBox.translateOnAxis(\r\n new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z),\r\n 1\r\n );\r\n mBox.scale.set(1.01, 1.01, 1.01);\r\n let rotFillObj1 = rotFillObj.clone();\r\n let rotStrokeObj1 = rotStrokeObj.clone();\r\n rotFillObj1.rotateY(Math.PI);\r\n rotStrokeObj1.rotateY(Math.PI);\r\n let asrtObj = new Three.Group();\r\n // let asrtObj1 = new Three.Group();\r\n // asrtObj.add(obj);\r\n // asrtObj.add(obj1);\r\n rotFillObj.translateY(blLighting ? 1.6 : 0.1);\r\n rotFillObj1.translateY(blLighting ? 1.6 : 0.1);\r\n rotStrokeObj.translateY(blLighting ? 1.6 : 0.1);\r\n rotStrokeObj1.translateY(blLighting ? 1.6 : 0.1);\r\n upObj.translateY(posVec.y / scalevec.y);\r\n upObj.add(upwardbox);\r\n //asrtObj.add(upObj);\r\n // vLine.translateY(posVec.y / scalevec.y);\r\n // vLine1.translateY(posVec.y / scalevec.y);\r\n // vLine2.translateY(posVec.y / scalevec.y);\r\n // vLine3.translateY(posVec.y / scalevec.y);\r\n\r\n mBox.translateY(posVec.y / scalevec.y);\r\n // asrtObj.add(rotFillObj);\r\n // asrtObj.add(rotFillObj1);\r\n // asrtObj.add(rotStrokeObj);\r\n // asrtObj.add(rotStrokeObj1);\r\n asrtObj.add(vLine);\r\n asrtObj.add(vLine1);\r\n asrtObj.add(vLine2);\r\n asrtObj.add(vLine3);\r\n asrtObj.add(box);\r\n asrtObj.scale.set(\r\n 1 / object.scale.x,\r\n object.scale.y,\r\n 1 / object.scale.z\r\n );\r\n mBox.visible = false;\r\n // transformBox = mBox;\r\n // asrtObj.add(mBox);\r\n asrtObj.name = 'TransformGizmo';\r\n object.add(asrtObj);\r\n object.position.x = posVec.x;\r\n object.position.y = posVec.y;\r\n object.position.z = posVec.z;\r\n // object.rotation.y = Math.PI;\r\n object.scale.set(scalevec.x, scalevec.y, scalevec.z);\r\n item3D.add(object);\r\n if (item3D) {\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n let mBox = GeomUtils.makeMBoxfromObject(item3D, mBoxColor);\r\n let warningObj = createWarningObject();\r\n warningObj.position.set(\r\n 0,\r\n item.properties.get('height').get('length') / 3,\r\n 0\r\n );\r\n if (mBox) {\r\n mBox.add(warningObj);\r\n item3D.add(mBox);\r\n }\r\n }\r\n }\r\n }\r\n applyInteract(item3D, () => {\r\n // closes the setting dialog\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return actions.itemsActions.selectItem(layer.id, modifiedPath[4]);\r\n });\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 100);\r\n }\r\n } else if (modifiedPath[keyIndex] == 'length') {\r\n let object = item3D.children[0];\r\n let prevPos = object.position;\r\n object.position.set(prevPos.x, value, prevPos.z);\r\n } else if (modifiedPath[keyIndex] == 'flip_doorhandle') {\r\n updateDoorHandleMesh(item, item3D, value);\r\n const object = item3D.children[0];\r\n let door_animate_offset = object.userData.door_animate_offset;\r\n for (let it in door_animate_offset) {\r\n if (object.children.filter(elem => elem.name === it).length) {\r\n let door_match = it.match(matchStr);\r\n let rotate_match_text = item.properties.toJS().flip_doorhandle\r\n ? 'rotate_L'\r\n : 'rotate_R';\r\n if (door_match[2] === '_L') {\r\n rotate_match_text = item.properties.toJS().flip_doorhandle\r\n ? 'rotate_R'\r\n : 'rotate_L';\r\n }\r\n object.children\r\n .filter(elem => elem.name === it)[0]\r\n .children[0].children.forEach(child => {\r\n if (child.name.endsWith(rotate_match_text)) {\r\n door_animate_offset[it] = {\r\n x: child.position.x,\r\n y: child.position.y,\r\n z: child.position.z\r\n };\r\n }\r\n });\r\n }\r\n }\r\n object.userData.door_animate_offset = door_animate_offset;\r\n } else if (modifiedPath[keyIndex] == 'animValue') {\r\n return;\r\n } else if (modifiedPath[keyIndex] == 'open_doors') {\r\n const object = item3D.children[0];\r\n const userData = item3D.children[0].userData;\r\n let moveObjectChildrens = [];\r\n const selectedItem = layer\r\n .getIn(['items', layer.selected.toJS().items[0]])\r\n .toJS();\r\n object.children.forEach((child, idx) => {\r\n let object_match =\r\n child.name.match(/\\d_(interior_drawer[^LR1-9]*)(_[LR1-9])?$/) ||\r\n child.name.match(matchStr);\r\n if (object_match && object_match.length > 2) {\r\n moveObjectChildrens.push({\r\n type: object_match[1],\r\n obj: child\r\n });\r\n animate_objects[child.name] = animate_objects[child.name] || {};\r\n }\r\n });\r\n\r\n let temp = moveObjectChildrens.filter(item => {\r\n return object.userData.door_animate_offset[item.obj.name]?.isCorner;\r\n });\r\n let isCorner = temp.length > 0;\r\n moveObjectChildrens.forEach(element => {\r\n if (animate_objects[element.obj.name]?.animateStep === undefined) {\r\n animate_objects[element.obj.name].animateStep = selectedItem\r\n .properties.open_doors\r\n ? ANIMATE_STEP_MIN\r\n : ANIMATE_STEP_MAX;\r\n }\r\n\r\n // clear origin Interval.\r\n if (animate_objects[element.obj.name]?.animate_intervalID) {\r\n clearInterval(\r\n animate_objects[element.obj.name]?.animate_intervalID\r\n );\r\n }\r\n\r\n if (element.type === 'door') {\r\n // This is excuted when item has door.\r\n const offset =\r\n userData?.door_animate_offset?.[element?.obj?.name];\r\n\r\n if (offset) {\r\n animate_objects[element.obj.name].offset = {\r\n x: offset.x ?? 0,\r\n y: offset.y ?? 0,\r\n z: offset.z ?? 0\r\n };\r\n } else {\r\n console.warn(\r\n '⚠ Missing door_animate_offset for',\r\n element?.obj?.name\r\n );\r\n animate_objects[element.obj.name].offset = { x: 0, y: 0, z: 0 };\r\n }\r\n\r\n // Set the interval ID to new interval ID\r\n animate_objects[element.obj.name].animate_intervalID =\r\n setInterval(() => {\r\n myAnimRotate(\r\n element.obj,\r\n selectedItem.properties.open_doors,\r\n selectedItem,\r\n isCorner\r\n );\r\n }, 30);\r\n } else {\r\n // This is excuted when item has drawer box\r\n // Set the interval ID to new interval ID\r\n animate_objects[element.obj.name].animate_intervalID =\r\n setInterval(() => {\r\n myAnimTranslate(\r\n element.obj,\r\n selectedItem.properties.open_doors,\r\n selectedItem\r\n );\r\n }, 30);\r\n }\r\n });\r\n } else if (\r\n [\r\n '_length',\r\n 'doorStyle',\r\n 'cabinet_door_style_id',\r\n 'counterTop',\r\n 'texture',\r\n 'drawer_door_handle_1_gltf'\r\n ].includes(modifiedPath[keyIndex])\r\n ) {\r\n let rItem =\r\n planData.sceneGraph.layers[layer.id].items[modifiedPath[4]];\r\n if (rItem) {\r\n if (rItem.children.length > 1) {\r\n rItem.children.pop();\r\n }\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n }\r\n }\r\n rItem.children[0].children.forEach(rItemElement => {\r\n rItemElement.visible = false;\r\n });\r\n let mBox = GeomUtils.makeMBoxfromObject(rItem, mBoxColor);\r\n if (mBox) {\r\n //rItem.add (mBox);\r\n }\r\n }\r\n if (rItem != null) {\r\n removeItemWithoutItem(planData, layer.id, modifiedPath[4]);\r\n promises.push(\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.itemsActions,\r\n mode,\r\n null,\r\n rItem\r\n )\r\n );\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 100);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n item = layer.getIn(['items', modifiedPath[4]]);\r\n addCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n // Toggle selection should not update molding\r\n if (\r\n item.category === 'cabinet' &&\r\n modifiedPath[modifiedPath.length - 1] !== 'selected'\r\n ) {\r\n planData.sceneGraph.layers[layer.id].moldingGroups = addMolding(\r\n tmpMoldings,\r\n item,\r\n planData,\r\n layer,\r\n actions.itemsActions,\r\n mode\r\n ) || [...tmpMoldings];\r\n }\r\n break;\r\n\r\n case 'visible':\r\n if (!layer.visible) {\r\n let layerGraph = planData.sceneGraph.layers[layer.id];\r\n\r\n for (let lineID in layerGraph.lines)\r\n removeLine(planData, layer.id, lineID);\r\n for (let areaID in layerGraph.areas)\r\n removeArea(planData, layer.id, areaID);\r\n for (let itemID in layerGraph.items)\r\n removeItem(planData, layer.id, itemID);\r\n for (let holeID in layerGraph.holes)\r\n removeHole(planData, layer.id, holeID);\r\n } else {\r\n promises = promises.concat(\r\n createLayerObjects(layer, planData, sceneData, actions, catalog, mode)\r\n );\r\n }\r\n\r\n break;\r\n\r\n case 'unit':\r\n case 'ceilHeight':\r\n case 'opacity':\r\n case 'altitude':\r\n case 'molding':\r\n let layerGraph = planData.sceneGraph.layers[layer.id];\r\n for (let lineID in layerGraph.lines)\r\n removeLine(planData, layer.id, lineID);\r\n for (let areaID in layerGraph.areas)\r\n removeArea(planData, layer.id, areaID);\r\n for (let itemID in layerGraph.items)\r\n removeItem(planData, layer.id, itemID);\r\n for (let holeID in layerGraph.holes)\r\n removeHole(planData, layer.id, holeID);\r\n\r\n promises = promises.concat(\r\n createLayerObjects(layer, planData, sceneData, actions, catalog, mode)\r\n );\r\n }\r\n var p1 = new Promise(resolve => {\r\n Promise.all(promises).then(values => {\r\n updateBoundingBox(planData, true, mode);\r\n resolve('replaceObject');\r\n });\r\n });\r\n return { promise: p1 };\r\n}\r\n\r\nexport function getDistances(layer, isCalcWall) {\r\n fVLine.forEach((line, index) => {\r\n getLineDistance(\r\n line,\r\n layer,\r\n isCalcWall === undefined ? false : isCalcWall,\r\n index\r\n );\r\n });\r\n}\r\n\r\nfunction getLineDistance(obj, layer, isCalcWall, index) {\r\n if (obj === undefined) return;\r\n const positionAttribute = obj.geometry.attributes.position;\r\n if (positionAttribute === undefined) return;\r\n let wPoint0 = new Three.Vector3()\r\n .fromBufferAttribute(positionAttribute, 0)\r\n .applyMatrix4(obj.matrixWorld);\r\n let wPoint1 = new Three.Vector3()\r\n .fromBufferAttribute(positionAttribute, 1)\r\n .applyMatrix4(obj.matrixWorld);\r\n let raycaster = new Three.Raycaster(\r\n wPoint0,\r\n new Three.Vector3(\r\n wPoint1.x - wPoint0.x,\r\n wPoint1.y - wPoint0.y,\r\n wPoint1.z - wPoint0.z\r\n )\r\n );\r\n let rayDirection = raycaster.ray.direction;\r\n raycaster.camera = new Three.Camera();\r\n rayDirection.normalize();\r\n const meshes = [];\r\n planData.plan.traverse(child => {\r\n if (child.isMesh && child.geometry) {\r\n meshes.push(child);\r\n }\r\n });\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n\r\n let lx = wPoint0.x - wPoint1.x;\r\n let ly = wPoint0.y - wPoint1.y;\r\n let lz = wPoint0.z - wPoint1.z;\r\n let length = Math.sqrt(lx * lx + ly * ly + lz * lz);\r\n let scale = 1;\r\n\r\n var extrudeSettings = {\r\n steps: 2,\r\n depth: 0.01,\r\n bevelEnabled: false\r\n };\r\n var w = 0.2;\r\n var h = w * (Math.sqrt(3) / 2);\r\n var shape = new Three.Shape();\r\n shape.moveTo(0, 0);\r\n shape.lineTo(-w / 4, h / 2);\r\n shape.lineTo(w / 4, h / 2);\r\n var geom = new Three.ExtrudeGeometry(shape, extrudeSettings);\r\n geom.center();\r\n\r\n if (!isCalcWall) {\r\n for (let i = 0; i < intersects.length; i++) {\r\n if (\r\n intersects[i].object.name != 'TransformBox' &&\r\n !intersects[i].object.name.includes('WarningBox') &&\r\n intersects[i].object.type != 'Line' &&\r\n intersects[i].object.name != 'rotate' &&\r\n intersects[i].object.name != 'lineText' &&\r\n intersects[i].object.type != 'BoxHelper' &&\r\n !intersects[i].object.name.includes('molding') &&\r\n intersects[i].object.name != 'soul'\r\n ) {\r\n scale = intersects[i].distance / length;\r\n if (intersects[i].distance <= 0.1) {\r\n scale = 0.1 / length;\r\n }\r\n obj.userData.distance = intersects[i].distance;\r\n obj.userData.target = intersects[i].object;\r\n let originPoint = obj.geometry.attributes.position.array.slice(0, 3);\r\n let lx =\r\n obj.geometry.attributes.position.array[3] -\r\n obj.geometry.attributes.position.array[0];\r\n let ly =\r\n obj.geometry.attributes.position.array[4] -\r\n obj.geometry.attributes.position.array[1];\r\n let lz =\r\n obj.geometry.attributes.position.array[5] -\r\n obj.geometry.attributes.position.array[2];\r\n let newVec = new Three.Vector3(\r\n originPoint[0] + lx * scale,\r\n originPoint[1] + ly * scale,\r\n originPoint[2] + lz * scale\r\n );\r\n\r\n obj.geometry.attributes.position.array[3] = newVec.x;\r\n obj.geometry.attributes.position.array[4] = newVec.y;\r\n obj.geometry.attributes.position.array[5] = newVec.z;\r\n obj.geometry.attributes.position.needsUpdate = true;\r\n obj.geometry.computeBoundingSphere();\r\n obj.geometry.computeBoundingBox();\r\n\r\n let dist = formatNumber(\r\n convert(intersects[i].distance).from('cm').to('in'),\r\n DECIMAL_PLACES_2\r\n );\r\n if (dist > 3) {\r\n let canvas = getTextCanvas(dist);\r\n let wid = (canvas.width / window.innerWidth) * 30;\r\n let hei = (canvas.height / window.innerHeight) * 30;\r\n let texture = new Three.Texture(canvas);\r\n texture.minFilter = Three.LinearFilter;\r\n texture.needsUpdate = true;\r\n let geometry = new Three.PlaneGeometry(wid / 5, hei / 5);\r\n geometry.computeBoundingBox();\r\n const material = new Three.MeshBasicMaterial({\r\n map: texture,\r\n side: Three.DoubleSide\r\n });\r\n let textMesh = new Three.Mesh(geometry, material);\r\n for (; obj.children.length != 0; ) {\r\n let temp = obj.children.pop();\r\n disposeObject(temp);\r\n }\r\n textMesh.rotation.set(Math.PI / 2, Math.PI, 0);\r\n // obj.add(textMesh);\r\n textMesh.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n textMesh.name = 'lineText';\r\n textMesh.renderOrder = 2;\r\n textMesh.material.depthTest = false;\r\n textMesh.material.transparent = true;\r\n\r\n let sprite1 = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: texture })\r\n );\r\n sprite1.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n sprite1.name = 'lineText';\r\n sprite1.renderOrder = 2;\r\n sprite1.scale.set(0.2, 0.1, 0.2);\r\n sprite1.layers.set(1);\r\n obj.add(sprite1);\r\n\r\n if (obj.parent != null) {\r\n // is not lighting\r\n let item3D = obj.parent.parent.parent;\r\n let max = item3D.children[0].userData.max;\r\n let min = item3D.children[0].userData.min;\r\n let objW = (max.x - min.x) / 100,\r\n objL = (max.z - min.z) / 100;\r\n var triangle = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n var triangle1 = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n triangle.position.set(\r\n (index < 2\r\n ? 0\r\n : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n (obj.geometry.attributes.position.array[0] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objW)),\r\n newVec.y,\r\n (index < 2 ? Math.cos(index * Math.PI) : 0) *\r\n (obj.geometry.attributes.position.array[2] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objL))\r\n );\r\n triangle1.position.set(\r\n newVec.x -\r\n ((index < 2\r\n ? 0\r\n : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n h) /\r\n 4,\r\n newVec.y,\r\n newVec.z - ((index < 2 ? Math.cos(index * Math.PI) : 0) * h) / 4\r\n );\r\n if (index < 2) {\r\n triangle.rotation.x = (Math.cos(index * Math.PI) * Math.PI) / 2;\r\n triangle1.rotation.x = (-Math.cos(index * Math.PI) * Math.PI) / 2;\r\n } else {\r\n triangle.rotation.x = -Math.PI / 2;\r\n triangle.rotation.z = (-(index === 2 ? 1 : -1) * Math.PI) / 2;\r\n triangle1.rotation.x = Math.PI / 2;\r\n triangle1.rotation.z = ((index === 2 ? 1 : -1) * Math.PI) / 2;\r\n }\r\n triangle.name = 'lineText';\r\n triangle1.name = 'lineText';\r\n triangle.renderOrder = 2;\r\n triangle1.renderOrder = 2;\r\n triangle.material.transparent = true;\r\n triangle1.material.transparent = true;\r\n triangle.material.depthTest = false;\r\n triangle1.material.depthTest = false;\r\n obj.add(triangle);\r\n obj.add(triangle1);\r\n }\r\n }\r\n\r\n // if (obj.userData.distance <= 50 && obj.userData.distance >= 0.5) {\r\n let real_target = obj.userData.target;\r\n for (; real_target.name != 'pivot'; ) {\r\n if (real_target.parent == null) break;\r\n real_target = real_target.parent;\r\n }\r\n // let item3D = obj.parent.parent.parent;\r\n // let origin = obj.geometry.vertices[0].clone().applyMatrix4(obj.matrixWorld);\r\n // let target = obj.geometry.vertices[1].clone().applyMatrix4(obj.matrixWorld);\r\n // let uVec = new Three.Vector3(target.x - origin.x - 0.2, target.y - origin.y - 0.2, target.z - origin.z - 0.2);\r\n obj.visible = true;\r\n if (dist < 3) obj.visible = false;\r\n return obj;\r\n }\r\n }\r\n }\r\n let tX = wPoint0.x - planData.plan.position.x;\r\n let tZ = wPoint0.z - planData.plan.position.z;\r\n tZ = -tZ;\r\n let tX1 = wPoint1.x - planData.plan.position.x;\r\n let tZ1 = wPoint1.z - planData.plan.position.z;\r\n tZ1 = -tZ1;\r\n if (!layer) return;\r\n layer.lines.forEach(function (data) {\r\n let px = [];\r\n let py = [];\r\n let opX = [tX, tX1];\r\n let opY = [tZ, tZ1];\r\n data.vertices.forEach(vec => {\r\n let vertices = layer.vertices.get(vec);\r\n px.push(vertices.x);\r\n py.push(vertices.y);\r\n });\r\n let distance = getIntersectPoint(opX, opY, px, py);\r\n if (distance != null) {\r\n obj.userData.distance = distance;\r\n obj.userData.target =\r\n planData.sceneGraph.layers[layer.id].lines[data.get('id')];\r\n scale = distance / length;\r\n if (distance <= 0.1) {\r\n scale = 0.1 / length;\r\n }\r\n let originPoint = obj.geometry.attributes.position.array.slice(0, 3);\r\n lx =\r\n obj.geometry.attributes.position.array[3] -\r\n obj.geometry.attributes.position.array[0];\r\n ly =\r\n obj.geometry.attributes.position.array[4] -\r\n obj.geometry.attributes.position.array[1];\r\n lz =\r\n obj.geometry.attributes.position.array[5] -\r\n obj.geometry.attributes.position.array[2];\r\n let newVec = new Three.Vector3(\r\n originPoint.x + lx * scale,\r\n originPoint.y + ly * scale,\r\n originPoint.z + lz * scale\r\n );\r\n obj.geometry.attributes.position.array[3] = newVec.x;\r\n obj.geometry.attributes.position.array[4] = newVec.y;\r\n obj.geometry.attributes.position.array[5] = newVec.z;\r\n obj.geometry.attributes.position.needsUpdate = true;\r\n let dist = formatNumber(distance, DECIMAL_PLACES_2);\r\n if (dist > 3) {\r\n let canvas = getTextCanvas(dist);\r\n let wid = (canvas.width / window.innerWidth) * 30;\r\n let hei = (canvas.height / window.innerHeight) * 30;\r\n let texture = new Three.Texture(canvas);\r\n texture.needsUpdate = true;\r\n let geometry = new Three.PlaneGeometry(wid / 2, hei / 2);\r\n geometry.computeBoundingBox();\r\n const material = new Three.MeshBasicMaterial({\r\n map: texture,\r\n side: Three.DoubleSide\r\n });\r\n let textMesh = new Three.Mesh(geometry, material);\r\n for (; obj.children.length != 0; ) {\r\n let temp = obj.children.pop();\r\n disposeObject(temp);\r\n }\r\n textMesh.rotation.set(Math.PI / 2, Math.PI, 0);\r\n // obj.add(textMesh);\r\n textMesh.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n textMesh.name = 'lineText';\r\n textMesh.renderOrder = 2;\r\n textMesh.material.depthTest = false;\r\n textMesh.material.transparent = true;\r\n\r\n let sprite1 = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: texture })\r\n );\r\n sprite1.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n sprite1.name = 'lineText';\r\n sprite1.scale.set(0.2, 0.1, 0.2);\r\n sprite1.layers.set(1);\r\n obj.add(sprite1);\r\n\r\n let item3D = obj.parent.parent.parent;\r\n let max = item3D.children[0].userData.max;\r\n let min = item3D.children[0].userData.min;\r\n let objW = (max.x - min.x) / 100,\r\n objL = (max.z - min.z) / 100;\r\n var triangle = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n var triangle1 = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n triangle.position.set(\r\n (index < 2 ? 0 : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n (obj.geometry.attributes.position.array[0] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objW)),\r\n newVec.y,\r\n (index < 2 ? Math.cos(index * Math.PI) : 0) *\r\n (obj.geometry.attributes.position.array[2] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objL)) -\r\n 0.02\r\n );\r\n triangle1.position.set(\r\n newVec.x -\r\n ((index < 2\r\n ? 0\r\n : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n h) /\r\n 4,\r\n newVec.y,\r\n newVec.z - ((index < 2 ? Math.cos(index * Math.PI) : 0) * h) / 4\r\n );\r\n if (index < 2) {\r\n triangle.rotation.x = (Math.cos(index * Math.PI) * Math.PI) / 2;\r\n triangle1.rotation.x = (-Math.cos(index * Math.PI) * Math.PI) / 2;\r\n } else {\r\n triangle.rotation.x = -Math.PI / 2;\r\n triangle.rotation.z = (-(index === 2 ? 1 : -1) * Math.PI) / 2;\r\n triangle1.rotation.x = Math.PI / 2;\r\n triangle1.rotation.z = ((index === 2 ? 1 : -1) * Math.PI) / 2;\r\n }\r\n triangle.name = 'lineText';\r\n triangle1.name = 'lineText';\r\n triangle.renderOrder = 2;\r\n triangle1.renderOrder = 2;\r\n triangle.material.transparent = true;\r\n triangle1.material.transparent = true;\r\n triangle.material.depthTest = false;\r\n triangle1.material.depthTest = false;\r\n obj.add(triangle);\r\n obj.add(triangle1);\r\n }\r\n // if (obj.userData.distance <= 50 && obj.userData.distance >= 0.5) {\r\n // let item3D = obj.parent.parent.parent;\r\n // let pos = item3D.position.clone();\r\n // let origin = obj.geometry.vertices[0].clone().applyMatrix4(obj.matrixWorld);\r\n // let target = obj.geometry.vertices[1].clone().applyMatrix4(obj.matrixWorld);\r\n // let uVec = new Three.Vector3(target.x - origin.x - 0.2, target.y - origin.y - 0.2, target.z - origin.z - 0.2);\r\n obj.visible = true;\r\n if (dist > 3) obj.visible = false;\r\n return obj;\r\n // itemsActions.updateDraggingItemChanged(pos.x - uVec.x, -pos.z + uVec.z);\r\n // }\r\n }\r\n });\r\n obj.visible = false;\r\n return obj;\r\n}\r\n\r\nexport function getIntersectPoint(opX, opY, pX, pY) {\r\n let oA;\r\n if (opX[1] == opX[0]) oA = null;\r\n else oA = (opY[1] - opY[0]) / (opX[1] - opX[0]);\r\n let A;\r\n if (pX[1] == pX[0]) A = null;\r\n else A = (pY[1] - pY[0]) / (pX[1] - pX[0]);\r\n if (oA == A) return null;\r\n if (oA != null && A != null) {\r\n let oB = opY[0] - oA * opX[0];\r\n let B = pY[0] - A * pX[0];\r\n let iX = (B - oB) / (oA - A);\r\n if ((pX[0] <= iX && iX <= pX[1]) || (pX[0] >= iX && iX >= pX[1])) {\r\n if (\r\n (opX[0] <= opX[1] && opX[0] <= iX) ||\r\n (opX[0] >= opX[1] && opX[0] >= iX)\r\n ) {\r\n let iY = pY[0] + A * (iX - pX[0]);\r\n let distance = Math.sqrt(\r\n (opX[0] - iX) * (opX[0] - iX) + (opY[0] - iY) * (opY[0] - iY)\r\n );\r\n return distance;\r\n }\r\n return null;\r\n }\r\n }\r\n if (oA == null) {\r\n let iX = opX[0];\r\n if (A != null) {\r\n if ((pX[0] <= iX && iX <= pX[1]) || (pX[0] >= iX && iX >= pX[1])) {\r\n let iY = pY[0] + A * (iX - pX[0]);\r\n if (\r\n (opY[0] <= iY && opY[0] <= opY[1]) ||\r\n (opY[0] >= iY && opY[0] >= opY[1])\r\n ) {\r\n let distance = Math.sqrt(\r\n (opX[0] - iX) * (opX[0] - iX) + (opY[0] - iY) * (opY[0] - iY)\r\n );\r\n return distance;\r\n }\r\n }\r\n }\r\n }\r\n if (A == null) {\r\n let iX = pX[0];\r\n if (oA != null) {\r\n let iY = iX * oA + opY[0] - oA * opX[0];\r\n if ((pY[0] <= iY && iY <= pY[1]) || (pY[0] >= iY && iY >= pY[1])) {\r\n if (\r\n (opY[0] <= iY && opY[0] <= opY[1]) ||\r\n (opY[0] >= iY && opY[0] >= opY[1])\r\n ) {\r\n let distance = Math.sqrt(\r\n (opX[0] - iX) * (opX[0] - iX) + (opY[0] - iY) * (opY[0] - iY)\r\n );\r\n return distance;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction gcd(a, b) {\r\n return a % b ? gcd(b, a % b) : b;\r\n}\r\nfunction getTextCanvas(text, parameters = {}) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n\r\n let fontSize = 16;\r\n let integral = String(text) + \"''\";\r\n\r\n parameters.fontName = parameters.fontName || ARROW_TEXT_FONTFACE;\r\n\r\n // Prepare the font to be able to measure\r\n ctx.font = `${fontSize}px ` + parameters.fontName;\r\n if (parameters.italic) {\r\n ctx.font = `italic ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold) {\r\n ctx.font = `bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold && parameters.italic) {\r\n ctx.font = `italic bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n const textMetrics = ctx.measureText(integral);\r\n\r\n let width = 70;\r\n let height = fontSize + 20;\r\n\r\n // Resize canvas to match text size\r\n canvas.width = width;\r\n canvas.height = height;\r\n canvas.style.width = width + 'px';\r\n canvas.style.height = height + 'px';\r\n\r\n // Re-apply font since canvas is resized.\r\n ctx.font = `${fontSize}px ` + parameters.fontName;\r\n if (parameters.italic) {\r\n ctx.font = `italic ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold) {\r\n ctx.font = `bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold && parameters.italic) {\r\n ctx.font = `italic bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n //ctx.textAlign = parameters.align || \"center\";\r\n ctx.textBaseline = parameters.baseline || 'middle';\r\n const r = 10;\r\n // Make the canvas transparent for simplicity\r\n ctx.fillStyle = ARROW_TEXT_BACKCOLOR;\r\n // ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);\r\n const w = ctx.canvas.width;\r\n const h = ctx.canvas.height;\r\n ctx.beginPath();\r\n ctx.moveTo(r, 0);\r\n ctx.lineTo(w - r, 0);\r\n ctx.arcTo(w, 0, w, r, r);\r\n ctx.lineTo(w, h - r);\r\n ctx.arcTo(w, h, w - r, h, r);\r\n ctx.lineTo(r, h);\r\n ctx.arcTo(0, h, 0, h - r, r);\r\n ctx.lineTo(0, r);\r\n ctx.arcTo(0, 0, r, 0, r);\r\n // ctx.arcTo(w+r, h+2*r, w+r, 0, r);\r\n ctx.fill();\r\n\r\n ctx.fillStyle = parameters.fillColor || ARROW_TEXT_FORECOLOR;\r\n ctx.fillText(integral, (width - textMetrics.width) / 2, height / 2);\r\n ctx.strokeStyle = parameters.strokeColor || ARROW_TEXT_FORECOLOR;\r\n ctx.strokeText(integral, (width - textMetrics.width) / 2, height / 2);\r\n\r\n // ctx.font = `${fontSize - 5}px ` + parameters.fontName;\r\n // const denoMetrics = ctx.measureText(deno);\r\n // const numoMetrics = ctx.measureText(numo);\r\n // ctx.fillStyle = ARROW_TEXT_FORECOLOR;\r\n // ctx.fillRect(\r\n // ctx.canvas.width / 2 + 3,\r\n // ctx.canvas.height / 2 - 2,\r\n // denoMetrics.width,\r\n // 1\r\n // );\r\n\r\n // const denoMetrics = ctx.measureText(deno);\r\n // ctx.fillStyle = ARROW_TEXT_FORECOLOR;\r\n // ctx.fillRect(\r\n // ctx.canvas.width / 2 + 3,\r\n // ctx.canvas.height / 2 - 2,\r\n // denoMetrics.width,\r\n // 1\r\n // );\r\n\r\n // ctx.fillStyle = parameters.fillColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.fillText(\r\n // numo,\r\n // ctx.canvas.width / 2 + 3 + (denoMetrics.width - numoMetrics.width) / 2,\r\n // height / 2 - 8\r\n // );\r\n // ctx.font = `${fontSize}px ` + parameters.fontName;\r\n // ctx.fillText(\r\n // \"''\",\r\n // ctx.canvas.width / 2 + 4 + denoMetrics.width,\r\n // height / 2 - 7\r\n // );\r\n // ctx.font = `${fontSize - 5}px ` + parameters.fontName;\r\n\r\n // ctx.strokeStyle = parameters.strokeColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.strokeText(\r\n // numo,\r\n // ctx.canvas.width / 2 + 3 + (denoMetrics.width - numoMetrics.width) / 2,\r\n // height / 2 - 8\r\n // );\r\n\r\n // ctx.fillStyle = parameters.fillColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.fillText(deno, ctx.canvas.width / 2 + 3, height / 2 + 8);\r\n // ctx.strokeStyle = parameters.strokeColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.strokeText(deno, ctx.canvas.width / 2 + 3, height / 2 + 8);\r\n return canvas;\r\n}\r\n\r\nfunction removeObject(\r\n modifiedPath,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog\r\n) {\r\n let promises = [];\r\n switch (modifiedPath[3]) {\r\n case 'lines':\r\n // Here I remove the line with all its holes\r\n let lineID = modifiedPath[4];\r\n oldSceneData\r\n .getIn(['layers', layer.id, 'lines', lineID, 'holes'])\r\n .forEach(holeID => {\r\n removeHole(planData, layer.id, holeID);\r\n });\r\n removeLine(planData, layer.id, lineID);\r\n let mode = oldSceneData.mode;\r\n if (ARRAY_3D_MODES.includes(mode)) mode = MODE_IDLE_3D;\r\n else mode = MODE_IDLE;\r\n if (modifiedPath.length > 5) {\r\n // I removed an hole, so I should add the new line\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n actions.linesActions\r\n )\r\n );\r\n layer.getIn(['lines', lineID, 'holes']).forEach(holeID => {\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n });\r\n }\r\n break;\r\n case 'areas':\r\n if (modifiedPath.length === 5) {\r\n // I am removing an entire area\r\n removeArea(planData, layer.id, modifiedPath[4]);\r\n }\r\n break;\r\n case 'items':\r\n if (modifiedPath.length === 5) {\r\n // I am removing an item\r\n removeItem(\r\n planData,\r\n layer.id,\r\n modifiedPath[4],\r\n oldSceneData.getIn(['layers', layer.id]),\r\n layer\r\n );\r\n }\r\n break;\r\n }\r\n\r\n Promise.all(promises).then(values => updateBoundingBox(planData));\r\n}\r\n\r\nfunction removeLayer(layerId, planData) {\r\n let layerGraph = planData.sceneGraph.layers[layerId];\r\n\r\n for (let lineID in layerGraph.lines) removeLine(planData, layerId, lineID);\r\n for (let areaID in layerGraph.areas) removeArea(planData, layerId, areaID);\r\n for (let itemID in layerGraph.items) removeItem(planData, layerId, itemID);\r\n for (let holeID in layerGraph.holes) removeHole(planData, layerId, holeID);\r\n\r\n delete planData.sceneGraph.layers[layerId];\r\n}\r\n\r\nfunction removeHole(planData, layerId, holeID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].holes[holeID]) {\r\n setTimeout(() => removeHole(planData, layerId, holeID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].holes[holeID] = true;\r\n\r\n let hole3D = planData.sceneGraph.layers[layerId].holes[holeID];\r\n\r\n if (hole3D) {\r\n planData.plan.remove(hole3D);\r\n disposeObject(hole3D);\r\n delete planData.sceneGraph.layers[layerId].holes[holeID];\r\n delete planData.sceneGraph.LODs[holeID];\r\n hole3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].holes[holeID] = false;\r\n}\r\n\r\nfunction removeLine(planData, layerId, lineID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].lines[lineID]) {\r\n setTimeout(() => removeLine(planData, layerId, lineID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].lines[lineID] = true;\r\n\r\n let line3D = planData.sceneGraph.layers[layerId].lines[lineID];\r\n\r\n if (line3D) {\r\n planData.plan.remove(line3D);\r\n disposeObject(line3D);\r\n delete planData.sceneGraph.layers[layerId].lines[lineID];\r\n delete planData.sceneGraph.LODs[lineID];\r\n line3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].lines[lineID] = false;\r\n}\r\n\r\nfunction removeArea(planData, layerId, areaID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].areas[areaID]) {\r\n setTimeout(() => removeArea(planData, layerId, areaID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].areas[areaID] = true;\r\n\r\n let area3D = planData.sceneGraph.layers[layerId].areas[areaID];\r\n\r\n if (area3D) {\r\n planData.plan.remove(area3D);\r\n disposeObject(area3D);\r\n delete planData.sceneGraph.layers[layerId].areas[areaID];\r\n delete planData.sceneGraph.LODs[areaID];\r\n area3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].areas[areaID] = false;\r\n}\r\n\r\nexport function removeItem(\r\n planData,\r\n layerId,\r\n itemID,\r\n oldSceneLayer = null,\r\n newSceneLayer = null\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].items[itemID]) {\r\n setTimeout(\r\n () => removeItem(planData, layerId, itemID, oldSceneLayer, newSceneLayer),\r\n 100\r\n );\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = true;\r\n\r\n // The layer variable is layer that contains the deleted item.\r\n let layer = oldSceneLayer\r\n ? oldSceneLayer\r\n : planData.sceneData.getIn(['layers', layerId]);\r\n let item = layer.getIn(['items', itemID]); // deleted item.\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layerId].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n planData.sceneGraph.layers[layerId].moldingGroups = deleteAllMolding(\r\n planData.sceneGraph.layers[layerId].moldingGroups,\r\n item,\r\n planData,\r\n layer,\r\n newSceneLayer\r\n );\r\n\r\n let item3D = planData.sceneGraph.layers[layerId].items[itemID];\r\n\r\n if (item3D) {\r\n planData.plan.remove(item3D);\r\n disposeObject(item3D);\r\n delete planData.sceneGraph.layers[layerId].items[itemID];\r\n delete planData.sceneGraph.LODs[itemID];\r\n item3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = false;\r\n}\r\n\r\nfunction removeItemWithoutItem(planData, layerId, itemID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].items[itemID]) {\r\n setTimeout(() => removeItemWithoutItem(planData, layerId, itemID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = true;\r\n\r\n let layer = planData.sceneData.getIn(['layers', layerId]);\r\n let item = layer.getIn(['items', itemID]);\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layerId].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n let item3D = planData.sceneGraph.layers[layerId].items[itemID];\r\n\r\n if (item3D) {\r\n planData.plan.remove(item3D);\r\n disposeObject(item3D);\r\n item3D = null;\r\n updateBoundingBox(planData);\r\n delete planData.sceneGraph.layers[layerId].items[itemID];\r\n delete planData.sceneGraph.LODs[itemID];\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = false;\r\n}\r\n\r\n//TODO generate an area's replace if vertex has been changed\r\nfunction addObject(\r\n modifiedPath,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode,\r\n toolObj\r\n) {\r\n if (modifiedPath.length >= 5) {\r\n let addPromise = null,\r\n addAction = null;\r\n switch (modifiedPath[3]) {\r\n case 'lines':\r\n if (\r\n modifiedPath[5] === 'holes' &&\r\n scene_mode !== 'MODE_DRAWING_HOLE_3D' &&\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D'\r\n ) {\r\n removeLine(planData, layer.id, modifiedPath[4]);\r\n }\r\n if (\r\n scene_mode !== 'MODE_DRAWING_HOLE_3D' &&\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D'\r\n ) {\r\n addPromise = addLine;\r\n }\r\n addAction = actions.linesActions;\r\n break;\r\n case 'areas':\r\n addPromise = addArea;\r\n addAction = actions.areaActions;\r\n break;\r\n case 'items':\r\n addPromise = addItem;\r\n addAction = actions.itemsActions;\r\n break;\r\n case 'holes':\r\n addPromise = addHole;\r\n addAction = actions.holesActions;\r\n break;\r\n }\r\n if (addPromise) {\r\n // if( addPromise(sceneData, planData, layer, modifiedPath[4], catalog, addAction) === undefined ) {\r\n // return;\r\n // }\r\n addPromise(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n addAction,\r\n mode,\r\n toolObj\r\n ).then(() => updateBoundingBox(planData));\r\n }\r\n }\r\n}\r\n\r\nfunction addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n holesActions,\r\n mode,\r\n toolObj = null\r\n) {\r\n let holeData = layer.getIn(['holes', holeID]);\r\n\r\n // Create the hole object\r\n return holeData === undefined\r\n ? ''\r\n : catalog\r\n .getElement(holeData.type)\r\n .render3D(holeData, layer, sceneData)\r\n .then(object => {\r\n if (object instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[holeID] = object;\r\n }\r\n\r\n object.children.forEach(item => {\r\n const { name } = item;\r\n item.castShadow = true;\r\n let texture;\r\n if (name.includes('_wood')) {\r\n texture = loadTexture('/assets/img/texture/white1px.jpg');\r\n } else if (name.includes('_glass')) {\r\n const material = new Three.MeshPhysicalMaterial({\r\n roughness: 0.5,\r\n transmission: 1,\r\n thickness: 0.5, // Add refraction!\r\n transparency: 0.6\r\n });\r\n item.material = material;\r\n return item;\r\n } else if (name.includes('_steel')) {\r\n texture = loadTexture('/assets/img/texture/steel.jpg');\r\n } else if (name.includes('_glass')) {\r\n const material = new Three.MeshPhysicalMaterial({\r\n roughness: 0.5,\r\n transmission: 1,\r\n thickness: 0.5, // Add refraction!\r\n transparency: 0.6\r\n });\r\n item.material = material;\r\n return item;\r\n }\r\n });\r\n\r\n if (holeData.selected) {\r\n // if object is drawing in 3d mode and selected\r\n if (holeData.type === 'FrameLess Doorway') {\r\n let x, y, z;\r\n x = holeData.getIn(['properties', 'width', 'length']) || 0;\r\n y = holeData.getIn(['properties', 'height', 'length']) || 0;\r\n z = holeData.getIn(['properties', 'thickness', 'length']) || 0;\r\n let moveBox = new Three.BoxGeometry(x, y, z);\r\n let mBox = new Three.Mesh(\r\n moveBox,\r\n new Three.MeshBasicMaterial({\r\n color: 0x99c3fb,\r\n side: Three.DoubleSide,\r\n transparent: true,\r\n opacity: 0.4\r\n })\r\n );\r\n mBox.name = 'FrameLessDoormBox';\r\n mBox.renderOrder = 1;\r\n if (mBox !== undefined) {\r\n object.add(mBox);\r\n }\r\n } else {\r\n let boundingBox = GeomUtils.baseBox3FromObject(object);\r\n if (boundingBox === undefined) return;\r\n let max = boundingBox.max;\r\n if (!Number.isFinite(max.x)) return;\r\n let transGroup = new Three.Group();\r\n\r\n const extrudeSettings = {\r\n depth: 1,\r\n bevelEnabled: true,\r\n bevelSegments: 2,\r\n steps: 2,\r\n bevelSize: 1,\r\n bevelThickness: 1\r\n };\r\n\r\n let triangleShape = new Three.Shape()\r\n .moveTo(max.x, 15) // A\r\n .lineTo(max.x + 6, 15) // B\r\n .lineTo(max.x + 6, 30) // C\r\n .lineTo(max.x + 16, 0) // D\r\n .lineTo(max.x + 6, -29) // E\r\n .lineTo(max.x + 6, -15) // F\r\n .lineTo(max.x, -15) // G\r\n .lineTo(max.x, 15); // close path\r\n let transHole_Right = GeomUtils.addShape(\r\n triangleShape,\r\n extrudeSettings,\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D' ? 0x000000 : 0x99c3fb,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1\r\n );\r\n transHole_Right.name = 'transHole_Right';\r\n transGroup.add(transHole_Right);\r\n triangleShape = new Three.Shape()\r\n .moveTo(-max.x, 15) // A\r\n .lineTo(-(max.x + 6), 15) // B\r\n .lineTo(-(max.x + 6), 30) // C\r\n .lineTo(-(max.x + 16), 0) // D\r\n .lineTo(-(max.x + 6), -29) // E\r\n .lineTo(-(max.x + 6), -15) // F\r\n .lineTo(-max.x, -15) // G\r\n .lineTo(-max.x, 15); // close path\r\n let transHole_Left = GeomUtils.addShape(\r\n triangleShape,\r\n extrudeSettings,\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D' ? 0x000000 : 0x99c3fb,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1\r\n );\r\n transHole_Left.name = 'transHole_Left';\r\n transGroup.add(transHole_Left);\r\n transGroup.scale.set(\r\n 1 / object.scale.x,\r\n 1 / object.scale.y,\r\n 1 / object.scale.z\r\n );\r\n object.add(transGroup);\r\n }\r\n }\r\n\r\n let pivot = new Three.Object3D();\r\n pivot.name = 'pivot';\r\n if (isElevationView(mode)) {\r\n let lineID = holeData.getIn(['line']);\r\n if (planData.sceneGraph.layers['layer-1'].lines[lineID].visible) {\r\n pivot.visible = true;\r\n } else {\r\n pivot.visible = false;\r\n }\r\n object.traverse(obj => {\r\n replaceMeshesWithLineSegments(obj);\r\n });\r\n }\r\n pivot.add(object);\r\n\r\n let line = layer.getIn(['lines', holeData.line]);\r\n\r\n // First of all I need to find the vertices of this line\r\n let vertex0 = layer.vertices.get(line.vertices.get(0));\r\n let vertex1 = layer.vertices.get(line.vertices.get(1));\r\n let offset = holeData.offset;\r\n\r\n if (vertex0.x > vertex1.x) {\r\n let tmp = vertex0;\r\n vertex0 = vertex1;\r\n vertex1 = tmp;\r\n offset = 1 - offset;\r\n }\r\n\r\n let distance = Math.sqrt(\r\n Math.pow(vertex0.x - vertex1.x, 2) +\r\n Math.pow(vertex0.y - vertex1.y, 2)\r\n );\r\n let alpha = Math.asin((vertex1.y - vertex0.y) / distance);\r\n\r\n let boundingBox = new Three.Box3().setFromObject(pivot);\r\n let center = [\r\n (boundingBox.max.x - boundingBox.min.x) / 2 + boundingBox.min.x,\r\n (boundingBox.max.y - boundingBox.min.y) / 2 + boundingBox.min.y,\r\n (boundingBox.max.z - boundingBox.min.z) / 2 + boundingBox.min.z\r\n ];\r\n\r\n let holeAltitude = holeData.properties.getIn(['altitude', 'length']);\r\n let holeHeight = holeData.properties.getIn(['height', 'length']);\r\n\r\n pivot.rotation.y = alpha;\r\n pivot.position.x =\r\n vertex0.x +\r\n distance * offset * Math.cos(alpha) -\r\n center[0] * Math.cos(alpha) -\r\n center[2] * Math.sin(alpha);\r\n pivot.position.y =\r\n holeAltitude + holeHeight / 2 - center[1] + layer.altitude;\r\n pivot.position.z =\r\n -vertex0.y -\r\n distance * offset * Math.sin(alpha) -\r\n center[2] * Math.cos(alpha) +\r\n center[0] * Math.sin(alpha);\r\n pivot.userData.type = 'hole';\r\n pivot.userData.layerId = layer.id;\r\n pivot.userData.holeId = holeData.id;\r\n\r\n // if holeId is existing, remove it first\r\n let childLen = planData.plan.children.length;\r\n let children = [];\r\n for (let i = 0; i < childLen; i++) {\r\n if (planData.plan.children[i].userData.holeId != holeData.id)\r\n children.push(planData.plan.children[i]);\r\n }\r\n planData.plan.children = children;\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].holes[holeData.id] = pivot;\r\n\r\n applyInteract(pivot, () => {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return holesActions.selectHole(layer.id, holeData.id);\r\n });\r\n\r\n let opacity = layer.opacity;\r\n if (holeData.selected) {\r\n opacity = 1;\r\n }\r\n applyOpacity(pivot, opacity);\r\n });\r\n}\r\n\r\nfunction updateHole(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n differences,\r\n catalog,\r\n holesActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let hole = layer.getIn(['holes', holeID]);\r\n let oldHole = oldSceneData.getIn(['layers', layer.id, 'holes', holeID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].holes[holeID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(hole.type)\r\n .updateRender3D(\r\n hole,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldHole,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\nfunction addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n linesActions,\r\n mode = null,\r\n toolObj = null\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layer.id].lines[lineID]) {\r\n setTimeout(\r\n () =>\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n linesActions,\r\n mode\r\n ),\r\n 100\r\n );\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layer.id].lines[lineID] = true;\r\n\r\n let line = layer.getIn(['lines', lineID]);\r\n line.userData.stateMode = scene_mode;\r\n\r\n // First of all I need to find the vertices of this line\r\n let vertex0 = layer.vertices.get(line.vertices.get(0));\r\n let vertex1 = layer.vertices.get(line.vertices.get(1));\r\n\r\n if (vertex0.x > vertex1.x) {\r\n let tmp = vertex0;\r\n vertex0 = vertex1;\r\n vertex1 = tmp;\r\n }\r\n\r\n return catalog\r\n .getElement(line.type)\r\n .render3D(line, layer, sceneData, mode)\r\n .then(line3D => {\r\n if (line3D === null) {\r\n return;\r\n }\r\n\r\n if (line3D instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[line.id] = line3D;\r\n }\r\n\r\n let pivot = new Three.Object3D();\r\n pivot.name = 'pivot';\r\n pivot.add(line3D);\r\n\r\n pivot.position.x = (vertex0.x + vertex1.x) / 2;\r\n pivot.position.y = layer.altitude;\r\n pivot.position.z = -(vertex0.y + vertex1.y) / 2;\r\n pivot.userData.type = 'line';\r\n\r\n // In elevation view, show(visible = true) just selected wall pivot. If not, hidden(visible = false)\r\n if (isElevationView(mode)) {\r\n let lineVisible;\r\n if (line.selected) {\r\n pivot.traverse(obj => {\r\n replaceMeshesWithLineSegments(obj);\r\n });\r\n lineVisible = true;\r\n } else {\r\n lineVisible = false;\r\n }\r\n pivot.visible = lineVisible;\r\n }\r\n\r\n pivot.userData.layerId = layer.id;\r\n pivot.userData.lineId = lineID;\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].lines[lineID] = pivot;\r\n\r\n applyInteract(pivot, () => {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return linesActions.selectLine(layer.id, line.id);\r\n });\r\n\r\n let opacity = layer.opacity;\r\n if (line.selected) {\r\n opacity = 1;\r\n }\r\n applyOpacity(pivot, opacity);\r\n planData.sceneGraph.busyResources.layers[layer.id].lines[lineID] = false;\r\n });\r\n}\r\n\r\nfunction updateLine(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n differences,\r\n catalog,\r\n linesActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let line = layer.getIn(['lines', lineID]);\r\n let oldLine = oldSceneData.getIn(['layers', layer.id, 'lines', lineID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].lines[lineID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(line.type)\r\n .updateRender3D(\r\n line,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldLine,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\nfunction addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n areaID,\r\n catalog,\r\n areaActions,\r\n mode,\r\n toolObj = null\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layer.id].areas[areaID]) {\r\n setTimeout(\r\n () =>\r\n addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode),\r\n 100\r\n );\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layer.id].areas[areaID] = true;\r\n\r\n let area = layer.getIn(['areas', areaID]);\r\n let interactFunction = () => areaActions.selectArea(layer.id, areaID);\r\n\r\n return catalog\r\n .getElement(area.type)\r\n .render3D(area, layer, sceneData)\r\n .then(area3D => {\r\n if (area3D instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[areaID] = area3D;\r\n }\r\n\r\n let pivot = new Three.Object3D();\r\n\r\n let floorSupport = area3D.userData.floorSupport;\r\n floorSupport.onBeforeRender = function (\r\n renderer,\r\n scene,\r\n camera,\r\n geometry,\r\n material,\r\n group\r\n ) {\r\n var floorMesh = this.parent.getObjectByName('floor');\r\n\r\n if (geometry.attributes.normal === undefined)\r\n return (floorMesh.visible = false);\r\n geometry.computeVertexNormals();\r\n\r\n var normals = geometry.attributes.normal.array;\r\n var pos = new Three.Vector4(0, 0, 0, 1);\r\n pos = pos.applyMatrix4(this.matrixWorld);\r\n pos = pos.applyMatrix4(camera.matrixWorldInverse);\r\n\r\n var normal = new Three.Vector4(normals[0], normals[1], normals[2], 0);\r\n normal = normal.applyMatrix4(this.matrixWorld);\r\n normal = normal.applyMatrix4(camera.matrixWorldInverse);\r\n\r\n if (floorMesh) {\r\n if (normal.dot(pos) <= 0) {\r\n floorMesh.visible = true;\r\n } else {\r\n floorMesh.visible = false;\r\n }\r\n }\r\n };\r\n\r\n let ceil = area3D.userData.floorSupport.clone();\r\n let ceilMaterial = new Three.MeshStandardMaterial({\r\n color: 0xdfdfdf,\r\n side: Three.BackSide,\r\n roughness: 0.3,\r\n metalness: 0.4\r\n });\r\n ceil.name = 'ceil';\r\n ceil.material = ceilMaterial;\r\n let vertices = [];\r\n let lines = [];\r\n let height = 100;\r\n area.vertices.forEach(data => {\r\n vertices.push(data);\r\n });\r\n layer.lines.forEach(data => {\r\n lines.push(data);\r\n });\r\n for (let i = 0; i < lines.length; i++) {\r\n let data = lines[i];\r\n let realVec = [];\r\n data.vertices.forEach(vec => {\r\n realVec.push(vec);\r\n });\r\n if (vertices.includes(realVec[0]) && vertices.includes(realVec[1])) {\r\n height = convert(layer.ceilHeight)\r\n .from(layer.unit)\r\n .to(UNIT_CENTIMETER);\r\n // height = data.properties.getIn([\"height\", \"length\"]);\r\n break;\r\n }\r\n }\r\n ceil.translateZ(\r\n convert(layer.ceilHeight).from(layer.unit).to(UNIT_CENTIMETER)\r\n );\r\n pivot.name = 'pivot';\r\n pivot.add(area3D);\r\n pivot.add(area3D.userData.floorSupport);\r\n pivot.add(ceil);\r\n pivot.position.y = layer.altitude;\r\n\r\n // if elevation view, show just wall - not show floor and ceil\r\n if (isElevationView(mode)) pivot.visible = false;\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].areas[areaID] = pivot;\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n applyInteract(pivot, interactFunction);\r\n\r\n let opacity = layer.opacity;\r\n if (area.selected) {\r\n opacity = 1;\r\n }\r\n\r\n applyOpacity(pivot, opacity);\r\n planData.sceneGraph.busyResources.layers[layer.id].areas[areaID] = false;\r\n });\r\n}\r\n\r\nfunction updateArea(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n areaID,\r\n differences,\r\n catalog,\r\n areaActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let area = layer.getIn(['areas', areaID]);\r\n let oldArea = oldSceneData.getIn(['layers', layer.id, 'areas', areaID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].areas[areaID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(area.type)\r\n .updateRender3D(\r\n area,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldArea,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\nfunction addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n itemID,\r\n catalog,\r\n itemsActions,\r\n mode = null,\r\n toolObj = null,\r\n rItem = null,\r\n bAddMolding = true\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layer.id].items[itemID]) {\r\n setTimeout(\r\n () =>\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n itemID,\r\n catalog,\r\n itemsActions,\r\n mode,\r\n toolObj,\r\n rItem,\r\n bAddMolding\r\n ),\r\n 100\r\n );\r\n return;\r\n }\r\n let item = layer.getIn(['items', itemID]);\r\n if (item.doorStyle === null) {\r\n console.log(item.name + 's doorStyle is null!');\r\n return;\r\n }\r\n if (!sceneData.loadFlag && scene_mode == MODE_DRAWING_ITEM_3D) {\r\n itemsActions.toggleLoadingCabinet();\r\n }\r\n let catalogElement = catalog.getElement(item.type);\r\n if (!catalogElement)\r\n catalogElement = catalog.getElement(\r\n returnReplaceableDeepSearchType(item.type)\r\n );\r\n if (!catalogElement) return false;\r\n return catalogElement.render3D(item, layer, sceneData, mode).then(item3D => {\r\n if (item3D instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[itemID] = item3D;\r\n }\r\n\r\n if (rItem !== null) {\r\n planData.plan.remove(rItem);\r\n disposeObject(rItem);\r\n rItem = null;\r\n }\r\n let pivot = new Three.Object3D();\r\n pivot.name = 'pivot';\r\n pivot.add(item3D);\r\n if (pivot) {\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n } else {\r\n pivot.children[0].children.forEach(pivotElement => {\r\n pivotElement.visible = false;\r\n });\r\n }\r\n let mBox = GeomUtils.makeMBoxfromObject(pivot, mBoxColor);\r\n let warningObj = createWarningObject();\r\n warningObj.position.set(\r\n 0,\r\n item.properties.get('height').get('length') / 3,\r\n 0\r\n );\r\n if (mBox) {\r\n mBox.add(warningObj);\r\n pivot.add(mBox);\r\n }\r\n }\r\n }\r\n\r\n if (item.selected) {\r\n let tranformControl = item3D.children[item3D.children.length - 1];\r\n transformBox =\r\n tranformControl.children[tranformControl.children.length - 1];\r\n }\r\n\r\n pivot.rotation.y = (item.rotation * Math.PI) / 180 + Math.PI;\r\n // pivot.rotation.y = item.rotation;\r\n pivot.position.x = item.x;\r\n pivot.position.y = layer.altitude;\r\n pivot.position.z = -item.y;\r\n\r\n applyInteract(item3D, () => {\r\n // closes the setting dialog\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return itemsActions.selectItem(layer.id, item.id);\r\n });\r\n\r\n let opacity = layer.opacity;\r\n if (item.selected) {\r\n opacity = 1;\r\n fVLine = [];\r\n let TransformGizmo = item3D.children[item3D.children.length - 1];\r\n TransformGizmo.children.forEach(child => {\r\n if (child.type === 'Line' && child.geometry.attributes !== undefined)\r\n fVLine.push(child);\r\n });\r\n setTimeout(() => {\r\n getDistances();\r\n }, 50);\r\n }\r\n\r\n applyOpacity(pivot, opacity);\r\n pivot.userData.type = 'item';\r\n pivot.userData.layerId = layer.id;\r\n pivot.userData.itemId = item.id;\r\n\r\n /**\r\n *\r\n * @param {array} itemRect Array of item's 4 side lines\r\n * @returns {boolean} true (if item is snapped into wall) or false (if item is not snapped into wall)\r\n */\r\n //////////////////\r\n ///// wall ///////\r\n // 3 ***** 2\r\n // * *\r\n // * item *\r\n // * *\r\n // 0 ***** 1\r\n\r\n const getItemVisible = itemRect => {\r\n let selectedLine = layer.lines.get(layer.selected.lines.toJS()[0]);\r\n let itemVisible = false;\r\n let vertex0 = layer.vertices.get(selectedLine.vertices.get(0));\r\n let vertex1 = layer.vertices.get(selectedLine.vertices.get(1));\r\n const l0 = { x: vertex0.x, y: vertex0.y };\r\n const l1 = { x: vertex1.x, y: vertex1.y };\r\n const r0 = itemRect.rect[0];\r\n const r1 = itemRect.rect[1];\r\n const r2 = itemRect.rect[2];\r\n const r3 = itemRect.rect[3];\r\n\r\n // it doesn't need consider distance between item's line01 (frontside - it has door) and wall\r\n let delta12 = GeometryUtils.distancePointFromLineSegment(\r\n l0,\r\n l1,\r\n (r1.x + r2.x) / 2,\r\n (r1.y + r2.y) / 2\r\n ); // distance between item's line12 and wall\r\n let delta23 = GeometryUtils.distancePointFromLineSegment(\r\n l0,\r\n l1,\r\n (r2.x + r3.x) / 2,\r\n (r2.y + r3.y) / 2\r\n ); // distance between item's line23 and wall\r\n let delta30 = GeometryUtils.distancePointFromLineSegment(\r\n l0,\r\n l1,\r\n (r3.x + r0.x) / 2,\r\n (r3.y + r0.y) / 2\r\n ); // distance between item's line30 and wall\r\n\r\n if (\r\n delta12 < DISTANCE_EPSILON ||\r\n delta23 < DISTANCE_EPSILON ||\r\n delta30 < DISTANCE_EPSILON\r\n ) {\r\n itemVisible = true;\r\n }\r\n return itemVisible;\r\n };\r\n let val = {\r\n pos: { x: item.x, y: item.y },\r\n rotRad: (item.rotation / 180) * Math.PI\r\n };\r\n let catid = item.type;\r\n let cat = catalog.elements[catid];\r\n if (!cat) cat = catalog.elements[returnReplaceableDeepSearchType(catid)];\r\n let width = convert(item.properties.getIn(['width', '_length']))\r\n .from('in')\r\n .to(sceneData.unit);\r\n let height = convert(item.properties.getIn(['height', '_length']))\r\n .from('in')\r\n .to(sceneData.unit);\r\n let depth = convert(item.properties.getIn(['depth', '_length']))\r\n .from('in')\r\n .to(sceneData.unit);\r\n val.size = { width, height, depth };\r\n val.layoutpos = cat.info.layoutpos;\r\n val.is_corner = cat.info.is_corner;\r\n val.item = item;\r\n let calcrect = GeometryUtils.getCalcRectFromItem3D(val);\r\n\r\n // In elevation view, determin if item show or not\r\n if (isElevationView(mode)) pivot.visible = getItemVisible(calcrect);\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].items[item.id] = pivot;\r\n //In a 3D view, merge each couterTop of equal height into a single conuterTop.\r\n if (!isElevationView(mode)) {\r\n addCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n }\r\n if (\r\n bAddMolding &&\r\n item.category === 'cabinet' &&\r\n ((isElevationView(mode) && getItemVisible(calcrect)) ||\r\n !isElevationView(mode))\r\n ) {\r\n planData.sceneGraph.layers[layer.id].moldingGroups =\r\n addMolding(\r\n planData.sceneGraph.layers[layer.id].moldingGroups,\r\n item,\r\n planData,\r\n layer,\r\n itemsActions,\r\n mode\r\n ) || planData.sceneGraph.layers[layer.id].moldingGroups;\r\n }\r\n if (pivot) {\r\n // update the tool object's position to selected object's position\r\n let selectedItem =\r\n planData.sceneGraph.layers[sceneData.selectedLayer].items[itemID];\r\n let itemPos = selectedItem.position.clone();\r\n if (!isEmpty(toolObj)) {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selectedItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selectedItem.properties.get('height').get('length')\r\n : planData.plan.position.y + selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n pivot.children[0].children.forEach(pivotElement => {\r\n pivotElement.visible = true;\r\n });\r\n if (pivot.children.length > 1) {\r\n let _item = item.toJS();\r\n if (_item.doorStyle.doorStyles !== undefined) {\r\n if (_item.category === 'cabinet') {\r\n if (\r\n _item.doorStyle.doorStyles.cds.some(\r\n element => element.itemID === item.itemID\r\n )\r\n ) {\r\n pivot.children.pop();\r\n }\r\n } else {\r\n pivot.children.pop();\r\n }\r\n }\r\n }\r\n }\r\n applyInteract(pivot, () => {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return itemsActions.selectItem(layer.id, item.id);\r\n });\r\n setTimeout(() => getDistances(layer), 100);\r\n if (!sceneData.loadFlag && scene_mode == MODE_DRAWING_ITEM_3D) {\r\n itemsActions.endLoading();\r\n itemsActions.toggleLoadingCabinet();\r\n }\r\n });\r\n}\r\n\r\nfunction updateItem(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n itemID,\r\n differences,\r\n catalog,\r\n itemsActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let item = layer.getIn(['items', itemID]);\r\n let oldItem = oldSceneData.getIn(['layers', layer.id, 'items', itemID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].items[itemID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(item.type)\r\n .updateRender3D(\r\n item,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldItem,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\n// Apply interact function to children of an Object3D\r\nfunction applyInteract(object, interactFunction) {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n object.traverse(child => {\r\n if (child instanceof Three.Mesh) {\r\n child.interact = interactFunction;\r\n }\r\n });\r\n}\r\n\r\n// Apply opacity to children of an Object3D\r\nfunction applyOpacity(object, opacity) {\r\n object.traverse(child => {\r\n if (child instanceof Three.Mesh) {\r\n if (child.material && !Array.isArray(child.material)) {\r\n // child.material.materials.forEach(materialChild => {\r\n // materialChild.transparent = true;\r\n // if (materialChild.maxOpacity) {\r\n // materialChild.opacity = Math.min(materialChild.maxOpacity, opacity);\r\n // } else if (materialChild.opacity && materialChild.opacity > opacity) {\r\n // materialChild.maxOpacity = materialChild.opacity;\r\n // materialChild.opacity = opacity;\r\n // }\r\n // });\r\n } else if (child.material instanceof Array) {\r\n child.material.forEach(material => {\r\n material.transparent = true;\r\n if (material.maxOpacity) {\r\n material.opacity = Math.min(material.maxOpacity, opacity);\r\n } else if (material.opacity && material.opacity > opacity) {\r\n material.maxOpacity = material.opacity;\r\n material.opacity = opacity;\r\n }\r\n });\r\n } else {\r\n child.material.transparent = true;\r\n if (child.material.maxOpacity) {\r\n child.material.opacity = Math.min(child.material.maxOpacity, opacity);\r\n } else if (child.material.opacity && child.material.opacity > opacity) {\r\n child.material.maxOpacity = child.material.opacity;\r\n child.material.opacity = opacity;\r\n }\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction updateBoundingBox(planData, flag = false, mode) {\r\n if (scene_mode == MODE_DRAWING_ITEM_3D) return;\r\n let newBoundingBox = new Three.Box3().setFromObject(planData.plan);\r\n if (\r\n isFinite(newBoundingBox.max.x) &&\r\n isFinite(newBoundingBox.min.x) &&\r\n isFinite(newBoundingBox.max.y) &&\r\n isFinite(newBoundingBox.min.y) &&\r\n isFinite(newBoundingBox.max.z) &&\r\n isFinite(newBoundingBox.min.z)\r\n ) {\r\n let newCenter = new Three.Vector3(\r\n (newBoundingBox.max.x - newBoundingBox.min.x) / 2 + newBoundingBox.min.x,\r\n (newBoundingBox.max.y - newBoundingBox.min.y) / 2 + newBoundingBox.min.y,\r\n (newBoundingBox.max.z - newBoundingBox.min.z) / 2 + newBoundingBox.min.z\r\n );\r\n if (!flag) {\r\n planData.plan.position.sub(newCenter);\r\n planData.grid.position.sub(newCenter);\r\n if (isElevationView(mode)) {\r\n planData.cam.position.sub(newCenter);\r\n }\r\n }\r\n\r\n newBoundingBox.min.sub(newCenter);\r\n newBoundingBox.max.sub(newCenter);\r\n\r\n planData.boundingBox = newBoundingBox;\r\n }\r\n}\r\n\r\n/**\r\n * Filter the array of diffs\r\n * @param diffArray\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction filterDiffs(diffArray, sceneData, oldSceneData) {\r\n return minimizeRemoveDiffsWhenSwitchingLayers(\r\n minimizeChangePropertiesAfterSelectionsDiffs(\r\n minimizeChangePropertiesDiffs(diffArray, sceneData, oldSceneData),\r\n sceneData,\r\n oldSceneData\r\n ),\r\n sceneData,\r\n oldSceneData\r\n );\r\n}\r\n\r\n/**\r\n * Reduces the number of remove diffs when switching an hidden layer\r\n * @param diffArray the array of the diffs\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction minimizeRemoveDiffsWhenSwitchingLayers(\r\n diffArray,\r\n sceneData,\r\n oldSceneData\r\n) {\r\n let foundDiff;\r\n let i;\r\n for (i = 0; i < diffArray.length && !foundDiff; i++) {\r\n if (diffArray[i].path[1] === 'selectedLayer') {\r\n foundDiff = diffArray[i];\r\n }\r\n }\r\n\r\n if (foundDiff) {\r\n if (!sceneData.getIn(['layers', oldSceneData.selectedLayer, 'visible'])) {\r\n return diffArray.filter(({ op, path }) => {\r\n return (\r\n !(\r\n path[path.length - 1] === 'selected' &&\r\n path[1] === 'layers' &&\r\n path[2] === oldSceneData.selectedLayer\r\n ) &&\r\n !(op === 'remove' && path.indexOf(oldSceneData.selectedLayer) !== -1)\r\n );\r\n });\r\n }\r\n }\r\n\r\n return diffArray;\r\n}\r\n\r\n/**\r\n * Reduces the number of change properties diffs for selected elements\r\n * @param diffArray the array of the diffs\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction minimizeChangePropertiesAfterSelectionsDiffs(\r\n diffArray,\r\n sceneData,\r\n oldSceneData\r\n) {\r\n let idsFound = {};\r\n diffArray.forEach(({ path }) => {\r\n if (path[5] === 'selected') {\r\n idsFound[path[4]] = path[4];\r\n }\r\n });\r\n\r\n return diffArray.filter(({ path }) => {\r\n if (path[5] === 'properties') {\r\n return idsFound[path[4]] ? false : true;\r\n }\r\n return true;\r\n });\r\n}\r\n\r\n/**\r\n * Reduces the number of change properties diffs\r\n * @param diffArray the array of the diffs\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction minimizeChangePropertiesDiffs(diffArray, sceneData, oldSceneData) {\r\n let idsFound = {};\r\n return diffArray.filter(({ path }) => {\r\n if (path[5] === 'properties') {\r\n return idsFound[path[4]] ? false : (idsFound[path[4]] = true);\r\n } else if (path[5] === 'misc') {\r\n // Remove misc changes\r\n return false;\r\n }\r\n return true;\r\n });\r\n}\r\n\r\n// countertops:\r\n// o id:\r\n// o items: [itemid]\r\n// o ct3d: 3d object\r\n// o catid\r\n// o pos\r\n// o rotRad\r\n// o size\r\nfunction createCTFromItem(item, unit, catalog) {\r\n return createCTFromItems([item], unit, catalog);\r\n}\r\n\r\nfunction createCTFromItems(items, unit, catalog) {\r\n let item0 = items[0];\r\n let item1 = items[items.length - 1];\r\n let CTId = IDBroker.acquireID();\r\n let ct3d = null;\r\n let catid = item0.type;\r\n let pos = { x: (item0.x + item1.x) / 2, y: (item0.y + item1.y) / 2 };\r\n let rotRad = (item0.rotation / 180) * Math.PI;\r\n\r\n let cat = catalog.elements[catid];\r\n // let width = convert(item0.properties.getIn(['width', '_length'])).from('in').to('cm');\r\n // let depth = convert(item0.properties.getIn(['depth', '_length'])).from('in').to('cm');\r\n // let height = convert(item0.properties.getIn(['height', '_length'])).from('in').to('cm');\r\n let width = item0.properties.get('width').get('_length');\r\n let widthUnit = item0.properties.get('width').get('_unit') || 'cm';\r\n width = convert(width).from(widthUnit).to('cm');\r\n\r\n let depth = item0.properties.get('depth').get('_length');\r\n let depthUnit = item0.properties.get('depth').get('_unit') || 'cm';\r\n depth = convert(depth).from(depthUnit).to('cm');\r\n\r\n let height = item0.properties.get('height').get('_length');\r\n let heightUnit = item0.properties.get('height').get('_unit') || 'cm';\r\n height = convert(height).from(heightUnit).to('cm');\r\n let size = { width: width * items.length, depth, height };\r\n\r\n return { id: CTId, items, ct3d, catid, pos, rotRad, size };\r\n}\r\n\r\nexport function createMDFromItem(item, lines, molding) {\r\n let MDId = IDBroker.acquireID();\r\n\r\n let z = item.properties.get('altitude').get('_length');\r\n let zUnit = item.properties.get('altitude').get('_unit') || 'cm';\r\n z = convert(z).from(zUnit).to('cm');\r\n let height = item.properties.get('height').get('_length');\r\n let heightUnit = item.properties.get('height').get('_unit') || 'cm';\r\n height = convert(height).from(heightUnit).to('cm');\r\n switch (molding.location_type) {\r\n case TOP_MOLDING_LOCATION:\r\n z += height;\r\n break;\r\n case MIDDLE_MOLDING_LOCATION:\r\n z += height / 2;\r\n break;\r\n case BOTTOM_MOLDING_LOCATION:\r\n z += 0;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return {\r\n id: MDId,\r\n items: [item],\r\n meshes: [],\r\n pos: { x: 0, y: 0, z },\r\n size: { width: 0, depth: 0, height: 0 },\r\n lines,\r\n molding,\r\n pointGroups: []\r\n };\r\n}\r\n\r\nfunction tryAdjacent(ct1, ct2) {\r\n if (ct1.catid.includes('Dishwasher') && ct1.catid.includes('BF')) {\r\n let temp = ct1;\r\n ct1 = ct2;\r\n ct2 = temp;\r\n }\r\n\r\n log('----tryAdjacent', ct1.id, ct2.id);\r\n if (\r\n !ct2.catid.includes('Dishwasher') &&\r\n !ct2.catid.includes('BF') &&\r\n ct1.catid != ct2.catid\r\n )\r\n return false;\r\n if (ct1.rotRad != ct2.rotRad) return false;\r\n\r\n log('ct1', ct1.pos.x, ct1.pos.y, ct1.size.width);\r\n log('ct2', ct2.pos.x, ct2.pos.y, ct2.size.width);\r\n\r\n let dist = GeometryUtils.verticesDistance(ct1.pos, ct2.pos);\r\n let totalwidth = ct1.size.width + ct2.size.width;\r\n log('epsilon', dist, totalwidth, Math.abs(2 * dist - totalwidth));\r\n if (Math.abs(2 * dist - totalwidth) / totalwidth > 1e-3) return false;\r\n\r\n log('----success');\r\n let newpos = {\r\n x: (ct1.pos.x * ct1.size.width + ct2.pos.x * ct2.size.width) / totalwidth,\r\n y: (ct1.pos.y * ct1.size.width + ct2.pos.y * ct2.size.width) / totalwidth\r\n };\r\n let newsize = {\r\n width: totalwidth,\r\n depth: ct1.size.depth,\r\n height: ct1.size.height\r\n };\r\n\r\n let CTId = IDBroker.acquireID();\r\n let items =\r\n GeometryUtils.compareVertices(ct1.pos, ct2.pos) > 0\r\n ? [...ct1.items, ...ct2.items]\r\n : [...ct2.items, ...ct1.items];\r\n let ct3d = null;\r\n let catid = ct1.catid;\r\n\r\n return {\r\n id: CTId,\r\n items,\r\n ct3d,\r\n catid,\r\n pos: newpos,\r\n rotRad: ct1.rotRad,\r\n size: newsize\r\n };\r\n}\r\n\r\nfunction isParallelLines(line1, line2) {\r\n let isParallel = false;\r\n if (\r\n Math.abs(line1[0].y - line1[1].y) <= EPSILON &&\r\n Math.abs(line2[0].y - line2[1].y) <= EPSILON\r\n )\r\n isParallel = true;\r\n if (\r\n Math.abs(line1[0].x - line1[1].x) <= EPSILON &&\r\n Math.abs(line2[0].x - line2[1].x) <= EPSILON\r\n )\r\n isParallel = true;\r\n if (\r\n Math.abs(\r\n (line1[0].x - line1[1].x) / (line1[0].y - line1[1].y) -\r\n (line2[0].x - line2[1].x) / (line2[0].y - line2[1].y)\r\n ) <= EPSILON\r\n )\r\n isParallel = true;\r\n if (isParallel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function tryAdjacentMD(md1, md2, molding) {\r\n log('----tryAdjacent', md1.id, md2.id);\r\n\r\n if (Math.abs(md1.pos.z - md2.pos.z) > EPSILON) return false;\r\n let id1 = md1.items[0].doorStyle.hasOwnProperty('id')\r\n ? md1.items[0].doorStyle.id\r\n : md1.items[0].doorStyle.toJS().id,\r\n id2 = md2.items[0].doorStyle.hasOwnProperty('id')\r\n ? md2.items[0].doorStyle.id\r\n : md2.items[0].doorStyle.toJS().id;\r\n if (id1 !== id2) return false;\r\n\r\n let newLines = md1.lines.concat(md2.lines);\r\n let isMerge = false;\r\n\r\n md1.lines.forEach(line1 => {\r\n md2.lines.map(line2 => {\r\n // filter removed lines\r\n if (\r\n newLines.findIndex(a => a[2] === line1[2]) === -1 ||\r\n newLines.findIndex(a => a[2] === line2[2]) === -1\r\n )\r\n return false;\r\n // is parallel two lines\r\n if (isParallelLines(line1, line2)) {\r\n let disLine1 = GeometryUtils.verticesDistance(line1[0], line1[1]);\r\n let disLine2 = GeometryUtils.verticesDistance(line2[0], line2[1]);\r\n if (\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(line2[0], line1[0]) +\r\n GeometryUtils.verticesDistance(line1[1], line2[1]),\r\n Math.abs(disLine2 - disLine1)\r\n )\r\n ) {\r\n newLines = newLines.filter(\r\n a => !(a[2] === line1[2] || a[2] === line2[2])\r\n );\r\n if (!GeometryUtils.sameMPoints(line1[0], line2[0]))\r\n newLines.push([line1[0], line2[0], IDBroker.acquireID()]);\r\n if (!GeometryUtils.sameMPoints(line1[1], line2[1]))\r\n newLines.push([line1[1], line2[1], IDBroker.acquireID()]);\r\n isMerge = true;\r\n return false;\r\n }\r\n if (\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(line2[0], line1[1]) +\r\n GeometryUtils.verticesDistance(line1[0], line2[1]),\r\n Math.abs(disLine2 - disLine1)\r\n )\r\n ) {\r\n newLines = newLines.filter(\r\n a => !(a[2] === line1[2] || a[2] === line2[2])\r\n );\r\n if (!GeometryUtils.sameMPoints(line1[1], line2[0]))\r\n newLines.push([line1[1], line2[0], IDBroker.acquireID()]);\r\n if (!GeometryUtils.sameMPoints(line1[0], line2[1]))\r\n newLines.push([line1[0], line2[1], IDBroker.acquireID()]);\r\n isMerge = true;\r\n return false;\r\n }\r\n let samePointNum = -1,\r\n i = 0;\r\n while (i < 4 && samePointNum === -1) {\r\n if (\r\n GeometryUtils.sameMPoints(line1[Math.floor(i / 2)], line2[i % 2]) &&\r\n GeometryUtils.sameMDistances(\r\n disLine1 + disLine2,\r\n GeometryUtils.verticesDistance(\r\n line1[Math.floor((3 - i) / 2)],\r\n line2[(3 - i) % 2]\r\n )\r\n )\r\n ) {\r\n samePointNum = 3 - i;\r\n } else {\r\n i++;\r\n }\r\n }\r\n if (samePointNum > -1) {\r\n newLines = newLines.filter(\r\n a => !(a[2] === line1[2] || a[2] === line2[2])\r\n );\r\n newLines.push([\r\n { ...line1[Math.floor(samePointNum / 2)] },\r\n { ...line2[samePointNum % 2] },\r\n IDBroker.acquireID()\r\n ]);\r\n isMerge = true;\r\n return false;\r\n }\r\n let pointNum = -1,\r\n k = 0;\r\n while (k < 4 && pointNum === -1) {\r\n if (\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(\r\n line1[Math.floor(k / 2)],\r\n line2[k % 2]\r\n ) +\r\n GeometryUtils.verticesDistance(\r\n line1[1 - Math.floor(k / 2)],\r\n line2[k % 2]\r\n ),\r\n disLine1\r\n ) &&\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(\r\n line1[1 - Math.floor(k / 2)],\r\n line2[k % 2]\r\n ) +\r\n GeometryUtils.verticesDistance(\r\n line1[1 - Math.floor(k / 2)],\r\n line2[1 - (k % 2)]\r\n ),\r\n disLine2\r\n )\r\n ) {\r\n pointNum = k;\r\n } else {\r\n k++;\r\n }\r\n }\r\n }\r\n return false;\r\n });\r\n });\r\n\r\n if (!newLines.length) return { ...md2 };\r\n\r\n if (!isMerge) return false;\r\n return {\r\n id: IDBroker.acquireID(),\r\n items: [\r\n ...md2.items.filter(\r\n item => md1.items.findIndex(it => it.id === item.id) === -1\r\n ),\r\n ...md1.items\r\n ],\r\n meshes: [],\r\n pos: md1.pos,\r\n size: md1.size,\r\n lines: newLines,\r\n molding: molding\r\n };\r\n}\r\n\r\nfunction showItemCT(item, CT, visible, planData, layer) {\r\n let item3D = planData.sceneGraph.layers[layer.id].items[item.id];\r\n if (item3D === undefined) return undefined;\r\n item3D.traverse(child => {\r\n if (child.name.includes('countertop')) {\r\n child.visible = visible;\r\n\r\n if (child.material.map === null) {\r\n let normalMap = item.counterTop.uri;\r\n let interiortexture = loadTexture(normalMap);\r\n applyTexture(child.material, interiortexture, 100, 100);\r\n child.material.color = new Color(1, 1, 1);\r\n return;\r\n }\r\n child.material.map.repeat.x = 1;\r\n }\r\n });\r\n}\r\n\r\nfunction getCountertopMesh(item, visible, planData, layer) {\r\n if (item.type.includes('Dishwasher')) return undefined;\r\n if (item.type.includes('BF')) return undefined;\r\n let item3D = planData.sceneGraph.layers[layer.id].items[item.id];\r\n let countertop = null;\r\n if (item3D === undefined) return undefined;\r\n item3D.traverse(child => {\r\n if (child.name.includes('countertop')) {\r\n countertop = child;\r\n }\r\n });\r\n return countertop;\r\n}\r\n\r\nfunction getDoorStyleMaterial(items, planData, layer, name) {\r\n let item3D = null;\r\n // find Item with visible = true, in elevation mode\r\n items.forEach(item => {\r\n let tempItem = null;\r\n tempItem = planData.sceneGraph.layers[layer.id].items[item.id];\r\n if (tempItem && tempItem.visible) {\r\n item3D = tempItem;\r\n }\r\n });\r\n\r\n let door_mesh = null;\r\n if (!item3D) return undefined;\r\n item3D.traverse(child => {\r\n if (\r\n !door_mesh &&\r\n !child.name.includes('countertop') &&\r\n !child.name.includes('_interior_') &&\r\n !child.name.includes('handle') &&\r\n child.type === OBJTYPE_MESH\r\n ) {\r\n door_mesh = child;\r\n }\r\n });\r\n return door_mesh && door_mesh.material;\r\n}\r\n\r\nfunction addCTMesh(countertop, planData, layer) {\r\n if (countertop.items.length == 1) {\r\n showItemCT(countertop.items[0], countertop, true, planData, layer);\r\n } else {\r\n let ctMesh = null;\r\n countertop.items.some(item => {\r\n ctMesh = getCountertopMesh(item, true, planData, layer);\r\n return ctMesh != null;\r\n });\r\n if (!ctMesh) return;\r\n\r\n if (0) {\r\n let material = ctMesh.material;\r\n let thickness = 3.81;\r\n let geometry = new Three.BoxGeometry(\r\n countertop.size.width,\r\n thickness,\r\n countertop.size.depth\r\n );\r\n let ct3d = new Three.Mesh(geometry, material);\r\n\r\n countertop.ct3d = ct3d;\r\n planData.plan.add(ct3d);\r\n\r\n ct3d.position.x = countertop.pos.x;\r\n ct3d.position.z = -countertop.pos.y;\r\n ct3d.position.y = countertop.size.height + thickness / 2;\r\n\r\n ct3d.quaternion.setFromAxisAngle(\r\n new Three.Vector3(0, 1, 0),\r\n countertop.rotRad\r\n );\r\n\r\n ct3d.name = 'countertops';\r\n } else {\r\n let ct3d = ctMesh.clone();\r\n countertop.ct3d = ct3d;\r\n ct3d.visible = true;\r\n ct3d.material = ctMesh.material.clone();\r\n if (ct3d.material.map !== null) {\r\n ct3d.material.map.copy(ctMesh.material.map);\r\n ct3d.material.map.repeat.x = countertop.items.length;\r\n }\r\n ctMesh.updateMatrix();\r\n ctMesh.parent.updateMatrix();\r\n ctMesh.parent.parent.updateMatrix();\r\n let ctmeshMat = ctMesh.matrix;\r\n let objMat = ctMesh.parent.matrix;\r\n let pivotMat = ctMesh.parent.parent.matrix;\r\n pivotMat.setPosition(\r\n new Three.Vector3(countertop.pos.x, 0, -countertop.pos.y)\r\n );\r\n\r\n let width = countertop.items\r\n .find(ct => !ct.type.includes('Dishwasher') && !ct.type.includes('BF'))\r\n .properties.get('width')\r\n .get('_length');\r\n let unit_width =\r\n countertop.items\r\n .find(\r\n ct => !ct.type.includes('Dishwasher') && !ct.type.includes('BF')\r\n )\r\n .properties.get('width')\r\n .get('_unit') || 'cm';\r\n width = convert(width).from(unit_width).to('cm');\r\n pivotMat.scale(new Three.Vector3(countertop.size.width / width, 1, 1));\r\n\r\n let finalMat = objMat.premultiply(pivotMat);\r\n ct3d.applyMatrix4(finalMat);\r\n\r\n planData.plan.add(ct3d);\r\n ct3d.name = 'countertops';\r\n }\r\n }\r\n}\r\n\r\nfunction getArea(a, b, c) {\r\n return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y);\r\n}\r\n\r\nfunction isSingleQuadrilateral(groupCount, pointGroup) {\r\n return groupCount === 1 && pointGroup.length === 4;\r\n}\r\n\r\n/**\r\n * @param MDV - molding points\r\n * @param width - cabinet width\r\n * @param depth - cabinet depth ( z axis )\r\n * @param model - molding info that appear in real 3D\r\n */\r\nfunction moldingVertices(\r\n mPointGroup,\r\n mdGeo,\r\n MDV,\r\n model,\r\n svg_width,\r\n svg_height,\r\n groupCount\r\n) {\r\n let pointGroup = mPointGroup;\r\n let length = pointGroup.length;\r\n let isSnap = true;\r\n\r\n // Point O\r\n let o = new Three.Vector2(0, 0);\r\n\r\n if (GeometryUtils.samePoints(pointGroup[0], pointGroup[length - 1])) {\r\n pointGroup = pointGroup.slice(0, length - 1);\r\n length--;\r\n isSnap = false;\r\n }\r\n\r\n let verticesArray = [];\r\n\r\n let t = [\r\n [-1, -1],\r\n [1, -1],\r\n [1, 1],\r\n [-1, 1]\r\n ];\r\n\r\n if (!isSnap && isSingleQuadrilateral(groupCount, pointGroup)) {\r\n let tmp_pos = [];\r\n t.forEach(tmp => {\r\n pointGroup.forEach(point => {\r\n if (point.x * tmp[0] > 0 && point.y * tmp[1] > 0) {\r\n tmp_pos.push(point);\r\n }\r\n });\r\n });\r\n pointGroup = tmp_pos;\r\n }\r\n\r\n pointGroup.forEach((cur, i) => {\r\n let prev = isSnap && i === 0 ? cur : pointGroup[(i + length - 1) % length];\r\n let next = isSnap && i === length - 1 ? cur : pointGroup[(i + 1) % length];\r\n\r\n let vecPC = cur.clone().sub(prev); // vector from point `prev` to point `cur`\r\n let vecNC = cur.clone().sub(next); // vector from point `next` to point `cur`\r\n\r\n // Calculate normal vector to `vecPC`\r\n let vecNorm = new Three.Vector2(0, 1);\r\n if (vecPC.x) {\r\n if (vecPC.x > 0) {\r\n vecNorm = new Three.Vector2(-vecPC.y / vecPC.x, 1);\r\n } else {\r\n vecNorm = new Three.Vector2(vecPC.y / vecPC.x, -1);\r\n }\r\n } else {\r\n if (vecPC.y === 0) {\r\n if (vecNC.x) {\r\n if (vecNC.x > 0) {\r\n vecNorm = new Three.Vector2(vecNC.y / vecNC.x, -1);\r\n } else {\r\n vecNorm = new Three.Vector2(-vecNC.y / vecNC.x, 1);\r\n }\r\n } else {\r\n if (vecNC.y > 0) {\r\n vecNorm = new Three.Vector2(1, 0);\r\n } else {\r\n vecNorm = new Three.Vector2(-1, 0);\r\n }\r\n }\r\n } else {\r\n if (vecPC.y > 0) {\r\n vecNorm = new Three.Vector2(-1, 0);\r\n } else {\r\n vecNorm = new Three.Vector2(1, 0);\r\n }\r\n }\r\n }\r\n\r\n let p1 = cur.clone().add(vecNorm); // the point that's away from `cur` by `vecNorm`\r\n if (getArea(prev, p1, cur) > 0) {\r\n vecNorm.multiplyScalar(-1);\r\n }\r\n\r\n let area = 0.5 * getArea(prev, cur, next);\r\n let lenPN = next.clone().sub(prev).length();\r\n let lenNC = vecNC.length();\r\n let lenPC = vecPC.length();\r\n\r\n let alpha = Math.acos(\r\n (lenNC * lenNC + lenPC * lenPC - lenPN * lenPN) / (2 * lenNC * lenPC)\r\n );\r\n\r\n if (area < 0) alpha = 2 * Math.PI - alpha; // Exterior Angle\r\n alpha /= 2;\r\n\r\n if (isNaN(alpha)) {\r\n alpha = Math.PI / 2;\r\n }\r\n\r\n vecNorm.rotateAround(o, Math.PI / 2 - alpha);\r\n vecNorm.normalize();\r\n vecNorm.multiplyScalar(1 / Math.sin(alpha));\r\n\r\n // Make 3D Points\r\n MDV.forEach(p => {\r\n let x = cur.x - vecNorm.x * ((p.x / svg_width - 0.5) * model.length);\r\n let y = (0.5 - p.y / svg_height) * model.width;\r\n let z = -cur.y + vecNorm.y * ((p.x / svg_width - 0.5) * model.length);\r\n if (mdGeo.attributes.hasOwnProperty('position'))\r\n verticesArray = mdGeo.attributes.position.array;\r\n verticesArray.push(x, y, z);\r\n });\r\n });\r\n const mdGeo1 = mdGeo.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(verticesArray), 3)\r\n );\r\n mdGeo1.needsUpdate = true;\r\n return mdGeo1;\r\n}\r\n\r\nlet dcmFace = function (a, leng, MDV) {\r\n for (let i = a; i < a + 2; i++) {\r\n let f_a1 = i;\r\n let f_b1 = i + leng;\r\n let f_c1 = i + leng + 1;\r\n let f_a2 = i;\r\n let f_b2 = i + 1;\r\n let f_c2 = f_c1;\r\n let indices = Array.from(MDV.index.array);\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n MDV.setIndex(indices);\r\n }\r\n let indices = Array.from(MDV.index.array);\r\n indices.push(a + 2, a + leng + 2, a + leng + 4, a + leng + 4, a + 4, a + 2);\r\n MDV.setIndex(indices);\r\n\r\n for (let i = a + 4; i < a + 74; i++) {\r\n let f_a1 = i;\r\n let f_b1 = i + leng;\r\n let f_c1 = i + leng + 1;\r\n let f_a2 = i;\r\n let f_b2 = i + 1;\r\n let f_c2 = f_c1;\r\n let indices = Array.from(MDV.index.array);\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n MDV.setIndex(indices);\r\n }\r\n let faces = Array.from(MDV.index.array);\r\n faces.push(a + 50, a + 3, a + 103, a + 103, a + 150, a + 50);\r\n MDV.setIndex(faces);\r\n};\r\n\r\nlet fbmFace = function (a, leng, MDV) {\r\n let total_leng = leng * 4;\r\n for (let i = a; i < a + leng - 1; i++) {\r\n let f_a1 = i;\r\n let f_b1 = (i + leng) % total_leng;\r\n let f_c1 = (i + leng + 1) % total_leng;\r\n let f_a2 = i;\r\n let f_b2 = i + 1;\r\n let f_c2 = f_c1;\r\n let indices = [];\r\n if (MDV.index !== null) {\r\n indices = Array.from(MDV.index.array);\r\n }\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n MDV.setIndex(indices);\r\n }\r\n};\r\n\r\nconst assignUVs = geometry => {\r\n geometry.computeBoundingBox();\r\n let h = 400;\r\n let { min, max } = geometry.boundingBox;\r\n let offset = new Three.Vector2(0 - min.x, 0 - min.z);\r\n let range = new Three.Vector2(max.x - min.x, max.z - min.z);\r\n\r\n geometry.faceVertexUvs[0] = geometry.faces.map(face => {\r\n let v1 = geometry.vertices[face.a];\r\n let v2 = geometry.vertices[face.b];\r\n let v3 = geometry.vertices[face.c];\r\n\r\n return [\r\n new Three.Vector2(\r\n (v1.x + offset.x) / range.x,\r\n (v1.z + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v2.x + offset.x) / range.x,\r\n (v2.z + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v3.x + offset.x) / range.x,\r\n (v3.z + offset.y) / (range.y + h)\r\n )\r\n ];\r\n });\r\n\r\n geometry.uvsNeedUpdate = true;\r\n};\r\n\r\nconst assignUVsA = geometry => {\r\n geometry.computeBoundingBox();\r\n let h = 200;\r\n let { min, max } = geometry.boundingBox;\r\n let offset = new Three.Vector2(0 - min.x, 0 - min.y);\r\n let range = new Three.Vector2(max.x - min.x, max.y - min.y);\r\n\r\n geometry.faceVertexUvs[0] = geometry.faces.map(face => {\r\n let v1 = geometry.vertices[face.a];\r\n let v2 = geometry.vertices[face.b];\r\n let v3 = geometry.vertices[face.c];\r\n return [\r\n new Three.Vector2(\r\n (v1.x + offset.x) / (range.x + h),\r\n (v1.y + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v2.x + offset.x) / (range.x + h),\r\n (v2.y + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v3.x + offset.x) / (range.x + h),\r\n (v3.y + offset.y) / (range.y + h)\r\n )\r\n ];\r\n });\r\n\r\n geometry.uvsNeedUpdate = true;\r\n};\r\n\r\n/*\r\n Remove specified type of 3d object easily\r\n*/\r\nexport function deleteSpecifiedMeshObjects(type) {\r\n let childLen = planData.plan.children.length;\r\n\r\n let children = [];\r\n for (let i = 0; i < childLen; i++) {\r\n if (planData.plan.children[i].name != type)\r\n children.push(planData.plan.children[i]);\r\n }\r\n planData.plan.children = children;\r\n}\r\n\r\nexport function getMeshesFromScene() {\r\n let childLen = planData.plan.children.length;\r\n\r\n let children = [];\r\n for (let i = 0; i < childLen; i++) {\r\n if (planData.plan.children[i].type == OBJTYPE_MESH)\r\n children.push(planData.plan.children[i]);\r\n }\r\n\r\n return children;\r\n}\r\n\r\nexport function threedfabs(a) {\r\n return a > 0 ? a : -a;\r\n}\r\n\r\nexport function getDistanceBetweenLineSegment(pos1, pos2, pos3, pos4) {\r\n if (pos1.x == pos2.x && pos3.x == pos4.x) return pos3.x - pos1.x;\r\n else if (pos1.y == pos2.y && pos3.y == pos4.y) return pos3.y - pos1.y;\r\n else return -1;\r\n}\r\n\r\n/**\r\n * check to see if an item is suitable for the given doorStyle.\r\n * @param _item\r\n * @returns true if it's not suitable.\r\n */\r\nexport function showYelloBox(_item) {\r\n let doorStyle = _item?.doorStyle;\r\n\r\n // If doorStyle is an Immutable Map, convert to plain JS\r\n if (doorStyle && typeof doorStyle.toJS === 'function') {\r\n doorStyle = doorStyle.toJS();\r\n }\r\n\r\n const isItemCabinet = _item?.category === 'cabinet';\r\n const cds = doorStyle?.doorStyles?.cds;\r\n\r\n // hasItemCDS: item is suitable if its itemID exists in cds\r\n const hasItemCDS =\r\n isItemCabinet && Array.isArray(cds)\r\n ? cds.some(element => element.itemID === _item.itemID)\r\n : false;\r\n\r\n // return true if it's a cabinet but not suitable for the current doorStyle\r\n return isItemCabinet && !hasItemCDS;\r\n}\r\n\r\nfunction isSimilar(a, b) {\r\n if (threedfabs(a - b) <= 0.01) return 1;\r\n return 0;\r\n}\r\n\r\nexport function sameSign(pos1, pos2, pos3) {\r\n let ch1 = 0.0;\r\n let ch2 = 1.0;\r\n if (isSimilar(pos1.x, pos2.x) && isSimilar(pos1.x, pos3.x)) {\r\n ch1 = (pos2.y - pos1.y) * (pos3.y - pos1.y);\r\n } else if (isSimilar(pos1.y, pos2.y) && isSimilar(pos1.y, pos3.y)) {\r\n ch1 = (pos2.x - pos1.x) * (pos3.x - pos1.x);\r\n } else {\r\n ch1 = ((pos2.y - pos1.y) * 1.0) / (pos2.x - pos1.x);\r\n ch2 = ((pos3.y - pos1.y) * 1.0) / (pos3.x - pos1.x);\r\n }\r\n if (ch1 * ch2 >= 0) return 1;\r\n return 0;\r\n}\r\n\r\nexport function getTotalDistance(pos, rect) {\r\n let sum = 0;\r\n for (let i = 0; i < rect.length; i++) {\r\n sum += verticesDistance(pos, rect[i]);\r\n }\r\n return sum;\r\n}\r\nconst applyTexture = (material, texture, length, height) => {\r\n if (texture) {\r\n material.map = texture;\r\n material.needsUpdate = true;\r\n material.map.wrapS = Three.RepeatWrapping;\r\n material.map.wrapT = Three.RepeatWrapping;\r\n material.map.repeat.set(length * 0.01, height * 0.01);\r\n\r\n if (texture.normal) {\r\n material.normalMap = loadTexture(texture.normal.uri);\r\n material.normalScale = new Vector2(\r\n texture.normal.normalScaleX,\r\n texture.normal.normalScaleY\r\n );\r\n material.normalMap.wrapS = Three.RepeatWrapping;\r\n material.normalMap.wrapT = Three.RepeatWrapping;\r\n material.normalMap.repeat.set(\r\n length * texture.normal.lengthRepeatScale,\r\n height * texture.normal.heightRepeatScale\r\n );\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {{is_corner:number,itemInfo:Item,layoutpos:string,pos:{x:number,y:number},rect:[{x:number,y:number}],\r\n * rotRad:number,size:{depth:number,width:number,height:number}}} item\r\n * @param {Layer} layer\r\n * @param {{boundingBox:Box3,catalog:Catalog,grid: Object3D,plan: Object3D,sceneData: Scene,sceneGraph}} planData\r\n * @param {Scene} scene\r\n */\r\nexport function createBacksplash(item, layer, planData, scene) {\r\n let { sceneGraph } = planData;\r\n let selectedLayer = planData.sceneData.selectedLayer;\r\n /**\r\n * @type {[{backsplash,info:{rotY:number,posX:number,posY:number,posZ:number,splashWidth:number,splashHeight:number,splashDepth:number,id:string}}]}\r\n */\r\n let backsplashes = sceneGraph.layers[selectedLayer].backsplashes;\r\n let backsplashApplied = layer.get('backsplashApplied');\r\n let name = 'backsplash' + item.itemInfo.id;\r\n let index = backsplashes.findIndex(item => item.backsplash.name === name);\r\n let itemToSave = { backsplash: null, info: {} };\r\n\r\n if (!item.itemInfo.backsplashVisible) {\r\n // If backsplash is not visible\r\n if (index >= 0) {\r\n backsplashes.splice(index, 1); // Remove from backsplashes array\r\n }\r\n return;\r\n }\r\n\r\n // Get wall items\r\n\r\n let i,\r\n wallItems = [];\r\n let allWallItems = GeometryUtils.getAllItemSpecified(\r\n scene,\r\n planData.catalog,\r\n WALL_CABINET_LAYOUTPOS\r\n );\r\n for (i = 0; i < allWallItems.others.length; i++)\r\n wallItems.push(allWallItems.others[i]);\r\n if (allWallItems.cur) wallItems.push(allWallItems.cur);\r\n\r\n // Get information of item itself\r\n\r\n let altitude = item.itemInfo.properties.get('altitude').get('_length');\r\n let altitudeUnit =\r\n item.itemInfo.properties.get('altitude').get('_unit') || 'cm';\r\n altitude = convert(altitude).from(altitudeUnit).to('cm');\r\n let thickness = 1,\r\n /** Height --- altitude */ depth;\r\n\r\n // Calc wall & hole items info\r\n\r\n /**\r\n * Wall & Hole items info\r\n * @type {[{x:number,width:number,altitude:number}]}\r\n */\r\n let altItems = [],\r\n flag = false;\r\n\r\n wallItems.map(wallItem => {\r\n let altitude = wallItem.itemInfo.properties.get('altitude').get('_length');\r\n let altitudeUnit =\r\n wallItem.itemInfo.properties.get('altitude').get('_unit') || 'cm';\r\n altitude = convert(altitude).from(altitudeUnit).to('cm');\r\n altItems.push({ x: wallItem.pos.x, width: wallItem.size.width, altitude });\r\n });\r\n layer.holes.map(hole => {\r\n let width = hole.properties.getIn(['width', 'length']);\r\n let altitude = hole.properties.getIn(['altitude', 'length']);\r\n altItems.push({ x: hole.x, width, altitude });\r\n });\r\n\r\n if (altItems.length > 0) {\r\n depth = altItems[0].altitude;\r\n altItems.map(altItem => {\r\n if (\r\n item.pos.x + item.size.width / 2 >= altItem.x - altItem.width / 2 &&\r\n item.pos.x - item.size.width / 2 <= altItem.x + altItem.width / 2\r\n ) {\r\n if (depth >= altItem.altitude) {\r\n depth = altItem.altitude;\r\n flag = true;\r\n }\r\n }\r\n });\r\n }\r\n if (!flag) depth = 52 * 2.54;\r\n\r\n // Get backsplash info\r\n\r\n let posX =\r\n item.pos.x - Math.sin(item.rotRad) * (item.size.depth / 2 - thickness);\r\n let posY = altitude + depth / 2;\r\n let posZ =\r\n -item.pos.y - Math.cos(item.rotRad) * (item.size.depth / 2 - thickness);\r\n // TODO If you want apply backsplash to walls that's not vertical or horizontal ( slope )\r\n // You must update this calcuating rotY\r\n let rotY = item.rotRad;\r\n\r\n let posX1 =\r\n item.pos.x + Math.cos(item.rotRad) * (item.size.width / 2 - thickness);\r\n let posY1 = altitude + depth / 2;\r\n let posZ1 =\r\n -item.pos.y - Math.sin(item.rotRad) * (item.size.width / 2 - thickness);\r\n // TODO If you want apply backsplash to walls that's not vertical or horizontal ( slope )\r\n // You must update this calcuating rotY\r\n let rotY1 = item.rotRad + Math.PI / 2;\r\n\r\n let splashWidth = item.size.width;\r\n let splashHeight = depth;\r\n let splashDepth = thickness;\r\n\r\n // Find mergeable other backsplashes\r\n\r\n let info,\r\n wholeWidth,\r\n /** Width factor */ factor,\r\n distance,\r\n halfWidth,\r\n /** To get new center */ centerFactor;\r\n\r\n for (let back of backsplashes) {\r\n info = back.info;\r\n if (info.height === splashHeight && info.rotY === rotY) {\r\n factor = Math.cos(rotY) || 1;\r\n distance = Math.hypot(posX - info.posX, posZ - info.posZ) / factor;\r\n halfWidth = (info.width + splashWidth) / 2;\r\n\r\n if (Math.abs(distance - halfWidth) < 1e-2) {\r\n // dispose `back`\r\n if (info.id) {\r\n deleteSpecifiedMeshObjects('backsplash' + info.id);\r\n }\r\n\r\n // Get center position\r\n wholeWidth = info.width + splashWidth;\r\n centerFactor = info.width / wholeWidth;\r\n posX = posX + centerFactor * (info.posX - posX);\r\n posZ = posZ + centerFactor * (info.posZ - posZ);\r\n\r\n splashWidth = wholeWidth;\r\n }\r\n }\r\n }\r\n\r\n itemToSave.info.posX = posX;\r\n itemToSave.info.posY = posY;\r\n itemToSave.info.posZ = posZ;\r\n\r\n itemToSave.info.rotY = rotY;\r\n\r\n itemToSave.info.width = splashWidth;\r\n itemToSave.info.height = splashHeight;\r\n itemToSave.info.depth = splashDepth;\r\n\r\n // Make material\r\n\r\n let texture = layer.get('backsplash');\r\n var areaMaterial = new Three.MeshStandardMaterial({\r\n side: Three.DoubleSide,\r\n metalness: texture.metalness,\r\n roughness: texture.roughness\r\n });\r\n let interiortexture = loadTexture(texture.uri);\r\n applyTexture(\r\n areaMaterial,\r\n interiortexture,\r\n splashWidth * 1.5,\r\n splashHeight * 1.5\r\n );\r\n\r\n // Make geometry\r\n let geometry = new Three.BoxGeometry(splashWidth, splashHeight, splashDepth);\r\n\r\n // Make backsplash mesh\r\n\r\n let backsplash = (itemToSave.backsplash = new Three.Mesh(\r\n geometry,\r\n areaMaterial\r\n ));\r\n backsplash.position.x = itemToSave.info.posX;\r\n backsplash.position.y = itemToSave.info.posY;\r\n backsplash.position.z = itemToSave.info.posZ;\r\n backsplash.rotation.y = itemToSave.info.rotY;\r\n\r\n let allLines = GeometryUtils.getAllLines(layer);\r\n let allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n\r\n if (item.is_corner && GeometryUtils.isSnappedSideLine(item, allLineRects)) {\r\n // corner cabinet item.itemInfo.getIn([\"cabinet_category\"]) === \"Corner Base Cabinets\"\r\n let geometry1 = new Three.BoxGeometry(\r\n splashWidth,\r\n splashHeight,\r\n splashDepth\r\n );\r\n // Make backsplash mesh\r\n //console.log(sceneGraph.layers[\"layer-1\"].lines);\r\n let backsplash1 = (itemToSave.backsplash = new Three.Mesh(\r\n geometry1,\r\n areaMaterial\r\n ));\r\n backsplash1.position.x = posX1;\r\n backsplash1.position.y = posY1;\r\n backsplash1.position.z = posZ1;\r\n backsplash1.rotation.y = rotY1;\r\n let newBacksplash = new Group();\r\n newBacksplash.add(backsplash);\r\n newBacksplash.add(backsplash1);\r\n backsplash = newBacksplash;\r\n }\r\n\r\n itemToSave.info.id = item.itemInfo.id;\r\n\r\n deleteSpecifiedMeshObjects('backsplash' + item.itemInfo.id);\r\n\r\n if (item.rotRad % (Math.PI / 2) === 0) planData.plan.add(backsplash);\r\n\r\n backsplash.name = name;\r\n backsplash.visible =\r\n item.itemInfo.get('backsplashVisible') &&\r\n backsplashApplied &&\r\n item.rotRad % (Math.PI / 2) === 0;\r\n\r\n // Save to scene graph\r\n\r\n if (index < 0) {\r\n backsplashes.push(itemToSave);\r\n } else {\r\n disposeObject(backsplashes[index].backsplash);\r\n backsplashes.splice(index, 1, itemToSave);\r\n }\r\n}\r\n\r\n/**\r\n * @param {Map} item - Selected Item\r\n */\r\nfunction addMGMesh(molding, planData, layer, flag = false) {\r\n let point = [];\r\n let data = molding?.molding?.data;\r\n if (isEmpty(data)) return;\r\n\r\n let { paths, svg_width, svg_height } = data;\r\n for (let i = 0; i < paths.length; i++) {\r\n let path = paths[i];\r\n for (let j = 0, jl = path.subPaths.length; j < jl; j++) {\r\n let subPath = new Three.Path();\r\n if (path.subPaths[j].hasOwnProperty('metadata')) {\r\n subPath.fromJSON(path.subPaths[j]);\r\n } else {\r\n subPath = path.subPaths[j];\r\n }\r\n point = subPath.getPoints();\r\n }\r\n }\r\n\r\n _addMGMesh(molding, planData, layer, point, svg_width, svg_height, flag);\r\n}\r\n\r\nconst isBaseCabinet = item => {\r\n return item.layoutpos === BASE_CABINET_LAYOUTPOS;\r\n};\r\n\r\n/**\r\n * @param data - Molding SVG Points\r\n */\r\n\r\n// function assignUVs\r\nfunction _addMGMesh(\r\n molding,\r\n planData,\r\n layer,\r\n data,\r\n svg_width,\r\n svg_height,\r\n flag\r\n) {\r\n let child = molding.molding;\r\n let material = getDoorStyleMaterial(\r\n molding.items,\r\n planData,\r\n layer,\r\n child.name\r\n );\r\n if (!material) return;\r\n material = new Three.MeshStandardMaterial(material);\r\n // let texture = loadTexture(material.map.image.src);\r\n // var material1 = new Three.MeshLambertMaterial( { map:texture } );\r\n material.side = parseInt(Three.DoubleSide);\r\n // let layoutType = molding.items[0].layoutpos;\r\n // let visible = molding.items[0];\r\n molding.pointGroups.forEach(pointGroup => {\r\n let geometry = new Three.BufferGeometry();\r\n let length = data.length; //point array\r\n let temp_unit = child.height_unit;\r\n if (temp_unit === 'inch') {\r\n child.height = convert(child.height).from('in').to('cm');\r\n child.height_unit = 'cm';\r\n }\r\n temp_unit = child.width_unit;\r\n if (temp_unit === 'inch') {\r\n child.width = convert(child.width).from('in').to('cm');\r\n child.width_unit = 'cm';\r\n }\r\n temp_unit = child.length_unit;\r\n if (temp_unit === 'inch') {\r\n child.length = convert(child.length).from('in').to('cm');\r\n child.length_unit = 'cm';\r\n }\r\n geometry.needsUpdate = true;\r\n geometry = moldingVertices(\r\n pointGroup,\r\n geometry,\r\n data,\r\n child,\r\n svg_width,\r\n svg_height,\r\n molding.pointGroups.length\r\n );\r\n let total = geometry.attributes.position.count;\r\n let len = geometry.attributes.position.count / length;\r\n if (\r\n !GeometryUtils.samePoints(\r\n pointGroup[0],\r\n pointGroup[pointGroup.length - 1]\r\n )\r\n ) {\r\n len--;\r\n }\r\n for (let i = 0; i < len; i++) {\r\n for (let j = i * length; j < (i + 1) * length - 1; j++) {\r\n let f_a1 = j;\r\n let f_b1 = (j + length) % total;\r\n let f_c1 = (j + length + 1) % total;\r\n let f_a2 = j;\r\n let f_b2 = j + 1;\r\n let f_c2 = f_c1;\r\n let indices = [];\r\n if (geometry.index !== null) {\r\n indices = Array.from(geometry.index.array);\r\n }\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n geometry.setIndex(indices);\r\n }\r\n }\r\n\r\n // handle molding texture\r\n // (0, e[i]) ------------- (1, e[i])\r\n // ----------- --- -----------\r\n // ----------- --- -----------\r\n // ----------- --- -----------\r\n // ----------- --- -----------\r\n // (0, e[i+1]) ------------- (1, e[i+1])\r\n geometry = geometry.toNonIndexed();\r\n let sumDistance = 0;\r\n let sumDistanceArray = [0];\r\n let finalDistance = 0;\r\n let uvs_element_array = [];\r\n for (let i = 0; i < data.length - 1; i++) {\r\n let v1 = { x: data[i].x, y: data[i].y };\r\n let v2 = { x: data[i + 1].x, y: data[i + 1].y };\r\n\r\n let posDistance = verticesDistance(v1, v2);\r\n sumDistance += posDistance;\r\n if (i === data.length - 2) finalDistance = sumDistance;\r\n sumDistanceArray.push(sumDistance);\r\n }\r\n for (let i = 0; i < sumDistanceArray.length; i++) {\r\n uvs_element_array.push(sumDistanceArray[i] / finalDistance);\r\n }\r\n let uvs = [];\r\n let uvs_item = [];\r\n for (let i = 0; i < uvs_element_array.length - 1; i++) {\r\n uvs_item = [\r\n 0,\r\n uvs_element_array[i],\r\n 1,\r\n uvs_element_array[i],\r\n 1,\r\n uvs_element_array[i + 1],\r\n 1,\r\n uvs_element_array[i + 1],\r\n 0,\r\n uvs_element_array[i + 1],\r\n 0,\r\n uvs_element_array[i]\r\n ];\r\n uvs.push(...uvs_item);\r\n }\r\n let all_uvs = [];\r\n for (let i = 0; i < pointGroup.length; i++) {\r\n all_uvs.push(...uvs);\r\n }\r\n geometry.setAttribute(\r\n 'uv',\r\n new Three.BufferAttribute(new Float32Array(all_uvs), 2)\r\n );\r\n geometry.computeVertexNormals();\r\n\r\n let fbm3d = new Three.Mesh(geometry, material);\r\n fbm3d.position.x = molding.pos.x;\r\n fbm3d.position.z = -molding.pos.y;\r\n fbm3d.position.y = molding.pos.z;\r\n planData.plan.add(fbm3d);\r\n fbm3d.name = child.name + molding.id + 'molding';\r\n molding.meshes.push(fbm3d);\r\n fbm3d.visible = true;\r\n fbm3d.castShadow = true;\r\n });\r\n}\r\n\r\nfunction deleteCTMesh(countertop, planData, layer) {\r\n log('--deleteCTMesh', countertop);\r\n if (countertop.items.length == 1) {\r\n showItemCT(countertop.items[0], countertop, false, planData, layer);\r\n } else {\r\n let ct3d = countertop.ct3d;\r\n if (ct3d) {\r\n planData.plan.remove(ct3d);\r\n disposeObject(ct3d);\r\n }\r\n }\r\n}\r\n\r\nexport function deleteMGMesh(molding, planData, mode = null) {\r\n // mode is 3D or elevation\r\n molding.meshes.forEach(mesh => {\r\n if (isElevationView(mode)) {\r\n // when elevation mode, remove obj same as selected global molding_name in platnData.plan\r\n planData.plan.children?.forEach(obj => {\r\n let parent = obj.parent;\r\n if (obj.name.match(mesh.name)) parent.remove(obj);\r\n });\r\n } else {\r\n // when 3D mode\r\n planData.plan.remove(mesh);\r\n disposeObject(mesh);\r\n }\r\n });\r\n molding.meshes = [];\r\n}\r\n\r\nfunction log() {\r\n // console.log(...arguments);\r\n}\r\n\r\nfunction addCountertop(CTArray, addItem, planData, layer) {\r\n log('addCountertop', [...CTArray], addItem.id);\r\n let tmp = planData;\r\n tmp = tmp && tmp.catalog.getElement(addItem.type);\r\n if (!tmp)\r\n tmp = planData.catalog.getElement(\r\n returnReplaceableDeepSearchType(addItem.type)\r\n );\r\n let long_name = tmp && tmp.long_name;\r\n if (long_name.includes('Sink ')) return;\r\n\r\n let newCT = createCTFromItem(\r\n addItem,\r\n planData.sceneGraph.unit,\r\n planData.catalog\r\n );\r\n let oldCT = null;\r\n let extCT = false;\r\n let extCTIndex = -1;\r\n\r\n let tryMergeCT = function () {\r\n extCTIndex = CTArray.findIndex(el => {\r\n extCT = tryAdjacent(newCT, el);\r\n return extCT != false;\r\n });\r\n return extCTIndex >= 0;\r\n };\r\n while (tryMergeCT()) {\r\n oldCT = CTArray.splice(extCTIndex, 1)[0];\r\n deleteCTMesh(newCT, planData, layer);\r\n deleteCTMesh(oldCT, planData, layer);\r\n newCT = extCT;\r\n }\r\n addCTMesh(newCT, planData, layer);\r\n CTArray.push(newCT);\r\n}\r\n\r\nexport function deleteCountertop(CTArray, delItem, planData, layer) {\r\n if (delItem == undefined) {\r\n return;\r\n }\r\n log('deleteCountertop', [...CTArray], delItem.id);\r\n let delCT = null;\r\n let delItemIndex = -1;\r\n let delCTIndex = CTArray.findIndex(el => {\r\n delItemIndex = el.items.findIndex(el => el.id == delItem.id);\r\n return delItemIndex >= 0;\r\n });\r\n\r\n if (delCTIndex < 0) return;\r\n\r\n delCT = CTArray.splice(delCTIndex, 1)[0];\r\n\r\n if (delCT.items.length > 1) {\r\n deleteCTMesh(delCT, planData, layer);\r\n\r\n let ct1 = delCT.items.slice(0, delItemIndex);\r\n let ct2 = delCT.items.slice(delItemIndex + 1);\r\n\r\n [ct1, ct2].forEach(cts => {\r\n if (cts.length == 0) return;\r\n let newCT = createCTFromItems(\r\n cts,\r\n planData.sceneGraph.unit,\r\n planData.catalog\r\n );\r\n CTArray.push(newCT);\r\n addCTMesh(newCT, planData, layer);\r\n });\r\n }\r\n}\r\n\r\nexport function deleteAllMolding(\r\n MGArray,\r\n delItem,\r\n planData,\r\n oldSceneLayer,\r\n newSceneLayer\r\n) {\r\n let tempMGArray = [...MGArray];\r\n if (isEmpty(delItem)) {\r\n return tempMGArray;\r\n }\r\n\r\n // remove the MGs which includes delItem\r\n tempMGArray = tempMGArray.filter(mg => {\r\n if (mg.items.some(it => it.id === delItem.id)) {\r\n deleteMGMesh(mg, planData, null);\r\n return false;\r\n } else return true;\r\n });\r\n\r\n if (newSceneLayer !== null) {\r\n // find the snapped items with delItem\r\n let snappedItems = [];\r\n oldSceneLayer.items.toArray().forEach(oItem => {\r\n if (\r\n oItem.category === 'cabinet' &&\r\n oItem.id !== delItem.id &&\r\n MoldingUtils.isItemSnappedItem(delItem, oItem)\r\n ) {\r\n snappedItems.push(oItem);\r\n }\r\n });\r\n\r\n // update molding group array with snapped items in the new scene layer\r\n for (let i = 0; i < snappedItems.length; i++) {\r\n tempMGArray = updateMoldingGroupArray(\r\n tempMGArray,\r\n snappedItems[i],\r\n planData,\r\n newSceneLayer,\r\n null,\r\n null,\r\n 0\r\n );\r\n }\r\n }\r\n\r\n return tempMGArray;\r\n}\r\n\r\nexport function addMolding(\r\n MGArray,\r\n addItem,\r\n planData,\r\n layer,\r\n itemActions,\r\n mode\r\n) {\r\n if (\r\n addItem.selected &&\r\n [MODE_DRAGGING_ITEM_3D, MODE_ROTATING_ITEM_3D].includes(mode)\r\n )\r\n return false;\r\n\r\n // If the item is not available for current doorStyle\r\n if (showYelloBox(addItem))\r\n // Do not add molding to that item\r\n return MGArray;\r\n\r\n // if (\r\n // !(\r\n // (addItem.layoutpos === BASE_CABINET_LAYOUTPOS &&\r\n // !GeometryUtils.isSnappedLine(\r\n // MoldingUtils.getItemRect(addItem),\r\n // GeometryUtils.buildRectFromLines(\r\n // layer,\r\n // GeometryUtils.getAllLines(layer)\r\n // )\r\n // )) ||\r\n // ((addItem.layoutpos === WALL_CABINET_LAYOUTPOS ||\r\n // addItem.layoutpos === TALL_CABINET_LAYOUTPOS) &&\r\n // GeometryUtils.isSnappedLine(\r\n // MoldingUtils.getItemRect(addItem),\r\n // GeometryUtils.buildRectFromLines(\r\n // layer,\r\n // GeometryUtils.getAllLines(layer)\r\n // )\r\n // ))\r\n // )\r\n // )\r\n // return false;\r\n\r\n // update the molding group array.\r\n let temp_MGArray = updateMoldingGroupArray(\r\n MGArray,\r\n addItem,\r\n planData,\r\n layer,\r\n itemActions,\r\n mode,\r\n 0\r\n );\r\n temp_MGArray.forEach(mg => {\r\n let moldingMesh = mg.meshes[0];\r\n if (isElevationView(mode)) {\r\n if (!isEmpty(moldingMesh)) {\r\n replaceMeshesWithLineSegments(moldingMesh);\r\n }\r\n }\r\n });\r\n return temp_MGArray;\r\n}\r\n\r\nexport function updateMoldingGroupArray(\r\n MGArray,\r\n selItem,\r\n planData,\r\n layer,\r\n itemActions = null,\r\n mode = null,\r\n cnt\r\n) {\r\n try {\r\n cnt++;\r\n if (cnt > 100) return MGArray;\r\n let temp_MGArray = [...MGArray];\r\n if (isEmpty(selItem)) return temp_MGArray;\r\n const isEnableMolding = MoldingUtils.isEnableItemForMolding(layer, selItem);\r\n // Make a items group with selItem to create the new MG(molding group) array of selItem\r\n let itemsForGroup = [selItem];\r\n let i = 0;\r\n while (i < itemsForGroup.length) {\r\n layer.items.toArray().forEach(curItem => {\r\n if (\r\n !itemsForGroup.some(it => it.id === curItem.id) &&\r\n curItem.category === 'cabinet' &&\r\n MoldingUtils.isSameMoldingLayoutpos(curItem, itemsForGroup[i]) &&\r\n MoldingUtils.isItemSnappedItem(itemsForGroup[i], curItem)\r\n ) {\r\n itemsForGroup.push(curItem);\r\n }\r\n });\r\n i++;\r\n }\r\n\r\n // Create the new MG(molding group) array of selItem\r\n let new_MGArray = MoldingUtils.getAllMoldingGroups(layer, itemsForGroup);\r\n\r\n // get molding settings of update molding from adjoined item's molding\r\n let changeMoldings = [];\r\n new_MGArray.forEach(mg => {\r\n if (mg.items.some(it => it.id === selItem.id) && mg.items.length > 1) {\r\n const destItem = mg.items.find(it => it.id !== selItem.id);\r\n const destMolding = destItem.molding.find(\r\n md => md.location_type === mg.location_type\r\n );\r\n\r\n // if current item has not destination molding then set it to the current molding\r\n if (\r\n !isEmpty(destMolding) &&\r\n !selItem.molding.some(\r\n md => md.location_type === destMolding.location_type\r\n )\r\n ) {\r\n // only update with the same height cabinet or update the bottom molding setting\r\n // itemActions.setMolding(destMoldings[i], false);\r\n changeMoldings.push(destMolding);\r\n } else if (\r\n isEmpty(destMolding) &&\r\n selItem.molding.some(md => md.location_type === mg.location_type)\r\n ) {\r\n // if current item has more molding than adjoined then remove theses moldings\r\n // itemActions.setMolding(selItem.molding[i], false);\r\n changeMoldings.push(\r\n selItem.molding.find(md => md.location_type === mg.location_type)\r\n );\r\n }\r\n }\r\n });\r\n\r\n let regenMGItemList = [];\r\n // An old MG and a new MG include a same item && The location_type of Two MGs are same\r\n // Then replace the old MG with the new MG\r\n temp_MGArray = temp_MGArray.filter(oldMG => {\r\n const filteredNewMGList = new_MGArray.filter(\r\n mg => mg.location_type === oldMG.location_type\r\n );\r\n if (isEmpty(filteredNewMGList)) {\r\n return true;\r\n }\r\n for (let k = 0; k < filteredNewMGList.length; k++) {\r\n const newMG = filteredNewMGList[k];\r\n if (oldMG.items.some(it => it.id === selItem.id)) {\r\n // if current action is a seprating item from group, then have to regenerate the MGs of old snapped items\r\n if (\r\n oldMG.items.filter(\r\n oIt => !newMG.items.some(nIt => nIt.id === oIt.id)\r\n ).length > 0\r\n ) {\r\n oldMG.items.forEach(oIt => {\r\n if (\r\n oIt.id !== selItem.id &&\r\n !regenMGItemList.some(rIt => rIt.id === oIt.id)\r\n )\r\n regenMGItemList.push(oIt);\r\n });\r\n }\r\n }\r\n // remove the old MG meshes\r\n for (let i = 0; i < oldMG.items.length; i++) {\r\n const oItem = oldMG.items[i];\r\n for (let j = 0; j < newMG.items.length; j++) {\r\n const nItem = newMG.items[j];\r\n if (oItem.id === nItem.id) {\r\n deleteMGMesh(oldMG, planData, mode);\r\n // if (oldMG.items.length > 1) {\r\n // // separating item from group\r\n // oldMG.items.splice(i, 1);\r\n // // update the old molding group info\r\n // const mIdx = oldMG.items[0].molding.findIndex(\r\n // m => m.location_type == oldMG.location_type\r\n // );\r\n // if (mIdx >= 0) {\r\n // let molding = oldMG.items[0].molding[mIdx];\r\n // oldMG = MoldingUtils.createMonldingGroup(\r\n // oldMG,\r\n // layer,\r\n // molding,\r\n // planData.catalog\r\n // );\r\n // addMGMesh(oldMG, planData, layer);\r\n // }\r\n // return true;\r\n // }\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n if (changeMoldings.length === 0 && isEnableMolding) {\r\n // refresh mesh of the updating molding groups\r\n new_MGArray.forEach((mg, index) => {\r\n if (\r\n mg.items[0].molding.some(\r\n mol => mol.location_type === mg.location_type\r\n )\r\n ) {\r\n let molding = mg.items[0].molding.filter(\r\n mol => mol.location_type === mg.location_type\r\n )[0];\r\n if (\r\n mg.molding === null ||\r\n mg.molding.itemID !== mol.itemID ||\r\n mg.lines === null ||\r\n mg.points === null\r\n ) {\r\n if (mg.molding !== null && mg.molding.itemID !== molding.itemID) {\r\n deleteMGMesh(mg, planData, mode);\r\n }\r\n mg = MoldingUtils.createMonldingGroup(\r\n mg,\r\n layer,\r\n molding,\r\n planData.catalog\r\n );\r\n }\r\n if (!mg.meshes.length) {\r\n addMGMesh(mg, planData, layer);\r\n }\r\n } else {\r\n deleteMGMesh(mg, planData, mode);\r\n }\r\n });\r\n }\r\n\r\n new_MGArray.forEach(mg => temp_MGArray.push(mg));\r\n\r\n regenMGItemList.forEach(it => {\r\n temp_MGArray = updateMoldingGroupArray(\r\n temp_MGArray,\r\n it,\r\n planData,\r\n layer,\r\n itemActions,\r\n mode,\r\n cnt\r\n );\r\n });\r\n\r\n if (changeMoldings.length > 0 && itemActions !== null) {\r\n setTimeout(() => {\r\n changeMoldings.forEach(chMolding => {\r\n itemActions.setMolding(chMolding, false);\r\n });\r\n }, 200);\r\n }\r\n\r\n return temp_MGArray;\r\n } catch (e) {\r\n console.log('update molding catched :', e);\r\n return MGArray;\r\n }\r\n}\r\n\r\nexport function removeSelItemMesh(MGArray, selItem, planData, mode) {\r\n if (selItem) {\r\n if (!selItem.selected) {\r\n return;\r\n }\r\n MGArray.forEach(mg => {\r\n if (mg.items.some(it => it.id === selItem.id))\r\n deleteMGMesh(mg, planData, mode);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Flip door handle\r\n * @param item Scene state item ( redux )\r\n * @param item3D Mesh\r\n * @param {Boolean} flip Determines handle position.\r\n * @note When `flip` is set\r\n *\r\n * `true`\r\n * * Left side door - use left handle (LL)\r\n * * Right side door - use right handle (RR)\r\n *\r\n * `false`\r\n * * Left side door - use right handle (LR)\r\n * * Right side door - use left handle (RL)\r\n *\r\n * And one-door-cabinet is the same case with the left door of two-door-cabinet\r\n */\r\nexport function updateDoorHandleMesh(_, item3D, flip) {\r\n if (!item3D) {\r\n console.error('Item mesh is undefined.');\r\n return;\r\n }\r\n\r\n /**\r\n * Mesh whose name pass this regexp is a place holder for a door\r\n * which is the parent or grand parent of a door mesh and its handles\r\n */\r\n let doorReg = /ph_.*[^(drawer)]_door(?:_(L|R))?(?:_[1-9])?$/;\r\n let doorHandleReg = /ph_.*_door_.*_handle_(L|R)?(_[1-9])?/;\r\n\r\n item3D.traverse(child => {\r\n /**\r\n * Hold the name of the place holder for door and its position\r\n * @type {[string,\"L\"|\"R\"|undefined]}\r\n */\r\n let doorRegResult = doorReg.exec(child.name);\r\n if (doorRegResult) {\r\n // `child` is place holder for door mesh, and also grand parent of on[0]e\r\n let phDoor = child.children[0];\r\n if (!phDoor) {\r\n return console.error('Group is no valid.');\r\n }\r\n\r\n let doorHandle = null;\r\n let phRight = null;\r\n let phLeft = null;\r\n\r\n // Find door_handle, ph_left, ph_right 3D item\r\n phDoor.traverse(childOfDoor => {\r\n /**\r\n * @type {[string, \"L\"|\"R\"]}\r\n */\r\n let result = doorHandleReg.exec(childOfDoor.name);\r\n if (result !== null) {\r\n // `childOfDoor` is place holder for door handle\r\n\r\n switch (result[1]) {\r\n case 'L':\r\n phLeft = childOfDoor;\r\n break;\r\n case 'R':\r\n phRight = childOfDoor;\r\n break;\r\n default:\r\n console.error('Place holder type should be L or R.');\r\n return;\r\n }\r\n\r\n if (childOfDoor.children.length !== 0) {\r\n // It has a door handle\r\n doorHandle = childOfDoor.children[0];\r\n }\r\n }\r\n });\r\n\r\n // Change door handle position\r\n if (doorHandle && phLeft && phRight) {\r\n // Remove handles for re-addition\r\n if (phLeft.children.length) {\r\n phLeft.remove(doorHandle);\r\n }\r\n if (phRight.children.length) {\r\n phRight.remove(doorHandle);\r\n }\r\n\r\n switch (doorRegResult[1]) {\r\n case undefined: // Single door cabinet\r\n case 'R': // Right side door\r\n (flip ? phRight : phLeft).add(doorHandle);\r\n break;\r\n case 'L': // Left side door\r\n (flip ? phLeft : phRight).add(doorHandle);\r\n break;\r\n }\r\n } else {\r\n console.error('door_handle or ph_left or ph_right is null.');\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function addWarningBox(itemId, altitude, planData) {\r\n deleteSpecifiedMeshObjects('WarningBox' + itemId);\r\n let item3D =\r\n planData.sceneGraph.layers[planData.sceneData.selectedLayer].items[itemId];\r\n if (item3D == undefined) return;\r\n let altitudeLength = convert(altitude).from('in').to('cm');\r\n let sBounding = item3D.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let height = sBounding.max.y - sBounding.min.y;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let warnBoxGeom = new Three.BoxGeometry(width, height, depth);\r\n let warnBoxObj = new Three.Mesh(\r\n warnBoxGeom,\r\n new Three.MeshBasicMaterial({\r\n color: 0xff2200,\r\n opacity: 0.8,\r\n transparent: true,\r\n blending: Three.MultiplyBlending\r\n })\r\n );\r\n let box = new Three.BoxHelper(warnBoxObj, 0x000000);\r\n box.material.linewidth = 2;\r\n box.material.depthTest = false;\r\n box.renderOrder = 200;\r\n warnBoxObj.add(box);\r\n warnBoxObj.position.set(\r\n item3D.position.x,\r\n altitudeLength + item3D.position.y + height / 2,\r\n item3D.position.z\r\n );\r\n warnBoxObj.rotation.set(\r\n item3D.rotation.x,\r\n item3D.rotation.y,\r\n item3D.rotation.z\r\n );\r\n warnBoxObj.name = 'WarningBox' + itemId;\r\n // planData.plan.add(warnBoxObj);\r\n}\r\nexport function checkCabinetOverlap(itemPos, itemRect, holeItems, planData) {\r\n if (holeItems.length) {\r\n let depth = itemRect.size.depth;\r\n let i;\r\n for (i = 0; i < holeItems.length; i++) {\r\n let hole = holeItems[i];\r\n let holeAlti = hole.altitude;\r\n if (holeAlti >= depth) continue;\r\n if (Math.abs(Math.sin(itemRect.rotRad)) === 1) {\r\n if (\r\n itemPos.y + itemRect.size.width / 2 >= hole.y - hole.width / 2 &&\r\n itemPos.y - itemRect.size.width / 2 <= hole.y + hole.width / 2 &&\r\n (itemRect.rotRad == 0 || itemRect.rotRad == -Math.PI / 2\r\n ? itemPos.x <= hole.x && itemPos.x + itemRect.size.height >= hole.x\r\n : itemPos.x >= hole.x && itemPos.x - itemRect.size.height <= hole.x)\r\n )\r\n break;\r\n } else {\r\n if (\r\n itemPos.x + itemRect.size.width / 2 >= hole.x - hole.width / 2 &&\r\n itemPos.x - itemRect.size.width / 2 <= hole.x + hole.width / 2 &&\r\n (itemRect.rotRad == 0 || itemRect.rotRad == -Math.PI / 2\r\n ? itemPos.y <= hole.y && itemPos.y + itemRect.size.height >= hole.y\r\n : itemPos.y >= hole.y && itemPos.y - itemRect.size.height <= hole.y)\r\n )\r\n break;\r\n }\r\n }\r\n if (i != holeItems.length) {\r\n let altitude = itemRect.itemInfo.properties\r\n .get('altitude')\r\n .get('_length');\r\n let altitudeUnit =\r\n itemRect.itemInfo.properties.get('altitude').get('_unit') || 'cm';\r\n altitude = convert(altitude).from(altitudeUnit).to('cm');\r\n addWarningBox(itemRect.itemInfo.id, altitude, planData);\r\n }\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}