kitchen-simulator 5.0.0-test.3 → 5.0.0-test.5

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 (1098) hide show
  1. package/es/KitchenConfigurator.js +1 -1
  2. package/es/KitchenConfigurator.js.map +1 -1
  3. package/package.json +8 -13
  4. package/lib/@history.js +0 -11
  5. package/lib/@history.js.map +0 -1
  6. package/lib/AppContext.js +0 -11
  7. package/lib/AppContext.js.map +0 -1
  8. package/lib/KitchenConfigurator.js +0 -1353
  9. package/lib/KitchenConfigurator.js.map +0 -1
  10. package/lib/KitchenConfiguratorApp.js +0 -539
  11. package/lib/KitchenConfiguratorApp.js.map +0 -1
  12. package/lib/actions/area-actions.js +0 -22
  13. package/lib/actions/area-actions.js.map +0 -1
  14. package/lib/actions/export.js +0 -44
  15. package/lib/actions/export.js.map +0 -1
  16. package/lib/actions/groups-actions.js +0 -108
  17. package/lib/actions/groups-actions.js.map +0 -1
  18. package/lib/actions/holes-actions.js +0 -141
  19. package/lib/actions/holes-actions.js.map +0 -1
  20. package/lib/actions/items-actions.js +0 -365
  21. package/lib/actions/items-actions.js.map +0 -1
  22. package/lib/actions/lines-actions.js +0 -98
  23. package/lib/actions/lines-actions.js.map +0 -1
  24. package/lib/actions/project-actions.js +0 -333
  25. package/lib/actions/project-actions.js.map +0 -1
  26. package/lib/actions/scene-actions.js +0 -44
  27. package/lib/actions/scene-actions.js.map +0 -1
  28. package/lib/actions/user-actions.js +0 -69
  29. package/lib/actions/user-actions.js.map +0 -1
  30. package/lib/actions/vertices-actions.js +0 -36
  31. package/lib/actions/vertices-actions.js.map +0 -1
  32. package/lib/actions/viewer2d-actions.js +0 -74
  33. package/lib/actions/viewer2d-actions.js.map +0 -1
  34. package/lib/actions/viewer3d-actions.js +0 -33
  35. package/lib/actions/viewer3d-actions.js.map +0 -1
  36. package/lib/catalog/areas/area/planner-element.js +0 -47
  37. package/lib/catalog/areas/area/planner-element.js.map +0 -1
  38. package/lib/catalog/catalog.js +0 -283
  39. package/lib/catalog/catalog.js.map +0 -1
  40. package/lib/catalog/factories/area-factory-3d.js +0 -192
  41. package/lib/catalog/factories/area-factory-3d.js.map +0 -1
  42. package/lib/catalog/factories/area-factory.js +0 -90
  43. package/lib/catalog/factories/area-factory.js.map +0 -1
  44. package/lib/catalog/factories/export.js +0 -26
  45. package/lib/catalog/factories/export.js.map +0 -1
  46. package/lib/catalog/factories/wall-factory-3d.js +0 -213
  47. package/lib/catalog/factories/wall-factory-3d.js.map +0 -1
  48. package/lib/catalog/factories/wall-factory.js +0 -279
  49. package/lib/catalog/factories/wall-factory.js.map +0 -1
  50. package/lib/catalog/holes/door-closet/planner-element.js +0 -232
  51. package/lib/catalog/holes/door-closet/planner-element.js.map +0 -1
  52. package/lib/catalog/holes/door-double/planner-element.js +0 -325
  53. package/lib/catalog/holes/door-double/planner-element.js.map +0 -1
  54. package/lib/catalog/holes/door-exterior/planner-element.js +0 -225
  55. package/lib/catalog/holes/door-exterior/planner-element.js.map +0 -1
  56. package/lib/catalog/holes/door-interior/planner-element.js +0 -237
  57. package/lib/catalog/holes/door-interior/planner-element.js.map +0 -1
  58. package/lib/catalog/holes/door-panic/planner-element.js +0 -513
  59. package/lib/catalog/holes/door-panic/planner-element.js.map +0 -1
  60. package/lib/catalog/holes/door-panic-double/planner-element.js +0 -473
  61. package/lib/catalog/holes/door-panic-double/planner-element.js.map +0 -1
  62. package/lib/catalog/holes/door-sliding/planner-element.js +0 -235
  63. package/lib/catalog/holes/door-sliding/planner-element.js.map +0 -1
  64. package/lib/catalog/holes/doorway-framed/planner-element.js +0 -155
  65. package/lib/catalog/holes/doorway-framed/planner-element.js.map +0 -1
  66. package/lib/catalog/holes/doorway-frameless/planner-element.js +0 -114
  67. package/lib/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
  68. package/lib/catalog/holes/window-clear/planner-element.js +0 -176
  69. package/lib/catalog/holes/window-clear/planner-element.js.map +0 -1
  70. package/lib/catalog/holes/window-cross/planner-element.js +0 -175
  71. package/lib/catalog/holes/window-cross/planner-element.js.map +0 -1
  72. package/lib/catalog/holes/window-double-hung/planner-element.js +0 -313
  73. package/lib/catalog/holes/window-double-hung/planner-element.js.map +0 -1
  74. package/lib/catalog/holes/window-vertical/planner-element.js +0 -286
  75. package/lib/catalog/holes/window-vertical/planner-element.js.map +0 -1
  76. package/lib/catalog/lines/wall/planner-element.js +0 -77
  77. package/lib/catalog/lines/wall/planner-element.js.map +0 -1
  78. package/lib/catalog/molding/molding-dcm/planner-element.js +0 -39
  79. package/lib/catalog/molding/molding-dcm/planner-element.js.map +0 -1
  80. package/lib/catalog/molding/molding-fbm/planner-element.js +0 -39
  81. package/lib/catalog/molding/molding-fbm/planner-element.js.map +0 -1
  82. package/lib/catalog/molding/molding-lrm/planner-element.js +0 -39
  83. package/lib/catalog/molding/molding-lrm/planner-element.js.map +0 -1
  84. package/lib/catalog/properties/export.js +0 -82
  85. package/lib/catalog/properties/export.js.map +0 -1
  86. package/lib/catalog/properties/property-checkbox.js +0 -79
  87. package/lib/catalog/properties/property-checkbox.js.map +0 -1
  88. package/lib/catalog/properties/property-color.js +0 -47
  89. package/lib/catalog/properties/property-color.js.map +0 -1
  90. package/lib/catalog/properties/property-enum.js +0 -63
  91. package/lib/catalog/properties/property-enum.js.map +0 -1
  92. package/lib/catalog/properties/property-hidden.js +0 -27
  93. package/lib/catalog/properties/property-hidden.js.map +0 -1
  94. package/lib/catalog/properties/property-lenght-measure.js +0 -109
  95. package/lib/catalog/properties/property-lenght-measure.js.map +0 -1
  96. package/lib/catalog/properties/property-length-measure.js +0 -93
  97. package/lib/catalog/properties/property-length-measure.js.map +0 -1
  98. package/lib/catalog/properties/property-length-measure_hole.js +0 -109
  99. package/lib/catalog/properties/property-length-measure_hole.js.map +0 -1
  100. package/lib/catalog/properties/property-number.js +0 -56
  101. package/lib/catalog/properties/property-number.js.map +0 -1
  102. package/lib/catalog/properties/property-read-only.js +0 -34
  103. package/lib/catalog/properties/property-read-only.js.map +0 -1
  104. package/lib/catalog/properties/property-string.js +0 -56
  105. package/lib/catalog/properties/property-string.js.map +0 -1
  106. package/lib/catalog/properties/property-toggle.js +0 -47
  107. package/lib/catalog/properties/property-toggle.js.map +0 -1
  108. package/lib/catalog/properties/shared-property-style.js +0 -21
  109. package/lib/catalog/properties/shared-property-style.js.map +0 -1
  110. package/lib/catalog/utils/FuseUtils.js +0 -89
  111. package/lib/catalog/utils/FuseUtils.js.map +0 -1
  112. package/lib/catalog/utils/exporter.js +0 -156
  113. package/lib/catalog/utils/exporter.js.map +0 -1
  114. package/lib/catalog/utils/geom-utils.js +0 -206
  115. package/lib/catalog/utils/geom-utils.js.map +0 -1
  116. package/lib/catalog/utils/item-loader.js +0 -1534
  117. package/lib/catalog/utils/item-loader.js.map +0 -1
  118. package/lib/catalog/utils/load-obj.js +0 -100
  119. package/lib/catalog/utils/load-obj.js.map +0 -1
  120. package/lib/catalog/utils/mtl-loader.js +0 -360
  121. package/lib/catalog/utils/mtl-loader.js.map +0 -1
  122. package/lib/catalog/utils/obj-loader.js +0 -479
  123. package/lib/catalog/utils/obj-loader.js.map +0 -1
  124. package/lib/class/FuseUtils.js +0 -89
  125. package/lib/class/FuseUtils.js.map +0 -1
  126. package/lib/class/area.js +0 -151
  127. package/lib/class/area.js.map +0 -1
  128. package/lib/class/export.js +0 -97
  129. package/lib/class/export.js.map +0 -1
  130. package/lib/class/group.js +0 -446
  131. package/lib/class/group.js.map +0 -1
  132. package/lib/class/guide.js +0 -68
  133. package/lib/class/guide.js.map +0 -1
  134. package/lib/class/hole.js +0 -935
  135. package/lib/class/hole.js.map +0 -1
  136. package/lib/class/item.js +0 -1894
  137. package/lib/class/item.js.map +0 -1
  138. package/lib/class/layer.js +0 -673
  139. package/lib/class/layer.js.map +0 -1
  140. package/lib/class/line.js +0 -1296
  141. package/lib/class/line.js.map +0 -1
  142. package/lib/class/project.js +0 -829
  143. package/lib/class/project.js.map +0 -1
  144. package/lib/class/vertex.js +0 -272
  145. package/lib/class/vertex.js.map +0 -1
  146. package/lib/components/atoms/Snackbar/index.js +0 -57
  147. package/lib/components/atoms/Snackbar/index.js.map +0 -1
  148. package/lib/components/atoms/radio-button/index.js +0 -33
  149. package/lib/components/atoms/radio-button/index.js.map +0 -1
  150. package/lib/components/atoms/radio-button/styles.js +0 -12
  151. package/lib/components/atoms/radio-button/styles.js.map +0 -1
  152. package/lib/components/button/MainButton.js +0 -98
  153. package/lib/components/button/MainButton.js.map +0 -1
  154. package/lib/components/button/ToggleMeasureButton.js +0 -63
  155. package/lib/components/button/ToggleMeasureButton.js.map +0 -1
  156. package/lib/components/catalog-view/catalog-breadcrumb.js +0 -61
  157. package/lib/components/catalog-view/catalog-breadcrumb.js.map +0 -1
  158. package/lib/components/catalog-view/catalog-item.js +0 -233
  159. package/lib/components/catalog-view/catalog-item.js.map +0 -1
  160. package/lib/components/catalog-view/catalog-list.js +0 -189
  161. package/lib/components/catalog-view/catalog-list.js.map +0 -1
  162. package/lib/components/catalog-view/catalog-page-item.js +0 -137
  163. package/lib/components/catalog-view/catalog-page-item.js.map +0 -1
  164. package/lib/components/catalog-view/catalog-turn-back-page-item.js +0 -113
  165. package/lib/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
  166. package/lib/components/configurator/custom-configurator.js +0 -101
  167. package/lib/components/configurator/custom-configurator.js.map +0 -1
  168. package/lib/components/configurator/project-configurator.js +0 -138
  169. package/lib/components/configurator/project-configurator.js.map +0 -1
  170. package/lib/components/content.js +0 -132
  171. package/lib/components/content.js.map +0 -1
  172. package/lib/components/export.js +0 -90
  173. package/lib/components/export.js.map +0 -1
  174. package/lib/components/firstsetting/button/styles.js +0 -34
  175. package/lib/components/firstsetting/button/styles.js.map +0 -1
  176. package/lib/components/firstsetting/export.js +0 -16
  177. package/lib/components/firstsetting/export.js.map +0 -1
  178. package/lib/components/firstsetting/firstsetting-content-button.js +0 -224
  179. package/lib/components/firstsetting/firstsetting-content-button.js.map +0 -1
  180. package/lib/components/firstsetting/firstsetting-toggle-button.js +0 -133
  181. package/lib/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
  182. package/lib/components/firstsetting/firstsetting.js +0 -633
  183. package/lib/components/firstsetting/firstsetting.js.map +0 -1
  184. package/lib/components/footerbar/button/ControlButton.js +0 -79
  185. package/lib/components/footerbar/button/ControlButton.js.map +0 -1
  186. package/lib/components/footerbar/button/DirectionButton.js +0 -76
  187. package/lib/components/footerbar/button/DirectionButton.js.map +0 -1
  188. package/lib/components/footerbar/button/DirectionPanSpinButton.js +0 -57
  189. package/lib/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
  190. package/lib/components/footerbar/button/ToggleButton.js +0 -83
  191. package/lib/components/footerbar/button/ToggleButton.js.map +0 -1
  192. package/lib/components/footerbar/button/ToggleConvertButton.js +0 -80
  193. package/lib/components/footerbar/button/ToggleConvertButton.js.map +0 -1
  194. package/lib/components/footerbar/button/ToggleMeasureButton.js +0 -59
  195. package/lib/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
  196. package/lib/components/footerbar/button/styles.js +0 -29
  197. package/lib/components/footerbar/button/styles.js.map +0 -1
  198. package/lib/components/footerbar/export.js +0 -16
  199. package/lib/components/footerbar/export.js.map +0 -1
  200. package/lib/components/footerbar/footer-content-button.js +0 -224
  201. package/lib/components/footerbar/footer-content-button.js.map +0 -1
  202. package/lib/components/footerbar/footer-toggle-button.js +0 -133
  203. package/lib/components/footerbar/footer-toggle-button.js.map +0 -1
  204. package/lib/components/footerbar/footerbar.js +0 -808
  205. package/lib/components/footerbar/footerbar.js.map +0 -1
  206. package/lib/components/footerbar/styles.js +0 -41
  207. package/lib/components/footerbar/styles.js.map +0 -1
  208. package/lib/components/header/button/MenuButton.js +0 -77
  209. package/lib/components/header/button/MenuButton.js.map +0 -1
  210. package/lib/components/header/button/SaveButton.js +0 -57
  211. package/lib/components/header/button/SaveButton.js.map +0 -1
  212. package/lib/components/header/button/styles.js +0 -68
  213. package/lib/components/header/button/styles.js.map +0 -1
  214. package/lib/components/header/export.js +0 -12
  215. package/lib/components/header/export.js.map +0 -1
  216. package/lib/components/header/header.js +0 -556
  217. package/lib/components/header/header.js.map +0 -1
  218. package/lib/components/header/styles.js +0 -47
  219. package/lib/components/header/styles.js.map +0 -1
  220. package/lib/components/login/Login.js +0 -94
  221. package/lib/components/login/Login.js.map +0 -1
  222. package/lib/components/login/LoginForm/index.js +0 -140
  223. package/lib/components/login/LoginForm/index.js.map +0 -1
  224. package/lib/components/login/Register.js +0 -104
  225. package/lib/components/login/Register.js.map +0 -1
  226. package/lib/components/login/RegisterForm/index.js +0 -237
  227. package/lib/components/login/RegisterForm/index.js.map +0 -1
  228. package/lib/components/login/jwtService.js +0 -239
  229. package/lib/components/login/jwtService.js.map +0 -1
  230. package/lib/components/molecules/slider/index.js +0 -22
  231. package/lib/components/molecules/slider/index.js.map +0 -1
  232. package/lib/components/molecules/slider/styles.js +0 -2
  233. package/lib/components/molecules/slider/styles.js.map +0 -1
  234. package/lib/components/myprojects/export.js +0 -12
  235. package/lib/components/myprojects/export.js.map +0 -1
  236. package/lib/components/myprojects/index.js +0 -453
  237. package/lib/components/myprojects/index.js.map +0 -1
  238. package/lib/components/myprojects/styles.js +0 -31
  239. package/lib/components/myprojects/styles.js.map +0 -1
  240. package/lib/components/sidebar/custom-accordion.js +0 -45
  241. package/lib/components/sidebar/custom-accordion.js.map +0 -1
  242. package/lib/components/sidebar/export.js +0 -50
  243. package/lib/components/sidebar/export.js.map +0 -1
  244. package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -74
  245. package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
  246. package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -124
  247. package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
  248. package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -135
  249. package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
  250. package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -260
  251. package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
  252. package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -84
  253. package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
  254. package/lib/components/sidebar/panel-element-editor/element-editor.js +0 -884
  255. package/lib/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
  256. package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
  257. package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
  258. package/lib/components/sidebar/panel-element-editor/panel-element-editor.js +0 -56
  259. package/lib/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
  260. package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -125
  261. package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
  262. package/lib/components/sidebar/panel-group-editor.js +0 -218
  263. package/lib/components/sidebar/panel-group-editor.js.map +0 -1
  264. package/lib/components/sidebar/panel-groups.js +0 -274
  265. package/lib/components/sidebar/panel-groups.js.map +0 -1
  266. package/lib/components/sidebar/panel-guides.js +0 -192
  267. package/lib/components/sidebar/panel-guides.js.map +0 -1
  268. package/lib/components/sidebar/panel-layer-elements.js +0 -258
  269. package/lib/components/sidebar/panel-layer-elements.js.map +0 -1
  270. package/lib/components/sidebar/panel-layers.js +0 -347
  271. package/lib/components/sidebar/panel-layers.js.map +0 -1
  272. package/lib/components/sidebar/panel.js +0 -110
  273. package/lib/components/sidebar/panel.js.map +0 -1
  274. package/lib/components/sidebar/sidebar.js +0 -117
  275. package/lib/components/sidebar/sidebar.js.map +0 -1
  276. package/lib/components/sidebar/toolbar-panel.js +0 -171
  277. package/lib/components/sidebar/toolbar-panel.js.map +0 -1
  278. package/lib/components/sign/export.js +0 -18
  279. package/lib/components/sign/export.js.map +0 -1
  280. package/lib/components/sign/main/index.js +0 -567
  281. package/lib/components/sign/main/index.js.map +0 -1
  282. package/lib/components/sign/main/styles.js +0 -27
  283. package/lib/components/sign/main/styles.js.map +0 -1
  284. package/lib/components/style/button.js +0 -121
  285. package/lib/components/style/button.js.map +0 -1
  286. package/lib/components/style/cancel-button.js +0 -30
  287. package/lib/components/style/cancel-button.js.map +0 -1
  288. package/lib/components/style/content-container.js +0 -41
  289. package/lib/components/style/content-container.js.map +0 -1
  290. package/lib/components/style/content-title.js +0 -38
  291. package/lib/components/style/content-title.js.map +0 -1
  292. package/lib/components/style/delete-button.js +0 -35
  293. package/lib/components/style/delete-button.js.map +0 -1
  294. package/lib/components/style/export.js +0 -122
  295. package/lib/components/style/export.js.map +0 -1
  296. package/lib/components/style/form-block.js +0 -32
  297. package/lib/components/style/form-block.js.map +0 -1
  298. package/lib/components/style/form-color-input.js +0 -35
  299. package/lib/components/style/form-color-input.js.map +0 -1
  300. package/lib/components/style/form-label.js +0 -34
  301. package/lib/components/style/form-label.js.map +0 -1
  302. package/lib/components/style/form-number-input.js +0 -197
  303. package/lib/components/style/form-number-input.js.map +0 -1
  304. package/lib/components/style/form-number-input_2.js +0 -214
  305. package/lib/components/style/form-number-input_2.js.map +0 -1
  306. package/lib/components/style/form-select.js +0 -30
  307. package/lib/components/style/form-select.js.map +0 -1
  308. package/lib/components/style/form-slider.js +0 -53
  309. package/lib/components/style/form-slider.js.map +0 -1
  310. package/lib/components/style/form-submit-button.js +0 -36
  311. package/lib/components/style/form-submit-button.js.map +0 -1
  312. package/lib/components/style/form-text-input.js +0 -84
  313. package/lib/components/style/form-text-input.js.map +0 -1
  314. package/lib/components/toolbar/button/ControlButton.js +0 -76
  315. package/lib/components/toolbar/button/ControlButton.js.map +0 -1
  316. package/lib/components/toolbar/button/DirectionButton.js +0 -57
  317. package/lib/components/toolbar/button/DirectionButton.js.map +0 -1
  318. package/lib/components/toolbar/button/RightButton.js +0 -140
  319. package/lib/components/toolbar/button/RightButton.js.map +0 -1
  320. package/lib/components/toolbar/button/ToggleButton.js +0 -66
  321. package/lib/components/toolbar/button/ToggleButton.js.map +0 -1
  322. package/lib/components/toolbar/button/index.js +0 -94
  323. package/lib/components/toolbar/button/index.js.map +0 -1
  324. package/lib/components/toolbar/button/styles.js +0 -21
  325. package/lib/components/toolbar/button/styles.js.map +0 -1
  326. package/lib/components/toolbar/components/DoorStyleMenu.js +0 -112
  327. package/lib/components/toolbar/components/DoorStyleMenu.js.map +0 -1
  328. package/lib/components/toolbar/components/Pricing.js +0 -110
  329. package/lib/components/toolbar/components/Pricing.js.map +0 -1
  330. package/lib/components/toolbar/components/ReviewForQuote.js +0 -485
  331. package/lib/components/toolbar/components/ReviewForQuote.js.map +0 -1
  332. package/lib/components/toolbar/export.js +0 -50
  333. package/lib/components/toolbar/export.js.map +0 -1
  334. package/lib/components/toolbar/main/Alert.js +0 -132
  335. package/lib/components/toolbar/main/Alert.js.map +0 -1
  336. package/lib/components/toolbar/main/TakePictureModal.js +0 -109
  337. package/lib/components/toolbar/main/TakePictureModal.js.map +0 -1
  338. package/lib/components/toolbar/main/confirm-popup.js +0 -95
  339. package/lib/components/toolbar/main/confirm-popup.js.map +0 -1
  340. package/lib/components/toolbar/main/index.js +0 -4619
  341. package/lib/components/toolbar/main/index.js.map +0 -1
  342. package/lib/components/toolbar/main/myComponents.js +0 -125
  343. package/lib/components/toolbar/main/myComponents.js.map +0 -1
  344. package/lib/components/toolbar/main/styles.js +0 -73
  345. package/lib/components/toolbar/main/styles.js.map +0 -1
  346. package/lib/components/toolbar/plugin-item.js +0 -156
  347. package/lib/components/toolbar/plugin-item.js.map +0 -1
  348. package/lib/components/toolbar/popup/appliance/appliance-category/index.js +0 -86
  349. package/lib/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
  350. package/lib/components/toolbar/popup/appliance/choose-appliance/index.js +0 -85
  351. package/lib/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
  352. package/lib/components/toolbar/popup/appliance/index.js +0 -89
  353. package/lib/components/toolbar/popup/appliance/index.js.map +0 -1
  354. package/lib/components/toolbar/popup/autosaveprompt/index.js +0 -99
  355. package/lib/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
  356. package/lib/components/toolbar/popup/autosaveprompt/styles.js +0 -16
  357. package/lib/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
  358. package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -86
  359. package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
  360. package/lib/components/toolbar/popup/cabinet/choose-product/index.js +0 -107
  361. package/lib/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
  362. package/lib/components/toolbar/popup/cabinet/index.js +0 -91
  363. package/lib/components/toolbar/popup/cabinet/index.js.map +0 -1
  364. package/lib/components/toolbar/popup/doorStyle/choose-style/index.js +0 -59
  365. package/lib/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
  366. package/lib/components/toolbar/popup/doorStyle/index.js +0 -68
  367. package/lib/components/toolbar/popup/doorStyle/index.js.map +0 -1
  368. package/lib/components/toolbar/popup/doorStyle/style-category/index.js +0 -152
  369. package/lib/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
  370. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -9
  371. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
  372. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -128
  373. package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
  374. package/lib/components/toolbar/popup/downloadsummary/index.js +0 -572
  375. package/lib/components/toolbar/popup/downloadsummary/index.js.map +0 -1
  376. package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -60
  377. package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
  378. package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -200
  379. package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
  380. package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -254
  381. package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
  382. package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1762
  383. package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
  384. package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -96
  385. package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
  386. package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -125
  387. package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
  388. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1713
  389. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
  390. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -184
  391. package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
  392. package/lib/components/toolbar/popup/downloadsummary/showWarranty.js +0 -115
  393. package/lib/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
  394. package/lib/components/toolbar/popup/downloadsummary/styles.js +0 -47
  395. package/lib/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
  396. package/lib/components/toolbar/popup/finishingtouch/category/index.js +0 -44
  397. package/lib/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
  398. package/lib/components/toolbar/popup/finishingtouch/index.js +0 -54
  399. package/lib/components/toolbar/popup/finishingtouch/index.js.map +0 -1
  400. package/lib/components/toolbar/popup/finishingtouch/material-edit.js +0 -163
  401. package/lib/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
  402. package/lib/components/toolbar/popup/finishingtouch/product/index.js +0 -65
  403. package/lib/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
  404. package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -124
  405. package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
  406. package/lib/components/toolbar/popup/floorplan/choose-floor/index.js +0 -255
  407. package/lib/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
  408. package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -20
  409. package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
  410. package/lib/components/toolbar/popup/floorplan/floor-category/index.js +0 -99
  411. package/lib/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
  412. package/lib/components/toolbar/popup/floorplan/index.js +0 -56
  413. package/lib/components/toolbar/popup/floorplan/index.js.map +0 -1
  414. package/lib/components/toolbar/popup/index.js +0 -195
  415. package/lib/components/toolbar/popup/index.js.map +0 -1
  416. package/lib/components/toolbar/popup/newproject/index.js +0 -75
  417. package/lib/components/toolbar/popup/newproject/index.js.map +0 -1
  418. package/lib/components/toolbar/popup/newproject/styles.js +0 -16
  419. package/lib/components/toolbar/popup/newproject/styles.js.map +0 -1
  420. package/lib/components/toolbar/popup/product/appliance.js +0 -73
  421. package/lib/components/toolbar/popup/product/appliance.js.map +0 -1
  422. package/lib/components/toolbar/popup/product/cabinetproduct.js +0 -33
  423. package/lib/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
  424. package/lib/components/toolbar/popup/product/doorstyle.js +0 -59
  425. package/lib/components/toolbar/popup/product/doorstyle.js.map +0 -1
  426. package/lib/components/toolbar/popup/product/doorstyleproduct.js +0 -59
  427. package/lib/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
  428. package/lib/components/toolbar/popup/product/floor.js +0 -59
  429. package/lib/components/toolbar/popup/product/floor.js.map +0 -1
  430. package/lib/components/toolbar/popup/product/floorproduct.js +0 -68
  431. package/lib/components/toolbar/popup/product/floorproduct.js.map +0 -1
  432. package/lib/components/toolbar/popup/product/index.js +0 -59
  433. package/lib/components/toolbar/popup/product/index.js.map +0 -1
  434. package/lib/components/toolbar/popup/product/primary.js +0 -71
  435. package/lib/components/toolbar/popup/product/primary.js.map +0 -1
  436. package/lib/components/toolbar/popup/product/productline.js +0 -128
  437. package/lib/components/toolbar/popup/product/productline.js.map +0 -1
  438. package/lib/components/toolbar/popup/product/reviewItem.js +0 -346
  439. package/lib/components/toolbar/popup/product/reviewItem.js.map +0 -1
  440. package/lib/components/toolbar/popup/product/reviewMolding.js +0 -291
  441. package/lib/components/toolbar/popup/product/reviewMolding.js.map +0 -1
  442. package/lib/components/toolbar/popup/product/styles.js +0 -79
  443. package/lib/components/toolbar/popup/product/styles.js.map +0 -1
  444. package/lib/components/toolbar/popup/savedesign/FullPictureForm.js +0 -169
  445. package/lib/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
  446. package/lib/components/toolbar/popup/savedesign/index.js +0 -516
  447. package/lib/components/toolbar/popup/savedesign/index.js.map +0 -1
  448. package/lib/components/toolbar/popup/savedesign/styles.js +0 -26
  449. package/lib/components/toolbar/popup/savedesign/styles.js.map +0 -1
  450. package/lib/components/toolbar/popup/setDoorStyleOption/index.js +0 -64
  451. package/lib/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
  452. package/lib/components/toolbar/popup/styles.js +0 -104
  453. package/lib/components/toolbar/popup/styles.js.map +0 -1
  454. package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -166
  455. package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
  456. package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -93
  457. package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
  458. package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -45
  459. package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
  460. package/lib/components/toolbar/popup/submitforquote/StepDots.js +0 -40
  461. package/lib/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
  462. package/lib/components/toolbar/popup/submitforquote/cart-choice.js +0 -141
  463. package/lib/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
  464. package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -50
  465. package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
  466. package/lib/components/toolbar/popup/submitforquote/index.js +0 -698
  467. package/lib/components/toolbar/popup/submitforquote/index.js.map +0 -1
  468. package/lib/components/toolbar/popup/submitforquote/styles.js +0 -38
  469. package/lib/components/toolbar/popup/submitforquote/styles.js.map +0 -1
  470. package/lib/components/toolbar/popup/submitprompt/index.js +0 -79
  471. package/lib/components/toolbar/popup/submitprompt/index.js.map +0 -1
  472. package/lib/components/toolbar/popup/submitprompt/styles.js +0 -16
  473. package/lib/components/toolbar/popup/submitprompt/styles.js.map +0 -1
  474. package/lib/components/toolbar/toolbar-button.js +0 -111
  475. package/lib/components/toolbar/toolbar-button.js.map +0 -1
  476. package/lib/components/toolbar/toolbar-load-button.js +0 -36
  477. package/lib/components/toolbar/toolbar-load-button.js.map +0 -1
  478. package/lib/components/toolbar/toolbar-save-button.js +0 -34
  479. package/lib/components/toolbar/toolbar-save-button.js.map +0 -1
  480. package/lib/components/tutorial-view/Modal.js +0 -503
  481. package/lib/components/tutorial-view/Modal.js.map +0 -1
  482. package/lib/components/tutorial-view/styles.js +0 -13
  483. package/lib/components/tutorial-view/styles.js.map +0 -1
  484. package/lib/components/viewer2d/area.js +0 -90
  485. package/lib/components/viewer2d/area.js.map +0 -1
  486. package/lib/components/viewer2d/export.js +0 -122
  487. package/lib/components/viewer2d/export.js.map +0 -1
  488. package/lib/components/viewer2d/grids/grid-horizontal-streak.js +0 -45
  489. package/lib/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
  490. package/lib/components/viewer2d/grids/grid-streak.js +0 -45
  491. package/lib/components/viewer2d/grids/grid-streak.js.map +0 -1
  492. package/lib/components/viewer2d/grids/grid-vertical-streak.js +0 -45
  493. package/lib/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
  494. package/lib/components/viewer2d/grids/grids.js +0 -45
  495. package/lib/components/viewer2d/grids/grids.js.map +0 -1
  496. package/lib/components/viewer2d/group.js +0 -63
  497. package/lib/components/viewer2d/group.js.map +0 -1
  498. package/lib/components/viewer2d/item.js +0 -522
  499. package/lib/components/viewer2d/item.js.map +0 -1
  500. package/lib/components/viewer2d/layer.js +0 -172
  501. package/lib/components/viewer2d/layer.js.map +0 -1
  502. package/lib/components/viewer2d/line.js +0 -899
  503. package/lib/components/viewer2d/line.js.map +0 -1
  504. package/lib/components/viewer2d/ruler.js +0 -108
  505. package/lib/components/viewer2d/ruler.js.map +0 -1
  506. package/lib/components/viewer2d/rulerDist.js +0 -154
  507. package/lib/components/viewer2d/rulerDist.js.map +0 -1
  508. package/lib/components/viewer2d/rulerX.js +0 -159
  509. package/lib/components/viewer2d/rulerX.js.map +0 -1
  510. package/lib/components/viewer2d/rulerY.js +0 -161
  511. package/lib/components/viewer2d/rulerY.js.map +0 -1
  512. package/lib/components/viewer2d/scene.js +0 -148
  513. package/lib/components/viewer2d/scene.js.map +0 -1
  514. package/lib/components/viewer2d/snap.js +0 -84
  515. package/lib/components/viewer2d/snap.js.map +0 -1
  516. package/lib/components/viewer2d/state.js +0 -88
  517. package/lib/components/viewer2d/state.js.map +0 -1
  518. package/lib/components/viewer2d/utils.js +0 -174
  519. package/lib/components/viewer2d/utils.js.map +0 -1
  520. package/lib/components/viewer2d/vertex.js +0 -76
  521. package/lib/components/viewer2d/vertex.js.map +0 -1
  522. package/lib/components/viewer2d/viewer2d.js +0 -1409
  523. package/lib/components/viewer2d/viewer2d.js.map +0 -1
  524. package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2598
  525. package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
  526. package/lib/components/viewer3d/dcm.js +0 -408
  527. package/lib/components/viewer3d/dcm.js.map +0 -1
  528. package/lib/components/viewer3d/fbm.js +0 -421
  529. package/lib/components/viewer3d/fbm.js.map +0 -1
  530. package/lib/components/viewer3d/front3D.js +0 -76
  531. package/lib/components/viewer3d/front3D.js.map +0 -1
  532. package/lib/components/viewer3d/grid-creator.js +0 -35
  533. package/lib/components/viewer3d/grid-creator.js.map +0 -1
  534. package/lib/components/viewer3d/grids/grid-horizontal-streak.js +0 -45
  535. package/lib/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
  536. package/lib/components/viewer3d/grids/grid-streak.js +0 -36
  537. package/lib/components/viewer3d/grids/grid-streak.js.map +0 -1
  538. package/lib/components/viewer3d/grids/grid-vertical-streak.js +0 -45
  539. package/lib/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
  540. package/lib/components/viewer3d/libs/first-person-controls.js +0 -75
  541. package/lib/components/viewer3d/libs/first-person-controls.js.map +0 -1
  542. package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1288
  543. package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
  544. package/lib/components/viewer3d/libs/mtl-loader.js +0 -360
  545. package/lib/components/viewer3d/libs/mtl-loader.js.map +0 -1
  546. package/lib/components/viewer3d/libs/obj-loader.js +0 -465
  547. package/lib/components/viewer3d/libs/obj-loader.js.map +0 -1
  548. package/lib/components/viewer3d/libs/orbit-controls.js +0 -701
  549. package/lib/components/viewer3d/libs/orbit-controls.js.map +0 -1
  550. package/lib/components/viewer3d/libs/pointer-lock-controls.js +0 -48
  551. package/lib/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
  552. package/lib/components/viewer3d/lrm.js +0 -312
  553. package/lib/components/viewer3d/lrm.js.map +0 -1
  554. package/lib/components/viewer3d/model.js +0 -715
  555. package/lib/components/viewer3d/model.js.map +0 -1
  556. package/lib/components/viewer3d/pointer-lock-navigation.js +0 -123
  557. package/lib/components/viewer3d/pointer-lock-navigation.js.map +0 -1
  558. package/lib/components/viewer3d/ruler-utils/itemRect.js +0 -69
  559. package/lib/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
  560. package/lib/components/viewer3d/ruler-utils/layer3D.js +0 -503
  561. package/lib/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
  562. package/lib/components/viewer3d/ruler-utils/ruler3D.js +0 -235
  563. package/lib/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
  564. package/lib/components/viewer3d/ruler-utils/scene3D.js +0 -70
  565. package/lib/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
  566. package/lib/components/viewer3d/ruler-utils/state3D.js +0 -26
  567. package/lib/components/viewer3d/ruler-utils/state3D.js.map +0 -1
  568. package/lib/components/viewer3d/scene-creator.js +0 -3641
  569. package/lib/components/viewer3d/scene-creator.js.map +0 -1
  570. package/lib/components/viewer3d/three-memory-cleaner.js +0 -61
  571. package/lib/components/viewer3d/three-memory-cleaner.js.map +0 -1
  572. package/lib/components/viewer3d/viewer3d-first-person.js +0 -321
  573. package/lib/components/viewer3d/viewer3d-first-person.js.map +0 -1
  574. package/lib/components/viewer3d/viewer3d.js +0 -2508
  575. package/lib/components/viewer3d/viewer3d.js.map +0 -1
  576. package/lib/components/wizardstep/button/styles.js +0 -67
  577. package/lib/components/wizardstep/button/styles.js.map +0 -1
  578. package/lib/components/wizardstep/export.js +0 -12
  579. package/lib/components/wizardstep/export.js.map +0 -1
  580. package/lib/components/wizardstep/index.js +0 -978
  581. package/lib/components/wizardstep/index.js.map +0 -1
  582. package/lib/components/wizardstep/styles.js +0 -68
  583. package/lib/components/wizardstep/styles.js.map +0 -1
  584. package/lib/components/wizardstep/wizardstep-content-button.js +0 -224
  585. package/lib/components/wizardstep/wizardstep-content-button.js.map +0 -1
  586. package/lib/components/wizardstep/wizardstep-toggle-button.js +0 -133
  587. package/lib/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
  588. package/lib/constants.js +0 -646
  589. package/lib/constants.js.map +0 -1
  590. package/lib/hooks/useCheckCart.js +0 -60
  591. package/lib/hooks/useCheckCart.js.map +0 -1
  592. package/lib/hooks/useGetPricesBySku.js +0 -81
  593. package/lib/hooks/useGetPricesBySku.js.map +0 -1
  594. package/lib/hooks/useValidateToken.js +0 -207
  595. package/lib/hooks/useValidateToken.js.map +0 -1
  596. package/lib/index.js +0 -102
  597. package/lib/index.js.map +0 -1
  598. package/lib/models.js +0 -518
  599. package/lib/models.js.map +0 -1
  600. package/lib/plugins/SVGLoader.js +0 -1418
  601. package/lib/plugins/SVGLoader.js.map +0 -1
  602. package/lib/plugins/autosave.js +0 -40
  603. package/lib/plugins/autosave.js.map +0 -1
  604. package/lib/plugins/console-debugger.js +0 -45
  605. package/lib/plugins/console-debugger.js.map +0 -1
  606. package/lib/plugins/export.js +0 -34
  607. package/lib/plugins/export.js.map +0 -1
  608. package/lib/plugins/keyboard.js +0 -108
  609. package/lib/plugins/keyboard.js.map +0 -1
  610. package/lib/reducers/areas-reducer.js +0 -19
  611. package/lib/reducers/areas-reducer.js.map +0 -1
  612. package/lib/reducers/export.js +0 -98
  613. package/lib/reducers/export.js.map +0 -1
  614. package/lib/reducers/groups-reducer.js +0 -45
  615. package/lib/reducers/groups-reducer.js.map +0 -1
  616. package/lib/reducers/holes-reducer.js +0 -69
  617. package/lib/reducers/holes-reducer.js.map +0 -1
  618. package/lib/reducers/items-reducer.js +0 -147
  619. package/lib/reducers/items-reducer.js.map +0 -1
  620. package/lib/reducers/lines-reducer.js +0 -52
  621. package/lib/reducers/lines-reducer.js.map +0 -1
  622. package/lib/reducers/project-reducer.js +0 -136
  623. package/lib/reducers/project-reducer.js.map +0 -1
  624. package/lib/reducers/reducer.js +0 -27
  625. package/lib/reducers/reducer.js.map +0 -1
  626. package/lib/reducers/scene-reducer.js +0 -35
  627. package/lib/reducers/scene-reducer.js.map +0 -1
  628. package/lib/reducers/user-reducer.js +0 -48
  629. package/lib/reducers/user-reducer.js.map +0 -1
  630. package/lib/reducers/vertices-reducer.js +0 -26
  631. package/lib/reducers/vertices-reducer.js.map +0 -1
  632. package/lib/reducers/viewer2d-reducer.js +0 -83
  633. package/lib/reducers/viewer2d-reducer.js.map +0 -1
  634. package/lib/reducers/viewer3d-reducer.js +0 -64
  635. package/lib/reducers/viewer3d-reducer.js.map +0 -1
  636. package/lib/shared-style.js +0 -73
  637. package/lib/shared-style.js.map +0 -1
  638. package/lib/styles/export.js +0 -14
  639. package/lib/styles/export.js.map +0 -1
  640. package/lib/translator/en.js +0 -111
  641. package/lib/translator/en.js.map +0 -1
  642. package/lib/translator/it.js +0 -86
  643. package/lib/translator/it.js.map +0 -1
  644. package/lib/translator/ru.js +0 -86
  645. package/lib/translator/ru.js.map +0 -1
  646. package/lib/translator/translator.js +0 -91
  647. package/lib/translator/translator.js.map +0 -1
  648. package/lib/utils/browser.js +0 -41
  649. package/lib/utils/browser.js.map +0 -1
  650. package/lib/utils/email-validator.js +0 -11
  651. package/lib/utils/email-validator.js.map +0 -1
  652. package/lib/utils/export.js +0 -57
  653. package/lib/utils/export.js.map +0 -1
  654. package/lib/utils/geometry.js +0 -2329
  655. package/lib/utils/geometry.js.map +0 -1
  656. package/lib/utils/get-edges-of-subgraphs.js +0 -29
  657. package/lib/utils/get-edges-of-subgraphs.js.map +0 -1
  658. package/lib/utils/graph-cycles.js +0 -241
  659. package/lib/utils/graph-cycles.js.map +0 -1
  660. package/lib/utils/graph-inner-cycles.js +0 -55
  661. package/lib/utils/graph-inner-cycles.js.map +0 -1
  662. package/lib/utils/graph.js +0 -152
  663. package/lib/utils/graph.js.map +0 -1
  664. package/lib/utils/helper.js +0 -360
  665. package/lib/utils/helper.js.map +0 -1
  666. package/lib/utils/history.js +0 -37
  667. package/lib/utils/history.js.map +0 -1
  668. package/lib/utils/id-broker.js +0 -26
  669. package/lib/utils/id-broker.js.map +0 -1
  670. package/lib/utils/logger.js +0 -15
  671. package/lib/utils/logger.js.map +0 -1
  672. package/lib/utils/math.js +0 -58
  673. package/lib/utils/math.js.map +0 -1
  674. package/lib/utils/molding.js +0 -864
  675. package/lib/utils/molding.js.map +0 -1
  676. package/lib/utils/name-generator.js +0 -24
  677. package/lib/utils/name-generator.js.map +0 -1
  678. package/lib/utils/objects-utils.js +0 -61
  679. package/lib/utils/objects-utils.js.map +0 -1
  680. package/lib/utils/phone-validator.js +0 -11
  681. package/lib/utils/phone-validator.js.map +0 -1
  682. package/lib/utils/process-black-list.js +0 -25
  683. package/lib/utils/process-black-list.js.map +0 -1
  684. package/lib/utils/react-if.js +0 -25
  685. package/lib/utils/react-if.js.map +0 -1
  686. package/lib/utils/snap-scene.js +0 -106
  687. package/lib/utils/snap-scene.js.map +0 -1
  688. package/lib/utils/snap.js +0 -250
  689. package/lib/utils/snap.js.map +0 -1
  690. package/lib/utils/threeCSG.es6.js +0 -504
  691. package/lib/utils/threeCSG.es6.js.map +0 -1
  692. package/lib/version.js +0 -8
  693. package/lib/version.js.map +0 -1
  694. package/src/@history.js +0 -3
  695. package/src/AppContext.js +0 -5
  696. package/src/KitchenConfigurator.jsx +0 -1517
  697. package/src/KitchenConfiguratorApp.jsx +0 -443
  698. package/src/actions/area-actions.js +0 -15
  699. package/src/actions/export.js +0 -38
  700. package/src/actions/groups-actions.js +0 -102
  701. package/src/actions/holes-actions.js +0 -152
  702. package/src/actions/items-actions.js +0 -393
  703. package/src/actions/lines-actions.js +0 -103
  704. package/src/actions/project-actions.js +0 -391
  705. package/src/actions/scene-actions.js +0 -44
  706. package/src/actions/user-actions.js +0 -75
  707. package/src/actions/vertices-actions.js +0 -34
  708. package/src/actions/viewer2d-actions.js +0 -79
  709. package/src/actions/viewer3d-actions.js +0 -32
  710. package/src/catalog/areas/area/planner-element.jsx +0 -43
  711. package/src/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  712. package/src/catalog/areas/area/textures/grass.jpg +0 -0
  713. package/src/catalog/areas/area/textures/parquet.jpg +0 -0
  714. package/src/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  715. package/src/catalog/areas/area/textures/tile1.jpg +0 -0
  716. package/src/catalog/back.png +0 -0
  717. package/src/catalog/catalog.js +0 -258
  718. package/src/catalog/doors.png +0 -0
  719. package/src/catalog/doorways.png +0 -0
  720. package/src/catalog/envMap/nx.hdr +0 -0
  721. package/src/catalog/envMap/ny.hdr +0 -0
  722. package/src/catalog/envMap/nz.hdr +0 -0
  723. package/src/catalog/envMap/px.hdr +0 -0
  724. package/src/catalog/envMap/py.hdr +0 -0
  725. package/src/catalog/envMap/pz.hdr +0 -0
  726. package/src/catalog/factories/area-factory-3d.js +0 -252
  727. package/src/catalog/factories/area-factory.jsx +0 -102
  728. package/src/catalog/factories/export.js +0 -9
  729. package/src/catalog/factories/wall-factory-3d.js +0 -296
  730. package/src/catalog/factories/wall-factory.jsx +0 -321
  731. package/src/catalog/holes/door-closet/planner-element.jsx +0 -251
  732. package/src/catalog/holes/door-double/door_double.png +0 -0
  733. package/src/catalog/holes/door-double/planner-element.jsx +0 -391
  734. package/src/catalog/holes/door-exterior/planner-element.jsx +0 -245
  735. package/src/catalog/holes/door-interior/planner-element.jsx +0 -256
  736. package/src/catalog/holes/door-panic/panicDoor.png +0 -0
  737. package/src/catalog/holes/door-panic/planner-element.jsx +0 -594
  738. package/src/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  739. package/src/catalog/holes/door-panic-double/planner-element.jsx +0 -574
  740. package/src/catalog/holes/door-sliding/planner-element.jsx +0 -256
  741. package/src/catalog/holes/doorway-framed/planner-element.jsx +0 -169
  742. package/src/catalog/holes/doorway-frameless/planner-element.jsx +0 -116
  743. package/src/catalog/holes/gate/gate.jpg +0 -0
  744. package/src/catalog/holes/window-clear/planner-element.jsx +0 -181
  745. package/src/catalog/holes/window-clear/texture.png +0 -0
  746. package/src/catalog/holes/window-cross/planner-element.jsx +0 -180
  747. package/src/catalog/holes/window-cross/texture.png +0 -0
  748. package/src/catalog/holes/window-double-hung/planner-element.jsx +0 -366
  749. package/src/catalog/holes/window-double-hung/texture.png +0 -0
  750. package/src/catalog/holes/window-vertical/planner-element.jsx +0 -290
  751. package/src/catalog/holes/window-vertical/texture.png +0 -0
  752. package/src/catalog/lines/wall/planner-element.jsx +0 -73
  753. package/src/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  754. package/src/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
  755. package/src/catalog/lines/wall/textures/bricks.jpg +0 -0
  756. package/src/catalog/lines/wall/textures/bricks2.jpg +0 -0
  757. package/src/catalog/lines/wall/textures/bricks3.jpg +0 -0
  758. package/src/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  759. package/src/catalog/lines/wall/textures/morden.jpg +0 -0
  760. package/src/catalog/lines/wall/textures/painted-normal.jpg +0 -0
  761. package/src/catalog/lines/wall/textures/painted.jpg +0 -0
  762. package/src/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  763. package/src/catalog/lines/wall/textures/plaster.jpg +0 -0
  764. package/src/catalog/lines/wall/wall.png +0 -0
  765. package/src/catalog/molding/molding-dcm/planner-element.jsx +0 -35
  766. package/src/catalog/molding/molding-dcm/texture.png +0 -0
  767. package/src/catalog/molding/molding-fbm/planner-element.jsx +0 -35
  768. package/src/catalog/molding/molding-fbm/texture.png +0 -0
  769. package/src/catalog/molding/molding-lrm/planner-element.jsx +0 -35
  770. package/src/catalog/molding/molding-lrm/texture.png +0 -0
  771. package/src/catalog/properties/export.js +0 -33
  772. package/src/catalog/properties/property-checkbox.jsx +0 -123
  773. package/src/catalog/properties/property-color.jsx +0 -52
  774. package/src/catalog/properties/property-enum.jsx +0 -87
  775. package/src/catalog/properties/property-hidden.jsx +0 -22
  776. package/src/catalog/properties/property-lenght-measure.jsx +0 -113
  777. package/src/catalog/properties/property-length-measure.jsx +0 -129
  778. package/src/catalog/properties/property-length-measure_hole.jsx +0 -110
  779. package/src/catalog/properties/property-number.jsx +0 -63
  780. package/src/catalog/properties/property-read-only.jsx +0 -37
  781. package/src/catalog/properties/property-string.jsx +0 -59
  782. package/src/catalog/properties/property-toggle.jsx +0 -51
  783. package/src/catalog/properties/shared-property-style.js +0 -13
  784. package/src/catalog/utils/FuseUtils.js +0 -61
  785. package/src/catalog/utils/exporter.js +0 -173
  786. package/src/catalog/utils/geom-utils.js +0 -301
  787. package/src/catalog/utils/item-loader.jsx +0 -2122
  788. package/src/catalog/utils/load-obj.js +0 -113
  789. package/src/catalog/utils/mtl-loader.js +0 -462
  790. package/src/catalog/utils/obj-loader.js +0 -544
  791. package/src/catalog/windows.png +0 -0
  792. package/src/class/FuseUtils.js +0 -61
  793. package/src/class/area.js +0 -159
  794. package/src/class/export.js +0 -37
  795. package/src/class/group.js +0 -565
  796. package/src/class/guide.js +0 -44
  797. package/src/class/hole.js +0 -1359
  798. package/src/class/item.js +0 -2050
  799. package/src/class/layer.js +0 -926
  800. package/src/class/line.js +0 -1780
  801. package/src/class/project.js +0 -875
  802. package/src/class/vertex.js +0 -409
  803. package/src/components/atoms/Snackbar/index.jsx +0 -43
  804. package/src/components/atoms/radio-button/index.jsx +0 -20
  805. package/src/components/atoms/radio-button/styles.js +0 -56
  806. package/src/components/button/MainButton.jsx +0 -157
  807. package/src/components/button/ToggleMeasureButton.jsx +0 -65
  808. package/src/components/catalog-view/catalog-breadcrumb.jsx +0 -53
  809. package/src/components/catalog-view/catalog-item.jsx +0 -229
  810. package/src/components/catalog-view/catalog-list.jsx +0 -173
  811. package/src/components/catalog-view/catalog-page-item.jsx +0 -110
  812. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +0 -80
  813. package/src/components/configurator/custom-configurator.jsx +0 -77
  814. package/src/components/configurator/project-configurator.jsx +0 -120
  815. package/src/components/content.jsx +0 -136
  816. package/src/components/export.js +0 -36
  817. package/src/components/firstsetting/button/styles.js +0 -223
  818. package/src/components/firstsetting/export.js +0 -9
  819. package/src/components/firstsetting/firstsetting-content-button.jsx +0 -198
  820. package/src/components/firstsetting/firstsetting-toggle-button.jsx +0 -101
  821. package/src/components/firstsetting/firstsetting.jsx +0 -814
  822. package/src/components/footerbar/button/ControlButton.jsx +0 -43
  823. package/src/components/footerbar/button/DirectionButton.jsx +0 -54
  824. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +0 -36
  825. package/src/components/footerbar/button/ToggleButton.jsx +0 -58
  826. package/src/components/footerbar/button/ToggleConvertButton.jsx +0 -48
  827. package/src/components/footerbar/button/ToggleMeasureButton.jsx +0 -33
  828. package/src/components/footerbar/button/styles.js +0 -217
  829. package/src/components/footerbar/export.js +0 -9
  830. package/src/components/footerbar/footer-content-button.jsx +0 -198
  831. package/src/components/footerbar/footer-toggle-button.jsx +0 -101
  832. package/src/components/footerbar/footerbar.jsx +0 -1103
  833. package/src/components/footerbar/styles.js +0 -263
  834. package/src/components/header/button/MenuButton.jsx +0 -46
  835. package/src/components/header/button/SaveButton.jsx +0 -54
  836. package/src/components/header/button/styles.js +0 -181
  837. package/src/components/header/export.js +0 -5
  838. package/src/components/header/header.jsx +0 -631
  839. package/src/components/header/header.style.css +0 -47
  840. package/src/components/header/styles.js +0 -320
  841. package/src/components/login/Login.js +0 -77
  842. package/src/components/login/LoginForm/index.js +0 -108
  843. package/src/components/login/Register.js +0 -83
  844. package/src/components/login/RegisterForm/index.js +0 -171
  845. package/src/components/login/jwtService.js +0 -201
  846. package/src/components/login/style.css +0 -158
  847. package/src/components/login/style.scss +0 -260
  848. package/src/components/molecules/slider/index.jsx +0 -15
  849. package/src/components/molecules/slider/styles.js +0 -0
  850. package/src/components/molecules/slider/styles.scss +0 -3
  851. package/src/components/myprojects/export.js +0 -5
  852. package/src/components/myprojects/index.jsx +0 -445
  853. package/src/components/myprojects/styles.js +0 -241
  854. package/src/components/sidebar/custom-accordion.jsx +0 -48
  855. package/src/components/sidebar/export.js +0 -15
  856. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +0 -73
  857. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +0 -101
  858. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +0 -149
  859. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +0 -316
  860. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +0 -108
  861. package/src/components/sidebar/panel-element-editor/element-editor.jsx +0 -1070
  862. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  863. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +0 -104
  864. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +0 -155
  865. package/src/components/sidebar/panel-group-editor.jsx +0 -272
  866. package/src/components/sidebar/panel-groups.jsx +0 -310
  867. package/src/components/sidebar/panel-guides.jsx +0 -192
  868. package/src/components/sidebar/panel-layer-elements.jsx +0 -298
  869. package/src/components/sidebar/panel-layers.jsx +0 -381
  870. package/src/components/sidebar/panel.jsx +0 -71
  871. package/src/components/sidebar/sidebar.jsx +0 -106
  872. package/src/components/sidebar/toolbar-panel.jsx +0 -139
  873. package/src/components/sign/export.js +0 -7
  874. package/src/components/sign/main/index.jsx +0 -523
  875. package/src/components/sign/main/styles.js +0 -163
  876. package/src/components/style/button.jsx +0 -95
  877. package/src/components/style/cancel-button.jsx +0 -20
  878. package/src/components/style/content-container.jsx +0 -29
  879. package/src/components/style/content-title.jsx +0 -20
  880. package/src/components/style/delete-button.jsx +0 -23
  881. package/src/components/style/export.jsx +0 -48
  882. package/src/components/style/form-block.jsx +0 -13
  883. package/src/components/style/form-color-input.jsx +0 -27
  884. package/src/components/style/form-label.jsx +0 -15
  885. package/src/components/style/form-number-input.jsx +0 -196
  886. package/src/components/style/form-number-input_2.jsx +0 -191
  887. package/src/components/style/form-select.jsx +0 -38
  888. package/src/components/style/form-slider.jsx +0 -36
  889. package/src/components/style/form-submit-button.jsx +0 -23
  890. package/src/components/style/form-text-input.jsx +0 -65
  891. package/src/components/toolbar/button/ControlButton.jsx +0 -41
  892. package/src/components/toolbar/button/DirectionButton.jsx +0 -34
  893. package/src/components/toolbar/button/RightButton.jsx +0 -103
  894. package/src/components/toolbar/button/ToggleButton.jsx +0 -41
  895. package/src/components/toolbar/button/index.jsx +0 -55
  896. package/src/components/toolbar/button/styles.js +0 -127
  897. package/src/components/toolbar/components/DoorStyleMenu.jsx +0 -103
  898. package/src/components/toolbar/components/Pricing.jsx +0 -126
  899. package/src/components/toolbar/components/ReviewForQuote.jsx +0 -635
  900. package/src/components/toolbar/export.js +0 -21
  901. package/src/components/toolbar/main/Alert.js +0 -122
  902. package/src/components/toolbar/main/TakePictureModal.jsx +0 -104
  903. package/src/components/toolbar/main/confirm-popup.jsx +0 -99
  904. package/src/components/toolbar/main/index.jsx +0 -5687
  905. package/src/components/toolbar/main/lShaped.json +0 -311
  906. package/src/components/toolbar/main/longNarrow.json +0 -238
  907. package/src/components/toolbar/main/myComponents.js +0 -123
  908. package/src/components/toolbar/main/oRectangle.json +0 -220
  909. package/src/components/toolbar/main/rectangle.json +0 -238
  910. package/src/components/toolbar/main/style.css +0 -107
  911. package/src/components/toolbar/main/styles.js +0 -696
  912. package/src/components/toolbar/plugin-item.jsx +0 -123
  913. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +0 -73
  914. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +0 -102
  915. package/src/components/toolbar/popup/appliance/index.jsx +0 -83
  916. package/src/components/toolbar/popup/autosaveprompt/index.jsx +0 -150
  917. package/src/components/toolbar/popup/autosaveprompt/styles.css +0 -64
  918. package/src/components/toolbar/popup/autosaveprompt/styles.js +0 -40
  919. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +0 -73
  920. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +0 -119
  921. package/src/components/toolbar/popup/cabinet/index.jsx +0 -85
  922. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +0 -63
  923. package/src/components/toolbar/popup/doorStyle/index.jsx +0 -71
  924. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +0 -139
  925. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -2
  926. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +0 -157
  927. package/src/components/toolbar/popup/downloadsummary/index.jsx +0 -643
  928. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +0 -51
  929. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +0 -175
  930. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +0 -283
  931. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +0 -2257
  932. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -93
  933. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +0 -132
  934. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +0 -2198
  935. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +0 -152
  936. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +0 -149
  937. package/src/components/toolbar/popup/downloadsummary/styles.css +0 -177
  938. package/src/components/toolbar/popup/downloadsummary/styles.js +0 -453
  939. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +0 -34
  940. package/src/components/toolbar/popup/finishingtouch/index.jsx +0 -58
  941. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +0 -112
  942. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +0 -116
  943. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +0 -101
  944. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +0 -254
  945. package/src/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -311
  946. package/src/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -238
  947. package/src/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -220
  948. package/src/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -238
  949. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -86
  950. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +0 -109
  951. package/src/components/toolbar/popup/floorplan/index.jsx +0 -60
  952. package/src/components/toolbar/popup/index.jsx +0 -241
  953. package/src/components/toolbar/popup/newproject/index.jsx +0 -59
  954. package/src/components/toolbar/popup/newproject/styles.css +0 -64
  955. package/src/components/toolbar/popup/newproject/styles.js +0 -41
  956. package/src/components/toolbar/popup/product/appliance.jsx +0 -54
  957. package/src/components/toolbar/popup/product/cabinetproduct.jsx +0 -15
  958. package/src/components/toolbar/popup/product/doorstyle.jsx +0 -58
  959. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +0 -47
  960. package/src/components/toolbar/popup/product/floor.jsx +0 -36
  961. package/src/components/toolbar/popup/product/floorproduct.jsx +0 -42
  962. package/src/components/toolbar/popup/product/index.jsx +0 -36
  963. package/src/components/toolbar/popup/product/primary.jsx +0 -77
  964. package/src/components/toolbar/popup/product/productline.jsx +0 -93
  965. package/src/components/toolbar/popup/product/reviewItem.jsx +0 -427
  966. package/src/components/toolbar/popup/product/reviewMolding.jsx +0 -310
  967. package/src/components/toolbar/popup/product/style.css +0 -54
  968. package/src/components/toolbar/popup/product/styles.js +0 -260
  969. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +0 -146
  970. package/src/components/toolbar/popup/savedesign/index.jsx +0 -495
  971. package/src/components/toolbar/popup/savedesign/savedesign.style.css +0 -16
  972. package/src/components/toolbar/popup/savedesign/styles.js +0 -151
  973. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +0 -87
  974. package/src/components/toolbar/popup/styles.js +0 -909
  975. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +0 -192
  976. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +0 -96
  977. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +0 -54
  978. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +0 -25
  979. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +0 -116
  980. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -38
  981. package/src/components/toolbar/popup/submitforquote/index.jsx +0 -698
  982. package/src/components/toolbar/popup/submitforquote/styles.css +0 -105
  983. package/src/components/toolbar/popup/submitforquote/styles.js +0 -294
  984. package/src/components/toolbar/popup/submitprompt/index.jsx +0 -89
  985. package/src/components/toolbar/popup/submitprompt/styles.css +0 -64
  986. package/src/components/toolbar/popup/submitprompt/styles.js +0 -42
  987. package/src/components/toolbar/toolbar-button.jsx +0 -90
  988. package/src/components/toolbar/toolbar-load-button.jsx +0 -36
  989. package/src/components/toolbar/toolbar-save-button.jsx +0 -32
  990. package/src/components/tutorial-view/Modal.jsx +0 -584
  991. package/src/components/tutorial-view/style.css +0 -111
  992. package/src/components/tutorial-view/styles.js +0 -65
  993. package/src/components/viewer2d/area.jsx +0 -98
  994. package/src/components/viewer2d/export.js +0 -48
  995. package/src/components/viewer2d/grids/grid-horizontal-streak.jsx +0 -40
  996. package/src/components/viewer2d/grids/grid-streak.jsx +0 -32
  997. package/src/components/viewer2d/grids/grid-vertical-streak.jsx +0 -41
  998. package/src/components/viewer2d/grids/grids.jsx +0 -30
  999. package/src/components/viewer2d/group.jsx +0 -57
  1000. package/src/components/viewer2d/item.jsx +0 -618
  1001. package/src/components/viewer2d/layer.jsx +0 -214
  1002. package/src/components/viewer2d/line.jsx +0 -1358
  1003. package/src/components/viewer2d/ruler.jsx +0 -136
  1004. package/src/components/viewer2d/rulerDist.jsx +0 -192
  1005. package/src/components/viewer2d/rulerX.jsx +0 -141
  1006. package/src/components/viewer2d/rulerY.jsx +0 -138
  1007. package/src/components/viewer2d/scene.jsx +0 -94
  1008. package/src/components/viewer2d/snap.jsx +0 -118
  1009. package/src/components/viewer2d/state.jsx +0 -77
  1010. package/src/components/viewer2d/utils.js +0 -195
  1011. package/src/components/viewer2d/vertex.jsx +0 -76
  1012. package/src/components/viewer2d/viewer2d.jsx +0 -1830
  1013. package/src/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -3078
  1014. package/src/components/viewer3d/dcm.js +0 -226
  1015. package/src/components/viewer3d/fbm.js +0 -383
  1016. package/src/components/viewer3d/front3D.jsx +0 -63
  1017. package/src/components/viewer3d/grid-creator.js +0 -25
  1018. package/src/components/viewer3d/grids/grid-horizontal-streak.js +0 -41
  1019. package/src/components/viewer3d/grids/grid-streak.js +0 -34
  1020. package/src/components/viewer3d/grids/grid-vertical-streak.js +0 -42
  1021. package/src/components/viewer3d/libs/first-person-controls.js +0 -70
  1022. package/src/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1265
  1023. package/src/components/viewer3d/libs/mtl-loader.js +0 -462
  1024. package/src/components/viewer3d/libs/obj-loader.js +0 -653
  1025. package/src/components/viewer3d/libs/orbit-controls.js +0 -945
  1026. package/src/components/viewer3d/libs/pointer-lock-controls.js +0 -67
  1027. package/src/components/viewer3d/lrm.js +0 -358
  1028. package/src/components/viewer3d/model.js +0 -830
  1029. package/src/components/viewer3d/pointer-lock-navigation.js +0 -140
  1030. package/src/components/viewer3d/ruler-utils/itemRect.jsx +0 -91
  1031. package/src/components/viewer3d/ruler-utils/layer3D.jsx +0 -528
  1032. package/src/components/viewer3d/ruler-utils/ruler3D.jsx +0 -218
  1033. package/src/components/viewer3d/ruler-utils/scene3D.jsx +0 -87
  1034. package/src/components/viewer3d/ruler-utils/state3D.jsx +0 -25
  1035. package/src/components/viewer3d/scene-creator.js +0 -5172
  1036. package/src/components/viewer3d/three-memory-cleaner.js +0 -65
  1037. package/src/components/viewer3d/viewer3d-first-person.js +0 -395
  1038. package/src/components/viewer3d/viewer3d.js +0 -3376
  1039. package/src/components/wizardstep/button/styles.js +0 -677
  1040. package/src/components/wizardstep/export.js +0 -5
  1041. package/src/components/wizardstep/index.jsx +0 -1372
  1042. package/src/components/wizardstep/styles.js +0 -688
  1043. package/src/components/wizardstep/wizardstep-content-button.jsx +0 -198
  1044. package/src/components/wizardstep/wizardstep-toggle-button.jsx +0 -101
  1045. package/src/constants.js +0 -731
  1046. package/src/hooks/useCheckCart.js +0 -38
  1047. package/src/hooks/useGetPricesBySku.js +0 -59
  1048. package/src/hooks/useValidateToken.js +0 -181
  1049. package/src/index.js +0 -32
  1050. package/src/models.js +0 -541
  1051. package/src/plugins/SVGLoader.js +0 -1991
  1052. package/src/plugins/autosave.js +0 -39
  1053. package/src/plugins/console-debugger.js +0 -36
  1054. package/src/plugins/export.js +0 -11
  1055. package/src/plugins/keyboard.js +0 -194
  1056. package/src/reducers/areas-reducer.js +0 -13
  1057. package/src/reducers/export.js +0 -39
  1058. package/src/reducers/groups-reducer.js +0 -73
  1059. package/src/reducers/holes-reducer.js +0 -125
  1060. package/src/reducers/items-reducer.js +0 -286
  1061. package/src/reducers/lines-reducer.js +0 -96
  1062. package/src/reducers/project-reducer.js +0 -239
  1063. package/src/reducers/reducer.js +0 -59
  1064. package/src/reducers/scene-reducer.js +0 -41
  1065. package/src/reducers/user-reducer.js +0 -30
  1066. package/src/reducers/vertices-reducer.js +0 -34
  1067. package/src/reducers/viewer2d-reducer.js +0 -81
  1068. package/src/reducers/viewer3d-reducer.js +0 -65
  1069. package/src/shared-style.js +0 -72
  1070. package/src/styles/export.js +0 -7
  1071. package/src/styles/tabs.css +0 -40
  1072. package/src/translator/en.js +0 -106
  1073. package/src/translator/it.js +0 -80
  1074. package/src/translator/ru.js +0 -80
  1075. package/src/translator/translator.js +0 -81
  1076. package/src/utils/browser.js +0 -36
  1077. package/src/utils/email-validator.js +0 -5
  1078. package/src/utils/export.js +0 -39
  1079. package/src/utils/geometry.js +0 -2572
  1080. package/src/utils/get-edges-of-subgraphs.js +0 -29
  1081. package/src/utils/graph-cycles.js +0 -259
  1082. package/src/utils/graph-inner-cycles.js +0 -49
  1083. package/src/utils/graph.js +0 -147
  1084. package/src/utils/helper.js +0 -431
  1085. package/src/utils/history.js +0 -37
  1086. package/src/utils/id-broker.js +0 -9
  1087. package/src/utils/logger.js +0 -8
  1088. package/src/utils/math.js +0 -51
  1089. package/src/utils/molding.js +0 -973
  1090. package/src/utils/name-generator.js +0 -5
  1091. package/src/utils/objects-utils.js +0 -56
  1092. package/src/utils/phone-validator.js +0 -4
  1093. package/src/utils/process-black-list.js +0 -10
  1094. package/src/utils/react-if.jsx +0 -20
  1095. package/src/utils/snap-scene.js +0 -102
  1096. package/src/utils/snap.js +0 -184
  1097. package/src/utils/threeCSG.es6.js +0 -578
  1098. package/src/version.js +0 -1
@@ -1,3376 +0,0 @@
1
- 'use strict';
2
-
3
- import React from 'react';
4
- import PropTypes from 'prop-types';
5
- import ReactDOM from 'react-dom';
6
- import * as Three from 'three';
7
- import {
8
- parseData,
9
- updateScene,
10
- visibleTransformBox,
11
- getDistances,
12
- fVLine,
13
- deleteSpecifiedMeshObjects,
14
- createBacksplash,
15
- checkCabinetOverlap
16
- } from './scene-creator';
17
- import { disposeScene } from './three-memory-cleaner';
18
- import { disposeObject } from './three-memory-cleaner';
19
- import diff from 'immutablediff';
20
- import * as SharedStyle from '../../shared-style';
21
- import {
22
- MODE_DRAWING_ITEM_3D,
23
- MODE_IDLE_3D,
24
- MODE_3D_VIEW,
25
- UNIT_CENTIMETER,
26
- MODE_DRAWING_HOLE_3D,
27
- SECONDARY_PURPLE_COLOR,
28
- MODE_ELEVATION_VIEW,
29
- MODE_DRAGGING_ITEM_3D,
30
- MODE_ROTATING_ITEM_3D,
31
- WALL_CABINET_LAYOUTPOS,
32
- BASE_CABINET_LAYOUTPOS,
33
- TALL_CABINET_LAYOUTPOS
34
- } from '../../constants';
35
-
36
- import { isUndefined } from 'util';
37
- import { verticesDistance } from '../../utils/geometry';
38
- import convert from 'convert-units';
39
- import { GeometryUtils } from '../../utils/export';
40
- import { handleCamRect, isElevationView, isEmpty } from '../../utils/helper';
41
- import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
42
- import CameraControls from 'camera-controls';
43
- CameraControls.install({ THREE: Three });
44
- import { returnReplaceableDeepSearchType } from '../viewer2d/utils';
45
- import {
46
- getAllMeshes,
47
- vectorIntersectWithMesh
48
- } from '../../utils/objects-utils';
49
-
50
- export default class Scene3DViewer extends React.Component {
51
- constructor(props) {
52
- super(props);
53
- this.state = {
54
- isLoading: false,
55
- showflag: true,
56
- isLoadingCabinet: props.state.scene.isLoadingCabinet,
57
- toolObj: null,
58
- angleObj: null,
59
- waitForRender: 0,
60
- lineLength: null // when view wall's elevation, that wall's length
61
- };
62
- this.lastMousePosition = {};
63
- this.width = props.width;
64
- this.height = props.height;
65
- this.renderingID = 0;
66
-
67
- let { mode } = props.state;
68
-
69
- if (!window.__elevationRendererDownload) {
70
- window.__elevationRendererDownload = {};
71
- }
72
-
73
- switch (mode) {
74
- case MODE_IDLE_3D:
75
- this.renderer =
76
- window.__threeRenderer ||
77
- new Three.WebGLRenderer({
78
- preserveDrawingBuffer: true,
79
- alpha: true,
80
- antialias: true
81
- });
82
- break;
83
- case MODE_3D_VIEW:
84
- this.renderer =
85
- window.__threeRendererDownload ||
86
- new Three.WebGLRenderer({
87
- preserveDrawingBuffer: true,
88
- alpha: true,
89
- antialias: true
90
- });
91
- break;
92
- default:
93
- if (this.props.downloadFlag) {
94
- this.renderer =
95
- window.__elevationRendererDownload[mode] ||
96
- new Three.WebGLRenderer({
97
- preserveDrawingBuffer: true,
98
- alpha: true,
99
- antialias: true
100
- });
101
- } else {
102
- this.renderer =
103
- window.__elevationRenderer ||
104
- new Three.WebGLRenderer({
105
- preserveDrawingBuffer: true,
106
- alpha: true,
107
- antialias: true
108
- });
109
- }
110
-
111
- break;
112
- }
113
-
114
- this.renderer.shadowMap.enabled = true;
115
- this.renderer.shadowMapSoft = true;
116
- if (mode == 'MODE_IDLE_3D') {
117
- window.__threeRenderer = this.renderer;
118
- } else if (mode == 'MODE_3D_VIEW') {
119
- window.__threeRendererDownload = this.renderer;
120
- } else {
121
- if (this.props.downloadFlag)
122
- window.__elevationRendererDownload[mode] = this.renderer;
123
- else window.__elevationRenderer = this.renderer;
124
- }
125
-
126
- this.renderer.domElement.style.display = 'none';
127
- }
128
-
129
- componentDidMount(nextProps) {
130
- let scene3D, camera, pivot, cameraControls, clock;
131
- let spotLight1, spotLightTarget;
132
-
133
- const actions = {
134
- areaActions: this.context.areaActions,
135
- holesActions: this.context.holesActions,
136
- itemsActions: this.context.itemsActions,
137
- sceneActions: this.context.sceneActions,
138
- linesActions: this.context.linesActions,
139
- projectActions: this.context.projectActions,
140
- catalog: this.context.catalog
141
- };
142
-
143
- const self = this;
144
- const { state } = this.props;
145
- const { mode, scene } = state;
146
- function setupLight(scene, inbBox) {
147
- if (isElevationView(mode)) {
148
- const ambilight = new Three.AmbientLight('0xffffff', 3);
149
- scene.add(ambilight);
150
- } else {
151
- const shadowMapSize = 2048;
152
- const shadowCameraSize =
153
- Math.max(
154
- Math.abs(inbBox.min.x - inbBox.max.x),
155
- Math.abs(inbBox.min.y - inbBox.max.y),
156
- Math.abs(inbBox.min.z - inbBox.max.z)
157
- ) / 2;
158
- const shadowCameraFar = shadowCameraSize * 10;
159
- const bboxCenter = new Three.Vector3(
160
- (inbBox.min.x + inbBox.max.x) / 2,
161
- inbBox.min.y,
162
- (inbBox.min.z + inbBox.max.z) / 2
163
- );
164
- function addDirLight(inColor, inIntensity, inPosition) {
165
- const dirLight = new Three.DirectionalLight(inColor, inIntensity);
166
- dirLight.castShadow = true;
167
- dirLight.shadow.mapSize.x = shadowMapSize;
168
- dirLight.shadow.mapSize.y = shadowMapSize;
169
- dirLight.shadow.camera.near = 0;
170
- dirLight.shadow.camera.far = shadowCameraFar;
171
-
172
- dirLight.shadow.camera.top = shadowCameraSize * 1.5;
173
- dirLight.shadow.camera.bottom = -shadowCameraSize * 1.5;
174
- dirLight.shadow.camera.left = -shadowCameraSize * 1.5;
175
- dirLight.shadow.camera.right = shadowCameraSize * 1.5;
176
- dirLight.position.copy(inPosition);
177
-
178
- const targetObject = new Three.Object3D();
179
- targetObject.position.copy(bboxCenter);
180
- scene.add(targetObject);
181
-
182
- dirLight.target = targetObject;
183
- dirLight.target.updateMatrixWorld();
184
-
185
- scene.add(dirLight);
186
- }
187
- function addSpotLight(
188
- inColor,
189
- inIntensity,
190
- inPosition,
191
- inTarget,
192
- inDistance
193
- ) {
194
- const spotLight = new Three.SpotLight();
195
- spotLight.intensity = inIntensity;
196
- spotLight.color.setHex(inColor);
197
- spotLight.position.copy(inPosition);
198
- spotLight.angle = 1.3;
199
- spotLight.distance = inDistance;
200
- spotLight.penumbra = 1.8;
201
- spotLight.decay = 0.01;
202
-
203
- spotLight.castShadow = true;
204
- spotLight.shadow.intensity = 2;
205
- spotLight.shadow.mapSize.width = 4096;
206
- spotLight.shadow.mapSize.height = 4096;
207
-
208
- const targetObject = new Three.Object3D();
209
- targetObject.position.copy(
210
- new Three.Vector3(inTarget.x, 0, inTarget.z)
211
- );
212
- scene.add(targetObject);
213
-
214
- spotLight.target = targetObject;
215
- spotLight.target.updateMatrixWorld();
216
- scene.add(spotLight);
217
- }
218
-
219
- const dirLightPos = new Three.Vector3(
220
- inbBox.max.x,
221
- inbBox.max.y + 1.8 * Math.abs(inbBox.max.y - inbBox.min.y),
222
- inbBox.min.z - 0.5 * Math.abs(inbBox.max.z - inbBox.min.z)
223
- );
224
-
225
- addDirLight('white', 1.5, dirLightPos);
226
-
227
- const ceiling = scene3D.getObjectByName('ceil');
228
- if (ceiling) {
229
- const ceilBBox = new Three.Box3().setFromObject(ceiling);
230
-
231
- const spot1 = new Three.Vector3(
232
- ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
233
- ceilBBox.max.y - 0.5,
234
- ceilBBox.min.z + Math.abs(ceilBBox.min.z - inbBox.max.z) / 4
235
- );
236
- const spot2 = new Three.Vector3(
237
- ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
238
- ceilBBox.max.y - 0.5,
239
- ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4
240
- );
241
-
242
- const spot3 = new Three.Vector3(
243
- ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
244
- ceilBBox.max.y - 0.5,
245
- ceilBBox.min.z + Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4
246
- );
247
- const spot4 = new Three.Vector3(
248
- ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,
249
- ceilBBox.max.y - 0.5,
250
- ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4
251
- );
252
-
253
- const spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);
254
-
255
- // check if spotlight is inside the room
256
- vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) &&
257
- addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);
258
- vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) &&
259
- addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);
260
- vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) &&
261
- addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);
262
- vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) &&
263
- addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);
264
- }
265
- }
266
- }
267
-
268
- // Load data
269
- this.setState({ isLoading: true });
270
- if (self.props.downloadFlag) {
271
- this.setState({ waitForRender: 0 });
272
-
273
- // set loading bar
274
- switch (self.props.state.mode) {
275
- case MODE_ELEVATION_VIEW:
276
- self.props.setIsLoadingElevation('front', true);
277
- break;
278
- case MODE_3D_VIEW:
279
- self.props.setIsLoading3D(true);
280
- break;
281
- }
282
- }
283
-
284
- const { promise, planData } = parseData(
285
- scene,
286
- actions,
287
- this.context.catalog,
288
- camera,
289
- this.renderer,
290
- state.mode
291
- );
292
-
293
- promise.then(() => {
294
- let objToRemove = [];
295
- planData.plan.traverse(obj => {
296
- if (obj.geometry === null) {
297
- objToRemove.push(obj);
298
- }
299
- });
300
- objToRemove.forEach(obj => {
301
- obj.removeFromParent();
302
- });
303
- const bbox = new Three.Box3().setFromObject(planData.plan);
304
- if (!isElevationView(state.mode)) {
305
- cameraControls.fitToBox(bbox);
306
- }
307
- setupLight(scene3D, planData.boundingBox);
308
-
309
- self.setState({ waitForRender: 1 });
310
- setTimeout(() => {
311
- self.setState({ isLoading: false });
312
- self.renderer.domElement.style.display = 'block';
313
- }, 1500);
314
- });
315
-
316
- const area = scene.getIn(['layers', scene.selectedLayer, 'areas']);
317
- const layer = scene.getIn(['layers', scene.selectedLayer]);
318
- const areas = [],
319
- lights = [];
320
-
321
- let snapBox = null;
322
-
323
- // Check for data
324
- let msg = '';
325
- scene.layers.forEach(layer => {
326
- if (layer.id === scene.selectedLayer || layer.visible) {
327
- layer.items.forEach(item => {
328
- if (item.doorStyle === null) {
329
- if (!msg.includes(item.name + "'s doorStyle is null."))
330
- msg += item.name + "'s doorStyle is null.\n";
331
- }
332
- });
333
- }
334
- });
335
- if (msg !== '') {
336
- confirm(msg);
337
- }
338
-
339
- init();
340
- render();
341
-
342
- // area lightning(wall lightning)/////
343
-
344
- area.forEach(data => {
345
- areas.push(data);
346
- });
347
- for (let i = 0; i < areas.length; i++) {
348
- let aVertices = [];
349
- let lines = [];
350
- let height = 100;
351
- areas[i].vertices.forEach(data => {
352
- aVertices.push(data);
353
- });
354
- layer.lines.forEach(data => {
355
- lines.push(data);
356
- });
357
- for (let i = 0; i < lines.length; i++) {
358
- let data = lines[i];
359
- let realVec = [];
360
- data.vertices.forEach(vec => {
361
- realVec.push(vec);
362
- });
363
- if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {
364
- height = convert(layer.ceilHeight)
365
- .from(layer.unit)
366
- .to(UNIT_CENTIMETER);
367
- // height = data.properties.getIn(['height', 'length']);
368
- break;
369
- }
370
- }
371
- let vertices = [];
372
- areas[i].vertices.forEach(datas => {
373
- let vertex = scene.getIn([
374
- 'layers',
375
- scene.selectedLayer,
376
- 'vertices',
377
- datas
378
- ]);
379
- vertices.push(vertex);
380
- });
381
- vertices.push(vertices[0]);
382
- let fLen = vertices.length - 1;
383
- for (let i = 0; i < fLen; i++) {
384
- let sX = vertices[i].x;
385
- let sY = vertices[i].y;
386
- let eX = vertices[i + 1].x;
387
- let eY = vertices[i + 1].y;
388
- let len = Math.sqrt((eX - sX) * (eX - sX) + (eY - sY) * (eY - sY));
389
- for (let cLen = 200; cLen < len; cLen += 200) {
390
- let cX = sX + ((eX - sX) * cLen) / len;
391
- let cY = sY + ((eY - sY) * cLen) / len;
392
- let endLen = Math.sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY));
393
- if (endLen <= 100) continue;
394
- let vec2 = new Three.Vector2(cX - sX, cY - sY);
395
- let angle = vec2.angle() + Math.PI / 2;
396
- cX = Math.cos(angle) * 30 + cX;
397
- cY = Math.sin(angle) * 30 + cY;
398
- let spotLight = new Three.SpotLight(0xeeeeee, 1.7);
399
- spotLight.angle = 0.76;
400
- spotLight.castShadow = true;
401
- spotLight.penumbra = 1;
402
- spotLight.decay = 1.7;
403
- spotLight.distance = height - 20;
404
- let target = new Three.Object3D();
405
- spotLight.target = target;
406
- lights.push({
407
- light: spotLight,
408
- target: target,
409
- x: cX,
410
- y: cY,
411
- height: height
412
- });
413
- }
414
- }
415
- }
416
- // //////////////////////////
417
-
418
- // OBJECT PICKING
419
- let toIntersect = [planData.plan];
420
- let mouse = new Three.Vector2();
421
- let gridPlane = planData.grid;
422
- let raycaster = new Three.Raycaster();
423
- let selectedObject = {};
424
- let selectedFlag = false;
425
- let currentObject = null;
426
- let isSelected = false;
427
- let bRotate = false;
428
- let bMove = false;
429
- let bMoveUP = false;
430
- /** Transformation matrix of grid */
431
- const gridMatrix = new Three.Matrix4();
432
- let rayDirection = new Three.Vector3();
433
- /** World position of grid plane */
434
- let gridPlanOrigin = new Three.Vector3();
435
- let Point = new Three.Vector2();
436
- let sPoint = new Three.Vector2();
437
-
438
- // SNAP FUNCTION VARIABLE
439
- let snapFlag = false;
440
- let snapAnimI = 0;
441
- let snapDelta = 6;
442
- let t_i = 0;
443
- let targetPoint = new Three.Vector3();
444
- let targetRot = 0;
445
- let targetUVec = new Three.Vector3();
446
- let targetCRotation = 0;
447
- let targetObj = null;
448
- let targetNumber = 0;
449
- let wallSlide = false;
450
-
451
- let pinFlag = false;
452
- let sFlag = false; //for all object move
453
- let endPoint = {};
454
- let allItemRect;
455
- let allItemSnap;
456
- let allLines;
457
- let allLineRects;
458
- let allLineSnap;
459
- let allRect;
460
- let allArea;
461
-
462
- // end snap function variable///////////////////////
463
- let backsplashVisible = false;
464
- let holeItems = GeometryUtils.getHoleItems(layer);
465
-
466
- let removeSnapBox = () => {
467
- if (snapBox != null) {
468
- planData.plan.remove(snapBox);
469
- disposeObject(snapBox);
470
- snapBox = null;
471
- targetObj = null;
472
- snapFlag = false;
473
- }
474
- };
475
-
476
- const camToGrid = new Three.Vector3();
477
- let camPos = camera.position;
478
-
479
- const mapCursorPosition = (e, altitude) => {
480
- camToGrid.subVectors(gridPlanOrigin, camPos);
481
-
482
- let camD = camToGrid.y + (altitude ? altitude : 0);
483
- let rayD = rayDirection.y;
484
-
485
- const intersectPt = rayDirection.multiplyScalar(camD / rayD).add(camPos);
486
- intersectPt.y = gridPlanOrigin.y;
487
- intersectPt.applyMatrix4(gridMatrix);
488
-
489
- return { x: intersectPt.x, y: -intersectPt.z };
490
- };
491
-
492
- /* for Snap Functions*/
493
-
494
- let pointLineDistance = function (point, line) {
495
- // return distance from point to line and directional point of line
496
- let pX = point.x;
497
- let pY = point.y;
498
- let l1x = line[0].x;
499
- let l1y = line[0].y;
500
- let l2x = line[1].x;
501
- let l2y = line[1].y;
502
- let pLine = new Three.Vector2(l1x - pX, l1y - pY);
503
- let Line = new Three.Vector2(l1x - l2x, l1y - l2y);
504
- let pAngle = pLine.angle();
505
- let lAngle = Line.angle();
506
- let pDistance = pLine.length();
507
- let oDistance = Line.length();
508
- let directDistance = Math.sin(pAngle - lAngle) * pDistance;
509
- let lineDistance = Math.cos(pAngle - lAngle) * pDistance;
510
- let dX = l1x + ((l2x - l1x) * lineDistance) / oDistance;
511
- let dY = l1y + ((l2y - l1y) * lineDistance) / oDistance;
512
- let dPoint = { x: dX, y: dY };
513
- return { distance: directDistance, point: dPoint };
514
- };
515
- let getInterSect = function (shape1, shape2) {
516
- // return result of intersect of two shape
517
- let count = 0;
518
- for (let i = 0; i < shape1.length - 1; i++) {
519
- let sl1 = { x: shape1[i].x, y: shape1[i].y };
520
- let sl2 = { x: shape1[i + 1].x, y: shape1[i + 1].y };
521
- for (let j = 0; j < shape2.length - 1; j++) {
522
- let el1 = { x: shape2[j].x, y: shape2[j].y };
523
- let el2 = { x: shape2[j + 1].x, y: shape2[j + 1].y };
524
- let flag = GeometryUtils.getLineInterSect(
525
- sl1.x,
526
- sl1.y,
527
- sl2.x,
528
- sl2.y,
529
- el1.x,
530
- el1.y,
531
- el2.x,
532
- el2.y
533
- );
534
- if (flag) {
535
- count++;
536
- if (count > 1) return true;
537
- }
538
- }
539
- }
540
- return false;
541
- };
542
-
543
- this.getRectPoints = function (width, height, pos, rot) {
544
- // return 4 points from it's position, width, height, and rotation info
545
- let rX = width / 2;
546
- let rY = height / 2;
547
- let vertices = [];
548
- let cRot = rot;
549
- let pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
550
- let pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
551
- vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
552
- rX = -rX;
553
- pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
554
- pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
555
- vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
556
- rY = -rY;
557
- pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
558
- pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
559
- vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
560
- rX = -rX;
561
- pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;
562
- pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;
563
- vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });
564
- vertices.push(vertices[0]);
565
- vertices.push(vertices[2]);
566
- return vertices;
567
- };
568
-
569
- const prepareSnap = layer => {
570
- allLines = GeometryUtils.getAllLines(layer);
571
- allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
572
- allItemRect = GeometryUtils.getAllItems(
573
- this.props.state.scene,
574
- actions.catalog,
575
- allLineRects
576
- );
577
- allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
578
- allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);
579
- allRect = allItemRect.others.concat(allLineRects);
580
- allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);
581
- allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);
582
- allArea = GeometryUtils.getAllArea(layer);
583
- };
584
-
585
- let prepareSnapSpec = layer => {
586
- allLines = GeometryUtils.getAllLines(layer);
587
- allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
588
- allItemRect = GeometryUtils.getAllItemSpecified(
589
- this.props.state.scene,
590
- actions.catalog,
591
- WALL_CABINET_LAYOUTPOS
592
- );
593
- // allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);
594
- };
595
-
596
- // prepareSnapSpec(layer);
597
- let lineRect = layer => {
598
- let areainfo = [];
599
- layer.areas.forEach(area => {
600
- let sz = area.vertices.size;
601
- for (var i = 0; i < sz; i++) {
602
- areainfo.push(area.vertices.get(i));
603
- }
604
- });
605
- let rect = [];
606
- areainfo.forEach(area => {
607
- let vert = layer.vertices.get(area);
608
- rect.push(vert.x, vert.y);
609
- });
610
- return rect;
611
- };
612
-
613
- this.collisionCheck = function (obj, pos, rot, tObj, item = null, catalog) {
614
- //collision check from one object to every other object excpet target object
615
- let layer = this.props.state.scene.getIn([
616
- 'layers',
617
- obj.userData.layerId
618
- ]);
619
- let layoutpos = 'utype';
620
- if (item !== null) {
621
- let catid = item.type;
622
- let cat = catalog.elements[catid];
623
- layoutpos = cat.info.layoutpos;
624
- }
625
- let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);
626
- let sBounding = obj.children[0].userData;
627
- let width = sBounding.max.x - sBounding.min.x;
628
- let depth = sBounding.max.z - sBounding.min.z;
629
- let oVertices = this.getRectPoints(
630
- width,
631
- depth,
632
- oPos.clone(),
633
- ((rot % 360) / 180) * Math.PI
634
- );
635
- let datas = [];
636
- layer.items.forEach(data => {
637
- datas.push(data);
638
- });
639
- for (let i = 0; i < datas.length; i++) {
640
- let data = datas[i];
641
- if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)
642
- continue;
643
- let target =
644
- planData.sceneGraph.layers[obj.userData.layerId].items[data.id];
645
- if (target === undefined) {
646
- console.log(
647
- data.id +
648
- ' does not exist in viewer3d/viewer3d.js collisionCheck function'
649
- );
650
- return false;
651
- }
652
- let item = layer.items.getIn([data.id]);
653
- let ocatid = item.type;
654
- let ocat = catalog.elements[ocatid];
655
- let olayoutpos = ocat.info.layoutpos;
656
- if (
657
- !(
658
- (layoutpos === BASE_CABINET_LAYOUTPOS &&
659
- olayoutpos === WALL_CABINET_LAYOUTPOS) ||
660
- (layoutpos === WALL_CABINET_LAYOUTPOS &&
661
- olayoutpos === BASE_CABINET_LAYOUTPOS)
662
- )
663
- ) {
664
- let tRot = item.rotation;
665
- let tPos = new Three.Vector2(item.x, item.y);
666
- let tBounding = target.children[0].userData;
667
- let twidth = tBounding.max.x - tBounding.min.x;
668
- let tdepth = tBounding.max.z - tBounding.min.z;
669
- let tVertices = this.getRectPoints(
670
- twidth,
671
- tdepth,
672
- tPos.clone(),
673
- ((tRot % 360) / 180) * Math.PI
674
- );
675
- if (getInterSect(oVertices, tVertices)) {
676
- return false;
677
- }
678
- }
679
- }
680
- datas = [];
681
- layer.lines.forEach(data => {
682
- datas.push(data);
683
- });
684
- for (let i = 0; i < datas.length; i++) {
685
- let data = datas[i];
686
- if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)
687
- continue;
688
- let item = layer.lines.getIn([data.id]);
689
- // let llayoutpos = catalog.elements[item.type].info.layoutpos;
690
- let vertices = [];
691
- item.vertices.forEach(data => {
692
- let vertex = layer.vertices.get(data);
693
- vertices.push({ x: vertex.x, y: vertex.y });
694
- });
695
- let vec = new Three.Vector2(
696
- vertices[1].x - vertices[0].x,
697
- vertices[1].y - vertices[0].y
698
- );
699
- let tRot = vec.angle();
700
- let tPos = new Three.Vector2(
701
- (vertices[0].x + vertices[1].x) / 2,
702
- (vertices[0].y + vertices[1].y) / 2
703
- );
704
- let tdepth = item.properties.getIn(['thickness', 'length']);
705
- let twidth = Math.sqrt(vec.x * vec.x + vec.y * vec.y);
706
- let tVertices = this.getRectPoints(twidth, tdepth, tPos.clone(), tRot);
707
- if (getInterSect(oVertices, tVertices)) {
708
- return false;
709
- }
710
- }
711
- return true;
712
- };
713
-
714
- this.collisionHoleCheck = function (
715
- obj,
716
- pos,
717
- rot,
718
- tObj,
719
- item = null,
720
- catalog
721
- ) {
722
- let layer = this.props.state.scene.getIn([
723
- 'layers',
724
- obj.userData.layerId
725
- ]);
726
- let currentItem;
727
- if (item !== null) {
728
- let catid = item.type;
729
- let cat = catalog.elements[catid];
730
- currentItem = {
731
- selectedItem: item,
732
- cat
733
- };
734
- }
735
- let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);
736
- let sBounding = obj.children[0].userData;
737
- let width = sBounding.max.x - sBounding.min.x;
738
- let depth = sBounding.max.z - sBounding.min.z;
739
- let oVertices = this.getRectPoints(
740
- width,
741
- depth,
742
- oPos.clone(),
743
- ((rot % 360) / 180) * Math.PI
744
- );
745
-
746
- let datas = [];
747
- layer.items.forEach(data => {
748
- datas.push(data);
749
- });
750
- for (let i = 0; i < datas.length; i++) {
751
- let data = datas[i];
752
- if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)
753
- continue;
754
- let target =
755
- planData.sceneGraph.layers[obj.userData.layerId].items[data.id];
756
- if (target === undefined) {
757
- console.log(
758
- data.id +
759
- ' does not exist in viewer3d/viewer3d.js collisionCheck function'
760
- );
761
- return false;
762
- }
763
- let item = layer.items.getIn([data.id]);
764
- let ocatid = item.type;
765
- let ocat = catalog.elements[ocatid];
766
- if (!ocat)
767
- ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];
768
- let otherItem = {
769
- item,
770
- cat: ocat
771
- };
772
-
773
- if (
774
- GeometryUtils.needSnap(currentItem, otherItem) &&
775
- otherItem.cat.type != 'cabinet'
776
- ) {
777
- let tRot = item.rotation;
778
- let tPos = new Three.Vector2(item.x, item.y);
779
- let tBounding = target.children[0].userData;
780
- let twidth = tBounding.max.x - tBounding.min.x;
781
- let tdepth = tBounding.max.z - tBounding.min.z;
782
- let tVertices = this.getRectPoints(
783
- twidth,
784
- tdepth,
785
- tPos.clone(),
786
- ((tRot % 360) / 180) * Math.PI
787
- );
788
- if (getInterSect(oVertices, tVertices)) {
789
- return false;
790
- }
791
- }
792
- }
793
-
794
- let holes = [];
795
- layer.lines.forEach(line => {
796
- line.holes.forEach(holeID => {
797
- let hole = layer.holes.get(holeID);
798
- holes.push(hole);
799
- });
800
- });
801
- let i = 0;
802
- for (; i < holes.length; i++) {
803
- let tPos = new Three.Vector2(holes[i].x, holes[i].y);
804
- let twidth = holes[i].properties.getIn(['width', 'length']);
805
- let theight = holes[i].properties.getIn(['thickness', 'length']);
806
- let trot = holes[i].rotation;
807
- let tVertices = this.getRectPoints(twidth, theight, tPos.clone(), trot);
808
- if (getInterSect(oVertices, tVertices)) {
809
- return false;
810
- }
811
- }
812
- return true;
813
- };
814
-
815
- this.collisionSlide = function (
816
- item3D,
817
- originPos,
818
- layer,
819
- sVertices,
820
- tPos,
821
- item
822
- ) {
823
- let items = [];
824
-
825
- let cur_category = '';
826
- let catalog = actions.catalog;
827
- if (layer.selected.items.size > 0) {
828
- let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);
829
- let catid = selectedItem.type;
830
- let cat = catalog.elements[catid];
831
- if (cat === undefined || cat === null)
832
- cat = catalog.getIn(['elements', catid]);
833
- cur_category = cat.obj.category;
834
- }
835
-
836
- layer.items.forEach(data => {
837
- if (data.id == selectedObject.itemID) {
838
- return;
839
- }
840
-
841
- items.push(data.toJS());
842
- });
843
- let oPos = new Three.Vector2(originPos.x, -originPos.z);
844
-
845
- // sort from distance
846
- for (let i = 0; i < items.length - 1; i++) {
847
- for (let j = i + 1; j < items.length; j++) {
848
- if (
849
- verticesDistance(oPos, new Three.Vector2(items[i].x, items[i].y)) >
850
- verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))
851
- ) {
852
- let exchange = items[j];
853
- items[j] = items[i];
854
- items[i] = exchange;
855
- }
856
- }
857
- }
858
- let i = 0;
859
-
860
- for (; i < items.length; i++) {
861
- if (!items[i]) return;
862
- let target =
863
- planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];
864
- if (target === undefined) {
865
- return false;
866
- }
867
- let targetData = layer.items.getIn([items[i].id]);
868
- let tRot = targetData.rotation;
869
- let tPos = new Three.Vector2(targetData.x, targetData.y);
870
- let tBounding = target.children[0].userData;
871
- let twidth = tBounding.max.x - tBounding.min.x;
872
- let tdepth = tBounding.max.z - tBounding.min.z;
873
- let tVertices = this.getRectPoints(
874
- twidth,
875
- tdepth,
876
- tPos.clone(),
877
- ((tRot % 360) / 180) * Math.PI
878
- );
879
- if (getInterSect(sVertices, tVertices)) {
880
- break;
881
- }
882
- }
883
- if (items.length == 0 || !items[i]) return;
884
- let target =
885
- planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];
886
- let targetData = layer.items.getIn([items[i].id]);
887
- let targetPos = new Three.Vector2(targetData.x, targetData.y);
888
- let tRot = targetData.rotation;
889
- let tBounding = target.children[0].userData;
890
- let twidth = tBounding.max.x - tBounding.min.x;
891
- let tdepth = tBounding.max.z - tBounding.min.z;
892
- let tVertices = this.getRectPoints(
893
- twidth,
894
- tdepth,
895
- targetPos.clone(),
896
- ((tRot % 360) / 180) * Math.PI
897
- );
898
- // ////////////////////////
899
- let vArray = [];
900
- let dteArray = [];
901
- let lineArray = [];
902
- let vdistanceArray = [];
903
- let cVecArray = [];
904
- let inFlag = false;
905
- for (let i = 0; i < 4; i++) {
906
- let v1 = tVertices[i];
907
- let v2 = tVertices[i + 1];
908
- let data = pointLineDistance({ x: tPos.x, y: tPos.y }, [
909
- { x: v1.x, y: v1.y },
910
- { x: v2.x, y: v2.y }
911
- ]);
912
- dteArray.push(data.distance);
913
- vArray.push(data.point);
914
- lineArray.push([v1, v2]);
915
- }
916
- // if tPos in target object
917
- let tPosDistance =
918
- Math.abs(pointLineDistance(tPos, lineArray[0]).distance) +
919
- Math.abs(pointLineDistance(tPos, lineArray[2]).distance);
920
- let realDistance = new Three.Vector2(
921
- lineArray[1][0].x - lineArray[1][1].x,
922
- lineArray[1][0].y - lineArray[1][1].y
923
- ).length();
924
- let tPosDistance1 =
925
- Math.abs(pointLineDistance(tPos, lineArray[1]).distance) +
926
- Math.abs(pointLineDistance(tPos, lineArray[3]).distance);
927
- let realDistance1 = new Three.Vector2(
928
- lineArray[0][0].x - lineArray[0][1].x,
929
- lineArray[0][0].y - lineArray[0][1].y
930
- ).length();
931
- if (
932
- Math.abs(Math.abs(tPosDistance) - Math.abs(realDistance)) < 0.01 &&
933
- Math.abs(Math.abs(tPosDistance1) - Math.abs(realDistance1)) < 0.01
934
- )
935
- inFlag = true;
936
- // ////////////////////
937
- let key = 0;
938
- // sort distance from origin point
939
- for (let j = 0; j < dteArray.length - 1; j++) {
940
- for (let k = j + 1; k < dteArray.length; k++) {
941
- if (Math.abs(dteArray[j]) > Math.abs(dteArray[k])) {
942
- let temp = dteArray[k];
943
- dteArray[j] = dteArray[k];
944
- dteArray[k] = temp;
945
- let temp1 = vArray[k];
946
- vArray[j] = vArray[k];
947
- vArray[k] = temp1;
948
- let temp2 = lineArray[k];
949
- lineArray[j] = lineArray[k];
950
- lineArray[k] = temp2;
951
- }
952
- }
953
- }
954
- // //////////////////////////////
955
- for (let i = 0; i < 4; i++) {
956
- let data = pointLineDistance(sVertices[i], lineArray[key]);
957
- vdistanceArray.push(data.distance);
958
- cVecArray.push({
959
- x: data.point.x - sVertices[i].x,
960
- y: data.point.y - sVertices[i].y
961
- });
962
- }
963
-
964
- for (let j = 0; j < vdistanceArray.length; j++) {
965
- let tX = tPos.x + cVecArray[j].x;
966
- let tY = tPos.y + cVecArray[j].y;
967
- if (
968
- this.collisionCheck(
969
- item3D,
970
- new Three.Vector2(tX, tY),
971
- item.rotation,
972
- {
973
- userData: { itemId: null }
974
- },
975
- item,
976
- this.context.catalog
977
- )
978
- ) {
979
- item3D.position.set(tX, originPos.y, -tY);
980
- sPoint.set(tX, tY);
981
- break;
982
- }
983
- }
984
- };
985
-
986
- this.snap = function (obj, layer) {
987
- // snap operation
988
- let target = obj.userData.target;
989
- for (; target.parent != null; ) {
990
- if (target.name == 'pivot') break;
991
- target = target.parent;
992
- }
993
- let source = obj.parent.parent.parent;
994
- if (target.userData.type == 'item') {
995
- let sRot = layer.getIn(['items', source.userData.itemId]).rotation;
996
- let tRot = layer.getIn(['items', target.userData.itemId])
997
- ? layer.getIn(['items', target.userData.itemId]).rotation
998
- : 0;
999
- let item = layer.getIn(['items', source.userData.itemId]);
1000
- let layoutType = item.layoutpos;
1001
- let altitudeLength = convert(
1002
- item.properties.getIn(['altitude', '_length'])
1003
- )
1004
- .from('in')
1005
- .to('cm');
1006
- let sBounding = source.children[0].userData;
1007
- let tBounding = target.children[0].userData;
1008
- let tPos = target.position.clone();
1009
- let width = sBounding.max.x - sBounding.min.x;
1010
- let height = sBounding.max.y - sBounding.min.y;
1011
- let depth = sBounding.max.z - sBounding.min.z;
1012
- let snapBoxGeom = new Three.BoxGeometry(width, height, depth);
1013
- let snapBoxObj = new Three.Mesh(
1014
- snapBoxGeom,
1015
- new Three.MeshBasicMaterial({
1016
- // color: 0x2cde6b,
1017
- // opacity: 0.7,
1018
- transparent: true,
1019
- blending: Three.MultiplyBlending
1020
- })
1021
- );
1022
- let removeSnapBoxObj = () => {
1023
- if (snapBoxObj) {
1024
- planData.plan.remove(snapBoxObj);
1025
- disposeObject(snapBoxObj);
1026
- }
1027
- snapFlag = false;
1028
- };
1029
- let box = new Three.BoxHelper(snapBoxObj, 0xffffff);
1030
- box.material.linewidth = 2;
1031
- box.material.depthTest = false;
1032
- box.renderOrder = 200;
1033
- snapBoxObj.add(box);
1034
- snapBoxObj.position.set(
1035
- source.position.x,
1036
- layoutType === WALL_CABINET_LAYOUTPOS
1037
- ? altitudeLength + source.position.y + height / 2
1038
- : source.position.y + height / 2,
1039
- source.position.z
1040
- );
1041
- snapBoxObj.rotation.set(
1042
- source.rotation.x,
1043
- source.rotation.y,
1044
- source.rotation.z
1045
- );
1046
- snapBoxObj.name = 'TransformBox';
1047
- planData.plan.add(snapBoxObj);
1048
- let deltaX =
1049
- (tBounding.max.x - tBounding.min.x) / 2 +
1050
- (sBounding.max.x - sBounding.min.x) / 2;
1051
- let deltaZ =
1052
- (tBounding.max.z - tBounding.min.z) / 2 -
1053
- (sBounding.max.z - sBounding.min.z) / 2;
1054
- let sPos = snapBoxObj.position.clone();
1055
- // avaliable snap place///////////////
1056
- let tPoses = [];
1057
- let pX =
1058
- tPos.x +
1059
- deltaX * Math.cos((tRot / 180) * Math.PI) +
1060
- deltaZ * Math.sin((tRot / 180) * Math.PI);
1061
- let pZ =
1062
- tPos.z -
1063
- deltaX * Math.sin((tRot / 180) * Math.PI) +
1064
- deltaZ * Math.cos((tRot / 180) * Math.PI);
1065
- tPoses.push(new Three.Vector3(pX, 0, pZ));
1066
- deltaX = -deltaX;
1067
- pX =
1068
- tPos.x +
1069
- deltaX * Math.cos((tRot / 180) * Math.PI) +
1070
- deltaZ * Math.sin((tRot / 180) * Math.PI);
1071
- pZ =
1072
- tPos.z -
1073
- deltaX * Math.sin((tRot / 180) * Math.PI) +
1074
- deltaZ * Math.cos((tRot / 180) * Math.PI);
1075
- tPoses.push(new Three.Vector3(pX, 0, pZ));
1076
- deltaX =
1077
- (tBounding.max.x - tBounding.min.x) / 2 -
1078
- (sBounding.max.x - sBounding.min.x) / 2;
1079
- deltaZ =
1080
- -(tBounding.max.z - tBounding.min.z) / 2 -
1081
- (sBounding.max.z - sBounding.min.z) / 2;
1082
- pX =
1083
- tPos.x +
1084
- deltaX * Math.cos((tRot / 180) * Math.PI) +
1085
- deltaZ * Math.sin((tRot / 180) * Math.PI);
1086
- pZ =
1087
- tPos.z -
1088
- deltaX * Math.sin((tRot / 180) * Math.PI) +
1089
- deltaZ * Math.cos((tRot / 180) * Math.PI);
1090
- tPoses.push(new Three.Vector3(pX, 0, pZ));
1091
- deltaX = -deltaX;
1092
- pX =
1093
- tPos.x +
1094
- deltaX * Math.cos((tRot / 180) * Math.PI) +
1095
- deltaZ * Math.sin((tRot / 180) * Math.PI);
1096
- pZ =
1097
- tPos.z -
1098
- deltaX * Math.sin((tRot / 180) * Math.PI) +
1099
- deltaZ * Math.cos((tRot / 180) * Math.PI);
1100
- tPoses.push(new Three.Vector3(pX, 0, pZ));
1101
- let distance = Math.sqrt(
1102
- (sPos.x - tPoses[0].x) * (sPos.x - tPoses[0].x) +
1103
- (sPos.z - tPoses[0].z) * (sPos.z - tPoses[0].z)
1104
- );
1105
- let tNum = 1;
1106
- tPos = tPoses[0].clone();
1107
- for (let i = 1; i < tPoses.length; i++) {
1108
- let curDis = Math.sqrt(
1109
- (sPos.x - tPoses[i].x) * (sPos.x - tPoses[i].x) +
1110
- (sPos.z - tPoses[i].z) * (sPos.z - tPoses[i].z)
1111
- );
1112
- if (curDis < distance) {
1113
- distance = curDis;
1114
- tNum = i + 1;
1115
- tPos = tPoses[i].clone();
1116
- }
1117
- }
1118
- // //////////////////////////////////
1119
- if (
1120
- targetObj != null &&
1121
- targetObj.userData.itemId == target.userData.itemId &&
1122
- tNum == targetNumber
1123
- ) {
1124
- removeSnapBoxObj();
1125
- return;
1126
- } else {
1127
- removeSnapBox();
1128
- }
1129
- // //////////////////////////////////
1130
- if (tNum >= 3) tRot += 180;
1131
-
1132
- snapAnimI = 0;
1133
- t_i = 0;
1134
- targetObj = target;
1135
- targetNumber = tNum;
1136
- targetRot = tRot;
1137
- targetPoint = tPos;
1138
- snapBox = snapBoxObj;
1139
- let cx = sPos.x - tPos.x;
1140
- let cz = sPos.z - tPos.z;
1141
- targetUVec = new Three.Vector3(cx, 0, cz);
1142
- targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;
1143
- } else {
1144
- let item = layer.getIn(['items', source.userData.itemId]);
1145
- if (holeItems.length && selectedObj) {
1146
- let i;
1147
- for (i = 0; i < holeItems.length; i++) {
1148
- let hole = holeItems[i];
1149
- if (Math.abs(Math.sin(selectedObj.rotRad)) === 1) {
1150
- if (
1151
- item.y + selectedObj.size.width / 2 >=
1152
- hole.y - hole.width / 2 &&
1153
- item.y - selectedObj.size.width / 2 <=
1154
- hole.y + hole.width / 2 &&
1155
- (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2
1156
- ? item.x <= hole.x &&
1157
- item.x + selectedObj.size.height >= hole.x
1158
- : item.x >= hole.x &&
1159
- item.x - selectedObj.size.height <= hole.x)
1160
- )
1161
- break;
1162
- } else {
1163
- if (
1164
- item.x + selectedObj.size.width / 2 >=
1165
- hole.x - hole.width / 2 &&
1166
- item.x - selectedObj.size.width / 2 <=
1167
- hole.x + hole.width / 2 &&
1168
- (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2
1169
- ? item.y <= hole.y &&
1170
- item.y + selectedObj.size.height >= hole.y
1171
- : item.y >= hole.y &&
1172
- item.y - selectedObj.size.height <= hole.y)
1173
- )
1174
- break;
1175
- }
1176
- }
1177
- if (i != holeItems.length) return;
1178
- }
1179
- if (target.userData.type == 'hole') {
1180
- snapFlag = false;
1181
- return;
1182
- } else {
1183
- let layoutType = item.layoutpos;
1184
- let altitudeLength = convert(
1185
- item.properties.getIn(['altitude', '_length'])
1186
- )
1187
- .from('in')
1188
- .to('cm');
1189
- let sBounding = source.children[0].userData;
1190
- let width = sBounding.max.x - sBounding.min.x;
1191
- let height = sBounding.max.y - sBounding.min.y;
1192
- let depth = sBounding.max.z - sBounding.min.z;
1193
- let snapBoxGeom = new Three.BoxGeometry(width, height, depth);
1194
- let snapBoxObj = new Three.Mesh(
1195
- snapBoxGeom,
1196
- new Three.MeshBasicMaterial({
1197
- // color: 0x2cde6b,
1198
- // opacity: 0.7,
1199
- transparent: true,
1200
- blending: Three.MultiplyBlending
1201
- })
1202
- );
1203
- let removeSnapBoxObj = () => {
1204
- if (snapBoxObj) {
1205
- planData.plan.remove(snapBoxObj);
1206
- disposeObject(snapBoxObj);
1207
- }
1208
- snapFlag = false;
1209
- };
1210
- let box = new Three.BoxHelper(snapBoxObj, 0xffffff);
1211
- box.material.linewidth = 2;
1212
- box.material.depthTest = false;
1213
- box.renderOrder = 100;
1214
- snapBoxObj.add(box);
1215
-
1216
- snapBoxObj.position.set(
1217
- source.position.x,
1218
- layoutType === WALL_CABINET_LAYOUTPOS
1219
- ? altitudeLength + source.position.y + height / 2
1220
- : source.position.y + height / 2,
1221
- source.position.z
1222
- );
1223
- snapBoxObj.rotation.set(
1224
- source.rotation.x,
1225
- source.rotation.y,
1226
- source.rotation.z
1227
- );
1228
- snapBoxObj.name = 'TransformBox';
1229
- planData.plan.add(snapBoxObj);
1230
-
1231
- let snapLine = layer.getIn(['lines', target.userData.lineId]);
1232
- // let snapLineThickness = snapLine.properties.getIn([
1233
- // 'thickness',
1234
- // 'length'
1235
- // ]);
1236
- let snapLineThickness = 10.64;
1237
- let vertices = [];
1238
- if (snapLine === undefined) return;
1239
- snapLine.vertices.forEach(data => {
1240
- let vec = layer.getIn(['vertices', data]);
1241
- vertices.push(vec);
1242
- });
1243
- let iX = source.position.clone().x;
1244
- let iY = -source.position.clone().z;
1245
- let lineVec = new Three.Vector2(
1246
- vertices[1].x - vertices[0].x,
1247
- vertices[1].y - vertices[0].y
1248
- );
1249
- let oLength = Math.sqrt(
1250
- lineVec.x * lineVec.x + lineVec.y * lineVec.y
1251
- );
1252
- lineVec.normalize();
1253
- let vec2 = new Three.Vector2(iX - vertices[0].x, iY - vertices[0].y);
1254
- let vec2Legnth = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);
1255
- let angle = Math.abs(lineVec.angle() - vec2.angle());
1256
- angle = angle > Math.PI ? 2 * Math.PI - angle : angle;
1257
- let lineLength = Math.cos(angle) * vec2Legnth;
1258
- let transLength = 0;
1259
- if (lineLength < 100) {
1260
- transLength = -lineLength + (snapLineThickness + width) / 2;
1261
- }
1262
- if (lineLength > oLength - 100) {
1263
- transLength =
1264
- -lineLength - (snapLineThickness + width) / 2 + oLength;
1265
- }
1266
- let directPoint = new Three.Vector2(
1267
- lineVec.x * lineLength + vertices[0].x,
1268
- lineVec.y * lineLength + vertices[0].y
1269
- );
1270
- let directLine = new Three.Vector2(
1271
- directPoint.x - iX,
1272
- directPoint.y - iY
1273
- );
1274
- let dLength = Math.sqrt(
1275
- (iX - directPoint.x) * (iX - directPoint.x) +
1276
- (iY - directPoint.y) * (iY - directPoint.y)
1277
- );
1278
- let reduceLen = (snapLineThickness + depth) / 2;
1279
- let scale = (dLength - reduceLen) / dLength;
1280
- let tPos = new Three.Vector2(
1281
- iX + (directPoint.x - iX) * scale + lineVec.x * transLength,
1282
- iY + (directPoint.y - iY) * scale + lineVec.y * transLength
1283
- );
1284
- let realAngle = directLine.angle() - Math.PI / 2;
1285
- let tRot = (realAngle * 180) / Math.PI;
1286
- let sPos = new Three.Vector2(iX, iY);
1287
- let sRot = item.rotation;
1288
- let tNum = 0;
1289
- // //////////////////////////////////////
1290
- // check part////
1291
- let result = this.collisionCheck(
1292
- source,
1293
- tPos,
1294
- tRot,
1295
- target,
1296
- item,
1297
- this.context.catalog
1298
- );
1299
- // console.log('result', result);
1300
- if (result == false) {
1301
- removeSnapBoxObj();
1302
- removeSnapBox();
1303
- return;
1304
- }
1305
- // ////////////////
1306
- if (targetObj === target && snapBox !== null) {
1307
- removeSnapBoxObj();
1308
- snapAnimI = 20;
1309
- targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);
1310
- let sourcePos = snapBox.position.clone();
1311
- let cx = sourcePos.x - targetPoint.x;
1312
- let cz = sourcePos.z - targetPoint.z;
1313
- targetUVec = new Three.Vector3(cx, 0, cz);
1314
- targetRot = tRot;
1315
- targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;
1316
- snapFlag = false;
1317
- return;
1318
- } else {
1319
- removeSnapBox();
1320
- }
1321
- // //////////////////////////////////////
1322
- snapAnimI = 0;
1323
- t_i = 0;
1324
- targetObj = target;
1325
- targetNumber = tNum;
1326
- targetRot = tRot;
1327
- targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);
1328
- snapBox = snapBoxObj;
1329
- let sourcePos = snapBox.position.clone();
1330
- let cx = sourcePos.x - targetPoint.x;
1331
- let cz = sourcePos.z - targetPoint.z;
1332
- targetUVec = new Three.Vector3(cx, 0, cz);
1333
- targetRot = tRot;
1334
- targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;
1335
- }
1336
- }
1337
- };
1338
-
1339
- /*end of snap functions*/
1340
- let selectedObj = null;
1341
- let firstMove = false;
1342
- let prevX, prevY;
1343
-
1344
- let selObj = null;
1345
-
1346
- let createToolObject = () => {
1347
- const canvas = document.createElement('canvas');
1348
- canvas.width = 100;
1349
- canvas.height = 200;
1350
- canvas.style.width = 50 + 'px';
1351
- canvas.style.height = 100 + 'px';
1352
- const ctx = canvas.getContext('2d');
1353
- ctx.fillStyle = '#FFFFFF';
1354
- ctx.strokeStyle = '#000000';
1355
- ctx.beginPath();
1356
- ctx.arc(50, 50, 40, 0, 4 * Math.PI);
1357
- ctx.fill();
1358
- ctx.stroke();
1359
- let img1 = new Image();
1360
- img1.crossOrigin = 'anonymous';
1361
- img1.src = '/assets/img/svg/3d_item_rotation.svg';
1362
- img1.onload = function () {
1363
- ctx.drawImage(img1, 16, 16, 68, 68);
1364
- };
1365
-
1366
- ctx.beginPath();
1367
- ctx.arc(50, 150, 40, 0, 4 * Math.PI);
1368
- ctx.fill();
1369
- ctx.stroke();
1370
- let img2 = new Image();
1371
- img2.crossOrigin = 'anonymous';
1372
- img2.src = '/assets/img/svg/3d_item_move.svg';
1373
- img2.onload = function () {
1374
- ctx.drawImage(img2, 16, 116, 68, 68);
1375
- };
1376
-
1377
- return canvas;
1378
- };
1379
-
1380
- let clockWise = true;
1381
- let lastAngle = 0;
1382
-
1383
- let createAngleObject = rotate => {
1384
- const canvas = document.createElement('canvas');
1385
- canvas.width = 100;
1386
- canvas.height = 100;
1387
- canvas.style.width = 100 + 'px';
1388
- canvas.style.height = 100 + 'px';
1389
- const ctx = canvas.getContext('2d');
1390
- ctx.strokeStyle = '#FFFFFF';
1391
- ctx.lineWidth = 10;
1392
- ctx.beginPath();
1393
- ctx.arc(50, 50, 45, 0, 2 * Math.PI);
1394
- ctx.stroke();
1395
-
1396
- ctx.strokeStyle = SECONDARY_PURPLE_COLOR;
1397
- ctx.lineWidth = 6;
1398
- ctx.beginPath();
1399
- if (lastAngle < 15 && lastAngle > -15) {
1400
- if (rotate >= 0) {
1401
- clockWise = false;
1402
- } else {
1403
- clockWise = true;
1404
- }
1405
- if (lastAngle === 0) {
1406
- if (rotate > -180) {
1407
- clockWise = true;
1408
- } else {
1409
- clockWise = false;
1410
- }
1411
- }
1412
- }
1413
-
1414
- ctx.arc(50, 50, 45, 0, (rotate / 180.0) * Math.PI, clockWise);
1415
- ctx.stroke();
1416
-
1417
- lastAngle = rotate;
1418
-
1419
- return canvas;
1420
- };
1421
-
1422
- let toolTexture = new Three.Texture(createToolObject());
1423
- toolTexture.needsUpdate = true;
1424
-
1425
- let toolObj = new Three.Sprite(
1426
- new Three.SpriteMaterial({ map: toolTexture, sizeAttenuation: true })
1427
- );
1428
- toolObj.material.transparent = true;
1429
- toolObj.material.depthTest = false;
1430
- toolObj.scale.set(20, 40, 20);
1431
- toolObj.renderOrder = 3;
1432
- toolObj.name = 'toolObj';
1433
-
1434
- let angleTexture = new Three.Texture(createAngleObject(0));
1435
- angleTexture.needsUpdate = true;
1436
-
1437
- let angleObj = new Three.Sprite(
1438
- new Three.SpriteMaterial({ map: angleTexture, sizeAttenuation: false })
1439
- );
1440
-
1441
- angleObj.scale.set(0.075, 0.075, 0.075);
1442
- angleObj.material.transparent = true;
1443
- angleObj.material.depthTest = false;
1444
- angleObj.renderOrder = 3;
1445
- angleObj.name = 'angleObj';
1446
-
1447
- /**
1448
- * Calculate plane point of mouse with `event` & `altitude`
1449
- * * Calculate mouse.x & mouse.y
1450
- * * Set raycaster from camera & Set raycaster direction
1451
- * * Calculate Point & dispatch an action
1452
- */
1453
- const getPoint = (e, alti) => {
1454
- mouse.x = (e.offsetX / this.width) * 2 - 1;
1455
- mouse.y = (-e.offsetY / this.height) * 2 + 1;
1456
-
1457
- raycaster.setFromCamera(mouse, camera);
1458
- rayDirection = raycaster.ray.direction;
1459
-
1460
- Point = mapCursorPosition(e, alti);
1461
- this.context.projectActions.updateMouseCoord(Point);
1462
- };
1463
-
1464
- const getIntersectWallPoint = e => {
1465
- mouse.x = (e.offsetX / this.width) * 2 - 1;
1466
- mouse.y = (-e.offsetY / this.height) * 2 + 1;
1467
-
1468
- raycaster.setFromCamera(mouse, camera);
1469
- rayDirection = raycaster.ray.direction;
1470
-
1471
- let lines = planData.sceneGraph.layers[scene.selectedLayer].lines;
1472
- let keys = Object.keys(lines);
1473
- let arrMesh = [];
1474
- keys.forEach(key => {
1475
- lines[key].children[0].children.forEach(mesh => {
1476
- if (mesh.name == 'soul' && mesh.visible) arrMesh.push(mesh);
1477
- });
1478
- });
1479
- if (arrMesh.length > 0) {
1480
- const intersects = raycaster.intersectObjects(arrMesh);
1481
- if (intersects.length > 0) {
1482
- let intersectPt = intersects[0].point;
1483
- intersectPt.applyMatrix4(gridMatrix);
1484
-
1485
- Point = { x: intersectPt.x, y: -intersectPt.z };
1486
- this.context.projectActions.updateMouseCoord(Point);
1487
- return true;
1488
- }
1489
- }
1490
-
1491
- return false;
1492
- };
1493
-
1494
- const updateSelectedObject = () => {
1495
- // update the selected object
1496
- let selectedLayerId = this.props.state.scene.selectedLayer;
1497
- let selItemId = this.props.state.scene
1498
- .getIn(['layers', selectedLayerId, 'selected', 'items'])
1499
- .toJS()[0];
1500
- selectedObject = {
1501
- layerID: selectedLayerId,
1502
- itemID: selItemId
1503
- };
1504
- };
1505
-
1506
- this.mouseDownEvent = event => {
1507
- gridPlanOrigin = gridPlane.position;
1508
- gridMatrix.copy(gridPlane.matrixWorld).invert();
1509
- let altitude = 0;
1510
- if (
1511
- allItemRect &&
1512
- allItemRect.cur &&
1513
- allItemRect.cur.itemInfo !== undefined
1514
- ) {
1515
- let properties = allItemRect.cur.itemInfo.properties;
1516
- altitude = properties.getIn(['altitude', '_length']);
1517
- let unit = properties.getIn(['altitude', '_unit']) || 'in';
1518
- altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);
1519
- }
1520
- getPoint(event, altitude);
1521
-
1522
- const state = this.props.state;
1523
-
1524
- this.lastMousePosition.x = mouse.x;
1525
- this.lastMousePosition.y = mouse.y;
1526
-
1527
- const layer = state.scene.getIn(['layers', state.scene.selectedLayer]);
1528
- const sCount =
1529
- layer.selected.areas.size +
1530
- layer.selected.holes.size +
1531
- layer.selected.items.size +
1532
- layer.selected.lines.size;
1533
-
1534
- if (sCount <= 0) {
1535
- isSelected = false;
1536
- } else if (sCount >= 0 && selectedObject && 'holeID' in selectedObject) {
1537
- isSelected = true;
1538
- }
1539
-
1540
- prevX = Point.x;
1541
- prevY = Point.y;
1542
-
1543
- /**
1544
- * 0 - rotate
1545
- * 1 - move up/down
1546
- * 2 - move x/y
1547
- * 3 - camera rotate
1548
- */
1549
- let transflag = 3;
1550
- raycaster.setFromCamera(mouse, camera);
1551
- const meshes = [];
1552
- toIntersect.forEach(object => {
1553
- if (!object) return;
1554
- object.traverse(o => {
1555
- if (o.isMesh) meshes.push(o);
1556
- });
1557
- });
1558
- let intersects = raycaster.intersectObjects(meshes, true);
1559
-
1560
- let toolIntersects = raycaster.intersectObjects([toolObj], true);
1561
-
1562
- // This code is excuted when click the tool object(rotation or move icon).
1563
- if (toolIntersects.length > 0) {
1564
- updateSelectedObject();
1565
- // it determines whether mouse is over on rotation icon or move icon.
1566
- let distance = Math.sqrt(
1567
- Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +
1568
- Math.pow((toolIntersects[0].uv.y - 0.25) * 100, 2)
1569
- );
1570
- // move icon selected
1571
- if (distance <= 20) {
1572
- transflag = 2;
1573
- } else {
1574
- distance = Math.sqrt(
1575
- Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +
1576
- Math.pow((toolIntersects[0].uv.y - 0.75) * 100, 2)
1577
- );
1578
- // rotation icon selected
1579
- if (distance <= 20) {
1580
- transflag = 0;
1581
- }
1582
- }
1583
- }
1584
-
1585
- if (intersects.length > 0) {
1586
- let i = 0,
1587
- length = intersects.length;
1588
- for (i = 0; i < length; i++) {
1589
- if (
1590
- intersects[i].object.type !== 'BoxHelper' &&
1591
- // intersects[i].object.type === OBJTYPE_MESH &&
1592
- intersects[i].object.name !== 'lineText' &&
1593
- intersects[i].object.name !== 'soul' &&
1594
- !intersects[i].object.name.includes('WarningBox')
1595
- )
1596
- break;
1597
- }
1598
-
1599
- if (intersects[i] !== undefined) {
1600
- if (intersects[i].object.name.indexOf('transUp') != -1) transflag = 1;
1601
- if (intersects[i].object.name.indexOf('transHole') != -1)
1602
- transflag = 2;
1603
- } else {
1604
- console.log('intersects[i] is undefined in viewer3d/viewer3d.js');
1605
- }
1606
- }
1607
-
1608
- if (this.props.state.mode == MODE_DRAWING_ITEM_3D) return;
1609
-
1610
- if (isSelected) {
1611
- !this.props.downloadFlag && this.props.setToolbar('');
1612
-
1613
- if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1614
- let i;
1615
- for (i = 0; i < intersects.length; i++) {
1616
- if (
1617
- intersects[i].object instanceof Three.Mesh &&
1618
- intersects[i].object.name != 'TransformBox' &&
1619
- intersects[i].object.type != 'Line' &&
1620
- intersects[i].object.name != 'lineText' &&
1621
- intersects[i].object.name != 'countertops' &&
1622
- intersects[i].object.type != 'BoxHelper' &&
1623
- intersects[i].object.name != 'floor' &&
1624
- intersects[i].object.name != 'backFace' &&
1625
- intersects[i].object.name != 'soul' &&
1626
- !intersects[i].object.name.includes('backsplash') &&
1627
- !intersects[i].object.name.includes('WarningBox')
1628
- )
1629
- break;
1630
- }
1631
- if (intersects[i] === undefined) {
1632
- if (transflag !== 0 && transflag !== 2) {
1633
- isSelected = false;
1634
- this.context.projectActions.unselectAll();
1635
- scene3D.remove(toolObj);
1636
- this.context.itemsActions.removeReplacingSupport();
1637
- return;
1638
- }
1639
- }
1640
- if (selectedObject !== undefined) {
1641
- let selectedItem =
1642
- planData.sceneGraph.layers[selectedObject.layerID].items[
1643
- selectedObject.itemID
1644
- ];
1645
- sPoint.set(Point.x, Point.y);
1646
- if (transflag == 0) {
1647
- scene3D.remove(toolObj);
1648
- let alti = 0;
1649
- if (
1650
- allItemRect &&
1651
- allItemRect.cur &&
1652
- allItemRect.cur.itemInfo !== undefined
1653
- ) {
1654
- let properties = allItemRect.cur.itemInfo.properties;
1655
- alti = properties.getIn(['altitude', '_length']);
1656
- let unit = properties.getIn(['altitude', '_unit']) || 'in';
1657
- alti = convert(alti).from(unit).to(this.props.state.scene.unit);
1658
- }
1659
- getPoint(
1660
- { offsetX: event.offsetX - 50, offsetY: event.offsetY },
1661
- alti
1662
- );
1663
- if (isUndefined(selectedItem)) return;
1664
- const selItem = this.props.state.scene.layers
1665
- .get(selectedObject.layerID)
1666
- .items.get(selectedObject.itemID);
1667
-
1668
- lastAngle = 0;
1669
-
1670
- angleObj.position.set(
1671
- planData.plan.position.x + Point.x,
1672
- selItem.category === 'lighting'
1673
- ? -planData.plan.position.y -
1674
- selItem.properties.get('height').get('length')
1675
- : selItem.properties.get('altitude').get('length') +
1676
- planData.plan.position.y,
1677
- planData.plan.position.z - Point.y
1678
- );
1679
-
1680
- angleTexture.image = createAngleObject(0);
1681
- angleTexture.needsUpdate = true;
1682
-
1683
- scene3D.add(angleObj);
1684
- this.setState({ angleObj: angleObj });
1685
- let centerPos = Point;
1686
- getPoint(event, alti);
1687
-
1688
- this.context.itemsActions.beginRotatingItem3D(
1689
- selectedObject.layerID,
1690
- selectedObject.itemID,
1691
- Point.x,
1692
- Point.y,
1693
- centerPos.x,
1694
- centerPos.y
1695
- );
1696
- bRotate = true;
1697
- } else if (transflag == 1) {
1698
- bMoveUP = true;
1699
- } else if (transflag == 2) {
1700
- switch (true) {
1701
- case 'holeID' in selectedObject:
1702
- this.context.holesActions.beginDraggingHole3D(
1703
- selectedObject.layerID,
1704
- selectedObject.holeID,
1705
- Point.x,
1706
- Point.y
1707
- );
1708
- break;
1709
- default:
1710
- this.context.itemsActions.beginDraggingItem3D(
1711
- selectedObject.layerID,
1712
- selectedObject.itemID,
1713
- Point.x,
1714
- Point.y
1715
- );
1716
- break;
1717
- }
1718
- bMove = true;
1719
- scene3D.remove(toolObj);
1720
- }
1721
- for (i = 0; i < intersects.length; i++) {
1722
- if (
1723
- selectedItem != undefined &&
1724
- intersects[i].object.parent &&
1725
- intersects[i].object.parent.parent.userData.itemId ===
1726
- selectedItem.userData.itemId
1727
- )
1728
- selectedFlag = true;
1729
- }
1730
- if (
1731
- selectedFlag ||
1732
- (toolIntersects.length > 0 && !isElevationView(mode))
1733
- ) {
1734
- cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;
1735
- selectedFlag = false;
1736
- } else {
1737
- isSelected = false;
1738
- this.context.projectActions.unselectAll();
1739
- scene3D.remove(toolObj);
1740
- this.context.itemsActions.removeReplacingSupport();
1741
- }
1742
- }
1743
- } else {
1744
- isSelected = false;
1745
- this.context.projectActions.unselectAll();
1746
- scene3D.remove(toolObj);
1747
- this.context.itemsActions.removeReplacingSupport();
1748
- return;
1749
- }
1750
- }
1751
- };
1752
-
1753
- this.mouseUpEvent = event => {
1754
- firstMove = 0;
1755
- let altitude = 0;
1756
- if (
1757
- allItemRect &&
1758
- allItemRect.cur &&
1759
- allItemRect.cur.itemInfo !== undefined
1760
- ) {
1761
- let properties = allItemRect.cur.itemInfo.properties;
1762
- altitude = properties.getIn(['altitude', '_length']);
1763
- let unit = properties.getIn(['altitude', '_unit']) || 'in';
1764
- altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);
1765
- }
1766
- scene3D.remove(angleObj);
1767
- scene3D.remove(toolObj);
1768
- if (!this.props.downloadFlag && !this.props.state.mode.includes('ING')) {
1769
- this.props.setToolbar('');
1770
- }
1771
- getPoint(event, altitude);
1772
- if (this.props.state.mode == MODE_DRAWING_ITEM_3D) {
1773
- if (Point.x > this.props.state.scene.width)
1774
- Point.x = this.props.state.width;
1775
- if (Point.y > this.props.state.scene.height)
1776
- Point.y = this.props.state.height;
1777
- if (Point.x < 0) Point.x = 0;
1778
- if (Point.y < 0) Point.y = 0;
1779
- if (snapBox == null) {
1780
- actions.itemsActions.endDrawingItem(
1781
- this.props.state.scene.selectedLayer,
1782
- sPoint.x,
1783
- sPoint.y
1784
- );
1785
- } else {
1786
- actions.itemsActions.updateDraggingItemChanged(
1787
- targetPoint.x,
1788
- -targetPoint.z,
1789
- selectedObject.layerID,
1790
- selectedObject.itemID
1791
- );
1792
- this.context.itemsActions.updateRotatingItemChanged(
1793
- targetRot,
1794
- selectedObject.layerID,
1795
- selectedObject.itemID
1796
- );
1797
- removeSnapBox();
1798
-
1799
- actions.itemsActions.endDrawingItem(
1800
- this.props.state.scene.selectedLayer,
1801
- Point.x,
1802
- Point.y
1803
- );
1804
- }
1805
- bMove = false;
1806
- return;
1807
- }
1808
-
1809
- if (this.props.state.mode == MODE_DRAGGING_ITEM_3D) {
1810
- this.context.itemsActions.endDraggingItem3D();
1811
- }
1812
-
1813
- if (this.props.state.mode == MODE_ROTATING_ITEM_3D) {
1814
- this.context.itemsActions.endRotatingItem3D(sPoint.x, sPoint.y);
1815
- }
1816
-
1817
- if (this.props.state.mode == MODE_DRAWING_HOLE_3D) {
1818
- gridPlanOrigin = gridPlane.position;
1819
- gridMatrix.copy(gridPlane.matrixWorld).invert();
1820
- camPos = camera.position;
1821
- if (!getIntersectWallPoint(event)) return;
1822
- actions.holesActions.endDrawingHole3D(
1823
- this.props.state.scene.selectedLayer,
1824
- Point.x,
1825
- Point.y
1826
- );
1827
- bMove = false;
1828
- return;
1829
- }
1830
-
1831
- event.preventDefault();
1832
- if (event.button === 0) {
1833
- cameraControls.mouseButtons.left = CameraControls.ACTION.ROTATE;
1834
- mouse.x = (event.offsetX / this.width) * 2 - 1;
1835
- mouse.y = -(event.offsetY / this.height) * 2 + 1;
1836
-
1837
- raycaster.setFromCamera(mouse, camera);
1838
- rayDirection = raycaster.ray.direction;
1839
- rayDirection = rayDirection.normalize();
1840
-
1841
- const meshes = [];
1842
- toIntersect.forEach(object => {
1843
- if (!object) return;
1844
- object.traverse(o => {
1845
- if (o.isMesh) meshes.push(o);
1846
- });
1847
- });
1848
-
1849
- let intersects = raycaster.intersectObjects(meshes, true);
1850
- let i;
1851
-
1852
- if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1853
- for (i = 0; i < intersects.length; i++) {
1854
- if (intersects[i].object.name === 'warningObj') break;
1855
- }
1856
- if (intersects[i] !== undefined) {
1857
- let distance = Math.sqrt(
1858
- Math.pow((intersects[i].uv.x - 0.5) * 50, 2) +
1859
- Math.pow((intersects[i].uv.y - 0.25) * 100, 2)
1860
- );
1861
- if (distance <= 20) {
1862
- if (!bMove && !bRotate) {
1863
- isSelected = false;
1864
- this.context.projectActions.unselectAll();
1865
- scene3D.remove(toolObj);
1866
- this.context.itemsActions.removeReplacingSupport();
1867
-
1868
- let replaceInfo = intersects[i].object.parent.parent.userData;
1869
- this.context.itemsActions.selectItem(
1870
- replaceInfo.layerId,
1871
- replaceInfo.itemId
1872
- );
1873
- !this.props.downloadFlag && this.props.replaceCabinet(true);
1874
-
1875
- return;
1876
- }
1877
- }
1878
- }
1879
- }
1880
- !this.props.downloadFlag && this.props.replaceCabinet(false);
1881
- if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1882
- for (i = 0; i < intersects.length; i++) {
1883
- if (
1884
- intersects[i].object instanceof Three.Mesh &&
1885
- intersects[i].object.name != 'TransformBox' &&
1886
- intersects[i].object.type != 'Line' &&
1887
- intersects[i].object.name != 'lineText' &&
1888
- intersects[i].object.name != 'countertops' &&
1889
- intersects[i].object.type != 'BoxHelper' &&
1890
- intersects[i].object.name != 'soul' &&
1891
- !intersects[i].object.name.includes('backsplash') &&
1892
- !intersects[i].object.name.includes('WarningBox')
1893
- )
1894
- break;
1895
- }
1896
- }
1897
- gridMatrix.copy(gridPlane.matrixWorld).invert();
1898
- if (
1899
- (Math.abs(mouse.x - this.lastMousePosition.x) <= 0.02 &&
1900
- Math.abs(mouse.y - this.lastMousePosition.y) <= 0.02) ||
1901
- bMove
1902
- ) {
1903
- if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
1904
- if (intersects[i] === undefined) {
1905
- if (!bMove) {
1906
- isSelected = false;
1907
- this.context.projectActions.unselectAll();
1908
- scene3D.remove(toolObj);
1909
- this.context.itemsActions.removeReplacingSupport();
1910
- return;
1911
- }
1912
- }
1913
-
1914
- if (!bMove) {
1915
- selectedObject =
1916
- intersects[i].object.interact &&
1917
- intersects[i].object.interact();
1918
- }
1919
-
1920
- if (selectedObject !== undefined && 'itemID' in selectedObject) {
1921
- currentObject = intersects[i].object;
1922
- for (; currentObject.parent != null; ) {
1923
- if (currentObject.name == 'pivot') break;
1924
- currentObject = currentObject.parent;
1925
- }
1926
- isSelected = true;
1927
- setTimeout(() => {
1928
- getDistances(layer);
1929
- let selectedItem =
1930
- planData.sceneGraph.layers[selectedObject.layerID].items[
1931
- selectedObject.itemID
1932
- ];
1933
- if (isUndefined(selectedItem)) return;
1934
- const selItem = this.props.state.scene.layers
1935
- .get(selectedObject.layerID)
1936
- .items.get(selectedObject.itemID);
1937
- let itemPos = selectedItem.position.clone();
1938
-
1939
- if (
1940
- intersects[i].object.parent &&
1941
- intersects[i].object.parent.parent.userData.itemId ===
1942
- selectedItem.userData.itemId
1943
- ) {
1944
- toolObj.position.set(
1945
- intersects[i].point.x,
1946
- intersects[i].point.y,
1947
- intersects[i].point.z
1948
- );
1949
- } else {
1950
- toolObj.position.set(
1951
- planData.plan.position.x + itemPos.x,
1952
- selItem.category === 'lighting'
1953
- ? -planData.plan.position.y -
1954
- selItem.properties.get('height').get('length')
1955
- : planData.plan.position.y +
1956
- selectedItem.children[0].position.y,
1957
- planData.plan.position.z + itemPos.z
1958
- );
1959
- }
1960
- scene3D.add(toolObj);
1961
- this.setState({ toolObj: toolObj });
1962
- // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);
1963
- let pointArray = [],
1964
- cnt = 0;
1965
- pointArray.push([fVLine[0].userData.distance, 90]);
1966
- pointArray.push([fVLine[1].userData.distance, -90]);
1967
- pointArray.push([fVLine[2].userData.distance, 180]);
1968
- pointArray.push([fVLine[3].userData.distance, 0]);
1969
- pointArray.forEach((pointElement, index) => {
1970
- if (pointElement[0] == undefined) pointArray[index][0] = 0;
1971
- });
1972
- pointArray.forEach(pointElement => {
1973
- if (pointElement[0] == 0) cnt++;
1974
- });
1975
- if (cnt == 4 || cnt == 3) {
1976
- pointArray[0][0] = 100;
1977
- pointArray[1][0] = 100;
1978
- }
1979
- actions.itemsActions.storeDistArray(
1980
- layer.id,
1981
- selectedObject.itemID,
1982
- pointArray
1983
- );
1984
- });
1985
- } else {
1986
- if (selectedObject) {
1987
- switch (true) {
1988
- case 'holeID' in selectedObject:
1989
- if (selObj?.object?.name.includes('transHole')) {
1990
- actions.holesActions.endDraggingHole3D(
1991
- sPoint.x,
1992
- sPoint.y
1993
- );
1994
- }
1995
- break;
1996
- case 'lineID' in selectedObject:
1997
- if (selObj?.object?.name.includes('transHole')) {
1998
- actions.holesActions.endDraggingHole3D(
1999
- sPoint.x,
2000
- sPoint.y
2001
- );
2002
- }
2003
- break;
2004
- default:
2005
- break;
2006
- }
2007
- }
2008
- isSelected = false;
2009
- }
2010
- } else {
2011
- isSelected = false;
2012
- this.context.projectActions.unselectAll();
2013
- switch (true) {
2014
- case 'holeID' in selectedObject:
2015
- actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);
2016
- break;
2017
- default:
2018
- this.context.itemsActions.removeReplacingSupport();
2019
- break;
2020
- }
2021
- }
2022
- bMove = false;
2023
- bRotate = false;
2024
- bMoveUP = false;
2025
- if (isSelected) {
2026
- prepareSnap(layer);
2027
- selectedObj = allItemRect.cur;
2028
- }
2029
- } else {
2030
- visibleTransformBox(false);
2031
- let alti = 0;
2032
- if (
2033
- allItemRect &&
2034
- allItemRect.cur &&
2035
- allItemRect.cur.itemInfo !== undefined
2036
- ) {
2037
- let properties = allItemRect.cur.itemInfo.properties;
2038
- alti = properties.getIn(['altitude', '_length']);
2039
- let unit = properties.getIn(['altitude', '_unit']) || 'in';
2040
- alti = convert(alti).from(unit).to(this.props.state.scene.unit);
2041
- }
2042
- getPoint(event, alti);
2043
- if (bRotate) {
2044
- let selectedItem =
2045
- planData.sceneGraph.layers[selectedObject.layerID].items[
2046
- selectedObject.itemID
2047
- ];
2048
- if (isUndefined(selectedItem)) return;
2049
- const selItem = this.props.state.scene.layers
2050
- .get(selectedObject.layerID)
2051
- .items.get(selectedObject.itemID);
2052
- let itemPos = selectedItem.position.clone();
2053
-
2054
- if (
2055
- intersects[i]?.object?.parent?.parent?.userData?.itemId ===
2056
- selectedItem.userData.itemId
2057
- ) {
2058
- toolObj.position.set(
2059
- intersects[i].point.x,
2060
- intersects[i].point.y,
2061
- intersects[i].point.z
2062
- );
2063
- } else {
2064
- toolObj.position.set(
2065
- planData.plan.position.x + itemPos.x,
2066
- selItem.category === 'lighting'
2067
- ? -planData.plan.position.y -
2068
- selItem.properties.get('height').get('length')
2069
- : planData.plan.position.y +
2070
- selectedItem.children[0].position.y,
2071
- planData.plan.position.z + itemPos.z
2072
- );
2073
- }
2074
-
2075
- scene3D.add(toolObj);
2076
- this.setState({ toolObj: toolObj });
2077
- this.context.itemsActions.endRotatingItem3D(Point.x, Point.y);
2078
- bRotate = false;
2079
- }
2080
- if (bMove) {
2081
- bMove = false;
2082
- let selectedItem =
2083
- planData.sceneGraph.layers[selectedObject.layerID].items[
2084
- selectedObject.itemID
2085
- ];
2086
- if (isUndefined(selectedItem)) return;
2087
- const selItem = this.props.state.scene.layers
2088
- .get(selectedObject.layerID)
2089
- .items.get(selectedObject.itemID);
2090
- let itemPos = selectedItem.position.clone();
2091
- if (
2092
- intersects[i].object.parent.parent.userData.itemId ===
2093
- selectedItem.userData.itemId
2094
- ) {
2095
- toolObj.position.set(
2096
- intersects[i].point.x,
2097
- intersects[i].point.y,
2098
- intersects[i].point.z
2099
- );
2100
- } else {
2101
- toolObj.position.set(
2102
- planData.plan.position.x + itemPos.x,
2103
- selItem.category === 'lighting'
2104
- ? -planData.plan.position.y -
2105
- selItem.properties.get('height').get('length')
2106
- : planData.plan.position.y +
2107
- selectedItem.children[0].position.y,
2108
- planData.plan.position.z + itemPos.z
2109
- );
2110
- }
2111
-
2112
- scene3D.add(toolObj);
2113
- this.setState({ toolObj: toolObj });
2114
- if (snapBox == null) {
2115
- let item3D =
2116
- planData.sceneGraph.layers[selectedObject.layerID].items[
2117
- selectedObject.itemID
2118
- ];
2119
- if (!item3D) return;
2120
- item3D.visible = true;
2121
- let originPos = item3D.position.clone();
2122
- setTimeout(() => {
2123
- this.context.itemsActions.updateDraggingItemChanged(
2124
- originPos.x,
2125
- -originPos.z,
2126
- selectedObject.layerID,
2127
- selectedObject.itemID
2128
- );
2129
- }, 50);
2130
- } else {
2131
- this.context.itemsActions.updateDraggingItemChanged(
2132
- targetPoint.x,
2133
- -targetPoint.z,
2134
- selectedObject.layerID,
2135
- selectedObject.itemID
2136
- );
2137
- this.context.itemsActions.updateRotatingItemChanged(
2138
- targetRot,
2139
- selectedObject.layerID,
2140
- selectedObject.itemID
2141
- );
2142
- let item3D =
2143
- planData.sceneGraph.layers[selectedObject.layerID].items[
2144
- selectedObject.itemID
2145
- ];
2146
- item3D.position.x = targetPoint.x;
2147
- item3D.position.z = targetPoint.z;
2148
- item3D.visible = true;
2149
- }
2150
- }
2151
- if (bMoveUP) {
2152
- bMoveUP = false;
2153
- }
2154
- }
2155
- removeSnapBox();
2156
-
2157
- actions.sceneActions.updateMovingState(true);
2158
- if (isSelected === true) {
2159
- prepareSnap(layer);
2160
- selectedObj = allItemRect.cur;
2161
- }
2162
- }
2163
- };
2164
-
2165
- this.mouseMoveEvent = event => {
2166
- event.preventDefault();
2167
- backsplashVisible = false;
2168
-
2169
- let altitude = 0;
2170
- if (
2171
- allItemRect &&
2172
- allItemRect.cur &&
2173
- allItemRect.cur.itemInfo !== undefined
2174
- ) {
2175
- let properties = allItemRect.cur.itemInfo.properties;
2176
- altitude = properties.getIn(['altitude', '_length']);
2177
- let unit = properties.getIn(['altitude', '_unit']) || 'in';
2178
- altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);
2179
- }
2180
-
2181
- if (this.props.state.mode === MODE_DRAWING_HOLE_3D) {
2182
- gridPlanOrigin = gridPlane.position;
2183
- gridMatrix.copy(gridPlane.matrixWorld).invert();
2184
- camPos = camera.position;
2185
- if (!getIntersectWallPoint(event)) return;
2186
-
2187
- let drawingSupport = this.props.state.drawingSupport;
2188
- if (!drawingSupport.has('currentID')) {
2189
- this.context.holesActions.updateDrawingHole3D(
2190
- this.props.state.scene.selectedLayer,
2191
- Point.x,
2192
- Point.y
2193
- );
2194
- sPoint.set(Point.x, Point.y);
2195
- } else {
2196
- let layerID = this.props.state.scene.selectedLayer;
2197
- let holeID = this.props.state.drawingSupport.get('currentID');
2198
-
2199
- deleteSpecifiedMeshObjects('WarningBox' + holeID);
2200
- prepareSnap(layer);
2201
-
2202
- // let {nx, ny, rot} = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea);
2203
- let nx = Point.x;
2204
- let ny = Point.y;
2205
- actions.holesActions.updateDrawingHole3D(layerID, nx, ny);
2206
- sPoint.set(nx, ny);
2207
- }
2208
- }
2209
-
2210
- if (this.props.state.mode === MODE_DRAWING_ITEM_3D) {
2211
- // We need to set cam position since when MODE_DRAWING_ITEM_3D mouse down event
2212
- // is not emited so cam position is not valid
2213
- gridPlanOrigin = gridPlane.position;
2214
- gridMatrix.copy(gridPlane.matrixWorld).invert();
2215
- camPos = camera.position;
2216
- getPoint(event, altitude);
2217
- if (
2218
- Point.x > this.props.state.scene.width ||
2219
- Point.x < 0 ||
2220
- Point.y > this.props.state.scene.height ||
2221
- Point.y < 0
2222
- )
2223
- return;
2224
- let drawingSupport = this.props.state.drawingSupport;
2225
- if (!drawingSupport.has('currentID')) {
2226
- this.context.itemsActions.updateDrawingItem(
2227
- this.props.state.scene.selectedLayer,
2228
- Point.x,
2229
- Point.y
2230
- );
2231
- sPoint.set(Point.x, Point.y);
2232
- } else {
2233
- let layerID = this.props.state.scene.selectedLayer;
2234
- let itemID = this.props.state.drawingSupport.get('currentID');
2235
- selectedObject = { layerID: layerID, itemID: itemID };
2236
- let mX = Point.x - sPoint.x;
2237
- let mY = Point.y - sPoint.y;
2238
- let item3D =
2239
- planData.sceneGraph.layers[selectedObject.layerID].items[
2240
- selectedObject.itemID
2241
- ];
2242
- let layer = this.props.state.scene.getIn([
2243
- 'layers',
2244
- selectedObject.layerID
2245
- ]);
2246
-
2247
- deleteSpecifiedMeshObjects('TransformBox');
2248
- deleteSpecifiedMeshObjects('WarningBox' + itemID);
2249
- prepareSnap(layer);
2250
-
2251
- let item = layer.items.getIn([selectedObject.itemID]);
2252
- if (item.counterTop.uri == '')
2253
- item.counterTop.uri = layer.counterTop.uri;
2254
- let sRot = item.rotation;
2255
-
2256
- if (!item3D) return;
2257
-
2258
- let originPos = item3D.position.clone();
2259
- let tPos = new Three.Vector2(mX + originPos.x, mY - originPos.z);
2260
- let sBounding = item3D.children[0].userData;
2261
- let swidth = sBounding.max.x - sBounding.min.x;
2262
- let sdepth = sBounding.max.z - sBounding.min.z;
2263
- let sVertices = this.getRectPoints(
2264
- swidth,
2265
- sdepth,
2266
- tPos.clone(),
2267
- ((sRot % 360) / 180) * Math.PI
2268
- );
2269
- let { nx, ny, rot } = GeometryUtils.calcSnap(
2270
- allItemRect,
2271
- allItemSnap,
2272
- allLineRects,
2273
- allLineSnap,
2274
- allRect,
2275
- Point.x,
2276
- Point.y,
2277
- allArea
2278
- );
2279
- let nPos = new Three.Vector2(nx, ny);
2280
- if (
2281
- !this.collisionHoleCheck(
2282
- item3D,
2283
- nPos,
2284
- item.rotation,
2285
- {
2286
- userData: { itemId: null }
2287
- },
2288
- item,
2289
- this.context.catalog
2290
- )
2291
- ) {
2292
- this.collisionSlide(
2293
- item3D,
2294
- originPos,
2295
- layer,
2296
- sVertices,
2297
- tPos,
2298
- item
2299
- );
2300
- //return;
2301
- }
2302
- let polygonPoint = lineRect(layer);
2303
- if (polygonPoint.length > 0) {
2304
- let PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, nx, ny);
2305
- if (!PolygonSect) {
2306
- let { cx, cy, crot } = GeometryUtils.calcCreateSnap(
2307
- allItemRect,
2308
- allItemSnap,
2309
- allLineRects,
2310
- allLineSnap,
2311
- allRect,
2312
- Point.x,
2313
- Point.y,
2314
- polygonPoint
2315
- );
2316
- nx = cx;
2317
- ny = cy;
2318
- rot = crot;
2319
- }
2320
- }
2321
- let polygon = lineRect(layer);
2322
- if (polygon.length > 0) {
2323
- let Sect = GeometryUtils.ContainsPoint(polygon, nx, ny);
2324
- if (!Sect) return;
2325
- }
2326
- actions.itemsActions.updateDraggingItemChanged(
2327
- nx,
2328
- ny,
2329
- selectedObject.layerID,
2330
- selectedObject.itemID
2331
- );
2332
- actions.itemsActions.updateRotatingItemChanged(
2333
- rot,
2334
- selectedObject.layerID,
2335
- selectedObject.itemID
2336
- );
2337
- sPoint.set(nx, ny);
2338
- getDistances(layer);
2339
- let pointArray = [],
2340
- cnt = 0;
2341
- pointArray.push([fVLine[0].userData.distance, 90]);
2342
- pointArray.push([fVLine[1].userData.distance, -90]);
2343
- pointArray.push([fVLine[2].userData.distance, 180]);
2344
- pointArray.push([fVLine[3].userData.distance, 0]);
2345
- pointArray.forEach((pointElement, index) => {
2346
- if (pointElement[0] == undefined) pointArray[index][0] = 0;
2347
- });
2348
- pointArray.forEach(pointElement => {
2349
- if (pointElement[0] == 0) cnt++;
2350
- });
2351
- if (cnt == 4 || cnt == 3) {
2352
- pointArray[0][0] = 100;
2353
- pointArray[1][0] = 100;
2354
- }
2355
- actions.itemsActions.storeDistArray(layer.id, item.id, pointArray);
2356
- let minDis = fVLine[0].userData.distance;
2357
- let snapObj = fVLine[0];
2358
- let iPos = item3D.position.clone();
2359
- let snapDis = Math.sqrt(
2360
- (iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) +
2361
- (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z)
2362
- );
2363
- if (snapDis >= 100 && snapObj != null) {
2364
- removeSnapBox();
2365
- backsplashVisible = false;
2366
- //console.log('1 snap no');
2367
- }
2368
- for (let i = 1; i < fVLine.length; i++) {
2369
- if (minDis > fVLine[i].userData.distance) {
2370
- minDis = fVLine[i].userData.distance;
2371
- snapObj = fVLine[i];
2372
- }
2373
- }
2374
- if (snapBox == null) {
2375
- snapFlag = false;
2376
- }
2377
- actions.sceneActions.updateMovingState(false);
2378
- if (minDis < snapDelta && !snapFlag) {
2379
- this.snap(snapObj, layer);
2380
- snapFlag = true;
2381
- //console.log('1 snap Yes')
2382
- getDistances(layer, true);
2383
- let i = 0;
2384
- for (i = 0; i < fVLine.length; i++) {
2385
- if (fVLine[i].userData.distance < snapDelta) {
2386
- break;
2387
- }
2388
- }
2389
- if (i === fVLine.length) backsplashVisible = false;
2390
- else backsplashVisible = true;
2391
- }
2392
- actions.itemsActions.setBacksplashVisible(
2393
- selectedObject.itemID,
2394
- backsplashVisible
2395
- );
2396
- }
2397
- }
2398
-
2399
- if (bRotate) {
2400
- getPoint(event, altitude);
2401
- this.context.itemsActions.updateRotatingItem(Point.x, Point.y);
2402
-
2403
- let layer = this.props.state.scene.getIn([
2404
- 'layers',
2405
- selectedObject.layerID
2406
- ]);
2407
- let item = layer.items.getIn([selectedObject.itemID]);
2408
-
2409
- let orginRot = this.props.state.rotatingSupport.get('originRotation');
2410
-
2411
- angleTexture.image = createAngleObject(
2412
- (orginRot < 0 ? 360 - orginRot : orginRot) - item.rotation
2413
- );
2414
- angleTexture.needsUpdate = true;
2415
-
2416
- deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);
2417
- deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);
2418
-
2419
- actions.sceneActions.updateMovingState(false);
2420
- }
2421
-
2422
- if (bMoveUP) {
2423
- this.context.itemsActions.updateItemsAltitude(
2424
- selectedObject.layerID,
2425
- selectedObject.itemID,
2426
- event.movementY
2427
- );
2428
- }
2429
-
2430
- if (bMove) {
2431
- if ('holeID' in selectedObject) {
2432
- gridPlanOrigin = gridPlane.position;
2433
- gridMatrix.copy(gridPlane.matrixWorld).invert();
2434
- camPos = camera.position;
2435
- if (!getIntersectWallPoint(event)) return;
2436
- let draggingSupport = this.props.state.draggingSupport;
2437
- if (!draggingSupport.has('currentID')) {
2438
- this.context.holesActions.updateDraggingHole(Point.x, Point.y);
2439
- sPoint.set(Point.x, Point.y);
2440
- } else {
2441
- let holeID = this.props.state.draggingSupport.get('currentID');
2442
- deleteSpecifiedMeshObjects('WarningBox' + holeID);
2443
- let nx = Point.x;
2444
- let ny = Point.y;
2445
- actions.holesActions.updateDraggingHole(nx, ny);
2446
- sPoint.set(nx, ny);
2447
- }
2448
- } else {
2449
- const item3D =
2450
- planData.sceneGraph.layers[selectedObject.layerID].items[
2451
- selectedObject.itemID
2452
- ];
2453
-
2454
- if (item3D === undefined) return;
2455
-
2456
- const layer = this.props.state.scene.getIn([
2457
- 'layers',
2458
- item3D.userData.layerId
2459
- ]);
2460
-
2461
- const item = layer.items.getIn([selectedObject.itemID]);
2462
- if (item.counterTop.uri == '')
2463
- item.counterTop.uri = layer.counterTop.uri;
2464
-
2465
- let sRot = item.rotation;
2466
- let mX = Point.x - sPoint.x;
2467
- let mY = Point.y - sPoint.y;
2468
-
2469
- deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);
2470
- deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);
2471
- prepareSnap(layer);
2472
-
2473
- getPoint(event, altitude);
2474
-
2475
- let originPos = item3D.position.clone();
2476
- let tPos = new Three.Vector2(mX + originPos.x, mY - originPos.z);
2477
- let sBounding = item3D.children[0].userData;
2478
- let swidth = sBounding.max.x - sBounding.min.x;
2479
- let sdepth = sBounding.max.z - sBounding.min.z;
2480
- let sVertices = this.getRectPoints(
2481
- swidth,
2482
- sdepth,
2483
- tPos.clone(),
2484
- ((sRot % 360) / 180) * Math.PI
2485
- );
2486
- let { nx, ny, rot } = GeometryUtils.calcSnap(
2487
- allItemRect,
2488
- allItemSnap,
2489
- allLineRects,
2490
- allLineSnap,
2491
- allRect,
2492
- Point.x,
2493
- Point.y,
2494
- allArea
2495
- );
2496
- let nPos = new Three.Vector2(nx, ny);
2497
- if (
2498
- !this.collisionHoleCheck(
2499
- item3D,
2500
- nPos,
2501
- item.rotation,
2502
- {
2503
- userData: { itemId: null }
2504
- },
2505
- item,
2506
- this.context.catalog
2507
- )
2508
- ) {
2509
- this.collisionSlide(
2510
- item3D,
2511
- originPos,
2512
- layer,
2513
- sVertices,
2514
- tPos,
2515
- item
2516
- );
2517
- //return;
2518
- }
2519
- let polygonPoint = lineRect(layer);
2520
- if (polygonPoint.length > 0) {
2521
- let PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, nx, ny);
2522
- if (!PolygonSect) {
2523
- let { cx, cy, crot } = GeometryUtils.calcCreateSnap(
2524
- allItemRect,
2525
- allItemSnap,
2526
- allLineRects,
2527
- allLineSnap,
2528
- allRect,
2529
- Point.x,
2530
- Point.y,
2531
- polygonPoint
2532
- );
2533
- nx = cx;
2534
- ny = cy;
2535
- rot = crot;
2536
- }
2537
- }
2538
- let polygon = lineRect(layer);
2539
- if (polygon.length > 0) {
2540
- let Sect = GeometryUtils.ContainsPoint(polygon, nx, ny);
2541
- if (!Sect) return;
2542
- }
2543
- actions.itemsActions.updateDraggingItemChanged(
2544
- nx,
2545
- ny,
2546
- selectedObject.layerID,
2547
- selectedObject.itemID
2548
- );
2549
- actions.itemsActions.updateRotatingItemChanged(
2550
- rot,
2551
- selectedObject.layerID,
2552
- selectedObject.itemID
2553
- );
2554
- sPoint.set(nx, ny);
2555
- getDistances(layer);
2556
- let pointArray = [],
2557
- cnt = 0;
2558
- pointArray.push([fVLine[0].userData.distance, 90]);
2559
- pointArray.push([fVLine[1].userData.distance, -90]);
2560
- pointArray.push([fVLine[2].userData.distance, 180]);
2561
- pointArray.push([fVLine[3].userData.distance, 0]);
2562
- pointArray.forEach((pointElement, index) => {
2563
- if (pointElement[0] == undefined) pointArray[index][0] = 0;
2564
- });
2565
- pointArray.forEach(pointElement => {
2566
- if (pointElement[0] == 0) cnt++;
2567
- });
2568
- if (cnt == 4 || cnt == 3) {
2569
- pointArray[0][0] = 100;
2570
- pointArray[1][0] = 100;
2571
- }
2572
- actions.itemsActions.storeDistArray(layer.id, item.id, pointArray);
2573
- let minDis = fVLine[0].userData.distance;
2574
- let snapObj = fVLine[0];
2575
- let iPos = item3D.position.clone();
2576
- let snapDis = Math.sqrt(
2577
- (iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) +
2578
- (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z)
2579
- );
2580
- if (snapDis >= 100 && snapObj != null) {
2581
- removeSnapBox();
2582
- backsplashVisible = false;
2583
- //console.log('1 snap no');
2584
- }
2585
- for (let i = 1; i < fVLine.length; i++) {
2586
- if (minDis > fVLine[i].userData.distance) {
2587
- minDis = fVLine[i].userData.distance;
2588
- snapObj = fVLine[i];
2589
- }
2590
- }
2591
- if (snapBox == null) {
2592
- snapFlag = false;
2593
- }
2594
- actions.sceneActions.updateMovingState(false);
2595
- if (minDis < snapDelta && !snapFlag) {
2596
- this.snap(snapObj, layer);
2597
- snapFlag = true;
2598
- //console.log('1 snap Yes')
2599
- getDistances(layer, true);
2600
-
2601
- let i = 0;
2602
- for (i = 0; i < fVLine.length; i++) {
2603
- if (fVLine[i].userData.distance < snapDelta) {
2604
- break;
2605
- }
2606
- }
2607
- if (i === fVLine.length) backsplashVisible = false;
2608
- else backsplashVisible = true;
2609
- }
2610
- actions.itemsActions.setBacksplashVisible(
2611
- selectedObject.itemID,
2612
- backsplashVisible
2613
- );
2614
- }
2615
- }
2616
-
2617
- if (!bMove && !bRotate && !bMoveUP) {
2618
- let curPos = {
2619
- x: (event.offsetX / this.width) * 2 - 1,
2620
- y: -(event.offsetY / this.height) * 2 + 1
2621
- };
2622
-
2623
- raycaster.setFromCamera(curPos, camera);
2624
- rayDirection = raycaster.ray.direction;
2625
- rayDirection = rayDirection.normalize();
2626
-
2627
- const meshes = getAllMeshes(toIntersect);
2628
- let intersects = raycaster.intersectObjects(meshes, true);
2629
- let i;
2630
- if (intersects.length > 0 && !isNaN(intersects[0].distance)) {
2631
- for (i = 0; i < intersects.length; i++) {
2632
- if (intersects[i].object.name === 'warningObj') break;
2633
- }
2634
- if (intersects[i] !== undefined) {
2635
- let distance = Math.sqrt(
2636
- Math.pow((intersects[i].uv.x - 0.5) * 50, 2) +
2637
- Math.pow((intersects[i].uv.y - 0.75) * 100, 2)
2638
- );
2639
- if (distance <= 20) {
2640
- let infoPos = { x: 0, y: 0 };
2641
- if (event.offsetY > 150) {
2642
- infoPos.y = event.offsetY - 60;
2643
- } else {
2644
- infoPos.y = event.offsetY + 10;
2645
- }
2646
- if (event.offsetX > this.width - 650) {
2647
- infoPos.x = event.offsetX - 650;
2648
- } else {
2649
- infoPos.x = event.offsetX;
2650
- }
2651
- document.getElementById('warning_box_2d').style.display = 'flex';
2652
- document.getElementById('warning_box_2d').style.top =
2653
- `${infoPos.y}px`;
2654
- document.getElementById('warning_box_2d').style.left =
2655
- `${infoPos.x}px`;
2656
- return;
2657
- }
2658
- }
2659
- }
2660
- }
2661
- document.getElementById('warning_box_2d').style.display = 'none';
2662
- };
2663
-
2664
- this.onkeydown = event => {
2665
- if (this.props.keyDownEnable && !isElevationView(state.mode)) {
2666
- switch (event.keyCode) {
2667
- case 27: // escape key
2668
- isSelected = false;
2669
- this.context.projectActions.unselectAll();
2670
- this.context.itemsActions.removeReplacingSupport();
2671
- this.context.itemsActions.setMoveStatus(false);
2672
- this.context.itemsActions.setRotateStatus(false);
2673
- bMoveUP = false;
2674
- removeSnapBox();
2675
- break;
2676
- case 65: // w (move forward)
2677
- pivot.rotation.y -= 0.03;
2678
- break;
2679
- case 68: // s (move backward)
2680
- pivot.rotation.y += 0.03;
2681
- break;
2682
- case 83: // a (look left)
2683
- pivot.rotation.x += 0.03;
2684
- break;
2685
- case 87: // d (look left)
2686
- pivot.rotation.x -= 0.03;
2687
- break;
2688
- case 37: // left (move forward)
2689
- planData.plan.position.x += 10;
2690
- planData.grid.position.x += 10;
2691
- break;
2692
- case 38: // Up (move backward)
2693
- planData.plan.position.y += 10;
2694
- planData.grid.position.y += 10;
2695
- break;
2696
- case 39: // right arrow (look left)
2697
- planData.plan.position.x -= 10;
2698
- planData.grid.position.x -= 10;
2699
- break;
2700
- case 40: // down arrow (look left)
2701
- planData.plan.position.y -= 10;
2702
- planData.grid.position.y -= 10;
2703
- break;
2704
- }
2705
- }
2706
- };
2707
-
2708
- this.handleKeyDown = event => {
2709
- this.onkeydown(event);
2710
- };
2711
-
2712
- // Renderer & Event listener
2713
-
2714
- this.renderer.setClearColor(new Three.Color(SharedStyle.COLORS.white)); // 3D background color
2715
- this.renderer.setSize(this.width, this.height);
2716
-
2717
- if (!this.props.downloadFlag) {
2718
- this.renderer.domElement.addEventListener(
2719
- 'mousedown',
2720
- this.mouseDownEvent
2721
- );
2722
- this.renderer.domElement.addEventListener('mouseup', this.mouseUpEvent);
2723
- this.renderer.domElement.addEventListener(
2724
- 'mousemove',
2725
- this.mouseMoveEvent
2726
- );
2727
-
2728
- window.addEventListener('keydown', this.onkeydown);
2729
- window.SPKeyDown = this.handleKeyDown;
2730
- window.tDKeyDown = this.handleKeyDown;
2731
- }
2732
-
2733
- // Add the output of the renderer to the html element
2734
- const canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);
2735
- canvasWrapper && canvasWrapper.appendChild(this.renderer.domElement);
2736
-
2737
- //
2738
-
2739
- if (
2740
- scene.getIn(['layers', scene.selectedLayer, 'selected', 'items']).size !=
2741
- 0
2742
- ) {
2743
- // if selected Object
2744
- isSelected = true;
2745
- selectedObject.layerID = scene.selectedLayer;
2746
- selectedObject.itemID = scene
2747
- .getIn(['layers', scene.selectedLayer, 'selected', 'items'])
2748
- .toJS()[0];
2749
- setTimeout(() => {
2750
- try {
2751
- currentObject =
2752
- planData.sceneGraph.layers[selectedObject.layerID].items[
2753
- selectedObject.itemID
2754
- ];
2755
- if (isUndefined(currentObject)) return;
2756
- const selItem = this.props.state.scene.layers
2757
- .get(selectedObject.layerID)
2758
- .items.get(selectedObject.itemID);
2759
- let itemPos = currentObject.position.clone();
2760
- toolObj.position.set(
2761
- planData.plan.position.x + itemPos.x,
2762
- selItem.category === 'lighting'
2763
- ? -planData.plan.position.y -
2764
- selItem.properties.get('height').get('length')
2765
- : planData.plan.position.y + currentObject.children[0].position.y,
2766
- planData.plan.position.z + itemPos.z
2767
- );
2768
-
2769
- scene3D.add(toolObj);
2770
- this.setState({ toolObj: toolObj });
2771
- } catch (err) {
2772
- console.log(
2773
- 'selectedObject : ' +
2774
- JSON.stringify(selectedObject) +
2775
- '\nError: ' +
2776
- err
2777
- );
2778
- }
2779
- }, 2000);
2780
- }
2781
-
2782
- // Scene functions
2783
-
2784
- function init() {
2785
- clock = new Three.Clock();
2786
- scene3D = new Three.Scene();
2787
- if (isElevationView(state.mode))
2788
- scene3D.background = new Three.Color(0xffffff);
2789
- // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2790
- else scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC
2791
- // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);
2792
- window.scene3D = scene3D;
2793
- // Camera
2794
- if (isElevationView(state.mode)) {
2795
- // In elevation view, set Orthographic camera's position, angle and rotation about selected line
2796
- let { layers } = scene;
2797
- let selectedLayer = layers.get(scene.selectedLayer);
2798
- let ceilHeight = convert(selectedLayer.ceilHeight)
2799
- .from(selectedLayer.unit)
2800
- .to(scene.unit);
2801
- let lines = [];
2802
- let selectedLine = selectedLayer.lines.get(
2803
- selectedLayer.selected.lines.toJS()[0]
2804
- );
2805
- let vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0));
2806
- let vertex1 = selectedLayer.vertices.get(selectedLine.vertices.get(1));
2807
- let { x: x1, y: y1 } = vertex0;
2808
- let { x: x2, y: y2 } = vertex1;
2809
- if (
2810
- GeometryUtils.compareVertices(vertex0, vertex1) >= 0 &&
2811
- vertex0.x !== vertex1.x
2812
- ) {
2813
- ({ x: x1, y: y1 } = vertex1);
2814
- ({ x: x2, y: y2 } = vertex0);
2815
- }
2816
- selectedLayer.lines.toArray().forEach(line => {
2817
- if (line.id === selectedLine) {
2818
- let data = line.toJS();
2819
- data = { ...data, l0: { x: x1, y: y1 }, l1: { x: x2, y: y2 } };
2820
- lines.push(data);
2821
- }
2822
- });
2823
- let lineLength = GeometryUtils.pointsDistance(x1, y1, x2, y2);
2824
- self.setState({ lineLength: lineLength });
2825
- let cameraRect = handleCamRect(
2826
- self.width,
2827
- self.height,
2828
- ceilHeight,
2829
- lineLength
2830
- );
2831
- camera = new Three.OrthographicCamera(
2832
- -cameraRect.width / 2,
2833
- cameraRect.width / 2,
2834
- cameraRect.height / 2,
2835
- -cameraRect.height / 2,
2836
- 1,
2837
- 1000
2838
- );
2839
- const angle = Math.atan((y1 - y2) / (x1 - x2));
2840
- let r = 300;
2841
- if (Math.abs(angle) === Math.PI / 2) {
2842
- camera.position.set(
2843
- (x1 + x2) / 2 - Math.sin(angle) * r,
2844
- ceilHeight / 2,
2845
- -((y1 + y2) / 2 - Math.cos(angle) * r)
2846
- );
2847
- camera.rotation.set(0, -angle, 0);
2848
- } else if (vertex0.x > vertex1.x) {
2849
- camera.position.set(
2850
- (x1 + x2) / 2 + Math.sin(angle + Math.PI) * r,
2851
- ceilHeight / 2,
2852
- -((y1 + y2) / 2 - Math.cos(angle + Math.PI) * r)
2853
- );
2854
- camera.rotation.set(0, angle + Math.PI, 0);
2855
- } else {
2856
- camera.position.set(
2857
- (x1 + x2) / 2 + Math.sin(angle) * r,
2858
- ceilHeight / 2,
2859
- -((y1 + y2) / 2 - Math.cos(angle) * r)
2860
- );
2861
- camera.rotation.set(0, angle, 0);
2862
- }
2863
- } else {
2864
- const aspectRatio = self.width / self.height;
2865
- camera = new Three.PerspectiveCamera(45, aspectRatio, 1, 300000);
2866
- camera.position.set(0, 0, 1);
2867
- }
2868
- camera.layers.enable(1);
2869
-
2870
- function loadENV() {
2871
- new RGBELoader().load(
2872
- '/assets/brown_photostudio_02_1k.hdr',
2873
- function (texture) {
2874
- texture.mapping = Three.EquirectangularReflectionMapping;
2875
- scene3D.environment = texture;
2876
- texture.dispose();
2877
- }
2878
- );
2879
- }
2880
- // Camera Controls
2881
- if (!isElevationView(state.mode)) {
2882
- cameraControls = new CameraControls(camera, self.renderer.domElement);
2883
- cameraControls.dollyToCursor = true;
2884
- cameraControls.infinityDolly = true;
2885
- cameraControls.minDistance = 50;
2886
- cameraControls.maxDistance = Infinity;
2887
- cameraControls.zoomSpeed = 1;
2888
-
2889
- loadENV();
2890
- }
2891
-
2892
- scene3D.add(planData.plan);
2893
- scene3D.add(planData.grid);
2894
- scene3D.add(camera);
2895
- if (isElevationView(state.mode)) {
2896
- planData.cam.add(camera);
2897
- scene3D.add(planData.cam);
2898
- } else {
2899
- pivot = new Three.Object3D();
2900
- pivot.add(camera);
2901
- scene3D.add(pivot);
2902
- }
2903
-
2904
- // LIGHT
2905
-
2906
- let light = new Three.AmbientLight(0xbfbfbf, 0.9); // soft white light
2907
- }
2908
-
2909
- function render() {
2910
- const delta = clock.getDelta(); // Get time delta for smooth updates
2911
- if (!isElevationView(state.mode)) cameraControls.update(delta);
2912
- for (let i = 0; i < lights.length; i++) {
2913
- lights[i].light.position.set(
2914
- planData.plan.position.x + lights[i].x,
2915
- planData.plan.position.y + lights[i].height - 10,
2916
- planData.plan.position.z - lights[i].y
2917
- );
2918
- lights[i].target.position.set(
2919
- planData.plan.position.x + lights[i].x,
2920
- planData.plan.position.y,
2921
- planData.plan.position.z - lights[i].y
2922
- );
2923
- }
2924
-
2925
- camera.updateMatrix();
2926
- camera.updateMatrixWorld();
2927
-
2928
- for (let elemID in planData.sceneGraph.LODs) {
2929
- planData.sceneGraph.LODs[elemID].update(camera);
2930
- }
2931
- if (snapBox !== null) {
2932
- if (snapAnimI >= 15) {
2933
- if ('x' in targetPoint)
2934
- snapBox.position.set(
2935
- targetPoint.x,
2936
- snapBox.position.y,
2937
- targetPoint.z
2938
- );
2939
- snapFlag = false;
2940
- t_i++;
2941
- } else {
2942
- if (snapAnimI == 0) {
2943
- targetCRotation =
2944
- ((((targetRot / 180) * Math.PI - snapBox.rotation.y + Math.PI) *
2945
- 180) /
2946
- Math.PI) %
2947
- 360;
2948
- if (targetCRotation > 180) targetCRotation -= 360;
2949
- if (targetCRotation < -180) targetCRotation += 360;
2950
- targetCRotation = (targetCRotation / 180) * Math.PI;
2951
- }
2952
- if (snapAnimI < 10) {
2953
- snapBox.rotateY(targetCRotation / 10);
2954
- } else {
2955
- snapBox.position.set(
2956
- snapBox.position.clone().x - targetUVec.x / 10,
2957
- snapBox.position.clone().y - targetUVec.y / 10,
2958
- snapBox.position.clone().z - targetUVec.z / 10
2959
- );
2960
- }
2961
- snapAnimI++;
2962
- }
2963
- }
2964
-
2965
- if (t_i === 20) {
2966
- //stop snap after 5s
2967
- removeSnapBox();
2968
- }
2969
-
2970
- // hide hole if wall is not visible
2971
- let layerID = self.props.state.scene.selectedLayer;
2972
- let layer = self.props.state.scene.layers.get(layerID);
2973
- layer.holes.forEach(data => {
2974
- let line = planData.sceneGraph.layers[layerID].lines[data.line];
2975
- let hole = planData.sceneGraph.layers[layerID].holes[data.id];
2976
-
2977
- if (line instanceof Three.Object3D && !line.isMesh) {
2978
- line = line.children[0].children[0];
2979
- // index(faces) of the line
2980
- const indexAttribute = line.geometry.getIndex();
2981
- const firstFaceIndices = undefined;
2982
- if (indexAttribute && indexAttribute.length > 0) {
2983
- firstFaceIndices = [
2984
- indexAttribute.getX(0),
2985
- indexAttribute.getX(1),
2986
- indexAttribute.getX(2)
2987
- ];
2988
- }
2989
-
2990
- if (firstFaceIndices == undefined) return;
2991
- // normal vector of the line
2992
- const normalAttribute = line.geometry.attributes.normal;
2993
- let normal = new Three.Vector3()
2994
- .fromBufferAttribute(normalAttribute, 0)
2995
- .clone();
2996
- normal = normal
2997
- .applyMatrix4(line.matrixWorld)
2998
- .sub(new Three.Vector3(0, 0, 0).applyMatrix4(line.matrixWorld))
2999
- .normalize();
3000
- let vertices = layer.lines.get(data.line).vertices.toJS();
3001
- let vertex1 = layer.vertices.get(vertices[0]);
3002
- let vertex2 = layer.vertices.get(vertices[1]);
3003
- let cX = (vertex1.x + vertex2.x) / 2;
3004
- let cY = (vertex1.y + vertex2.y) / 2;
3005
- let posVec = new Three.Vector3(cX, 150, -cY);
3006
- posVec = posVec.add(planData.plan.position.clone());
3007
- let cameraLine = camera.position.clone().sub(posVec);
3008
- if (hole) {
3009
- hole.traverse(child => {
3010
- if (child.isMesh) {
3011
- child.material.opacity = cameraLine.dot(normal) > 0 ? 1 : 0;
3012
- child.material.transparent =
3013
- cameraLine.dot(normal) > 0 ? false : true;
3014
- child.material.needsUpdate = true;
3015
- }
3016
- });
3017
- }
3018
- }
3019
- // /////////////////////////////////////
3020
- });
3021
-
3022
- if (scene3D && camera) {
3023
- if (planData.elevationGroup) {
3024
- planData.elevationGroup.visible = true;
3025
- self.renderer.render(scene3D, camera);
3026
-
3027
- self.renderer.autoClearDepth = false;
3028
- planData.elevationGroup.visible = false;
3029
- // console.log('---originalScene:', scene3D)
3030
- self.renderer.render(scene3D, camera);
3031
- self.renderer.autoClearDepth = true;
3032
- } else {
3033
- self.renderer.render(scene3D, camera);
3034
- }
3035
- }
3036
- self.renderingID = requestAnimationFrame(render);
3037
-
3038
- if (self.props.downloadFlag) {
3039
- if (self.state.waitForRender > 0) {
3040
- self.state.waitForRender++;
3041
- if (self.state.waitForRender > 2) {
3042
- self.setState({ isLoading: false, waitForRender: 0 });
3043
- if (isElevationView(self.props.state.mode)) {
3044
- setTimeout(() => {
3045
- self.props.setIsLoadingElevation('front', false);
3046
- }, 100);
3047
- }
3048
- self.renderer.domElement.style.display = 'block';
3049
- }
3050
- }
3051
- }
3052
- }
3053
-
3054
- //
3055
-
3056
- window.planData = planData;
3057
- this.planData = planData;
3058
- this.camera = camera;
3059
- this.cameraControls = cameraControls;
3060
- this.scene3D = scene3D;
3061
-
3062
- prepareSnap(layer);
3063
- }
3064
-
3065
- componentWillUnmount() {
3066
- cancelAnimationFrame(this.renderingID);
3067
-
3068
- if (!isElevationView(this.props.state.mode)) {
3069
- if (this.cameraControls !== undefined) this.cameraControls.dispose();
3070
- }
3071
-
3072
- if (!this.props.downloadFlag) {
3073
- this.renderer.domElement.removeEventListener(
3074
- 'mousedown',
3075
- this.mouseDownEvent
3076
- );
3077
- this.renderer.domElement.removeEventListener(
3078
- 'mouseup',
3079
- this.mouseUpEvent
3080
- );
3081
- }
3082
-
3083
- disposeScene(this.scene3D);
3084
- this.scene3D.remove(this.planData.plan);
3085
- this.scene3D.remove(this.planData.grid);
3086
-
3087
- this.scene3D = null;
3088
- this.planData = null;
3089
- this.camera = null;
3090
- this.cameraControls = null;
3091
- this.renderer.renderLists.dispose();
3092
- }
3093
-
3094
- componentWillReceiveProps(nextProps) {
3095
- if (
3096
- (this.props.downloadFlag &&
3097
- diff(this.props.state, nextProps.state).toJS().length == 0) ||
3098
- isEmpty(nextProps.state.scene)
3099
- )
3100
- return;
3101
-
3102
- let { width, height } = nextProps;
3103
- let selectedLayer = nextProps.state.getIn([
3104
- 'scene',
3105
- 'layers',
3106
- nextProps.state.scene.selectedLayer
3107
- ]);
3108
- let ceilHeight = convert(selectedLayer.ceilHeight)
3109
- .from(selectedLayer.unit)
3110
- .to(nextProps.state.scene.unit);
3111
- let actions = {
3112
- areaActions: this.context.areaActions,
3113
- holesActions: this.context.holesActions,
3114
- itemsActions: this.context.itemsActions,
3115
- sceneActions: this.context.sceneActions,
3116
- linesActions: this.context.linesActions,
3117
- projectActions: this.context.projectActions,
3118
- catalog: this.context.catalog
3119
- };
3120
-
3121
- let isLoadingCabinet = nextProps.state.scene.isLoadingCabinet;
3122
- if (this.state.isLoadingCabinet !== isLoadingCabinet)
3123
- this.setState({ isLoadingCabinet });
3124
-
3125
- this.width = width;
3126
- this.height = height;
3127
-
3128
- let allLines;
3129
- let allLineRects;
3130
- let allItemRect;
3131
-
3132
- // handle camera setting
3133
- switch (this.props.state.mode) {
3134
- case MODE_ELEVATION_VIEW:
3135
- // when Elevation mode (camera: Orthographic)
3136
- let cameraRect = handleCamRect(
3137
- width,
3138
- height,
3139
- ceilHeight,
3140
- this.state.lineLength
3141
- );
3142
- // camera size
3143
- this.camera.left = -cameraRect.width / 2;
3144
- this.camera.right = cameraRect.width / 2;
3145
- this.camera.top = cameraRect.height / 2;
3146
- this.camera.bottom = -cameraRect.height / 2;
3147
- //camera position
3148
- this.camera.position.y = ceilHeight / 2;
3149
- break;
3150
- case MODE_3D_VIEW:
3151
- // when 3D mode (camera: Perspective)
3152
- this.camera.aspect = width / height;
3153
- break;
3154
- }
3155
- this.camera.updateProjectionMatrix();
3156
-
3157
- let data = nextProps.state.scene;
3158
- let layer = data.getIn(['layers', data.selectedLayer]);
3159
- const self = this;
3160
-
3161
- function implementBacksplash() {
3162
- if (isElevationView(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode
3163
- let allItems = GeometryUtils.getAllItemSpecified(
3164
- nextProps.state.scene,
3165
- actions.catalog,
3166
- BASE_CABINET_LAYOUTPOS
3167
- );
3168
- let i,
3169
- items = [];
3170
- for (i = 0; i < allItems.others.length; i++)
3171
- items.push(allItems.others[i]);
3172
- if (allItems.cur) items.push(allItems.cur);
3173
-
3174
- for (i = 0; i < items.length; i++) {
3175
- let calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);
3176
- let visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);
3177
- actions.itemsActions.setBacksplashVisible(
3178
- items[i].itemInfo.id,
3179
- visible
3180
- );
3181
-
3182
- createBacksplash(
3183
- items[i],
3184
- nextProps.state.scene.getIn([
3185
- 'layers',
3186
- nextProps.state.scene.selectedLayer
3187
- ]),
3188
- planData,
3189
- nextProps.state.scene
3190
- );
3191
- }
3192
- }
3193
- function implementWarningBox() {
3194
- let holeItems = GeometryUtils.getHoleItems(layer);
3195
- let i,
3196
- items = [];
3197
- for (i = 0; i < allItemRect.others.length; i++)
3198
- items.push(allItemRect.others[i]);
3199
- if (allItemRect.cur) items.push(allItemRect.cur);
3200
-
3201
- for (i = 0; i < items.length; i++)
3202
- checkCabinetOverlap(
3203
- { x: items[i].pos.x, y: items[i].pos.y },
3204
- items[i],
3205
- holeItems,
3206
- planData
3207
- );
3208
- }
3209
-
3210
- let prepareSnapSpec = layer => {
3211
- allLines = GeometryUtils.getAllLines(layer);
3212
- allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);
3213
- allItemRect = GeometryUtils.getAllItemSpecified(
3214
- this.props.state.scene,
3215
- actions.catalog,
3216
- [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]
3217
- );
3218
- };
3219
-
3220
- let layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);
3221
-
3222
- if (this.state.showflag) {
3223
- prepareSnapSpec(layer);
3224
- implementBacksplash();
3225
- implementWarningBox();
3226
- this.setState({ showflag: false });
3227
- }
3228
- if (
3229
- nextProps.state.scene !== this.props.state.scene ||
3230
- (nextProps.state.doorStyle &&
3231
- nextProps.state.doorStyle.get('name') !==
3232
- this.props.state.doorStyle.get('name'))
3233
- ) {
3234
- let changedValues = diff(this.props.state.scene, nextProps.state.scene);
3235
- prepareSnapSpec(layer);
3236
- if (
3237
- nextProps.state.doorStyle &&
3238
- nextProps.state.doorStyle.get('name') ===
3239
- this.props.state.doorStyle.get('name')
3240
- ) {
3241
- self.setState({ isLoading: true });
3242
-
3243
- if (self.props.downloadFlag) {
3244
- self.setState({ waitForRender: 0 });
3245
- switch (self.props.state.mode) {
3246
- case MODE_ELEVATION_VIEW:
3247
- self.props.setIsLoadingElevation('front', true);
3248
- break;
3249
- case MODE_3D_VIEW:
3250
- self.props.setIsLoading3D(true);
3251
- break;
3252
- }
3253
- }
3254
-
3255
- self.renderer.domElement.style.display = 'none';
3256
- }
3257
- if (nextProps.state.scene.showfg == true) {
3258
- implementBacksplash();
3259
- implementWarningBox();
3260
- } else {
3261
- deleteSpecifiedMeshObjects('TransformBox');
3262
- }
3263
- let { toolObj, angleObj } = this.state;
3264
- var { promise } = updateScene(
3265
- this.planData,
3266
- nextProps.state.scene,
3267
- this.props.state.scene,
3268
- changedValues.toJS(),
3269
- actions,
3270
- this.context.catalog,
3271
- nextProps.state.mode,
3272
- toolObj,
3273
- angleObj,
3274
- nextProps.state.draggingSupport
3275
- );
3276
- self.setState();
3277
- promise.then(p1Value => {
3278
- self.setState({ isLoading: false });
3279
- self.props.downloadFlag && self.setState({ waitForRender: 1 });
3280
- self.renderer.domElement.style.display = 'block';
3281
- });
3282
- if (nextProps.state.getIn(['scene', 'isEndDragging'])) {
3283
- nextProps.state.setIn(['scene', 'isEndDragging'], false);
3284
- }
3285
- }
3286
- this.renderer.setSize(width, height);
3287
- }
3288
-
3289
- render() {
3290
- const { isLoading, isLoadingCabinet } = this.state;
3291
- if (isLoading) {
3292
- if (this.props.downloadFlag) {
3293
- this.renderer.domElement.style.display = 'none';
3294
- return (
3295
- <div
3296
- style={{
3297
- alignItems: ' center',
3298
- width: this.props.width,
3299
- height: this.props.height,
3300
- display: 'inline-flex',
3301
- justifyContent: 'center'
3302
- }}
3303
- >
3304
- <img
3305
- style={{
3306
- width: '70px',
3307
- height: '70px',
3308
- animation: 'spin 2s linear infinite'
3309
- }}
3310
- src={'/assets/img/loading_large.gif'}
3311
- alt="img"
3312
- />
3313
- </div>
3314
- );
3315
- } else {
3316
- document.getElementById('front') &&
3317
- (document.getElementById('front').style.display = 'none');
3318
- document.getElementById('error').style.display = 'none';
3319
- this.renderer.domElement.style.display = 'none';
3320
- return (
3321
- <div style={{ textAlign: 'center', width: '100%' }}>
3322
- <img
3323
- style={{ animation: 'spin 2s linear infinite', marginTop: `22%` }}
3324
- src={'/assets/img/loading_large.gif'}
3325
- alt="img"
3326
- />
3327
- </div>
3328
- );
3329
- }
3330
- } else if (isLoadingCabinet) {
3331
- this.renderer.domElement.style.pointerEvents = 'none';
3332
- document.getElementById('front') &&
3333
- (document.getElementById('front').style.display = 'none');
3334
- this.renderer.domElement.style.opacity = '0.4';
3335
- return (
3336
- <div style={{ textAlign: 'center', width: '100%' }}>
3337
- <img
3338
- style={{
3339
- animation: 'spin 2s linear infinite',
3340
- position: `absolute`,
3341
- top: `50%`
3342
- }}
3343
- src={'/assets/img/loading_large.gif'}
3344
- alt="img"
3345
- />
3346
- </div>
3347
- );
3348
- } else {
3349
- !this.props.downloadFlag &&
3350
- (document.getElementById('error').style.display = 'block');
3351
- this.renderer.domElement.style.pointerEvents = 'auto';
3352
- this.renderer.domElement.style.opacity = '1';
3353
- !this.props.downloadFlag &&
3354
- document.getElementById('front') &&
3355
- (document.getElementById('front').style.display = 'block');
3356
- return React.createElement('div', { ref: 'canvasWrapper' });
3357
- }
3358
- }
3359
- }
3360
-
3361
- Scene3DViewer.propTypes = {
3362
- state: PropTypes.object.isRequired,
3363
- width: PropTypes.number.isRequired,
3364
- height: PropTypes.number.isRequired,
3365
- replaceCabinet: PropTypes.func.isRequired
3366
- };
3367
-
3368
- Scene3DViewer.contextTypes = {
3369
- areaActions: PropTypes.object.isRequired,
3370
- holesActions: PropTypes.object.isRequired,
3371
- itemsActions: PropTypes.object.isRequired,
3372
- linesActions: PropTypes.object.isRequired,
3373
- sceneActions: PropTypes.object.isRequired,
3374
- projectActions: PropTypes.object.isRequired,
3375
- catalog: PropTypes.object
3376
- };