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

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 (1092) hide show
  1. package/package.json +34 -41
  2. package/src/@history.js +3 -0
  3. package/src/AppContext.js +5 -0
  4. package/src/KitchenConfigurator.jsx +1517 -0
  5. package/src/KitchenConfiguratorApp.jsx +443 -0
  6. package/src/actions/area-actions.js +15 -0
  7. package/src/actions/export.js +38 -0
  8. package/src/actions/groups-actions.js +102 -0
  9. package/src/actions/holes-actions.js +152 -0
  10. package/src/actions/items-actions.js +393 -0
  11. package/src/actions/lines-actions.js +103 -0
  12. package/src/actions/project-actions.js +391 -0
  13. package/src/actions/scene-actions.js +44 -0
  14. package/src/actions/user-actions.js +75 -0
  15. package/src/actions/vertices-actions.js +34 -0
  16. package/src/actions/viewer2d-actions.js +79 -0
  17. package/src/actions/viewer3d-actions.js +32 -0
  18. package/src/catalog/areas/area/planner-element.jsx +43 -0
  19. package/src/catalog/catalog.js +258 -0
  20. package/src/catalog/factories/area-factory-3d.js +252 -0
  21. package/src/catalog/factories/area-factory.jsx +102 -0
  22. package/src/catalog/factories/export.js +9 -0
  23. package/src/catalog/factories/wall-factory-3d.js +296 -0
  24. package/src/catalog/factories/wall-factory.jsx +321 -0
  25. package/src/catalog/holes/door-closet/planner-element.jsx +251 -0
  26. package/src/catalog/holes/door-double/planner-element.jsx +391 -0
  27. package/src/catalog/holes/door-exterior/planner-element.jsx +245 -0
  28. package/src/catalog/holes/door-interior/planner-element.jsx +256 -0
  29. package/src/catalog/holes/door-panic/planner-element.jsx +594 -0
  30. package/src/catalog/holes/door-panic-double/planner-element.jsx +574 -0
  31. package/src/catalog/holes/door-sliding/planner-element.jsx +256 -0
  32. package/src/catalog/holes/doorway-framed/planner-element.jsx +169 -0
  33. package/src/catalog/holes/doorway-frameless/planner-element.jsx +116 -0
  34. package/src/catalog/holes/window-clear/planner-element.jsx +181 -0
  35. package/src/catalog/holes/window-cross/planner-element.jsx +180 -0
  36. package/src/catalog/holes/window-double-hung/planner-element.jsx +366 -0
  37. package/src/catalog/holes/window-vertical/planner-element.jsx +290 -0
  38. package/src/catalog/lines/wall/planner-element.jsx +73 -0
  39. package/src/catalog/molding/molding-dcm/planner-element.jsx +35 -0
  40. package/src/catalog/molding/molding-fbm/planner-element.jsx +35 -0
  41. package/src/catalog/molding/molding-lrm/planner-element.jsx +35 -0
  42. package/src/catalog/properties/export.js +33 -0
  43. package/src/catalog/properties/property-checkbox.jsx +123 -0
  44. package/src/catalog/properties/property-color.jsx +52 -0
  45. package/src/catalog/properties/property-enum.jsx +87 -0
  46. package/src/catalog/properties/property-hidden.jsx +22 -0
  47. package/src/catalog/properties/property-lenght-measure.jsx +113 -0
  48. package/src/catalog/properties/property-length-measure.jsx +129 -0
  49. package/src/catalog/properties/property-length-measure_hole.jsx +110 -0
  50. package/src/catalog/properties/property-number.jsx +63 -0
  51. package/src/catalog/properties/property-read-only.jsx +37 -0
  52. package/src/catalog/properties/property-string.jsx +59 -0
  53. package/src/catalog/properties/property-toggle.jsx +51 -0
  54. package/src/catalog/properties/shared-property-style.js +13 -0
  55. package/src/catalog/utils/FuseUtils.js +61 -0
  56. package/src/catalog/utils/exporter.js +173 -0
  57. package/src/catalog/utils/geom-utils.js +301 -0
  58. package/src/catalog/utils/item-loader.jsx +2122 -0
  59. package/src/catalog/utils/load-obj.js +113 -0
  60. package/src/catalog/utils/mtl-loader.js +462 -0
  61. package/src/catalog/utils/obj-loader.js +544 -0
  62. package/src/class/FuseUtils.js +61 -0
  63. package/src/class/area.js +159 -0
  64. package/src/class/export.js +37 -0
  65. package/src/class/group.js +565 -0
  66. package/src/class/guide.js +44 -0
  67. package/src/class/hole.js +1359 -0
  68. package/src/class/item.js +2050 -0
  69. package/src/class/layer.js +926 -0
  70. package/src/class/line.js +1780 -0
  71. package/src/class/project.js +875 -0
  72. package/src/class/vertex.js +409 -0
  73. package/src/components/atoms/Snackbar/index.jsx +43 -0
  74. package/src/components/atoms/radio-button/index.jsx +20 -0
  75. package/src/components/atoms/radio-button/styles.js +56 -0
  76. package/src/components/button/MainButton.jsx +157 -0
  77. package/src/components/button/ToggleMeasureButton.jsx +65 -0
  78. package/src/components/catalog-view/catalog-breadcrumb.jsx +53 -0
  79. package/src/components/catalog-view/catalog-item.jsx +229 -0
  80. package/src/components/catalog-view/catalog-list.jsx +173 -0
  81. package/src/components/catalog-view/catalog-page-item.jsx +110 -0
  82. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +80 -0
  83. package/src/components/configurator/custom-configurator.jsx +77 -0
  84. package/src/components/configurator/project-configurator.jsx +120 -0
  85. package/src/components/content.jsx +136 -0
  86. package/src/components/export.js +36 -0
  87. package/src/components/firstsetting/button/styles.js +223 -0
  88. package/src/components/firstsetting/export.js +9 -0
  89. package/src/components/firstsetting/firstsetting-content-button.jsx +198 -0
  90. package/src/components/firstsetting/firstsetting-toggle-button.jsx +101 -0
  91. package/src/components/firstsetting/firstsetting.jsx +814 -0
  92. package/src/components/footerbar/button/ControlButton.jsx +43 -0
  93. package/src/components/footerbar/button/DirectionButton.jsx +54 -0
  94. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +36 -0
  95. package/src/components/footerbar/button/ToggleButton.jsx +58 -0
  96. package/src/components/footerbar/button/ToggleConvertButton.jsx +48 -0
  97. package/src/components/footerbar/button/ToggleMeasureButton.jsx +33 -0
  98. package/src/components/footerbar/button/styles.js +217 -0
  99. package/src/components/footerbar/export.js +9 -0
  100. package/src/components/footerbar/footer-content-button.jsx +198 -0
  101. package/src/components/footerbar/footer-toggle-button.jsx +101 -0
  102. package/src/components/footerbar/footerbar.jsx +1103 -0
  103. package/src/components/footerbar/styles.js +263 -0
  104. package/src/components/header/button/MenuButton.jsx +46 -0
  105. package/src/components/header/button/SaveButton.jsx +54 -0
  106. package/src/components/header/button/styles.js +181 -0
  107. package/src/components/header/export.js +5 -0
  108. package/src/components/header/header.jsx +631 -0
  109. package/src/components/header/styles.js +320 -0
  110. package/src/components/login/Login.js +77 -0
  111. package/src/components/login/LoginForm/index.js +108 -0
  112. package/src/components/login/Register.js +83 -0
  113. package/src/components/login/RegisterForm/index.js +171 -0
  114. package/src/components/login/jwtService.js +201 -0
  115. package/src/components/molecules/slider/index.jsx +15 -0
  116. package/src/components/molecules/slider/styles.js +0 -0
  117. package/src/components/myprojects/export.js +5 -0
  118. package/src/components/myprojects/index.jsx +445 -0
  119. package/src/components/myprojects/styles.js +241 -0
  120. package/src/components/sidebar/custom-accordion.jsx +48 -0
  121. package/src/components/sidebar/export.js +15 -0
  122. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +73 -0
  123. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +101 -0
  124. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +149 -0
  125. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +316 -0
  126. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +108 -0
  127. package/src/components/sidebar/panel-element-editor/element-editor.jsx +1070 -0
  128. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  129. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +104 -0
  130. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +155 -0
  131. package/src/components/sidebar/panel-group-editor.jsx +272 -0
  132. package/src/components/sidebar/panel-groups.jsx +310 -0
  133. package/src/components/sidebar/panel-guides.jsx +192 -0
  134. package/src/components/sidebar/panel-layer-elements.jsx +298 -0
  135. package/src/components/sidebar/panel-layers.jsx +381 -0
  136. package/src/components/sidebar/panel.jsx +71 -0
  137. package/src/components/sidebar/sidebar.jsx +106 -0
  138. package/src/components/sidebar/toolbar-panel.jsx +139 -0
  139. package/src/components/sign/export.js +7 -0
  140. package/src/components/sign/main/index.jsx +523 -0
  141. package/src/components/sign/main/styles.js +163 -0
  142. package/src/components/style/button.jsx +95 -0
  143. package/src/components/style/cancel-button.jsx +20 -0
  144. package/src/components/style/content-container.jsx +29 -0
  145. package/src/components/style/content-title.jsx +20 -0
  146. package/src/components/style/delete-button.jsx +23 -0
  147. package/src/components/style/export.jsx +48 -0
  148. package/src/components/style/form-block.jsx +13 -0
  149. package/src/components/style/form-color-input.jsx +27 -0
  150. package/src/components/style/form-label.jsx +15 -0
  151. package/src/components/style/form-number-input.jsx +196 -0
  152. package/src/components/style/form-number-input_2.jsx +191 -0
  153. package/src/components/style/form-select.jsx +38 -0
  154. package/src/components/style/form-slider.jsx +36 -0
  155. package/src/components/style/form-submit-button.jsx +23 -0
  156. package/src/components/style/form-text-input.jsx +65 -0
  157. package/src/components/toolbar/button/ControlButton.jsx +41 -0
  158. package/src/components/toolbar/button/DirectionButton.jsx +34 -0
  159. package/src/components/toolbar/button/RightButton.jsx +103 -0
  160. package/src/components/toolbar/button/ToggleButton.jsx +41 -0
  161. package/src/components/toolbar/button/index.jsx +55 -0
  162. package/src/components/toolbar/button/styles.js +127 -0
  163. package/src/components/toolbar/components/DoorStyleMenu.jsx +103 -0
  164. package/src/components/toolbar/components/Pricing.jsx +126 -0
  165. package/src/components/toolbar/components/ReviewForQuote.jsx +635 -0
  166. package/src/components/toolbar/export.js +21 -0
  167. package/src/components/toolbar/main/Alert.js +122 -0
  168. package/src/components/toolbar/main/TakePictureModal.jsx +104 -0
  169. package/src/components/toolbar/main/confirm-popup.jsx +99 -0
  170. package/src/components/toolbar/main/index.jsx +5627 -0
  171. package/src/components/toolbar/main/myComponents.js +123 -0
  172. package/src/components/toolbar/main/styles.js +696 -0
  173. package/src/components/toolbar/plugin-item.jsx +123 -0
  174. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +73 -0
  175. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +102 -0
  176. package/src/components/toolbar/popup/appliance/index.jsx +83 -0
  177. package/src/components/toolbar/popup/autosaveprompt/index.jsx +150 -0
  178. package/src/components/toolbar/popup/autosaveprompt/styles.js +40 -0
  179. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +73 -0
  180. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +119 -0
  181. package/src/components/toolbar/popup/cabinet/index.jsx +85 -0
  182. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +63 -0
  183. package/src/components/toolbar/popup/doorStyle/index.jsx +71 -0
  184. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +139 -0
  185. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +2 -0
  186. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +157 -0
  187. package/src/components/toolbar/popup/downloadsummary/index.jsx +643 -0
  188. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +51 -0
  189. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +175 -0
  190. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +283 -0
  191. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +2257 -0
  192. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +93 -0
  193. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +132 -0
  194. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +2198 -0
  195. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +152 -0
  196. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +149 -0
  197. package/src/components/toolbar/popup/downloadsummary/styles.js +453 -0
  198. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +34 -0
  199. package/src/components/toolbar/popup/finishingtouch/index.jsx +58 -0
  200. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +112 -0
  201. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +116 -0
  202. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +101 -0
  203. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +254 -0
  204. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +86 -0
  205. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +109 -0
  206. package/src/components/toolbar/popup/floorplan/index.jsx +60 -0
  207. package/src/components/toolbar/popup/index.jsx +241 -0
  208. package/src/components/toolbar/popup/newproject/index.jsx +59 -0
  209. package/src/components/toolbar/popup/newproject/styles.js +41 -0
  210. package/src/components/toolbar/popup/product/appliance.jsx +54 -0
  211. package/src/components/toolbar/popup/product/cabinetproduct.jsx +15 -0
  212. package/src/components/toolbar/popup/product/doorstyle.jsx +58 -0
  213. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +47 -0
  214. package/src/components/toolbar/popup/product/floor.jsx +36 -0
  215. package/src/components/toolbar/popup/product/floorproduct.jsx +42 -0
  216. package/src/components/toolbar/popup/product/index.jsx +36 -0
  217. package/src/components/toolbar/popup/product/primary.jsx +77 -0
  218. package/src/components/toolbar/popup/product/productline.jsx +93 -0
  219. package/src/components/toolbar/popup/product/reviewItem.jsx +427 -0
  220. package/src/components/toolbar/popup/product/reviewMolding.jsx +310 -0
  221. package/src/components/toolbar/popup/product/styles.js +260 -0
  222. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +146 -0
  223. package/src/components/toolbar/popup/savedesign/index.jsx +495 -0
  224. package/src/components/toolbar/popup/savedesign/styles.js +151 -0
  225. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +87 -0
  226. package/src/components/toolbar/popup/styles.js +909 -0
  227. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +192 -0
  228. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +96 -0
  229. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +54 -0
  230. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +25 -0
  231. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +116 -0
  232. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +38 -0
  233. package/src/components/toolbar/popup/submitforquote/index.jsx +698 -0
  234. package/src/components/toolbar/popup/submitforquote/styles.js +294 -0
  235. package/src/components/toolbar/popup/submitprompt/index.jsx +89 -0
  236. package/src/components/toolbar/popup/submitprompt/styles.js +42 -0
  237. package/src/components/toolbar/toolbar-button.jsx +90 -0
  238. package/src/components/toolbar/toolbar-load-button.jsx +36 -0
  239. package/src/components/toolbar/toolbar-save-button.jsx +32 -0
  240. package/src/components/tutorial-view/Modal.jsx +584 -0
  241. package/src/components/tutorial-view/styles.js +65 -0
  242. package/src/components/viewer2d/area.jsx +98 -0
  243. package/src/components/viewer2d/export.js +48 -0
  244. package/src/components/viewer2d/grids/grid-horizontal-streak.jsx +40 -0
  245. package/src/components/viewer2d/grids/grid-streak.jsx +32 -0
  246. package/src/components/viewer2d/grids/grid-vertical-streak.jsx +41 -0
  247. package/src/components/viewer2d/grids/grids.jsx +30 -0
  248. package/src/components/viewer2d/group.jsx +57 -0
  249. package/src/components/viewer2d/item.jsx +618 -0
  250. package/src/components/viewer2d/layer.jsx +214 -0
  251. package/src/components/viewer2d/line.jsx +1358 -0
  252. package/src/components/viewer2d/ruler.jsx +136 -0
  253. package/src/components/viewer2d/rulerDist.jsx +192 -0
  254. package/src/components/viewer2d/rulerX.jsx +141 -0
  255. package/src/components/viewer2d/rulerY.jsx +138 -0
  256. package/src/components/viewer2d/scene.jsx +94 -0
  257. package/src/components/viewer2d/snap.jsx +118 -0
  258. package/src/components/viewer2d/state.jsx +77 -0
  259. package/src/components/viewer2d/utils.js +195 -0
  260. package/src/components/viewer2d/vertex.jsx +76 -0
  261. package/src/components/viewer2d/viewer2d.jsx +1830 -0
  262. package/src/components/viewer3d/camera-controls-module/camera-controls.module.js +3078 -0
  263. package/src/components/viewer3d/dcm.js +226 -0
  264. package/src/components/viewer3d/fbm.js +383 -0
  265. package/src/components/viewer3d/front3D.jsx +63 -0
  266. package/src/components/viewer3d/grid-creator.js +25 -0
  267. package/src/components/viewer3d/grids/grid-horizontal-streak.js +41 -0
  268. package/src/components/viewer3d/grids/grid-streak.js +34 -0
  269. package/src/components/viewer3d/grids/grid-vertical-streak.js +42 -0
  270. package/src/components/viewer3d/libs/first-person-controls.js +70 -0
  271. package/src/components/viewer3d/libs/helvetiker_regular.typeface.js +1265 -0
  272. package/src/components/viewer3d/libs/mtl-loader.js +462 -0
  273. package/src/components/viewer3d/libs/obj-loader.js +653 -0
  274. package/src/components/viewer3d/libs/orbit-controls.js +945 -0
  275. package/src/components/viewer3d/libs/pointer-lock-controls.js +67 -0
  276. package/src/components/viewer3d/lrm.js +358 -0
  277. package/src/components/viewer3d/model.js +830 -0
  278. package/src/components/viewer3d/pointer-lock-navigation.js +140 -0
  279. package/src/components/viewer3d/ruler-utils/itemRect.jsx +91 -0
  280. package/src/components/viewer3d/ruler-utils/layer3D.jsx +528 -0
  281. package/src/components/viewer3d/ruler-utils/ruler3D.jsx +218 -0
  282. package/src/components/viewer3d/ruler-utils/scene3D.jsx +87 -0
  283. package/src/components/viewer3d/ruler-utils/state3D.jsx +25 -0
  284. package/src/components/viewer3d/scene-creator.js +5169 -0
  285. package/src/components/viewer3d/three-memory-cleaner.js +65 -0
  286. package/src/components/viewer3d/viewer3d-first-person.js +395 -0
  287. package/src/components/viewer3d/viewer3d.js +3376 -0
  288. package/src/components/wizardstep/button/styles.js +677 -0
  289. package/src/components/wizardstep/export.js +5 -0
  290. package/src/components/wizardstep/index.jsx +1372 -0
  291. package/src/components/wizardstep/styles.js +688 -0
  292. package/src/components/wizardstep/wizardstep-content-button.jsx +198 -0
  293. package/src/components/wizardstep/wizardstep-toggle-button.jsx +101 -0
  294. package/src/constants.js +731 -0
  295. package/src/index.js +32 -0
  296. package/src/models.js +541 -0
  297. package/src/plugins/SVGLoader.js +1991 -0
  298. package/src/plugins/autosave.js +39 -0
  299. package/src/plugins/console-debugger.js +36 -0
  300. package/src/plugins/export.js +11 -0
  301. package/src/plugins/keyboard.js +194 -0
  302. package/src/reducers/areas-reducer.js +13 -0
  303. package/src/reducers/export.js +39 -0
  304. package/src/reducers/groups-reducer.js +73 -0
  305. package/src/reducers/holes-reducer.js +125 -0
  306. package/src/reducers/items-reducer.js +286 -0
  307. package/src/reducers/lines-reducer.js +96 -0
  308. package/src/reducers/project-reducer.js +239 -0
  309. package/src/reducers/reducer.js +59 -0
  310. package/src/reducers/scene-reducer.js +41 -0
  311. package/src/reducers/user-reducer.js +30 -0
  312. package/src/reducers/vertices-reducer.js +34 -0
  313. package/src/reducers/viewer2d-reducer.js +81 -0
  314. package/src/reducers/viewer3d-reducer.js +65 -0
  315. package/src/shared-style.js +72 -0
  316. package/src/translator/en.js +106 -0
  317. package/src/translator/it.js +80 -0
  318. package/src/translator/ru.js +80 -0
  319. package/src/translator/translator.js +81 -0
  320. package/src/utils/browser.js +36 -0
  321. package/src/utils/email-validator.js +5 -0
  322. package/src/utils/export.js +39 -0
  323. package/src/utils/geometry.js +2572 -0
  324. package/src/utils/get-edges-of-subgraphs.js +29 -0
  325. package/src/utils/graph-cycles.js +259 -0
  326. package/src/utils/graph-inner-cycles.js +49 -0
  327. package/src/utils/graph.js +147 -0
  328. package/src/utils/helper.js +431 -0
  329. package/src/utils/history.js +37 -0
  330. package/src/utils/id-broker.js +9 -0
  331. package/src/utils/logger.js +8 -0
  332. package/src/utils/math.js +51 -0
  333. package/src/utils/molding.js +973 -0
  334. package/src/utils/name-generator.js +5 -0
  335. package/src/utils/objects-utils.js +56 -0
  336. package/src/utils/phone-validator.js +4 -0
  337. package/src/utils/process-black-list.js +10 -0
  338. package/src/utils/react-if.jsx +20 -0
  339. package/src/utils/snap-scene.js +102 -0
  340. package/src/utils/snap.js +184 -0
  341. package/src/utils/threeCSG.es6.js +578 -0
  342. package/src/version.js +1 -0
  343. package/es/@history.js +0 -3
  344. package/es/@history.js.map +0 -1
  345. package/es/AppContext.js +0 -4
  346. package/es/AppContext.js.map +0 -1
  347. package/es/KitchenConfigurator.js +0 -1345
  348. package/es/KitchenConfigurator.js.map +0 -1
  349. package/es/KitchenConfiguratorApp.js +0 -532
  350. package/es/KitchenConfiguratorApp.js.map +0 -1
  351. package/es/actions/area-actions.js +0 -15
  352. package/es/actions/area-actions.js.map +0 -1
  353. package/es/actions/export.js +0 -26
  354. package/es/actions/export.js.map +0 -1
  355. package/es/actions/groups-actions.js +0 -90
  356. package/es/actions/groups-actions.js.map +0 -1
  357. package/es/actions/holes-actions.js +0 -120
  358. package/es/actions/holes-actions.js.map +0 -1
  359. package/es/actions/items-actions.js +0 -314
  360. package/es/actions/items-actions.js.map +0 -1
  361. package/es/actions/lines-actions.js +0 -83
  362. package/es/actions/lines-actions.js.map +0 -1
  363. package/es/actions/project-actions.js +0 -282
  364. package/es/actions/project-actions.js.map +0 -1
  365. package/es/actions/scene-actions.js +0 -34
  366. package/es/actions/scene-actions.js.map +0 -1
  367. package/es/actions/user-actions.js +0 -59
  368. package/es/actions/user-actions.js.map +0 -1
  369. package/es/actions/vertices-actions.js +0 -28
  370. package/es/actions/vertices-actions.js.map +0 -1
  371. package/es/actions/viewer2d-actions.js +0 -59
  372. package/es/actions/viewer2d-actions.js.map +0 -1
  373. package/es/actions/viewer3d-actions.js +0 -24
  374. package/es/actions/viewer3d-actions.js.map +0 -1
  375. package/es/catalog/areas/area/planner-element.js +0 -41
  376. package/es/catalog/areas/area/planner-element.js.map +0 -1
  377. package/es/catalog/catalog.js +0 -278
  378. package/es/catalog/catalog.js.map +0 -1
  379. package/es/catalog/factories/area-factory-3d.js +0 -183
  380. package/es/catalog/factories/area-factory-3d.js.map +0 -1
  381. package/es/catalog/factories/area-factory.js +0 -82
  382. package/es/catalog/factories/area-factory.js.map +0 -1
  383. package/es/catalog/factories/export.js +0 -8
  384. package/es/catalog/factories/export.js.map +0 -1
  385. package/es/catalog/factories/wall-factory-3d.js +0 -203
  386. package/es/catalog/factories/wall-factory-3d.js.map +0 -1
  387. package/es/catalog/factories/wall-factory.js +0 -269
  388. package/es/catalog/factories/wall-factory.js.map +0 -1
  389. package/es/catalog/holes/door-closet/planner-element.js +0 -223
  390. package/es/catalog/holes/door-closet/planner-element.js.map +0 -1
  391. package/es/catalog/holes/door-double/planner-element.js +0 -316
  392. package/es/catalog/holes/door-double/planner-element.js.map +0 -1
  393. package/es/catalog/holes/door-exterior/planner-element.js +0 -216
  394. package/es/catalog/holes/door-exterior/planner-element.js.map +0 -1
  395. package/es/catalog/holes/door-interior/planner-element.js +0 -228
  396. package/es/catalog/holes/door-interior/planner-element.js.map +0 -1
  397. package/es/catalog/holes/door-panic/planner-element.js +0 -504
  398. package/es/catalog/holes/door-panic/planner-element.js.map +0 -1
  399. package/es/catalog/holes/door-panic-double/planner-element.js +0 -464
  400. package/es/catalog/holes/door-panic-double/planner-element.js.map +0 -1
  401. package/es/catalog/holes/door-sliding/planner-element.js +0 -226
  402. package/es/catalog/holes/door-sliding/planner-element.js.map +0 -1
  403. package/es/catalog/holes/doorway-framed/planner-element.js +0 -146
  404. package/es/catalog/holes/doorway-framed/planner-element.js.map +0 -1
  405. package/es/catalog/holes/doorway-frameless/planner-element.js +0 -105
  406. package/es/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
  407. package/es/catalog/holes/window-clear/planner-element.js +0 -167
  408. package/es/catalog/holes/window-clear/planner-element.js.map +0 -1
  409. package/es/catalog/holes/window-cross/planner-element.js +0 -166
  410. package/es/catalog/holes/window-cross/planner-element.js.map +0 -1
  411. package/es/catalog/holes/window-double-hung/planner-element.js +0 -304
  412. package/es/catalog/holes/window-double-hung/planner-element.js.map +0 -1
  413. package/es/catalog/holes/window-vertical/planner-element.js +0 -277
  414. package/es/catalog/holes/window-vertical/planner-element.js.map +0 -1
  415. package/es/catalog/lines/wall/planner-element.js +0 -71
  416. package/es/catalog/lines/wall/planner-element.js.map +0 -1
  417. package/es/catalog/molding/molding-dcm/planner-element.js +0 -30
  418. package/es/catalog/molding/molding-dcm/planner-element.js.map +0 -1
  419. package/es/catalog/molding/molding-fbm/planner-element.js +0 -30
  420. package/es/catalog/molding/molding-fbm/planner-element.js.map +0 -1
  421. package/es/catalog/molding/molding-lrm/planner-element.js +0 -30
  422. package/es/catalog/molding/molding-lrm/planner-element.js.map +0 -1
  423. package/es/catalog/properties/export.js +0 -22
  424. package/es/catalog/properties/export.js.map +0 -1
  425. package/es/catalog/properties/property-checkbox.js +0 -72
  426. package/es/catalog/properties/property-checkbox.js.map +0 -1
  427. package/es/catalog/properties/property-color.js +0 -40
  428. package/es/catalog/properties/property-color.js.map +0 -1
  429. package/es/catalog/properties/property-enum.js +0 -56
  430. package/es/catalog/properties/property-enum.js.map +0 -1
  431. package/es/catalog/properties/property-hidden.js +0 -20
  432. package/es/catalog/properties/property-hidden.js.map +0 -1
  433. package/es/catalog/properties/property-lenght-measure.js +0 -102
  434. package/es/catalog/properties/property-lenght-measure.js.map +0 -1
  435. package/es/catalog/properties/property-length-measure.js +0 -86
  436. package/es/catalog/properties/property-length-measure.js.map +0 -1
  437. package/es/catalog/properties/property-length-measure_hole.js +0 -102
  438. package/es/catalog/properties/property-length-measure_hole.js.map +0 -1
  439. package/es/catalog/properties/property-number.js +0 -49
  440. package/es/catalog/properties/property-number.js.map +0 -1
  441. package/es/catalog/properties/property-read-only.js +0 -27
  442. package/es/catalog/properties/property-read-only.js.map +0 -1
  443. package/es/catalog/properties/property-string.js +0 -49
  444. package/es/catalog/properties/property-string.js.map +0 -1
  445. package/es/catalog/properties/property-toggle.js +0 -40
  446. package/es/catalog/properties/property-toggle.js.map +0 -1
  447. package/es/catalog/properties/shared-property-style.js +0 -15
  448. package/es/catalog/properties/shared-property-style.js.map +0 -1
  449. package/es/catalog/utils/FuseUtils.js +0 -83
  450. package/es/catalog/utils/FuseUtils.js.map +0 -1
  451. package/es/catalog/utils/exporter.js +0 -149
  452. package/es/catalog/utils/exporter.js.map +0 -1
  453. package/es/catalog/utils/geom-utils.js +0 -190
  454. package/es/catalog/utils/geom-utils.js.map +0 -1
  455. package/es/catalog/utils/item-loader.js +0 -1522
  456. package/es/catalog/utils/item-loader.js.map +0 -1
  457. package/es/catalog/utils/load-obj.js +0 -92
  458. package/es/catalog/utils/load-obj.js.map +0 -1
  459. package/es/catalog/utils/mtl-loader.js +0 -358
  460. package/es/catalog/utils/mtl-loader.js.map +0 -1
  461. package/es/catalog/utils/obj-loader.js +0 -477
  462. package/es/catalog/utils/obj-loader.js.map +0 -1
  463. package/es/class/FuseUtils.js +0 -83
  464. package/es/class/FuseUtils.js.map +0 -1
  465. package/es/class/area.js +0 -146
  466. package/es/class/area.js.map +0 -1
  467. package/es/class/export.js +0 -25
  468. package/es/class/export.js.map +0 -1
  469. package/es/class/group.js +0 -441
  470. package/es/class/group.js.map +0 -1
  471. package/es/class/guide.js +0 -63
  472. package/es/class/guide.js.map +0 -1
  473. package/es/class/hole.js +0 -931
  474. package/es/class/hole.js.map +0 -1
  475. package/es/class/item.js +0 -1888
  476. package/es/class/item.js.map +0 -1
  477. package/es/class/layer.js +0 -668
  478. package/es/class/layer.js.map +0 -1
  479. package/es/class/line.js +0 -1290
  480. package/es/class/line.js.map +0 -1
  481. package/es/class/project.js +0 -823
  482. package/es/class/project.js.map +0 -1
  483. package/es/class/vertex.js +0 -267
  484. package/es/class/vertex.js.map +0 -1
  485. package/es/components/atoms/Snackbar/index.js +0 -50
  486. package/es/components/atoms/Snackbar/index.js.map +0 -1
  487. package/es/components/atoms/radio-button/index.js +0 -26
  488. package/es/components/atoms/radio-button/index.js.map +0 -1
  489. package/es/components/atoms/radio-button/styles.js +0 -5
  490. package/es/components/atoms/radio-button/styles.js.map +0 -1
  491. package/es/components/button/MainButton.js +0 -92
  492. package/es/components/button/MainButton.js.map +0 -1
  493. package/es/components/button/ToggleMeasureButton.js +0 -56
  494. package/es/components/button/ToggleMeasureButton.js.map +0 -1
  495. package/es/components/catalog-view/catalog-breadcrumb.js +0 -53
  496. package/es/components/catalog-view/catalog-breadcrumb.js.map +0 -1
  497. package/es/components/catalog-view/catalog-item.js +0 -226
  498. package/es/components/catalog-view/catalog-item.js.map +0 -1
  499. package/es/components/catalog-view/catalog-list.js +0 -182
  500. package/es/components/catalog-view/catalog-list.js.map +0 -1
  501. package/es/components/catalog-view/catalog-page-item.js +0 -130
  502. package/es/components/catalog-view/catalog-page-item.js.map +0 -1
  503. package/es/components/catalog-view/catalog-turn-back-page-item.js +0 -106
  504. package/es/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
  505. package/es/components/configurator/custom-configurator.js +0 -94
  506. package/es/components/configurator/custom-configurator.js.map +0 -1
  507. package/es/components/configurator/project-configurator.js +0 -131
  508. package/es/components/configurator/project-configurator.js.map +0 -1
  509. package/es/components/content.js +0 -123
  510. package/es/components/content.js.map +0 -1
  511. package/es/components/export.js +0 -24
  512. package/es/components/export.js.map +0 -1
  513. package/es/components/firstsetting/button/styles.js +0 -27
  514. package/es/components/firstsetting/button/styles.js.map +0 -1
  515. package/es/components/firstsetting/export.js +0 -9
  516. package/es/components/firstsetting/export.js.map +0 -1
  517. package/es/components/firstsetting/firstsetting-content-button.js +0 -217
  518. package/es/components/firstsetting/firstsetting-content-button.js.map +0 -1
  519. package/es/components/firstsetting/firstsetting-toggle-button.js +0 -126
  520. package/es/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
  521. package/es/components/firstsetting/firstsetting.js +0 -626
  522. package/es/components/firstsetting/firstsetting.js.map +0 -1
  523. package/es/components/footerbar/button/ControlButton.js +0 -72
  524. package/es/components/footerbar/button/ControlButton.js.map +0 -1
  525. package/es/components/footerbar/button/DirectionButton.js +0 -69
  526. package/es/components/footerbar/button/DirectionButton.js.map +0 -1
  527. package/es/components/footerbar/button/DirectionPanSpinButton.js +0 -50
  528. package/es/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
  529. package/es/components/footerbar/button/ToggleButton.js +0 -76
  530. package/es/components/footerbar/button/ToggleButton.js.map +0 -1
  531. package/es/components/footerbar/button/ToggleConvertButton.js +0 -73
  532. package/es/components/footerbar/button/ToggleConvertButton.js.map +0 -1
  533. package/es/components/footerbar/button/ToggleMeasureButton.js +0 -52
  534. package/es/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
  535. package/es/components/footerbar/button/styles.js +0 -22
  536. package/es/components/footerbar/button/styles.js.map +0 -1
  537. package/es/components/footerbar/export.js +0 -9
  538. package/es/components/footerbar/export.js.map +0 -1
  539. package/es/components/footerbar/footer-content-button.js +0 -217
  540. package/es/components/footerbar/footer-content-button.js.map +0 -1
  541. package/es/components/footerbar/footer-toggle-button.js +0 -126
  542. package/es/components/footerbar/footer-toggle-button.js.map +0 -1
  543. package/es/components/footerbar/footerbar.js +0 -801
  544. package/es/components/footerbar/footerbar.js.map +0 -1
  545. package/es/components/footerbar/styles.js +0 -34
  546. package/es/components/footerbar/styles.js.map +0 -1
  547. package/es/components/header/button/MenuButton.js +0 -70
  548. package/es/components/header/button/MenuButton.js.map +0 -1
  549. package/es/components/header/button/SaveButton.js +0 -48
  550. package/es/components/header/button/SaveButton.js.map +0 -1
  551. package/es/components/header/button/styles.js +0 -59
  552. package/es/components/header/button/styles.js.map +0 -1
  553. package/es/components/header/export.js +0 -5
  554. package/es/components/header/export.js.map +0 -1
  555. package/es/components/header/header.js +0 -550
  556. package/es/components/header/header.js.map +0 -1
  557. package/es/components/header/styles.js +0 -41
  558. package/es/components/header/styles.js.map +0 -1
  559. package/es/components/login/Login.js +0 -86
  560. package/es/components/login/Login.js.map +0 -1
  561. package/es/components/login/LoginForm/index.js +0 -132
  562. package/es/components/login/LoginForm/index.js.map +0 -1
  563. package/es/components/login/Register.js +0 -96
  564. package/es/components/login/Register.js.map +0 -1
  565. package/es/components/login/RegisterForm/index.js +0 -230
  566. package/es/components/login/RegisterForm/index.js.map +0 -1
  567. package/es/components/login/jwtService.js +0 -232
  568. package/es/components/login/jwtService.js.map +0 -1
  569. package/es/components/molecules/slider/index.js +0 -13
  570. package/es/components/molecules/slider/index.js.map +0 -1
  571. package/es/components/molecules/slider/styles.js +0 -2
  572. package/es/components/molecules/slider/styles.js.map +0 -1
  573. package/es/components/myprojects/export.js +0 -5
  574. package/es/components/myprojects/export.js.map +0 -1
  575. package/es/components/myprojects/index.js +0 -446
  576. package/es/components/myprojects/index.js.map +0 -1
  577. package/es/components/myprojects/styles.js +0 -24
  578. package/es/components/myprojects/styles.js.map +0 -1
  579. package/es/components/sidebar/custom-accordion.js +0 -38
  580. package/es/components/sidebar/custom-accordion.js.map +0 -1
  581. package/es/components/sidebar/export.js +0 -14
  582. package/es/components/sidebar/export.js.map +0 -1
  583. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -65
  584. package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
  585. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -116
  586. package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
  587. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -126
  588. package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
  589. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -251
  590. package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
  591. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -75
  592. package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
  593. package/es/components/sidebar/panel-element-editor/element-editor.js +0 -878
  594. package/es/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
  595. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
  596. package/es/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
  597. package/es/components/sidebar/panel-element-editor/panel-element-editor.js +0 -49
  598. package/es/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
  599. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -118
  600. package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
  601. package/es/components/sidebar/panel-group-editor.js +0 -211
  602. package/es/components/sidebar/panel-group-editor.js.map +0 -1
  603. package/es/components/sidebar/panel-groups.js +0 -267
  604. package/es/components/sidebar/panel-groups.js.map +0 -1
  605. package/es/components/sidebar/panel-guides.js +0 -185
  606. package/es/components/sidebar/panel-guides.js.map +0 -1
  607. package/es/components/sidebar/panel-layer-elements.js +0 -251
  608. package/es/components/sidebar/panel-layer-elements.js.map +0 -1
  609. package/es/components/sidebar/panel-layers.js +0 -340
  610. package/es/components/sidebar/panel-layers.js.map +0 -1
  611. package/es/components/sidebar/panel.js +0 -103
  612. package/es/components/sidebar/panel.js.map +0 -1
  613. package/es/components/sidebar/sidebar.js +0 -109
  614. package/es/components/sidebar/sidebar.js.map +0 -1
  615. package/es/components/sidebar/toolbar-panel.js +0 -164
  616. package/es/components/sidebar/toolbar-panel.js.map +0 -1
  617. package/es/components/sign/export.js +0 -6
  618. package/es/components/sign/export.js.map +0 -1
  619. package/es/components/sign/main/index.js +0 -560
  620. package/es/components/sign/main/index.js.map +0 -1
  621. package/es/components/sign/main/styles.js +0 -20
  622. package/es/components/sign/main/styles.js.map +0 -1
  623. package/es/components/style/button.js +0 -114
  624. package/es/components/style/button.js.map +0 -1
  625. package/es/components/style/cancel-button.js +0 -23
  626. package/es/components/style/cancel-button.js.map +0 -1
  627. package/es/components/style/content-container.js +0 -34
  628. package/es/components/style/content-container.js.map +0 -1
  629. package/es/components/style/content-title.js +0 -30
  630. package/es/components/style/content-title.js.map +0 -1
  631. package/es/components/style/delete-button.js +0 -26
  632. package/es/components/style/delete-button.js.map +0 -1
  633. package/es/components/style/export.js +0 -32
  634. package/es/components/style/export.js.map +0 -1
  635. package/es/components/style/form-block.js +0 -25
  636. package/es/components/style/form-block.js.map +0 -1
  637. package/es/components/style/form-color-input.js +0 -28
  638. package/es/components/style/form-color-input.js.map +0 -1
  639. package/es/components/style/form-label.js +0 -27
  640. package/es/components/style/form-label.js.map +0 -1
  641. package/es/components/style/form-number-input.js +0 -190
  642. package/es/components/style/form-number-input.js.map +0 -1
  643. package/es/components/style/form-number-input_2.js +0 -207
  644. package/es/components/style/form-number-input_2.js.map +0 -1
  645. package/es/components/style/form-select.js +0 -21
  646. package/es/components/style/form-select.js.map +0 -1
  647. package/es/components/style/form-slider.js +0 -46
  648. package/es/components/style/form-slider.js.map +0 -1
  649. package/es/components/style/form-submit-button.js +0 -27
  650. package/es/components/style/form-submit-button.js.map +0 -1
  651. package/es/components/style/form-text-input.js +0 -77
  652. package/es/components/style/form-text-input.js.map +0 -1
  653. package/es/components/toolbar/button/ControlButton.js +0 -69
  654. package/es/components/toolbar/button/ControlButton.js.map +0 -1
  655. package/es/components/toolbar/button/DirectionButton.js +0 -50
  656. package/es/components/toolbar/button/DirectionButton.js.map +0 -1
  657. package/es/components/toolbar/button/RightButton.js +0 -133
  658. package/es/components/toolbar/button/RightButton.js.map +0 -1
  659. package/es/components/toolbar/button/ToggleButton.js +0 -59
  660. package/es/components/toolbar/button/ToggleButton.js.map +0 -1
  661. package/es/components/toolbar/button/index.js +0 -88
  662. package/es/components/toolbar/button/index.js.map +0 -1
  663. package/es/components/toolbar/button/styles.js +0 -14
  664. package/es/components/toolbar/button/styles.js.map +0 -1
  665. package/es/components/toolbar/components/DoorStyleMenu.js +0 -105
  666. package/es/components/toolbar/components/DoorStyleMenu.js.map +0 -1
  667. package/es/components/toolbar/components/Pricing.js +0 -101
  668. package/es/components/toolbar/components/Pricing.js.map +0 -1
  669. package/es/components/toolbar/components/ReviewForQuote.js +0 -476
  670. package/es/components/toolbar/components/ReviewForQuote.js.map +0 -1
  671. package/es/components/toolbar/export.js +0 -14
  672. package/es/components/toolbar/export.js.map +0 -1
  673. package/es/components/toolbar/main/Alert.js +0 -125
  674. package/es/components/toolbar/main/Alert.js.map +0 -1
  675. package/es/components/toolbar/main/TakePictureModal.js +0 -100
  676. package/es/components/toolbar/main/TakePictureModal.js.map +0 -1
  677. package/es/components/toolbar/main/confirm-popup.js +0 -88
  678. package/es/components/toolbar/main/confirm-popup.js.map +0 -1
  679. package/es/components/toolbar/main/index.js +0 -4612
  680. package/es/components/toolbar/main/index.js.map +0 -1
  681. package/es/components/toolbar/main/myComponents.js +0 -118
  682. package/es/components/toolbar/main/myComponents.js.map +0 -1
  683. package/es/components/toolbar/main/styles.js +0 -64
  684. package/es/components/toolbar/main/styles.js.map +0 -1
  685. package/es/components/toolbar/plugin-item.js +0 -150
  686. package/es/components/toolbar/plugin-item.js.map +0 -1
  687. package/es/components/toolbar/popup/appliance/appliance-category/index.js +0 -77
  688. package/es/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
  689. package/es/components/toolbar/popup/appliance/choose-appliance/index.js +0 -76
  690. package/es/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
  691. package/es/components/toolbar/popup/appliance/index.js +0 -81
  692. package/es/components/toolbar/popup/appliance/index.js.map +0 -1
  693. package/es/components/toolbar/popup/autosaveprompt/index.js +0 -91
  694. package/es/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
  695. package/es/components/toolbar/popup/autosaveprompt/styles.js +0 -9
  696. package/es/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
  697. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -77
  698. package/es/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
  699. package/es/components/toolbar/popup/cabinet/choose-product/index.js +0 -98
  700. package/es/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
  701. package/es/components/toolbar/popup/cabinet/index.js +0 -83
  702. package/es/components/toolbar/popup/cabinet/index.js.map +0 -1
  703. package/es/components/toolbar/popup/doorStyle/choose-style/index.js +0 -50
  704. package/es/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
  705. package/es/components/toolbar/popup/doorStyle/index.js +0 -61
  706. package/es/components/toolbar/popup/doorStyle/index.js.map +0 -1
  707. package/es/components/toolbar/popup/doorStyle/style-category/index.js +0 -143
  708. package/es/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
  709. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -3
  710. package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
  711. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -119
  712. package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
  713. package/es/components/toolbar/popup/downloadsummary/index.js +0 -564
  714. package/es/components/toolbar/popup/downloadsummary/index.js.map +0 -1
  715. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -51
  716. package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
  717. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -191
  718. package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
  719. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -245
  720. package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
  721. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1758
  722. package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
  723. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -87
  724. package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
  725. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -116
  726. package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
  727. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1710
  728. package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
  729. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -175
  730. package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
  731. package/es/components/toolbar/popup/downloadsummary/showWarranty.js +0 -106
  732. package/es/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
  733. package/es/components/toolbar/popup/downloadsummary/styles.js +0 -40
  734. package/es/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
  735. package/es/components/toolbar/popup/finishingtouch/category/index.js +0 -35
  736. package/es/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
  737. package/es/components/toolbar/popup/finishingtouch/index.js +0 -47
  738. package/es/components/toolbar/popup/finishingtouch/index.js.map +0 -1
  739. package/es/components/toolbar/popup/finishingtouch/material-edit.js +0 -156
  740. package/es/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
  741. package/es/components/toolbar/popup/finishingtouch/product/index.js +0 -56
  742. package/es/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
  743. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -116
  744. package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
  745. package/es/components/toolbar/popup/floorplan/choose-floor/index.js +0 -246
  746. package/es/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
  747. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -11
  748. package/es/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
  749. package/es/components/toolbar/popup/floorplan/floor-category/index.js +0 -90
  750. package/es/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
  751. package/es/components/toolbar/popup/floorplan/index.js +0 -49
  752. package/es/components/toolbar/popup/floorplan/index.js.map +0 -1
  753. package/es/components/toolbar/popup/index.js +0 -188
  754. package/es/components/toolbar/popup/index.js.map +0 -1
  755. package/es/components/toolbar/popup/newproject/index.js +0 -67
  756. package/es/components/toolbar/popup/newproject/index.js.map +0 -1
  757. package/es/components/toolbar/popup/newproject/styles.js +0 -9
  758. package/es/components/toolbar/popup/newproject/styles.js.map +0 -1
  759. package/es/components/toolbar/popup/product/appliance.js +0 -65
  760. package/es/components/toolbar/popup/product/appliance.js.map +0 -1
  761. package/es/components/toolbar/popup/product/cabinetproduct.js +0 -25
  762. package/es/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
  763. package/es/components/toolbar/popup/product/doorstyle.js +0 -50
  764. package/es/components/toolbar/popup/product/doorstyle.js.map +0 -1
  765. package/es/components/toolbar/popup/product/doorstyleproduct.js +0 -51
  766. package/es/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
  767. package/es/components/toolbar/popup/product/floor.js +0 -52
  768. package/es/components/toolbar/popup/product/floor.js.map +0 -1
  769. package/es/components/toolbar/popup/product/floorproduct.js +0 -61
  770. package/es/components/toolbar/popup/product/floorproduct.js.map +0 -1
  771. package/es/components/toolbar/popup/product/index.js +0 -52
  772. package/es/components/toolbar/popup/product/index.js.map +0 -1
  773. package/es/components/toolbar/popup/product/primary.js +0 -63
  774. package/es/components/toolbar/popup/product/primary.js.map +0 -1
  775. package/es/components/toolbar/popup/product/productline.js +0 -120
  776. package/es/components/toolbar/popup/product/productline.js.map +0 -1
  777. package/es/components/toolbar/popup/product/reviewItem.js +0 -338
  778. package/es/components/toolbar/popup/product/reviewItem.js.map +0 -1
  779. package/es/components/toolbar/popup/product/reviewMolding.js +0 -282
  780. package/es/components/toolbar/popup/product/reviewMolding.js.map +0 -1
  781. package/es/components/toolbar/popup/product/styles.js +0 -71
  782. package/es/components/toolbar/popup/product/styles.js.map +0 -1
  783. package/es/components/toolbar/popup/savedesign/FullPictureForm.js +0 -161
  784. package/es/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
  785. package/es/components/toolbar/popup/savedesign/index.js +0 -508
  786. package/es/components/toolbar/popup/savedesign/index.js.map +0 -1
  787. package/es/components/toolbar/popup/savedesign/styles.js +0 -19
  788. package/es/components/toolbar/popup/savedesign/styles.js.map +0 -1
  789. package/es/components/toolbar/popup/setDoorStyleOption/index.js +0 -57
  790. package/es/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
  791. package/es/components/toolbar/popup/styles.js +0 -98
  792. package/es/components/toolbar/popup/styles.js.map +0 -1
  793. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -157
  794. package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
  795. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -85
  796. package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
  797. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -36
  798. package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
  799. package/es/components/toolbar/popup/submitforquote/StepDots.js +0 -33
  800. package/es/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
  801. package/es/components/toolbar/popup/submitforquote/cart-choice.js +0 -132
  802. package/es/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
  803. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -43
  804. package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
  805. package/es/components/toolbar/popup/submitforquote/index.js +0 -690
  806. package/es/components/toolbar/popup/submitforquote/index.js.map +0 -1
  807. package/es/components/toolbar/popup/submitforquote/styles.js +0 -31
  808. package/es/components/toolbar/popup/submitforquote/styles.js.map +0 -1
  809. package/es/components/toolbar/popup/submitprompt/index.js +0 -71
  810. package/es/components/toolbar/popup/submitprompt/index.js.map +0 -1
  811. package/es/components/toolbar/popup/submitprompt/styles.js +0 -9
  812. package/es/components/toolbar/popup/submitprompt/styles.js.map +0 -1
  813. package/es/components/toolbar/toolbar-button.js +0 -105
  814. package/es/components/toolbar/toolbar-button.js.map +0 -1
  815. package/es/components/toolbar/toolbar-load-button.js +0 -29
  816. package/es/components/toolbar/toolbar-load-button.js.map +0 -1
  817. package/es/components/toolbar/toolbar-save-button.js +0 -27
  818. package/es/components/toolbar/toolbar-save-button.js.map +0 -1
  819. package/es/components/tutorial-view/Modal.js +0 -498
  820. package/es/components/tutorial-view/Modal.js.map +0 -1
  821. package/es/components/tutorial-view/styles.js +0 -6
  822. package/es/components/tutorial-view/styles.js.map +0 -1
  823. package/es/components/viewer2d/area.js +0 -83
  824. package/es/components/viewer2d/area.js.map +0 -1
  825. package/es/components/viewer2d/export.js +0 -32
  826. package/es/components/viewer2d/export.js.map +0 -1
  827. package/es/components/viewer2d/grids/grid-horizontal-streak.js +0 -38
  828. package/es/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
  829. package/es/components/viewer2d/grids/grid-streak.js +0 -38
  830. package/es/components/viewer2d/grids/grid-streak.js.map +0 -1
  831. package/es/components/viewer2d/grids/grid-vertical-streak.js +0 -38
  832. package/es/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
  833. package/es/components/viewer2d/grids/grids.js +0 -36
  834. package/es/components/viewer2d/grids/grids.js.map +0 -1
  835. package/es/components/viewer2d/group.js +0 -54
  836. package/es/components/viewer2d/group.js.map +0 -1
  837. package/es/components/viewer2d/item.js +0 -514
  838. package/es/components/viewer2d/item.js.map +0 -1
  839. package/es/components/viewer2d/layer.js +0 -165
  840. package/es/components/viewer2d/layer.js.map +0 -1
  841. package/es/components/viewer2d/line.js +0 -889
  842. package/es/components/viewer2d/line.js.map +0 -1
  843. package/es/components/viewer2d/ruler.js +0 -101
  844. package/es/components/viewer2d/ruler.js.map +0 -1
  845. package/es/components/viewer2d/rulerDist.js +0 -147
  846. package/es/components/viewer2d/rulerDist.js.map +0 -1
  847. package/es/components/viewer2d/rulerX.js +0 -152
  848. package/es/components/viewer2d/rulerX.js.map +0 -1
  849. package/es/components/viewer2d/rulerY.js +0 -154
  850. package/es/components/viewer2d/rulerY.js.map +0 -1
  851. package/es/components/viewer2d/scene.js +0 -141
  852. package/es/components/viewer2d/scene.js.map +0 -1
  853. package/es/components/viewer2d/snap.js +0 -75
  854. package/es/components/viewer2d/snap.js.map +0 -1
  855. package/es/components/viewer2d/state.js +0 -79
  856. package/es/components/viewer2d/state.js.map +0 -1
  857. package/es/components/viewer2d/utils.js +0 -163
  858. package/es/components/viewer2d/utils.js.map +0 -1
  859. package/es/components/viewer2d/vertex.js +0 -67
  860. package/es/components/viewer2d/vertex.js.map +0 -1
  861. package/es/components/viewer2d/viewer2d.js +0 -1402
  862. package/es/components/viewer2d/viewer2d.js.map +0 -1
  863. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2593
  864. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
  865. package/es/components/viewer3d/dcm.js +0 -402
  866. package/es/components/viewer3d/dcm.js.map +0 -1
  867. package/es/components/viewer3d/fbm.js +0 -415
  868. package/es/components/viewer3d/fbm.js.map +0 -1
  869. package/es/components/viewer3d/front3D.js +0 -67
  870. package/es/components/viewer3d/front3D.js.map +0 -1
  871. package/es/components/viewer3d/grid-creator.js +0 -26
  872. package/es/components/viewer3d/grid-creator.js.map +0 -1
  873. package/es/components/viewer3d/grids/grid-horizontal-streak.js +0 -37
  874. package/es/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
  875. package/es/components/viewer3d/grids/grid-streak.js +0 -28
  876. package/es/components/viewer3d/grids/grid-streak.js.map +0 -1
  877. package/es/components/viewer3d/grids/grid-vertical-streak.js +0 -37
  878. package/es/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
  879. package/es/components/viewer3d/libs/first-person-controls.js +0 -68
  880. package/es/components/viewer3d/libs/first-person-controls.js.map +0 -1
  881. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1282
  882. package/es/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
  883. package/es/components/viewer3d/libs/mtl-loader.js +0 -358
  884. package/es/components/viewer3d/libs/mtl-loader.js.map +0 -1
  885. package/es/components/viewer3d/libs/obj-loader.js +0 -463
  886. package/es/components/viewer3d/libs/obj-loader.js.map +0 -1
  887. package/es/components/viewer3d/libs/orbit-controls.js +0 -699
  888. package/es/components/viewer3d/libs/orbit-controls.js.map +0 -1
  889. package/es/components/viewer3d/libs/pointer-lock-controls.js +0 -46
  890. package/es/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
  891. package/es/components/viewer3d/lrm.js +0 -306
  892. package/es/components/viewer3d/lrm.js.map +0 -1
  893. package/es/components/viewer3d/model.js +0 -709
  894. package/es/components/viewer3d/model.js.map +0 -1
  895. package/es/components/viewer3d/pointer-lock-navigation.js +0 -116
  896. package/es/components/viewer3d/pointer-lock-navigation.js.map +0 -1
  897. package/es/components/viewer3d/ruler-utils/itemRect.js +0 -62
  898. package/es/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
  899. package/es/components/viewer3d/ruler-utils/layer3D.js +0 -496
  900. package/es/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
  901. package/es/components/viewer3d/ruler-utils/ruler3D.js +0 -228
  902. package/es/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
  903. package/es/components/viewer3d/ruler-utils/scene3D.js +0 -62
  904. package/es/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
  905. package/es/components/viewer3d/ruler-utils/state3D.js +0 -19
  906. package/es/components/viewer3d/ruler-utils/state3D.js.map +0 -1
  907. package/es/components/viewer3d/scene-creator.js +0 -3607
  908. package/es/components/viewer3d/scene-creator.js.map +0 -1
  909. package/es/components/viewer3d/three-memory-cleaner.js +0 -52
  910. package/es/components/viewer3d/three-memory-cleaner.js.map +0 -1
  911. package/es/components/viewer3d/viewer3d-first-person.js +0 -316
  912. package/es/components/viewer3d/viewer3d-first-person.js.map +0 -1
  913. package/es/components/viewer3d/viewer3d.js +0 -2504
  914. package/es/components/viewer3d/viewer3d.js.map +0 -1
  915. package/es/components/wizardstep/button/styles.js +0 -60
  916. package/es/components/wizardstep/button/styles.js.map +0 -1
  917. package/es/components/wizardstep/export.js +0 -5
  918. package/es/components/wizardstep/export.js.map +0 -1
  919. package/es/components/wizardstep/index.js +0 -971
  920. package/es/components/wizardstep/index.js.map +0 -1
  921. package/es/components/wizardstep/styles.js +0 -61
  922. package/es/components/wizardstep/styles.js.map +0 -1
  923. package/es/components/wizardstep/wizardstep-content-button.js +0 -217
  924. package/es/components/wizardstep/wizardstep-content-button.js.map +0 -1
  925. package/es/components/wizardstep/wizardstep-toggle-button.js +0 -126
  926. package/es/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
  927. package/es/constants.js +0 -637
  928. package/es/constants.js.map +0 -1
  929. package/es/hooks/useCheckCart.js +0 -53
  930. package/es/hooks/useCheckCart.js.map +0 -1
  931. package/es/hooks/useGetPricesBySku.js +0 -74
  932. package/es/hooks/useGetPricesBySku.js.map +0 -1
  933. package/es/hooks/useValidateToken.js +0 -201
  934. package/es/hooks/useValidateToken.js.map +0 -1
  935. package/es/index.js +0 -17
  936. package/es/index.js.map +0 -1
  937. package/es/models.js +0 -511
  938. package/es/models.js.map +0 -1
  939. package/es/plugins/SVGLoader.js +0 -1413
  940. package/es/plugins/SVGLoader.js.map +0 -1
  941. package/es/plugins/autosave.js +0 -34
  942. package/es/plugins/autosave.js.map +0 -1
  943. package/es/plugins/console-debugger.js +0 -38
  944. package/es/plugins/console-debugger.js.map +0 -1
  945. package/es/plugins/export.js +0 -10
  946. package/es/plugins/export.js.map +0 -1
  947. package/es/plugins/keyboard.js +0 -102
  948. package/es/plugins/keyboard.js.map +0 -1
  949. package/es/reducers/areas-reducer.js +0 -13
  950. package/es/reducers/areas-reducer.js.map +0 -1
  951. package/es/reducers/export.js +0 -26
  952. package/es/reducers/export.js.map +0 -1
  953. package/es/reducers/groups-reducer.js +0 -39
  954. package/es/reducers/groups-reducer.js.map +0 -1
  955. package/es/reducers/holes-reducer.js +0 -63
  956. package/es/reducers/holes-reducer.js.map +0 -1
  957. package/es/reducers/items-reducer.js +0 -144
  958. package/es/reducers/items-reducer.js.map +0 -1
  959. package/es/reducers/lines-reducer.js +0 -46
  960. package/es/reducers/lines-reducer.js.map +0 -1
  961. package/es/reducers/project-reducer.js +0 -130
  962. package/es/reducers/project-reducer.js.map +0 -1
  963. package/es/reducers/reducer.js +0 -20
  964. package/es/reducers/reducer.js.map +0 -1
  965. package/es/reducers/scene-reducer.js +0 -29
  966. package/es/reducers/scene-reducer.js.map +0 -1
  967. package/es/reducers/user-reducer.js +0 -42
  968. package/es/reducers/user-reducer.js.map +0 -1
  969. package/es/reducers/vertices-reducer.js +0 -20
  970. package/es/reducers/vertices-reducer.js.map +0 -1
  971. package/es/reducers/viewer2d-reducer.js +0 -76
  972. package/es/reducers/viewer2d-reducer.js.map +0 -1
  973. package/es/reducers/viewer3d-reducer.js +0 -57
  974. package/es/reducers/viewer3d-reducer.js.map +0 -1
  975. package/es/shared-style.js +0 -67
  976. package/es/shared-style.js.map +0 -1
  977. package/es/styles/export.js +0 -6
  978. package/es/styles/export.js.map +0 -1
  979. package/es/styles/tabs.css +0 -40
  980. package/es/translator/en.js +0 -105
  981. package/es/translator/en.js.map +0 -1
  982. package/es/translator/it.js +0 -80
  983. package/es/translator/it.js.map +0 -1
  984. package/es/translator/ru.js +0 -80
  985. package/es/translator/ru.js.map +0 -1
  986. package/es/translator/translator.js +0 -85
  987. package/es/translator/translator.js.map +0 -1
  988. package/es/utils/browser.js +0 -34
  989. package/es/utils/browser.js.map +0 -1
  990. package/es/utils/email-validator.js +0 -5
  991. package/es/utils/email-validator.js.map +0 -1
  992. package/es/utils/export.js +0 -26
  993. package/es/utils/export.js.map +0 -1
  994. package/es/utils/geometry.js +0 -2237
  995. package/es/utils/geometry.js.map +0 -1
  996. package/es/utils/get-edges-of-subgraphs.js +0 -27
  997. package/es/utils/get-edges-of-subgraphs.js.map +0 -1
  998. package/es/utils/graph-cycles.js +0 -239
  999. package/es/utils/graph-cycles.js.map +0 -1
  1000. package/es/utils/graph-inner-cycles.js +0 -47
  1001. package/es/utils/graph-inner-cycles.js.map +0 -1
  1002. package/es/utils/graph.js +0 -150
  1003. package/es/utils/graph.js.map +0 -1
  1004. package/es/utils/helper.js +0 -337
  1005. package/es/utils/helper.js.map +0 -1
  1006. package/es/utils/history.js +0 -30
  1007. package/es/utils/history.js.map +0 -1
  1008. package/es/utils/id-broker.js +0 -20
  1009. package/es/utils/id-broker.js.map +0 -1
  1010. package/es/utils/logger.js +0 -9
  1011. package/es/utils/logger.js.map +0 -1
  1012. package/es/utils/math.js +0 -51
  1013. package/es/utils/math.js.map +0 -1
  1014. package/es/utils/molding.js +0 -840
  1015. package/es/utils/molding.js.map +0 -1
  1016. package/es/utils/name-generator.js +0 -19
  1017. package/es/utils/name-generator.js.map +0 -1
  1018. package/es/utils/objects-utils.js +0 -51
  1019. package/es/utils/objects-utils.js.map +0 -1
  1020. package/es/utils/phone-validator.js +0 -5
  1021. package/es/utils/phone-validator.js.map +0 -1
  1022. package/es/utils/process-black-list.js +0 -19
  1023. package/es/utils/process-black-list.js.map +0 -1
  1024. package/es/utils/react-if.js +0 -19
  1025. package/es/utils/react-if.js.map +0 -1
  1026. package/es/utils/snap-scene.js +0 -100
  1027. package/es/utils/snap-scene.js.map +0 -1
  1028. package/es/utils/snap.js +0 -238
  1029. package/es/utils/snap.js.map +0 -1
  1030. package/es/utils/threeCSG.es6.js +0 -499
  1031. package/es/utils/threeCSG.es6.js.map +0 -1
  1032. package/es/version.js +0 -2
  1033. package/es/version.js.map +0 -1
  1034. /package/{es → src}/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
  1035. /package/{es → src}/catalog/areas/area/textures/grass.jpg +0 -0
  1036. /package/{es → src}/catalog/areas/area/textures/parquet.jpg +0 -0
  1037. /package/{es → src}/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
  1038. /package/{es → src}/catalog/areas/area/textures/tile1.jpg +0 -0
  1039. /package/{es → src}/catalog/back.png +0 -0
  1040. /package/{es → src}/catalog/doors.png +0 -0
  1041. /package/{es → src}/catalog/doorways.png +0 -0
  1042. /package/{es → src}/catalog/envMap/nx.hdr +0 -0
  1043. /package/{es → src}/catalog/envMap/ny.hdr +0 -0
  1044. /package/{es → src}/catalog/envMap/nz.hdr +0 -0
  1045. /package/{es → src}/catalog/envMap/px.hdr +0 -0
  1046. /package/{es → src}/catalog/envMap/py.hdr +0 -0
  1047. /package/{es → src}/catalog/envMap/pz.hdr +0 -0
  1048. /package/{es → src}/catalog/holes/door-double/door_double.png +0 -0
  1049. /package/{es → src}/catalog/holes/door-panic/panicDoor.png +0 -0
  1050. /package/{es → src}/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
  1051. /package/{es → src}/catalog/holes/gate/gate.jpg +0 -0
  1052. /package/{es → src}/catalog/holes/window-clear/texture.png +0 -0
  1053. /package/{es → src}/catalog/holes/window-cross/texture.png +0 -0
  1054. /package/{es → src}/catalog/holes/window-double-hung/texture.png +0 -0
  1055. /package/{es → src}/catalog/holes/window-vertical/texture.png +0 -0
  1056. /package/{es → src}/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
  1057. /package/{es → src}/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
  1058. /package/{es → src}/catalog/lines/wall/textures/bricks.jpg +0 -0
  1059. /package/{es → src}/catalog/lines/wall/textures/bricks2.jpg +0 -0
  1060. /package/{es → src}/catalog/lines/wall/textures/bricks3.jpg +0 -0
  1061. /package/{es → src}/catalog/lines/wall/textures/morden-normal.jpg +0 -0
  1062. /package/{es → src}/catalog/lines/wall/textures/morden.jpg +0 -0
  1063. /package/{es → src}/catalog/lines/wall/textures/painted-normal.jpg +0 -0
  1064. /package/{es → src}/catalog/lines/wall/textures/painted.jpg +0 -0
  1065. /package/{es → src}/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
  1066. /package/{es → src}/catalog/lines/wall/textures/plaster.jpg +0 -0
  1067. /package/{es → src}/catalog/lines/wall/wall.png +0 -0
  1068. /package/{es → src}/catalog/molding/molding-dcm/texture.png +0 -0
  1069. /package/{es → src}/catalog/molding/molding-fbm/texture.png +0 -0
  1070. /package/{es → src}/catalog/molding/molding-lrm/texture.png +0 -0
  1071. /package/{es → src}/catalog/windows.png +0 -0
  1072. /package/{es → src}/components/header/header.style.css +0 -0
  1073. /package/{es → src}/components/login/style.css +0 -0
  1074. /package/{es → src}/components/login/style.scss +0 -0
  1075. /package/{es → src}/components/molecules/slider/styles.scss +0 -0
  1076. /package/{es → src}/components/toolbar/main/lShaped.json +0 -0
  1077. /package/{es → src}/components/toolbar/main/longNarrow.json +0 -0
  1078. /package/{es → src}/components/toolbar/main/oRectangle.json +0 -0
  1079. /package/{es → src}/components/toolbar/main/rectangle.json +0 -0
  1080. /package/{es → src}/components/toolbar/main/style.css +0 -0
  1081. /package/{es → src}/components/toolbar/popup/autosaveprompt/styles.css +0 -0
  1082. /package/{es → src}/components/toolbar/popup/downloadsummary/styles.css +0 -0
  1083. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -0
  1084. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -0
  1085. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -0
  1086. /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -0
  1087. /package/{es → src}/components/toolbar/popup/newproject/styles.css +0 -0
  1088. /package/{es → src}/components/toolbar/popup/product/style.css +0 -0
  1089. /package/{es → src}/components/toolbar/popup/savedesign/savedesign.style.css +0 -0
  1090. /package/{es → src}/components/toolbar/popup/submitforquote/styles.css +0 -0
  1091. /package/{es → src}/components/toolbar/popup/submitprompt/styles.css +0 -0
  1092. /package/{es → src}/components/tutorial-view/style.css +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"viewer3d.js","names":["_typeof","o","Symbol","iterator","constructor","prototype","_readOnlyError","r","TypeError","ownKeys","e","t","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","_classCallCheck","a","n","_defineProperties","key","_createClass","i","_toPrimitive","toPrimitive","call","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_assertThisInitialized","ReferenceError","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_inherits","create","_setPrototypeOf","React","PropTypes","ReactDOM","Three","parseData","updateScene","visibleTransformBox","getDistances","fVLine","deleteSpecifiedMeshObjects","createBacksplash","checkCabinetOverlap","disposeScene","disposeObject","diff","SharedStyle","MODE_DRAWING_ITEM_3D","MODE_IDLE_3D","MODE_3D_VIEW","UNIT_CENTIMETER","MODE_DRAWING_HOLE_3D","SECONDARY_PURPLE_COLOR","MODE_ELEVATION_VIEW","MODE_DRAGGING_ITEM_3D","MODE_ROTATING_ITEM_3D","WALL_CABINET_LAYOUTPOS","BASE_CABINET_LAYOUTPOS","TALL_CABINET_LAYOUTPOS","isUndefined","verticesDistance","convert","GeometryUtils","handleCamRect","isElevationView","isEmpty","RGBELoader","CameraControls","install","THREE","returnReplaceableDeepSearchType","getAllMeshes","vectorIntersectWithMesh","Scene3DViewer","_React$Component","props","_this","state","isLoading","showflag","isLoadingCabinet","scene","toolObj","angleObj","waitForRender","lineLength","lastMousePosition","width","height","renderingID","mode","window","__elevationRendererDownload","renderer","__threeRenderer","WebGLRenderer","preserveDrawingBuffer","alpha","antialias","__threeRendererDownload","downloadFlag","__elevationRenderer","shadowMap","enabled","shadowMapSoft","domElement","style","display","componentDidMount","nextProps","_this2","scene3D","camera","pivot","cameraControls","clock","spotLight1","spotLightTarget","actions","areaActions","context","holesActions","itemsActions","sceneActions","linesActions","projectActions","catalog","self","setupLight","inbBox","ambilight","AmbientLight","add","addDirLight","inColor","inIntensity","inPosition","dirLight","DirectionalLight","castShadow","shadow","mapSize","x","shadowMapSize","y","near","far","shadowCameraFar","top","shadowCameraSize","bottom","left","right","position","copy","targetObject","Object3D","bboxCenter","target","updateMatrixWorld","addSpotLight","inTarget","inDistance","spotLight","SpotLight","intensity","color","setHex","angle","distance","penumbra","decay","Vector3","z","Math","max","abs","min","dirLightPos","ceiling","getObjectByName","ceilBBox","Box3","setFromObject","spot1","spot2","spot3","spot4","spotlightDis","setState","setIsLoadingElevation","setIsLoading3D","_parseData","promise","planData","then","objToRemove","plan","traverse","obj","geometry","removeFromParent","bbox","fitToBox","boundingBox","setTimeout","area","getIn","selectedLayer","layer","areas","lights","snapBox","msg","layers","id","visible","items","item","doorStyle","includes","name","confirm","init","render","data","_loop","aVertices","lines","vertices","_loop3","realVec","vec","ceilHeight","from","unit","to","datas","vertex","fLen","sX","sY","eX","eY","len","sqrt","cLen","cX","cY","endLen","vec2","Vector2","PI","cos","sin","light","toIntersect","mouse","gridPlane","grid","raycaster","Raycaster","selectedObject","selectedFlag","currentObject","isSelected","bRotate","bMove","bMoveUP","gridMatrix","Matrix4","rayDirection","gridPlanOrigin","Point","sPoint","snapFlag","snapAnimI","snapDelta","t_i","targetPoint","targetRot","targetUVec","targetCRotation","targetObj","targetNumber","wallSlide","pinFlag","sFlag","endPoint","allItemRect","allItemSnap","allLines","allLineRects","allLineSnap","allRect","allArea","backsplashVisible","holeItems","getHoleItems","removeSnapBox","remove","camToGrid","camPos","mapCursorPosition","altitude","subVectors","camD","rayD","intersectPt","multiplyScalar","applyMatrix4","pointLineDistance","point","line","pX","pY","l1x","l1y","l2x","l2y","pLine","Line","pAngle","lAngle","pDistance","oDistance","directDistance","lineDistance","dX","dY","dPoint","getInterSect","shape1","shape2","count","sl1","sl2","j","el1","el2","flag","getLineInterSect","getRectPoints","pos","rot","rX","rY","cRot","floor","prepareSnap","getAllLines","buildRectFromLines","getAllItems","getAllItemSnap","getAllLineSnap","cur","others","concat","validateSnaps","getAllArea","prepareSnapSpec","getAllItemSpecified","lineRect","areainfo","sz","size","get","rect","vert","collisionCheck","tObj","_this3","undefined","userData","layerId","layoutpos","catid","type","cat","elements","info","oPos","clone","sBounding","children","depth","oVertices","itemId","sceneGraph","console","log","ocatid","ocat","olayoutpos","tRot","rotation","tPos","tBounding","twidth","tdepth","tVertices","_loop2","properties","v","_ret","collisionHoleCheck","currentItem","selectedItem","otherItem","needSnap","holes","holeID","hole","theight","trot","collisionSlide","item3D","originPos","sVertices","cur_category","selected","category","itemID","toJS","exchange","layerID","targetData","targetPos","vArray","dteArray","lineArray","vdistanceArray","cVecArray","inFlag","v1","v2","tPosDistance","realDistance","tPosDistance1","realDistance1","k","temp","temp1","temp2","tX","tY","set","snap","parent","source","sRot","layoutType","altitudeLength","snapBoxGeom","BoxGeometry","snapBoxObj","Mesh","MeshBasicMaterial","transparent","blending","MultiplyBlending","removeSnapBoxObj","box","BoxHelper","material","linewidth","depthTest","renderOrder","deltaX","deltaZ","sPos","tPoses","pZ","tNum","curDis","cx","cz","selectedObj","rotRad","snapLine","lineId","snapLineThickness","iX","iY","lineVec","oLength","normalize","vec2Legnth","transLength","directPoint","directLine","dLength","reduceLen","scale","realAngle","result","sourcePos","firstMove","prevX","prevY","selObj","createToolObject","canvas","document","createElement","ctx","getContext","fillStyle","strokeStyle","beginPath","arc","fill","stroke","img1","Image","crossOrigin","src","onload","drawImage","img2","clockWise","lastAngle","createAngleObject","rotate","lineWidth","toolTexture","Texture","needsUpdate","Sprite","SpriteMaterial","map","sizeAttenuation","angleTexture","getPoint","alti","offsetX","offsetY","setFromCamera","ray","direction","updateMouseCoord","getIntersectWallPoint","arrMesh","mesh","intersects","intersectObjects","updateSelectedObject","selectedLayerId","selItemId","mouseDownEvent","event","matrixWorld","invert","itemInfo","sCount","transflag","meshes","object","isMesh","toolIntersects","pow","uv","indexOf","setToolbar","isNaN","unselectAll","removeReplacingSupport","selItem","image","centerPos","beginRotatingItem3D","beginDraggingHole3D","beginDraggingItem3D","mouseButtons","ACTION","NONE","mouseUpEvent","_selObj$object","_selObj$object2","endDrawingItem","updateDraggingItemChanged","updateRotatingItemChanged","endDraggingItem3D","endRotatingItem3D","endDrawingHole3D","preventDefault","button","ROTATE","replaceInfo","selectItem","replaceCabinet","interact","itemPos","pointArray","cnt","pointElement","index","storeDistArray","endDraggingHole3D","_intersects$_i","updateMovingState","mouseMoveEvent","drawingSupport","has","updateDrawingHole3D","nx","ny","updateDrawingItem","mX","mY","counterTop","uri","swidth","sdepth","_GeometryUtils$calcSn","calcSnap","nPos","polygonPoint","PolygonSect","ContainsPoint","_GeometryUtils$calcCr","calcCreateSnap","cy","crot","polygon","Sect","minDis","snapObj","iPos","snapDis","setBacksplashVisible","updateRotatingItem","orginRot","rotatingSupport","updateItemsAltitude","movementY","draggingSupport","updateDraggingHole","_GeometryUtils$calcSn2","_GeometryUtils$calcCr2","curPos","infoPos","getElementById","onkeydown","keyDownEnable","keyCode","setMoveStatus","setRotateStatus","handleKeyDown","setClearColor","Color","COLORS","white","setSize","addEventListener","SPKeyDown","tDKeyDown","canvasWrapper","findDOMNode","refs","appendChild","err","JSON","stringify","Clock","Scene","background","selectedLine","vertex0","vertex1","x1","y1","x2","y2","compareVertices","toArray","l0","l1","pointsDistance","cameraRect","OrthographicCamera","atan","aspectRatio","PerspectiveCamera","enable","loadENV","load","texture","mapping","EquirectangularReflectionMapping","environment","dispose","dollyToCursor","infinityDolly","minDistance","maxDistance","Infinity","zoomSpeed","cam","delta","getDelta","update","updateMatrix","elemID","LODs","rotateY","indexAttribute","getIndex","firstFaceIndices","getX","normalAttribute","attributes","normal","fromBufferAttribute","sub","vertex2","posVec","cameraLine","child","opacity","dot","elevationGroup","autoClearDepth","requestAnimationFrame","componentWillUnmount","cancelAnimationFrame","removeEventListener","renderLists","componentWillReceiveProps","_this4","aspect","updateProjectionMatrix","implementBacksplash","allItems","calcRect","getCalcRectFromItem3D","isSnappedLine","implementWarningBox","layer1","changedValues","showfg","_this$state","_updateScene","p1Value","setIn","_this$state2","alignItems","justifyContent","animation","alt","textAlign","marginTop","pointerEvents","ref","Component","default","propTypes","isRequired","number","func","contextTypes"],"sources":["../../../src/components/viewer3d/viewer3d.js"],"sourcesContent":["'use strict';\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReactDOM from 'react-dom';\r\nimport * as Three from 'three';\r\nimport {\r\n parseData,\r\n updateScene,\r\n visibleTransformBox,\r\n getDistances,\r\n fVLine,\r\n deleteSpecifiedMeshObjects,\r\n createBacksplash,\r\n checkCabinetOverlap\r\n} from './scene-creator';\r\nimport { disposeScene } from './three-memory-cleaner';\r\nimport { disposeObject } from './three-memory-cleaner';\r\nimport diff from 'immutablediff';\r\nimport * as SharedStyle from '../../shared-style';\r\nimport {\r\n MODE_DRAWING_ITEM_3D,\r\n MODE_IDLE_3D,\r\n MODE_3D_VIEW,\r\n UNIT_CENTIMETER,\r\n MODE_DRAWING_HOLE_3D,\r\n SECONDARY_PURPLE_COLOR,\r\n MODE_ELEVATION_VIEW,\r\n MODE_DRAGGING_ITEM_3D,\r\n MODE_ROTATING_ITEM_3D,\r\n WALL_CABINET_LAYOUTPOS,\r\n BASE_CABINET_LAYOUTPOS,\r\n TALL_CABINET_LAYOUTPOS\r\n} from '../../constants';\r\n\r\nimport { isUndefined } from 'util';\r\nimport { verticesDistance } from '../../utils/geometry';\r\nimport convert from 'convert-units';\r\nimport { GeometryUtils } from '../../utils/export';\r\nimport { handleCamRect, isElevationView, isEmpty } from '../../utils/helper';\r\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';\r\nimport CameraControls from 'camera-controls';\r\nCameraControls.install({ THREE: Three });\r\nimport { returnReplaceableDeepSearchType } from '../viewer2d/utils';\r\nimport {\r\n getAllMeshes,\r\n vectorIntersectWithMesh\r\n} from '../../utils/objects-utils';\r\n\r\nexport default class Scene3DViewer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n showflag: true,\r\n isLoadingCabinet: props.state.scene.isLoadingCabinet,\r\n toolObj: null,\r\n angleObj: null,\r\n waitForRender: 0,\r\n lineLength: null // when view wall's elevation, that wall's length\r\n };\r\n this.lastMousePosition = {};\r\n this.width = props.width;\r\n this.height = props.height;\r\n this.renderingID = 0;\r\n\r\n let { mode } = props.state;\r\n\r\n if (!window.__elevationRendererDownload) {\r\n window.__elevationRendererDownload = {};\r\n }\r\n\r\n switch (mode) {\r\n case MODE_IDLE_3D:\r\n this.renderer =\r\n window.__threeRenderer ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n break;\r\n case MODE_3D_VIEW:\r\n this.renderer =\r\n window.__threeRendererDownload ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n break;\r\n default:\r\n if (this.props.downloadFlag) {\r\n this.renderer =\r\n window.__elevationRendererDownload[mode] ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n } else {\r\n this.renderer =\r\n window.__elevationRenderer ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n }\r\n\r\n break;\r\n }\r\n\r\n this.renderer.shadowMap.enabled = true;\r\n this.renderer.shadowMapSoft = true;\r\n if (mode == 'MODE_IDLE_3D') {\r\n window.__threeRenderer = this.renderer;\r\n } else if (mode == 'MODE_3D_VIEW') {\r\n window.__threeRendererDownload = this.renderer;\r\n } else {\r\n if (this.props.downloadFlag)\r\n window.__elevationRendererDownload[mode] = this.renderer;\r\n else window.__elevationRenderer = this.renderer;\r\n }\r\n\r\n this.renderer.domElement.style.display = 'none';\r\n }\r\n\r\n componentDidMount(nextProps) {\r\n let scene3D, camera, pivot, cameraControls, clock;\r\n let spotLight1, spotLightTarget;\r\n\r\n const actions = {\r\n areaActions: this.context.areaActions,\r\n holesActions: this.context.holesActions,\r\n itemsActions: this.context.itemsActions,\r\n sceneActions: this.context.sceneActions,\r\n linesActions: this.context.linesActions,\r\n projectActions: this.context.projectActions,\r\n catalog: this.context.catalog\r\n };\r\n\r\n const self = this;\r\n const { state } = this.props;\r\n const { mode, scene } = state;\r\n function setupLight(scene, inbBox) {\r\n if (isElevationView(mode)) {\r\n const ambilight = new Three.AmbientLight('0xffffff', 3);\r\n scene.add(ambilight);\r\n } else {\r\n const shadowMapSize = 2048;\r\n const shadowCameraSize =\r\n Math.max(\r\n Math.abs(inbBox.min.x - inbBox.max.x),\r\n Math.abs(inbBox.min.y - inbBox.max.y),\r\n Math.abs(inbBox.min.z - inbBox.max.z)\r\n ) / 2;\r\n const shadowCameraFar = shadowCameraSize * 10;\r\n const bboxCenter = new Three.Vector3(\r\n (inbBox.min.x + inbBox.max.x) / 2,\r\n inbBox.min.y,\r\n (inbBox.min.z + inbBox.max.z) / 2\r\n );\r\n function addDirLight(inColor, inIntensity, inPosition) {\r\n const dirLight = new Three.DirectionalLight(inColor, inIntensity);\r\n dirLight.castShadow = true;\r\n dirLight.shadow.mapSize.x = shadowMapSize;\r\n dirLight.shadow.mapSize.y = shadowMapSize;\r\n dirLight.shadow.camera.near = 0;\r\n dirLight.shadow.camera.far = shadowCameraFar;\r\n\r\n dirLight.shadow.camera.top = shadowCameraSize * 1.5;\r\n dirLight.shadow.camera.bottom = -shadowCameraSize * 1.5;\r\n dirLight.shadow.camera.left = -shadowCameraSize * 1.5;\r\n dirLight.shadow.camera.right = shadowCameraSize * 1.5;\r\n dirLight.position.copy(inPosition);\r\n\r\n const targetObject = new Three.Object3D();\r\n targetObject.position.copy(bboxCenter);\r\n scene.add(targetObject);\r\n\r\n dirLight.target = targetObject;\r\n dirLight.target.updateMatrixWorld();\r\n\r\n scene.add(dirLight);\r\n }\r\n function addSpotLight(\r\n inColor,\r\n inIntensity,\r\n inPosition,\r\n inTarget,\r\n inDistance\r\n ) {\r\n const spotLight = new Three.SpotLight();\r\n spotLight.intensity = inIntensity;\r\n spotLight.color.setHex(inColor);\r\n spotLight.position.copy(inPosition);\r\n spotLight.angle = 1.3;\r\n spotLight.distance = inDistance;\r\n spotLight.penumbra = 1.8;\r\n spotLight.decay = 0.01;\r\n\r\n spotLight.castShadow = true;\r\n spotLight.shadow.intensity = 2;\r\n spotLight.shadow.mapSize.width = 4096;\r\n spotLight.shadow.mapSize.height = 4096;\r\n\r\n const targetObject = new Three.Object3D();\r\n targetObject.position.copy(\r\n new Three.Vector3(inTarget.x, 0, inTarget.z)\r\n );\r\n scene.add(targetObject);\r\n\r\n spotLight.target = targetObject;\r\n spotLight.target.updateMatrixWorld();\r\n scene.add(spotLight);\r\n }\r\n\r\n const dirLightPos = new Three.Vector3(\r\n inbBox.max.x,\r\n inbBox.max.y + 1.8 * Math.abs(inbBox.max.y - inbBox.min.y),\r\n inbBox.min.z - 0.5 * Math.abs(inbBox.max.z - inbBox.min.z)\r\n );\r\n\r\n addDirLight('white', 1.5, dirLightPos);\r\n\r\n const ceiling = scene3D.getObjectByName('ceil');\r\n if (ceiling) {\r\n const ceilBBox = new Three.Box3().setFromObject(ceiling);\r\n\r\n const spot1 = new Three.Vector3(\r\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - inbBox.max.z) / 4\r\n );\r\n const spot2 = new Three.Vector3(\r\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\r\n );\r\n\r\n const spot3 = new Three.Vector3(\r\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\r\n );\r\n const spot4 = new Three.Vector3(\r\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\r\n );\r\n\r\n const spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);\r\n\r\n // check if spotlight is inside the room\r\n vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);\r\n vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);\r\n vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);\r\n vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);\r\n }\r\n }\r\n }\r\n\r\n // Load data\r\n this.setState({ isLoading: true });\r\n if (self.props.downloadFlag) {\r\n this.setState({ waitForRender: 0 });\r\n\r\n // set loading bar\r\n switch (self.props.state.mode) {\r\n case MODE_ELEVATION_VIEW:\r\n self.props.setIsLoadingElevation('front', true);\r\n break;\r\n case MODE_3D_VIEW:\r\n self.props.setIsLoading3D(true);\r\n break;\r\n }\r\n }\r\n\r\n const { promise, planData } = parseData(\r\n scene,\r\n actions,\r\n this.context.catalog,\r\n camera,\r\n this.renderer,\r\n state.mode\r\n );\r\n\r\n promise.then(() => {\r\n let objToRemove = [];\r\n planData.plan.traverse(obj => {\r\n if (obj.geometry === null) {\r\n objToRemove.push(obj);\r\n }\r\n });\r\n objToRemove.forEach(obj => {\r\n obj.removeFromParent();\r\n });\r\n const bbox = new Three.Box3().setFromObject(planData.plan);\r\n if (!isElevationView(state.mode)) {\r\n cameraControls.fitToBox(bbox);\r\n }\r\n setupLight(scene3D, planData.boundingBox);\r\n\r\n self.setState({ waitForRender: 1 });\r\n setTimeout(() => {\r\n self.setState({ isLoading: false });\r\n self.renderer.domElement.style.display = 'block';\r\n }, 1500);\r\n });\r\n\r\n const area = scene.getIn(['layers', scene.selectedLayer, 'areas']);\r\n const layer = scene.getIn(['layers', scene.selectedLayer]);\r\n const areas = [],\r\n lights = [];\r\n\r\n let snapBox = null;\r\n\r\n // Check for data\r\n let msg = '';\r\n scene.layers.forEach(layer => {\r\n if (layer.id === scene.selectedLayer || layer.visible) {\r\n layer.items.forEach(item => {\r\n if (item.doorStyle === null) {\r\n if (!msg.includes(item.name + \"'s doorStyle is null.\"))\r\n msg += item.name + \"'s doorStyle is null.\\n\";\r\n }\r\n });\r\n }\r\n });\r\n if (msg !== '') {\r\n confirm(msg);\r\n }\r\n\r\n init();\r\n render();\r\n\r\n // area lightning(wall lightning)/////\r\n\r\n area.forEach(data => {\r\n areas.push(data);\r\n });\r\n for (let i = 0; i < areas.length; i++) {\r\n let aVertices = [];\r\n let lines = [];\r\n let height = 100;\r\n areas[i].vertices.forEach(data => {\r\n aVertices.push(data);\r\n });\r\n layer.lines.forEach(data => {\r\n lines.push(data);\r\n });\r\n for (let i = 0; i < lines.length; i++) {\r\n let data = lines[i];\r\n let realVec = [];\r\n data.vertices.forEach(vec => {\r\n realVec.push(vec);\r\n });\r\n if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {\r\n height = convert(layer.ceilHeight)\r\n .from(layer.unit)\r\n .to(UNIT_CENTIMETER);\r\n // height = data.properties.getIn(['height', 'length']);\r\n break;\r\n }\r\n }\r\n let vertices = [];\r\n areas[i].vertices.forEach(datas => {\r\n let vertex = scene.getIn([\r\n 'layers',\r\n scene.selectedLayer,\r\n 'vertices',\r\n datas\r\n ]);\r\n vertices.push(vertex);\r\n });\r\n vertices.push(vertices[0]);\r\n let fLen = vertices.length - 1;\r\n for (let i = 0; i < fLen; i++) {\r\n let sX = vertices[i].x;\r\n let sY = vertices[i].y;\r\n let eX = vertices[i + 1].x;\r\n let eY = vertices[i + 1].y;\r\n let len = Math.sqrt((eX - sX) * (eX - sX) + (eY - sY) * (eY - sY));\r\n for (let cLen = 200; cLen < len; cLen += 200) {\r\n let cX = sX + ((eX - sX) * cLen) / len;\r\n let cY = sY + ((eY - sY) * cLen) / len;\r\n let endLen = Math.sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY));\r\n if (endLen <= 100) continue;\r\n let vec2 = new Three.Vector2(cX - sX, cY - sY);\r\n let angle = vec2.angle() + Math.PI / 2;\r\n cX = Math.cos(angle) * 30 + cX;\r\n cY = Math.sin(angle) * 30 + cY;\r\n let spotLight = new Three.SpotLight(0xeeeeee, 1.7);\r\n spotLight.angle = 0.76;\r\n spotLight.castShadow = true;\r\n spotLight.penumbra = 1;\r\n spotLight.decay = 1.7;\r\n spotLight.distance = height - 20;\r\n let target = new Three.Object3D();\r\n spotLight.target = target;\r\n lights.push({\r\n light: spotLight,\r\n target: target,\r\n x: cX,\r\n y: cY,\r\n height: height\r\n });\r\n }\r\n }\r\n }\r\n // //////////////////////////\r\n\r\n // OBJECT PICKING\r\n let toIntersect = [planData.plan];\r\n let mouse = new Three.Vector2();\r\n let gridPlane = planData.grid;\r\n let raycaster = new Three.Raycaster();\r\n let selectedObject = {};\r\n let selectedFlag = false;\r\n let currentObject = null;\r\n let isSelected = false;\r\n let bRotate = false;\r\n let bMove = false;\r\n let bMoveUP = false;\r\n /** Transformation matrix of grid */\r\n const gridMatrix = new Three.Matrix4();\r\n let rayDirection = new Three.Vector3();\r\n /** World position of grid plane */\r\n let gridPlanOrigin = new Three.Vector3();\r\n let Point = new Three.Vector2();\r\n let sPoint = new Three.Vector2();\r\n\r\n // SNAP FUNCTION VARIABLE\r\n let snapFlag = false;\r\n let snapAnimI = 0;\r\n let snapDelta = 6;\r\n let t_i = 0;\r\n let targetPoint = new Three.Vector3();\r\n let targetRot = 0;\r\n let targetUVec = new Three.Vector3();\r\n let targetCRotation = 0;\r\n let targetObj = null;\r\n let targetNumber = 0;\r\n let wallSlide = false;\r\n\r\n let pinFlag = false;\r\n let sFlag = false; //for all object move\r\n let endPoint = {};\r\n let allItemRect;\r\n let allItemSnap;\r\n let allLines;\r\n let allLineRects;\r\n let allLineSnap;\r\n let allRect;\r\n let allArea;\r\n\r\n // end snap function variable///////////////////////\r\n let backsplashVisible = false;\r\n let holeItems = GeometryUtils.getHoleItems(layer);\r\n\r\n let removeSnapBox = () => {\r\n if (snapBox != null) {\r\n planData.plan.remove(snapBox);\r\n disposeObject(snapBox);\r\n snapBox = null;\r\n targetObj = null;\r\n snapFlag = false;\r\n }\r\n };\r\n\r\n const camToGrid = new Three.Vector3();\r\n let camPos = camera.position;\r\n\r\n const mapCursorPosition = (e, altitude) => {\r\n camToGrid.subVectors(gridPlanOrigin, camPos);\r\n\r\n let camD = camToGrid.y + (altitude ? altitude : 0);\r\n let rayD = rayDirection.y;\r\n\r\n const intersectPt = rayDirection.multiplyScalar(camD / rayD).add(camPos);\r\n intersectPt.y = gridPlanOrigin.y;\r\n intersectPt.applyMatrix4(gridMatrix);\r\n\r\n return { x: intersectPt.x, y: -intersectPt.z };\r\n };\r\n\r\n /* for Snap Functions*/\r\n\r\n let pointLineDistance = function (point, line) {\r\n // return distance from point to line and directional point of line\r\n let pX = point.x;\r\n let pY = point.y;\r\n let l1x = line[0].x;\r\n let l1y = line[0].y;\r\n let l2x = line[1].x;\r\n let l2y = line[1].y;\r\n let pLine = new Three.Vector2(l1x - pX, l1y - pY);\r\n let Line = new Three.Vector2(l1x - l2x, l1y - l2y);\r\n let pAngle = pLine.angle();\r\n let lAngle = Line.angle();\r\n let pDistance = pLine.length();\r\n let oDistance = Line.length();\r\n let directDistance = Math.sin(pAngle - lAngle) * pDistance;\r\n let lineDistance = Math.cos(pAngle - lAngle) * pDistance;\r\n let dX = l1x + ((l2x - l1x) * lineDistance) / oDistance;\r\n let dY = l1y + ((l2y - l1y) * lineDistance) / oDistance;\r\n let dPoint = { x: dX, y: dY };\r\n return { distance: directDistance, point: dPoint };\r\n };\r\n let getInterSect = function (shape1, shape2) {\r\n // return result of intersect of two shape\r\n let count = 0;\r\n for (let i = 0; i < shape1.length - 1; i++) {\r\n let sl1 = { x: shape1[i].x, y: shape1[i].y };\r\n let sl2 = { x: shape1[i + 1].x, y: shape1[i + 1].y };\r\n for (let j = 0; j < shape2.length - 1; j++) {\r\n let el1 = { x: shape2[j].x, y: shape2[j].y };\r\n let el2 = { x: shape2[j + 1].x, y: shape2[j + 1].y };\r\n let flag = GeometryUtils.getLineInterSect(\r\n sl1.x,\r\n sl1.y,\r\n sl2.x,\r\n sl2.y,\r\n el1.x,\r\n el1.y,\r\n el2.x,\r\n el2.y\r\n );\r\n if (flag) {\r\n count++;\r\n if (count > 1) return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n this.getRectPoints = function (width, height, pos, rot) {\r\n // return 4 points from it's position, width, height, and rotation info\r\n let rX = width / 2;\r\n let rY = height / 2;\r\n let vertices = [];\r\n let cRot = rot;\r\n let pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n let pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n rX = -rX;\r\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n rY = -rY;\r\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n rX = -rX;\r\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n vertices.push(vertices[0]);\r\n vertices.push(vertices[2]);\r\n return vertices;\r\n };\r\n\r\n const prepareSnap = layer => {\r\n allLines = GeometryUtils.getAllLines(layer);\r\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n allItemRect = GeometryUtils.getAllItems(\r\n this.props.state.scene,\r\n actions.catalog,\r\n allLineRects\r\n );\r\n allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);\r\n allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);\r\n allRect = allItemRect.others.concat(allLineRects);\r\n allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);\r\n allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);\r\n allArea = GeometryUtils.getAllArea(layer);\r\n };\r\n\r\n let prepareSnapSpec = layer => {\r\n allLines = GeometryUtils.getAllLines(layer);\r\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n allItemRect = GeometryUtils.getAllItemSpecified(\r\n this.props.state.scene,\r\n actions.catalog,\r\n WALL_CABINET_LAYOUTPOS\r\n );\r\n // allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);\r\n };\r\n\r\n // prepareSnapSpec(layer);\r\n let lineRect = layer => {\r\n let areainfo = [];\r\n layer.areas.forEach(area => {\r\n let sz = area.vertices.size;\r\n for (var i = 0; i < sz; i++) {\r\n areainfo.push(area.vertices.get(i));\r\n }\r\n });\r\n let rect = [];\r\n areainfo.forEach(area => {\r\n let vert = layer.vertices.get(area);\r\n rect.push(vert.x, vert.y);\r\n });\r\n return rect;\r\n };\r\n\r\n this.collisionCheck = function (obj, pos, rot, tObj, item = null, catalog) {\r\n //collision check from one object to every other object excpet target object\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n obj.userData.layerId\r\n ]);\r\n let layoutpos = 'utype';\r\n if (item !== null) {\r\n let catid = item.type;\r\n let cat = catalog.elements[catid];\r\n layoutpos = cat.info.layoutpos;\r\n }\r\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\r\n let sBounding = obj.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let oVertices = this.getRectPoints(\r\n width,\r\n depth,\r\n oPos.clone(),\r\n ((rot % 360) / 180) * Math.PI\r\n );\r\n let datas = [];\r\n layer.items.forEach(data => {\r\n datas.push(data);\r\n });\r\n for (let i = 0; i < datas.length; i++) {\r\n let data = datas[i];\r\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\r\n continue;\r\n let target =\r\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\r\n if (target === undefined) {\r\n console.log(\r\n data.id +\r\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\r\n );\r\n return false;\r\n }\r\n let item = layer.items.getIn([data.id]);\r\n let ocatid = item.type;\r\n let ocat = catalog.elements[ocatid];\r\n let olayoutpos = ocat.info.layoutpos;\r\n if (\r\n !(\r\n (layoutpos === BASE_CABINET_LAYOUTPOS &&\r\n olayoutpos === WALL_CABINET_LAYOUTPOS) ||\r\n (layoutpos === WALL_CABINET_LAYOUTPOS &&\r\n olayoutpos === BASE_CABINET_LAYOUTPOS)\r\n )\r\n ) {\r\n let tRot = item.rotation;\r\n let tPos = new Three.Vector2(item.x, item.y);\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n tPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n }\r\n datas = [];\r\n layer.lines.forEach(data => {\r\n datas.push(data);\r\n });\r\n for (let i = 0; i < datas.length; i++) {\r\n let data = datas[i];\r\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\r\n continue;\r\n let item = layer.lines.getIn([data.id]);\r\n // let llayoutpos = catalog.elements[item.type].info.layoutpos;\r\n let vertices = [];\r\n item.vertices.forEach(data => {\r\n let vertex = layer.vertices.get(data);\r\n vertices.push({ x: vertex.x, y: vertex.y });\r\n });\r\n let vec = new Three.Vector2(\r\n vertices[1].x - vertices[0].x,\r\n vertices[1].y - vertices[0].y\r\n );\r\n let tRot = vec.angle();\r\n let tPos = new Three.Vector2(\r\n (vertices[0].x + vertices[1].x) / 2,\r\n (vertices[0].y + vertices[1].y) / 2\r\n );\r\n let tdepth = item.properties.getIn(['thickness', 'length']);\r\n let twidth = Math.sqrt(vec.x * vec.x + vec.y * vec.y);\r\n let tVertices = this.getRectPoints(twidth, tdepth, tPos.clone(), tRot);\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n this.collisionHoleCheck = function (\r\n obj,\r\n pos,\r\n rot,\r\n tObj,\r\n item = null,\r\n catalog\r\n ) {\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n obj.userData.layerId\r\n ]);\r\n let currentItem;\r\n if (item !== null) {\r\n let catid = item.type;\r\n let cat = catalog.elements[catid];\r\n currentItem = {\r\n selectedItem: item,\r\n cat\r\n };\r\n }\r\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\r\n let sBounding = obj.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let oVertices = this.getRectPoints(\r\n width,\r\n depth,\r\n oPos.clone(),\r\n ((rot % 360) / 180) * Math.PI\r\n );\r\n\r\n let datas = [];\r\n layer.items.forEach(data => {\r\n datas.push(data);\r\n });\r\n for (let i = 0; i < datas.length; i++) {\r\n let data = datas[i];\r\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\r\n continue;\r\n let target =\r\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\r\n if (target === undefined) {\r\n console.log(\r\n data.id +\r\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\r\n );\r\n return false;\r\n }\r\n let item = layer.items.getIn([data.id]);\r\n let ocatid = item.type;\r\n let ocat = catalog.elements[ocatid];\r\n if (!ocat)\r\n ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];\r\n let otherItem = {\r\n item,\r\n cat: ocat\r\n };\r\n\r\n if (\r\n GeometryUtils.needSnap(currentItem, otherItem) &&\r\n otherItem.cat.type != 'cabinet'\r\n ) {\r\n let tRot = item.rotation;\r\n let tPos = new Three.Vector2(item.x, item.y);\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n tPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n let holes = [];\r\n layer.lines.forEach(line => {\r\n line.holes.forEach(holeID => {\r\n let hole = layer.holes.get(holeID);\r\n holes.push(hole);\r\n });\r\n });\r\n let i = 0;\r\n for (; i < holes.length; i++) {\r\n let tPos = new Three.Vector2(holes[i].x, holes[i].y);\r\n let twidth = holes[i].properties.getIn(['width', 'length']);\r\n let theight = holes[i].properties.getIn(['thickness', 'length']);\r\n let trot = holes[i].rotation;\r\n let tVertices = this.getRectPoints(twidth, theight, tPos.clone(), trot);\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n this.collisionSlide = function (\r\n item3D,\r\n originPos,\r\n layer,\r\n sVertices,\r\n tPos,\r\n item\r\n ) {\r\n let items = [];\r\n\r\n let cur_category = '';\r\n let catalog = actions.catalog;\r\n if (layer.selected.items.size > 0) {\r\n let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);\r\n let catid = selectedItem.type;\r\n let cat = catalog.elements[catid];\r\n if (cat === undefined || cat === null)\r\n cat = catalog.getIn(['elements', catid]);\r\n cur_category = cat.obj.category;\r\n }\r\n\r\n layer.items.forEach(data => {\r\n if (data.id == selectedObject.itemID) {\r\n return;\r\n }\r\n\r\n items.push(data.toJS());\r\n });\r\n let oPos = new Three.Vector2(originPos.x, -originPos.z);\r\n\r\n // sort from distance\r\n for (let i = 0; i < items.length - 1; i++) {\r\n for (let j = i + 1; j < items.length; j++) {\r\n if (\r\n verticesDistance(oPos, new Three.Vector2(items[i].x, items[i].y)) >\r\n verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))\r\n ) {\r\n let exchange = items[j];\r\n items[j] = items[i];\r\n items[i] = exchange;\r\n }\r\n }\r\n }\r\n let i = 0;\r\n\r\n for (; i < items.length; i++) {\r\n if (!items[i]) return;\r\n let target =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\r\n if (target === undefined) {\r\n return false;\r\n }\r\n let targetData = layer.items.getIn([items[i].id]);\r\n let tRot = targetData.rotation;\r\n let tPos = new Three.Vector2(targetData.x, targetData.y);\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n tPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n if (getInterSect(sVertices, tVertices)) {\r\n break;\r\n }\r\n }\r\n if (items.length == 0 || !items[i]) return;\r\n let target =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\r\n let targetData = layer.items.getIn([items[i].id]);\r\n let targetPos = new Three.Vector2(targetData.x, targetData.y);\r\n let tRot = targetData.rotation;\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n targetPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n // ////////////////////////\r\n let vArray = [];\r\n let dteArray = [];\r\n let lineArray = [];\r\n let vdistanceArray = [];\r\n let cVecArray = [];\r\n let inFlag = false;\r\n for (let i = 0; i < 4; i++) {\r\n let v1 = tVertices[i];\r\n let v2 = tVertices[i + 1];\r\n let data = pointLineDistance({ x: tPos.x, y: tPos.y }, [\r\n { x: v1.x, y: v1.y },\r\n { x: v2.x, y: v2.y }\r\n ]);\r\n dteArray.push(data.distance);\r\n vArray.push(data.point);\r\n lineArray.push([v1, v2]);\r\n }\r\n // if tPos in target object\r\n let tPosDistance =\r\n Math.abs(pointLineDistance(tPos, lineArray[0]).distance) +\r\n Math.abs(pointLineDistance(tPos, lineArray[2]).distance);\r\n let realDistance = new Three.Vector2(\r\n lineArray[1][0].x - lineArray[1][1].x,\r\n lineArray[1][0].y - lineArray[1][1].y\r\n ).length();\r\n let tPosDistance1 =\r\n Math.abs(pointLineDistance(tPos, lineArray[1]).distance) +\r\n Math.abs(pointLineDistance(tPos, lineArray[3]).distance);\r\n let realDistance1 = new Three.Vector2(\r\n lineArray[0][0].x - lineArray[0][1].x,\r\n lineArray[0][0].y - lineArray[0][1].y\r\n ).length();\r\n if (\r\n Math.abs(Math.abs(tPosDistance) - Math.abs(realDistance)) < 0.01 &&\r\n Math.abs(Math.abs(tPosDistance1) - Math.abs(realDistance1)) < 0.01\r\n )\r\n inFlag = true;\r\n // ////////////////////\r\n let key = 0;\r\n // sort distance from origin point\r\n for (let j = 0; j < dteArray.length - 1; j++) {\r\n for (let k = j + 1; k < dteArray.length; k++) {\r\n if (Math.abs(dteArray[j]) > Math.abs(dteArray[k])) {\r\n let temp = dteArray[k];\r\n dteArray[j] = dteArray[k];\r\n dteArray[k] = temp;\r\n let temp1 = vArray[k];\r\n vArray[j] = vArray[k];\r\n vArray[k] = temp1;\r\n let temp2 = lineArray[k];\r\n lineArray[j] = lineArray[k];\r\n lineArray[k] = temp2;\r\n }\r\n }\r\n }\r\n // //////////////////////////////\r\n for (let i = 0; i < 4; i++) {\r\n let data = pointLineDistance(sVertices[i], lineArray[key]);\r\n vdistanceArray.push(data.distance);\r\n cVecArray.push({\r\n x: data.point.x - sVertices[i].x,\r\n y: data.point.y - sVertices[i].y\r\n });\r\n }\r\n\r\n for (let j = 0; j < vdistanceArray.length; j++) {\r\n let tX = tPos.x + cVecArray[j].x;\r\n let tY = tPos.y + cVecArray[j].y;\r\n if (\r\n this.collisionCheck(\r\n item3D,\r\n new Three.Vector2(tX, tY),\r\n item.rotation,\r\n {\r\n userData: { itemId: null }\r\n },\r\n item,\r\n this.context.catalog\r\n )\r\n ) {\r\n item3D.position.set(tX, originPos.y, -tY);\r\n sPoint.set(tX, tY);\r\n break;\r\n }\r\n }\r\n };\r\n\r\n this.snap = function (obj, layer) {\r\n // snap operation\r\n let target = obj.userData.target;\r\n for (; target.parent != null; ) {\r\n if (target.name == 'pivot') break;\r\n target = target.parent;\r\n }\r\n let source = obj.parent.parent.parent;\r\n if (target.userData.type == 'item') {\r\n let sRot = layer.getIn(['items', source.userData.itemId]).rotation;\r\n let tRot = layer.getIn(['items', target.userData.itemId])\r\n ? layer.getIn(['items', target.userData.itemId]).rotation\r\n : 0;\r\n let item = layer.getIn(['items', source.userData.itemId]);\r\n let layoutType = item.layoutpos;\r\n let altitudeLength = convert(\r\n item.properties.getIn(['altitude', '_length'])\r\n )\r\n .from('in')\r\n .to('cm');\r\n let sBounding = source.children[0].userData;\r\n let tBounding = target.children[0].userData;\r\n let tPos = target.position.clone();\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let height = sBounding.max.y - sBounding.min.y;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\r\n let snapBoxObj = new Three.Mesh(\r\n snapBoxGeom,\r\n new Three.MeshBasicMaterial({\r\n // color: 0x2cde6b,\r\n // opacity: 0.7,\r\n transparent: true,\r\n blending: Three.MultiplyBlending\r\n })\r\n );\r\n let removeSnapBoxObj = () => {\r\n if (snapBoxObj) {\r\n planData.plan.remove(snapBoxObj);\r\n disposeObject(snapBoxObj);\r\n }\r\n snapFlag = false;\r\n };\r\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\r\n box.material.linewidth = 2;\r\n box.material.depthTest = false;\r\n box.renderOrder = 200;\r\n snapBoxObj.add(box);\r\n snapBoxObj.position.set(\r\n source.position.x,\r\n layoutType === WALL_CABINET_LAYOUTPOS\r\n ? altitudeLength + source.position.y + height / 2\r\n : source.position.y + height / 2,\r\n source.position.z\r\n );\r\n snapBoxObj.rotation.set(\r\n source.rotation.x,\r\n source.rotation.y,\r\n source.rotation.z\r\n );\r\n snapBoxObj.name = 'TransformBox';\r\n planData.plan.add(snapBoxObj);\r\n let deltaX =\r\n (tBounding.max.x - tBounding.min.x) / 2 +\r\n (sBounding.max.x - sBounding.min.x) / 2;\r\n let deltaZ =\r\n (tBounding.max.z - tBounding.min.z) / 2 -\r\n (sBounding.max.z - sBounding.min.z) / 2;\r\n let sPos = snapBoxObj.position.clone();\r\n // avaliable snap place///////////////\r\n let tPoses = [];\r\n let pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n let pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n deltaX = -deltaX;\r\n pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n deltaX =\r\n (tBounding.max.x - tBounding.min.x) / 2 -\r\n (sBounding.max.x - sBounding.min.x) / 2;\r\n deltaZ =\r\n -(tBounding.max.z - tBounding.min.z) / 2 -\r\n (sBounding.max.z - sBounding.min.z) / 2;\r\n pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n deltaX = -deltaX;\r\n pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n let distance = Math.sqrt(\r\n (sPos.x - tPoses[0].x) * (sPos.x - tPoses[0].x) +\r\n (sPos.z - tPoses[0].z) * (sPos.z - tPoses[0].z)\r\n );\r\n let tNum = 1;\r\n tPos = tPoses[0].clone();\r\n for (let i = 1; i < tPoses.length; i++) {\r\n let curDis = Math.sqrt(\r\n (sPos.x - tPoses[i].x) * (sPos.x - tPoses[i].x) +\r\n (sPos.z - tPoses[i].z) * (sPos.z - tPoses[i].z)\r\n );\r\n if (curDis < distance) {\r\n distance = curDis;\r\n tNum = i + 1;\r\n tPos = tPoses[i].clone();\r\n }\r\n }\r\n // //////////////////////////////////\r\n if (\r\n targetObj != null &&\r\n targetObj.userData.itemId == target.userData.itemId &&\r\n tNum == targetNumber\r\n ) {\r\n removeSnapBoxObj();\r\n return;\r\n } else {\r\n removeSnapBox();\r\n }\r\n // //////////////////////////////////\r\n if (tNum >= 3) tRot += 180;\r\n\r\n snapAnimI = 0;\r\n t_i = 0;\r\n targetObj = target;\r\n targetNumber = tNum;\r\n targetRot = tRot;\r\n targetPoint = tPos;\r\n snapBox = snapBoxObj;\r\n let cx = sPos.x - tPos.x;\r\n let cz = sPos.z - tPos.z;\r\n targetUVec = new Three.Vector3(cx, 0, cz);\r\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\r\n } else {\r\n let item = layer.getIn(['items', source.userData.itemId]);\r\n if (holeItems.length && selectedObj) {\r\n let i;\r\n for (i = 0; i < holeItems.length; i++) {\r\n let hole = holeItems[i];\r\n if (Math.abs(Math.sin(selectedObj.rotRad)) === 1) {\r\n if (\r\n item.y + selectedObj.size.width / 2 >=\r\n hole.y - hole.width / 2 &&\r\n item.y - selectedObj.size.width / 2 <=\r\n hole.y + hole.width / 2 &&\r\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\r\n ? item.x <= hole.x &&\r\n item.x + selectedObj.size.height >= hole.x\r\n : item.x >= hole.x &&\r\n item.x - selectedObj.size.height <= hole.x)\r\n )\r\n break;\r\n } else {\r\n if (\r\n item.x + selectedObj.size.width / 2 >=\r\n hole.x - hole.width / 2 &&\r\n item.x - selectedObj.size.width / 2 <=\r\n hole.x + hole.width / 2 &&\r\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\r\n ? item.y <= hole.y &&\r\n item.y + selectedObj.size.height >= hole.y\r\n : item.y >= hole.y &&\r\n item.y - selectedObj.size.height <= hole.y)\r\n )\r\n break;\r\n }\r\n }\r\n if (i != holeItems.length) return;\r\n }\r\n if (target.userData.type == 'hole') {\r\n snapFlag = false;\r\n return;\r\n } else {\r\n let layoutType = item.layoutpos;\r\n let altitudeLength = convert(\r\n item.properties.getIn(['altitude', '_length'])\r\n )\r\n .from('in')\r\n .to('cm');\r\n let sBounding = source.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let height = sBounding.max.y - sBounding.min.y;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\r\n let snapBoxObj = new Three.Mesh(\r\n snapBoxGeom,\r\n new Three.MeshBasicMaterial({\r\n // color: 0x2cde6b,\r\n // opacity: 0.7,\r\n transparent: true,\r\n blending: Three.MultiplyBlending\r\n })\r\n );\r\n let removeSnapBoxObj = () => {\r\n if (snapBoxObj) {\r\n planData.plan.remove(snapBoxObj);\r\n disposeObject(snapBoxObj);\r\n }\r\n snapFlag = false;\r\n };\r\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\r\n box.material.linewidth = 2;\r\n box.material.depthTest = false;\r\n box.renderOrder = 100;\r\n snapBoxObj.add(box);\r\n\r\n snapBoxObj.position.set(\r\n source.position.x,\r\n layoutType === WALL_CABINET_LAYOUTPOS\r\n ? altitudeLength + source.position.y + height / 2\r\n : source.position.y + height / 2,\r\n source.position.z\r\n );\r\n snapBoxObj.rotation.set(\r\n source.rotation.x,\r\n source.rotation.y,\r\n source.rotation.z\r\n );\r\n snapBoxObj.name = 'TransformBox';\r\n planData.plan.add(snapBoxObj);\r\n\r\n let snapLine = layer.getIn(['lines', target.userData.lineId]);\r\n // let snapLineThickness = snapLine.properties.getIn([\r\n // 'thickness',\r\n // 'length'\r\n // ]);\r\n let snapLineThickness = 10.64;\r\n let vertices = [];\r\n if (snapLine === undefined) return;\r\n snapLine.vertices.forEach(data => {\r\n let vec = layer.getIn(['vertices', data]);\r\n vertices.push(vec);\r\n });\r\n let iX = source.position.clone().x;\r\n let iY = -source.position.clone().z;\r\n let lineVec = new Three.Vector2(\r\n vertices[1].x - vertices[0].x,\r\n vertices[1].y - vertices[0].y\r\n );\r\n let oLength = Math.sqrt(\r\n lineVec.x * lineVec.x + lineVec.y * lineVec.y\r\n );\r\n lineVec.normalize();\r\n let vec2 = new Three.Vector2(iX - vertices[0].x, iY - vertices[0].y);\r\n let vec2Legnth = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);\r\n let angle = Math.abs(lineVec.angle() - vec2.angle());\r\n angle = angle > Math.PI ? 2 * Math.PI - angle : angle;\r\n let lineLength = Math.cos(angle) * vec2Legnth;\r\n let transLength = 0;\r\n if (lineLength < 100) {\r\n transLength = -lineLength + (snapLineThickness + width) / 2;\r\n }\r\n if (lineLength > oLength - 100) {\r\n transLength =\r\n -lineLength - (snapLineThickness + width) / 2 + oLength;\r\n }\r\n let directPoint = new Three.Vector2(\r\n lineVec.x * lineLength + vertices[0].x,\r\n lineVec.y * lineLength + vertices[0].y\r\n );\r\n let directLine = new Three.Vector2(\r\n directPoint.x - iX,\r\n directPoint.y - iY\r\n );\r\n let dLength = Math.sqrt(\r\n (iX - directPoint.x) * (iX - directPoint.x) +\r\n (iY - directPoint.y) * (iY - directPoint.y)\r\n );\r\n let reduceLen = (snapLineThickness + depth) / 2;\r\n let scale = (dLength - reduceLen) / dLength;\r\n let tPos = new Three.Vector2(\r\n iX + (directPoint.x - iX) * scale + lineVec.x * transLength,\r\n iY + (directPoint.y - iY) * scale + lineVec.y * transLength\r\n );\r\n let realAngle = directLine.angle() - Math.PI / 2;\r\n let tRot = (realAngle * 180) / Math.PI;\r\n let sPos = new Three.Vector2(iX, iY);\r\n let sRot = item.rotation;\r\n let tNum = 0;\r\n // //////////////////////////////////////\r\n // check part////\r\n let result = this.collisionCheck(\r\n source,\r\n tPos,\r\n tRot,\r\n target,\r\n item,\r\n this.context.catalog\r\n );\r\n // console.log('result', result);\r\n if (result == false) {\r\n removeSnapBoxObj();\r\n removeSnapBox();\r\n return;\r\n }\r\n // ////////////////\r\n if (targetObj === target && snapBox !== null) {\r\n removeSnapBoxObj();\r\n snapAnimI = 20;\r\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\r\n let sourcePos = snapBox.position.clone();\r\n let cx = sourcePos.x - targetPoint.x;\r\n let cz = sourcePos.z - targetPoint.z;\r\n targetUVec = new Three.Vector3(cx, 0, cz);\r\n targetRot = tRot;\r\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\r\n snapFlag = false;\r\n return;\r\n } else {\r\n removeSnapBox();\r\n }\r\n // //////////////////////////////////////\r\n snapAnimI = 0;\r\n t_i = 0;\r\n targetObj = target;\r\n targetNumber = tNum;\r\n targetRot = tRot;\r\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\r\n snapBox = snapBoxObj;\r\n let sourcePos = snapBox.position.clone();\r\n let cx = sourcePos.x - targetPoint.x;\r\n let cz = sourcePos.z - targetPoint.z;\r\n targetUVec = new Three.Vector3(cx, 0, cz);\r\n targetRot = tRot;\r\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\r\n }\r\n }\r\n };\r\n\r\n /*end of snap functions*/\r\n let selectedObj = null;\r\n let firstMove = false;\r\n let prevX, prevY;\r\n\r\n let selObj = null;\r\n\r\n let createToolObject = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 100;\r\n canvas.height = 200;\r\n canvas.style.width = 50 + 'px';\r\n canvas.style.height = 100 + 'px';\r\n const ctx = canvas.getContext('2d');\r\n ctx.fillStyle = '#FFFFFF';\r\n ctx.strokeStyle = '#000000';\r\n ctx.beginPath();\r\n ctx.arc(50, 50, 40, 0, 4 * Math.PI);\r\n ctx.fill();\r\n ctx.stroke();\r\n let img1 = new Image();\r\n img1.crossOrigin = 'anonymous';\r\n img1.src = '/assets/img/svg/3d_item_rotation.svg';\r\n img1.onload = function () {\r\n ctx.drawImage(img1, 16, 16, 68, 68);\r\n };\r\n\r\n ctx.beginPath();\r\n ctx.arc(50, 150, 40, 0, 4 * Math.PI);\r\n ctx.fill();\r\n ctx.stroke();\r\n let img2 = new Image();\r\n img2.crossOrigin = 'anonymous';\r\n img2.src = '/assets/img/svg/3d_item_move.svg';\r\n img2.onload = function () {\r\n ctx.drawImage(img2, 16, 116, 68, 68);\r\n };\r\n\r\n return canvas;\r\n };\r\n\r\n let clockWise = true;\r\n let lastAngle = 0;\r\n\r\n let createAngleObject = rotate => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 100;\r\n canvas.height = 100;\r\n canvas.style.width = 100 + 'px';\r\n canvas.style.height = 100 + 'px';\r\n const ctx = canvas.getContext('2d');\r\n ctx.strokeStyle = '#FFFFFF';\r\n ctx.lineWidth = 10;\r\n ctx.beginPath();\r\n ctx.arc(50, 50, 45, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n\r\n ctx.strokeStyle = SECONDARY_PURPLE_COLOR;\r\n ctx.lineWidth = 6;\r\n ctx.beginPath();\r\n if (lastAngle < 15 && lastAngle > -15) {\r\n if (rotate >= 0) {\r\n clockWise = false;\r\n } else {\r\n clockWise = true;\r\n }\r\n if (lastAngle === 0) {\r\n if (rotate > -180) {\r\n clockWise = true;\r\n } else {\r\n clockWise = false;\r\n }\r\n }\r\n }\r\n\r\n ctx.arc(50, 50, 45, 0, (rotate / 180.0) * Math.PI, clockWise);\r\n ctx.stroke();\r\n\r\n lastAngle = rotate;\r\n\r\n return canvas;\r\n };\r\n\r\n let toolTexture = new Three.Texture(createToolObject());\r\n toolTexture.needsUpdate = true;\r\n\r\n let toolObj = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: toolTexture, sizeAttenuation: true })\r\n );\r\n toolObj.material.transparent = true;\r\n toolObj.material.depthTest = false;\r\n toolObj.scale.set(20, 40, 20);\r\n toolObj.renderOrder = 3;\r\n toolObj.name = 'toolObj';\r\n\r\n let angleTexture = new Three.Texture(createAngleObject(0));\r\n angleTexture.needsUpdate = true;\r\n\r\n let angleObj = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: angleTexture, sizeAttenuation: false })\r\n );\r\n\r\n angleObj.scale.set(0.075, 0.075, 0.075);\r\n angleObj.material.transparent = true;\r\n angleObj.material.depthTest = false;\r\n angleObj.renderOrder = 3;\r\n angleObj.name = 'angleObj';\r\n\r\n /**\r\n * Calculate plane point of mouse with `event` & `altitude`\r\n * * Calculate mouse.x & mouse.y\r\n * * Set raycaster from camera & Set raycaster direction\r\n * * Calculate Point & dispatch an action\r\n */\r\n const getPoint = (e, alti) => {\r\n mouse.x = (e.offsetX / this.width) * 2 - 1;\r\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\r\n\r\n raycaster.setFromCamera(mouse, camera);\r\n rayDirection = raycaster.ray.direction;\r\n\r\n Point = mapCursorPosition(e, alti);\r\n this.context.projectActions.updateMouseCoord(Point);\r\n };\r\n\r\n const getIntersectWallPoint = e => {\r\n mouse.x = (e.offsetX / this.width) * 2 - 1;\r\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\r\n\r\n raycaster.setFromCamera(mouse, camera);\r\n rayDirection = raycaster.ray.direction;\r\n\r\n let lines = planData.sceneGraph.layers[scene.selectedLayer].lines;\r\n let keys = Object.keys(lines);\r\n let arrMesh = [];\r\n keys.forEach(key => {\r\n lines[key].children[0].children.forEach(mesh => {\r\n if (mesh.name == 'soul' && mesh.visible) arrMesh.push(mesh);\r\n });\r\n });\r\n if (arrMesh.length > 0) {\r\n const intersects = raycaster.intersectObjects(arrMesh);\r\n if (intersects.length > 0) {\r\n let intersectPt = intersects[0].point;\r\n intersectPt.applyMatrix4(gridMatrix);\r\n\r\n Point = { x: intersectPt.x, y: -intersectPt.z };\r\n this.context.projectActions.updateMouseCoord(Point);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const updateSelectedObject = () => {\r\n // update the selected object\r\n let selectedLayerId = this.props.state.scene.selectedLayer;\r\n let selItemId = this.props.state.scene\r\n .getIn(['layers', selectedLayerId, 'selected', 'items'])\r\n .toJS()[0];\r\n selectedObject = {\r\n layerID: selectedLayerId,\r\n itemID: selItemId\r\n };\r\n };\r\n\r\n this.mouseDownEvent = event => {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n let altitude = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n altitude = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\r\n }\r\n getPoint(event, altitude);\r\n\r\n const state = this.props.state;\r\n\r\n this.lastMousePosition.x = mouse.x;\r\n this.lastMousePosition.y = mouse.y;\r\n\r\n const layer = state.scene.getIn(['layers', state.scene.selectedLayer]);\r\n const sCount =\r\n layer.selected.areas.size +\r\n layer.selected.holes.size +\r\n layer.selected.items.size +\r\n layer.selected.lines.size;\r\n\r\n if (sCount <= 0) {\r\n isSelected = false;\r\n } else if (sCount >= 0 && selectedObject && 'holeID' in selectedObject) {\r\n isSelected = true;\r\n }\r\n\r\n prevX = Point.x;\r\n prevY = Point.y;\r\n\r\n /**\r\n * 0 - rotate\r\n * 1 - move up/down\r\n * 2 - move x/y\r\n * 3 - camera rotate\r\n */\r\n let transflag = 3;\r\n raycaster.setFromCamera(mouse, camera);\r\n const meshes = [];\r\n toIntersect.forEach(object => {\r\n if (!object) return;\r\n object.traverse(o => {\r\n if (o.isMesh) meshes.push(o);\r\n });\r\n });\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n\r\n let toolIntersects = raycaster.intersectObjects([toolObj], true);\r\n\r\n // This code is excuted when click the tool object(rotation or move icon).\r\n if (toolIntersects.length > 0) {\r\n updateSelectedObject();\r\n // it determines whether mouse is over on rotation icon or move icon.\r\n let distance = Math.sqrt(\r\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\r\n Math.pow((toolIntersects[0].uv.y - 0.25) * 100, 2)\r\n );\r\n // move icon selected\r\n if (distance <= 20) {\r\n transflag = 2;\r\n } else {\r\n distance = Math.sqrt(\r\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\r\n Math.pow((toolIntersects[0].uv.y - 0.75) * 100, 2)\r\n );\r\n // rotation icon selected\r\n if (distance <= 20) {\r\n transflag = 0;\r\n }\r\n }\r\n }\r\n\r\n if (intersects.length > 0) {\r\n let i = 0,\r\n length = intersects.length;\r\n for (i = 0; i < length; i++) {\r\n if (\r\n intersects[i].object.type !== 'BoxHelper' &&\r\n // intersects[i].object.type === OBJTYPE_MESH &&\r\n intersects[i].object.name !== 'lineText' &&\r\n intersects[i].object.name !== 'soul' &&\r\n !intersects[i].object.name.includes('WarningBox')\r\n )\r\n break;\r\n }\r\n\r\n if (intersects[i] !== undefined) {\r\n if (intersects[i].object.name.indexOf('transUp') != -1) transflag = 1;\r\n if (intersects[i].object.name.indexOf('transHole') != -1)\r\n transflag = 2;\r\n } else {\r\n console.log('intersects[i] is undefined in viewer3d/viewer3d.js');\r\n }\r\n }\r\n\r\n if (this.props.state.mode == MODE_DRAWING_ITEM_3D) return;\r\n\r\n if (isSelected) {\r\n !this.props.downloadFlag && this.props.setToolbar('');\r\n\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n let i;\r\n for (i = 0; i < intersects.length; i++) {\r\n if (\r\n intersects[i].object instanceof Three.Mesh &&\r\n intersects[i].object.name != 'TransformBox' &&\r\n intersects[i].object.type != 'Line' &&\r\n intersects[i].object.name != 'lineText' &&\r\n intersects[i].object.name != 'countertops' &&\r\n intersects[i].object.type != 'BoxHelper' &&\r\n intersects[i].object.name != 'floor' &&\r\n intersects[i].object.name != 'backFace' &&\r\n intersects[i].object.name != 'soul' &&\r\n !intersects[i].object.name.includes('backsplash') &&\r\n !intersects[i].object.name.includes('WarningBox')\r\n )\r\n break;\r\n }\r\n if (intersects[i] === undefined) {\r\n if (transflag !== 0 && transflag !== 2) {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n return;\r\n }\r\n }\r\n if (selectedObject !== undefined) {\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n sPoint.set(Point.x, Point.y);\r\n if (transflag == 0) {\r\n scene3D.remove(toolObj);\r\n let alti = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n alti = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n alti = convert(alti).from(unit).to(this.props.state.scene.unit);\r\n }\r\n getPoint(\r\n { offsetX: event.offsetX - 50, offsetY: event.offsetY },\r\n alti\r\n );\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n\r\n lastAngle = 0;\r\n\r\n angleObj.position.set(\r\n planData.plan.position.x + Point.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : selItem.properties.get('altitude').get('length') +\r\n planData.plan.position.y,\r\n planData.plan.position.z - Point.y\r\n );\r\n\r\n angleTexture.image = createAngleObject(0);\r\n angleTexture.needsUpdate = true;\r\n\r\n scene3D.add(angleObj);\r\n this.setState({ angleObj: angleObj });\r\n let centerPos = Point;\r\n getPoint(event, alti);\r\n\r\n this.context.itemsActions.beginRotatingItem3D(\r\n selectedObject.layerID,\r\n selectedObject.itemID,\r\n Point.x,\r\n Point.y,\r\n centerPos.x,\r\n centerPos.y\r\n );\r\n bRotate = true;\r\n } else if (transflag == 1) {\r\n bMoveUP = true;\r\n } else if (transflag == 2) {\r\n switch (true) {\r\n case 'holeID' in selectedObject:\r\n this.context.holesActions.beginDraggingHole3D(\r\n selectedObject.layerID,\r\n selectedObject.holeID,\r\n Point.x,\r\n Point.y\r\n );\r\n break;\r\n default:\r\n this.context.itemsActions.beginDraggingItem3D(\r\n selectedObject.layerID,\r\n selectedObject.itemID,\r\n Point.x,\r\n Point.y\r\n );\r\n break;\r\n }\r\n bMove = true;\r\n scene3D.remove(toolObj);\r\n }\r\n for (i = 0; i < intersects.length; i++) {\r\n if (\r\n selectedItem != undefined &&\r\n intersects[i].object.parent &&\r\n intersects[i].object.parent.parent.userData.itemId ===\r\n selectedItem.userData.itemId\r\n )\r\n selectedFlag = true;\r\n }\r\n if (\r\n selectedFlag ||\r\n (toolIntersects.length > 0 && !isElevationView(mode))\r\n ) {\r\n cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;\r\n selectedFlag = false;\r\n } else {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n }\r\n }\r\n } else {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n return;\r\n }\r\n }\r\n };\r\n\r\n this.mouseUpEvent = event => {\r\n firstMove = 0;\r\n let altitude = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n altitude = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\r\n }\r\n scene3D.remove(angleObj);\r\n scene3D.remove(toolObj);\r\n if (!this.props.downloadFlag && !this.props.state.mode.includes('ING')) {\r\n this.props.setToolbar('');\r\n }\r\n getPoint(event, altitude);\r\n if (this.props.state.mode == MODE_DRAWING_ITEM_3D) {\r\n if (Point.x > this.props.state.scene.width)\r\n Point.x = this.props.state.width;\r\n if (Point.y > this.props.state.scene.height)\r\n Point.y = this.props.state.height;\r\n if (Point.x < 0) Point.x = 0;\r\n if (Point.y < 0) Point.y = 0;\r\n if (snapBox == null) {\r\n actions.itemsActions.endDrawingItem(\r\n this.props.state.scene.selectedLayer,\r\n sPoint.x,\r\n sPoint.y\r\n );\r\n } else {\r\n actions.itemsActions.updateDraggingItemChanged(\r\n targetPoint.x,\r\n -targetPoint.z,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n this.context.itemsActions.updateRotatingItemChanged(\r\n targetRot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n removeSnapBox();\r\n\r\n actions.itemsActions.endDrawingItem(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n }\r\n bMove = false;\r\n return;\r\n }\r\n\r\n if (this.props.state.mode == MODE_DRAGGING_ITEM_3D) {\r\n this.context.itemsActions.endDraggingItem3D();\r\n }\r\n\r\n if (this.props.state.mode == MODE_ROTATING_ITEM_3D) {\r\n this.context.itemsActions.endRotatingItem3D(sPoint.x, sPoint.y);\r\n }\r\n\r\n if (this.props.state.mode == MODE_DRAWING_HOLE_3D) {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n if (!getIntersectWallPoint(event)) return;\r\n actions.holesActions.endDrawingHole3D(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n bMove = false;\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n if (event.button === 0) {\r\n cameraControls.mouseButtons.left = CameraControls.ACTION.ROTATE;\r\n mouse.x = (event.offsetX / this.width) * 2 - 1;\r\n mouse.y = -(event.offsetY / this.height) * 2 + 1;\r\n\r\n raycaster.setFromCamera(mouse, camera);\r\n rayDirection = raycaster.ray.direction;\r\n rayDirection = rayDirection.normalize();\r\n\r\n const meshes = [];\r\n toIntersect.forEach(object => {\r\n if (!object) return;\r\n object.traverse(o => {\r\n if (o.isMesh) meshes.push(o);\r\n });\r\n });\r\n\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n let i;\r\n\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n for (i = 0; i < intersects.length; i++) {\r\n if (intersects[i].object.name === 'warningObj') break;\r\n }\r\n if (intersects[i] !== undefined) {\r\n let distance = Math.sqrt(\r\n Math.pow((intersects[i].uv.x - 0.5) * 50, 2) +\r\n Math.pow((intersects[i].uv.y - 0.25) * 100, 2)\r\n );\r\n if (distance <= 20) {\r\n if (!bMove && !bRotate) {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n\r\n let replaceInfo = intersects[i].object.parent.parent.userData;\r\n this.context.itemsActions.selectItem(\r\n replaceInfo.layerId,\r\n replaceInfo.itemId\r\n );\r\n !this.props.downloadFlag && this.props.replaceCabinet(true);\r\n\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n !this.props.downloadFlag && this.props.replaceCabinet(false);\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n for (i = 0; i < intersects.length; i++) {\r\n if (\r\n intersects[i].object instanceof Three.Mesh &&\r\n intersects[i].object.name != 'TransformBox' &&\r\n intersects[i].object.type != 'Line' &&\r\n intersects[i].object.name != 'lineText' &&\r\n intersects[i].object.name != 'countertops' &&\r\n intersects[i].object.type != 'BoxHelper' &&\r\n intersects[i].object.name != 'soul' &&\r\n !intersects[i].object.name.includes('backsplash') &&\r\n !intersects[i].object.name.includes('WarningBox')\r\n )\r\n break;\r\n }\r\n }\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n if (\r\n (Math.abs(mouse.x - this.lastMousePosition.x) <= 0.02 &&\r\n Math.abs(mouse.y - this.lastMousePosition.y) <= 0.02) ||\r\n bMove\r\n ) {\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n if (intersects[i] === undefined) {\r\n if (!bMove) {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n return;\r\n }\r\n }\r\n\r\n if (!bMove) {\r\n selectedObject =\r\n intersects[i].object.interact &&\r\n intersects[i].object.interact();\r\n }\r\n\r\n if (selectedObject !== undefined && 'itemID' in selectedObject) {\r\n currentObject = intersects[i].object;\r\n for (; currentObject.parent != null; ) {\r\n if (currentObject.name == 'pivot') break;\r\n currentObject = currentObject.parent;\r\n }\r\n isSelected = true;\r\n setTimeout(() => {\r\n getDistances(layer);\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = selectedItem.position.clone();\r\n\r\n if (\r\n intersects[i].object.parent &&\r\n intersects[i].object.parent.parent.userData.itemId ===\r\n selectedItem.userData.itemId\r\n ) {\r\n toolObj.position.set(\r\n intersects[i].point.x,\r\n intersects[i].point.y,\r\n intersects[i].point.z\r\n );\r\n } else {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y +\r\n selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);\r\n let pointArray = [],\r\n cnt = 0;\r\n pointArray.push([fVLine[0].userData.distance, 90]);\r\n pointArray.push([fVLine[1].userData.distance, -90]);\r\n pointArray.push([fVLine[2].userData.distance, 180]);\r\n pointArray.push([fVLine[3].userData.distance, 0]);\r\n pointArray.forEach((pointElement, index) => {\r\n if (pointElement[0] == undefined) pointArray[index][0] = 0;\r\n });\r\n pointArray.forEach(pointElement => {\r\n if (pointElement[0] == 0) cnt++;\r\n });\r\n if (cnt == 4 || cnt == 3) {\r\n pointArray[0][0] = 100;\r\n pointArray[1][0] = 100;\r\n }\r\n actions.itemsActions.storeDistArray(\r\n layer.id,\r\n selectedObject.itemID,\r\n pointArray\r\n );\r\n });\r\n } else {\r\n if (selectedObject) {\r\n switch (true) {\r\n case 'holeID' in selectedObject:\r\n if (selObj?.object?.name.includes('transHole')) {\r\n actions.holesActions.endDraggingHole3D(\r\n sPoint.x,\r\n sPoint.y\r\n );\r\n }\r\n break;\r\n case 'lineID' in selectedObject:\r\n if (selObj?.object?.name.includes('transHole')) {\r\n actions.holesActions.endDraggingHole3D(\r\n sPoint.x,\r\n sPoint.y\r\n );\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n isSelected = false;\r\n }\r\n } else {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n switch (true) {\r\n case 'holeID' in selectedObject:\r\n actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);\r\n break;\r\n default:\r\n this.context.itemsActions.removeReplacingSupport();\r\n break;\r\n }\r\n }\r\n bMove = false;\r\n bRotate = false;\r\n bMoveUP = false;\r\n if (isSelected) {\r\n prepareSnap(layer);\r\n selectedObj = allItemRect.cur;\r\n }\r\n } else {\r\n visibleTransformBox(false);\r\n let alti = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n alti = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n alti = convert(alti).from(unit).to(this.props.state.scene.unit);\r\n }\r\n getPoint(event, alti);\r\n if (bRotate) {\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = selectedItem.position.clone();\r\n\r\n if (\r\n intersects[i]?.object?.parent?.parent?.userData?.itemId ===\r\n selectedItem.userData.itemId\r\n ) {\r\n toolObj.position.set(\r\n intersects[i].point.x,\r\n intersects[i].point.y,\r\n intersects[i].point.z\r\n );\r\n } else {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y +\r\n selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n this.context.itemsActions.endRotatingItem3D(Point.x, Point.y);\r\n bRotate = false;\r\n }\r\n if (bMove) {\r\n bMove = false;\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = selectedItem.position.clone();\r\n if (\r\n intersects[i].object.parent.parent.userData.itemId ===\r\n selectedItem.userData.itemId\r\n ) {\r\n toolObj.position.set(\r\n intersects[i].point.x,\r\n intersects[i].point.y,\r\n intersects[i].point.z\r\n );\r\n } else {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y +\r\n selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n if (snapBox == null) {\r\n let item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (!item3D) return;\r\n item3D.visible = true;\r\n let originPos = item3D.position.clone();\r\n setTimeout(() => {\r\n this.context.itemsActions.updateDraggingItemChanged(\r\n originPos.x,\r\n -originPos.z,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n }, 50);\r\n } else {\r\n this.context.itemsActions.updateDraggingItemChanged(\r\n targetPoint.x,\r\n -targetPoint.z,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n this.context.itemsActions.updateRotatingItemChanged(\r\n targetRot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n let item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n item3D.position.x = targetPoint.x;\r\n item3D.position.z = targetPoint.z;\r\n item3D.visible = true;\r\n }\r\n }\r\n if (bMoveUP) {\r\n bMoveUP = false;\r\n }\r\n }\r\n removeSnapBox();\r\n\r\n actions.sceneActions.updateMovingState(true);\r\n if (isSelected === true) {\r\n prepareSnap(layer);\r\n selectedObj = allItemRect.cur;\r\n }\r\n }\r\n };\r\n\r\n this.mouseMoveEvent = event => {\r\n event.preventDefault();\r\n backsplashVisible = false;\r\n\r\n let altitude = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n altitude = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\r\n }\r\n\r\n if (this.props.state.mode === MODE_DRAWING_HOLE_3D) {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n if (!getIntersectWallPoint(event)) return;\r\n\r\n let drawingSupport = this.props.state.drawingSupport;\r\n if (!drawingSupport.has('currentID')) {\r\n this.context.holesActions.updateDrawingHole3D(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n sPoint.set(Point.x, Point.y);\r\n } else {\r\n let layerID = this.props.state.scene.selectedLayer;\r\n let holeID = this.props.state.drawingSupport.get('currentID');\r\n\r\n deleteSpecifiedMeshObjects('WarningBox' + holeID);\r\n prepareSnap(layer);\r\n\r\n // let {nx, ny, rot} = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea);\r\n let nx = Point.x;\r\n let ny = Point.y;\r\n actions.holesActions.updateDrawingHole3D(layerID, nx, ny);\r\n sPoint.set(nx, ny);\r\n }\r\n }\r\n\r\n if (this.props.state.mode === MODE_DRAWING_ITEM_3D) {\r\n // We need to set cam position since when MODE_DRAWING_ITEM_3D mouse down event\r\n // is not emited so cam position is not valid\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n getPoint(event, altitude);\r\n if (\r\n Point.x > this.props.state.scene.width ||\r\n Point.x < 0 ||\r\n Point.y > this.props.state.scene.height ||\r\n Point.y < 0\r\n )\r\n return;\r\n let drawingSupport = this.props.state.drawingSupport;\r\n if (!drawingSupport.has('currentID')) {\r\n this.context.itemsActions.updateDrawingItem(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n sPoint.set(Point.x, Point.y);\r\n } else {\r\n let layerID = this.props.state.scene.selectedLayer;\r\n let itemID = this.props.state.drawingSupport.get('currentID');\r\n selectedObject = { layerID: layerID, itemID: itemID };\r\n let mX = Point.x - sPoint.x;\r\n let mY = Point.y - sPoint.y;\r\n let item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n selectedObject.layerID\r\n ]);\r\n\r\n deleteSpecifiedMeshObjects('TransformBox');\r\n deleteSpecifiedMeshObjects('WarningBox' + itemID);\r\n prepareSnap(layer);\r\n\r\n let item = layer.items.getIn([selectedObject.itemID]);\r\n if (item.counterTop.uri == '')\r\n item.counterTop.uri = layer.counterTop.uri;\r\n let sRot = item.rotation;\r\n\r\n if (!item3D) return;\r\n\r\n let originPos = item3D.position.clone();\r\n let tPos = new Three.Vector2(mX + originPos.x, mY - originPos.z);\r\n let sBounding = item3D.children[0].userData;\r\n let swidth = sBounding.max.x - sBounding.min.x;\r\n let sdepth = sBounding.max.z - sBounding.min.z;\r\n let sVertices = this.getRectPoints(\r\n swidth,\r\n sdepth,\r\n tPos.clone(),\r\n ((sRot % 360) / 180) * Math.PI\r\n );\r\n let { nx, ny, rot } = GeometryUtils.calcSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n allArea\r\n );\r\n let nPos = new Three.Vector2(nx, ny);\r\n if (\r\n !this.collisionHoleCheck(\r\n item3D,\r\n nPos,\r\n item.rotation,\r\n {\r\n userData: { itemId: null }\r\n },\r\n item,\r\n this.context.catalog\r\n )\r\n ) {\r\n this.collisionSlide(\r\n item3D,\r\n originPos,\r\n layer,\r\n sVertices,\r\n tPos,\r\n item\r\n );\r\n //return;\r\n }\r\n let polygonPoint = lineRect(layer);\r\n if (polygonPoint.length > 0) {\r\n let PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, nx, ny);\r\n if (!PolygonSect) {\r\n let { cx, cy, crot } = GeometryUtils.calcCreateSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n polygonPoint\r\n );\r\n nx = cx;\r\n ny = cy;\r\n rot = crot;\r\n }\r\n }\r\n let polygon = lineRect(layer);\r\n if (polygon.length > 0) {\r\n let Sect = GeometryUtils.ContainsPoint(polygon, nx, ny);\r\n if (!Sect) return;\r\n }\r\n actions.itemsActions.updateDraggingItemChanged(\r\n nx,\r\n ny,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n actions.itemsActions.updateRotatingItemChanged(\r\n rot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n sPoint.set(nx, ny);\r\n getDistances(layer);\r\n let pointArray = [],\r\n cnt = 0;\r\n pointArray.push([fVLine[0].userData.distance, 90]);\r\n pointArray.push([fVLine[1].userData.distance, -90]);\r\n pointArray.push([fVLine[2].userData.distance, 180]);\r\n pointArray.push([fVLine[3].userData.distance, 0]);\r\n pointArray.forEach((pointElement, index) => {\r\n if (pointElement[0] == undefined) pointArray[index][0] = 0;\r\n });\r\n pointArray.forEach(pointElement => {\r\n if (pointElement[0] == 0) cnt++;\r\n });\r\n if (cnt == 4 || cnt == 3) {\r\n pointArray[0][0] = 100;\r\n pointArray[1][0] = 100;\r\n }\r\n actions.itemsActions.storeDistArray(layer.id, item.id, pointArray);\r\n let minDis = fVLine[0].userData.distance;\r\n let snapObj = fVLine[0];\r\n let iPos = item3D.position.clone();\r\n let snapDis = Math.sqrt(\r\n (iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) +\r\n (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z)\r\n );\r\n if (snapDis >= 100 && snapObj != null) {\r\n removeSnapBox();\r\n backsplashVisible = false;\r\n //console.log('1 snap no');\r\n }\r\n for (let i = 1; i < fVLine.length; i++) {\r\n if (minDis > fVLine[i].userData.distance) {\r\n minDis = fVLine[i].userData.distance;\r\n snapObj = fVLine[i];\r\n }\r\n }\r\n if (snapBox == null) {\r\n snapFlag = false;\r\n }\r\n actions.sceneActions.updateMovingState(false);\r\n if (minDis < snapDelta && !snapFlag) {\r\n this.snap(snapObj, layer);\r\n snapFlag = true;\r\n //console.log('1 snap Yes')\r\n getDistances(layer, true);\r\n let i = 0;\r\n for (i = 0; i < fVLine.length; i++) {\r\n if (fVLine[i].userData.distance < snapDelta) {\r\n break;\r\n }\r\n }\r\n if (i === fVLine.length) backsplashVisible = false;\r\n else backsplashVisible = true;\r\n }\r\n actions.itemsActions.setBacksplashVisible(\r\n selectedObject.itemID,\r\n backsplashVisible\r\n );\r\n }\r\n }\r\n\r\n if (bRotate) {\r\n getPoint(event, altitude);\r\n this.context.itemsActions.updateRotatingItem(Point.x, Point.y);\r\n\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n selectedObject.layerID\r\n ]);\r\n let item = layer.items.getIn([selectedObject.itemID]);\r\n\r\n let orginRot = this.props.state.rotatingSupport.get('originRotation');\r\n\r\n angleTexture.image = createAngleObject(\r\n (orginRot < 0 ? 360 - orginRot : orginRot) - item.rotation\r\n );\r\n angleTexture.needsUpdate = true;\r\n\r\n deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);\r\n deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);\r\n\r\n actions.sceneActions.updateMovingState(false);\r\n }\r\n\r\n if (bMoveUP) {\r\n this.context.itemsActions.updateItemsAltitude(\r\n selectedObject.layerID,\r\n selectedObject.itemID,\r\n event.movementY\r\n );\r\n }\r\n\r\n if (bMove) {\r\n if ('holeID' in selectedObject) {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n if (!getIntersectWallPoint(event)) return;\r\n let draggingSupport = this.props.state.draggingSupport;\r\n if (!draggingSupport.has('currentID')) {\r\n this.context.holesActions.updateDraggingHole(Point.x, Point.y);\r\n sPoint.set(Point.x, Point.y);\r\n } else {\r\n let holeID = this.props.state.draggingSupport.get('currentID');\r\n deleteSpecifiedMeshObjects('WarningBox' + holeID);\r\n let nx = Point.x;\r\n let ny = Point.y;\r\n actions.holesActions.updateDraggingHole(nx, ny);\r\n sPoint.set(nx, ny);\r\n }\r\n } else {\r\n const item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n\r\n if (item3D === undefined) return;\r\n\r\n const layer = this.props.state.scene.getIn([\r\n 'layers',\r\n item3D.userData.layerId\r\n ]);\r\n\r\n const item = layer.items.getIn([selectedObject.itemID]);\r\n if (item.counterTop.uri == '')\r\n item.counterTop.uri = layer.counterTop.uri;\r\n\r\n let sRot = item.rotation;\r\n let mX = Point.x - sPoint.x;\r\n let mY = Point.y - sPoint.y;\r\n\r\n deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);\r\n deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);\r\n prepareSnap(layer);\r\n\r\n getPoint(event, altitude);\r\n\r\n let originPos = item3D.position.clone();\r\n let tPos = new Three.Vector2(mX + originPos.x, mY - originPos.z);\r\n let sBounding = item3D.children[0].userData;\r\n let swidth = sBounding.max.x - sBounding.min.x;\r\n let sdepth = sBounding.max.z - sBounding.min.z;\r\n let sVertices = this.getRectPoints(\r\n swidth,\r\n sdepth,\r\n tPos.clone(),\r\n ((sRot % 360) / 180) * Math.PI\r\n );\r\n let { nx, ny, rot } = GeometryUtils.calcSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n allArea\r\n );\r\n let nPos = new Three.Vector2(nx, ny);\r\n if (\r\n !this.collisionHoleCheck(\r\n item3D,\r\n nPos,\r\n item.rotation,\r\n {\r\n userData: { itemId: null }\r\n },\r\n item,\r\n this.context.catalog\r\n )\r\n ) {\r\n this.collisionSlide(\r\n item3D,\r\n originPos,\r\n layer,\r\n sVertices,\r\n tPos,\r\n item\r\n );\r\n //return;\r\n }\r\n let polygonPoint = lineRect(layer);\r\n if (polygonPoint.length > 0) {\r\n let PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, nx, ny);\r\n if (!PolygonSect) {\r\n let { cx, cy, crot } = GeometryUtils.calcCreateSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n polygonPoint\r\n );\r\n nx = cx;\r\n ny = cy;\r\n rot = crot;\r\n }\r\n }\r\n let polygon = lineRect(layer);\r\n if (polygon.length > 0) {\r\n let Sect = GeometryUtils.ContainsPoint(polygon, nx, ny);\r\n if (!Sect) return;\r\n }\r\n actions.itemsActions.updateDraggingItemChanged(\r\n nx,\r\n ny,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n actions.itemsActions.updateRotatingItemChanged(\r\n rot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n sPoint.set(nx, ny);\r\n getDistances(layer);\r\n let pointArray = [],\r\n cnt = 0;\r\n pointArray.push([fVLine[0].userData.distance, 90]);\r\n pointArray.push([fVLine[1].userData.distance, -90]);\r\n pointArray.push([fVLine[2].userData.distance, 180]);\r\n pointArray.push([fVLine[3].userData.distance, 0]);\r\n pointArray.forEach((pointElement, index) => {\r\n if (pointElement[0] == undefined) pointArray[index][0] = 0;\r\n });\r\n pointArray.forEach(pointElement => {\r\n if (pointElement[0] == 0) cnt++;\r\n });\r\n if (cnt == 4 || cnt == 3) {\r\n pointArray[0][0] = 100;\r\n pointArray[1][0] = 100;\r\n }\r\n actions.itemsActions.storeDistArray(layer.id, item.id, pointArray);\r\n let minDis = fVLine[0].userData.distance;\r\n let snapObj = fVLine[0];\r\n let iPos = item3D.position.clone();\r\n let snapDis = Math.sqrt(\r\n (iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) +\r\n (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z)\r\n );\r\n if (snapDis >= 100 && snapObj != null) {\r\n removeSnapBox();\r\n backsplashVisible = false;\r\n //console.log('1 snap no');\r\n }\r\n for (let i = 1; i < fVLine.length; i++) {\r\n if (minDis > fVLine[i].userData.distance) {\r\n minDis = fVLine[i].userData.distance;\r\n snapObj = fVLine[i];\r\n }\r\n }\r\n if (snapBox == null) {\r\n snapFlag = false;\r\n }\r\n actions.sceneActions.updateMovingState(false);\r\n if (minDis < snapDelta && !snapFlag) {\r\n this.snap(snapObj, layer);\r\n snapFlag = true;\r\n //console.log('1 snap Yes')\r\n getDistances(layer, true);\r\n\r\n let i = 0;\r\n for (i = 0; i < fVLine.length; i++) {\r\n if (fVLine[i].userData.distance < snapDelta) {\r\n break;\r\n }\r\n }\r\n if (i === fVLine.length) backsplashVisible = false;\r\n else backsplashVisible = true;\r\n }\r\n actions.itemsActions.setBacksplashVisible(\r\n selectedObject.itemID,\r\n backsplashVisible\r\n );\r\n }\r\n }\r\n\r\n if (!bMove && !bRotate && !bMoveUP) {\r\n let curPos = {\r\n x: (event.offsetX / this.width) * 2 - 1,\r\n y: -(event.offsetY / this.height) * 2 + 1\r\n };\r\n\r\n raycaster.setFromCamera(curPos, camera);\r\n rayDirection = raycaster.ray.direction;\r\n rayDirection = rayDirection.normalize();\r\n\r\n const meshes = getAllMeshes(toIntersect);\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n let i;\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n for (i = 0; i < intersects.length; i++) {\r\n if (intersects[i].object.name === 'warningObj') break;\r\n }\r\n if (intersects[i] !== undefined) {\r\n let distance = Math.sqrt(\r\n Math.pow((intersects[i].uv.x - 0.5) * 50, 2) +\r\n Math.pow((intersects[i].uv.y - 0.75) * 100, 2)\r\n );\r\n if (distance <= 20) {\r\n let infoPos = { x: 0, y: 0 };\r\n if (event.offsetY > 150) {\r\n infoPos.y = event.offsetY - 60;\r\n } else {\r\n infoPos.y = event.offsetY + 10;\r\n }\r\n if (event.offsetX > this.width - 650) {\r\n infoPos.x = event.offsetX - 650;\r\n } else {\r\n infoPos.x = event.offsetX;\r\n }\r\n document.getElementById('warning_box_2d').style.display = 'flex';\r\n document.getElementById('warning_box_2d').style.top =\r\n `${infoPos.y}px`;\r\n document.getElementById('warning_box_2d').style.left =\r\n `${infoPos.x}px`;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n document.getElementById('warning_box_2d').style.display = 'none';\r\n };\r\n\r\n this.onkeydown = event => {\r\n if (this.props.keyDownEnable && !isElevationView(state.mode)) {\r\n switch (event.keyCode) {\r\n case 27: // escape key\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n this.context.itemsActions.removeReplacingSupport();\r\n this.context.itemsActions.setMoveStatus(false);\r\n this.context.itemsActions.setRotateStatus(false);\r\n bMoveUP = false;\r\n removeSnapBox();\r\n break;\r\n case 65: // w (move forward)\r\n pivot.rotation.y -= 0.03;\r\n break;\r\n case 68: // s (move backward)\r\n pivot.rotation.y += 0.03;\r\n break;\r\n case 83: // a (look left)\r\n pivot.rotation.x += 0.03;\r\n break;\r\n case 87: // d (look left)\r\n pivot.rotation.x -= 0.03;\r\n break;\r\n case 37: // left (move forward)\r\n planData.plan.position.x += 10;\r\n planData.grid.position.x += 10;\r\n break;\r\n case 38: // Up (move backward)\r\n planData.plan.position.y += 10;\r\n planData.grid.position.y += 10;\r\n break;\r\n case 39: // right arrow (look left)\r\n planData.plan.position.x -= 10;\r\n planData.grid.position.x -= 10;\r\n break;\r\n case 40: // down arrow (look left)\r\n planData.plan.position.y -= 10;\r\n planData.grid.position.y -= 10;\r\n break;\r\n }\r\n }\r\n };\r\n\r\n this.handleKeyDown = event => {\r\n this.onkeydown(event);\r\n };\r\n\r\n // Renderer & Event listener\r\n\r\n this.renderer.setClearColor(new Three.Color(SharedStyle.COLORS.white)); // 3D background color\r\n this.renderer.setSize(this.width, this.height);\r\n\r\n if (!this.props.downloadFlag) {\r\n this.renderer.domElement.addEventListener(\r\n 'mousedown',\r\n this.mouseDownEvent\r\n );\r\n this.renderer.domElement.addEventListener('mouseup', this.mouseUpEvent);\r\n this.renderer.domElement.addEventListener(\r\n 'mousemove',\r\n this.mouseMoveEvent\r\n );\r\n\r\n window.addEventListener('keydown', this.onkeydown);\r\n window.SPKeyDown = this.handleKeyDown;\r\n window.tDKeyDown = this.handleKeyDown;\r\n }\r\n\r\n // Add the output of the renderer to the html element\r\n const canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);\r\n canvasWrapper && canvasWrapper.appendChild(this.renderer.domElement);\r\n\r\n //\r\n\r\n if (\r\n scene.getIn(['layers', scene.selectedLayer, 'selected', 'items']).size !=\r\n 0\r\n ) {\r\n // if selected Object\r\n isSelected = true;\r\n selectedObject.layerID = scene.selectedLayer;\r\n selectedObject.itemID = scene\r\n .getIn(['layers', scene.selectedLayer, 'selected', 'items'])\r\n .toJS()[0];\r\n setTimeout(() => {\r\n try {\r\n currentObject =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(currentObject)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = currentObject.position.clone();\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y + currentObject.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n } catch (err) {\r\n console.log(\r\n 'selectedObject : ' +\r\n JSON.stringify(selectedObject) +\r\n '\\nError: ' +\r\n err\r\n );\r\n }\r\n }, 2000);\r\n }\r\n\r\n // Scene functions\r\n\r\n function init() {\r\n clock = new Three.Clock();\r\n scene3D = new Three.Scene();\r\n if (isElevationView(state.mode))\r\n scene3D.background = new Three.Color(0xffffff);\r\n // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC\r\n else scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC\r\n // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);\r\n window.scene3D = scene3D;\r\n // Camera\r\n if (isElevationView(state.mode)) {\r\n // In elevation view, set Orthographic camera's position, angle and rotation about selected line\r\n let { layers } = scene;\r\n let selectedLayer = layers.get(scene.selectedLayer);\r\n let ceilHeight = convert(selectedLayer.ceilHeight)\r\n .from(selectedLayer.unit)\r\n .to(scene.unit);\r\n let lines = [];\r\n let selectedLine = selectedLayer.lines.get(\r\n selectedLayer.selected.lines.toJS()[0]\r\n );\r\n let vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0));\r\n let vertex1 = selectedLayer.vertices.get(selectedLine.vertices.get(1));\r\n let { x: x1, y: y1 } = vertex0;\r\n let { x: x2, y: y2 } = vertex1;\r\n if (\r\n GeometryUtils.compareVertices(vertex0, vertex1) >= 0 &&\r\n vertex0.x !== vertex1.x\r\n ) {\r\n ({ x: x1, y: y1 } = vertex1);\r\n ({ x: x2, y: y2 } = vertex0);\r\n }\r\n selectedLayer.lines.toArray().forEach(line => {\r\n if (line.id === selectedLine) {\r\n let data = line.toJS();\r\n data = { ...data, l0: { x: x1, y: y1 }, l1: { x: x2, y: y2 } };\r\n lines.push(data);\r\n }\r\n });\r\n let lineLength = GeometryUtils.pointsDistance(x1, y1, x2, y2);\r\n self.setState({ lineLength: lineLength });\r\n let cameraRect = handleCamRect(\r\n self.width,\r\n self.height,\r\n ceilHeight,\r\n lineLength\r\n );\r\n camera = new Three.OrthographicCamera(\r\n -cameraRect.width / 2,\r\n cameraRect.width / 2,\r\n cameraRect.height / 2,\r\n -cameraRect.height / 2,\r\n 1,\r\n 1000\r\n );\r\n const angle = Math.atan((y1 - y2) / (x1 - x2));\r\n let r = 300;\r\n if (Math.abs(angle) === Math.PI / 2) {\r\n camera.position.set(\r\n (x1 + x2) / 2 - Math.sin(angle) * r,\r\n ceilHeight / 2,\r\n -((y1 + y2) / 2 - Math.cos(angle) * r)\r\n );\r\n camera.rotation.set(0, -angle, 0);\r\n } else if (vertex0.x > vertex1.x) {\r\n camera.position.set(\r\n (x1 + x2) / 2 + Math.sin(angle + Math.PI) * r,\r\n ceilHeight / 2,\r\n -((y1 + y2) / 2 - Math.cos(angle + Math.PI) * r)\r\n );\r\n camera.rotation.set(0, angle + Math.PI, 0);\r\n } else {\r\n camera.position.set(\r\n (x1 + x2) / 2 + Math.sin(angle) * r,\r\n ceilHeight / 2,\r\n -((y1 + y2) / 2 - Math.cos(angle) * r)\r\n );\r\n camera.rotation.set(0, angle, 0);\r\n }\r\n } else {\r\n const aspectRatio = self.width / self.height;\r\n camera = new Three.PerspectiveCamera(45, aspectRatio, 1, 300000);\r\n camera.position.set(0, 0, 1);\r\n }\r\n camera.layers.enable(1);\r\n\r\n function loadENV() {\r\n new RGBELoader().load(\r\n '/assets/brown_photostudio_02_1k.hdr',\r\n function (texture) {\r\n texture.mapping = Three.EquirectangularReflectionMapping;\r\n scene3D.environment = texture;\r\n texture.dispose();\r\n }\r\n );\r\n }\r\n // Camera Controls\r\n if (!isElevationView(state.mode)) {\r\n cameraControls = new CameraControls(camera, self.renderer.domElement);\r\n cameraControls.dollyToCursor = true;\r\n cameraControls.infinityDolly = true;\r\n cameraControls.minDistance = 50;\r\n cameraControls.maxDistance = Infinity;\r\n cameraControls.zoomSpeed = 1;\r\n\r\n loadENV();\r\n }\r\n\r\n scene3D.add(planData.plan);\r\n scene3D.add(planData.grid);\r\n scene3D.add(camera);\r\n if (isElevationView(state.mode)) {\r\n planData.cam.add(camera);\r\n scene3D.add(planData.cam);\r\n } else {\r\n pivot = new Three.Object3D();\r\n pivot.add(camera);\r\n scene3D.add(pivot);\r\n }\r\n\r\n // LIGHT\r\n\r\n let light = new Three.AmbientLight(0xbfbfbf, 0.9); // soft white light\r\n }\r\n\r\n function render() {\r\n const delta = clock.getDelta(); // Get time delta for smooth updates\r\n if (!isElevationView(state.mode)) cameraControls.update(delta);\r\n for (let i = 0; i < lights.length; i++) {\r\n lights[i].light.position.set(\r\n planData.plan.position.x + lights[i].x,\r\n planData.plan.position.y + lights[i].height - 10,\r\n planData.plan.position.z - lights[i].y\r\n );\r\n lights[i].target.position.set(\r\n planData.plan.position.x + lights[i].x,\r\n planData.plan.position.y,\r\n planData.plan.position.z - lights[i].y\r\n );\r\n }\r\n\r\n camera.updateMatrix();\r\n camera.updateMatrixWorld();\r\n\r\n for (let elemID in planData.sceneGraph.LODs) {\r\n planData.sceneGraph.LODs[elemID].update(camera);\r\n }\r\n if (snapBox !== null) {\r\n if (snapAnimI >= 15) {\r\n if ('x' in targetPoint)\r\n snapBox.position.set(\r\n targetPoint.x,\r\n snapBox.position.y,\r\n targetPoint.z\r\n );\r\n snapFlag = false;\r\n t_i++;\r\n } else {\r\n if (snapAnimI == 0) {\r\n targetCRotation =\r\n ((((targetRot / 180) * Math.PI - snapBox.rotation.y + Math.PI) *\r\n 180) /\r\n Math.PI) %\r\n 360;\r\n if (targetCRotation > 180) targetCRotation -= 360;\r\n if (targetCRotation < -180) targetCRotation += 360;\r\n targetCRotation = (targetCRotation / 180) * Math.PI;\r\n }\r\n if (snapAnimI < 10) {\r\n snapBox.rotateY(targetCRotation / 10);\r\n } else {\r\n snapBox.position.set(\r\n snapBox.position.clone().x - targetUVec.x / 10,\r\n snapBox.position.clone().y - targetUVec.y / 10,\r\n snapBox.position.clone().z - targetUVec.z / 10\r\n );\r\n }\r\n snapAnimI++;\r\n }\r\n }\r\n\r\n if (t_i === 20) {\r\n //stop snap after 5s\r\n removeSnapBox();\r\n }\r\n\r\n // hide hole if wall is not visible\r\n let layerID = self.props.state.scene.selectedLayer;\r\n let layer = self.props.state.scene.layers.get(layerID);\r\n layer.holes.forEach(data => {\r\n let line = planData.sceneGraph.layers[layerID].lines[data.line];\r\n let hole = planData.sceneGraph.layers[layerID].holes[data.id];\r\n\r\n if (line instanceof Three.Object3D && !line.isMesh) {\r\n line = line.children[0].children[0];\r\n // index(faces) of the line\r\n const indexAttribute = line.geometry.getIndex();\r\n const firstFaceIndices = undefined;\r\n if (indexAttribute && indexAttribute.length > 0) {\r\n firstFaceIndices = [\r\n indexAttribute.getX(0),\r\n indexAttribute.getX(1),\r\n indexAttribute.getX(2)\r\n ];\r\n }\r\n\r\n if (firstFaceIndices == undefined) return;\r\n // normal vector of the line\r\n const normalAttribute = line.geometry.attributes.normal;\r\n let normal = new Three.Vector3()\r\n .fromBufferAttribute(normalAttribute, 0)\r\n .clone();\r\n normal = normal\r\n .applyMatrix4(line.matrixWorld)\r\n .sub(new Three.Vector3(0, 0, 0).applyMatrix4(line.matrixWorld))\r\n .normalize();\r\n let vertices = layer.lines.get(data.line).vertices.toJS();\r\n let vertex1 = layer.vertices.get(vertices[0]);\r\n let vertex2 = layer.vertices.get(vertices[1]);\r\n let cX = (vertex1.x + vertex2.x) / 2;\r\n let cY = (vertex1.y + vertex2.y) / 2;\r\n let posVec = new Three.Vector3(cX, 150, -cY);\r\n posVec = posVec.add(planData.plan.position.clone());\r\n let cameraLine = camera.position.clone().sub(posVec);\r\n if (hole) {\r\n hole.traverse(child => {\r\n if (child.isMesh) {\r\n child.material.opacity = cameraLine.dot(normal) > 0 ? 1 : 0;\r\n child.material.transparent =\r\n cameraLine.dot(normal) > 0 ? false : true;\r\n child.material.needsUpdate = true;\r\n }\r\n });\r\n }\r\n }\r\n // /////////////////////////////////////\r\n });\r\n\r\n if (scene3D && camera) {\r\n if (planData.elevationGroup) {\r\n planData.elevationGroup.visible = true;\r\n self.renderer.render(scene3D, camera);\r\n\r\n self.renderer.autoClearDepth = false;\r\n planData.elevationGroup.visible = false;\r\n // console.log('---originalScene:', scene3D)\r\n self.renderer.render(scene3D, camera);\r\n self.renderer.autoClearDepth = true;\r\n } else {\r\n self.renderer.render(scene3D, camera);\r\n }\r\n }\r\n self.renderingID = requestAnimationFrame(render);\r\n\r\n if (self.props.downloadFlag) {\r\n if (self.state.waitForRender > 0) {\r\n self.state.waitForRender++;\r\n if (self.state.waitForRender > 2) {\r\n self.setState({ isLoading: false, waitForRender: 0 });\r\n if (isElevationView(self.props.state.mode)) {\r\n setTimeout(() => {\r\n self.props.setIsLoadingElevation('front', false);\r\n }, 100);\r\n }\r\n self.renderer.domElement.style.display = 'block';\r\n }\r\n }\r\n }\r\n }\r\n\r\n //\r\n\r\n window.planData = planData;\r\n this.planData = planData;\r\n this.camera = camera;\r\n this.cameraControls = cameraControls;\r\n this.scene3D = scene3D;\r\n\r\n prepareSnap(layer);\r\n }\r\n\r\n componentWillUnmount() {\r\n cancelAnimationFrame(this.renderingID);\r\n\r\n if (!isElevationView(this.props.state.mode)) {\r\n if (this.cameraControls !== undefined) this.cameraControls.dispose();\r\n }\r\n\r\n if (!this.props.downloadFlag) {\r\n this.renderer.domElement.removeEventListener(\r\n 'mousedown',\r\n this.mouseDownEvent\r\n );\r\n this.renderer.domElement.removeEventListener(\r\n 'mouseup',\r\n this.mouseUpEvent\r\n );\r\n }\r\n\r\n disposeScene(this.scene3D);\r\n this.scene3D.remove(this.planData.plan);\r\n this.scene3D.remove(this.planData.grid);\r\n\r\n this.scene3D = null;\r\n this.planData = null;\r\n this.camera = null;\r\n this.cameraControls = null;\r\n this.renderer.renderLists.dispose();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (\r\n (this.props.downloadFlag &&\r\n diff(this.props.state, nextProps.state).toJS().length == 0) ||\r\n isEmpty(nextProps.state.scene)\r\n )\r\n return;\r\n\r\n let { width, height } = nextProps;\r\n let selectedLayer = nextProps.state.getIn([\r\n 'scene',\r\n 'layers',\r\n nextProps.state.scene.selectedLayer\r\n ]);\r\n let ceilHeight = convert(selectedLayer.ceilHeight)\r\n .from(selectedLayer.unit)\r\n .to(nextProps.state.scene.unit);\r\n let actions = {\r\n areaActions: this.context.areaActions,\r\n holesActions: this.context.holesActions,\r\n itemsActions: this.context.itemsActions,\r\n sceneActions: this.context.sceneActions,\r\n linesActions: this.context.linesActions,\r\n projectActions: this.context.projectActions,\r\n catalog: this.context.catalog\r\n };\r\n\r\n let isLoadingCabinet = nextProps.state.scene.isLoadingCabinet;\r\n if (this.state.isLoadingCabinet !== isLoadingCabinet)\r\n this.setState({ isLoadingCabinet });\r\n\r\n this.width = width;\r\n this.height = height;\r\n\r\n let allLines;\r\n let allLineRects;\r\n let allItemRect;\r\n\r\n // handle camera setting\r\n switch (this.props.state.mode) {\r\n case MODE_ELEVATION_VIEW:\r\n // when Elevation mode (camera: Orthographic)\r\n let cameraRect = handleCamRect(\r\n width,\r\n height,\r\n ceilHeight,\r\n this.state.lineLength\r\n );\r\n // camera size\r\n this.camera.left = -cameraRect.width / 2;\r\n this.camera.right = cameraRect.width / 2;\r\n this.camera.top = cameraRect.height / 2;\r\n this.camera.bottom = -cameraRect.height / 2;\r\n //camera position\r\n this.camera.position.y = ceilHeight / 2;\r\n break;\r\n case MODE_3D_VIEW:\r\n // when 3D mode (camera: Perspective)\r\n this.camera.aspect = width / height;\r\n break;\r\n }\r\n this.camera.updateProjectionMatrix();\r\n\r\n let data = nextProps.state.scene;\r\n let layer = data.getIn(['layers', data.selectedLayer]);\r\n const self = this;\r\n\r\n function implementBacksplash() {\r\n if (isElevationView(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode\r\n let allItems = GeometryUtils.getAllItemSpecified(\r\n nextProps.state.scene,\r\n actions.catalog,\r\n BASE_CABINET_LAYOUTPOS\r\n );\r\n let i,\r\n items = [];\r\n for (i = 0; i < allItems.others.length; i++)\r\n items.push(allItems.others[i]);\r\n if (allItems.cur) items.push(allItems.cur);\r\n\r\n for (i = 0; i < items.length; i++) {\r\n let calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);\r\n let visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);\r\n actions.itemsActions.setBacksplashVisible(\r\n items[i].itemInfo.id,\r\n visible\r\n );\r\n\r\n createBacksplash(\r\n items[i],\r\n nextProps.state.scene.getIn([\r\n 'layers',\r\n nextProps.state.scene.selectedLayer\r\n ]),\r\n planData,\r\n nextProps.state.scene\r\n );\r\n }\r\n }\r\n function implementWarningBox() {\r\n let holeItems = GeometryUtils.getHoleItems(layer);\r\n let i,\r\n items = [];\r\n for (i = 0; i < allItemRect.others.length; i++)\r\n items.push(allItemRect.others[i]);\r\n if (allItemRect.cur) items.push(allItemRect.cur);\r\n\r\n for (i = 0; i < items.length; i++)\r\n checkCabinetOverlap(\r\n { x: items[i].pos.x, y: items[i].pos.y },\r\n items[i],\r\n holeItems,\r\n planData\r\n );\r\n }\r\n\r\n let prepareSnapSpec = layer => {\r\n allLines = GeometryUtils.getAllLines(layer);\r\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n allItemRect = GeometryUtils.getAllItemSpecified(\r\n this.props.state.scene,\r\n actions.catalog,\r\n [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]\r\n );\r\n };\r\n\r\n let layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);\r\n\r\n if (this.state.showflag) {\r\n prepareSnapSpec(layer);\r\n implementBacksplash();\r\n implementWarningBox();\r\n this.setState({ showflag: false });\r\n }\r\n if (\r\n nextProps.state.scene !== this.props.state.scene ||\r\n (nextProps.state.doorStyle &&\r\n nextProps.state.doorStyle.get('name') !==\r\n this.props.state.doorStyle.get('name'))\r\n ) {\r\n let changedValues = diff(this.props.state.scene, nextProps.state.scene);\r\n prepareSnapSpec(layer);\r\n if (\r\n nextProps.state.doorStyle &&\r\n nextProps.state.doorStyle.get('name') ===\r\n this.props.state.doorStyle.get('name')\r\n ) {\r\n self.setState({ isLoading: true });\r\n\r\n if (self.props.downloadFlag) {\r\n self.setState({ waitForRender: 0 });\r\n switch (self.props.state.mode) {\r\n case MODE_ELEVATION_VIEW:\r\n self.props.setIsLoadingElevation('front', true);\r\n break;\r\n case MODE_3D_VIEW:\r\n self.props.setIsLoading3D(true);\r\n break;\r\n }\r\n }\r\n\r\n self.renderer.domElement.style.display = 'none';\r\n }\r\n if (nextProps.state.scene.showfg == true) {\r\n implementBacksplash();\r\n implementWarningBox();\r\n } else {\r\n deleteSpecifiedMeshObjects('TransformBox');\r\n }\r\n let { toolObj, angleObj } = this.state;\r\n var { promise } = updateScene(\r\n this.planData,\r\n nextProps.state.scene,\r\n this.props.state.scene,\r\n changedValues.toJS(),\r\n actions,\r\n this.context.catalog,\r\n nextProps.state.mode,\r\n toolObj,\r\n angleObj,\r\n nextProps.state.draggingSupport\r\n );\r\n self.setState();\r\n promise.then(p1Value => {\r\n self.setState({ isLoading: false });\r\n self.props.downloadFlag && self.setState({ waitForRender: 1 });\r\n self.renderer.domElement.style.display = 'block';\r\n });\r\n if (nextProps.state.getIn(['scene', 'isEndDragging'])) {\r\n nextProps.state.setIn(['scene', 'isEndDragging'], false);\r\n }\r\n }\r\n this.renderer.setSize(width, height);\r\n }\r\n\r\n render() {\r\n const { isLoading, isLoadingCabinet } = this.state;\r\n if (isLoading) {\r\n if (this.props.downloadFlag) {\r\n this.renderer.domElement.style.display = 'none';\r\n return (\r\n <div\r\n style={{\r\n alignItems: ' center',\r\n width: this.props.width,\r\n height: this.props.height,\r\n display: 'inline-flex',\r\n justifyContent: 'center'\r\n }}\r\n >\r\n <img\r\n style={{\r\n width: '70px',\r\n height: '70px',\r\n animation: 'spin 2s linear infinite'\r\n }}\r\n src={'/assets/img/loading_large.gif'}\r\n alt=\"img\"\r\n />\r\n </div>\r\n );\r\n } else {\r\n document.getElementById('front') &&\r\n (document.getElementById('front').style.display = 'none');\r\n document.getElementById('error').style.display = 'none';\r\n this.renderer.domElement.style.display = 'none';\r\n return (\r\n <div style={{ textAlign: 'center', width: '100%' }}>\r\n <img\r\n style={{ animation: 'spin 2s linear infinite', marginTop: `22%` }}\r\n src={'/assets/img/loading_large.gif'}\r\n alt=\"img\"\r\n />\r\n </div>\r\n );\r\n }\r\n } else if (isLoadingCabinet) {\r\n this.renderer.domElement.style.pointerEvents = 'none';\r\n document.getElementById('front') &&\r\n (document.getElementById('front').style.display = 'none');\r\n this.renderer.domElement.style.opacity = '0.4';\r\n return (\r\n <div style={{ textAlign: 'center', width: '100%' }}>\r\n <img\r\n style={{\r\n animation: 'spin 2s linear infinite',\r\n position: `absolute`,\r\n top: `50%`\r\n }}\r\n src={'/assets/img/loading_large.gif'}\r\n alt=\"img\"\r\n />\r\n </div>\r\n );\r\n } else {\r\n !this.props.downloadFlag &&\r\n (document.getElementById('error').style.display = 'block');\r\n this.renderer.domElement.style.pointerEvents = 'auto';\r\n this.renderer.domElement.style.opacity = '1';\r\n !this.props.downloadFlag &&\r\n document.getElementById('front') &&\r\n (document.getElementById('front').style.display = 'block');\r\n return React.createElement('div', { ref: 'canvasWrapper' });\r\n }\r\n }\r\n}\r\n\r\nScene3DViewer.propTypes = {\r\n state: PropTypes.object.isRequired,\r\n width: PropTypes.number.isRequired,\r\n height: PropTypes.number.isRequired,\r\n replaceCabinet: PropTypes.func.isRequired\r\n};\r\n\r\nScene3DViewer.contextTypes = {\r\n areaActions: PropTypes.object.isRequired,\r\n holesActions: PropTypes.object.isRequired,\r\n itemsActions: PropTypes.object.isRequired,\r\n linesActions: PropTypes.object.isRequired,\r\n sceneActions: PropTypes.object.isRequired,\r\n projectActions: PropTypes.object.isRequired,\r\n catalog: PropTypes.object\r\n};\r\n"],"mappings":"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","ignoreList":[]}