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":"viewer3DElevationDownload.js","names":["_typeof","o","Symbol","iterator","constructor","prototype","Object","defineProperty","exports","value","_react","_interopRequireDefault","require","_propTypes","_reactDom","Three","_interopRequireWildcard","_sceneCreator","_threeMemoryCleaner","_immutablediff","SharedStyle","_constants","_util","_geometry","_convertUnits","_export","_RGBELoader","_cameraControls","_utils","_objectsUtils","e","t","WeakMap","r","n","__esModule","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","_classCallCheck","a","TypeError","_defineProperties","key","_createClass","_toPrimitive","toPrimitive","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_assertThisInitialized","ReferenceError","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","_inherits","create","_setPrototypeOf","CameraControls","install","THREE","Viewer3DElevationDownload","_React$Component","props","_this","state","isLoading","showflag","toolObj","angleObj","waitForRender","lastMousePosition","width","height","renderingID","mode","window","__elevationRendererDownload","renderer","__threeRendererDownload","WebGLRenderer","preserveDrawingBuffer","alpha","antialias","shadowMap","enabled","shadowMapSoft","domElement","style","display","componentDidMount","nextProps","_this2","scene3D","camera","pivot","cameraControls","clock","actions","areaActions","context","holesActions","itemsActions","sceneActions","linesActions","projectActions","catalog","self","scene","setupLight","inbBox","ARRAY_ELEVATION_VIEW_MODES","includes","ambilight","AmbientLight","add","addDirLight","inColor","inIntensity","inPosition","dirLight","DirectionalLight","castShadow","shadow","mapSize","x","shadowMapSize","y","near","far","shadowCameraFar","top","shadowCameraSize","bottom","left","right","position","copy","targetObject","Object3D","bboxCenter","target","updateMatrixWorld","addSpotLight","inTarget","inDistance","spotLight","SpotLight","intensity","color","setHex","angle","distance","penumbra","decay","Vector3","z","Math","max","abs","min","dirLightPos","ceiling","getObjectByName","ceilBBox","Box3","setFromObject","spot1","spot2","spot3","spot4","spotlightDis","vectorIntersectWithMesh","setState","setIsLoading3D","_parseData","parseData","promise","planData","then","objToRemove","plan","traverse","obj","geometry","removeFromParent","bbox","radius","angleInDegrees","angleInRadians","PI","eyeX","sin","eyeZ","cos","setLookAt","boundingBox","area","getIn","selectedLayer","layer","areas","lights","snapBox","msg","layers","id","visible","items","item","doorStyle","name","confirm","init","render","data","_loop","aVertices","lines","vertices","_loop3","realVec","vec","convert","ceilHeight","from","unit","to","UNIT_CENTIMETER","datas","vertex","fLen","sX","sY","eX","eY","len","sqrt","cLen","cX","cY","endLen","vec2","Vector2","light","toIntersect","mouse","gridPlane","grid","raycaster","Raycaster","selectedObject","currentObject","isSelected","bRotate","bMove","bMoveUP","gridMatrix","Matrix4","rayDirection","gridPlanOrigin","Point","sPoint","snapFlag","snapAnimI","snapDelta","t_i","targetPoint","targetRot","targetUVec","targetCRotation","targetObj","targetNumber","allItemRect","allItemSnap","allLines","allLineRects","allLineSnap","allRect","allArea","backsplashVisible","holeItems","GeometryUtils","getHoleItems","removeSnapBox","remove","disposeObject","camToGrid","camPos","mapCursorPosition","altitude","subVectors","camD","rayD","intersectPt","multiplyScalar","applyMatrix4","pointLineDistance","point","line","pX","pY","l1x","l1y","l2x","l2y","pLine","Line","pAngle","lAngle","pDistance","oDistance","directDistance","lineDistance","dX","dY","dPoint","getInterSect","shape1","shape2","count","sl1","sl2","j","el1","el2","flag","getLineInterSect","getRectPoints","pos","rot","rX","rY","cRot","floor","prepareSnap","getAllLines","buildRectFromLines","getAllItems","getAllItemSnap","getAllLineSnap","cur","others","concat","validateSnaps","getAllArea","lineRect","areainfo","sz","size","rect","vert","collisionCheck","tObj","_this3","undefined","userData","layerId","layoutpos","catid","type","cat","elements","info","oPos","clone","sBounding","children","depth","oVertices","itemId","sceneGraph","console","log","ocatid","ocat","olayoutpos","BASE_CABINET_LAYOUTPOS","WALL_CABINET_LAYOUTPOS","tRot","rotation","tPos","tBounding","twidth","tdepth","tVertices","_loop2","properties","v","_ret","collisionHoleCheck","currentItem","selectedItem","returnReplaceableDeepSearchType","otherItem","needSnap","holes","holeID","hole","theight","trot","collisionSlide","item3D","originPos","sVertices","cur_category","selected","category","itemID","toJS","verticesDistance","exchange","layerID","targetData","targetPos","vArray","dteArray","lineArray","vdistanceArray","cVecArray","inFlag","v1","v2","tPosDistance","realDistance","tPosDistance1","realDistance1","k","temp","temp1","temp2","tX","tY","snap","parent","source","sRot","layoutType","altitudeLength","snapBoxGeom","BoxGeometry","snapBoxObj","Mesh","MeshBasicMaterial","transparent","blending","MultiplyBlending","removeSnapBoxObj","box","BoxHelper","material","linewidth","depthTest","renderOrder","deltaX","deltaZ","sPos","tPoses","pZ","tNum","curDis","cx","cz","selectedObj","rotRad","snapLine","lineId","snapLineThickness","iX","iY","lineVec","oLength","normalize","vec2Legnth","lineLength","transLength","directPoint","directLine","dLength","reduceLen","scale","realAngle","result","sourcePos","firstMove","prevX","prevY","selObj","createToolObject","canvas","document","createElement","ctx","getContext","fillStyle","strokeStyle","beginPath","arc","fill","stroke","img1","Image","crossOrigin","src","onload","drawImage","img2","clockWise","lastAngle","createAngleObject","rotate","lineWidth","SECONDARY_PURPLE_COLOR","toolTexture","Texture","needsUpdate","Sprite","SpriteMaterial","map","sizeAttenuation","angleTexture","getPoint","alti","offsetX","offsetY","setFromCamera","ray","direction","updateMouseCoord","getIntersectWallPoint","arrMesh","mesh","intersects","intersectObjects","mouseDownEvent","event","matrixWorld","invert","itemInfo","sCount","transflag","meshes","object","isMesh","toolIntersects","pow","uv","indexOf","MODE_DRAWING_ITEM_3D","isNaN","unselectAll","removeReplacingSupport","isUndefined","selItem","image","centerPos","beginRotatingItem3D","beginDraggingHole3D","beginDraggingItem3D","mouseButtons","ACTION","NONE","setClearColor","Color","COLORS","white","setSize","canvasWrapper","ReactDOM","findDOMNode","refs","appendChild","setTimeout","itemPos","err","JSON","stringify","Clock","Scene","background","rulerUnit","maxX","maxY","minX","minY","toArray","vertex0","vertex1","x1","y1","x2","y2","l0","l1","MODE_FRONT_ELEVATION_VIEW","almostEqual","MODE_BACK_ELEVATION_VIEW","MODE_LEFT_ELEVATION_VIEW","MODE_RIGHT_ELEVATION_VIEW","line_length","posX","posY","cameraRect","OrthographicCamera","aspectRatio","PerspectiveCamera","enable","loadENV","RGBELoader","load","texture","mapping","EquirectangularReflectionMapping","environment","dispose","dollyToCursor","infinityDolly","minDistance","maxDistance","Infinity","zoomSpeed","cam","delta","getDelta","update","updateMatrix","elemID","LODs","rotateY","indexAttribute","getIndex","firstFaceIndices","getX","normalAttribute","attributes","normal","fromBufferAttribute","sub","vertex2","posVec","cameraLine","child","opacity","dot","requestAnimationFrame","componentWillUnmount","cancelAnimationFrame","disposeScene","renderLists","componentWillReceiveProps","_this4","aspect","updateProjectionMatrix","implementBacksplash","allItems","getAllItemSpecified","calcRect","getCalcRectFromItem3D","isSnappedLine","setBacksplashVisible","createBacksplash","implementWarningBox","checkCabinetOverlap","prepareSnapSpec","TALL_CABINET_LAYOUTPOS","layer1","changedValues","diff","showfg","deleteSpecifiedMeshObjects","_this$state","_updateScene","updateScene","p1Value","alignItems","justifyContent","animation","alt","pointerEvents","React","ref","Component","propTypes","PropTypes","isRequired","number","replaceCabinet","func","contextTypes"],"sources":["../../../../../../src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx"],"sourcesContent":["'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport * as Three from 'three';\nimport {\n parseData,\n updateScene,\n deleteSpecifiedMeshObjects,\n createBacksplash,\n checkCabinetOverlap\n} from '../../../../viewer3d/scene-creator';\nimport { disposeScene } from '../../../../viewer3d/three-memory-cleaner';\nimport { disposeObject } from '../../../../viewer3d/three-memory-cleaner';\nimport diff from 'immutablediff';\nimport * as SharedStyle from '../../../../../shared-style';\nimport {\n MODE_DRAWING_ITEM_3D,\n UNIT_CENTIMETER,\n SECONDARY_PURPLE_COLOR,\n ARRAY_ELEVATION_VIEW_MODES,\n MODE_FRONT_ELEVATION_VIEW,\n MODE_RIGHT_ELEVATION_VIEW,\n MODE_LEFT_ELEVATION_VIEW,\n MODE_BACK_ELEVATION_VIEW,\n BASE_CABINET_LAYOUTPOS,\n WALL_CABINET_LAYOUTPOS,\n TALL_CABINET_LAYOUTPOS\n} from '../../../../../constants';\nimport { isUndefined } from 'util';\nimport { verticesDistance } from '../../../../../utils/geometry';\nimport convert from 'convert-units';\nimport { GeometryUtils } from '../../../../../utils/export';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';\nimport CameraControls from 'camera-controls';\nCameraControls.install({ THREE: Three });\nimport { returnReplaceableDeepSearchType } from '../../../../viewer2d/utils';\nimport { vectorIntersectWithMesh } from '../../../../../utils/objects-utils';\nimport { almostEqual } from '../../../../../utils/geometry';\n\nexport default class Viewer3DElevationDownload extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: false,\n showflag: true,\n toolObj: null,\n angleObj: null,\n waitForRender: 0\n };\n this.lastMousePosition = {};\n this.width = props.width;\n this.height = props.height;\n this.renderingID = 0;\n\n let { mode } = props.state;\n\n if (!window.__elevationRendererDownload) {\n window.__elevationRendererDownload = {};\n }\n\n this.renderer =\n window.__threeRendererDownload ||\n window.__elevationRendererDownload[mode] ||\n new Three.WebGLRenderer({\n preserveDrawingBuffer: true,\n alpha: true,\n antialias: true\n });\n\n this.renderer.shadowMap.enabled = true;\n this.renderer.shadowMapSoft = true;\n if (mode == 'MODE_3D_VIEW') {\n window.__threeRendererDownload = this.renderer;\n } else {\n window.__elevationRendererDownload[mode] = this.renderer;\n }\n\n this.renderer.domElement.style.display = 'none';\n }\n\n componentDidMount(nextProps) {\n let scene3D, camera, pivot, cameraControls, clock;\n\n const actions = {\n areaActions: this.context.areaActions,\n holesActions: this.context.holesActions,\n itemsActions: this.context.itemsActions,\n sceneActions: this.context.sceneActions,\n linesActions: this.context.linesActions,\n projectActions: this.context.projectActions,\n catalog: this.context.catalog\n };\n\n const self = this;\n const { state } = this.props;\n const { mode, scene } = state;\n\n function setupLight(scene, inbBox) {\n if (ARRAY_ELEVATION_VIEW_MODES.includes(mode)) {\n const ambilight = new Three.AmbientLight('0xffffff', 3);\n scene.add(ambilight);\n } else {\n const shadowMapSize = 2048;\n const shadowCameraSize =\n Math.max(\n Math.abs(inbBox.min.x - inbBox.max.x),\n Math.abs(inbBox.min.y - inbBox.max.y),\n Math.abs(inbBox.min.z - inbBox.max.z)\n ) / 2;\n const shadowCameraFar = shadowCameraSize * 10;\n const bboxCenter = new Three.Vector3(\n (inbBox.min.x + inbBox.max.x) / 2,\n inbBox.min.y,\n (inbBox.min.z + inbBox.max.z) / 2\n );\n\n function addDirLight(inColor, inIntensity, inPosition) {\n const dirLight = new Three.DirectionalLight(inColor, inIntensity);\n dirLight.castShadow = true;\n dirLight.shadow.mapSize.x = shadowMapSize;\n dirLight.shadow.mapSize.y = shadowMapSize;\n dirLight.shadow.camera.near = 0;\n dirLight.shadow.camera.far = shadowCameraFar;\n\n dirLight.shadow.camera.top = shadowCameraSize * 1.5;\n dirLight.shadow.camera.bottom = -shadowCameraSize * 1.5;\n dirLight.shadow.camera.left = -shadowCameraSize * 1.5;\n dirLight.shadow.camera.right = shadowCameraSize * 1.5;\n dirLight.position.copy(inPosition);\n\n const targetObject = new Three.Object3D();\n targetObject.position.copy(bboxCenter);\n scene.add(targetObject);\n\n dirLight.target = targetObject;\n dirLight.target.updateMatrixWorld();\n\n scene.add(dirLight);\n }\n\n function addSpotLight(\n inColor,\n inIntensity,\n inPosition,\n inTarget,\n inDistance\n ) {\n const spotLight = new Three.SpotLight();\n spotLight.intensity = inIntensity;\n spotLight.color.setHex(inColor);\n spotLight.position.copy(inPosition);\n spotLight.angle = 1.3;\n spotLight.distance = inDistance;\n spotLight.penumbra = 1.8;\n spotLight.decay = 0.01;\n\n spotLight.castShadow = true;\n spotLight.shadow.intensity = 2;\n spotLight.shadow.mapSize.width = 4096;\n spotLight.shadow.mapSize.height = 4096;\n\n const targetObject = new Three.Object3D();\n targetObject.position.copy(\n new Three.Vector3(inTarget.x, 0, inTarget.z)\n );\n scene.add(targetObject);\n\n spotLight.target = targetObject;\n spotLight.target.updateMatrixWorld();\n scene.add(spotLight);\n }\n\n const dirLightPos = new Three.Vector3(\n inbBox.max.x,\n inbBox.max.y + 1.8 * Math.abs(inbBox.max.y - inbBox.min.y),\n inbBox.min.z - 0.5 * Math.abs(inbBox.max.z - inbBox.min.z)\n );\n\n addDirLight('white', 1.5, dirLightPos);\n\n const ceiling = scene3D.getObjectByName('ceil');\n if (ceiling) {\n const ceilBBox = new Three.Box3().setFromObject(ceiling);\n\n const spot1 = new Three.Vector3(\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - inbBox.max.z) / 4\n );\n const spot2 = new Three.Vector3(\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n\n const spot3 = new Three.Vector3(\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n const spot4 = new Three.Vector3(\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\n ceilBBox.max.y - 0.5,\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\n );\n\n const spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);\n\n // check if spotlight is inside the room\n vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);\n vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);\n vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);\n vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) &&\n addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);\n }\n }\n }\n\n // Load data\n this.setState({ isLoading: true, waitForRender: 0 });\n this.props.setIsLoading3D(true);\n const { promise, planData } = parseData(\n scene,\n actions,\n this.context.catalog,\n camera,\n this.renderer,\n state.mode\n );\n\n promise.then(() => {\n let objToRemove = [];\n planData.plan.traverse(obj => {\n if (obj.geometry === null) {\n objToRemove.push(obj);\n }\n });\n objToRemove.forEach(obj => {\n obj.removeFromParent();\n });\n const bbox = new Three.Box3().setFromObject(planData.plan);\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n //cameraControls.fitToBox(bbox, true);\n if (cameraControls) {\n const radius = 400; // Distance from target\n const angleInDegrees = 5;\n const angleInRadians = (angleInDegrees * Math.PI) / 180;\n\n // Calculate a position angleInDegrees to the right on the horizontal circle\n const eyeX = Math.sin(angleInRadians) * radius;\n const eyeZ = Math.cos(angleInRadians) * radius;\n\n cameraControls.setLookAt(eyeX, 0, eyeZ, 0, 0, 0); // Set camera with Y elevation\n }\n }\n setupLight(scene3D, planData.boundingBox);\n\n self.setState({ waitForRender: 1 });\n });\n\n const area = scene.getIn(['layers', scene.selectedLayer, 'areas']);\n const layer = scene.getIn(['layers', scene.selectedLayer]);\n const areas = [],\n lights = [];\n\n let snapBox = null;\n\n // Check for data\n let msg = '';\n scene.layers.forEach(layer => {\n if (layer.id === scene.selectedLayer || layer.visible) {\n layer.items.forEach(item => {\n if (item.doorStyle === null) {\n if (!msg.includes(item.name + \"'s doorStyle is null.\"))\n msg += item.name + \"'s doorStyle is null.\\n\";\n }\n });\n }\n });\n if (msg !== '') {\n confirm(msg);\n }\n\n init();\n render();\n\n area.forEach(data => {\n areas.push(data);\n });\n for (let i = 0; i < areas.length; i++) {\n let aVertices = [];\n let lines = [];\n let height = 100;\n areas[i].vertices.forEach(data => {\n aVertices.push(data);\n });\n layer.lines.forEach(data => {\n lines.push(data);\n });\n for (let i = 0; i < lines.length; i++) {\n let data = lines[i];\n let realVec = [];\n data.vertices.forEach(vec => {\n realVec.push(vec);\n });\n if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {\n height = convert(layer.ceilHeight)\n .from(layer.unit)\n .to(UNIT_CENTIMETER);\n // height = data.properties.getIn(['height', 'length']);\n break;\n }\n }\n let vertices = [];\n areas[i].vertices.forEach(datas => {\n let vertex = scene.getIn([\n 'layers',\n scene.selectedLayer,\n 'vertices',\n datas\n ]);\n vertices.push(vertex);\n });\n vertices.push(vertices[0]);\n let fLen = vertices.length - 1;\n for (let i = 0; i < fLen; i++) {\n let sX = vertices[i].x;\n let sY = vertices[i].y;\n let eX = vertices[i + 1].x;\n let eY = vertices[i + 1].y;\n let len = Math.sqrt((eX - sX) * (eX - sX) + (eY - sY) * (eY - sY));\n for (let cLen = 200; cLen < len; cLen += 200) {\n let cX = sX + ((eX - sX) * cLen) / len;\n let cY = sY + ((eY - sY) * cLen) / len;\n let endLen = Math.sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY));\n if (endLen <= 100) continue;\n let vec2 = new Three.Vector2(cX - sX, cY - sY);\n let angle = vec2.angle() + Math.PI / 2;\n cX = Math.cos(angle) * 30 + cX;\n cY = Math.sin(angle) * 30 + cY;\n let spotLight = new Three.SpotLight(0xeeeeee, 1.7);\n spotLight.angle = 0.76;\n spotLight.castShadow = true;\n spotLight.penumbra = 1;\n spotLight.decay = 1.7;\n spotLight.distance = height - 20;\n let target = new Three.Object3D();\n spotLight.target = target;\n lights.push({\n light: spotLight,\n target: target,\n x: cX,\n y: cY,\n height: height\n });\n }\n }\n }\n // //////////////////////////\n\n // OBJECT PICKING\n let toIntersect = [planData.plan];\n let mouse = new Three.Vector2();\n let gridPlane = planData.grid;\n let raycaster = new Three.Raycaster();\n let selectedObject = {};\n let currentObject = null;\n let isSelected = false;\n let bRotate = false;\n let bMove = false;\n let bMoveUP = false;\n /** Transformation matrix of grid */\n const gridMatrix = new Three.Matrix4();\n let rayDirection = new Three.Vector3();\n /** World position of grid plane */\n let gridPlanOrigin = new Three.Vector3();\n let Point = new Three.Vector2();\n let sPoint = new Three.Vector2();\n\n // SNAP FUNCTION VARIABLE\n let snapFlag = false;\n let snapAnimI = 0;\n let snapDelta = 6;\n let t_i = 0;\n let targetPoint = new Three.Vector3();\n let targetRot = 0;\n let targetUVec = new Three.Vector3();\n let targetCRotation = 0;\n let targetObj = null;\n let targetNumber = 0;\n\n let allItemRect;\n let allItemSnap;\n let allLines;\n let allLineRects;\n let allLineSnap;\n let allRect;\n let allArea;\n\n // end snap function variable///////////////////////\n let backsplashVisible = false;\n let holeItems = GeometryUtils.getHoleItems(layer);\n\n let removeSnapBox = () => {\n if (snapBox != null) {\n planData.plan.remove(snapBox);\n disposeObject(snapBox);\n snapBox = null;\n targetObj = null;\n snapFlag = false;\n }\n };\n\n const camToGrid = new Three.Vector3();\n let camPos = camera.position;\n\n const mapCursorPosition = (e, altitude) => {\n camToGrid.subVectors(gridPlanOrigin, camPos);\n\n let camD = camToGrid.y + (altitude ? altitude : 0);\n let rayD = rayDirection.y;\n\n const intersectPt = rayDirection.multiplyScalar(camD / rayD).add(camPos);\n intersectPt.y = gridPlanOrigin.y;\n intersectPt.applyMatrix4(gridMatrix);\n\n return { x: intersectPt.x, y: -intersectPt.z };\n };\n\n /* for Snap Functions*/\n\n let pointLineDistance = function (point, line) {\n // return distance from point to line and directional point of line\n let pX = point.x;\n let pY = point.y;\n let l1x = line[0].x;\n let l1y = line[0].y;\n let l2x = line[1].x;\n let l2y = line[1].y;\n let pLine = new Three.Vector2(l1x - pX, l1y - pY);\n let Line = new Three.Vector2(l1x - l2x, l1y - l2y);\n let pAngle = pLine.angle();\n let lAngle = Line.angle();\n let pDistance = pLine.length();\n let oDistance = Line.length();\n let directDistance = Math.sin(pAngle - lAngle) * pDistance;\n let lineDistance = Math.cos(pAngle - lAngle) * pDistance;\n let dX = l1x + ((l2x - l1x) * lineDistance) / oDistance;\n let dY = l1y + ((l2y - l1y) * lineDistance) / oDistance;\n let dPoint = { x: dX, y: dY };\n return { distance: directDistance, point: dPoint };\n };\n let getInterSect = function (shape1, shape2) {\n // return result of intersect of two shape\n let count = 0;\n for (let i = 0; i < shape1.length - 1; i++) {\n let sl1 = { x: shape1[i].x, y: shape1[i].y };\n let sl2 = { x: shape1[i + 1].x, y: shape1[i + 1].y };\n for (let j = 0; j < shape2.length - 1; j++) {\n let el1 = { x: shape2[j].x, y: shape2[j].y };\n let el2 = { x: shape2[j + 1].x, y: shape2[j + 1].y };\n let flag = GeometryUtils.getLineInterSect(\n sl1.x,\n sl1.y,\n sl2.x,\n sl2.y,\n el1.x,\n el1.y,\n el2.x,\n el2.y\n );\n if (flag) {\n count++;\n if (count > 1) return true;\n }\n }\n }\n return false;\n };\n\n this.getRectPoints = function (width, height, pos, rot) {\n // return 4 points from it's position, width, height, and rotation info\n let rX = width / 2;\n let rY = height / 2;\n let vertices = [];\n let cRot = rot;\n let pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n let pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rX = -rX;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rY = -rY;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n rX = -rX;\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\n vertices.push(vertices[0]);\n vertices.push(vertices[2]);\n return vertices;\n };\n\n const prepareSnap = layer => {\n allLines = GeometryUtils.getAllLines(layer);\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\n allItemRect = GeometryUtils.getAllItems(\n this.props.state.scene,\n actions.catalog,\n allLineRects\n );\n allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);\n allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);\n allRect = allItemRect.others.concat(allLineRects);\n allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);\n allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);\n allArea = GeometryUtils.getAllArea(layer);\n };\n\n // prepareSnapSpec(layer);\n let lineRect = layer => {\n let areainfo = [];\n layer.areas.forEach(area => {\n let sz = area.vertices.size;\n for (var i = 0; i < sz; i++) {\n areainfo.push(area.vertices.get(i));\n }\n });\n let rect = [];\n areainfo.forEach(area => {\n let vert = layer.vertices.get(area);\n rect.push(vert.x, vert.y);\n });\n return rect;\n };\n\n this.collisionCheck = function (obj, pos, rot, tObj, item = null, catalog) {\n //collision check from one object to every other object excpet target object\n let layer = this.props.state.scene.getIn([\n 'layers',\n obj.userData.layerId\n ]);\n let layoutpos = 'utype';\n if (item !== null) {\n let catid = item.type;\n let cat = catalog.elements[catid];\n layoutpos = cat.info.layoutpos;\n }\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\n let sBounding = obj.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let depth = sBounding.max.z - sBounding.min.z;\n let oVertices = this.getRectPoints(\n width,\n depth,\n oPos.clone(),\n ((rot % 360) / 180) * Math.PI\n );\n let datas = [];\n layer.items.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let target =\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\n if (target === undefined) {\n console.log(\n data.id +\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\n );\n return false;\n }\n let item = layer.items.getIn([data.id]);\n let ocatid = item.type;\n let ocat = catalog.elements[ocatid];\n let olayoutpos = ocat.info.layoutpos;\n if (\n !(\n (layoutpos === BASE_CABINET_LAYOUTPOS &&\n olayoutpos === WALL_CABINET_LAYOUTPOS) ||\n (layoutpos === WALL_CABINET_LAYOUTPOS &&\n olayoutpos === BASE_CABINET_LAYOUTPOS)\n )\n ) {\n let tRot = item.rotation;\n let tPos = new Three.Vector2(item.x, item.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n }\n datas = [];\n layer.lines.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let item = layer.lines.getIn([data.id]);\n // let llayoutpos = catalog.elements[item.type].info.layoutpos;\n let vertices = [];\n item.vertices.forEach(data => {\n let vertex = layer.vertices.get(data);\n vertices.push({ x: vertex.x, y: vertex.y });\n });\n let vec = new Three.Vector2(\n vertices[1].x - vertices[0].x,\n vertices[1].y - vertices[0].y\n );\n let tRot = vec.angle();\n let tPos = new Three.Vector2(\n (vertices[0].x + vertices[1].x) / 2,\n (vertices[0].y + vertices[1].y) / 2\n );\n let tdepth = item.properties.getIn(['thickness', 'length']);\n let twidth = Math.sqrt(vec.x * vec.x + vec.y * vec.y);\n let tVertices = this.getRectPoints(twidth, tdepth, tPos.clone(), tRot);\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n return true;\n };\n\n this.collisionHoleCheck = function (\n obj,\n pos,\n rot,\n tObj,\n item = null,\n catalog\n ) {\n let layer = this.props.state.scene.getIn([\n 'layers',\n obj.userData.layerId\n ]);\n let currentItem;\n if (item !== null) {\n let catid = item.type;\n let cat = catalog.elements[catid];\n currentItem = {\n selectedItem: item,\n cat\n };\n }\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\n let sBounding = obj.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let depth = sBounding.max.z - sBounding.min.z;\n let oVertices = this.getRectPoints(\n width,\n depth,\n oPos.clone(),\n ((rot % 360) / 180) * Math.PI\n );\n\n let datas = [];\n layer.items.forEach(data => {\n datas.push(data);\n });\n for (let i = 0; i < datas.length; i++) {\n let data = datas[i];\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\n continue;\n let target =\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\n if (target === undefined) {\n console.log(\n data.id +\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\n );\n return false;\n }\n let item = layer.items.getIn([data.id]);\n let ocatid = item.type;\n let ocat = catalog.elements[ocatid];\n if (!ocat)\n ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];\n let otherItem = {\n item,\n cat: ocat\n };\n\n if (\n GeometryUtils.needSnap(currentItem, otherItem) &&\n otherItem.cat.type != 'cabinet'\n ) {\n let tRot = item.rotation;\n let tPos = new Three.Vector2(item.x, item.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n }\n\n let holes = [];\n layer.lines.forEach(line => {\n line.holes.forEach(holeID => {\n let hole = layer.holes.get(holeID);\n holes.push(hole);\n });\n });\n let i = 0;\n for (; i < holes.length; i++) {\n let tPos = new Three.Vector2(holes[i].x, holes[i].y);\n let twidth = holes[i].properties.getIn(['width', 'length']);\n let theight = holes[i].properties.getIn(['thickness', 'length']);\n let trot = holes[i].rotation;\n let tVertices = this.getRectPoints(twidth, theight, tPos.clone(), trot);\n if (getInterSect(oVertices, tVertices)) {\n return false;\n }\n }\n return true;\n };\n\n this.collisionSlide = function (\n item3D,\n originPos,\n layer,\n sVertices,\n tPos,\n item\n ) {\n let items = [];\n\n let cur_category = '';\n let catalog = actions.catalog;\n if (layer.selected.items.size > 0) {\n let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);\n let catid = selectedItem.type;\n let cat = catalog.elements[catid];\n if (cat === undefined || cat === null)\n cat = catalog.getIn(['elements', catid]);\n cur_category = cat.obj.category;\n }\n\n layer.items.forEach(data => {\n if (data.id == selectedObject.itemID) {\n return;\n }\n\n items.push(data.toJS());\n });\n let oPos = new Three.Vector2(originPos.x, -originPos.z);\n\n // sort from distance\n for (let i = 0; i < items.length - 1; i++) {\n for (let j = i + 1; j < items.length; j++) {\n if (\n verticesDistance(oPos, new Three.Vector2(items[i].x, items[i].y)) >\n verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))\n ) {\n let exchange = items[j];\n items[j] = items[i];\n items[i] = exchange;\n }\n }\n }\n let i = 0;\n\n for (; i < items.length; i++) {\n if (!items[i]) return;\n let target =\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\n if (target === undefined) {\n return false;\n }\n let targetData = layer.items.getIn([items[i].id]);\n let tRot = targetData.rotation;\n let tPos = new Three.Vector2(targetData.x, targetData.y);\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n tPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n if (getInterSect(sVertices, tVertices)) {\n break;\n }\n }\n if (items.length == 0 || !items[i]) return;\n let target =\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\n let targetData = layer.items.getIn([items[i].id]);\n let targetPos = new Three.Vector2(targetData.x, targetData.y);\n let tRot = targetData.rotation;\n let tBounding = target.children[0].userData;\n let twidth = tBounding.max.x - tBounding.min.x;\n let tdepth = tBounding.max.z - tBounding.min.z;\n let tVertices = this.getRectPoints(\n twidth,\n tdepth,\n targetPos.clone(),\n ((tRot % 360) / 180) * Math.PI\n );\n // ////////////////////////\n let vArray = [];\n let dteArray = [];\n let lineArray = [];\n let vdistanceArray = [];\n let cVecArray = [];\n let inFlag = false;\n for (let i = 0; i < 4; i++) {\n let v1 = tVertices[i];\n let v2 = tVertices[i + 1];\n let data = pointLineDistance({ x: tPos.x, y: tPos.y }, [\n { x: v1.x, y: v1.y },\n { x: v2.x, y: v2.y }\n ]);\n dteArray.push(data.distance);\n vArray.push(data.point);\n lineArray.push([v1, v2]);\n }\n // if tPos in target object\n let tPosDistance =\n Math.abs(pointLineDistance(tPos, lineArray[0]).distance) +\n Math.abs(pointLineDistance(tPos, lineArray[2]).distance);\n let realDistance = new Three.Vector2(\n lineArray[1][0].x - lineArray[1][1].x,\n lineArray[1][0].y - lineArray[1][1].y\n ).length();\n let tPosDistance1 =\n Math.abs(pointLineDistance(tPos, lineArray[1]).distance) +\n Math.abs(pointLineDistance(tPos, lineArray[3]).distance);\n let realDistance1 = new Three.Vector2(\n lineArray[0][0].x - lineArray[0][1].x,\n lineArray[0][0].y - lineArray[0][1].y\n ).length();\n if (\n Math.abs(Math.abs(tPosDistance) - Math.abs(realDistance)) < 0.01 &&\n Math.abs(Math.abs(tPosDistance1) - Math.abs(realDistance1)) < 0.01\n )\n inFlag = true;\n // ////////////////////\n let key = 0;\n // sort distance from origin point\n for (let j = 0; j < dteArray.length - 1; j++) {\n for (let k = j + 1; k < dteArray.length; k++) {\n if (Math.abs(dteArray[j]) > Math.abs(dteArray[k])) {\n let temp = dteArray[k];\n dteArray[j] = dteArray[k];\n dteArray[k] = temp;\n let temp1 = vArray[k];\n vArray[j] = vArray[k];\n vArray[k] = temp1;\n let temp2 = lineArray[k];\n lineArray[j] = lineArray[k];\n lineArray[k] = temp2;\n }\n }\n }\n // //////////////////////////////\n for (let i = 0; i < 4; i++) {\n let data = pointLineDistance(sVertices[i], lineArray[key]);\n vdistanceArray.push(data.distance);\n cVecArray.push({\n x: data.point.x - sVertices[i].x,\n y: data.point.y - sVertices[i].y\n });\n }\n\n for (let j = 0; j < vdistanceArray.length; j++) {\n let tX = tPos.x + cVecArray[j].x;\n let tY = tPos.y + cVecArray[j].y;\n if (\n this.collisionCheck(\n item3D,\n new Three.Vector2(tX, tY),\n item.rotation,\n {\n userData: { itemId: null }\n },\n item,\n this.context.catalog\n )\n ) {\n item3D.position.set(tX, originPos.y, -tY);\n sPoint.set(tX, tY);\n break;\n }\n }\n };\n\n this.snap = function (obj, layer) {\n // snap operation\n let target = obj.userData.target;\n for (; target.parent != null; ) {\n if (target.name == 'pivot') break;\n target = target.parent;\n }\n let source = obj.parent.parent.parent;\n if (target.userData.type == 'item') {\n let sRot = layer.getIn(['items', source.userData.itemId]).rotation;\n let tRot = layer.getIn(['items', target.userData.itemId])\n ? layer.getIn(['items', target.userData.itemId]).rotation\n : 0;\n let item = layer.getIn(['items', source.userData.itemId]);\n let layoutType = item.layoutpos;\n let altitudeLength = convert(\n item.properties.getIn(['altitude', '_length'])\n )\n .from('in')\n .to('cm');\n let sBounding = source.children[0].userData;\n let tBounding = target.children[0].userData;\n let tPos = target.position.clone();\n let width = sBounding.max.x - sBounding.min.x;\n let height = sBounding.max.y - sBounding.min.y;\n let depth = sBounding.max.z - sBounding.min.z;\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\n let snapBoxObj = new Three.Mesh(\n snapBoxGeom,\n new Three.MeshBasicMaterial({\n // color: 0x2cde6b,\n // opacity: 0.7,\n transparent: true,\n blending: Three.MultiplyBlending\n })\n );\n let removeSnapBoxObj = () => {\n if (snapBoxObj) {\n planData.plan.remove(snapBoxObj);\n disposeObject(snapBoxObj);\n }\n snapFlag = false;\n };\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\n box.material.linewidth = 2;\n box.material.depthTest = false;\n box.renderOrder = 200;\n snapBoxObj.add(box);\n snapBoxObj.position.set(\n source.position.x,\n layoutType === WALL_CABINET_LAYOUTPOS\n ? altitudeLength + source.position.y + height / 2\n : source.position.y + height / 2,\n source.position.z\n );\n snapBoxObj.rotation.set(\n source.rotation.x,\n source.rotation.y,\n source.rotation.z\n );\n snapBoxObj.name = 'TransformBox';\n planData.plan.add(snapBoxObj);\n let deltaX =\n (tBounding.max.x - tBounding.min.x) / 2 +\n (sBounding.max.x - sBounding.min.x) / 2;\n let deltaZ =\n (tBounding.max.z - tBounding.min.z) / 2 -\n (sBounding.max.z - sBounding.min.z) / 2;\n let sPos = snapBoxObj.position.clone();\n // avaliable snap place///////////////\n let tPoses = [];\n let pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n let pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX = -deltaX;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX =\n (tBounding.max.x - tBounding.min.x) / 2 -\n (sBounding.max.x - sBounding.min.x) / 2;\n deltaZ =\n -(tBounding.max.z - tBounding.min.z) / 2 -\n (sBounding.max.z - sBounding.min.z) / 2;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n deltaX = -deltaX;\n pX =\n tPos.x +\n deltaX * Math.cos((tRot / 180) * Math.PI) +\n deltaZ * Math.sin((tRot / 180) * Math.PI);\n pZ =\n tPos.z -\n deltaX * Math.sin((tRot / 180) * Math.PI) +\n deltaZ * Math.cos((tRot / 180) * Math.PI);\n tPoses.push(new Three.Vector3(pX, 0, pZ));\n let distance = Math.sqrt(\n (sPos.x - tPoses[0].x) * (sPos.x - tPoses[0].x) +\n (sPos.z - tPoses[0].z) * (sPos.z - tPoses[0].z)\n );\n let tNum = 1;\n tPos = tPoses[0].clone();\n for (let i = 1; i < tPoses.length; i++) {\n let curDis = Math.sqrt(\n (sPos.x - tPoses[i].x) * (sPos.x - tPoses[i].x) +\n (sPos.z - tPoses[i].z) * (sPos.z - tPoses[i].z)\n );\n if (curDis < distance) {\n distance = curDis;\n tNum = i + 1;\n tPos = tPoses[i].clone();\n }\n }\n // //////////////////////////////////\n if (\n targetObj != null &&\n targetObj.userData.itemId == target.userData.itemId &&\n tNum == targetNumber\n ) {\n removeSnapBoxObj();\n return;\n } else {\n removeSnapBox();\n }\n // //////////////////////////////////\n if (tNum >= 3) tRot += 180;\n\n snapAnimI = 0;\n t_i = 0;\n targetObj = target;\n targetNumber = tNum;\n targetRot = tRot;\n targetPoint = tPos;\n snapBox = snapBoxObj;\n let cx = sPos.x - tPos.x;\n let cz = sPos.z - tPos.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n } else {\n let item = layer.getIn(['items', source.userData.itemId]);\n if (holeItems.length) {\n let i;\n for (i = 0; i < holeItems.length; i++) {\n let hole = holeItems[i];\n if (Math.abs(Math.sin(selectedObj.rotRad)) === 1) {\n if (\n item.y + selectedObj.size.width / 2 >=\n hole.y - hole.width / 2 &&\n item.y - selectedObj.size.width / 2 <=\n hole.y + hole.width / 2 &&\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\n ? item.x <= hole.x &&\n item.x + selectedObj.size.height >= hole.x\n : item.x >= hole.x &&\n item.x - selectedObj.size.height <= hole.x)\n )\n break;\n } else {\n if (\n item.x + selectedObj.size.width / 2 >=\n hole.x - hole.width / 2 &&\n item.x - selectedObj.size.width / 2 <=\n hole.x + hole.width / 2 &&\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\n ? item.y <= hole.y &&\n item.y + selectedObj.size.height >= hole.y\n : item.y >= hole.y &&\n item.y - selectedObj.size.height <= hole.y)\n )\n break;\n }\n }\n if (i != holeItems.length) return;\n }\n if (target.userData.type == 'hole') {\n snapFlag = false;\n return;\n } else {\n let layoutType = item.layoutpos;\n let altitudeLength = convert(\n item.properties.getIn(['altitude', '_length'])\n )\n .from('in')\n .to('cm');\n let sBounding = source.children[0].userData;\n let width = sBounding.max.x - sBounding.min.x;\n let height = sBounding.max.y - sBounding.min.y;\n let depth = sBounding.max.z - sBounding.min.z;\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\n let snapBoxObj = new Three.Mesh(\n snapBoxGeom,\n new Three.MeshBasicMaterial({\n // color: 0x2cde6b,\n // opacity: 0.7,\n transparent: true,\n blending: Three.MultiplyBlending\n })\n );\n let removeSnapBoxObj = () => {\n if (snapBoxObj) {\n planData.plan.remove(snapBoxObj);\n disposeObject(snapBoxObj);\n }\n snapFlag = false;\n };\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\n box.material.linewidth = 2;\n box.material.depthTest = false;\n box.renderOrder = 100;\n snapBoxObj.add(box);\n\n snapBoxObj.position.set(\n source.position.x,\n layoutType === WALL_CABINET_LAYOUTPOS\n ? altitudeLength + source.position.y + height / 2\n : source.position.y + height / 2,\n source.position.z\n );\n snapBoxObj.rotation.set(\n source.rotation.x,\n source.rotation.y,\n source.rotation.z\n );\n snapBoxObj.name = 'TransformBox';\n planData.plan.add(snapBoxObj);\n\n let snapLine = layer.getIn(['lines', target.userData.lineId]);\n // let snapLineThickness = snapLine.properties.getIn([\n // 'thickness',\n // 'length'\n // ]);\n let snapLineThickness = 10.64;\n let vertices = [];\n if (snapLine === undefined) return;\n snapLine.vertices.forEach(data => {\n let vec = layer.getIn(['vertices', data]);\n vertices.push(vec);\n });\n let iX = source.position.clone().x;\n let iY = -source.position.clone().z;\n let lineVec = new Three.Vector2(\n vertices[1].x - vertices[0].x,\n vertices[1].y - vertices[0].y\n );\n let oLength = Math.sqrt(\n lineVec.x * lineVec.x + lineVec.y * lineVec.y\n );\n lineVec.normalize();\n let vec2 = new Three.Vector2(iX - vertices[0].x, iY - vertices[0].y);\n let vec2Legnth = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);\n let angle = Math.abs(lineVec.angle() - vec2.angle());\n angle = angle > Math.PI ? 2 * Math.PI - angle : angle;\n let lineLength = Math.cos(angle) * vec2Legnth;\n let transLength = 0;\n if (lineLength < 100) {\n transLength = -lineLength + (snapLineThickness + width) / 2;\n }\n if (lineLength > oLength - 100) {\n transLength =\n -lineLength - (snapLineThickness + width) / 2 + oLength;\n }\n let directPoint = new Three.Vector2(\n lineVec.x * lineLength + vertices[0].x,\n lineVec.y * lineLength + vertices[0].y\n );\n let directLine = new Three.Vector2(\n directPoint.x - iX,\n directPoint.y - iY\n );\n let dLength = Math.sqrt(\n (iX - directPoint.x) * (iX - directPoint.x) +\n (iY - directPoint.y) * (iY - directPoint.y)\n );\n let reduceLen = (snapLineThickness + depth) / 2;\n let scale = (dLength - reduceLen) / dLength;\n let tPos = new Three.Vector2(\n iX + (directPoint.x - iX) * scale + lineVec.x * transLength,\n iY + (directPoint.y - iY) * scale + lineVec.y * transLength\n );\n let realAngle = directLine.angle() - Math.PI / 2;\n let tRot = (realAngle * 180) / Math.PI;\n let sPos = new Three.Vector2(iX, iY);\n let sRot = item.rotation;\n let tNum = 0;\n // //////////////////////////////////////\n // check part////\n let result = this.collisionCheck(\n source,\n tPos,\n tRot,\n target,\n item,\n this.context.catalog\n );\n // console.log('result', result);\n if (result == false) {\n removeSnapBoxObj();\n removeSnapBox();\n return;\n }\n // ////////////////\n if (targetObj === target && snapBox !== null) {\n removeSnapBoxObj();\n snapAnimI = 20;\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\n let sourcePos = snapBox.position.clone();\n let cx = sourcePos.x - targetPoint.x;\n let cz = sourcePos.z - targetPoint.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetRot = tRot;\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n snapFlag = false;\n return;\n } else {\n removeSnapBox();\n }\n // //////////////////////////////////////\n snapAnimI = 0;\n t_i = 0;\n targetObj = target;\n targetNumber = tNum;\n targetRot = tRot;\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\n snapBox = snapBoxObj;\n let sourcePos = snapBox.position.clone();\n let cx = sourcePos.x - targetPoint.x;\n let cz = sourcePos.z - targetPoint.z;\n targetUVec = new Three.Vector3(cx, 0, cz);\n targetRot = tRot;\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\n }\n }\n };\n\n /*end of snap functions*/\n let selectedObj = null;\n let firstMove = false;\n let prevX, prevY;\n\n let selObj = null;\n\n let createToolObject = () => {\n const canvas = document.createElement('canvas');\n canvas.width = 100;\n canvas.height = 200;\n canvas.style.width = 50 + 'px';\n canvas.style.height = 100 + 'px';\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = '#FFFFFF';\n ctx.strokeStyle = '#000000';\n ctx.beginPath();\n ctx.arc(50, 50, 40, 0, 4 * Math.PI);\n ctx.fill();\n ctx.stroke();\n let img1 = new Image();\n img1.crossOrigin = 'anonymous';\n img1.src = '/assets/img/svg/3d_item_rotation.svg';\n img1.onload = function () {\n ctx.drawImage(img1, 16, 16, 68, 68);\n };\n\n ctx.beginPath();\n ctx.arc(50, 150, 40, 0, 4 * Math.PI);\n ctx.fill();\n ctx.stroke();\n let img2 = new Image();\n img2.crossOrigin = 'anonymous';\n img2.src = '/assets/img/svg/3d_item_move.svg';\n img2.onload = function () {\n ctx.drawImage(img2, 16, 116, 68, 68);\n };\n\n return canvas;\n };\n\n let clockWise = true;\n let lastAngle = 0;\n\n let createAngleObject = rotate => {\n const canvas = document.createElement('canvas');\n canvas.width = 100;\n canvas.height = 100;\n canvas.style.width = 100 + 'px';\n canvas.style.height = 100 + 'px';\n const ctx = canvas.getContext('2d');\n ctx.strokeStyle = '#FFFFFF';\n ctx.lineWidth = 10;\n ctx.beginPath();\n ctx.arc(50, 50, 45, 0, 2 * Math.PI);\n ctx.stroke();\n\n ctx.strokeStyle = SECONDARY_PURPLE_COLOR;\n ctx.lineWidth = 6;\n ctx.beginPath();\n if (lastAngle < 15 && lastAngle > -15) {\n if (rotate >= 0) {\n clockWise = false;\n } else {\n clockWise = true;\n }\n if (lastAngle === 0) {\n if (rotate > -180) {\n clockWise = true;\n } else {\n clockWise = false;\n }\n }\n }\n\n ctx.arc(50, 50, 45, 0, (rotate / 180.0) * Math.PI, clockWise);\n ctx.stroke();\n\n lastAngle = rotate;\n\n return canvas;\n };\n\n let toolTexture = new Three.Texture(createToolObject());\n toolTexture.needsUpdate = true;\n\n let toolObj = new Three.Sprite(\n new Three.SpriteMaterial({ map: toolTexture, sizeAttenuation: true })\n );\n toolObj.material.transparent = true;\n toolObj.material.depthTest = false;\n toolObj.scale.set(20, 40, 20);\n toolObj.renderOrder = 3;\n toolObj.name = 'toolObj';\n\n let angleTexture = new Three.Texture(createAngleObject(0));\n angleTexture.needsUpdate = true;\n\n let angleObj = new Three.Sprite(\n new Three.SpriteMaterial({ map: angleTexture, sizeAttenuation: false })\n );\n\n angleObj.scale.set(0.075, 0.075, 0.075);\n angleObj.material.transparent = true;\n angleObj.material.depthTest = false;\n angleObj.renderOrder = 3;\n angleObj.name = 'angleObj';\n\n /**\n * Calculate plane point of mouse with `event` & `altitude`\n * * Calculate mouse.x & mouse.y\n * * Set raycaster from camera & Set raycaster direction\n * * Calculate Point & dispatch an action\n */\n const getPoint = (e, alti) => {\n mouse.x = (e.offsetX / this.width) * 2 - 1;\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\n\n raycaster.setFromCamera(mouse, camera);\n rayDirection = raycaster.ray.direction;\n\n Point = mapCursorPosition(e, alti);\n this.context.projectActions.updateMouseCoord(Point);\n };\n\n const getIntersectWallPoint = e => {\n mouse.x = (e.offsetX / this.width) * 2 - 1;\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\n\n raycaster.setFromCamera(mouse, camera);\n rayDirection = raycaster.ray.direction;\n\n let lines = planData.sceneGraph.layers[scene.selectedLayer].lines;\n let keys = Object.keys(lines);\n let arrMesh = [];\n keys.forEach(key => {\n lines[key].children[0].children.forEach(mesh => {\n if (mesh.name == 'soul' && mesh.visible) arrMesh.push(mesh);\n });\n });\n if (arrMesh.length > 0) {\n const intersects = raycaster.intersectObjects(arrMesh);\n if (intersects.length > 0) {\n let intersectPt = intersects[0].point;\n intersectPt.applyMatrix4(gridMatrix);\n\n Point = { x: intersectPt.x, y: -intersectPt.z };\n this.context.projectActions.updateMouseCoord(Point);\n return true;\n }\n }\n\n return false;\n };\n\n this.mouseDownEvent = event => {\n gridPlanOrigin = gridPlane.position;\n gridMatrix.copy(gridPlane.matrixWorld).invert();\n let altitude = 0;\n if (\n allItemRect &&\n allItemRect.cur &&\n allItemRect.cur.itemInfo !== undefined\n ) {\n let properties = allItemRect.cur.itemInfo.properties;\n altitude = properties.getIn(['altitude', '_length']);\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\n }\n getPoint(event, altitude);\n\n const state = this.props.state;\n\n this.lastMousePosition.x = mouse.x;\n this.lastMousePosition.y = mouse.y;\n\n const layer = state.scene.getIn(['layers', state.scene.selectedLayer]);\n const sCount =\n layer.selected.areas.size +\n layer.selected.holes.size +\n layer.selected.items.size +\n layer.selected.lines.size;\n\n if (sCount <= 0) {\n isSelected = false;\n } else if (sCount >= 0 && selectedObject && 'holeID' in selectedObject) {\n isSelected = true;\n }\n\n prevX = Point.x;\n prevY = Point.y;\n\n /**\n * 0 - rotate\n * 1 - move up/down\n * 2 - move x/y\n * 3 - camera rotate\n */\n let transflag = 3;\n raycaster.setFromCamera(mouse, camera);\n const meshes = [];\n toIntersect.forEach(object => {\n if (!object) return;\n object.traverse(o => {\n if (o.isMesh) meshes.push(o);\n });\n });\n let intersects = raycaster.intersectObjects(meshes, true);\n\n let toolIntersects = raycaster.intersectObjects([toolObj], true);\n\n if (toolIntersects.length > 0) {\n let distance = Math.sqrt(\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\n Math.pow((toolIntersects[0].uv.y - 0.25) * 100, 2)\n );\n if (distance <= 20) {\n transflag = 2;\n } else {\n distance = Math.sqrt(\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\n Math.pow((toolIntersects[0].uv.y - 0.75) * 100, 2)\n );\n if (distance <= 20) {\n transflag = 0;\n }\n }\n }\n\n if (intersects.length > 0) {\n let i = 0,\n length = intersects.length;\n for (i = 0; i < length; i++) {\n if (\n intersects[i].object.type !== 'BoxHelper' &&\n // intersects[i].object.type === OBJTYPE_MESH &&\n intersects[i].object.name !== 'lineText' &&\n intersects[i].object.name !== 'soul' &&\n !intersects[i].object.name.includes('WarningBox')\n )\n break;\n }\n\n if (intersects[i] !== undefined) {\n if (intersects[i].object.name.indexOf('transUp') != -1) transflag = 1;\n if (intersects[i].object.name.indexOf('transHole') != -1)\n transflag = 2;\n } else {\n console.log('intersects[i] is undefined in viewer3d/viewer3d.js');\n }\n }\n\n if (this.props.state.mode == MODE_DRAWING_ITEM_3D) return;\n\n if (isSelected) {\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\n let i;\n for (i = 0; i < intersects.length; i++) {\n if (\n intersects[i].object instanceof Three.Mesh &&\n intersects[i].object.name != 'TransformBox' &&\n intersects[i].object.type != 'Line' &&\n intersects[i].object.name != 'lineText' &&\n intersects[i].object.name != 'countertops' &&\n intersects[i].object.type != 'BoxHelper' &&\n intersects[i].object.name != 'floor' &&\n intersects[i].object.name != 'backFace' &&\n intersects[i].object.name != 'soul' &&\n !intersects[i].object.name.includes('backsplash') &&\n !intersects[i].object.name.includes('WarningBox')\n )\n break;\n }\n if (intersects[i] === undefined) {\n if (transflag !== 0 && transflag !== 2) {\n isSelected = false;\n this.context.projectActions.unselectAll();\n scene3D.remove(toolObj);\n this.context.itemsActions.removeReplacingSupport();\n // orbitController.enableRotate = true;\n return;\n }\n }\n if (selectedObject !== undefined) {\n sPoint.set(Point.x, Point.y);\n if (transflag == 0) {\n scene3D.remove(toolObj);\n let alti = 0;\n if (\n allItemRect &&\n allItemRect.cur &&\n allItemRect.cur.itemInfo !== undefined\n ) {\n let properties = allItemRect.cur.itemInfo.properties;\n alti = properties.getIn(['altitude', '_length']);\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\n alti = convert(alti).from(unit).to(this.props.state.scene.unit);\n }\n getPoint(\n { offsetX: event.offsetX - 50, offsetY: event.offsetY },\n alti\n );\n let selectedItem =\n planData.sceneGraph.layers[selectedObject.layerID].items[\n selectedObject.itemID\n ];\n if (isUndefined(selectedItem)) return;\n const selItem = this.props.state.scene.layers\n .get(selectedObject.layerID)\n .items.get(selectedObject.itemID);\n\n lastAngle = 0;\n\n angleObj.position.set(\n planData.plan.position.x + Point.x,\n selItem.category === 'lighting'\n ? -planData.plan.position.y -\n selItem.properties.get('height').get('length')\n : selItem.properties.get('altitude').get('length') +\n planData.plan.position.y,\n planData.plan.position.z - Point.y\n );\n\n angleTexture.image = createAngleObject(0);\n angleTexture.needsUpdate = true;\n\n scene3D.add(angleObj);\n this.setState({ angleObj: angleObj });\n let centerPos = Point;\n getPoint(event, alti);\n\n this.context.itemsActions.beginRotatingItem3D(\n selectedObject.layerID,\n selectedObject.itemID,\n Point.x,\n Point.y,\n centerPos.x,\n centerPos.y\n );\n bRotate = true;\n } else if (transflag == 1) {\n bMoveUP = true;\n } else if (transflag == 2) {\n switch (true) {\n case 'holeID' in selectedObject:\n this.context.holesActions.beginDraggingHole3D(\n selectedObject.layerID,\n selectedObject.holeID,\n Point.x,\n Point.y\n );\n break;\n default:\n this.context.itemsActions.beginDraggingItem3D(\n selectedObject.layerID,\n selectedObject.itemID,\n Point.x,\n Point.y\n );\n break;\n }\n bMove = true;\n scene3D.remove(toolObj);\n }\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(mode))\n cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;\n }\n } else {\n isSelected = false;\n this.context.projectActions.unselectAll();\n scene3D.remove(toolObj);\n this.context.itemsActions.removeReplacingSupport();\n // orbitController.enableRotate = true;\n return;\n }\n }\n };\n\n this.renderer.setClearColor(new Three.Color(SharedStyle.COLORS.white)); // 3D background color\n this.renderer.setSize(this.width, this.height);\n\n // Add the output of the renderer to the html element\n const canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);\n canvasWrapper.appendChild(this.renderer.domElement);\n\n //\n\n if (\n scene.getIn(['layers', scene.selectedLayer, 'selected', 'items']).size !=\n 0\n ) {\n // if selected Object\n isSelected = true;\n selectedObject.layerID = scene.selectedLayer;\n selectedObject.itemID = scene\n .getIn(['layers', scene.selectedLayer, 'selected', 'items'])\n .toJS()[0];\n setTimeout(() => {\n try {\n currentObject =\n planData.sceneGraph.layers[selectedObject.layerID].items[\n selectedObject.itemID\n ];\n if (isUndefined(currentObject)) return;\n const selItem = this.props.state.scene.layers\n .get(selectedObject.layerID)\n .items.get(selectedObject.itemID);\n let itemPos = currentObject.position.clone();\n toolObj.position.set(\n planData.plan.position.x + itemPos.x,\n selItem.category === 'lighting'\n ? -planData.plan.position.y -\n selItem.properties.get('height').get('length')\n : planData.plan.position.y + currentObject.children[0].position.y,\n planData.plan.position.z + itemPos.z\n );\n\n scene3D.add(toolObj);\n this.setState({ toolObj: toolObj });\n } catch (err) {\n console.log(\n 'selectedObject : ' +\n JSON.stringify(selectedObject) +\n '\\nError: ' +\n err\n );\n }\n }, 2000);\n }\n\n // Scene functions\n\n function init() {\n clock = new Three.Clock();\n scene3D = new Three.Scene();\n scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC\n // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);\n window.scene3D = scene3D;\n // Camera\n if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n let { layers } = scene;\n let selectedLayer = layers.get(scene.selectedLayer);\n let ceilHeight = convert(selectedLayer.ceilHeight)\n .from(scene.rulerUnit)\n .to(scene.unit);\n let vertices = selectedLayer.vertices.toJS();\n let maxX = 0,\n maxY = 0,\n minX = 0,\n minY = 0;\n let lines = [];\n selectedLayer.lines.toArray().forEach(line => {\n let vertex0 = selectedLayer.vertices.get(line.vertices.get(0));\n let vertex1 = selectedLayer.vertices.get(line.vertices.get(1));\n let { x: x1, y: y1 } = vertex0;\n let { x: x2, y: y2 } = vertex1;\n let data = line.toJS();\n data = { ...data, l0: { x: x1, y: y1 }, l1: { x: x2, y: y2 } };\n switch (mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n if (almostEqual(y1, y2) && x1 < x2) {\n lines.push(data);\n }\n break;\n case MODE_BACK_ELEVATION_VIEW:\n if (almostEqual(y1, y2) && x1 > x2) {\n lines.push(data);\n }\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n if (almostEqual(x1, x2) && y1 < y2) {\n lines.push(data);\n }\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n if (almostEqual(x1, x2) && y1 > y2) {\n lines.push(data);\n }\n break;\n default:\n break;\n }\n });\n vertices.toArray().forEach(vertex => {\n if (lines.filter(line => line.vertices.includes(vertex.id)).length) {\n maxX = Math.max(vertex.x, maxX);\n maxY = Math.max(vertex.y, maxY);\n if (minX === 0) minX = vertex.x;\n if (minY === 0) minY = vertex.y;\n minX = Math.min(vertex.x, minX);\n minY = Math.min(vertex.y, minY);\n }\n });\n let line_length, angle, posX, posY;\n switch (state.mode) {\n case MODE_FRONT_ELEVATION_VIEW:\n line_length = maxX - minX;\n posY = minY - 100;\n posX = (minX + maxX) / 2;\n angle = 0;\n break;\n case MODE_RIGHT_ELEVATION_VIEW:\n line_length = maxY - minY;\n posX = minX - 100;\n posY = (minY + maxY) / 2;\n angle = -Math.PI / 2;\n break;\n case MODE_LEFT_ELEVATION_VIEW:\n line_length = maxY - minY;\n posX = maxX + 100;\n posY = (minY + maxY) / 2;\n angle = Math.PI / 2;\n break;\n case MODE_BACK_ELEVATION_VIEW:\n line_length = maxX - minX;\n posY = maxY + 100;\n posX = (minX + maxX) / 2;\n angle = Math.PI;\n break;\n }\n let scale = Math.min(\n (self.width * 0.85) / line_length,\n (self.height * 0.85) / ceilHeight\n );\n // let frontRect = {width: line_length * scale, height: ceilHeight * scale};\n let cameraRect = {\n width: self.width / scale,\n height: self.height / scale\n };\n camera = new Three.OrthographicCamera(\n -cameraRect.width / 2,\n cameraRect.width / 2,\n cameraRect.height / 2,\n -cameraRect.height / 2,\n 1,\n 10000\n );\n camera.position.set(posX, ceilHeight / 2, -posY);\n camera.rotation.set(0, angle, 0);\n } else {\n const aspectRatio = self.width / self.height;\n camera = new Three.PerspectiveCamera(45, aspectRatio, 1, 300000);\n camera.position.set(0, 0, 1);\n }\n camera.layers.enable(1);\n\n function loadENV() {\n new RGBELoader().load(\n '/assets/brown_photostudio_02_1k.hdr',\n function (texture) {\n texture.mapping = Three.EquirectangularReflectionMapping;\n scene3D.environment = texture;\n texture.dispose();\n }\n );\n }\n\n // Camera Controls\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n cameraControls = new CameraControls(camera, self.renderer.domElement);\n cameraControls.dollyToCursor = true;\n cameraControls.infinityDolly = true;\n cameraControls.minDistance = 50;\n cameraControls.maxDistance = Infinity;\n cameraControls.zoomSpeed = 1;\n\n loadENV();\n }\n\n scene3D.add(planData.plan);\n scene3D.add(planData.grid);\n scene3D.add(camera);\n if (ARRAY_ELEVATION_VIEW_MODES.includes(state.mode)) {\n planData.cam.add(camera);\n scene3D.add(planData.cam);\n } else {\n pivot = new Three.Object3D();\n pivot.add(camera);\n scene3D.add(pivot);\n }\n\n // LIGHT\n\n let light = new Three.AmbientLight(0xbfbfbf, 0.9); // soft white light\n }\n\n function render() {\n const delta = clock.getDelta(); // Get time delta for smooth updates\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(state.mode))\n cameraControls.update(delta);\n for (let i = 0; i < lights.length; i++) {\n lights[i].light.position.set(\n planData.plan.position.x + lights[i].x,\n planData.plan.position.y + lights[i].height - 10,\n planData.plan.position.z - lights[i].y\n );\n lights[i].target.position.set(\n planData.plan.position.x + lights[i].x,\n planData.plan.position.y,\n planData.plan.position.z - lights[i].y\n );\n }\n\n camera.updateMatrix();\n camera.updateMatrixWorld();\n\n for (let elemID in planData.sceneGraph.LODs) {\n planData.sceneGraph.LODs[elemID].update(camera);\n }\n if (snapBox !== null) {\n if (snapAnimI >= 15) {\n if ('x' in targetPoint)\n snapBox.position.set(\n targetPoint.x,\n snapBox.position.y,\n targetPoint.z\n );\n snapFlag = false;\n t_i++;\n } else {\n if (snapAnimI == 0) {\n targetCRotation =\n ((((targetRot / 180) * Math.PI - snapBox.rotation.y + Math.PI) *\n 180) /\n Math.PI) %\n 360;\n if (targetCRotation > 180) targetCRotation -= 360;\n if (targetCRotation < -180) targetCRotation += 360;\n targetCRotation = (targetCRotation / 180) * Math.PI;\n }\n if (snapAnimI < 10) {\n snapBox.rotateY(targetCRotation / 10);\n } else {\n snapBox.position.set(\n snapBox.position.clone().x - targetUVec.x / 10,\n snapBox.position.clone().y - targetUVec.y / 10,\n snapBox.position.clone().z - targetUVec.z / 10\n );\n }\n snapAnimI++;\n }\n }\n\n if (t_i === 20) {\n //stop snap after 5s\n removeSnapBox();\n }\n\n // hide hole if wall is not visible\n let layerID = self.props.state.scene.selectedLayer;\n let layer = self.props.state.scene.layers.get(layerID);\n layer.holes.forEach(data => {\n let line = planData.sceneGraph.layers[layerID].lines[data.line];\n let hole = planData.sceneGraph.layers[layerID].holes[data.id];\n if (line instanceof Three.Object3D && !line.isMesh) {\n line = line.children[0].children[0];\n // index(faces) of the line\n const indexAttribute = line.geometry.getIndex();\n const firstFaceIndices = [\n indexAttribute.getX(0),\n indexAttribute.getX(1),\n indexAttribute.getX(2)\n ];\n\n if (firstFaceIndices == undefined) return;\n // normal vector of the line\n const normalAttribute = line.geometry.attributes.normal;\n let normal = new Three.Vector3()\n .fromBufferAttribute(normalAttribute, 0)\n .clone();\n normal = normal\n .applyMatrix4(line.matrixWorld)\n .sub(new Three.Vector3(0, 0, 0).applyMatrix4(line.matrixWorld))\n .normalize();\n let vertices = layer.lines.get(data.line).vertices.toJS();\n let vertex1 = layer.vertices.get(vertices[0]);\n let vertex2 = layer.vertices.get(vertices[1]);\n let cX = (vertex1.x + vertex2.x) / 2;\n let cY = (vertex1.y + vertex2.y) / 2;\n let posVec = new Three.Vector3(cX, 150, -cY);\n posVec = posVec.add(planData.plan.position.clone());\n let cameraLine = camera.position.clone().sub(posVec);\n if (hole) {\n hole.traverse(child => {\n if (child.isMesh) {\n child.material.opacity = cameraLine.dot(normal) > 0 ? 1 : 0;\n child.material.transparent =\n cameraLine.dot(normal) > 0 ? false : true;\n child.material.needsUpdate = true;\n }\n });\n }\n }\n // /////////////////////////////////////\n });\n\n self.renderer.render(scene3D, camera);\n self.renderingID = requestAnimationFrame(render);\n\n if (self.state.waitForRender > 0) {\n self.state.waitForRender++;\n if (self.state.waitForRender > 2) {\n self.setState({ isLoading: false, waitForRender: 0 });\n setTimeout(() => self.props.setIsLoading3D(false), 100);\n console.log('257 line: false');\n self.renderer.domElement.style.display = 'block';\n }\n }\n }\n\n //\n\n window.planData = planData;\n this.planData = planData;\n this.camera = camera;\n this.cameraControls = cameraControls;\n this.scene3D = scene3D;\n\n //\n\n prepareSnap(layer);\n }\n\n componentWillUnmount() {\n cancelAnimationFrame(this.renderingID);\n\n if (!ARRAY_ELEVATION_VIEW_MODES.includes(this.props.state.mode)) {\n if (this.cameraControls !== undefined) this.cameraControls.dispose();\n }\n\n disposeScene(this.scene3D);\n this.scene3D.remove(this.planData.plan);\n this.scene3D.remove(this.planData.grid);\n\n this.scene3D = null;\n this.planData = null;\n this.camera = null;\n this.cameraControls = null;\n this.renderer.renderLists.dispose();\n }\n\n componentWillReceiveProps(nextProps) {\n let { width, height } = nextProps;\n let actions = {\n areaActions: this.context.areaActions,\n holesActions: this.context.holesActions,\n itemsActions: this.context.itemsActions,\n sceneActions: this.context.sceneActions,\n linesActions: this.context.linesActions,\n projectActions: this.context.projectActions,\n catalog: this.context.catalog\n };\n\n this.width = width;\n this.height = height;\n\n this.renderer.setSize(width, height);\n\n let allLines;\n let allLineRects;\n let allItemRect;\n\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n\n let data = nextProps.state.scene;\n let layer = data.getIn(['layers', data.selectedLayer]);\n const self = this;\n\n function implementBacksplash() {\n let allItems = GeometryUtils.getAllItemSpecified(\n nextProps.state.scene,\n actions.catalog,\n BASE_CABINET_LAYOUTPOS\n );\n let i,\n items = [];\n for (i = 0; i < allItems.others.length; i++)\n items.push(allItems.others[i]);\n if (allItems.cur) items.push(allItems.cur);\n\n for (i = 0; i < items.length; i++) {\n let calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);\n let visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);\n actions.itemsActions.setBacksplashVisible(\n items[i].itemInfo.id,\n visible\n );\n\n createBacksplash(\n items[i],\n nextProps.state.scene.getIn([\n 'layers',\n nextProps.state.scene.selectedLayer\n ]),\n planData,\n nextProps.state.scene\n );\n }\n }\n\n function implementWarningBox() {\n let holeItems = GeometryUtils.getHoleItems(layer);\n let i,\n items = [];\n for (i = 0; i < allItemRect.others.length; i++)\n items.push(allItemRect.others[i]);\n if (allItemRect.cur) items.push(allItemRect.cur);\n\n for (i = 0; i < items.length; i++)\n checkCabinetOverlap(\n { x: items[i].pos.x, y: items[i].pos.y },\n items[i],\n holeItems,\n planData\n );\n }\n\n let prepareSnapSpec = layer => {\n allLines = GeometryUtils.getAllLines(layer);\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\n allItemRect = GeometryUtils.getAllItemSpecified(\n this.props.state.scene,\n actions.catalog,\n [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]\n );\n };\n\n let layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);\n\n if (this.state.showflag) {\n prepareSnapSpec(layer);\n implementBacksplash();\n implementWarningBox();\n this.setState({ showflag: false });\n }\n if (\n nextProps.state.scene !== this.props.state.scene ||\n (nextProps.state.doorStyle &&\n nextProps.state.doorStyle.get('name') !==\n this.props.state.doorStyle.get('name'))\n ) {\n let changedValues = diff(this.props.state.scene, nextProps.state.scene);\n prepareSnapSpec(layer);\n if (\n nextProps.state.doorStyle &&\n nextProps.state.doorStyle.get('name') ===\n this.props.state.doorStyle.get('name')\n ) {\n self.setState({ isLoading: true, waitForRender: 0 });\n this.props.setIsLoading3D(true);\n self.renderer.domElement.style.display = 'none';\n }\n if (nextProps.state.scene.showfg == true) {\n implementBacksplash();\n implementWarningBox();\n } else {\n deleteSpecifiedMeshObjects('TransformBox');\n }\n let { toolObj, angleObj } = this.state;\n var { promise } = updateScene(\n this.planData,\n nextProps.state.scene,\n this.props.state.scene,\n changedValues.toJS(),\n actions,\n this.context.catalog,\n nextProps.state.mode,\n toolObj,\n angleObj\n );\n promise.then(p1Value => {\n self.setState({ waitForRender: 1 });\n });\n }\n }\n\n render() {\n const { isLoading } = this.state;\n if (isLoading) {\n // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'none');\n this.renderer.domElement.style.display = 'none';\n return (\n <div\n style={{\n alignItems: ' center',\n width: this.props.width,\n height: this.props.height,\n display: 'inline-flex',\n justifyContent: 'center'\n }}\n >\n <img\n style={{\n width: '70px',\n height: '70px',\n animation: 'spin 2s linear infinite'\n }}\n src={'/assets/img/loading_large.gif'}\n alt=\"img\"\n />\n </div>\n );\n } else {\n this.renderer.domElement.style.pointerEvents = 'auto';\n this.renderer.domElement.style.opacity = '1';\n // document.getElementById('elevation') && (document.getElementById('elevation').style.display = 'block');\n return React.createElement('div', { ref: 'canvasWrapper' });\n }\n }\n}\n\nViewer3DElevationDownload.propTypes = {\n state: PropTypes.object.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n replaceCabinet: PropTypes.func.isRequired\n};\n\nViewer3DElevationDownload.contextTypes = {\n areaActions: PropTypes.object.isRequired,\n holesActions: PropTypes.object.isRequired,\n itemsActions: PropTypes.object.isRequired,\n linesActions: PropTypes.object.isRequired,\n sceneActions: PropTypes.object.isRequired,\n projectActions: PropTypes.object.isRequired,\n catalog: PropTypes.object\n};\n"],"mappings":"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","ignoreList":[]}